昨天,我們讓 n8n 學會「看懂」外部世界 —— 它能辨識圖片、提取發票資訊,甚至自動對獎。
但這位助理還有個限制:他能「看」、能「聽」、能「說」,但不記得你說過什麼。
今天,我們要讓他學會對話、理解上下文,並記住使用者曾經說過的話,不再只是機械地回一句訊息,而能像人一樣「聊天」。
在今天的文章裡,會帶你完成以下四件事:
今天,我們要讓這位 AI 助理正式化身為一名 「n8n 官方周邊商品店」的電商客服人員 —— Nody。 他不只是回答問題,更懂得推銷商品、維持對話溫度,讓顧客的每一次提問,都成為一次愉快的購物體驗。讓我們直接開始吧!
可以在應用程式介面左邊導航欄看有沒有 webhook 或是 Messenger 的項目,沒有的話就需要新增產品。
將 webhook URL 填入「回呼網址」中、「驗證權杖」填入回呼網址斜線後的那串(其實就是 n8n Webhook Trigger 中,Path
欄位的內容)
回到 n8n,建立一個工作流,添加一個 Webhook Trigger :
HTTP Method
設成 get
、Respond
設成 Using 'Respond to Webhook' Node
在 Webhook Trigger 後方添加一個 Respond to Webhook 節點,
Response Body
設成 {{ $json.query['hub.challenge'] }}
hub.challenge
這個參數驗證 webhook 有效性)execute workflow,使得 Webhook Trigger 在 Listening for Event 狀態(如果是 Test URL,那就是Listening for Test Event)
回到 Meta Developers 應用程式頁面,點選 【驗證並儲存】。
此時認證會完成,如果進到另一個設定Webhooks 頁面,就和前面的幾乎一樣,重複步驟 1.、4.、5.
接下來應該就會回到應用程式設定介面,下方會出現 webhook 欄位內容。到這裡,你已經完成最麻煩的一步了。
重點提示
- 在點選 【驗證並儲存】 的當下,Webhook Trigger 必須正在 Listening 狀態,否則驗證會失敗。
- n8n 的 Webhook URL 分為兩種:
- Test URL:用於開發階段,可立即測試事件觸發。
- Production URL:正式啟用後使用。
- 若最初使用 Test URL 綁定,之後改成 Production URL 時,必須重複前面的步驟 重新驗證一次。
- 而 Production URL 的事件監聽只有在工作流啟用(Active)時才有效,且在編輯介面上看不到觸發狀態,需到 Executions 頁籤查看事件記錄,這點務必注意
與 LINE 的綁定流程差異
LINE 綁定 Webhook 時,只需要貼上 URL 即可完成;但 Messenger 會多一步驗證流程 —— 你必須回傳
hub.challenge
給 Facebook,用來確認你的 Webhook 是否有效,並且這個驗證可能會須要進行兩次,麻煩非常多 ==。
不同的 Webhook Trigger 節點會有不同的 URL,因此建議不要換 Trigger 節點,不然換一個 Trigger 就要重新設定一次(但也可以拿來當練習)
接下來要綁定粉絲專頁,左側導航欄「產品」→ Messenger → Messenger API ,理論上綁定成功的話,會發現「設定 Webhooks」的卡片前面有一個綠勾勾,底下有一堆欄位
往下滑,滑到「2. 產生存取權杖」的卡片,確認一下是否有綁定你要接收訊息的粉絲專頁。
沒有的話,點選「連結」按鈕,選擇要接收訊息的粉絲專頁
綁定成功的話,在「2. 產生存取權杖」的卡片左上角會顯示綠勾勾、中間會顯示已綁定的粉專
點選【新增訂閱】,開通 Messenger API 的權限 (至少要開啟下面框起來的四個,保險一點也可以全開)
若要回覆訊息,需要有 API 權杖。
在「2. 產生存取權杖」點選權杖【產生】,就會出現產生權杖的視窗。
在 n8n 中添加粉專回覆權杖:加到 Facebook Graph API Credentials,建議命名一下,和之前粉專發文的區分開來
回到 n8n,把剛剛的 Webhook Trigger Method
調回 POST
、Respond
調回 Immediate
(可以斷開與 Respond to Webhook 的連結) → 執行工作流(或切成 Listening for Test Event 狀態)→ 傳遞訊息到粉專聊天室 → Webhook Trigger 節點會接收到訊息
從 Webhook Trigger 的 output 會看得到資料的結構,而我們接下來就是要針對接收到的訊息進行處理、回覆
從上一張圖中,我們可以觀察出 Messenger 接收到的訊息的結構,我們就是要針對接收到的訊息進行處理。
如果你認真觀察,也會看到有訊息發送者 sender 的 ID,這個欄位的資料就是後續我們要回覆訊息時需要的欄位。
不同平台的訊息結構會不同,但只要抓得出我們要的資料在哪裡,後續就很好處理了
如果我們想處理使用者傳到粉專聊天室中的圖片,我們也需要知道 Messenger 接收到的圖片訊息長什麼樣子。因此我們可以再次 Execute workflow,使得 webhook Trigger 在 Listening 狀態,然後傳一張圖片到聊天室,檢查一下回傳資料的結構,結果如下:
聰明的你可能就會想到,只要把圖片抓得下來的話,也可以複製昨天的工作流,進行發票的歸檔和紀錄。沒錯,流程其實就是這個類似!而這邊下載檔案的方式是透過 HTTP Request 節點,設定如下:
Method
:GET
URL
:就是回傳的那整坨 URL
Response format
:File
(回傳檔案)Put output in field
:data
(可以自行命名)後續如果要辨識發票,接法幾乎一模一樣,唯一要調的是回傳訊息的部分,這晚點會說。
但這不是今天的重點,可以在讀完今天的文章之後去嘗試自行修改、練習
在我們成功接收到使用者訊息後,下一步就是要讓 AI Agent 能夠針對這些訊息做回覆。今天的範例是一個電商客服,所以我們需要做幾件事:
假設一個使用者問:「這雙鞋子有藍色嗎?」如果 AI Agent 只看到這句訊息,它可能不知道使用者指的是哪一款鞋子,也無法延續先前的對話脈絡。
Memory 就是用來幫助 AI 記住使用者之前說過的訊息,例如上一句提到的「跑步鞋款號 ABC123」,讓 AI 回覆時能自然地說:「這雙跑步鞋款 ABC123 有藍色款喔,而且目前有現貨!」
在 n8n 的 AI Agent 節點中,你可以直接在下方找到 Memory 分支,點「+」,選擇 Simple Memory。
這個時候你可能有另一個問題了:所有傳到聊天室的訊息都會透過 Webhook 傳到 n8n,我要怎麼知道哪個訊息是誰的? 答案是,每個使用者在 Messenger 都有一個唯一的 ID,也就是 sender.id
。
所以我們可以把 Memory Key 設定為使用者 ID,其實就是前面我們從 webhook 獲得的 sender id。
這樣每個使用者的訊息就會存放在不同的記憶中,AI Agent 回覆時會自動抓取對應的對話歷史,避免訊息混淆。
AI Agent Prompt:設定角色為「電商客服」,語氣友善且專業。
Memory 設定:
掛載 Google Sheet Tool:讓 AI Agent 查詢商品資訊,以下是我請 AI 生的範例:
輸出範例與 AI Agent 最終接法如下:
接下來一樣將輸出用 Code 節點轉成 JSON 格式(其實這步不一定要,也可以在 AI Agent 中請他直接輸出,我要回傳給使用者時直接抓整個 output 就好。只是因為我是拿昨天的改的 XD)
得到 AI 的輸出之後,就是要把這則訊息回傳給使用者了,Line 傳遞訊息是使用 Messege API,而 FB則是使用自家的 Graph API,可以透過 HTTP Request 節點或是 Graph API 節點,以下我以 Graph API 節點舉例,設定如下:
Credential
:選擇剛剛存的那個粉專回覆權杖
Method
:POST
Version
:v23.0
Node
:粉專 ID
,可以從 webhook trigger output 抓 recipient id
Edge
:messages
(要 +s )
從 Options下面添加 Query Parameters JSON
,並輸入:
{
"recipient":{"id":"{{ $('Webhook').item.json.body.entry[0].messaging[0].sender.id }}"}, //這則訊息要傳給誰。就是 webhook 收到的訊息的發送者
"messaging_type":"RESPONSE", //訊息種類
"message":{"text":{{ $json.reply.toJsonString() }} } //訊息內容
}
執行後,粉專就會回覆訊息了!
以下為今天打造的工作流示意圖:
成果展示部分截圖:(客服回的訊息有點過於冗長,提示詞還需要稍微修改來提升效果,但接昨天發票歸檔的可以成功執行)
因為我是用 Test URL,所以其實我傳訊息到粉專前,都 execute workflow 一次。將工作流切成 active 並設定成 production webhook URL 後,就可以正常和這個智能AI聊天了!
今天,我們成功讓 n8n 的 AI 助理跨出重要一步——它不只會「看」和「聽」,現在還能「記得對話脈絡」、理解使用者訊息,並以自然、貼近人類的方式回覆問題。
我們完成了:
這幾天分享的東西有點多,因此明天可能暫時不會分享新的東西,而是做一次小整理 —— 把這幾天的工作流與設定整理成完整流程,讓你可以快速回顧、複習,確保每個環節都清楚掌握。我們明天見!