Slack
Slack 接入使用 Socket Mode,用户可在频道中 @ App、给 App 发私信或在线程中继续对话,回复会回到原频道或原线程;默认由本地服务直连 Slack,除非设置 SLACK_CHANNEL_DIRECT_ENABLED=false。
使用方式
| 方式 | 触发方式 | 说明 |
|---|---|---|
| 频道 @ App | 在频道中 @ App 并输入问题 | 适合团队在频道里查询设备、处理告警或下发控制命令。 |
| 私信 App | 直接给 App 发私信 | 适合个人远程查询和控制设备。 |
| 线程回复 | 在 App 回复的线程中继续提问 | 适合把一次设备排查或操作过程保持在同一个 Slack 线程里。 |
在 Slack 后台准备 App
- 在 Slack API Apps 中创建 App。
- OAuth & Permissions → Bot Token Scopes 添加:
chat:writeapp_mentions:readim:history
- Event Subscriptions 中订阅 Bot Events:
app_mentionmessage.im
- 打开 Socket Mode。
- Basic Information → App-Level Tokens 创建 token,scope 选择
connections:write,复制xapp-...。 - OAuth & Permissions → Install to Workspace,复制 Bot User OAuth Token,通常形如
xoxb-...。 - Basic Information 中复制 Signing Secret。
在控制台填写配置
打开 设置 → IM 通道 → Slack,填写以下字段:
| 字段 | .env | 说明 |
|---|---|---|
| 启用 | SLACK_ENABLED | 是否启动 Slack 通道 |
| Bot Token | SLACK_BOT_TOKEN | xoxb-... |
| App Token | SLACK_APP_TOKEN | xapp-...,需要 connections:write |
| Signing Secret | SLACK_SIGNING_SECRET | 可选,Slack App 的 Signing Secret |
| 白名单 | SLACK_ALLOW_FROM | 可选,允许访问的 Slack 用户 ID |
也可以在 .env 中配置:
bash
SLACK_ENABLED=true
SLACK_BOT_TOKEN=xoxb-your-slack-bot-token
SLACK_APP_TOKEN=xapp-your-slack-app-token
SLACK_SIGNING_SECRET=your-signing-secret
SLACK_ALLOW_FROM=U01234567,U89ABCDEF
SLACK_CHANNEL_DIRECT_ENABLED=true保存后重启服务,配置才会生效。
验证接入
- 确认服务已重启。
- 日志中出现
Slack: enabled和Channel started (Socket Mode)。 - 在频道中 @ App,或给 App 发私信。
- 如果启用了白名单,确认发送者 Slack 用户 ID 已写入白名单。
频道消息会在原线程中回复;私信会直接回复到私信会话中。
常见检查项
- 私信无响应:确认订阅了
message.im,并重新安装 App 到 workspace。 - 频道无响应:确认消息中 @ 了 App,并且 App 已加入频道。
- Socket Mode 无法启动:确认
SLACK_APP_TOKEN是xapp-...,且包含connections:write。 - 直连通道未启动:确认没有设置
SLACK_CHANNEL_DIRECT_ENABLED=false。