Skip to content

Slack

Slack 接入使用 Socket Mode,用户可在频道中 @ App、给 App 发私信或在线程中继续对话,回复会回到原频道或原线程;默认由本地服务直连 Slack,除非设置 SLACK_CHANNEL_DIRECT_ENABLED=false

使用方式

方式触发方式说明
频道 @ App在频道中 @ App 并输入问题适合团队在频道里查询设备、处理告警或下发控制命令。
私信 App直接给 App 发私信适合个人远程查询和控制设备。
线程回复在 App 回复的线程中继续提问适合把一次设备排查或操作过程保持在同一个 Slack 线程里。

在 Slack 后台准备 App

  1. 在 Slack API Apps 中创建 App。
  2. OAuth & Permissions → Bot Token Scopes 添加:
    • chat:write
    • app_mentions:read
    • im:history
  3. Event Subscriptions 中订阅 Bot Events:
    • app_mention
    • message.im
  4. 打开 Socket Mode。
  5. Basic Information → App-Level Tokens 创建 token,scope 选择 connections:write,复制 xapp-...
  6. OAuth & Permissions → Install to Workspace,复制 Bot User OAuth Token,通常形如 xoxb-...
  7. Basic Information 中复制 Signing Secret。

在控制台填写配置

打开 设置 → IM 通道 → Slack,填写以下字段:

字段.env说明
启用SLACK_ENABLED是否启动 Slack 通道
Bot TokenSLACK_BOT_TOKENxoxb-...
App TokenSLACK_APP_TOKENxapp-...,需要 connections:write
Signing SecretSLACK_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

保存后重启服务,配置才会生效。

验证接入

  1. 确认服务已重启。
  2. 日志中出现 Slack: enabledChannel started (Socket Mode)
  3. 在频道中 @ App,或给 App 发私信。
  4. 如果启用了白名单,确认发送者 Slack 用户 ID 已写入白名单。

频道消息会在原线程中回复;私信会直接回复到私信会话中。

常见检查项

  • 私信无响应:确认订阅了 message.im,并重新安装 App 到 workspace。
  • 频道无响应:确认消息中 @ 了 App,并且 App 已加入频道。
  • Socket Mode 无法启动:确认 SLACK_APP_TOKENxapp-...,且包含 connections:write
  • 直连通道未启动:确认没有设置 SLACK_CHANNEL_DIRECT_ENABLED=false