iT邦幫忙

2026 iThome 鐵人賽

DAY 11
0
AI 自動化

30 天 AI 自動化實戰:用 n8n、FastAPI 與 Gemini 打造 AI 知識管家系列 第 11

Day 11 | Webhook:讓真實世界事件自動啟動 Workflow

  • 分享至 

  • xImage
  •  

在前十天的進度中,我們成功打造了「n8n 負責流程、FastAPI 負責處理、Gemini 負責理解」的架構。但截至目前為止,我們每次測試都必須打開 n8n 的介面,手動點擊"Execute Workflow"並貼上文字。但在真實世界的應用場景中,自動化系統是不可能靠人工去按按鈕啟動的。我們需要一個機制,當使用者傳送訊息給機器人(例如 Telegram 或 LINE Bot)時,系統能自動接收到通知並開始處理資料。

要讓系統知道有新訊息來了,在系統架構上通常有兩種做法:
1. Polling:
就像你每隔 5 分鐘主動去信箱看有沒有新信件。系統會定時主動去問伺服器「有新訊息嗎?」這種做法的缺點是浪費網路資源,且訊息處理會有延遲。

2. Webhook:
就像掛號信,郵差會直接按你家門鈴。當外部系統收到訊息時,會主動發送一個 HTTP POST 請求到我們指定的網址。

這就是所謂的 Event-driven Automation,也是現代 AI Automation 系統的標準配備。

將 Webhook 節點加入 n8n
我們回到 n8n 來替換啟動機制,幫我們的 Workflow 裝上門鈴:

  1. 將原本流程最前面的 Manual Trigger 與 Edit Fields 節點刪除。
  2. 點擊 + 新增節點,搜尋並選擇 Webhook 節點。
  3. 進入 Webhook 節點設定:
    • HTTP Method:選擇 POST(因為外部服務通常用 POST 傳遞資料)。
    • Path:輸入自訂路徑,例如 telegram-webhook
    • Respond:選擇 Immediately(先立刻回覆「我收到了」,避免外部伺服器以為超時而重複發送)。
  4. 在 Webhook 節點上方點擊 Test URL 分頁,你會看到一串網址,目前這串網址只有自己的電腦連得到。我會之後再寫關於如何使用 Cloudflare Tunnel 建立專屬外網連結,讓手機與真實世界的 Bot 也能連進來!今天先學會如何處理接收到的事件。

https://ithelp.ithome.com.tw/upload/images/20260918/20183341unudDgCI4v.png

既然還沒連上外網,我們要怎麼測試呢?我們可以使用終端機的 curl 指令來模擬 Telegram 伺服器發送資料的情境。

  1. 在 n8n 的 Webhook 節點上,點擊 Listen for Test Event。
  2. 打開你電腦的終端機,貼上以下指令並按下 Enter:
curl -X POST http://localhost:5678/webhook-test/telegram-webhook \
-H "Content-Type: application/json" \
-d "{\"text\": \"這是一段透過 Webhook 傳送進來的測試文字,即將交給 Gemini 摘要。\"}"

回到 n8n,你會發現 Webhook 節點瞬間亮起,並且成功接收到了這筆 JSON 資料!接著後續的 HTTP Request 節點會順利跑完,就會看到類似以下的 output。要注意因為我們傳的文字格式跟之前不一樣,所以要把 HTTP Request 的 Value 格改成 {{$json.body.text}}

https://ithelp.ithome.com.tw/upload/images/20260918/20183341SKYklU8zTI.png


上一篇
Day 10 | AI 回答不能隨心所欲:Structured Output 與 Pydantic
下一篇
Day 12 | Router:不是每個 Decision 都需要 AI
系列文
30 天 AI 自動化實戰:用 n8n、FastAPI 與 Gemini 打造 AI 知識管家16
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言