blob: 71b87c14431359f9a47c81261d6406407a303e1c [file] [log] [blame]
apiVersion: camel.apache.org/v1alpha1
kind: Kamelet
metadata:
name: telegram-sink
annotations:
camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNDAgMjQwIj48ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9ImEiIHgxPSIuNjY3IiB4Mj0iLjQxNyIgeTE9Ii4xNjciIHkyPSIuNzUiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzM3YWVlMiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzFlOTZjOCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJiIiB4MT0iLjY2IiB4Mj0iLjg1MSIgeTE9Ii40MzciIHkyPSIuODAyIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNlZmY3ZmMiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNmZmYiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48Y2lyY2xlIGN4PSIxMjAiIGN5PSIxMjAiIHI9IjEyMCIgZmlsbD0idXJsKCNhKSIvPjxwYXRoIGZpbGw9IiNjOGRhZWEiIGQ9Ik05OCAxNzVjLTMuODg4IDAtMy4yMjctMS40NjgtNC41NjgtNS4xN0w4MiAxMzIuMjA3IDE3MCA4MCIvPjxwYXRoIGZpbGw9IiNhOWM5ZGQiIGQ9Ik05OCAxNzVjMyAwIDQuMzI1LTEuMzcyIDYtM2wxNi0xNS41NTgtMTkuOTU4LTEyLjAzNSIvPjxwYXRoIGZpbGw9InVybCgjYikiIGQ9Ik0xMDAuMDQgMTQ0LjQxbDQ4LjM2IDM1LjcyOWM1LjUxOSAzLjA0NSA5LjUwMSAxLjQ2OCAxMC44NzYtNS4xMjNsMTkuNjg1LTkyLjc2M2MyLjAxNS04LjA4LTMuMDgtMTEuNzQ2LTguMzYtOS4zNDlsLTExNS41OSA0NC41NzFjLTcuODkgMy4xNjUtNy44NDMgNy41NjctMS40MzggOS41MjhsMjkuNjYzIDkuMjU5IDY4LjY3My00My4zMjVjMy4yNDItMS45NjYgNi4yMTgtLjkxIDMuNzc2IDEuMjU4Ii8+PC9zdmc+"
camel.apache.org/provider: "Apache Software Foundation"
labels:
camel.apache.org/kamelet.type: "sink"
camel.apache.org/kamelet.group: "Telegram"
spec:
definition:
title: "Telegram Sink"
description: |-
Send a message to a Telegram chat using your Telegram bot as sender.
To create a bot, contact the @botfather account using the Telegram app.
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 following message headers are also supported:
- `text` / `ce-text`: when sending an image, the image caption
- `chat-id` / `ce-chat-id`: to override the default chat where messages are sent to
required:
- authorizationToken
properties:
authorizationToken:
title: Token
description: The token to access your bot on Telegram. You you can obtain it from the Telegram @botfather.
type: string
x-descriptors:
- urn:alm:descriptor:com.tectonic.ui:password
chatId:
title: Chat ID
description: The Chat ID where messages should be sent by default
type: string
types:
out:
mediaType: application/json
flow:
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-chat-id]}"
steps:
- set-header:
name: CamelTelegramChatId
simple: "${header[ce-chat-id]}"
- to:
uri: "telegram:bots"
parameters:
authorizationToken: "{{authorizationToken}}"
chatId: "{{chatId}}"
- marshal:
json: {}