OpenClaw 支持通过 Slack App 接入工作区,默认使用 Socket Mode(无需公网 IP),也支持 HTTP Events API 模式。
快速接入(Socket Mode,推荐)
第一步:创建 Slack App 并获取 Token
在 Slack API 平台:
- 创建新 App(选择 From scratch)
- 开启 Socket Mode
- 创建 App Token(
xapp-...),需要connections:write权限 - 安装 App 到工作区,复制 Bot Token(
xoxb-...)
第二步:订阅 Bot 事件
在 Event Subscriptions 中添加 Bot Events:
app_mentionmessage.channels、message.groups、message.im、message.mpimreaction_added、reaction_removedmember_joined_channel、member_left_channel
还需开启 App Home → Messages Tab(用于 DM)。
第三步:配置 OpenClaw
{
"channels": {
"slack": {
"enabled": true,
"mode": "socket",
"appToken": "xapp-...",
"botToken": "xoxb-..."
}
}
}环境变量方式(默认账号):
SLACK_APP_TOKEN=xapp-...
SLACK_BOT_TOKEN=xoxb-...第四步:启动 Gateway
openclaw gatewayHTTP Events API 模式
需要公网 URL 时使用:
{
"channels": {
"slack": {
"enabled": true,
"mode": "http",
"botToken": "xoxb-...",
"signingSecret": "your-signing-secret",
"webhookPath": "/slack/events"
}
}
}在 Slack App 设置中将 Event Subscriptions、Interactivity、Slash Commands 的 Request URL 都指向同一路径(默认 /slack/events)。
Token 说明
| Token | 用途 |
|---|---|
botToken(xoxb-...) | Socket/HTTP 模式都需要 |
appToken(xapp-...) | Socket 模式必须 |
signingSecret | HTTP 模式必须 |
userToken(xoxp-...) | 可选,读取工作区信息 |
添加
chat:write.customize权限可让 Bot 消息显示 Agent 的自定义名称和图标。
访问控制
DM 策略
{
"channels": {
"slack": {
"dmPolicy": "pairing",
"allowFrom": ["U1234567890"]
}
}
}| 策略 | 说明 |
|---|---|
pairing(默认) | 首次 DM 需要配对审批 |
allowlist | 仅 allowFrom 中的用户 ID |
open | allowFrom 包含 "*" 时开放 |
disabled | 拒绝所有 DM |
频道策略
{
"channels": {
"slack": {
"groupPolicy": "allowlist",
"channels": {
"C1234567890": {
"requireMention": false,
"users": ["U1234567890", "U0987654321"]
}
}
}
}
}频道默认需要 @ 提及 Bot(requireMention: true)。
配对审批
openclaw pairing list slack
openclaw pairing approve slack <CODE>Session 机制
| 场景 | Session Key |
|---|---|
| DM | agent:main:main(默认) |
| 频道 | agent:<id>:slack:channel:<channelId> |
| 线程 | agent:<id>:slack:channel:<channelId>:thread:<threadTs> |
| 斜杠命令 | agent:<id>:slack:slash:<userId> |
线程配置
{
"channels": {
"slack": {
"thread": {
"historyScope": "thread",
"inheritParent": false,
"initialHistoryLimit": 20
},
"replyToMode": "first"
}
}
}注意:
replyToMode: "off"会禁用所有回复线程,包括显式的[[reply_to_current]]标签。这与 Telegram 不同(Telegram 显式标签在 off 模式下仍有效)。
确认反应(Ack Reaction)
收到消息后立即添加 emoji 表示处理中:
{
"channels": {
"slack": {
"ackReaction": "eyes",
"typingReaction": {
"enabled": true,
"emoji": "writing_hand"
}
}
}
}ackReaction:使用 Slack 表情简码(如"eyes",不含冒号)typingReaction:处理期间显示,完成后自动移除
媒体与分块
{
"channels": {
"slack": {
"textChunkLimit": 4000,
"chunkMode": "newline",
"mediaMaxMb": 20
}
}
}斜杠命令
{
"channels": {
"slack": {
"commands": { "native": true },
"slashCommand": { "enabled": true, "name": "openclaw" }
}
}
}在 Slack 中注册
/agentstatus(而不是/status,因为 Slack 保留了该名称)。
故障排查
Bot 无响应:确认订阅了 message.im 事件;确认 App Home Messages Tab 已开启
频道消息被忽略:检查 groupPolicy 和 channels 白名单;默认需要 @ 提及
配对失败:openclaw logs --follow 查看实时日志;确认 Bot Token 有效
原文:Slack - OpenClaw | 来源:OpenClaw 官方文档