blob: 86b4dcd53c92dfa743fb336ceafbc58bd379ccfd [file] [log] [blame]
# ---------------------------------------------------------------------------
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ---------------------------------------------------------------------------
apiVersion: camel.apache.org/v1alpha1
kind: Kamelet
metadata:
name: telegram-sink
annotations:
camel.apache.org/kamelet.support.level: "Stable"
camel.apache.org/catalog.version: "main-SNAPSHOT"
camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNDAgMjQwIj48ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9ImEiIHgxPSIuNjY3IiB4Mj0iLjQxNyIgeTE9Ii4xNjciIHkyPSIuNzUiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzM3YWVlMiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzFlOTZjOCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJiIiB4MT0iLjY2IiB4Mj0iLjg1MSIgeTE9Ii40MzciIHkyPSIuODAyIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNlZmY3ZmMiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNmZmYiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48Y2lyY2xlIGN4PSIxMjAiIGN5PSIxMjAiIHI9IjEyMCIgZmlsbD0idXJsKCNhKSIvPjxwYXRoIGZpbGw9IiNjOGRhZWEiIGQ9Ik05OCAxNzVjLTMuODg4IDAtMy4yMjctMS40NjgtNC41NjgtNS4xN0w4MiAxMzIuMjA3IDE3MCA4MCIvPjxwYXRoIGZpbGw9IiNhOWM5ZGQiIGQ9Ik05OCAxNzVjMyAwIDQuMzI1LTEuMzcyIDYtM2wxNi0xNS41NTgtMTkuOTU4LTEyLjAzNSIvPjxwYXRoIGZpbGw9InVybCgjYikiIGQ9Ik0xMDAuMDQgMTQ0LjQxbDQ4LjM2IDM1LjcyOWM1LjUxOSAzLjA0NSA5LjUwMSAxLjQ2OCAxMC44NzYtNS4xMjNsMTkuNjg1LTkyLjc2M2MyLjAxNS04LjA4LTMuMDgtMTEuNzQ2LTguMzYtOS4zNDlsLTExNS41OSA0NC41NzFjLTcuODkgMy4xNjUtNy44NDMgNy41NjctMS40MzggOS41MjhsMjkuNjYzIDkuMjU5IDY4LjY3My00My4zMjVjMy4yNDItMS45NjYgNi4yMTgtLjkxIDMuNzc2IDEuMjU4Ii8+PC9zdmc+"
camel.apache.org/provider: "Apache Software Foundation"
camel.apache.org/kamelet.group: "Telegram"
labels:
camel.apache.org/kamelet.type: "sink"
spec:
definition:
title: "Telegram Sink"
description: |-
Send a message to a Telegram chat by using your Telegram bot as sender.
To create a bot, use your Telegram app to contact the @botfather account.
This sink supports the following message types:
- Standard text messages
- PNG images (`Content-Type` must be set to `image/png`)
- JPEG images (`Content-Type` must be set to `image/jpeg`)
This sink also supports the following message headers:
- `text` / `ce-text`: when sending an image, the image caption
- `chat-id` / `ce-chatid`: overrides the default chat where messages are sent to
required:
- authorizationToken
type: object
properties:
authorizationToken:
title: Token
description: "The token to access your bot on Telegram. You you can obtain it from the Telegram @botfather."
type: string
format: password
x-descriptors:
- urn:alm:descriptor:com.tectonic.ui:password
- urn:camel:group:credentials
chatId:
title: Chat ID
description: The Chat ID to where you want to send messages by default.
type: string
types:
out:
mediaType: application/json
dependencies:
- "camel:core"
- "camel:jackson"
- "camel:kamelet"
- "camel:telegram"
template:
from:
uri: "kamelet:source"
steps:
- choice:
when:
- simple: "${header[Content-Type]} == 'image/png'"
steps:
- convert-body-to:
type: "byte[]"
- set-header:
name: CamelTelegramMediaType
constant: PHOTO_PNG
- simple: "${header[Content-Type]} == 'image/jpeg'"
steps:
- convert-body-to:
type: "byte[]"
- set-header:
name: CamelTelegramMediaType
constant: PHOTO_JPG
otherwise:
steps:
- convert-body-to:
type: "java.lang.String"
- choice:
when:
- simple: "${header[text]}"
steps:
- set-header:
name: CamelTelegramMediaTitleCaption
simple: "${header[text]}"
- simple: "${header[ce-text]}"
steps:
- set-header:
name: CamelTelegramMediaTitleCaption
simple: "${header[ce-text]}"
- choice:
when:
- simple: "${header[chat-id]}"
steps:
- set-header:
name: CamelTelegramChatId
simple: "${header[chat-id]}"
- simple: "${header[ce-chatid]}"
steps:
- set-header:
name: CamelTelegramChatId
simple: "${header[ce-chatid]}"
- to:
uri: "telegram:bots"
parameters:
authorizationToken: "{{authorizationToken}}"
chatId: "{{?chatId}}"
- marshal:
json: {}