你是否也觉得,每天在 Slack 里回复重复的问题、手动创建任务、或者在团队频道里被 @ 得焦头烂额?作为 N8N大学 的首席主编,笔者深知这种“数字苦力”的痛苦。今天,我要教大家用 n8n 把 Slack 变成你的全能助理——当机器人被 @ 时,自动触发工作流,彻底解放双手。
场景导入:告别“收到”和“好的”
想象一下:当同事在群里 @ 你的机器人问“服务器状态如何?”,你不再需要手动去查日志再回复;或者当有人说“帮我建个 Jira 任务”,系统自动生成链接甩回群里。这不仅仅是省事,这是把你的脑力从机械劳动中剥离出来。N8N大学 专注实战,下面直接上干货。
准备工作:硬性条件一览
在开始之前,请确保你手头有以下资源:
- 一个 Slack Workspace 的管理员权限(用于创建 App)。
- 一个运行中的 n8n 实例(可以是官方云版、Self-hosted 或 Docker 部署)。
- 一个 Slack App(我们将把它配置成机器人)。
核心实操:三步搭建智能机器人
我们将把整个流程拆解为三个核心步骤:创建 Slack App、配置 Webhook 接收、编写自动化逻辑。
步骤一:在 Slack 中创建并配置 App
这是基础,千万别跳过。
- 访问 Slack API 页面,点击 “Create New App”,选择 “From scratch”。
- 给你的 App 起个名字(比如 N8N-Bot),选择你要关联的 Workspace。
- 在左侧菜单找到 Event Subscriptions,开启开关 (Enable Events)。
- 此时你会看到 Request URL 输入框。别急,我们先去 n8n 拿这个地址。
步骤二:在 n8n 中搭建 Webhook 接收器
N8N 是我们的指挥中心,它负责听 Slack 的电话。
- 新建一个空白工作流,添加 Webhook 节点。
- 点击节点查看 Webhook URLs,复制那个带有 n8n.app 域名的 POST 链接。
- 回到 Slack 的 Request URL 输入框,粘贴这个地址并点击 “Verify”。
- **关键点**:验证通过后,回到 Event Subscriptions,展开 Subscribe to bot events。
- 添加事件:app_mention。这意味着只要有人在频道里 @ 你的机器人,Slack 就会把这个消息发给 n8n。
- 别忘了去 OAuth & Permissions 页面,添加 Scopes(权限)。至少需要
app_mentions:read和chat:write。 - 最后,在页面底部点击 “Install to Workspace” 并授权。复制你的 Bot User OAuth Token(以 xoxb- 开头),备用。
步骤三:解析消息并自动回复
现在,我们让机器人“听懂”人话并做出反应。
- 在 n8n 的 Webhook 节点后面,添加一个 Set 节点(或者叫 Function 节点),用于提取关键数据。
- Webhook 传来的数据在
$.body里。我们需要提取event.text(用户说的话)和event.channel(发送的频道 ID)。 - 紧接着,添加一个 IF 节点,用来做逻辑判断。比如,如果 text 包含“天气”,则走天气查询分支;如果包含“任务”,则走创建任务分支。
- 以自动回复为例,在 IF 节点后添加 Slack 节点(注意是 n8n 官方的 Slack 节点,不是 HTTP Request)。
- 在 Slack 节点设置中,选择操作 Post。
- 认证方式选择 OAuth2,填入刚才复制的 Bot Token。
- 在 Channel 字段,填入上一步提取的 Channel ID(如
{{ $('Set').item.json.body.event.channel }})。 - 在 Text 字段,填写你的回复内容,例如:“收到!我是 n8n 机器人,正在为您处理请求。”
点击执行,回到 Slack,在任意频道 @ 你的机器人,你应该能收到自动回复了。
避坑指南:实战中的拦路虎
作为过来人,笔者必须提醒你注意这两个深坑:
- Request URL 验证失败:如果你的 n8n 是自托管的(Self-hosted),必须配置好公网可达的域名,并且配置好反向代理(Nginx/SSL)。如果直接用局域网 IP,Slack 是无法验证的。这是新手最容易卡住的地方。
- 消息循环(死循环):这是致命错误!如果你的 n8n 机器人回复了消息,而回复的内容里又包含了 @ 机器人的关键词,或者机器人自己回复了自己,就会导致无限循环触发。
- 解决方案:在 n8n 的 IF 节点逻辑里加一层判断,如果发送者是机器人本身(通常
$.body.event.subtype为bot_message),则直接结束流程,不要回复。
FAQ 问答
1. 我需要付费才能使用 Slack 的机器人功能吗?
不需要。Slack 的 Bot App 创建和 API 调用在免费版 Workspace 中完全可用。n8n 的使用取决于你的部署方式,Self-hosted 是免费的。
2. 为什么我的机器人收不到 @ 消息?
请检查三点:1. OAuth Scopes 是否包含了 app_mentions:read;2. 事件订阅是否添加了 app_mention;3. 机器人是否被添加到了该频道内(如果是私密频道)。
3. 可以让机器人读取私信吗?
可以。在 Event Subscriptions 中,除了 app_mention,还需要订阅 message.im 事件。这样用户私聊机器人时,也能触发工作流。
总结与资源
通过 n8n 连接 Slack,你不仅是在自动化一个回复,更是在构建一个基于对话的自动化入口。从简单的“查天气”到复杂的“部署发版通知”,这套流程都是基石。
更多硬核教程,请持续关注 N8N大学 (n8ndx.com)。如果你在配置过程中遇到报错,欢迎在社区留言,笔者会亲自解答。