From aa0adce0f650fe4e70297faa23e6682722034dc5 Mon Sep 17 00:00:00 2001 From: gitea_admin Date: Wed, 11 Mar 2026 14:30:56 +0000 Subject: [PATCH] Add kamelet definition: telegram-sink --- kamelet.yaml | 112 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 kamelet.yaml diff --git a/kamelet.yaml b/kamelet.yaml new file mode 100644 index 0000000..f3febf4 --- /dev/null +++ b/kamelet.yaml @@ -0,0 +1,112 @@ +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: telegram-sink + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "4.10.2" + 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" + camel.apache.org/kamelet.namespace: "Social" + 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:camel:group:credentials + chatId: + title: Chat ID + description: |- + The Chat ID to where you want to send messages by default. + + Whilst the Chat ID is not a required Configuration Option it must be provided for every message; either as a Configuration Option or a `chat-id` / `ce-chatid` header. + 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: + - convertBodyTo: + type: "byte[]" + - setHeader: + name: CamelTelegramMediaType + constant: PHOTO_PNG + - simple: "${header[Content-Type]} == 'image/jpeg'" + steps: + - convertBodyTo: + type: "byte[]" + - setHeader: + name: CamelTelegramMediaType + constant: PHOTO_JPG + otherwise: + steps: + - convertBodyTo: + type: "java.lang.String" + - choice: + when: + - simple: "${header[text]}" + steps: + - setHeader: + name: CamelTelegramMediaTitleCaption + simple: "${header[text]}" + - simple: "${header[ce-text]}" + steps: + - setHeader: + name: CamelTelegramMediaTitleCaption + simple: "${header[ce-text]}" + - choice: + when: + - simple: "${header[chat-id]}" + steps: + - setHeader: + name: CamelTelegramChatId + simple: "${header[chat-id]}" + - simple: "${header[ce-chatid]}" + steps: + - setHeader: + name: CamelTelegramChatId + simple: "${header[ce-chatid]}" + - to: + uri: "telegram:bots" + parameters: + authorizationToken: "{{authorizationToken}}" + chatId: "{{?chatId}}" + - marshal: + json: {}