Slack App 消息
Slack App 适合按频道动态发送消息,并可扩展 Block Kit、交互和其他 API。本文依据 Slack 官方资料整理,核验日期为 2026-09-08;未在真实工作区执行发送验证。
- 有权创建并安装 Slack App。
- 明确消息目标频道和最小 OAuth Scope。
- 机器人已加入目标频道,或具备该场景要求的访问权限。
- 创建 Slack App,在 OAuth & Permissions 中添加
chat:write。 - 安装或重新安装应用到工作区,使 Scope 生效。
- 保存 Bot User OAuth Token。
- 将机器人加入测试频道。
- 调用
chat.postMessage,传入channel和text。
| 字段 | 必需 | 说明 |
|---|---|---|
SLACK_BOT_TOKEN | 是 | Bot User OAuth Token,通常以 xoxb- 开头 |
CHANNEL_ID | 是 | 目标频道 ID,优先使用 ID 而非显示名称 |
SCOPES | 是 | 至少包含当前发送方式需要的权限 |
JavaScript 示例需要 Node.js 20 或更新版本;Python 示例需要安装 requests。
curl -X POST 'https://slack.com/api/chat.postMessage' \ -H 'Authorization: Bearer SLACK_BOT_TOKEN' \ -H 'Content-Type: application/json; charset=utf-8' \ -d '{"channel":"CHANNEL_ID","text":"通知渠道连通性测试"}'const response = await fetch('https://slack.com/api/chat.postMessage', { method: 'POST', headers: { Authorization: `Bearer ${process.env.SLACK_BOT_TOKEN}`, 'Content-Type': 'application/json; charset=utf-8', }, body: JSON.stringify({ channel: process.env.CHANNEL_ID, text: '通知渠道连通性测试', }),});
const result = await response.json();if (!response.ok || !result.ok) throw new Error(JSON.stringify(result));console.log(result);import osimport requests
response = requests.post( "https://slack.com/api/chat.postMessage", headers={"Authorization": f"Bearer {os.environ['SLACK_BOT_TOKEN']}"}, json={"channel": os.environ["CHANNEL_ID"], "text": "通知渠道连通性测试"}, timeout=15,)response.raise_for_status()result = response.json()if not result.get("ok"): raise RuntimeError(result)print(result)Slack API 即使返回 HTTP 200,也需要检查 JSON 中的 ok。成功时记录 channel 和 ts,并确认目标频道实际显示消息。
- Token 只保存在服务端,Scope 保持最小化。
- Scope 变化后需要重新安装应用。
- Token 泄露后在应用管理后台轮换或撤销,并检查审计记录。
not_in_channel:邀请机器人进入目标频道。
missing_scope:增加必需 Scope 并重新安装应用。
HTTP 200 但失败:读取 JSON 的 ok 和 error,不能只判断 HTTP 状态。