メインコンテンツへスキップ

Telegram ツールキット

Telegram ツールキットにより、エージェントやワークフローがTelegramボットと対話できるようになります。メッセージの送信と編集、メディア送信、チャットメンバーの管理、招待リンクの生成、受信メッセージによるワークフローのトリガーとなるWebhookの登録に対応しています。

Telegramボットとその認証情報は、@BotFatherというTelegramボットを通じて管理されます。Web開発者コンソールはありません。

前提条件​

要件詳細
Telegramアカウント@BotFatherと対話するために必要です

ステップ1 — Telegramボットの作成​

  1. @BotFatherを開く

    Telegramを開き、@BotFatherとの会話を開始します。

  2. 新しいボットを作成

    コマンド/newbotを送信し、指示に従います。

    プロンプト詳細
    Bot name人間が読める表示名(例:My App)
    Usernameユニークでbotで終わる必要があります(例:myapp_bot)
  3. ボットトークンをコピー

    BotFatherが成功メッセージを返信します。これにボットトークンが含まれています — 123456789:ABCdefGhIJKlmNoPQRsTUVwxyZのような形式です。コピーして安全に保存してください。

ヒント

BotFatherの/setuserpicコマンドを使用して、アプリケーションのロゴに合ったプロフィール画像を設定してください。辨識可能な画像は、ボットをユーザーに対してプロフェッショナルで信頼できるものにします。

ステップ2 — トークンをEKBに追加​

  1. ワークフローにTelegramツールキットステップを追加します。
  2. Select a Connection → Create a Connectionをクリックします。
  3. Connection Nameを入力し、ボットトークンを貼り付けます。
  4. Saveをクリックします。

トークンの管理​

危険

ボットトークンはボットのマスターキーです。公開リポジトリにコミットしたり、クライアントサイドコードで公開したりせず、共有しないでください。

トークンが漏洩した場合は、即座に取り消してください:

  1. @BotFatherにメッセージを送信
  2. /mybotsを送信
  3. ボットを選択
  4. API Token → Revoke current tokenをタップ

新しいトークンが生成されます。新しい値でEKBの接続を更新してください。

利用可能なツール​

ツール説明
New Message(トリガー)ボットにメッセージが送信されたらワークフローを開始します
Send Text Messageボットから任意のチャットにテキストメッセージを送信します
Send Media写真、動画、スタンプ、アニメーションGIFを送信します
Edit Message Text以前に送信されたメッセージのテキストを更新します
Delete Messageチャットからメッセージを削除します
Get Chat Infoチャットのメタデータを取得します
Get Chat Memberチャット内のユーザーのメンバーシップ状態を取得します
Create Invite Linkグループまたはチャンネルの招待リンクを生成します
Register WebhookTelegramにボットメッセージをワークフローに転送するよう指示します
Deregister WebhookWebhookを削除し、メッセージの配信を停止します

トリガー — New Message​

誰かがTelegramボットにメッセージを送信するたびに、ワークフローを自動的に開始します。

セットアップ:

  1. トリガーを追加

    New Messageトリガーをワークフローの最初のステップとして追加します。トリガー設定パネルから/tool-webhook/{workflow-id}URLをコピーします。

  2. Webhookを登録

    Register Webhookステップを使用して、TelegramにそのURLにメッセージを配信するよう指示します。一度実行します — 以下のRegister Webhookを参照してください。

  3. テスト

    ボットにテストメッセージを送信します。ワークフローが発火し、すべてのメッセージデータが変数として利用可能になります。

利用可能なトリガー変数:

変数説明
{{ trigger.body.message.text }}ユーザーが送信したメッセージテキスト
{{ trigger.body.message.chat.id }}チャットID — すべての送信ステップでChat IDとして使用
{{ trigger.body.message.from.id }}送信者のTelegramユーザーID
{{ trigger.body.message.from.first_name }}送信者の名前
{{ trigger.body.message.from.username }}送信者のユーザー名(空の場合あり)
{{ trigger.body.message.message_id }}受信メッセージのID
{{ trigger.body.update_id }}Telegramからの一意の更新ID

