chore(i18n): refresh zh-CN translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-04-06 09:16:28 +00:00
parent 64cd4d1704
commit 5bd5bb5da0

View File

@ -1,27 +1,27 @@
---
read_when:
- 设置 Slack 或调试 Slack socket/HTTP 模式
summary: Slack 设置与运行时行为Socket Mode + HTTP 请求 URL
summary: Slack 设置与运行时行为Socket Mode + HTTP Request URLs
title: Slack
x-i18n:
generated_at: "2026-04-06T08:00:44Z"
generated_at: "2026-04-06T09:16:27Z"
model: gpt-5.4
provider: openai
source_hash: 897001c13d400cc8387a27000b82dd4c0512b2b88e2fe47785634aed8b7ab7af
source_hash: 11571e7e10cfbf4de91dc1b1ed6582cd94afdcf6c3356fdd3ccc770096c6dd31
source_path: channels/slack.md
workflow: 15
---
# Slack
状态:已可用于生产环境,支持通过 Slack 应用集成实现私信和渠道。默认模式为 Socket Mode也支持 HTTP 请求 URL
状态:已可用于生产环境,支持通过 Slack 应用集成进行私信 + 渠道。默认模式为 Socket Mode也支持 HTTP Request URLs
<CardGroup cols={3}>
<Card title="配对" icon="link" href="/zh-CN/channels/pairing">
Slack 私信默认使用配对模式。
</Card>
<Card title="斜杠命令" icon="terminal" href="/zh-CN/tools/slash-commands">
原生命令行为命令目录。
原生命令行为命令目录。
</Card>
<Card title="渠道故障排除" icon="wrench" href="/zh-CN/channels/troubleshooting">
跨渠道诊断与修复操作手册。
@ -33,12 +33,13 @@ x-i18n:
<Tabs>
<Tab title="Socket Mode默认">
<Steps>
<Step title="创建 Slack 应用和令牌">
在 Slack 应用设置中:
<Step title="创建新的 Slack 应用">
在 Slack 应用设置中点击 **[Create New App](https://api.slack.com/apps/new)** 按钮
- 启用 **Socket Mode**
- 创建带有 `connections:write` 权限的 **App Token**`xapp-...`
- 安装应用并复制 **Bot Token**`xoxb-...`
- 选择 **from a manifest**,并为你的应用选择一个工作区
- 粘贴下方的[示例清单](#manifest-and-scope-checklist),然后继续创建
- 生成带有 `connections:write`**App-Level Token**`xapp-...`
- 安装应用并复制显示的 **Bot Token**`xoxb-...`
</Step>
<Step title="配置 OpenClaw">
@ -65,19 +66,6 @@ SLACK_BOT_TOKEN=xoxb-...
</Step>
<Step title="订阅应用事件">
为以下事件订阅 bot 事件:
- `app_mention`
- `message.channels`, `message.groups`, `message.im`, `message.mpim`
- `reaction_added`, `reaction_removed`
- `member_joined_channel`, `member_left_channel`
- `channel_rename`
- `pin_added`, `pin_removed`
还要为私信启用 App Home **Messages Tab**
</Step>
<Step title="启动 Gateway 网关">
```bash
@ -89,17 +77,19 @@ openclaw gateway
</Tab>
<Tab title="HTTP 请求 URL">
<Tab title="HTTP Request URLs">
<Steps>
<Step title="为 HTTP 配置 Slack 应用">
<Step title="创建新的 Slack 应用">
在 Slack 应用设置中点击 **[Create New App](https://api.slack.com/apps/new)** 按钮:
- 将模式设置为 HTTP`channels.slack.mode="http"`
- 复制 Slack **Signing Secret**
- 将事件订阅、交互和斜杠命令的 Request URL 设置为相同的 webhook 路径(默认 `/slack/events`
- 选择 **from a manifest**,并为你的应用选择一个工作区
- 粘贴[示例清单](#manifest-and-scope-checklist),并在创建前更新 URL
- 保存用于请求校验的 **Signing Secret**
- 安装应用并复制显示的 **Bot Token**`xoxb-...`
</Step>
<Step title="配置 OpenClaw HTTP 模式">
<Step title="配置 OpenClaw">
```json5
{
@ -115,19 +105,27 @@ openclaw gateway
}
```
<Note>
为多账户 HTTP 使用唯一的 webhook 路径
为每个账户设置不同的 `webhookPath`(默认 `/slack/events`),以避免注册冲突。
</Note>
</Step>
<Step title="为多账户 HTTP 使用唯一的 webhook 路径">
支持按账户配置 HTTP 模式。
<Step title="启动 Gateway 网关">
```bash
openclaw gateway
```
为每个账户设置不同的 `webhookPath`,以避免注册冲突。
</Step>
</Steps>
</Tab>
</Tabs>
## 清单与权限范围检查清单
## 清单与作用域检查清单
<Tabs>
<Tab title="Socket Mode默认">
@ -207,7 +205,7 @@ openclaw gateway
</Tab>
<Tab title="HTTP 请求 URL">
<Tab title="HTTP Request URLs">
```json
{
@ -292,14 +290,14 @@ openclaw gateway
</Tabs>
<AccordionGroup>
<Accordion title="可选作者身份权限范围(写入操作)">
如果你希望发的消息使用当前智能体身份(自定义用户名和图标),而不是默认 Slack 应用身份,请添加 `chat:write.customize` bot scope。
<Accordion title="可选作者身份作用域(写入操作)">
如果你希望发的消息使用当前智能体身份(自定义用户名和图标),而不是默认 Slack 应用身份,请添加 `chat:write.customize` bot scope。
如果你使用表情符号图标Slack 要求采用 `:emoji_name:` 语法。
如果你使用表情符号图标Slack `:emoji_name:` 语法。
</Accordion>
<Accordion title="可选用户令牌权限范围(读取操作)">
如果你配置了 `channels.slack.userToken`,典型的读取权限范围包括:
<Accordion title="可选用户令牌作用域(读取操作)">
如果你配置了 `channels.slack.userToken`,典型读取作用域包括:
- `channels:history`, `groups:history`, `im:history`, `mpim:history`
- `channels:read`, `groups:read`, `im:read`, `mpim:read`
@ -316,33 +314,34 @@ openclaw gateway
- Socket Mode 需要 `botToken` + `appToken`
- HTTP 模式需要 `botToken` + `signingSecret`
- `botToken`、`appToken`、`signingSecret` 和 `userToken` 接受明文字符串或 SecretRef 对象。
- `botToken`、`appToken`、`signingSecret` 和 `userToken` 接受明文
字符串或 SecretRef 对象。
- 配置中的令牌会覆盖环境变量回退值。
- `SLACK_BOT_TOKEN` / `SLACK_APP_TOKEN` 环境变量回退仅适用于默认账户。
- `userToken``xoxp-...`)仅支持通过配置提供(无环境变量回退),且默认是只读行为(`userTokenReadOnly: true`)。
- `userToken``xoxp-...`)仅可通过配置设置(无环境变量回退),且默认仅启用只读行为(`userTokenReadOnly: true`)。
状态快照行为:
- Slack 账户检查会跟踪每个凭证对应的 `*Source``*Status`
字段(`botToken`、`appToken`、`signingSecret`、`userToken`)。
- 状态可以是 `available`、`configured_unavailable` 或 `missing`
- `configured_unavailable` 表示账户通过 SecretRef
或其他非内联密钥来源完成配置,但当前命令或运行时路径
- 状态值为 `available`、`configured_unavailable` 或 `missing`
- `configured_unavailable` 表示账户通过 SecretRef
或其他非内联密钥源完成配置,但当前命令/运行时路径
无法解析实际值。
- 在 HTTP 模式下,会包含 `signingSecretStatus`;在 Socket Mode 下,
所需的一对状态是 `botTokenStatus` + `appTokenStatus`
所需配对为 `botTokenStatus` + `appTokenStatus`
<Tip>
对于操作/目录读取,配置后可以优先使用用户令牌。对于写入,仍优先使用 bot 令牌;只有当 `userTokenReadOnly: false` 且 bot 令牌不可用时,才允许使用用户令牌写入。
对于操作/目录读取,如果已配置用户令牌,则可以优先使用它。对于写入,仍然优先使用 bot 令牌;只有在 `userTokenReadOnly: false` 且 bot 令牌不可用时,才允许使用用户令牌写入。
</Tip>
## 操作与门控
Slack 操作由 `channels.slack.actions.*` 控制。
当前 Slack 工具中可用操作组:
当前 Slack 工具中可用操作组:
| 组 | 默认值 |
| 组 | 默认值 |
| ---------- | ------- |
| messages | 启用 |
| reactions | 启用 |
@ -365,19 +364,19 @@ Slack 操作由 `channels.slack.actions.*` 控制。
私信标志:
- `dm.enabled`(默认 true
- `dm.enabled`(默认 true
- `channels.slack.allowFrom`(推荐)
- `dm.allowFrom`(旧版)
- `dm.groupEnabled`(群组私信默认 false
- `dm.groupEnabled`(群组私信默认 false
- `dm.groupChannels`(可选 MPIM 允许列表)
多账户优先级:
- `channels.slack.accounts.default.allowFrom` 仅适用于 `default` 账户。
- 命名账户自身未设置 `allowFrom` 时,会继承 `channels.slack.allowFrom`
- 命名账户在其自身 `allowFrom` 未设置时,会继承 `channels.slack.allowFrom`
- 命名账户不会继承 `channels.slack.accounts.default.allowFrom`
在私信中配对使用 `openclaw pairing approve slack <code>`
在私信中配对使用 `openclaw pairing approve slack <code>`
</Tab>
@ -388,28 +387,28 @@ Slack 操作由 `channels.slack.actions.*` 控制。
- `allowlist`
- `disabled`
渠道允许列表位于 `channels.slack.channels` 下,并且应使用稳定的渠道 ID。
渠道允许列表位于 `channels.slack.channels` 下,应使用稳定的渠道 ID。
运行时说明:如果 `channels.slack` 完全缺失(仅环境变量设置),运行时会回退到 `groupPolicy="allowlist"` 并记录警告(即使设置了 `channels.defaults.groupPolicy` 也是如此)。
名称/ID 解析:
- 当令牌访问允许时,渠道允许列表项和私信允许列表项会在启动时解析
- 无法解析的渠道名称条目会按原样保留在配置中,但默认不会用于路由
- 渠道允许列表条目和私信允许列表条目会在启动时解析,前提是令牌访问允许
- 无法解析的渠道名称条目会按原配置保留,但默认不会用于路由
- 入站授权和渠道路由默认优先使用 ID直接用户名/slug 匹配需要 `channels.slack.dangerouslyAllowNameMatching: true`
</Tab>
<Tab title="提及与渠道用户">
默认情况下,渠道消息受提及门控限制。
渠道消息默认受提及门控控制。
提及来源:
- 显式应用提及(`<@botId>`
- 提及正则模式(`agents.list[].groupChat.mentionPatterns`,回退到 `messages.groupChat.mentionPatterns`
- 隐式回复 bot 线程行为
- 隐式回复机器人线程行为
渠道控制`channels.slack.channels.<id>`;仅通过启动时解析或 `dangerouslyAllowNameMatching` 使用名称
每渠道控制(`channels.slack.channels.<id>`名称仅通过启动时解析或 `dangerouslyAllowNameMatching` 支持
- `requireMention`
- `users`(允许列表)
@ -418,7 +417,7 @@ Slack 操作由 `channels.slack.actions.*` 控制。
- `systemPrompt`
- `tools`, `toolsBySender`
- `toolsBySender` 键格式:`id:`、`e164:`、`username:`、`name:` 或 `"*"` 通配符
(旧版无前缀键仍只映射到 `id:`
(旧版无前缀键仍只映射到 `id:`
</Tab>
</Tabs>
@ -428,26 +427,26 @@ Slack 操作由 `channels.slack.actions.*` 控制。
- 私信路由为 `direct`;渠道路由为 `channel`MPIM 路由为 `group`
- 使用默认 `session.dmScope=main`Slack 私信会折叠到智能体主会话。
- 渠道会话:`agent:<agentId>:slack:channel:<channelId>`。
- 线程回复适用时创建线程会话后缀的回复`:thread:<threadTs>`)。
- `channels.slack.thread.historyScope` 默认为 `thread``thread.inheritParent` 默认为 `false`
- `channels.slack.thread.initialHistoryLimit` 控制新线程会话开始时抓取多少条现有线程消息(默认 `20`;设为 `0` 可禁用)。
- 线程回复适用时可创建线程会话后缀(`:thread:<threadTs>`)。
- `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:<id>]]`
注意:`replyToMode="off"` 会禁用 Slack 中**所有**回复线程功能,包括显式 `[[reply_to_*]]` 标签。这与 Telegram 不同,在 Telegram 中,显式标签在 `"off"` 模式下仍会生效。此差异反映了平台的线程模型Slack 线程会将消息隐藏在渠道之外,而 Telegram 回复仍会显示在主聊天流中。
注意:`replyToMode="off"` 会禁用 Slack 中**所有**回复线程功能,包括显式 `[[reply_to_*]]` 标签。这与 Telegram 不同,在 Telegram 中,显式标签在 `"off"` 模式下仍会生效。该差异反映了平台线程模型的不同Slack 线程会将消息隐藏在渠道主流之外,而 Telegram 回复仍会显示在主聊天流中。
## Ack 反应
## 确认反应
`ackReaction` 会在 OpenClaw 处理入站消息时发送一个确认表情符号
`ackReaction` 会在 OpenClaw 处理入站消息期间发送一个确认表情
解析顺序:
@ -458,8 +457,8 @@ Slack 操作由 `channels.slack.actions.*` 控制。
说明:
- Slack 要求使用短代码(例如 `"eyes"`)。
- 使用 `""`为该 Slack 账户或全局禁用该反应。
- Slack 需要简码(例如 `"eyes"`)。
- 使用 `""` 可为该 Slack 账户或全局禁用该反应。
## 文本流式传输
@ -470,11 +469,11 @@ Slack 操作由 `channels.slack.actions.*` 控制。
- `block`:追加分块预览更新。
- `progress`:生成期间显示进度状态文本,然后发送最终文本。
`streaming` 为 `partial` 时,`channels.slack.nativeStreaming` 控制 Slack 原生文本流式传输(默认:`true`)。
`channels.slack.nativeStreaming` 控制`streaming``partial` 时的 Slack 原生文本流式传输(默认:`true`)。
- 必须存在回复线程,原生文本流式传输才会显示。线程选择仍遵循 `replyToMode`。如果没有,则使用普通草稿预览。
- 媒体和非文本负载会回退到普通发送方式
- 如果流式传输在回复过程中失败OpenClaw 会对剩余负载回退为普通发送
- 必须有可用的回复线程,原生文本流式传输才会显示。线程选择仍遵循 `replyToMode`。如果没有,则使用常规草稿预览。
- 媒体和非文本负载会回退到常规投递
- 如果流式传输在回复中途失败OpenClaw 会对剩余负载回退到常规投递
使用草稿预览而不是 Slack 原生文本流式传输:
@ -491,12 +490,12 @@ Slack 操作由 `channels.slack.actions.*` 控制。
旧版键:
- `channels.slack.streamMode``replace | status_final | append`)会自动迁移 `channels.slack.streaming`
- 布尔`channels.slack.streaming` 会自动迁移为 `channels.slack.nativeStreaming`
- `channels.slack.streamMode``replace | status_final | append`)会自动迁移 `channels.slack.streaming`
- 布尔`channels.slack.streaming` 会自动迁移到 `channels.slack.nativeStreaming`
## 打字反应回退
## 输入中反应回退
`typingReaction` 会在 OpenClaw 处理回复时为入站 Slack 消息添加一个临时反应,并在运行结束时移除。它在线程回复之外最有用,因为线程回复会使用默认的“正在输入...”状态指示器。
`typingReaction` 会在 OpenClaw 处理回复期间为入站 Slack 消息添加一个临时反应,并在运行结束时将其移除。这在非线程回复场景中尤其有用,因为线程回复会使用默认的“正在输入...”状态指示器。
解析顺序:
@ -505,31 +504,31 @@ Slack 操作由 `channels.slack.actions.*` 控制。
说明:
- Slack 要求使用短代码(例如 `"hourglass_flowing_sand"`)。
- Slack 需要简码(例如 `"hourglass_flowing_sand"`)。
- 该反应为尽力而为,回复完成或失败路径结束后会自动尝试清理。
## 媒体、分块与发送
## 媒体、分块与投递
<AccordionGroup>
<Accordion title="入站附件">
Slack 文件附件会从 Slack 托管的私有 URL 下载(使用令牌认证请求流程),并在抓取成功且大小限制允许时写入媒体存储。
Slack 文件附件会通过 Slack 托管的私有 URL 下载(使用基于令牌认证的请求流程),并在抓取成功且大小限制允许时写入媒体存储。
运行时入站大小上限默认`20MB`,除非通过 `channels.slack.mediaMaxMb` 覆盖。
运行时入站大小上限默认`20MB`,除非被 `channels.slack.mediaMaxMb` 覆盖。
</Accordion>
<Accordion title="出站文本与文件">
- 文本分块使用 `channels.slack.textChunkLimit`(默认 4000
- `channels.slack.chunkMode="newline"` 启用按段落优先拆分
- `channels.slack.chunkMode="newline"` 启用优先按段落拆分
- 文件发送使用 Slack 上传 API并可包含线程回复`thread_ts`
- 配置 `channels.slack.mediaMaxMb` 时,出站媒体上限遵循该值;否则,渠道发送使用媒体管道中的 MIME 类型默认值
- 如果配置了 `channels.slack.mediaMaxMb`,出站媒体上限会遵循它;否则渠道发送会使用媒体管线中的 MIME 类型默认值
</Accordion>
<Accordion title="发送目标">
推荐的显式目标:
<Accordion title="投递目标">
首选显式目标:
- 私信用 `user:<id>`
- 渠道用 `channel:<id>`
- `user:<id>` 用于私信
- `channel:<id>` 用于渠道
向用户目标发送时Slack 私信会通过 Slack 会话 API 打开。
@ -541,14 +540,14 @@ Slack 操作由 `channels.slack.actions.*` 控制。
- Slack 的原生命令自动模式默认**关闭**`commands.native: "auto"` 不会启用 Slack 原生命令)。
- 使用 `channels.slack.commands.native: true`(或全局 `commands.native: true`)启用原生 Slack 命令处理器。
- 启用原生命令后,在 Slack 中注册匹配的斜杠命令(`/<command>` 名称),但有一个例外:
- 为状态命令注册 `/agentstatus`Slack 保留 `/status`
- 如果未启用原生命令,你可以通过 `channels.slack.slashCommand` 运行单个已配置的斜杠命令。
- 为状态命令注册 `/agentstatus`Slack 保留 `/status`
- 如果未启用原生命令,则可以通过 `channels.slack.slashCommand` 运行一个已配置的单一斜杠命令。
- 原生参数菜单现在会自适应其渲染策略:
- 最多 5 个选项:按钮块
- 6-100 个选项:静态选择菜单
- 超过 100 个选项:当交互选项处理器可用时,使用带异步选项过滤的外部选择
- 超过 100 个选项:在可用交互选项处理器时,使用带异步选项过滤的外部选择
- 如果编码后的选项值超出 Slack 限制,流程会回退为按钮
- 对于较长的选项负载,斜杠命令参数菜单会在分发所选值前使用确认对话框。
- 对于较长的选项负载,斜杠命令参数菜单会在分发所选值前使用确认对话框。
默认斜杠命令设置:
@ -561,11 +560,11 @@ Slack 操作由 `channels.slack.actions.*` 控制。
- `agent:<agentId>:slack:slash:<userId>`
并且仍会根据目标会话来路由命令执行`CommandTargetSessionKey`)。
并且仍会针对目标会话执行命令路由`CommandTargetSessionKey`)。
## 交互式回复
Slack 可以渲染由智能体生成的交互式回复控件,但该功能默认关闭
Slack 可以渲染由智能体编写的交互式回复控件,但该功能默认禁用
全局启用:
@ -581,7 +580,7 @@ Slack 可以渲染由智能体生成的交互式回复控件,但该功能默
}
```
或者仅为个 Slack 账户启用:
或者仅为个 Slack 账户启用:
```json5
{
@ -604,30 +603,30 @@ 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 指令转换它们自己的按钮系统。
- 交互回调值是 OpenClaw 生成的不透明令牌,不是智能体原始编写的值。
- 如果生成的交互块超出 Slack Block Kit 限制OpenClaw 会回退原始文本回复,而不是发送无效的 blocks 负载。
- 这是 Slack 专用 UI。其他渠道不会将 Slack Block Kit 指令转换它们自己的按钮系统。
- 交互回调值是 OpenClaw 生成的不透明令牌,不是智能体原始编写的值。
- 如果生成的交互块超出 Slack Block Kit 限制OpenClaw 会回退原始文本回复,而不是发送无效的 blocks 负载。
## Slack 中的 Exec 审批
Slack 可以作为原生审批客户端,使用交互按钮和交互事件,而不是回退到 Web UI 或终端。
- Exec 审批使用 `channels.slack.execApprovals.*` 进行原生私信/渠道路由。
- 当请求已落在 Slack 中且审批 ID 类型为 `plugin:` 时,插件审批仍可通过同一个 Slack 原生按钮界面完成
- 当请求已落入 Slack 且审批 ID 类型为 `plugin:` 时,插件审批仍可通过同一个 Slack 原生按钮界面处理
- 审批人授权仍会被强制执行:只有被识别为审批人的用户才能通过 Slack 批准或拒绝请求。
这使用与其他渠道相同的共享审批按钮界面。当你在 Slack 应用设置中启用 `interactivity` 时,审批提示会直接以 Block Kit 按钮形式渲染在会话中
当这些按钮存在时,它们就是主要审批 UX只有当工具结果表明聊天审批不可用,或手动审批是唯一途径时,OpenClaw
包含手动 `/approve` 命令。
这使用与其他渠道相同的共享审批按钮界面。当你的 Slack 应用设置中启用了 `interactivity` 时,审批提示会直接在对话中渲染为 Block Kit 按钮
当这些按钮存在时,它们就是主要审批 UXOpenClaw
仅应在工具结果表明聊天审批不可用或手动审批是唯一可行路径时,才包含手动 `/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`
@ -635,7 +634,7 @@ Slack 可以作为原生审批客户端,使用交互按钮和交互事件,
审批人时Slack 会自动启用原生 exec 审批。设置 `enabled: false` 可显式禁用 Slack 作为原生审批客户端。
设置 `enabled: true` 可在审批人解析成功时强制启用原生审批。
没有显式 Slack exec 审批配置时的默认行为:
没有显式 Slack exec 审批配置时的默认行为:
```json5
{
@ -646,7 +645,7 @@ Slack 可以作为原生审批客户端,使用交互按钮和交互事件,
```
只有在你想覆盖审批人、添加过滤器,或
选择将其发送到源聊天时,才需要显式的 Slack 原生配置:
选择加入原始聊天投递时,才需要显式 Slack 原生配置:
```json5
{
@ -662,23 +661,24 @@ Slack 可以作为原生审批客户端,使用交互按钮和交互事件,
}
```
共享 `approvals.exec` 转发是单独的。仅当 exec 审批提示还必须
路由到其他聊天或显式带外目标时才使用它。共享 `approvals.plugin` 转发也是
单独的;当这些请求已经落在 Slack 中时Slack 原生按钮仍可解析插件审批。
共享 `approvals.exec` 转发是独立的。仅当 exec 审批提示还必须
路由到其他聊天或显式的带外目标时才使用它。共享 `approvals.plugin` 转发也
是独立的;当这些请求已经落入
Slack 时Slack 原生按钮仍可处理插件审批。
聊天中的 `/approve` 在已支持命令的 Slack 渠道和私信中也可使用。有关完整审批转发模型,请参阅 [Exec approvals](/zh-CN/tools/exec-approvals)。
一聊天中的 `/approve` 也可在已支持命令的 Slack 渠道和私信中使用。完整审批转发模型请参阅[Exec 审批](/zh-CN/tools/exec-approvals)。
## 事件与运行行为
- 消息编辑/删除/线程广播会映射为系统事件。
- 反应添加/移除事件会映射为系统事件。
- 成员加入/离开、渠道创建/重命名以及固定消息添加/移除事件会映射为系统事件。
- 添加/移除反应事件会映射为系统事件。
- 成员加入/离开、渠道创建/重命名以及添加/移除 pin 事件会映射为系统事件。
- 当启用 `configWrites` 时,`channel_id_changed` 可以迁移渠道配置键。
- 渠道 topic/purpose 元数据会被视为不可信上下文,并可注入到路由上下文中。
- 在线程发起者和初始线程历史上下文播种适用时,会按已配置的发送者允许列表进行过滤。
- Block 操作和模态交互会发出结构化的 `Slack interaction: ...` 系统事件,并带有丰富的负载字段:
- block 操作:所选值、标签、选择器值 `workflow_*` 元数据
- 模态 `view_submission``view_closed` 事件,带有路由后的渠道元数据和表单输入
- 在线程发起者和初始线程历史上下文注入时,会在适用情况下按已配置的发送者允许列表进行过滤。
- Block 操作和模态交互会发出结构化的 `Slack interaction: ...` 系统事件,并带有丰富的负载字段:
- block 操作:所选值、标签、选择器值,以及 `workflow_*` 元数据
- 模态 `view_submission``view_closed` 事件,附带已路由的渠道元数据和表单输入
## 配置参考指针
@ -687,12 +687,12 @@ Slack 可以作为原生审批客户端,使用交互按钮和交互事件,
- [配置参考 - Slack](/zh-CN/gateway/configuration-reference#slack)
高信号 Slack 字段:
- 模式/认证`mode`、`botToken`、`appToken`、`signingSecret`、`webhookPath`、`accounts.*`
- mode/auth`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`
- 投递`textChunkLimit`、`chunkMode`、`mediaMaxMb`、`streaming`、`nativeStreaming`
- 运维/功能:`configWrites`、`commands.native`、`slashCommand.*`、`actions.*`、`userToken`、`userTokenReadOnly`
## 故障排除
@ -704,7 +704,7 @@ Slack 可以作为原生审批客户端,使用交互按钮和交互事件,
- `groupPolicy`
- 渠道允许列表(`channels.slack.channels`
- `requireMention`
- 每渠道 `users` 允许列表
- 每渠道 `users` 允许列表
有用的命令:
@ -721,7 +721,7 @@ openclaw doctor
- `channels.slack.dm.enabled`
- `channels.slack.dmPolicy`(或旧版 `channels.slack.dm.policy`
- 配对审批/允许列表条目
- 配对审批 / 允许列表条目
```bash
openclaw pairing list slack
@ -730,34 +730,34 @@ openclaw pairing list slack
</Accordion>
<Accordion title="Socket 模式未连接">
验证 bot 和 app 令牌,以及 Slack 应用设置中是否启用了 Socket Mode
验证 bot + app 令牌,以及 Slack 应用设置中的 Socket Mode 是否已启用
如果 `openclaw channels status --probe --json` 显示 `botTokenStatus`
`appTokenStatus: "configured_unavailable"`说明该 Slack 账户
完成配置,但当前运行时无法解析由 SecretRef 支持的
`appTokenStatus: "configured_unavailable"`则表示该 Slack 账户
已配置,但当前运行时无法解析由 SecretRef 支持的
实际值。
</Accordion>
<Accordion title="HTTP 模式未接收事件">
<Accordion title="HTTP 模式未接收事件">
验证:
- signing secret
- webhook 路径
- Slack Request URL(事件 + 交互 + 斜杠命令
- Slack Request URLsEvents + Interactivity + Slash Commands
- 每个 HTTP 账户使用唯一的 `webhookPath`
如果账户快照中出现 `signingSecretStatus: "configured_unavailable"`
说明该 HTTP 账户已完成配置,但当前运行时无法
则表示该 HTTP 账户已配置,但当前运行时无法
解析由 SecretRef 支持的 signing secret。
</Accordion>
<Accordion title="原生命令/斜杠命令未触发">
确认你想的是:
确认你想使用的是:
- 原生命令模式(`channels.slack.commands.native: true`),并在 Slack 中注册匹配的斜杠命令
- 或单斜杠命令模式(`channels.slack.slashCommand.enabled: true`
- 或单斜杠命令模式(`channels.slack.slashCommand.enabled: true`
还要检查 `commands.useAccessGroups` 以及渠道/用户允许列表。