OpenClaw

OpenClaw Slack 渠道

企业平台
中等

通过 Socket Mode(默认)或 HTTP Events API 将 OpenClaw 连接到 Slack。这个企业级集成让你的 AI 助手在 Slack 工作区中运行 — 处理私信、频道对话、表情回应、线程和斜杠命令。Socket Mode 通过 WebSocket 连接,无需公网 URL;HTTP 模式使用 Slack Events API,适用于公网可访问的部署。

快速信息
难度中等
分类企业平台
支持功能数5 / 6

Slack 支持的功能

文本消息

支持

媒体与文件

支持

消息反应

支持

消息线程

支持

语音消息

不支持

群聊

支持

Slack 前置条件

  • 拥有管理员权限的 Slack 工作区(用于安装自定义应用)
  • 在 api.slack.com/apps 创建的 Slack 应用
  • App Token(xapp-...),需具有 connections:write 权限范围(Socket Mode 需要)
  • Bot Token(xoxb-...),安装应用到工作区后获取
  • OpenClaw Gateway 已运行并配置

Slack 快速设置

1

创建 Slack 应用并启用 Socket Mode

前往 api.slack.com/apps,点击 'Create New App' → 'From scratch'。为应用命名并选择你的工作区。在侧栏中进入 'Socket Mode' 并启用。生成一个具有 'connections:write' 权限范围的 App-Level Token — 这就是 xapp-... Token。

2

配置 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。

3

添加配置、启动 Gateway 并邀请机器人

将 Slack 渠道配置添加到 ~/.openclaw/openclaw.json,填入 appToken 和 botToken。启动 Gateway — 它将通过 Socket Mode 连接到 Slack。在 Slack 中输入 '/invite @你的机器人名' 将机器人邀请到目标频道。发送消息进行测试。

Slack 配置示例

config.json
{
  "channels": {
    "slack": {
      "enabled": true,
      "appToken": "xapp-1-YOUR_APP_TOKEN",
      "botToken": "xoxb-YOUR_BOT_TOKEN"
    }
  }
}

Slack 深入了解

架构概述

OpenClaw 通过两种模式连接 Slack: • Socket Mode(默认)— 从你的服务器向 Slack 发起 WebSocket 连接。无需公网 URL 或防火墙配置。适用于开发、内部部署和 NAT 后的环境。 • HTTP 模式(Events API)— Slack 将事件推送到你服务器的 HTTPS 端点。需要公网可访问的 URL。更适合带有负载均衡的高可用生产部署。 两种模式下,机器人都会接收实时事件(消息、表情回应、@提及)并通过 Slack API 响应。会话路由取决于上下文:私信使用 Agent 的主会话,频道对话为每个频道创建隔离会话(agent:<agentId>:slack:channel:<channelId>),斜杠命令获得每用户独立会话。
Socket Mode 推荐用于大多数自托管场景 — 无需任何网络配置即可在防火墙和 NAT 后工作。
可通过环境变量设置 Token:SLACK_APP_TOKEN 和 SLACK_BOT_TOKEN,或在配置文件中设置。

创建 Slack 应用

设置 Slack 应用需要在 Slack API 门户中配置多个组件: 1. 前往 api.slack.com/apps,点击 'Create New App' → 'From scratch' 2. 为应用命名并选择目标工作区 3. 启用 Socket Mode(Settings → Socket Mode → Enable)。生成具有 connections:write 权限的 App-Level Token 4. 在 OAuth & Permissions 下添加 Bot Token Scopes: • chat:write、im:write — 发送和管理消息 • channels:history、groups:history、im:history、mpim:history — 读取消息历史 • channels:read、groups:read、im:read、mpim:read — 读取对话信息 • users:read — 查询用户资料 • reactions:read、reactions:write — 管理表情回应 • pins:read、pins:write — 管理置顶消息 • emoji:read — 列出自定义表情 • files:write — 上传文件 5. 将应用安装到工作区并复制 Bot Token(xoxb-...) 6. 启用 Event Subscriptions 并订阅机器人事件: • message.channels、message.groups、message.im、message.mpim • app_mention • reaction_added、reaction_removed • member_joined_channel、member_left_channel • channel_rename、pin_added、pin_removed 7. 可选:在 Slash Commands 下创建 /openclaw 斜杠命令 8. 在 App Home 中启用 Messages Tab 以支持私信 提示:在创建应用时可使用提供的 App Manifest 一次性自动配置所有权限范围和事件。
妥善保管你的 Token。App Token(xapp-...)和 Bot Token(xoxb-...)可完全控制你的应用。如果泄露,请立即在 Slack API 门户中重新生成。
创建应用时使用 Manifest 选项可一步设置所有必需的权限范围、事件和功能。
确保启用 Event Subscriptions 并订阅必需的机器人事件。否则机器人会连接成功但无法接收任何消息。

