OpenClaw Slack 渠道
通过 Socket Mode(默认)或 HTTP Events API 将 OpenClaw 连接到 Slack。这个企业级集成让你的 AI 助手在 Slack 工作区中运行 — 处理私信、频道对话、表情回应、线程和斜杠命令。Socket Mode 通过 WebSocket 连接,无需公网 URL;HTTP 模式使用 Slack Events API,适用于公网可访问的部署。
Slack 支持的功能
文本消息
支持
媒体与文件
支持
消息反应
支持
消息线程
支持
语音消息
不支持
群聊
支持
Slack 前置条件
- 拥有管理员权限的 Slack 工作区(用于安装自定义应用)
- 在 api.slack.com/apps 创建的 Slack 应用
- App Token(xapp-...),需具有 connections:write 权限范围(Socket Mode 需要)
- Bot Token(xoxb-...),安装应用到工作区后获取
- OpenClaw Gateway 已运行并配置
Slack 快速设置
创建 Slack 应用并启用 Socket Mode
前往 api.slack.com/apps,点击 'Create New App' → 'From scratch'。为应用命名并选择你的工作区。在侧栏中进入 'Socket Mode' 并启用。生成一个具有 'connections:write' 权限范围的 App-Level Token — 这就是 xapp-... Token。
配置 OAuth 权限范围并安装到工作区
进入 'OAuth & Permissions',添加必需的 Bot Token Scopes(chat:write、channels:history、channels:read、im:write、im:history、im:read、users:read、reactions:read、reactions:write、files:write 等)。点击 'Install to Workspace' 并授权。复制 Bot User OAuth Token(xoxb-...)。然后进入 'Event Subscriptions',启用事件订阅并订阅:message.channels、message.groups、message.im、message.mpim、app_mention、reaction_added、reaction_removed。
添加配置、启动 Gateway 并邀请机器人
将 Slack 渠道配置添加到 ~/.openclaw/openclaw.json,填入 appToken 和 botToken。启动 Gateway — 它将通过 Socket Mode 连接到 Slack。在 Slack 中输入 '/invite @你的机器人名' 将机器人邀请到目标频道。发送消息进行测试。
Slack 配置示例
{
"channels": {
"slack": {
"enabled": true,
"appToken": "xapp-1-YOUR_APP_TOKEN",
"botToken": "xoxb-YOUR_BOT_TOKEN"
}
}
}Slack 深入了解
架构概述
创建 Slack 应用
私信安全(配对机制)
{
"channels": {
"slack": {
"enabled": true,
"appToken": "xapp-...",
"botToken": "xoxb-...",
"dm": {
"policy": "pairing",
"allowFrom": ["U01ABCDEF", "user@company.com"]
}
}
}
}频道配置(群组策略)
{
"channels": {
"slack": {
"groupPolicy": "allowlist",
"channels": {
"C01ABCDEF": {
"allow": true,
"requireMention": true,
"users": ["U01ABCDEF"],
"skills": ["search", "docs"],
"systemPrompt": "保持简短和技术性的回答。"
},
"#general": {
"allow": true,
"requireMention": true
}
}
}
}
}回复线程
{
"channels": {
"slack": {
"replyToMode": "off",
"replyToModeByChatType": {
"direct": "all",
"group": "first",
"channel": "off"
}
}
}
}用户 Token(可选)
{
"channels": {
"slack": {
"enabled": true,
"appToken": "xapp-...",
"botToken": "xoxb-...",
"userToken": "xoxp-...",
"userTokenReadOnly": true
}
}
}斜杠命令和 App Home
{
"channels": {
"slack": {
"slashCommand": {
"enabled": true,
"name": "openclaw",
"sessionPrefix": "slack:slash",
"ephemeral": true
}
}
}
}权限范围(Scopes)
HTTP 模式(Events API)
{
"channels": {
"slack": {
"enabled": true,
"mode": "http",
"botToken": "xoxb-...",
"signingSecret": "your-signing-secret",
"webhookPath": "/slack/events"
}
}
}高级配置
{
"channels": {
"slack": {
"historyLimit": 50,
"textChunkLimit": 4000,
"chunkMode": "newline",
"mediaMaxMb": 20,
"actions": {
"reactions": true,
"messages": true,
"pins": true,
"memberInfo": true,
"emojiList": true
}
}
}
}Slack 配置参考
| Key | Type | Default | Description |
|---|---|---|---|
| enabled | boolean | true | 启用或禁用 Slack 渠道 |
| mode | string | "socket" | 连接模式。选项:socket(Socket Mode,默认)、http(Events API) |
| appToken | string | "" | Slack App-Level Token(xapp-...),Socket Mode 需要。也可使用 SLACK_APP_TOKEN 环境变量 |
| botToken | string | "" | Slack Bot User OAuth Token(xoxb-...)。也可使用 SLACK_BOT_TOKEN 环境变量 |
| userToken | string | "" | 可选的 Slack User Token(xoxp-...),用于增强读取权限 |
| userTokenReadOnly | boolean | true | 限制 User Token 为只读操作。设为 false 允许以安装用户身份执行写操作 |
| signingSecret | string | "" | HTTP 模式请求验证的 Signing Secret(来自 Basic Information → App Credentials) |
| webhookPath | string | "/slack/events" | HTTP 模式的 Webhook 端点路径 |
| dm.policy | string | "pairing" | 私信访问控制策略。选项:pairing(基于配对码审批)、open(任何人可私信) |
| dm.allowFrom | string[] | [] | 允许向机器人发私信的用户。支持用户 ID、@用户名、邮箱和通配符(*) |
| dm.enabled | boolean | true | 是否接受私信 |
| dm.groupEnabled | boolean | false | 启用群组私信(MPIM)处理 |
| dm.groupChannels | string[] | [] | 允许的群组私信频道 ID |
| groupPolicy | string | "open" | 频道处理策略。选项:open(所有频道)、disabled(无频道)、allowlist(仅配置的频道) |
| channels.<id>.allow | boolean | true | 在 allowlist 模式下允许或拒绝此频道 |
| channels.<id>.requireMention | boolean | false | 机器人是否需要 @提及才在此频道中响应 |
| channels.<id>.users | string[] | [] | 此频道的用户允许列表(ID、@用户名或邮箱) |
| channels.<id>.skills | string[] | [] | 限制此频道可用的技能(空 = 所有技能) |
| channels.<id>.systemPrompt | string | "" | 此频道的自定义 AI 系统提示 |
| channels.<id>.allowBots | boolean | false | 在此频道中处理来自其他机器人的消息 |
| replyToMode | string | "off" | 回复线程模式。选项:off(主频道)、first(首条回复线程化)、all(所有回复线程化) |
| replyToModeByChatType | object | {} | 按聊天类型覆盖线程模式。键:direct、group、channel。值:off、first、all |
| reactionNotifications | string | "off" | 哪些表情回应触发 Agent 通知。选项:off、own、all |
| historyLimit | number | 50 | AI 上下文中包含的最近消息数量。设为 0 禁用 |
| textChunkLimit | number | 4000 | 长 AI 回复每条消息的最大字符数 |
| chunkMode | string | "split" | 长回复的分割方式。选项:split(硬字符限制)、newline(段落边界) |
| mediaMaxMb | number | 20 | 最大媒体文件大小(MB) |
| slashCommand.enabled | boolean | true | 启用斜杠命令处理 |
| slashCommand.name | string | "openclaw" | 斜杠命令名称(不含 /) |
| slashCommand.ephemeral | boolean | true | 斜杠命令响应是否仅对调用者可见 |
启用或禁用 Slack 渠道
连接模式。选项:socket(Socket Mode,默认)、http(Events API)
Slack App-Level Token(xapp-...),Socket Mode 需要。也可使用 SLACK_APP_TOKEN 环境变量
Slack Bot User OAuth Token(xoxb-...)。也可使用 SLACK_BOT_TOKEN 环境变量
可选的 Slack User Token(xoxp-...),用于增强读取权限
限制 User Token 为只读操作。设为 false 允许以安装用户身份执行写操作
HTTP 模式请求验证的 Signing Secret(来自 Basic Information → App Credentials)
HTTP 模式的 Webhook 端点路径
私信访问控制策略。选项:pairing(基于配对码审批)、open(任何人可私信)
允许向机器人发私信的用户。支持用户 ID、@用户名、邮箱和通配符(*)
是否接受私信
启用群组私信(MPIM)处理
允许的群组私信频道 ID
频道处理策略。选项:open(所有频道)、disabled(无频道)、allowlist(仅配置的频道)
在 allowlist 模式下允许或拒绝此频道
机器人是否需要 @提及才在此频道中响应
此频道的用户允许列表(ID、@用户名或邮箱)
限制此频道可用的技能(空 = 所有技能)
此频道的自定义 AI 系统提示
在此频道中处理来自其他机器人的消息
回复线程模式。选项:off(主频道)、first(首条回复线程化)、all(所有回复线程化)
按聊天类型覆盖线程模式。键:direct、group、channel。值:off、first、all
哪些表情回应触发 Agent 通知。选项:off、own、all
AI 上下文中包含的最近消息数量。设为 0 禁用
长 AI 回复每条消息的最大字符数
长回复的分割方式。选项:split(硬字符限制)、newline(段落边界)
最大媒体文件大小(MB)
启用斜杠命令处理
斜杠命令名称(不含 /)
斜杠命令响应是否仅对调用者可见
Slack 常见问题
Slack 故障排查
频道被 groupPolicy 阻止,或机器人不在允许列表中,或机器人未被邀请到频道。
私信策略设为 'pairing' 且发送者未被审批,或 App Home 中未启用 Messages Tab。
App Token(xapp-...)无效或已过期,或服务器与 Slack 之间存在网络问题。
Bot Token 缺少必需的 OAuth 权限范围,或 Token 已被撤销/重新生成。
未在 Slack API 门户中创建斜杠命令,或请求 URL 配置错误(HTTP 模式)。
较长的 AI 回复超过了 OpenClaw 的 textChunkLimit(默认 4,000 字符),会被自动分成多条消息发送。注意:Slack 自身的限制为每个 section block 3,000 字符,每条消息 text 字段 40,000 字符。