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 接收並處理。