目次

n8nでTelegram AIチャットボットを作る方法

この章では、Telegram AIアシスタントを作ります。ユーザーがボットにメッセージを送ると、n8nがAIで返信を生成し、ユーザーごとの会話内容を記憶します。

[Telegram Trigger] ─▶ [AI Agent] ─▶ [Telegram:Send Message]
                        ├ Chat Model
                        └ Memory(ユーザーIDで区別)

1. Telegram Botを作成する

  1. Telegramで @BotFather を検索します。
  2. /newbot を送信します。
  3. 指示に従って、ボットの表示名と、末尾が bot のユーザー名(例:my_helper_bot)を入力します。
  4. BotFatherから Bot Token が返されます。安全な場所に保管し、漏えいしないようにしてください。

2. 認証情報を作成する

n8nで Telegram API 認証情報を追加し、Bot Tokenを貼り付けます。

3. Telegram Trigger

ワークフローを新規作成し、最初のノードとして Telegram Trigger を選択します。

  • Trigger On:Message

Telegram TriggerはWebhookでメッセージを受信するため、次の条件が必要です。

  • n8nがインターネット経由で HTTPS 接続できること(セルフホスト環境へのデプロイを参照)。
  • ローカルでテストする場合は、Cloudflare Tunnelなどのツールで一時的に外部へ公開できます。

Listen for test event をクリックし、Telegramでボットにメッセージを送ると、ノードは次のようなデータを受信します。

{
  "message": {
    "message_id": 42,
    "from": { "id": 123456789, "first_name": "太郎" },
    "chat": { "id": 123456789, "type": "private" },
    "text": "こんにちは"
  }
}

1つのBotに設定できるWebhookは1つだけです。同じBotをテスト用と本番用のワークフローで切り替える場合、最後に有効化したワークフローが適用されます。

4. AI Agent

AI Agent ノードを追加します。

  • Source for Prompt:Define below
  • Prompt (User Message):{{ $json.message.text }}
  • System Message:
あなたは「ヘルパー」という名前の親切なTelegramアシスタントです。
自然な日本語で、簡潔に、スマートフォンで読みやすい回答をしてください。

Chat Model(OpenAI、またはローカルのOllamaモデル)を接続します。

5. ユーザーごとに会話を記憶する

Simple Memory を追加します(本番環境ではPostgres / Redis Chat Memoryの利用をおすすめします)。

  • Session ID:Define below
  • Key:{{ $('Telegram Trigger').item.json.message.chat.id }}

chat IDをSession Keyにすると、ユーザー(またはグループ)ごとに会話の記憶が分かれ、混ざることがありません。

6. 返信を送信する

Telegram ノードを追加し、操作として Send Message を選択します。

  • Chat ID:{{ $('Telegram Trigger').item.json.message.chat.id }}
  • Text:{{ $json.output }}

AI Agentの回答は output フィールドに入ります。

Additional Fields で Parse Mode を設定できます。モデルの回答にMarkdown記号が含まれて送信に失敗する場合は、Parse Modeを設定せず、プレーンテキストで送信してください。

7. テストして公開する

  1. Execute workflow をクリックし、ボットにメッセージを送ってテストします。
  2. 問題がなければ Save をクリックしてから Publish します。

応用機能

特定のユーザーだけに許可する

Telegram Triggerの後ろに If ノードを追加します。

{{ $json.message.from.id }} が 123456789 と等しい

条件に一致しない場合は別の経路に進め、「このボットは内部利用専用です」と返信するか、そのまま無視します。バージョンによっては、Telegram Triggerの設定でユーザーIDを制限することもできます。自分のIDは、Triggerが受信したデータで確認できます。

コマンドを処理する

Switch ノードでメッセージの内容に応じて処理を分岐します。

条件処理
text が /start と等しいウェルカムメッセージと使い方を送信する
text が /reset と等しい記憶を消去する
その他AI Agentに渡す

テキスト以外のメッセージを処理する

ユーザーが画像、スタンプ、音声を送ると、message.text は空になります。エラーを防ぐため、AI Agentの前にIfを置き、{{ $json.message.text }} が存在するか判定します。

画像を処理するには、Telegramノードの Get File で画像をダウンロードし、画像認識に対応したモデルに渡して分析します。

ツールを追加する

AI Agent入門で紹介しているツール(Google Sheets、HTTP Request、Calculator)をこのAgentに接続すると、ボットでデータの検索や操作を実行できます。

メッセージを能動的に送信する

返信だけでなく、どのワークフローからでもTelegramノードを使って、たとえば日次レポート、エラー通知、注文通知などを自分に送信できます。必要なのは自分のChat IDだけです。

更新日 2026年10月12日