iT邦幫忙

2025 iThome 鐵人賽

DAY 13
0
AI & Data

30天之後,你就是你團隊內最會n8n的人系列 第 13

[Day 13] 打造 Slack 查詢機器人:讓任何人都能隨時掌握進度

  • 分享至 

  • xImage
  •  

我們已經成功建立了一套系統,能自動收集資料到 Google Sheets,並在每天早上,將彙整好的戰情報告廣播到 Slack。

這非常棒,團隊成員可以被動地接收每日的宏觀資訊。

但工作中的真實場景,往往是主動且即時的。

【今天的問題】
如果團隊成員 A 在下午突然想知道「XX 專案」目前的負責人是誰;成員 B 想確認一下「OOO 活動」的報名人數。難道他們要等到明早的報告嗎?還是要去翻那個可能已經有數百行的 Google Sheets 總表?
這個過程太繁瑣,資訊的取得有很高的摩擦力。

【今天的解法】
我們要打造一個團隊專屬的查詢機器人。團隊中的任何人,都可以在 Slack 頻道中,透過 @ 我們打造的機器人,加上他們想查詢的關鍵字,n8n 就會化身為一個秒回的智慧助理,立刻去我們的 Google Sheets 中央資料庫查詢,並將結果直接回傳到 Slack。


學習點:Slack (Bot / App Mention) 觸發器、Set 節點(文字解析)、Google Sheets (Search for Rows 模式)。

第一步:設定 n8n 的「耳朵」 (Slack Trigger)
使用 @mention 的好處是,我們幾乎不需要在 Slack 後台做任何複雜的設定。只要確保我們前一天建立的機器人 App (n8n-reporter-bot) 已經被邀請到要使用的頻道裡,剩下的工作就全部在 n8n 內完成。

在 n8n 中,建立一個新的工作流。

點擊第一個節點,在 Trigger 搜尋框中找到 Slack。

  • Trigger On: 點開下拉選單,選擇 Bot / App Mention。

  • Credential: 選擇你之前已經建立好的 Slack 憑證。

就這樣,n8n 的耳朵已經設定好了。

現在,只要有任何人在任何頻道 @ 你的機器人,這個工作流就會被立刻觸發。

第二步:解析指令,聽懂人話 (Set 節點)
當使用者在 Slack 中輸入「@n8n-reporter-bot 查詢XX專案」時,n8n 收到的原始文字會包含一段像標籤一樣的使用者 ID,例如 <@U0123ABCDE> 查詢XX專案。

我們需要一個加工步驟,把前面的 <@U0123ABCDE> 去掉,只取出後面真正的查詢指令。

在 Slack Trigger 後面,加上一個 Set 節點,並命名為「解析指令」。

Add Value:

  • Name: query_keyword

  • Value (Expression):
    {{ $trigger.body.event.text.replace(/<@.*?>\s/, '') }}

第三步:查詢資料庫 (Google Sheets - Search)
現在我們的機器人聽懂了指令,就要開始動腦去資料庫找答案了。

在「解析指令」節點後,加上一個 Google Sheets 節點。

Operation: 選擇 Get row(s) in sheet。

Document / Sheet : 選擇我們的「團隊任務總表」以及要查詢的分頁。

Add Filter: 填入你要在哪一個「欄位」進行搜尋。例如,任務名稱。

Value: 填入我們要搜尋的「關鍵字」。這裡我們就要使用上一步解析出來的乾淨關鍵字:
{{ $json.query_keyword }}

第四步:回覆查詢結果
大腦找到資料後,就要開口回覆了。而且,我們要確保不論「找到」或「找不到」,都能給使用者一個明確的回應。

  1. 建立判斷岔路 (IF 節點):在 Google Sheets 節點後,加上一個 IF 節點。
  • Condition: {{ $items("Google Sheets").length }} Is Greater Than 0。
  1. 設定回覆訊息 (Slack 動作節點):
  • IF 的 false 出口 (找不到):連接到一個新的 Slack 節點,在 Text 欄位寫:「抱歉,我找不到關於「{{ $items("解析指令")[0].json.query_keyword }}」的任務。」。

  • IF 的 true 出口 (找到了):連接到另一個新的 Slack 節點,用查到的資料來組合回覆。

  1. 設定「找到了」的回覆:
  • Channel: 指定回覆到「當初發問的頻道」:{{ $trigger.body.event.channel }}。

  • Text: 我們可以用簡單的文字先組合出結果:

  • 嗨!幫你找到了任務進度:

任務名稱: {{ $json.body['任務名稱'] }}
目前狀態: {{ $json.body['狀態'] }}
負責人: {{ $json.body['負責人'] }}


現在,回到你的 Slack,在任何一個有機器人成員的頻道,輸入 @你的機器人名稱 你的任務關鍵字,然後按下 Enter。

幾秒鐘後,你的 n8n 機器人就會帶著查詢結果,優雅地出現在你面前。

今天,你的 n8n 不再只是一個後台的自動化引擎。

你賦予了它一個「互動介面」,讓它成為了團隊成員可以隨時呼叫、即時應答的智慧助理!


上一篇
[Day 12] 為你的戰情室接上廣播系統:串接 Slack 發送每日報告
下一篇
[Day 15] 打造團隊的中央神經系統:跨平台狀態自動同步
系列文
30天之後,你就是你團隊內最會n8n的人14
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言