iT邦幫忙

2026 iThome 鐵人賽

DAY 8
0
自我挑戰組

零程式碼的現代數據力:用 Tableau 與 Dify/n8n 打造自動化商業戰情室 30 天系列 第 22 篇

【Day 22】打破單向推播:用 n8n 打造能在 Discord/Slack 隨時自由問答的對話式 BI 助理

  • 分享至 

  • xImage
  •  

在昨天的實作中,我們成功跑通了全自動的「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):

角色定位

你是企業內部的智慧商業分析秘書。你擁有存取全店營運與訂單數據的權限。

回應原則

  1. 針對使用者的自然語言提問,根據附帶的業務資料庫內容進行精確檢索與計算。
  2. 回應請簡明扼要,數值需標註幣別或百分比,並提供數據背後的商業洞察。
  3. 若資料庫內無相關紀錄,請誠實告知,切勿憑空捏造數字。

發布並獲取 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)。
💡 建議:可持續針對西岸地區加強該品項的庫存配給。


上一篇
【Day 21】雙劍合璧:用 n8n 串接 Dify API,打造全自動無人化 AI 營運快報
下一篇
【Day 23】破解海量數據瓶頸:在 Dify 導入 RAG 知識庫,打造具備專屬外腦的智慧檢索管線
系列文
零程式碼的現代數據力:用 Tableau 與 Dify/n8n 打造自動化商業戰情室 30 天 共 24 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言