1. 節點介紹

Moksa 觀點 :Telegram 是工程師最愛的告警通知管道 — Bot 設定簡單、訊息送達率高、支援豐富的格式(Markdown、HTML、按鈕)。 n8n Telegram 節點讓你完整控制 Telegram Bot 的所有功能 — 發訊息、編輯訊息、處理檔案、管理 Chat。從簡單的告警通知到複雜的客服機器人,這個節點都能搞定。

2. 功能簡介

n8n Telegram 節點支援 6 種 Resource:

  • Chat :Get、Get Administrators、Get Member、Leave、Set Description、Set Title — 管理聊天群組
  • Callback :Answer Query、Answer Inline Query — 處理 Inline 按鈕回應
  • File :Get — 取得 Telegram 上的檔案
  • Message :Delete、Edit Message Text、Pin、Send Animation、Send Audio、Send Chat Action、Send Document、Send Location、Send Media Group、Send Message、Send Photo、Send Sticker、Send Video、Unpin — 訊息相關的所有操作

認證使用 Telegram Bot Token,向 BotFather 申請建立 Bot 後取得。

3. 常見應用場景

  • 系統告警通知 :監控異常時 Send Message 到指定群組或個人
  • 豐富格式報表 :用 Send Photo 或 Send Media Group 發送圖表和資料
  • 互動式客服機器人 :搭配 Telegram Trigger 接收訊息,處理後 Send Message 回覆
  • 訊息更新 :定期任務的進度用 Edit Message Text 更新同一則訊息,避免洗版

4. n8n Telegram 關鍵參數

  • Chat ID(必填) :聊天 ID。個人聊天用使用者 ID(數字)、群組用負數 ID、頻道用 @channel_username
  • Text(Send Message) :訊息內容,支援 Markdown 或 HTML 格式
  • Parse Mode :訊息格式(Markdown、MarkdownV2、HTML、None)
  • Reply Markup(選填) :互動按鈕,JSON 格式
  • Binary Data(Send Photo / Document) :要上傳的二進位檔案

5. 實戰範例

系統告警發送到 Telegram 群組:

// Telegram Send Message
{
  "chatId": "-1001234567890",
  "text": "*🚨 系統告警*\n\nServer: \`api-server-01\`\nStatus: \`Down\`\nTime: {{ $now.format('HH:mm:ss') }}\n\n[查看監控面板](https://grafana.example.com)",
  "parseMode": "Markdown"
}

// Telegram 群組會收到帶格式的告警訊息

6. 注意事項

  • Bot 必須先加入群組 :要發訊息到群組,Bot 必須先被加入該群組(且通常要設為管理員才能發某些類型的訊息)
  • 取得 Chat ID 不直觀 :個人 Chat ID 可以叫 Bot 發訊息給 @userinfobot 取得。群組 ID 是負數,可以用 @RawDataBot 取得
  • MarkdownV2 比 Markdown 嚴格 :MarkdownV2 對特殊字元(! –. 等)會強制要求轉義,否則會錯誤。建議用 HTML 格式更穩定
  • Rate Limit :Telegram Bot API 有速率限制,每秒最多 30 則訊息(同一 Chat 每秒 1 則)

7. 參考依據

8. 常見問題 FAQ

怎麼取得 Chat ID?

個人 Chat ID:在 Telegram 找 @userinfobot,傳訊息給它就會回傳你的 ID。群組 Chat ID:把 @RawDataBot 加入群組,它會傳一則訊息含 chat.id(負數)。頻道:用 @channel_username 直接當 Chat ID。

Markdown 和 HTML 格式怎麼選?

HTML 格式更穩定,特殊字元不會干擾解析。Markdown V1 較簡單但有限制,MarkdownV2 嚴格要求字元轉義(-.! 等都要轉義),容易出錯。建議用 HTML:<b>粗體</b>、<i>斜體</i>、<a href=…>連結</a>、<code>代碼</code>。

可以發送互動按鈕嗎?

可以。在 Reply Markup 設定 inline_keyboard 即可。例如:[[{text: 確認, callback_data: yes}, {text: 取消, callback_data: no}]]。使用者點按鈕後 Telegram 會傳送 Callback Query,可以用 Telegram Trigger 接收並處理。