Appearance
Slack
状态:生产就绪,支持私信和频道,通过 Slack 应用集成。默认使用 Socket Mode,也支持 HTTP Events API 模式。
快速配置
Socket Mode(默认,推荐)
Socket Mode 无需公开的 Webhook URL,适合在防火墙后或本地运行 Gateway。
步骤 1:创建 Slack 应用并获取 Token
在 Slack 应用设置中:
- 启用 Socket Mode
- 创建 App Token(
xapp-...),赋予connections:write权限 - 安装应用并复制 Bot Token(
xoxb-...)
订阅以下 Bot 事件:
app_mentionmessage.channels、message.groups、message.im、message.mpimreaction_added、reaction_removed
还需启用 App Home 的 Messages Tab(用于私信)。
步骤 2:配置 OpenClaw
json5
{
channels: {
slack: {
enabled: true,
mode: "socket",
appToken: "xapp-...",
botToken: "xoxb-...",
},
},
}环境变量备选(仅默认账户):
bash
SLACK_APP_TOKEN=xapp-...
SLACK_BOT_TOKEN=xoxb-...步骤 3:启动 Gateway
bash
openclaw gatewayHTTP Events API 模式
如果你需要使用 HTTP 模式(需要公开 URL):
json5
{
channels: {
slack: {
enabled: true,
mode: "http",
botToken: "xoxb-...",
signingSecret: "your-signing-secret",
webhookPath: "/slack/events",
},
},
}在 Slack 应用设置中,将 Event Subscriptions、Interactivity、Slash command 的 Request URL 都指向同一个路径(默认 /slack/events)。
Token 说明
| Token 类型 | 用途 | 必须性 |
|---|---|---|
botToken(xoxb-...) | 发送消息等 Bot 操作 | Socket 和 HTTP 模式都需要 |
appToken(xapp-...) | Socket Mode 连接 | 仅 Socket Mode 需要 |
signingSecret | 验证 HTTP 请求签名 | 仅 HTTP 模式需要 |
可选:添加 chat:write.customize 权限,让发出消息显示为自定义 Bot 名称和图标。
访问控制
私信策略(dmPolicy)
channels.slack.dmPolicy 控制私信访问:
pairing(默认)allowlistopen(需要allowFrom: ["*"])disabled
json5
{
channels: {
slack: {
dmPolicy: "allowlist",
allowFrom: ["U123456789"],
dm: { enabled: true },
},
},
}审批配对:
bash
openclaw pairing approve slack <CODE>频道策略(groupPolicy)
控制公共/私有频道行为:
open:任何频道都可以allowlist:只允许channels.slack.channels中配置的频道disabled:禁用频道消息
json5
{
channels: {
slack: {
groupPolicy: "allowlist",
channels: {
"#engineering": { allow: true, requireMention: true },
"#general": { allow: true, requireMention: true },
},
},
},
}安全提示:默认按用户 ID 授权。不要开启
dangerouslyAllowNameMatching: true,除非你明确接受按用户名匹配的风险。
Mention 行为
频道消息默认需要 @mention Bot(<@botId>)才会响应。
可按频道关闭:
json5
{
channels: {
slack: {
channels: {
"#my-channel": {
allow: true,
requireMention: false,
},
},
},
},
}斜杠命令
Slack 原生斜杠命令默认关闭(不同于 Telegram/Discord)。
启用方式:
json5
{
channels: {
slack: {
commands: { native: true },
},
},
}注意:在 Slack 中注册命令时,状态命令需注册为
/agentstatus(因为 Slack 保留了/status)。
单命令模式(轻量级替代方案):
json5
{
channels: {
slack: {
slashCommand: {
enabled: true,
name: "openclaw",
sessionPrefix: "slack:slash",
ephemeral: true,
},
},
},
}消息线程
- 私信:路由为
direct - 公共/私有频道:路由为
channel - 群组私信(MPIM):路由为
group
线程回复控制(channels.slack.replyToMode):
off(默认):不自动在线程中回复first:回复第一条消息所在线程all:总是在线程中回复
注意:
replyToMode: "off"会禁用 Slack 的所有线程功能,包括手动[[reply_to_*]]标签。这与 Telegram 的行为不同——Telegram 的"off"模式仍允许显式标签。
完整配置示例
json5
{
channels: {
slack: {
enabled: true,
botToken: "xoxb-REPLACE_ME",
appToken: "xapp-REPLACE_ME",
dmPolicy: "allowlist",
allowFrom: ["U123456789"],
channels: {
"#general": { allow: true, requireMention: true },
"#engineering": { allow: true, requireMention: true },
},
dm: { enabled: true },
},
},
}