别再让客服团队熬夜盯屏了,Slack自动回复实战指南
笔者在 N8N大学 交流群里看到太多人问:怎么用 n8n 做个 Slack 机器人,自动回复客户消息?手动回复不仅累,还容易漏掉,尤其是深夜或节假日。其实,利用 n8n 的 Slack 节点,搭建一个智能回复机器人并不难。本文将手把手教你从 0 到 1 搭建,不仅解决“有无”的问题,还能让你掌握如何处理复杂的多轮对话逻辑。
准备工作:你需要这三样东西
在开始写 Workflow 之前,我们得先把“家伙事儿”备齐。别担心,这些都是免费的:
- 一个 n8n 工作流环境:本地或云端均可。如果你还没有,可以去 N8N大学 以前的教程里找找 Docker 部署的保姆级指南。
- 一个 Slack Workspace:你需要有创建 App 的权限(通常是管理员)。如果你是个人测试,可以创建一个免费的 Slack Workspace。
- 一个测试用的 Slack 频道:比如
#support-bot,用来接收消息。
核心实操:三步搭建你的自动回复机器人
我们将这个流程拆解为三个核心步骤:创建应用、配置触发、设置回复。
步骤一:在 Slack 上创建 App 并获取 Token
这是最关键的一步,权限没给对,后续全是白搭。
- 访问 Slack API Management,点击 Create New App。
- 选择 From scratch,输入 App Name(例如 n8n-bot),并选择你的 Workspace。
- 在左侧菜单找到 OAuth & Permissions,下滑找到 Scopes,在 Bot Token Scopes 中添加以下权限(最少原则):
channels:history:读取频道消息。chat:write:发送消息。app_mentions:read:读取提及 Bot 的消息(如果你想做 @bot 才回复的逻辑)。
保存后,回到 OAuth & Permissions 页面,复制 Bot User OAuth Token(以 xoxb- 开头)。这个 Token 就是你的机器人身份证,先记在记事本里,千万别泄露。
步骤二:配置 n8n 的 Slack Trigger 节点
现在进入 n8n 的操作台,我们来配置“耳朵”。
- 新建一个 Workflow,点击 + 添加节点,搜索并选择 Slack。
- 在节点配置中,Authentication 选择 OAuth2(推荐,安全性高)或 Generic Credential Type(填入刚才的 Token)。
- Resource 选择 Message,Operation 选择 Watch 或 On New Message(具体名称视 n8n 版本而定)。
- 选择你刚才创建的 Channel(如果下拉框没加载出来,说明 Token 权限或配置有误)。
注意: 如果你希望机器人只在被 @ 时回复,需要在 Slack App 设置中开启 Event Subscriptions,并订阅 app_mention 事件。但在 n8n 中,最简单的做法是先监听所有消息,然后在下一步用代码节点过滤。
步骤三:设置自动回复逻辑(核心)
这一步决定了机器人的“智商”。我们假设一个场景:只要有人在频道里发消息,机器人就回复“收到,我马上处理!”。
- 在 Slack 节点后面,连接一个 Set 节点(或者直接用 Slack 节点的后置配置)。
- 再添加一个 Slack 节点,这次 Operation 选择 Post。
- Channel:选择当前频道(可以使用上一个节点传递过来的 Channel ID)。
Text:输入你的回复内容。这里可以使用表达式来引用上一条消息,例如:Hi {{$node["Slack"].json["user"]}},收到你的消息啦!
如果你需要更智能的回复(比如关键词匹配),可以在两个 Slack 节点中间加一个 IF 节点或 Code 节点,判断消息内容是否包含特定关键词。
避坑指南:实战中容易踩的两个坑
n8n 社区里经常有人抱怨“配置好了但没反应”,通常是因为以下原因:
1. 权限范围(Scope)不足
这是最常见的报错。如果你在 n8n 里连接 Slack 时报错 missing_scope,请回到 Slack App 页面,检查是否漏掉了 chat:write 或 channels:history。记得每次修改 Scope 后,需要重新在 n8n 中授权连接(点击 Credential 旁边的刷新图标)。
2. 消息循环(死循环)
这是一个经典的“机器人自杀”行为。如果你设置的逻辑是“只要收到消息就回复”,那么机器人的回复也会被它自己监听到,从而再次触发回复,陷入无限循环,直到耗尽 API 配额。
解决方案: 在 Slack Trigger 节点中,利用过滤器排除 Bot 自己的消息。通常触发数据里会有 subtype 字段,如果是 bot_message 就跳过;或者判断 user 字段是否为你的 Bot ID。
FAQ 问答
Q1: 为什么 n8n 的 Slack 节点连接不上?
A: 90% 的情况是 Token 权限不足或 Token 填错。请确保你复制的是 Bot User OAuth Token(xoxb-开头),且在 Slack App 的 OAuth & Permissions 页面添加了所有必要的 Scopes。如果是私有部署的 n8n,还需要检查服务器是否能访问 Slack 的 API。
Q2: 我想让机器人只在特定时间回复,怎么实现?
A: 可以在 Trigger 之后加一个 IF 节点。利用 JavaScript 表达式判断当前时间,例如:{{ new Date().getHours() >= 9 && new Date().getHours() < 18 }}。如果条件不满足,就不走回复的分支。
Q3: 这个机器人是免费的吗?
A: 是的。n8n 本身是开源的,Slack 的 API 也是免费的(只要你的消息量在免费额度内)。但如果你使用 n8n Cloud 版本,可能需要根据工作流执行次数付费,自托管则完全免费。
总结与资源
通过上述步骤,你已经掌握了一个基础的 Slack 自动回复机器人搭建方法。从监听消息到智能回复,n8n 的低代码能力让这一切变得触手可及。
如果你想更进一步,可以尝试接入 OpenAI 的 API,让机器人拥有真正的对话能力,而不仅仅是机械回复。更多 n8n 进阶技巧,欢迎持续关注 N8N大学。
参考资源: