在昨天的實作中,我們成功跑通了全自動的「AI 晨會營運快報」,每天定時由 Dify 分析資料庫並推播到通訊軟體頻道。
然而,單向推播只能解決「資訊傳遞」的問題。在真實的營運場景中,決策者看完日報後,心中往往會冒出更多的追問:
「報告裡提到 Furniture 虧損嚴重,那它在各州的退貨率分別是多少?」
「上個月消費金額最高的前三名 VIP 客戶是誰?」
「幫我查詢目前庫存中哪些品項已經低於安全存量?」
如果主管每次有新疑問,分析師都得重新登入 Tableau 開工作表、或是去資料庫撈 SQL,效率依然低落。
今天我們將實現自動化的重大升級——將單向推播轉為「雙向即時對話」!讓使用者在通訊軟體裡 @機器人 隨口提問,n8n 就會即時監聽、調用 AI 進行業務邏輯推理,並直接在群組內秒回解答!
一、雙向問答架構核心:Webhook 雙向傳遞
昨天的推播屬於「n8n 主動發送(Outgoing)」;而今天的雙向問答則依賴於「外部事件觸發(Incoming Webhook)」:
┌─────────────────────────────────┐
│ 使用者在 Discord/Slack 提問 │
│ 「請問上週加州賣最好的是什麼?」│
└─────────────────────────────────┘
│
▼ (觸發 Webhook)
┌─────────────────────────────────┐
│ 1. n8n Webhook / Bot Trigger │ ➔ 攔截提問內容與使用者 ID
└─────────────────────────────────┘
│
▼
┌─────────────────────────────────┐
│ 2. n8n 撈取最新資料與封裝 │ ➔ 攜帶業務資料集作為 Context
└─────────────────────────────────┘
│
▼
┌─────────────────────────────────┐
│ 3. Dify Chat API / Agent │ ➔ 根據提問與資料庫內容進行推理
└─────────────────────────────────┘
│
▼
┌─────────────────────────────────┐
│ 4. 回傳答案至通訊軟體原始對話串│ ➔ 零延遲秒回決策者
└─────────────────────────────────┘
二、實戰步驟一:在 Dify 建立「對話型應用(Chat App)」
為了支援具備上下文記憶的來回問答,我們需要使用 Dify 的 Chat 模式:
建立 Chat 應用:
進入 Dify 後台,點擊「建立空白應用」。
類型選擇 「聊天助手 (Chat App)」 或 「Agent」。
命名為:對話式 BI 數據助理。
設定系統提示詞(Prompt):
你是企業內部的智慧商業分析秘書。你擁有存取全店營運與訂單數據的權限。
發布並獲取 Chat API:
點擊右上角「發布」。
在「存取 API」中取得對話端點:POST /v1/chat-messages。
這個端點支援傳入 conversation_id,能夠自動延續多輪對話記憶!
三、實戰步驟二:在 n8n 中監聽使用者訊息
以 Discord 為例,最輕量的方式是使用 Discord Trigger 或 Webhook 監聽訊息:
操作步驟:
加入監聽節點:
在 n8n 新增 「Discord Trigger」 節點。
監聽事件選擇 Message Created(新訊息產生)。
設定過濾條件:只監聽特定頻道(例如 #數據問答-bot),避免被全伺服器的雜音干擾。
排除機器人自己的回話(防無限迴圈):
串接一個 「Filter」 節點。
條件設定:author.bot Equals false(只處理真實人類發送的訊息)。
萃取問題文字:
從節點輸出中可取得 content 欄位(即使用者輸入的提問文字)。
四、實戰步驟三:動態組裝並呼叫 Dify Chat API
在接收到問題後,我們要讓 AI 拿著最新的業務資料來回答:
串接 Google Sheets 節點:
調用先前設定好的 Google Sheets,獲取最新訂單快照資料。
串接 HTTP Request 節點呼叫 Dify:
Method:POST
URL:https://api.dify.ai/v1/chat-messages
Headers:
Authorization: Bearer <你的 Dify Chat API Key>
Content-Type: application.json
Body (JSON):
{
"inputs": {
"latest_sales_data": "{{ JSON.stringify($('Google Sheets').all().map(i => i.json)) }}"
},
"query": "{{ $('Discord Trigger').item.json.content }}",
"response_mode": "blocking",
"user": "{{ $('Discord Trigger').item.json.author.id }}"
}
回傳解答到 Discord:
串接 Discord 發送訊息節點。
內容設為 {{ $json.answer }}。
回覆在當前訊息底下(可在 Discord 節點中指定 Message ID 進行 Thread 串接回覆)。
五、對話效果驗收
設定完成並點擊「Active(啟用)」工作流後,你在手機或電腦的通訊軟體裡就能體驗這種流暢感:
使用者輸入:
@BI助理 幫我看一下加州目前賣最好的產品是什麼?利潤好嗎?
機器人 3 秒內回覆:
📊 加州銷售分析:
目前加州銷售冠軍為 Apple iPhone 15 Pro Max,總銷售額達 $18,450。
盈利狀況良好,利潤率約為 22.5%(獲利 $4,151)。
💡 建議:可持續針對西岸地區加強該品項的庫存配給。