為了讓 Bot 聽懂我們說的話,並根據使用者的輸入做出相對應的回應,需要先建立一個雙向溝通的管道,而 Webhook 就是建立雙向溝通的橋樑,這也意味著我們要用到 ngrok 來解決 localhost
無法被外部存取的問題。
在開始操作之前,先來介紹一下 Webhook 到底是什麼吧~
Webhook 其實就像訂閱通知,用 n8n 工作流來說明的話,相當於只要有事件發生,它就會自動叫 n8n 出來處理。
這就像你訂閱 YouTube 頻道,一有新影片就會跳通知一樣,Webhook 的概念也是:當外部服務發生某件事,就自動把訊息丟到你設定好的網址。
在 LINE Bot 的場景裡:
Webhook
節點就是這個 URL 的「接收站」,它負責監聽這個網址的訊息。Webhook
節點一接到訊息,就會啟動後面的工作流。這兩個東西是相輔相成的,你必須先在 n8n 中建立一個 Webhook 節點,才能產生那個可以被 LINE 傳送訊息的 Webhook URL。
Webhook 節點有兩種 URL:
認識 Webhook 之後就來使用 ngrok 讓 n8n 能被 LINE 伺服器找到吧~
ngrok
的執行檔。
3. 打開你電腦上的終端機(Terminal)或命令提示字元(Command Prompt)。
4. 執行以下指令,將你的 Auth Token 連接到 ngrok:
./ngrok authtoken <你的Auth Token>
./ngrok http 5678
http
:表示你要公開的是一個 HTTP 服務。5678
:這是 n8n 服務預設運行的連接埠(Port)。http
,一個是 https
。Session Status online
Account 你的帳號名稱 (Plan: Free)
Version 3.26.0
Region Japan (jp)
Latency 56ms
Web Interface http://127.0.0.1:4040
Forwarding https://a1b2c3d4e5f6.ngrok.io -> http://localhost:5678
Connections ttl opn rt1 rt5 p50 p90
1 0 0.01 0.00 0.00 0.00
https://
開頭的網址,接下來貼到 LINE Bot 後台的 Webhook URL,先不要按更新!!Webhook
節點開啟一個新的工作流,新增 Webhook
節點,把 Method 改為 Post
。
Path
。Path
接在 ngrok 生成的網址後面,/webhook-test
。到 n8n 介面執行 Webhook
節點,再回去LINE Bot 後台驗證一次網址,
右側的輸出面板中會顯示結果。
💡 重要:點擊 Execute Workflow
後,Webhook
節點就會進入「監聽」狀態,等待接收來自 Test URL
(你剛剛在 LINE Bot 後台貼的網址)的呼叫。
這證明你的工作流已經成功被外部事件(也就是你訪問網址的動作)所觸發。
明天(Day 15)會實際傳送訊息給 LINE Bot,測試它能不能收到訊息,接著設定節點蒐集訊息內容。