Skip to content

Slack 平台接入

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

当前代码能力

模块作用
packages/channel-slack/src/slack-socket-handler.ts处理 Socket Mode 事件
packages/channel-slack/src/slack-message-client.ts调用 Slack Web API
packages/channel-slack/src/slack-output-adapter.ts将统一输出渲染为 Slack Block Kit / Stream API

Slack 接入概览占位图

Placeholder:在这里插入 Slack App 配置总览截图,标出 Socket Mode、OAuth、Event Subscriptions 入口。

目标接入方式

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

创建 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

Slack 创建应用步骤占位图

Placeholder:在这里插入 Slack App 创建流程截图,建议展示 Socket Mode 与 OAuth 页面。

需要的 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

Slack Scope 配置占位图

Placeholder:在这里插入 OAuth Scope 页面截图,建议圈出最小权限集合。

事件与交互

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

Slack 事件配置占位图

Placeholder:在这里插入 Event Subscriptions 与 Interactivity 配置截图。

与当前代码的对应关系

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

Slack 验证视频占位图

Placeholder:在这里插入 Slack 接入验证录屏;如果尚未完成,可替换为“待补录”说明视频封面。