telegram @ 0.4.5
Telegram bot integration. Reply to chat threads and receive webhook updates.
Publisher / author
tupiflow
Type
telegram
Signing key
kid-20260520-e5fe9257
Bundle
Download signed bundle
verifies against kid-20260520-e5fe9257
Signed manifest (spec)
Byte-for-byte signed payload. Hash with RFC 8785 canonical JSON, verify the Ed25519 signature against the public key for kid-20260520-e5fe9257.
{
"icon": {
"kind": "svg",
"path": "icon.svg"
},
"bundle": {
"sha256": "cfe8eb5a3b3209b3c19f63a0284e57a5a65e2c2f649bdc4d674ab6da3f9c8e61",
"sizeBytes": 8103
},
"routes": [
{
"path": "/webhook/:integrationId",
"method": "POST",
"handlerExport": "telegramWebhookHandler"
}
],
"actions": [
{
"slug": "send-reply",
"tool": {
"name": "telegram_send_reply",
"description": "Reply to a Telegram thread via the Bot API. Supports inline_keyboard buttons and bubble splitting.",
"inputSchemaJson": "{\"type\":\"object\",\"properties\":{\"botToken\":{\"type\":\"string\"},\"integrationId\":{\"type\":\"string\"},\"text\":{\"type\":\"string\"},\"chatId\":{\"type\":\"string\"},\"threadJson\":{},\"messageThreadId\":{\"type\":[\"string\",\"number\"]},\"buttons\":{},\"splitBubbles\":{\"type\":\"string\"},\"bubbleDelayMs\":{\"type\":[\"string\",\"number\"]}},\"required\":[\"text\",\"integrationId\"],\"additionalProperties\":false}"
},
"label": "Send Telegram Reply",
"category": "Telegram",
"description": "Reply to the incoming Telegram thread",
"configFields": [
{
"key": "text",
"type": "template-textarea",
"label": "Reply Text",
"example": "Hello from my workflow!",
"required": true
},
{
"key": "chatId",
"type": "select",
"label": "Fallback Chat (optional)"
},
{
"key": "messageThreadId",
"type": "template-input",
"label": "Forum Topic ID (optional)"
},
{
"key": "buttons",
"type": "template-textarea",
"label": "Inline Buttons (optional, JSON)"
},
{
"key": "splitBubbles",
"type": "select",
"label": "Split into multiple bubbles"
},
{
"key": "bubbleDelayMs",
"type": "number",
"label": "Delay between bubbles (ms)"
}
],
"outputFields": [
{
"field": "messageId",
"description": "ID of the last posted message (final bubble)"
},
{
"field": "messageIds",
"description": "IDs of every posted message in order. Length matches bubbleCount."
},
{
"field": "bubbleCount",
"description": "How many Telegram messages were posted (1 unless splitBubbles is on)"
},
{
"field": "threadId",
"description": "ID of the thread replied to"
}
],
"stepFunction": "telegramSendReplyStep"
}
],
"runtime": {
"minTupiflowVersion": "0.0.0"
},
"identity": {
"name": "telegram",
"type": "telegram",
"version": "0.4.5",
"publisher": "tupiflow",
"description": "Telegram bot integration. Reply to chat threads and receive webhook updates."
},
"connection": {
"triggerIcon": "MessageCircle",
"triggerType": "Chat Message",
"triggerLabel": "Telegram Message",
"triggerInputFields": [
{
"field": "text",
"description": "Text of the incoming message"
},
{
"field": "integrationId",
"description": "Telegram integration ID"
},
{
"field": "threadId",
"description": "Telegram thread ID"
},
{
"field": "channelId",
"description": "Telegram channel ID"
},
{
"field": "userName",
"description": "Sender's display name"
},
{
"field": "isDM",
"description": "True if the message is a DM"
},
{
"field": "isMention",
"description": "True if the bot was @-mentioned"
},
{
"field": "threadJson",
"description": "Serialized thread for replies"
},
{
"field": "imageUrls",
"description": "Image attachments from the message (data URLs)"
},
{
"field": "fileUrls",
"description": "Document/file attachments from the message (data URLs, excludes images/audio/video)"
},
{
"field": "audioUrls",
"description": "Audio attachments from the message (voice notes, audio files; data URLs)"
},
{
"field": "videoUrls",
"description": "Video attachments from the message (mp4, webm, mov; data URLs). Requires a model that supports video input (e.g. Gemini)."
}
],
"supportsAttachments": true
},
"entrypoint": "bundle.mjs",
"formFields": [
{
"id": "botToken",
"type": "password",
"label": "Bot Token",
"envVar": "TELEGRAM_BOT_API_KEY",
"helpLink": {
"url": "https://t.me/BotFather",
"text": "@BotFather"
},
"helpText": "Create a bot and get its token from ",
"required": true,
"configKey": "botToken",
"placeholder": "123456:ABC-..."
},
{
"id": "botUsername",
"type": "text",
"label": "Bot Username (optional)",
"helpText": "The bot's @username without the leading @",
"configKey": "botUsername",
"placeholder": "my_bot"
},
{
"id": "webhookSecret",
"type": "password",
"label": "Webhook Secret (optional)",
"helpText": "Used if you configure a production webhook instead of polling",
"configKey": "webhookSecret",
"placeholder": "Random secret for webhook validation"
}
],
"credentials": [
{
"key": "TELEGRAM_BOT_API_KEY",
"type": "password",
"label": "Bot Token",
"helpText": "Create a bot via @BotFather and paste its token here."
},
{
"key": "TELEGRAM_WEBHOOK_SECRET",
"type": "password",
"label": "Webhook Secret",
"helpText": "Random secret used to verify the X-Telegram-Bot-Api-Secret-Token header on inbound webhook requests."
}
],
"capabilities": [
"net.fetch",
"secrets.read",
"connection.lifecycle",
"workflow.dispatch",
"integration.test",
"chat.takeover.read",
"chat.history.write",
"telemetry.write"
],
"requiredNpmDeps": {
"chat": "^4.26.0",
"@chat-adapter/telegram": "^4.26.0"
},
"requiresHostRestart": true
} Signature
qHlYZ7Zra9M4s1MkBxs6A9QmpC/Q05lITQ5gDEV8VM3cV0mlwAqgHuBrvt2M9Y7sdEKpyHFztRXO4+L1iFGRCA==