メッセージングアクション​

Send Text Message​

ボットから任意のTelegramチャットにテキストメッセージを送信します。

主要な入力:

入力説明
Chat ID送信先のチャット。ワークフローをトリガーした人の場合は{{ trigger.body.message.chat.id }}を使用します。固定のグループまたはチャンネルの場合は、その数値IDを貼り付けます。
Message送信するテキスト。静的テキストと変数を組み合わせます。例:Hello {{ trigger.body.message.from.first_name }}, your request was received.
Formatプレーンテキストの場合は空白にします。HTMLに設定すると<b>太字</b> / <i>斜体</i>が使用できます。MarkdownV2に設定するとMarkdownが使用できます(特殊文字は自動エスケープされます)。
Disable Web Page Previewリンクプレビューを抑制するにはtrueに設定します
Message Thread IDオプション — Forumスーパーグループのみに該当します
Reply Markupオプション — インラインキーボードまたはカスタム返信キーボード用のJSONオブジェクト

後続ステップでの出力参照:

  • メッセージID(後でEditやDeleteに必要): {{ step.output.message_id }}
  • チャットID: {{ step.output.chat_id }}

Send Media​

Telegramチャットに写真、動画、スタンプ、アニメーションGIFを送信します。

主要な入力:

入力説明
Chat ID送信先のチャット
Media Type以下のいずれかを正確に指定: photo、video、sticker、animation
Media URLファイルへの公開アクセス可能なHTTPS URL — Telegramが直接取得します
Media IDまたは、以前にアップロードされたファイルのTelegram file_id。Media URLまたはMedia IDのいずれかを提供し、両方は指定しないでください。
Captionメディアの下に表示されるオプションのテキスト。FormatでHTML/MarkdownV2に対応しています。
Formatキャプションのパースモード
Message Thread IDオプション — フォームスーパーグループのトピック用
注意

Media URLもMedia IDも提供しない場合、ステップはエラーを返します。URLは公開アクセス可能でなければなりません。ローカルまたはプライベートURLは機能しません。

Edit Message Text​

ボットが以前に送信したメッセージのテキストを更新します。

主要な入力:

入力説明
Chat ID元のメッセージがあるチャット
Message IDSend Text Messageの出力からのmessage_id — {{ step.output.message_id }}
Text新しいメッセージコンテンツ
Format新しいテキストのパースモード(空白=プレーンテキスト、HTML、またはMarkdownV2)

使用例: まず「リクエストを処理中…」と送信します。ワークフローロジックを実行します。その後、最終結果でそのメッセージを編集します — ユーザーは2つのメッセージではなく1つのメッセージを見ます。

Delete Message​

チャットからメッセージを削除します。

主要な入力:

入力説明
Chat IDメッセージを含むチャット
Message ID削除するメッセージのmessage_id
注意

ボットはチャットの管理者でない限り、自分のメッセージのみを削除できます。Telegramは時間制限も設けています — 48時間以上経過したメッセージは通常、ボットでは削除できません。

チャットとメンバーのアクション​

Get Chat Info​

チャットのメタデータを取得します。

主要な入力:

入力説明
Chat ID参照するチャット

後続ステップでの値参照:

  • チャットタイトル: {{ step.output.title }}
  • 説明: {{ step.output.description }}
  • 招待リンク: {{ step.output.invite_link }}

Get Chat Member​

チャット内の特定のユーザーを参照し、メンバーシップ状態とロールを返します。

主要な入力:

入力説明
Chat ID参照するチャット
User ID参照するTelegramユーザーID。ワークフローをトリガーした人の場合は{{ trigger.body.message.from.id }}を使用します。

後続ステップでの値参照:

  • Status: {{ step.output.status }}
  • Username: {{ step.output.username }}

可能なステータス値: creator、administrator、member、restricted、left、kicked

使用例: {{ step.output.status }}を確認し、leftまたはkickedの場合、メッセージの送信をスキップしてエラーを処理します。

グループまたはチャンネルの新しい招待リンクを生成します。

注意

