diff --git a/docs/zh-CN/channels/slack.md b/docs/zh-CN/channels/slack.md index 03415e0f3..d4ac266a2 100644 --- a/docs/zh-CN/channels/slack.md +++ b/docs/zh-CN/channels/slack.md @@ -1,20 +1,20 @@ --- read_when: - - 设置 Slack 或调试 Slack Socket/HTTP 模式 -summary: Slack 设置与运行时行为(Socket Mode + HTTP Events API) + - 设置 Slack 或调试 Slack 的 socket/HTTP 模式 +summary: Slack 设置与运行时行为(Socket Mode + HTTP Request URL) title: Slack x-i18n: - generated_at: "2026-04-05T20:43:22Z" + generated_at: "2026-04-06T06:59:07Z" model: gpt-5.4 provider: openai - source_hash: 7e4ff2ce7d92276d62f4f3d3693ddb56ca163d5fdc2f1082ff7ba3421fada69c + source_hash: 471421a34e5ff20dfc46dab85422d2e814524068c8466d0738448cd5d64d415b source_path: channels/slack.md workflow: 15 --- # Slack -状态:已可用于生产环境,支持通过 Slack 应用集成进行私信和渠道通信。默认模式为 Socket Mode;也支持 HTTP Events API 模式。 +状态:已可在生产环境中用于通过 Slack 应用集成实现私信 + 渠道。默认模式为 Socket Mode;也支持 HTTP Request URL。 @@ -28,7 +28,7 @@ x-i18n: -## 快速设置 +## 快速开始 @@ -37,7 +37,7 @@ x-i18n: 在 Slack 应用设置中: - 启用 **Socket Mode** - - 创建带有 `connections:write` 权限的 **App Token**(`xapp-...`) + - 创建具有 `connections:write` 权限的 **App Token**(`xapp-...`) - 安装应用并复制 **Bot Token**(`xoxb-...`) @@ -66,7 +66,7 @@ SLACK_BOT_TOKEN=xoxb-... - 为以下事件订阅机器人事件: + 为以下事件订阅 bot 事件: - `app_mention` - `message.channels`, `message.groups`, `message.im`, `message.mpim` @@ -75,7 +75,7 @@ SLACK_BOT_TOKEN=xoxb-... - `channel_rename` - `pin_added`, `pin_removed` - 另外,为私信启用 App Home **Messages Tab**。 + 还要为私信启用 App Home **Messages Tab**。 @@ -89,13 +89,13 @@ openclaw gateway - + - 将模式设为 HTTP(`channels.slack.mode="http"`) - 复制 Slack **Signing Secret** - - 将 Event Subscriptions、Interactivity 和 Slash command 的 Request URL 都设为同一个 webhook 路径(默认 `/slack/events`) + - 将 Event Subscriptions、Interactivity 和 Slash command 的 Request URL 设为相同的 webhook 路径(默认 `/slack/events`) @@ -118,19 +118,19 @@ openclaw gateway - 支持按账户配置 HTTP 模式。 + 支持按账户分别配置 HTTP 模式。 - 为每个账户指定不同的 `webhookPath`,避免注册冲突。 + 为每个账户分配不同的 `webhookPath`,以避免注册冲突。 -## 清单与作用域检查清单 +## Manifest 和作用域检查清单 - + ```json { @@ -208,7 +208,7 @@ openclaw gateway - 如果你配置了 `channels.slack.userToken`,典型的读取作用域包括: + 如果你配置了 `channels.slack.userToken`,常见的读取作用域包括: - `channels:history`, `groups:history`, `im:history`, `mpim:history` - `channels:read`, `groups:read`, `im:read`, `mpim:read` @@ -229,37 +229,37 @@ openclaw gateway 字符串或 SecretRef 对象。 - 配置中的令牌会覆盖环境变量回退。 - `SLACK_BOT_TOKEN` / `SLACK_APP_TOKEN` 环境变量回退仅适用于默认账户。 -- `userToken`(`xoxp-...`)仅支持通过配置提供(无环境变量回退),并默认采用只读行为(`userTokenReadOnly: true`)。 -- 可选:如果你希望发送消息使用当前智能体身份(自定义 `username` 和图标),可添加 `chat:write.customize`。`icon_emoji` 使用 `:emoji_name:` 语法。 +- `userToken`(`xoxp-...`)仅支持在配置中设置(无环境变量回退),并且默认启用只读行为(`userTokenReadOnly: true`)。 +- 可选:如果你希望发出的消息使用当前智能体身份(自定义 `username` 和图标),可添加 `chat:write.customize`。`icon_emoji` 使用 `:emoji_name:` 语法。 状态快照行为: -- Slack 账户检查会跟踪每项凭证对应的 `*Source` 和 `*Status` +- Slack 账户检查会跟踪每个凭证对应的 `*Source` 和 `*Status` 字段(`botToken`、`appToken`、`signingSecret`、`userToken`)。 - 状态可能为 `available`、`configured_unavailable` 或 `missing`。 - `configured_unavailable` 表示该账户通过 SecretRef - 或其他非内联密钥来源完成了配置,但当前命令/运行时路径 - 无法解析出实际值。 + 或其他非内联密钥来源完成配置,但当前命令/运行时路径 + 无法解析实际值。 - 在 HTTP 模式下,会包含 `signingSecretStatus`;在 Socket Mode 下, - 必需的配对是 `botTokenStatus` + `appTokenStatus`。 + 必需的组合是 `botTokenStatus` + `appTokenStatus`。 -对于操作/目录读取,如果已配置用户令牌,则可以优先使用用户令牌。对于写入,仍优先使用机器人令牌;只有当 `userTokenReadOnly: false` 且机器人令牌不可用时,才允许使用用户令牌执行写入。 +对于操作/目录读取,如果配置了用户令牌,则可优先使用用户令牌。对于写入,仍优先使用 bot 令牌;只有在 `userTokenReadOnly: false` 且 bot 令牌不可用时,才允许通过用户令牌写入。 ## 操作与门控 Slack 操作由 `channels.slack.actions.*` 控制。 -当前 Slack 工具中的可用操作组: +当前 Slack 工具中可用的操作组: -| 组 | 默认值 | +| 组别 | 默认值 | | ---------- | ------- | -| messages | 已启用 | -| reactions | 已启用 | -| pins | 已启用 | -| memberInfo | 已启用 | -| emojiList | 已启用 | +| messages | 启用 | +| reactions | 启用 | +| pins | 启用 | +| memberInfo | 启用 | +| emojiList | 启用 | 当前 Slack 消息操作包括 `send`、`upload-file`、`download-file`、`read`、`edit`、`delete`、`pin`、`unpin`、`list-pins`、`member-info` 和 `emoji-list`。 @@ -280,7 +280,7 @@ Slack 操作由 `channels.slack.actions.*` 控制。 - `channels.slack.allowFrom`(推荐) - `dm.allowFrom`(旧版) - `dm.groupEnabled`(群组私信默认 false) - - `dm.groupChannels`(可选 MPIM 允许列表) + - `dm.groupChannels`(可选的 MPIM 允许列表) 多账户优先级: @@ -288,39 +288,39 @@ Slack 操作由 `channels.slack.actions.*` 控制。 - 命名账户在其自身 `allowFrom` 未设置时,会继承 `channels.slack.allowFrom`。 - 命名账户不会继承 `channels.slack.accounts.default.allowFrom`。 - 在私信中进行配对时,使用 `openclaw pairing approve slack `。 + 在私信中配对使用 `openclaw pairing approve slack `。 - `channels.slack.groupPolicy` 控制渠道处理: + `channels.slack.groupPolicy` 控制渠道处理方式: - `open` - `allowlist` - `disabled` - 渠道允许列表位于 `channels.slack.channels` 下,应使用稳定的渠道 ID。 + 渠道允许列表位于 `channels.slack.channels` 下,并且应使用稳定的渠道 ID。 - 运行时说明:如果 `channels.slack` 完全缺失(仅环境变量设置),运行时将回退到 `groupPolicy="allowlist"` 并记录警告(即使设置了 `channels.defaults.groupPolicy` 也是如此)。 + 运行时说明:如果完全缺少 `channels.slack`(仅通过环境变量设置),运行时会回退为 `groupPolicy="allowlist"` 并记录一条警告(即使已设置 `channels.defaults.groupPolicy`)。 名称/ID 解析: - - 当令牌访问允许时,渠道允许列表条目和私信允许列表条目会在启动时解析 - - 无法解析的渠道名称条目会按配置保留,但默认不会用于路由 - - 入站授权和渠道路由默认优先使用 ID;若要直接按用户名/slug 匹配,需要设置 `channels.slack.dangerouslyAllowNameMatching: true` + - 在令牌访问允许时,渠道允许列表条目和私信允许列表条目会在启动时解析 + - 无法解析的渠道名称条目会保留配置内容,但默认会在路由时被忽略 + - 入站授权和渠道路由默认优先按 ID;直接用户名/slug 匹配要求 `channels.slack.dangerouslyAllowNameMatching: true` - 默认情况下,渠道消息受提及门控控制。 + 默认情况下,渠道消息受提及门控。 提及来源: - 显式应用提及(`<@botId>`) - - 提及正则模式(`agents.list[].groupChat.mentionPatterns`,回退为 `messages.groupChat.mentionPatterns`) - - 隐式回复机器人线程行为 + - 提及正则模式(`agents.list[].groupChat.mentionPatterns`,回退到 `messages.groupChat.mentionPatterns`) + - 隐式回复 bot 线程行为 - 按渠道控制(`channels.slack.channels.`;名称仅通过启动解析或 `dangerouslyAllowNameMatching` 支持): + 每渠道控制(`channels.slack.channels.`;名称仅通过启动解析或 `dangerouslyAllowNameMatching`): - `requireMention` - `users`(允许列表) @@ -328,7 +328,7 @@ Slack 操作由 `channels.slack.actions.*` 控制。 - `skills` - `systemPrompt` - `tools`, `toolsBySender` - - `toolsBySender` 键格式:`id:`、`e164:`、`username:`、`name:`,或 `"*"` 通配符 + - `toolsBySender` 键格式:`id:`、`e164:`、`username:`、`name:` 或 `"*"` 通配符 (旧版无前缀键仍只映射到 `id:`) @@ -336,29 +336,29 @@ Slack 操作由 `channels.slack.actions.*` 控制。 ## 线程、会话与回复标签 -- 私信路由为 `direct`;渠道为 `channel`;MPIM 为 `group`。 +- 私信路由为 `direct`;渠道路由为 `channel`;MPIM 路由为 `group`。 - 使用默认 `session.dmScope=main` 时,Slack 私信会折叠到智能体主会话。 - 渠道会话:`agent::slack:channel:`。 -- 在线程回复适用时,可创建线程会话后缀(`:thread:`)。 -- `channels.slack.thread.historyScope` 默认值为 `thread`;`thread.inheritParent` 默认值为 `false`。 -- `channels.slack.thread.initialHistoryLimit` 控制新线程会话启动时会抓取多少现有线程消息(默认 `20`;设为 `0` 可禁用)。 +- 在线程回复适用时,可创建带线程会话后缀(`:thread:`)的会话。 +- `channels.slack.thread.historyScope` 默认为 `thread`;`thread.inheritParent` 默认为 `false`。 +- `channels.slack.thread.initialHistoryLimit` 控制新线程会话开始时抓取多少现有线程消息(默认 `20`;设为 `0` 可禁用)。 回复线程控制: - `channels.slack.replyToMode`:`off|first|all|batched`(默认 `off`) -- `channels.slack.replyToModeByChatType`:按 `direct|group|channel` 分别配置 -- 私聊的旧版回退:`channels.slack.dm.replyToMode` +- `channels.slack.replyToModeByChatType`:按 `direct|group|channel` 分别设置 +- 适用于直接聊天的旧版回退:`channels.slack.dm.replyToMode` 支持手动回复标签: - `[[reply_to_current]]` - `[[reply_to:]]` -注意:`replyToMode="off"` 会禁用 Slack 中的**所有**回复线程行为,包括显式 `[[reply_to_*]]` 标签。这与 Telegram 不同,在 Telegram 中,即使在 `"off"` 模式下也仍会遵循显式标签。之所以不同,是因为平台线程模型不同:Slack 线程会将消息隐藏在渠道主流之外,而 Telegram 回复仍会显示在主聊天流中。 +注意:`replyToMode="off"` 会禁用 Slack 中的**所有**回复线程功能,包括显式 `[[reply_to_*]]` 标签。这与 Telegram 不同,后者在 `"off"` 模式下仍会遵循显式标签。该差异反映了平台线程模型的不同:Slack 线程会将消息隐藏在渠道之外,而 Telegram 回复仍会显示在主聊天流中。 -## 确认表情回应 +## 确认表情反应 -`ackReaction` 会在 OpenClaw 处理入站消息期间发送一个确认表情。 +`ackReaction` 会在 OpenClaw 处理入站消息时发送一个确认表情。 解析顺序: @@ -369,8 +369,8 @@ Slack 操作由 `channels.slack.actions.*` 控制。 说明: -- Slack 需要使用短代码(例如 `"eyes"`)。 -- 使用 `""` 可为某个 Slack 账户或全局禁用该表情回应。 +- Slack 需要使用 shortcode(例如 `"eyes"`)。 +- 使用 `""` 可为某个 Slack 账户或全局禁用该反应。 ## 文本流式传输 @@ -383,11 +383,11 @@ Slack 操作由 `channels.slack.actions.*` 控制。 当 `streaming` 为 `partial` 时,`channels.slack.nativeStreaming` 控制 Slack 原生文本流式传输(默认:`true`)。 -- 必须有可用的回复线程,原生文本流式传输才会显示。线程选择仍遵循 `replyToMode`。如果没有,则使用普通草稿预览。 -- 媒体和非文本负载会回退到普通投递。 -- 如果流式传输在回复中途失败,OpenClaw 会将剩余负载回退为普通投递。 +- 必须存在回复线程,原生文本流式传输才会显示。线程选择仍遵循 `replyToMode`。如果没有线程,则使用普通草稿预览。 +- 媒体和非文本负载会回退到常规投递。 +- 如果流式传输在回复过程中失败,OpenClaw 会对剩余负载回退到常规投递。 -如果要使用草稿预览而不是 Slack 原生文本流式传输: +使用草稿预览而不是 Slack 原生文本流式传输: ```json5 { @@ -405,9 +405,9 @@ Slack 操作由 `channels.slack.actions.*` 控制。 - `channels.slack.streamMode`(`replace | status_final | append`)会自动迁移到 `channels.slack.streaming`。 - 布尔型 `channels.slack.streaming` 会自动迁移到 `channels.slack.nativeStreaming`。 -## 输入中表情回应回退 +## 输入中反应回退 -`typingReaction` 会在 OpenClaw 处理回复期间,为入站 Slack 消息添加一个临时表情回应,并在运行结束后移除。在非线程回复场景中,这最有用,因为线程回复会使用默认的“正在输入...”状态指示器。 +`typingReaction` 会在 OpenClaw 处理回复期间,临时为入站 Slack 消息添加一个反应,并在运行结束后移除。在非线程回复场景下,这尤其有用,因为线程回复会使用默认的“正在输入...”状态指示器。 解析顺序: @@ -416,33 +416,33 @@ Slack 操作由 `channels.slack.actions.*` 控制。 说明: -- Slack 需要使用短代码(例如 `"hourglass_flowing_sand"`)。 -- 该表情回应为尽力而为,回复完成或失败路径结束后会自动尝试清理。 +- Slack 需要使用 shortcode(例如 `"hourglass_flowing_sand"`)。 +- 该反应采用尽力而为方式,回复或失败路径完成后会自动尝试清理。 ## 媒体、分块与投递 - Slack 文件附件会从 Slack 托管的私有 URL 下载(基于令牌认证的请求流程),并在抓取成功且尺寸限制允许时写入媒体存储。 + Slack 文件附件会通过 Slack 托管的私有 URL 下载(基于令牌认证的请求流程),并在抓取成功且未超出大小限制时写入媒体存储。 - 运行时入站大小上限默认是 `20MB`,除非由 `channels.slack.mediaMaxMb` 覆盖。 + 运行时入站大小上限默认为 `20MB`,除非通过 `channels.slack.mediaMaxMb` 覆盖。 - 文本分块使用 `channels.slack.textChunkLimit`(默认 4000) - `channels.slack.chunkMode="newline"` 启用优先按段落拆分 - - 文件发送使用 Slack 上传 API,并可包含线程回复(`thread_ts`) - - 如果配置了 `channels.slack.mediaMaxMb`,则出站媒体上限遵循该值;否则渠道发送会使用媒体流水线中的 MIME 类型默认值 + - 文件发送使用 Slack 上传 API,并且可包含线程回复(`thread_ts`) + - 配置了 `channels.slack.mediaMaxMb` 时,出站媒体上限遵循该值;否则渠道发送会使用媒体管线中的 MIME 类型默认值 - 推荐使用显式目标: + 推荐使用的显式目标: - `user:` 用于私信 - `channel:` 用于渠道 - 发送到用户目标时,Slack 私信会通过 Slack conversation API 打开。 + 向用户目标发送时,Slack 私信会通过 Slack conversation API 打开。 @@ -451,15 +451,15 @@ Slack 操作由 `channels.slack.actions.*` 控制。 - Slack 的原生命令自动模式默认**关闭**(`commands.native: "auto"` 不会启用 Slack 原生命令)。 - 使用 `channels.slack.commands.native: true`(或全局 `commands.native: true`)启用 Slack 原生命令处理器。 -- 启用原生命令后,需要在 Slack 中注册对应的斜杠命令(`/` 名称),但有一个例外: - - 状态命令请注册 `/agentstatus`(Slack 保留了 `/status`) +- 启用原生命令后,在 Slack 中注册匹配的斜杠命令(`/` 名称),但有一个例外: + - 为状态命令注册 `/agentstatus`(Slack 保留了 `/status`) - 如果未启用原生命令,你可以通过 `channels.slack.slashCommand` 运行单个已配置的斜杠命令。 - 原生参数菜单现在会自适应其渲染策略: - 最多 5 个选项:按钮块 - 6-100 个选项:静态选择菜单 - - 超过 100 个选项:当可用交互选项处理器时,使用带异步选项过滤的外部选择 + - 超过 100 个选项:如果可用交互选项处理器,则使用带异步选项过滤的外部选择 - 如果编码后的选项值超出 Slack 限制,流程会回退为按钮 -- 对于较长的选项负载,斜杠命令参数菜单会在分发所选值之前使用确认对话框。 +- 对于较长的选项负载,斜杠命令参数菜单会在分发所选值前显示确认对话框。 默认斜杠命令设置: @@ -472,11 +472,11 @@ Slack 操作由 `channels.slack.actions.*` 控制。 - `agent::slack:slash:` -并且仍会针对目标对话会话(`CommandTargetSessionKey`)路由命令执行。 +并且仍会针对目标会话路由命令执行(`CommandTargetSessionKey`)。 ## 交互式回复 -Slack 可以渲染由智能体生成的交互式回复控件,但此功能默认禁用。 +Slack 可以渲染由智能体生成的交互式回复控件,但该功能默认禁用。 全局启用: @@ -492,7 +492,7 @@ Slack 可以渲染由智能体生成的交互式回复控件,但此功能默 } ``` -或仅为某个 Slack 账户启用: +或者仅为一个 Slack 账户启用: ```json5 { @@ -510,43 +510,43 @@ Slack 可以渲染由智能体生成的交互式回复控件,但此功能默 } ``` -启用后,智能体可以发出仅适用于 Slack 的回复指令: +启用后,智能体可以输出仅限 Slack 的回复指令: - `[[slack_buttons: Approve:approve, Reject:reject]]` - `[[slack_select: Choose a target | Canary:canary, Production:production]]` -这些指令会编译为 Slack Block Kit,并将点击或选择通过现有 Slack 交互事件路径路由回来。 +这些指令会编译为 Slack Block Kit,并将点击或选择通过现有的 Slack 交互事件路径路由回来。 说明: -- 这是 Slack 专用 UI。其他渠道不会将 Slack Block Kit 指令翻译为它们自己的按钮系统。 +- 这是 Slack 专用 UI。其他渠道不会将 Slack Block Kit 指令转换为它们自己的按钮系统。 - 交互回调值是 OpenClaw 生成的不透明令牌,而不是智能体原始编写的值。 -- 如果生成的交互块会超出 Slack Block Kit 限制,OpenClaw 会回退为原始文本回复,而不是发送无效的块负载。 +- 如果生成的交互块会超出 Slack Block Kit 限制,OpenClaw 会回退为原始文本回复,而不是发送无效的 blocks 负载。 -## Slack 中的 Exec 审批 +## Slack 中的执行审批 -Slack 可以作为原生审批客户端,使用交互按钮和交互事件,而不是回退到 Web UI 或终端。 +Slack 可以充当原生审批客户端,使用交互式按钮和交互流程,而不是回退到 Web UI 或终端。 -- Exec 审批使用 `channels.slack.execApprovals.*` 进行原生私信/渠道路由。 -- 当请求已经落在 Slack 中且审批 ID 类型为 `plugin:` 时,插件审批仍可通过同一个 Slack 原生按钮界面进行处理。 -- 审批人授权仍会被强制执行:只有被识别为审批人的用户才能通过 Slack 批准或拒绝请求。 +- 执行审批使用 `channels.slack.execApprovals.*` 进行原生私信/渠道路由。 +- 当请求已经落在 Slack 中且审批 ID 类型为 `plugin:` 时,插件审批仍可通过同一个 Slack 原生按钮界面完成。 +- 审批人授权仍会强制执行:只有被识别为审批人的用户才能通过 Slack 批准或拒绝请求。 -这使用与其他渠道相同的共享审批按钮界面。当你在 Slack 应用设置中启用了 `interactivity` 后,审批提示会直接在对话中渲染为 Block Kit 按钮。 -当这些按钮存在时,它们就是主要的审批 UX;只有当工具结果表明聊天审批不可用或手动审批是唯一途径时,OpenClaw +这使用与其他渠道相同的共享审批按钮界面。当你在 Slack 应用设置中启用 `interactivity` 时,审批提示会直接在会话中渲染为 Block Kit 按钮。 +当这些按钮存在时,它们是主要的审批 UX;只有当工具结果表明聊天审批不可用,或手动审批是唯一途径时,OpenClaw 才应包含手动 `/approve` 命令。 配置路径: - `channels.slack.execApprovals.enabled` -- `channels.slack.execApprovals.approvers`(可选;在可能时回退为 `commands.ownerAllowFrom`) +- `channels.slack.execApprovals.approvers`(可选;在可能时回退到 `commands.ownerAllowFrom`) - `channels.slack.execApprovals.target`(`dm` | `channel` | `both`,默认:`dm`) - `agentFilter`、`sessionFilter` -当 `enabled` 未设置或为 `"auto"` 且至少解析出一名 -审批人时,Slack 会自动启用原生 exec 审批。设置 `enabled: false` 可显式禁用 Slack 作为原生审批客户端。 -设置 `enabled: true` 可在审批人解析成功时强制启用原生审批。 +当 `enabled` 未设置或为 `"auto"` 且至少解析出一位 +审批人时,Slack 会自动启用原生执行审批。设置 `enabled: false` 可显式禁用 Slack 作为原生审批客户端。 +设置 `enabled: true` 可在审批人已解析时强制启用原生审批。 -在没有显式 Slack exec 审批配置时的默认行为: +在没有显式 Slack 执行审批配置时的默认行为: ```json5 { @@ -557,7 +557,7 @@ Slack 可以作为原生审批客户端,使用交互按钮和交互事件, ``` 只有当你想覆盖审批人、添加过滤器或 -选择源聊天投递时,才需要显式 Slack 原生配置: +选择加入原始聊天投递时,才需要显式的 Slack 原生配置: ```json5 { @@ -573,35 +573,34 @@ Slack 可以作为原生审批客户端,使用交互按钮和交互事件, } ``` -共享 `approvals.exec` 转发是独立功能。只有当 exec 审批提示还必须 -路由到其他聊天或显式的带外目标时,才使用它。共享 `approvals.plugin` 转发也 -是独立功能;当这些请求已经落在 Slack -中时,Slack 原生按钮仍可处理插件审批。 +共享 `approvals.exec` 转发是独立功能。仅当执行审批提示还必须 +路由到其他聊天或显式的带外目标时才使用它。共享 `approvals.plugin` 转发也 +是独立功能;当这些请求已经落在 Slack 中时,Slack 原生按钮仍可处理插件审批。 -同一聊天中的 `/approve` 也可在已支持命令的 Slack 渠道和私信中使用。完整的审批转发模型,请参见 [Exec approvals](/zh-CN/tools/exec-approvals)。 +同聊天内的 `/approve` 在已支持命令的 Slack 渠道和私信中也可使用。完整的审批转发模型见 [执行审批](/zh-CN/tools/exec-approvals)。 ## 事件与运行行为 - 消息编辑/删除/线程广播会映射为系统事件。 -- 添加/移除表情回应事件会映射为系统事件。 -- 成员加入/离开、渠道创建/重命名,以及添加/移除置顶事件都会映射为系统事件。 -- 当启用 `configWrites` 时,`channel_id_changed` 可以迁移渠道配置键。 -- 渠道 topic/purpose 元数据被视为不可信上下文,可注入到路由上下文中。 -- 线程发起者和初始线程历史上下文播种会在适用时按配置的发送者允许列表进行过滤。 +- 表情添加/移除事件会映射为系统事件。 +- 成员加入/离开、渠道创建/重命名,以及固定项添加/移除事件会映射为系统事件。 +- 启用 `configWrites` 时,`channel_id_changed` 可迁移渠道配置键。 +- 渠道 topic/purpose 元数据被视为不可信上下文,并可注入到路由上下文中。 +- 在线程发起者和初始线程历史上下文植入适用时,会根据已配置的发送者允许列表进行过滤。 - 块操作和模态交互会发出结构化的 `Slack interaction: ...` 系统事件,并带有丰富的负载字段: - - 块操作:所选值、标签、选择器值以及 `workflow_*` 元数据 + - 块操作:选定值、标签、选择器值以及 `workflow_*` 元数据 - 模态 `view_submission` 和 `view_closed` 事件,带有路由后的渠道元数据和表单输入 -## 配置参考指针 +## 配置参考指引 主要参考: - [配置参考 - Slack](/zh-CN/gateway/configuration-reference#slack) 高信号 Slack 字段: - - mode/auth:`mode`、`botToken`、`appToken`、`signingSecret`、`webhookPath`、`accounts.*` + - 模式/鉴权:`mode`、`botToken`、`appToken`、`signingSecret`、`webhookPath`、`accounts.*` - 私信访问:`dm.enabled`、`dmPolicy`、`allowFrom`(旧版:`dm.policy`、`dm.allowFrom`)、`dm.groupEnabled`、`dm.groupChannels` - - 兼容性开关:`dangerouslyAllowNameMatching`(破窗开关;除非确有需要,否则保持关闭) + - 兼容性开关:`dangerouslyAllowNameMatching`(紧急兜底;除非确有需要,否则保持关闭) - 渠道访问:`groupPolicy`、`channels.*`、`channels.*.users`、`channels.*.requireMention` - 线程/历史:`replyToMode`、`replyToModeByChatType`、`thread.*`、`historyLimit`、`dmHistoryLimit`、`dms.*.historyLimit` - 投递:`textChunkLimit`、`chunkMode`、`mediaMaxMb`、`streaming`、`nativeStreaming` @@ -611,14 +610,14 @@ Slack 可以作为原生审批客户端,使用交互按钮和交互事件, - 按顺序检查: + 按以下顺序检查: - `groupPolicy` - 渠道允许列表(`channels.slack.channels`) - `requireMention` - - 按渠道配置的 `users` 允许列表 + - 每渠道 `users` 允许列表 - 有用的命令: + 常用命令: ```bash openclaw channels status --probe @@ -633,7 +632,7 @@ openclaw doctor - `channels.slack.dm.enabled` - `channels.slack.dmPolicy`(或旧版 `channels.slack.dm.policy`) - - 配对审批 / 允许列表条目 + - 配对批准 / 允许列表条目 ```bash openclaw pairing list slack @@ -641,13 +640,13 @@ openclaw pairing list slack - - 验证机器人令牌、应用令牌以及 Slack 应用设置中的 Socket Mode 是否已启用。 + + 验证 bot + app 令牌,以及 Slack 应用设置中是否已启用 Socket Mode。 如果 `openclaw channels status --probe --json` 显示 `botTokenStatus` 或 - `appTokenStatus: "configured_unavailable"`,说明 Slack 账户已完成 - 配置,但当前运行时无法解析由 SecretRef 支持的 - 值。 + `appTokenStatus: "configured_unavailable"`,说明该 Slack 账户 + 已完成配置,但当前运行时无法解析由 SecretRef 支持的 + 实际值。 @@ -666,12 +665,12 @@ openclaw pairing list slack - 确认你原本是想使用: + 确认你的预期是: - 原生命令模式(`channels.slack.commands.native: true`),并在 Slack 中注册匹配的斜杠命令 - 或单一斜杠命令模式(`channels.slack.slashCommand.enabled: true`) - 还要检查 `commands.useAccessGroups` 以及渠道/用户允许列表。 + 同时检查 `commands.useAccessGroups` 以及渠道/用户允许列表。