在前十天的進度中,我們成功打造了「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 裝上門鈴:
POST(因為外部服務通常用 POST 傳遞資料)。telegram-webhook。
既然還沒連上外網,我們要怎麼測試呢?我們可以使用終端機的 curl 指令來模擬 Telegram 伺服器發送資料的情境。
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}}
