tupiflow registry /plugins/telegram/0.3.0

telegram @ 0.3.0

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": "f1ccef9d8fbd7405cf40ec4bf3cd5914a32d1d84f7c8236e91d1e4b5a452b55d",
    "sizeBytes": 7652
  },
  "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.3.0",
    "publisher": "tupiflow",
    "description": "Telegram bot integration. Reply to chat threads and receive webhook updates."
  },
  "entrypoint": "bundle.mjs",
  "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"
  ]
}

Signature

rrOnBkhPyHbBV4FUgnuVUjMmoFBQHNyl2gBhH5lNUhy21UwQfSaxfwb4m5GVwYNotnGcMz9MTtgjV3N1zrSCBQ==