ボットは対象チャットで「ユーザー招待」権限を持つ管理者である必要があります。

主要な入力:

入力説明
Chat IDグループまたはチャンネル
Nameオプションのラベル(最大32文字)。Telegram管理パネルに表示されます
Expire Dateオプション。リンクの有効期限のISO-8601文字列。例:2026-12-31T23:59:59Z。内部でunixタイムスタンプに変換されます。
Member Limitオプション。このリンク経由で参加できる最大人数(1〜99,999)

後続ステップでのリンク参照:

  • 招待URL: {{ step.output.invite_link }}
注意

出力のexpire_dateはunixタイムスタンプ(整数秒)であり、ISO形式ではありません。creates_join_requestは、チャットが新しいメンバーに管理者の承認を要求する場合にtrueになります。

Webhook設定アクション​

これらの2つのステップはNew Messageトリガーをボットに接続します。ワークフローごとに一度実行します。

Register Webhook​

TelegramにボットからのメッセージをワークフローURLに転送するよう指示します。

主要な入力:

入力説明
URLNew Messageトリガーパネルからの/tool-webhook/{workflow-id}URL
Allowed Updates通常のメッセージのみを受信するには["message"]に設定します(推奨)。空白の場合は同じデフォルトを使用します。
Secret Tokenオプションですが推奨されます。任意のランダム文字列(例:my-secret-abc123)。TelegramがすべてのWebhookリクエストヘッダーにこれを含め、リクエストが本物であることを検証できます。
Drop Pending UpdatesWebhook登録前に到着したメッセージを無視するにはtrueに設定します
  1. トリガーURLをコピー

    New Messageトリガー付きのワークフローを作成します。トリガーパネルから/tool-webhook/{workflow-id}URLをコピーします。

  2. Register Webhookを追加

    別の1回限りのワークフローまたは手動テスト実行で、Register Webhookステップを追加し、上記の入力を記入します。

  3. 一度実行

    ステップを実行します。次にボットにメッセージを送信します — メインのワークフローが発火するはずです。

または、curlで迅速な1回限りのセットアップとして登録できます:

curl -X POST "https://api.telegram.org/bot<YOUR_BOT_TOKEN>/setWebhook" \
-H "Content-Type: application/json" \
-d '{
"url": "https://your-domain.com/tool-webhook/<YOUR_WORKFLOW_ID>",
"allowed_updates": ["message"],
"secret_token": "my-secret-abc123"
}'

成功レスポンス:

{ "ok": true, "result": true, "description": "Webhook was set" }
注意

Telegramボットは同時に1つのアクティブなWebhookしか持つことができません。新しいURLを登録すると、以前のURLは自動的に置き換えられます。

Deregister Webhook​

Webhookを削除し、Telegramがワークフローにメッセージを配信するのを停止します。

主要な入力:

入力説明
Drop Pending UpdatesWebhookがアクティブだった間にキューに入ったメッセージを破棄するにはtrueに設定します
注意

ワークフローを退役またはアーカイブする場合はWebhookの登録を解除してください。Webhookを登録したままワークフローを非アクティブにすると、Telegramは応答のないリクエストを送信し続けます。

トラブルシューティング​

症状原因の可能性対処
新しいメッセージでワークフローが発火しないWebhookが登録されていないか、誤ったURLを指している正しいトリガーURLでRegister Webhookを実行
401 Unauthorizedボットトークンが無効または取り消されているトークンを確認するか、@BotFatherで新しいトークンを生成
メディアが配信されないURLが公開アクセス可能でない公開HTTPS URLを使用 — ローカルまたはプライベートURLは機能しません
メッセージを削除できないメッセージが48時間以上経過しているか、ボットが管理者でない管理者権限がない限り、ボットは最近のメッセージのみ削除できます
招待リンクでcreates_join_request: trueチャットが新しいメンバーに管理者承認を要求これは正常な動作です — ユーザーは参加前に承認が必要です
古いメッセージがワークフローをトリガーWebhook登録時に保留中の更新がクリアされていないDrop Pending Updatesをtrueに設定して再登録