Appearance
Slack Incoming Webhook 怎么配置?从零到发消息,我踩过的那些坑

一、引言:为什么我要写这篇?
作为一个天天和 API 打交道的开发者,我原本以为配置 Slack Webhook 是件极其简单的事——不就是创建个应用、拿个 URL、发个 POST 请求嘛,能有多难?
结果我懵了整整一下午。
“Add New Webhook”按钮是灰色的,点不动。
安装应用时报错“没有要安装的机器人用户”。
授权完了回到 Incoming Webhooks 页面,URL 还是没出现。
每一步都踩坑,每一步都让人抓狂。
后来我翻遍了官方文档和社区帖子,才把这套流程彻底捋顺。这篇文章就是把我的踩坑经历和最终摸索出来的正确流程,一次性讲清楚。如果你也在配置 Slack Incoming Webhook,希望这篇能帮你把那一下午的时间省下来。
二、前置准备
开始之前,先确认两件事:
- 有一个 Slack 工作区(Workspace) —— 就是你团队正在用的那个 Slack。
- 有创建应用的权限 —— 如果你不是工作区的 Admin,可能无法创建应用,需要联系管理员帮忙开通。
如果这两项都 OK,那我们正式开始。
三、第一步:创建 Slack 应用
访问 Slack API 网站,点击页面中的 “Create New App”。

在弹出的窗口中选择 “From scratch”(从头开始)。

填写应用信息:
- App Name:给你的应用起个名字,比如 “message-bot”。
- Pick a workspace to develop your app in:选择你要安装到哪个工作区。

- 点击 “Create App”,应用就创建好了。
💡 这一步通常不会出什么问题,照着点就行了。
四、第二步:添加 Scope(关键!)
Slack 的权限模型是基于 Scope(权限范围) 的,你的应用能做什么、不能做什么,都在这里配置。
4.1 进入 OAuth & Permissions 页面
在左侧菜单的 “LEGACY” 分类下,找到并点击 “OAuth & Permissions”。
4.2 添加 OAuth 权限
滚动到页面中间的 “Scopes” 区域,点击 “添加一项 OAuth 权限”(Add an OAuth Scope)。

需要添加 两个权限:
| Scope | 作用 |
|---|---|
chat:write | 以机器人身份发送消息 |
chat:write:public | 在公共频道发送消息(即使机器人未被 @ 提及) |
⚠️ 这两个缺一不可。少了
chat:write,应用根本没有发送消息的权限;少了chat:write:public,消息只能发给私聊或机器人被 @ 提及的频道。
五、第三步:Install OAuth Tokens
添加完 Scope 之后,需要把应用安装到工作区,生成真正的 OAuth Token。
在 OAuth & Permissions 页面,向上滚动找到 “OAuth Tokens” 区域,点击 “Install to fishfinal”。

💡 注意:
fishfinal是我工作区的名称,你这里的按钮文字会是 “Install to [你的工作区名称]”。
点击后会跳转到 Slack 的授权页面,这里会列出应用请求的权限清单,确认后点击 “允许”。

授权完成后会自动跳转回 OAuth & Permissions 页面,此时 “OAuth Tokens” 区域会生成一个 “Bot User OAuth Token”。

✅ 这个 Token 就是你的应用身份凭证,后续发消息时要用到。请妥善保管,不要泄露。
六、第四步:激活 Incoming Webhook
这是最容易被忽略的一步——即使应用安装好了,Incoming Webhook 功能默认是关闭的,必须手动开启。
6.1 进入 Incoming Webhooks 页面
左侧菜单点击 “Incoming Webhook”,默认状态下,“Activate Incoming Webhooks” 的开关是 “off”。

6.2 开启开关
点击开关将其调整为 “on”。

这时页面顶部会出现一条警告信息:
⚠️ You’ve changed the permission scopes your app uses. Please reinstall your app for these changes to take effect.
你更改了应用使用的权限范围。请重新安装应用以使这些更改生效。
6.3 重新安装应用
点击警告信息中的 “reinstall your app” 链接,Slack 会再次跳转到授权页面。
这次多了一个关键选项——选择 Webhook 消息要发送到的默认频道。

选择一个频道(比如 #general 或 #random),点击 “允许”。
6.4 获取 Webhook URL
重新安装完成后,页面会自动跳转回 Incoming Webhooks 页面。此时在 “Webhook URLs for Your Workspace” 区域,你会看到:
- 一个 curl 示例命令,可以直接用来测试
- 一个 Webhook URL,格式类似:
https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX

6.5 测试一下
复制页面中的 curl 命令,在终端里执行:
bash
curl -X POST -H 'Content-type: application/json' --data '{"text":"Hello, world!"}' https://hooks.slack.com/services/xxxxxxxxx/xxxxxxxxx/xxxxxxxxxxxxxxxxxxxxxxxx如果一切正常,你会看到 Slack 频道里弹出这条消息:

🎉 恭喜你,配置成功了!
最后,点击 Webhook URL 旁边的 “Copy” 按钮,把它保存到你的代码里。
七、常见问题 FAQ
| 问题 | 原因 | 解决方案 |
|---|---|---|
| “Add New Webhook”按钮是灰色的 | 应用未安装或 Scope 配置不完整 | 先去 OAuth & Permissions 添加 chat:write 和 chat:write:public,然后点击 Install |
| 安装时报“没有要安装的机器人用户” | 应用没有 Bot 用户 | 在 App Home 中创建 Bot 用户,然后重新安装 |
| 开启 Incoming Webhook 后仍没有 URL | 修改 Scope 后没有重新安装 | 点击警告中的 “reinstall your app”,并选择默认频道 |
发消息报错 invalid_token 或 not_allowed | Token 没有对应权限 | 确认 Scopes 包含 chat:write 和 chat:write:public,并重新安装 |
| 消息发到了错误的频道 | 安装时选择的默认频道不对 | 重新走一遍 reinstall 流程,选择正确的频道 |
八、总结
配置 Slack Incoming Webhook 的完整流程可以总结为四步:
1. 创建应用(Create App)
↓
2. 添加 Scope(chat:write + chat:write:public)
↓
3. 安装应用(Install to Workspace)
↓
4. 激活 Incoming Webhook + 重新安装(Reinstall)
↓
5. 拿到 Webhook URL最容易踩的三个坑:
- 漏掉 Scope —— 必须加
chat:write和chat:write:public,少一个都不行。 - 忘了激活开关 —— Incoming Webhook 默认是关闭的,必须手动打开。
- 改了配置没重新安装 —— Scope 变化后必须 reinstall,否则不会生效。
希望这篇文章能帮你把配置 Slack Webhook 的时间从一下午缩短到 5 分钟。
