目次
n8nでTelegram AIチャットボットを作る方法
この章では、Telegram AIアシスタントを作ります。ユーザーがボットにメッセージを送ると、n8nがAIで返信を生成し、ユーザーごとの会話内容を記憶します。
[Telegram Trigger] ─▶ [AI Agent] ─▶ [Telegram:Send Message]
├ Chat Model
└ Memory(ユーザーIDで区別)
1. Telegram Botを作成する
- Telegramで @BotFather を検索します。
/newbotを送信します。- 指示に従って、ボットの表示名と、末尾が
botのユーザー名(例:my_helper_bot)を入力します。 - 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. テストして公開する
- Execute workflow をクリックし、ボットにメッセージを送ってテストします。
- 問題がなければ 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日