Slack Incoming Webhook
Incoming Webhook 将一个敏感 URL 与安装时选择的 Slack 频道关联。本文依据 Slack 官方资料整理,核验日期为 2026-09-08;未使用真实工作区执行发送验证。
- 有权在目标 Slack 工作区创建或安装应用。
- 已确定接收通知的频道。
- 有服务器端密钥存储位置。
- 创建 Slack App,进入 Incoming Webhooks 页面并启用功能。
- 选择“Add New Webhook to Workspace”。
- 授权应用访问目标频道。
- 保存生成的 Webhook URL,先发送纯文本,再增加 Block Kit。
| 字段 | 必需 | 说明 |
|---|---|---|
SLACK_WEBHOOK_URL | 是 | 与应用和频道关联的完整敏感 URL |
JavaScript 示例需要 Node.js 20 或更新版本;Python 示例需要安装 requests。
curl -X POST "$SLACK_WEBHOOK_URL" \ -H 'Content-Type: application/json' \ -d '{"text":"通知渠道连通性测试"}'const response = await fetch(process.env.SLACK_WEBHOOK_URL, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ text: '通知渠道连通性测试' }),});
if (!response.ok) throw new Error(`HTTP ${response.status}: ${await response.text()}`);console.log(await response.text());import osimport requests
response = requests.post( os.environ["SLACK_WEBHOOK_URL"], json={"text": "通知渠道连通性测试"}, timeout=15,)response.raise_for_status()print(response.text)成功请求通常返回文本 ok。同时确认消息进入授权频道,并检查显示的应用名称和图标是否符合预期。
- Slack 会主动扫描公开泄露的 Secret;仍应在泄露后立即撤销 Webhook。
- 不在客户端代码、日志或错误追踪中输出完整 URL。
- 需要动态选择频道时不要尝试篡改 Webhook,改用 Slack App API。
invalid_payload:检查 JSON 格式和 Content-Type。
no_active_hooks:Webhook 已被禁用或撤销。
发到了错误频道:Webhook 通常绑定授权时选择的频道,应重新安装或改用 chat.postMessage。