私信安全(配对机制)

Slack 私信策略控制谁可以与你的 AI 助手进行私信交互。OpenClaw 支持两种模式: • pairing(默认)— 未知的私信发送者会收到一个限时配对码(1 小时过期)。通过 'openclaw pairing approve slack <code>' 在终端中审批。审批通过后即可自由对话。每个渠道最多 3 个待处理的配对请求。 • open — 任何人向机器人发私信都会得到回复。需要设置 dm.allowFrom=["*"] 才能生效。在大型工作区中谨慎使用。 允许列表支持多种格式: • Slack 用户 ID(如 "U01ABCDEF") • @用户名引用 • 电子邮件地址 可通过 'openclaw pairing list slack' 查看待处理的配对请求。
openclaw.json
{
  "channels": {
    "slack": {
      "enabled": true,
      "appToken": "xapp-...",
      "botToken": "xoxb-...",
      "dm": {
        "policy": "pairing",
        "allowFrom": ["U01ABCDEF", "user@company.com"]
      }
    }
  }
}
在多用户工作区中使用配对策略可防止未授权的 AI 使用。每个配对码在 1 小时后过期。
在 open 模式下,将 allowFrom 设为 ["*"] 允许所有用户,或指定特定用户 ID/邮箱以限制访问。

频道配置(群组策略)

