| apiVersion: camel.apache.org/v1alpha1 |
| kind: Kamelet |
| metadata: |
| name: telegram-sink |
| annotations: |
| camel.apache.org/kamelet.support.level: "Preview" |
| camel.apache.org/catalog.version: "0.3.x-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 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 |
| 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 |
| chatId: |
| title: Chat ID |
| description: The Chat ID where messages should be sent by default |
| type: string |
| types: |
| out: |
| mediaType: application/json |
| dependencies: |
| - "camel:jackson" |
| - "camel:kamelet" |
| - "camel:telegram" |
| 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: {} |