Skip to content

Slack 平台接入

Slack 相关代码已具备基础输出与 Socket Mode 处理能力,但应用层尚未像 Feishu 一样完成完整接线。

当前代码能力

模块作用
src/slack/slack-socket-mode-app.ts处理 Socket Mode 启动与接线
src/slack/slack-message-handler.ts解析 Slack 消息并路由命令
src/slack/channel/*将统一输出渲染为 Slack 消息与更新

目标接入方式

项目方案
事件接收Socket Mode
消息类型message / app_mention
交互类型block_actions
输出方式chat.postMessage / chat.update / reactions.* / Stream API

飞书 Card 到 Slack Block Kit 的映射

Slack 没有“@ bot 后直接弹出平台内建帮助卡片”的机制,因此帮助面板必须作为应用自己发送的一条 Block Kit 消息来承载,再通过 block_actions 原地更新。

Feishu 能力Slack 落地
@bot 空消息直接回帮助卡app_mention / message 命中空文本后,由 slack-message-handler 主动发送帮助面板消息
卡片内面板切换同一条消息通过 chat.update 原地切换 Block Kit blocks
card.action.triggerblock_actions
主帮助卡首页Block Kit header + section + actions
子面板(线程/历史/技能/后端/turn)同一消息的不同 blocks 视图
卡片表单优先改为命令驱动或 modal;当前线程创建先用帮助面板按钮 + 独立表单消息
卡片内审批按钮继续沿用现有 Block Kit button action

约束:

  • 仍然遵守路径 A:Slack 平台入口接收事件,平台层解析后调用共享命令或 orchestrator,再由 Slack 输出层渲染。
  • 不引入 Slack 专属后端身份或线程状态持久化字段。
  • 帮助面板只做 UI 导航,不改变 projectId -> threadRecord -> backendIdentity 的主数据流。

创建 Slack App

步骤操作
1在 Slack 开发者后台创建 App
2启用 Bot User
3启用 Socket Mode
4创建 App-level Token
5配置 Bot Token Scopes
6配置 Event Subscriptions 与 Interactivity
7将应用安装到目标 Workspace

需要的 Token

Token用途
Bot User OAuth Token (xoxb-)调用 chat.postMessagechat.updatereactions.* 等 Web API
App-level Token (xapp-)Socket Mode 建立 WebSocket 连接
dotenv
SLACK_BOT_TOKEN=xoxb-xxx
SLACK_APP_TOKEN=xapp-xxx

建议权限范围

Scope用途
app_mentions:read接收 app_mention 事件
chat:write发送与更新消息
reactions:write添加/移除 emoji reaction
channels:history读取公有频道消息事件
groups:history读取私有频道消息事件
im:history读取 DM 消息事件
mpim:history读取多人私信消息事件
connections:writeSocket Mode 建立连接(App-level Token)

如果只计划通过 app_mention 驱动命令,可先最小化配置 app_mentions:read + chat:write,再根据接入范围补 *:history

事件与交互

配置项
Bot Eventapp_mention
Bot Eventmessage.channels
Bot Eventmessage.groups
Bot Eventmessage.im
Bot Eventmessage.mpim
Interactivity启用 Block Actions
Socket Mode启用

与当前代码的对应关系

Slack 能力代码位置
接收 events_api / interactiveslack-socket-handler.ts
处理 message / app_mentionslack-socket-handler.ts
处理 block_actionsslack-socket-handler.ts
发消息chat.postMessage
更新消息chat.update
流式消息chat.startStream / chat.appendStream / chat.stopStream
reactionreactions.add / reactions.remove

当前状态说明

项目状态
底层包已存在
应用层 handler未完成
src/server.ts 装配未完成
生产可用性需补完整接线与实测
bash
rg -n "slack" packages/channel-slack src