频道策略控制机器人在哪些 Slack 频道中运行以及如何运作: 顶级 groupPolicy: • open — 机器人在所有被邀请的频道中响应 • disabled — 机器人忽略所有频道消息 • allowlist — 机器人只在明确配置的频道中响应 单频道配置允许你精细调整各个频道的行为: • allow — 在 allowlist 模式下启用/禁用该频道 • requireMention — 机器人是否需要被 @提及才响应 • users — 该频道的用户允许列表 • skills — 限制该频道可用的技能/工具 • systemPrompt — 该频道的自定义 AI 指令 • allowBots — 是否处理来自其他机器人的消息(默认:false) • enabled — 完全启用/禁用该频道
openclaw.json
{
  "channels": {
    "slack": {
      "groupPolicy": "allowlist",
      "channels": {
        "C01ABCDEF": {
          "allow": true,
          "requireMention": true,
          "users": ["U01ABCDEF"],
          "skills": ["search", "docs"],
          "systemPrompt": "保持简短和技术性的回答。"
        },
        "#general": {
          "allow": true,
          "requireMention": true
        }
      }
    }
  }
}
频道键可以是频道 ID(C01ABCDEF)或频道名(#general)。使用 ID 更可靠,因为频道重命名后 ID 不变。
使用单频道 systemPrompt 为不同频道赋予 AI 不同的角色 — 如 #engineering 中技术化,#watercooler 中轻松随意。

回复线程

OpenClaw 支持灵活的 Slack 回复线程功能,控制机器人在主频道回复还是创建线程。 全局 replyToMode: • off(默认)— 在主频道回复。仅当触发消息已在线程中时才使用线程回复。 • first — 第一条回复进入线程,后续回复在主频道。 • all — 所有回复都作为线程回复发送。 按聊天类型覆盖 replyToModeByChatType: • direct — 一对一私信对话 • group — 群组私信 / MPIM 对话 • channel — 标准 Slack 频道 通过回复标签手动控制线程: • [[reply_to_current]] — 回复触发机器人的那条消息 • [[reply_to:<message_id>]] — 回复指定消息 ID
openclaw.json
{
  "channels": {
    "slack": {
      "replyToMode": "off",
      "replyToModeByChatType": {
        "direct": "all",
        "group": "first",
        "channel": "off"
      }
    }
  }
}
在活跃频道中,使用 replyToMode: 'all' 将对话组织在线程中,避免刷屏主频道。
按聊天类型覆盖设置可以让私信使用线程但频道回复保持内联,反之亦然。

用户 Token(可选)

除了 Bot Token,你还可以选择性配置一个 User Token(xoxp-...)以获得增强的读取权限。User Token 可提供更丰富的历史记录、置顶、表情回应、自定义表情和成员信息数据。 Token 使用优先级: • 读操作 — 优先使用 User Token;不可用时回退到 Bot Token • 写操作 — 默认始终使用 Bot Token userTokenReadOnly 标志(默认:true)确保 User Token 永远不会用于写操作。仅当你希望 AI 以用户身份操作时才设为 false(需要 User Token 具有额外的写权限)。 要添加 User Token,在 OAuth & Permissions 的 'User Token Scopes' 下配置用户 Token 权限 — 通常是只读权限如 channels:history、channels:read、users:read、reactions:read、pins:read、emoji:read、search:read。
openclaw.json
{
  "channels": {
    "slack": {
      "enabled": true,
      "appToken": "xapp-...",
      "botToken": "xoxb-...",
      "userToken": "xoxp-...",
      "userTokenReadOnly": true
    }
  }
}
将 userTokenReadOnly 设为 false 允许 AI 以安装用户的身份执行写操作(发送消息、添加表情回应、置顶消息)。仅在你了解安全影响的情况下启用此选项。

斜杠命令和 App Home

OpenClaw 支持 Slack 斜杠命令和 App Home 配置: 斜杠命令: 在 Slack API 门户的 'Slash Commands' 下创建 /openclaw 命令。在 Socket Mode 中无需设置请求 URL — Slack 通过 WebSocket 连接路由命令。如使用原生命令,可按需创建额外的斜杠命令。 App Home: 在 App Home 下启用 'Messages Tab',允许用户从应用页面直接与机器人私信。这提供了干净、专用的一对一对话界面。 会话路由: • 私信 → 主会话(agent:main:main) • 频道消息 → agent:<agentId>:slack:channel:<channelId> • 斜杠命令 → agent:<agentId>:slack:slash:<userId> 用于 cron/CLI 的投递目标: • user:<userId> — 向指定用户发送私信 • channel:<channelId> — 发送到指定频道
openclaw.json
{
  "channels": {
    "slack": {
      "slashCommand": {
        "enabled": true,
        "name": "openclaw",
        "sessionPrefix": "slack:slash",
        "ephemeral": true
      }
    }
  }
}
临时(ephemeral)斜杠命令响应仅对调用者可见。设置 ephemeral: false 使响应对频道中所有人可见。
必须在 App Home 中启用 Messages Tab 才能使用私信功能 — 否则用户无法与机器人发起对话。

权限范围(Scopes)

Slack 使用 OAuth 权限范围来控制应用的能力。以下是必需和可选的权限范围: Bot Token 必需权限: • chat:write — 发送、更新和删除消息 • im:write — 打开私信对话 • channels:history、groups:history、im:history、mpim:history — 读取消息历史 • channels:read、groups:read、im:read、mpim:read — 读取对话信息 • users:read — 查询用户资料 • reactions:read、reactions:write — 读取和添加表情回应 • pins:read、pins:write — 管理置顶消息 • emoji:read — 列出工作区自定义表情 • files:write — 上传文件和媒体 User Token 可选权限(只读): • channels:history、groups:history、im:history、mpim:history — 增强的历史访问 • channels:read、groups:read、im:read、mpim:read — 增强的对话信息 • users:read — 用户资料查询 • reactions:read、pins:read、emoji:read — 读取表情回应、置顶、表情 • search:read — 搜索消息和文件
先只配置 Bot Token 权限。仅当需要增强读取能力(如 search:read)时再添加 User Token 及其权限。
提供的 App Manifest 包含所有推荐权限 — 在创建应用时使用它可以最快完成设置。

HTTP 模式(Events API)

如果你的 Gateway 可通过 HTTPS 公开访问,可以使用 HTTP 模式代替 Socket Mode。在 HTTP 模式下,Slack 将事件直接推送到你服务器的端点。 设置步骤: 1. 创建 Slack 应用但不要启用 Socket Mode 2. 从 'Basic Information' → 'App Credentials' 获取 Signing Secret 3. 安装应用以获取 Bot Token 4. 在 'Event Subscriptions' 中将 Request URL 设为:https://你的网关地址/slack/events 5. 在 'Interactivity & Shortcuts' 中设置相同的 Request URL 6. 在 'Slash Commands' 中将 Request URL 设为同一端点 HTTP 模式不需要 App Token — 它使用 Signing Secret 来验证传入请求确实来自 Slack。
openclaw.json
{
  "channels": {
    "slack": {
      "enabled": true,
      "mode": "http",
      "botToken": "xoxb-...",
      "signingSecret": "your-signing-secret",
      "webhookPath": "/slack/events"
    }
  }
}
在 HTTP 模式下,所有三个端点(Events、Interactivity、Slash Commands)都应指向同一 URL:https://你的地址/slack/events。
HTTP 模式使用 Signing Secret(非 App Token)。Signing Secret 通过 HMAC-SHA256 签名验证请求真实性。
HTTP 模式需要有效的 SSL 证书和公网可访问的端点。确保你的服务器可以从 Slack 的 IP 范围访问。

高级配置

OpenClaw 提供多项高级设置用于精细调整 Slack 行为: 历史和上下文: • historyLimit(默认:50)— AI 上下文中包含的最近消息数。设为 0 禁用历史注入。 文本和媒体: • textChunkLimit(默认:4000)— 长回复每条消息的最大字符数 • chunkMode: "newline" — 按段落边界分割而非硬字符限制 • mediaMaxMb(默认:20)— 最大媒体文件大小(MB) 工具操作门控: 控制 Agent 可以执行哪些 Slack 操作: • reactions: true — 添加和列出表情回应 • messages: true — 读取/发送/编辑/删除消息 • pins: true — 置顶/取消置顶/列出置顶消息 • memberInfo: true — 查询工作区成员信息 • emojiList: true — 列出工作区自定义表情 安全注意事项: • 写操作默认使用 Bot Token,保持应用级别的权限隔离 • 当 userTokenReadOnly 为 false 且配置了 User Token 时,写操作可能使用 User Token(以安装用户身份操作) • 在频道上启用 allowBots 时,结合 requireMention 和用户允许列表以防止机器人间的响应循环
openclaw.json
{
  "channels": {
    "slack": {
      "historyLimit": 50,
      "textChunkLimit": 4000,
      "chunkMode": "newline",
      "mediaMaxMb": 20,
      "actions": {
        "reactions": true,
        "messages": true,
        "pins": true,
        "memberInfo": true,
        "emojiList": true
      }
    }
  }
}

Slack 配置参考

enabled
Type: booleanDefault: true

启用或禁用 Slack 渠道

mode
Type: stringDefault: "socket"

连接模式。选项:socket(Socket Mode,默认)、http(Events API)

appToken
Type: stringDefault: ""

Slack App-Level Token(xapp-...),Socket Mode 需要。也可使用 SLACK_APP_TOKEN 环境变量

botToken
Type: stringDefault: ""

Slack Bot User OAuth Token(xoxb-...)。也可使用 SLACK_BOT_TOKEN 环境变量

userToken
Type: stringDefault: ""

可选的 Slack User Token(xoxp-...),用于增强读取权限

userTokenReadOnly
Type: booleanDefault: true

限制 User Token 为只读操作。设为 false 允许以安装用户身份执行写操作

signingSecret
Type: stringDefault: ""

HTTP 模式请求验证的 Signing Secret(来自 Basic Information → App Credentials)

webhookPath
Type: stringDefault: "/slack/events"

HTTP 模式的 Webhook 端点路径

dm.policy
Type: stringDefault: "pairing"

私信访问控制策略。选项:pairing(基于配对码审批)、open(任何人可私信)

dm.allowFrom
Type: string[]Default: []

允许向机器人发私信的用户。支持用户 ID、@用户名、邮箱和通配符(*)

dm.enabled
Type: booleanDefault: true

是否接受私信

dm.groupEnabled
Type: booleanDefault: false

启用群组私信(MPIM)处理

dm.groupChannels
Type: string[]Default: []

允许的群组私信频道 ID

groupPolicy
Type: stringDefault: "open"

频道处理策略。选项:open(所有频道)、disabled(无频道)、allowlist(仅配置的频道)

channels.<id>.allow
Type: booleanDefault: true

在 allowlist 模式下允许或拒绝此频道

channels.<id>.requireMention
Type: booleanDefault: false

机器人是否需要 @提及才在此频道中响应

channels.<id>.users
Type: string[]Default: []

此频道的用户允许列表(ID、@用户名或邮箱)

channels.<id>.skills
Type: string[]Default: []

限制此频道可用的技能(空 = 所有技能)

channels.<id>.systemPrompt
Type: stringDefault: ""

此频道的自定义 AI 系统提示

channels.<id>.allowBots
Type: booleanDefault: false

在此频道中处理来自其他机器人的消息

replyToMode
Type: stringDefault: "off"

回复线程模式。选项:off(主频道)、first(首条回复线程化)、all(所有回复线程化)

replyToModeByChatType
Type: objectDefault: {}

按聊天类型覆盖线程模式。键:direct、group、channel。值:off、first、all

reactionNotifications
Type: stringDefault: "off"

哪些表情回应触发 Agent 通知。选项:off、own、all

historyLimit
Type: numberDefault: 50

AI 上下文中包含的最近消息数量。设为 0 禁用

textChunkLimit
Type: numberDefault: 4000

长 AI 回复每条消息的最大字符数

chunkMode
Type: stringDefault: "split"

长回复的分割方式。选项:split(硬字符限制)、newline(段落边界)

mediaMaxMb
Type: numberDefault: 20

最大媒体文件大小(MB)

slashCommand.enabled
Type: booleanDefault: true

启用斜杠命令处理

slashCommand.name
Type: stringDefault: "openclaw"

斜杠命令名称(不含 /)

slashCommand.ephemeral
Type: booleanDefault: true

斜杠命令响应是否仅对调用者可见

Slack 常见问题

Slack 故障排查

机器人在频道中不响应

频道被 groupPolicy 阻止,或机器人不在允许列表中,或机器人未被邀请到频道。

检查 groupPolicy 设置。如果使用 'allowlist',确保频道 ID 或名称已配置 'allow: true'。确认机器人已被邀请到频道(/invite @你的机器人名)。检查 Gateway 日志中的 'blocked by group policy' 消息。
发给机器人的私信被忽略

私信策略设为 'pairing' 且发送者未被审批,或 App Home 中未启用 Messages Tab。

如使用配对模式,通过 'openclaw pairing list slack' 查看待处理配对并通过 'openclaw pairing approve slack <code>' 审批。在 App Home 中启用 Messages Tab(Slack API 门户 → App Home → Show Tab)。确认 dm.policy 未设为 'disabled'。
Socket Mode 连接失败或持续断开

App Token(xapp-...)无效或已过期,或服务器与 Slack 之间存在网络问题。

确认 App Token 正确且具有 connections:write 权限。如需要可在 Slack API 门户中重新生成。检查 Gateway 日志中的 WebSocket 连接错误。确保服务器能稳定访问 wss://wss-primary.slack.com。
API 错误(missing_scope 或 invalid_auth)

Bot Token 缺少必需的 OAuth 权限范围,或 Token 已被撤销/重新生成。

前往 Slack API 门户的 OAuth & Permissions 确认所有必需权限已添加。如果最近添加了权限,需要重新将应用安装到工作区以应用新权限。检查配置中的 Token 与门户中的当前 Token 是否一致。
斜杠命令显示 'dispatch_failed' 或不出现

未在 Slack API 门户中创建斜杠命令,或请求 URL 配置错误(HTTP 模式)。

在 API 门户的 Slash Commands 下创建 /openclaw 命令。Socket Mode 不需要 URL。HTTP 模式需将 Request URL 设为 https://你的地址/slack/events。添加命令后可能需要重新安装应用到工作区。
消息被截断或分成多段发送

较长的 AI 回复超过了 OpenClaw 的 textChunkLimit(默认 4,000 字符),会被自动分成多条消息发送。注意:Slack 自身的限制为每个 section block 3,000 字符,每条消息 text 字段 40,000 字符。

这是预期行为。调整 textChunkLimit 控制分块大小(默认:4000)。设置 chunkMode 为 'newline' 按段落边界分割以获得更自然的分块效果。也可通过 systemPrompt 指示 AI 保持回复简洁。