前言
Slack 是企业团队最常用的协作工具之一。将 OpenClaw 连接到 Slack,可以为团队提供一个随时可用的 AI 助手,帮助回答问题、生成内容和处理日常任务。本文将详细讲解从创建 Slack App 到完成连接的全过程。
前置条件
- OpenClaw 已安装并正常运行
- 你拥有 Slack 工作区的管理员权限
- 工作区允许安装自定义应用
连接方式选择
OpenClaw 支持两种方式连接 Slack:
| 方式 | 说明 | 适用场景 |
|---|---|---|
| Socket Mode | 通过 WebSocket 连接,无需公网地址 | 本地部署、内网环境 |
| Event Subscriptions | 通过 HTTP Webhook 接收事件 | 公网服务器、生产环境 |
推荐新手使用 Socket Mode,配置简单且不需要公网 IP 或域名。
第一步:创建 Slack App
1.1 访问 Slack API 平台
打开 Slack API,点击 Create New App。
1.2 选择创建方式
选择 From scratch(从头创建):
- 输入应用名称:如 "OpenClaw Assistant"
- 选择要安装到的工作区
- 点击 Create App
1.3 基本信息设置
在 Basic Information 页面:
- 上传应用图标
- 填写应用描述
- 记下 Signing Secret,后面配置需要用到
第二步:配置权限和事件
2.1 设置 Bot Token Scopes
在左侧菜单点击 OAuth & Permissions,滚动到 Bot Token Scopes,添加以下权限:
所需 Bot Token Scopes:
├── app_mentions:read - 读取 @提及消息
├── channels:history - 读取公开频道消息历史
├── channels:read - 查看公开频道信息
├── chat:write - 发送消息
├── groups:history - 读取私有频道消息历史
├── groups:read - 查看私有频道信息
├── im:history - 读取私信历史
├── im:read - 查看私信信息
├── im:write - 发送私信
├── mpim:history - 读取群组私信历史
├── reactions:write - 添加表情反应
├── users:read - 查看用户信息
└── files:read - 读取文件(可选,用于处理上传的文件)
2.2 配置 Event Subscriptions
在左侧菜单点击 Event Subscriptions,开启 Enable Events。
使用 Socket Mode(推荐)
如果选择 Socket Mode,无需填写 Request URL。在左侧菜单点击 Socket Mode,开启它:
- 点击 Enable Socket Mode
- 为 App-Level Token 命名(如 "openclaw-socket")
- 添加 scope:
connections:write - 点击 Generate,保存生成的 Token(以
xapp-开头)
使用 Event Subscriptions HTTP 方式
如果选择 HTTP 方式,需要先启动 OpenClaw 并确保公网可访问,然后在 Request URL 填入:
https://your-domain.com/webhook/slack/events
2.3 订阅 Bot Events
在 Event Subscriptions 页面的 Subscribe to bot events 部分,添加以下事件:
| 事件 | 说明 |
|---|---|
app_mention |
有人 @Bot 时触发 |
message.channels |
公开频道有新消息 |
message.groups |
私有频道有新消息 |
message.im |
私信有新消息 |
message.mpim |
群组私信有新消息 |
点击 Save Changes 保存。
第三步:安装应用到工作区
- 回到 OAuth & Permissions 页面
- 点击 Install to Workspace
- 审核权限并点击 Allow
- 安装成功后,复制 Bot User OAuth Token(以
xoxb-开头)
第四步:配置 OpenClaw
4.1 Socket Mode 配置
编辑 ~/.config/openclaw/openclaw.json5:
{
channels: {
slack: {
enabled: true,
// Bot User OAuth Token(xoxb- 开头)
botToken: "xoxb-1234567890-1234567890123-AbCdEfGhIjKlMnOpQrStUv",
// App-Level Token(xapp- 开头,Socket Mode 必须)
appToken: "xapp-1-A1234567890-1234567890123-abcdef1234567890abcdef",
// Signing Secret(从 Basic Information 页面获取)
signingSecret: "abc123def456ghi789",
// 连接模式
mode: "socket", // "socket" 或 "http"
// 触发配置
trigger: {
// 是否需要 @Bot 才回复
mentionRequired: true,
// 是否响应私信(不需要 @)
dmEnabled: true,
// 自定义触发关键词(可选)
keywords: ["ask", "问"]
}
}
}
}
4.2 HTTP 模式配置
如果使用 HTTP 模式:
{
channels: {
slack: {
enabled: true,
botToken: "xoxb-xxxx",
signingSecret: "your-signing-secret",
mode: "http",
// HTTP 模式下的 Webhook 路径
webhookPath: "/webhook/slack/events"
}
}
}
4.3 通过环境变量配置
export SLACK_BOT_TOKEN="xoxb-1234567890-xxxxx"
export SLACK_APP_TOKEN="xapp-1-A1234567890-xxxxx"
export SLACK_SIGNING_SECRET="abc123def456"
4.4 重启并验证
openclaw restart
# 查看 Slack 频道的连接日志
openclaw logs -f --component channel:slack
成功连接后的日志:
[INFO] [channel:slack] Socket Mode 连接已建立
[INFO] [channel:slack] Bot 已登录为 @OpenClaw Assistant
[INFO] [channel:slack] 监听工作区: Your Workspace
第五步:在 Slack 中使用
邀请 Bot 到频道
Bot 安装后默认不在任何频道中。你需要手动邀请:
- 进入目标频道
- 输入
/invite @OpenClaw Assistant - 或者在频道设置 → 集成 → 添加应用
交互方式
# 在频道中 @Bot 提问
@OpenClaw Assistant 请帮我写一个 Python 排序算法
# 私信直接对话(无需 @)
你好,帮我翻译这段英文
# 在帖子中继续对话
(在 Bot 回复的帖子中直接发消息即可继续上下文对话)
帖子回复配置
Slack 的帖子(Thread)是管理对话的好方式。你可以配置 Bot 的回复行为:
{
channels: {
slack: {
reply: {
// 是否在帖子中回复(避免刷屏)
threadReply: true,
// 帖子回复后是否同时在频道中显示
broadcastReply: false,
// 处理中显示"正在输入"状态
showTyping: true,
// 发送前先添加一个思考中的表情
thinkingEmoji: "thinking_face",
// 回复完成后添加确认表情
doneEmoji: "white_check_mark"
}
}
}
}
频道和权限控制
限制 Bot 工作的频道
{
channels: {
slack: {
// 只在指定频道中响应
allowedChannels: ["C01234ABCDE", "C05678FGHIJ"],
// 或者用频道名
allowedChannelNames: ["ai-assistant", "bot-testing"],
// 忽略的频道
ignoredChannels: ["C09999XXXXX"]
}
}
}
限制可以使用 Bot 的用户
{
channels: {
slack: {
// 允许的用户 ID 列表(空数组表示允许所有人)
allowedUsers: [],
// 管理员用户(可以执行管理命令)
adminUsers: ["U01234ADMIN"]
}
}
}
工作区权限审批
在企业级 Slack 工作区中,安装应用可能需要管理员审批:
- 工作区管理员前往 管理应用 页面
- 在待审批列表中找到 OpenClaw Assistant
- 审核权限范围后点击批准
- 批准后应用才能正常工作
故障排查
Bot 不响应消息
# 检查连接状态
openclaw logs --level error --component channel:slack
# 常见原因:
# 1. Bot 没有被邀请到频道
# 2. Message Content 事件未订阅
# 3. Token 不正确或已过期
Socket Mode 连接失败
# 确认 App-Level Token 正确
# 确认 Socket Mode 已在 Slack API 平台开启
# 检查网络连接(Socket Mode 需要访问 wss://wss-primary.slack.com)
HTTP 模式验证失败
# 确认 Signing Secret 正确
# 确认 Request URL 可以从公网访问
# 确认 OpenClaw 正在运行且端口已开放
总结
将 OpenClaw 连接到 Slack 的核心步骤:
- 在 Slack API 平台创建应用并配置权限
- 选择 Socket Mode 或 HTTP 模式
- 获取 Bot Token、App Token 和 Signing Secret
- 在 OpenClaw 配置文件中填入凭据
- 重启服务并邀请 Bot 到目标频道
Socket Mode 更适合快速上手和内网部署,HTTP 模式则适合有公网地址的生产环境。