iT邦幫忙

2026 iThome 鐵人賽

DAY 12
0

昨天我們成功透過 Webhook 讓系統隨時準備好接收外部傳來的訊息。但是,現實世界中使用者傳來的東西千奇百怪。
假設我們的 AI 知識管家未來要能處理:

  1. 一般文字(直接摘要)
  2. 網頁連結(需要先爬蟲抓取文字)
  3. YouTube 網址(需要先下載字幕)
  4. PDF 檔案(需要解析文件內容)

如果我們把所有的東西都直接無腦丟給後端的 FastAPI 與 Gemini,系統一定會崩潰。我們需要一個 Router,在資料進入處理核心之前,先把它們分流到對應的專屬通道。
你可能會想:「既然我們有 Gemini,為什麼不直接把使用者傳來的內容全部直接丟給 AI?」呼應我們在 Day 03 提過的概念,這裡有幾個不這麼做的原因:
1. 成本與速度:呼叫 LLM 需要花費 Token 且有網路延遲。
2. 可靠性:AI 的回答具有機率性,有時候可能會判斷錯誤。
3. 有更簡單的解法:判斷一個字串是不是 YouTube 網址,只需要看它有沒有包含 youtube.com 就好,這種「規則明確」的事情,交給傳統的 IF 邏輯處理是最快、最穩定的。

在 n8n 中,我們可以使用 IF Node 或 Switch Node 來進行條件判斷與分流。因為我們有多個類別(YouTube、Web、PDF、Text),這裡使用擴充性最好的 Switch Node。

  1. 建立 Switch Node
    在昨天的 Webhook 節點後面,點擊 + 新增節點,搜尋並選擇 Switch 節點。點開 Switch 節點設定,我們要根據 Webhook 傳進來的 text 欄位來做判斷。將 Value 1 綁定為我們昨天學到的路徑:{{ $json.body.text }}

  2. 設定 Routing 規則
    https://ithelp.ithome.com.tw/upload/images/20260919/20183341QCYXjVPsXk.png
    將規則如上圖設定,要注意因為 youtube 連結也包含 http,所以 youtube 的規則要放在網頁的前面。最後一個規則是處理純文字的。

接下來就可以像昨天一樣用 curl 測試:

curl -X POST http://localhost:5678/webhook-test/telegram-webhook \
-H "Content-Type: application/json" \
-d "{\"text\": \"一段 Youtube 連結\"}"

https://ithelp.ithome.com.tw/upload/images/20260919/20183341jK7NCQRbgL.png
接著檢測是否走在正確的路徑上,每條路徑要接的點未來幾天會再處理。


上一篇
Day 11 | Webhook:讓真實世界事件自動啟動 Workflow
下一篇
Day 13 | Web Automation:把網頁自動變成 AI 可以讀的文字
系列文
30 天 AI 自動化實戰:用 n8n、FastAPI 與 Gemini 打造 AI 知識管家16
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言