chore(i18n): refresh zh-CN translations
This commit is contained in:
parent
7fdab0494f
commit
eb8babb460
@ -1,30 +1,30 @@
|
||||
---
|
||||
read_when:
|
||||
- 设置 Slack 或调试 Slack socket/HTTP 模式
|
||||
- 设置 Slack 或调试 Slack Socket/HTTP 模式
|
||||
summary: Slack 设置与运行时行为(Socket Mode + HTTP Events API)
|
||||
title: Slack
|
||||
x-i18n:
|
||||
generated_at: "2026-04-05T08:18:58Z"
|
||||
generated_at: "2026-04-05T20:43:22Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: efb37e1f04e1ac8ac3786c36ffc20013dacdc654bfa61e7f6e8df89c4902d2ab
|
||||
source_hash: 7e4ff2ce7d92276d62f4f3d3693ddb56ca163d5fdc2f1082ff7ba3421fada69c
|
||||
source_path: channels/slack.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# Slack
|
||||
|
||||
状态:已达到生产可用,可通过 Slack 应用集成支持私信和渠道。默认模式为 Socket Mode,也支持 HTTP Events API 模式。
|
||||
状态:已可用于生产环境,支持通过 Slack 应用集成进行私信和渠道通信。默认模式为 Socket Mode;也支持 HTTP Events API 模式。
|
||||
|
||||
<CardGroup cols={3}>
|
||||
<Card title="配对" icon="link" href="/channels/pairing">
|
||||
<Card title="配对" icon="link" href="/zh-CN/channels/pairing">
|
||||
Slack 私信默认使用配对模式。
|
||||
</Card>
|
||||
<Card title="斜杠命令" icon="terminal" href="/tools/slash-commands">
|
||||
<Card title="斜杠命令" icon="terminal" href="/zh-CN/tools/slash-commands">
|
||||
原生命令行为与命令目录。
|
||||
</Card>
|
||||
<Card title="渠道故障排除" icon="wrench" href="/channels/troubleshooting">
|
||||
跨渠道诊断与修复手册。
|
||||
<Card title="渠道故障排除" icon="wrench" href="/zh-CN/channels/troubleshooting">
|
||||
跨渠道诊断与修复操作手册。
|
||||
</Card>
|
||||
</CardGroup>
|
||||
|
||||
@ -66,7 +66,7 @@ SLACK_BOT_TOKEN=xoxb-...
|
||||
</Step>
|
||||
|
||||
<Step title="订阅应用事件">
|
||||
为以下事件订阅 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**。
|
||||
</Step>
|
||||
|
||||
<Step title="启动 Gateway 网关">
|
||||
@ -93,9 +93,9 @@ openclaw gateway
|
||||
<Steps>
|
||||
<Step title="为 HTTP 配置 Slack 应用">
|
||||
|
||||
- 将模式设置为 HTTP(`channels.slack.mode="http"`)
|
||||
- 将模式设为 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`)
|
||||
|
||||
</Step>
|
||||
|
||||
@ -118,19 +118,19 @@ openclaw gateway
|
||||
</Step>
|
||||
|
||||
<Step title="为多账户 HTTP 使用唯一的 webhook 路径">
|
||||
支持按账户分别配置 HTTP 模式。
|
||||
支持按账户配置 HTTP 模式。
|
||||
|
||||
为每个账户提供不同的 `webhookPath`,以避免注册冲突。
|
||||
为每个账户指定不同的 `webhookPath`,避免注册冲突。
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## Manifest 和 scope 检查清单
|
||||
## 清单与作用域检查清单
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Slack 应用 manifest 示例" defaultOpen>
|
||||
<Accordion title="Slack 应用清单示例" defaultOpen>
|
||||
|
||||
```json
|
||||
{
|
||||
@ -207,8 +207,8 @@ openclaw gateway
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="可选的用户令牌 scopes(读取操作)">
|
||||
如果你配置了 `channels.slack.userToken`,常见的读取 scope 包括:
|
||||
<Accordion title="可选的用户令牌作用域(读取操作)">
|
||||
如果你配置了 `channels.slack.userToken`,典型的读取作用域包括:
|
||||
|
||||
- `channels:history`, `groups:history`, `im:history`, `mpim:history`
|
||||
- `channels:read`, `groups:read`, `im:read`, `mpim:read`
|
||||
@ -225,28 +225,33 @@ 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`)。
|
||||
- 可选:如果你希望出站消息使用当前智能体身份(自定义 `username` 和图标),可添加 `chat:write.customize`。`icon_emoji` 使用 `:emoji_name:` 语法。
|
||||
- `userToken`(`xoxp-...`)仅支持通过配置提供(无环境变量回退),并默认采用只读行为(`userTokenReadOnly: true`)。
|
||||
- 可选:如果你希望发送消息使用当前智能体身份(自定义 `username` 和图标),可添加 `chat:write.customize`。`icon_emoji` 使用 `:emoji_name:` 语法。
|
||||
|
||||
状态快照行为:
|
||||
|
||||
- Slack 账户检查会跟踪每个凭证的 `*Source` 和 `*Status` 字段(`botToken`、`appToken`、`signingSecret`、`userToken`)。
|
||||
- 状态值为 `available`、`configured_unavailable` 或 `missing`。
|
||||
- `configured_unavailable` 表示该账户通过 SecretRef 或其他非内联密钥来源完成了配置,但当前命令/运行时路径无法解析实际值。
|
||||
- 在 HTTP 模式下,会包含 `signingSecretStatus`;在 Socket Mode 下,必需的配对是 `botTokenStatus` + `appTokenStatus`。
|
||||
- Slack 账户检查会跟踪每项凭证对应的 `*Source` 和 `*Status`
|
||||
字段(`botToken`、`appToken`、`signingSecret`、`userToken`)。
|
||||
- 状态可能为 `available`、`configured_unavailable` 或 `missing`。
|
||||
- `configured_unavailable` 表示该账户通过 SecretRef
|
||||
或其他非内联密钥来源完成了配置,但当前命令/运行时路径
|
||||
无法解析出实际值。
|
||||
- 在 HTTP 模式下,会包含 `signingSecretStatus`;在 Socket Mode 下,
|
||||
必需的配对是 `botTokenStatus` + `appTokenStatus`。
|
||||
|
||||
<Tip>
|
||||
对于操作/目录读取,如果已配置用户令牌,则可优先使用用户令牌。对于写入操作,仍优先使用 bot 令牌;只有当 `userTokenReadOnly: false` 且 bot 令牌不可用时,才允许使用用户令牌进行写入。
|
||||
对于操作/目录读取,如果已配置用户令牌,则可以优先使用用户令牌。对于写入,仍优先使用机器人令牌;只有当 `userTokenReadOnly: false` 且机器人令牌不可用时,才允许使用用户令牌执行写入。
|
||||
</Tip>
|
||||
|
||||
## 操作与门控
|
||||
|
||||
Slack 操作由 `channels.slack.actions.*` 控制。
|
||||
|
||||
当前 Slack 工具中可用的操作组:
|
||||
当前 Slack 工具中的可用操作组:
|
||||
|
||||
| 组 | 默认值 |
|
||||
| ---------- | ------- |
|
||||
@ -280,10 +285,10 @@ Slack 操作由 `channels.slack.actions.*` 控制。
|
||||
多账户优先级:
|
||||
|
||||
- `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>
|
||||
|
||||
@ -296,13 +301,13 @@ Slack 操作由 `channels.slack.actions.*` 控制。
|
||||
|
||||
渠道允许列表位于 `channels.slack.channels` 下,应使用稳定的渠道 ID。
|
||||
|
||||
运行时说明:如果完全缺少 `channels.slack`(仅使用环境变量设置),运行时会回退为 `groupPolicy="allowlist"` 并记录警告(即使设置了 `channels.defaults.groupPolicy` 也是如此)。
|
||||
运行时说明:如果 `channels.slack` 完全缺失(仅环境变量设置),运行时将回退到 `groupPolicy="allowlist"` 并记录警告(即使设置了 `channels.defaults.groupPolicy` 也是如此)。
|
||||
|
||||
名称/ID 解析:
|
||||
|
||||
- 当令牌访问允许时,渠道允许列表条目和私信允许列表条目会在启动时解析
|
||||
- 无法解析的渠道名称条目会按配置保留,但默认会在路由中被忽略
|
||||
- 入站授权和渠道路由默认优先使用 ID;只有设置 `channels.slack.dangerouslyAllowNameMatching: true` 时,才会直接按用户名/slug 匹配
|
||||
- 无法解析的渠道名称条目会按配置保留,但默认不会用于路由
|
||||
- 入站授权和渠道路由默认优先使用 ID;若要直接按用户名/slug 匹配,需要设置 `channels.slack.dangerouslyAllowNameMatching: true`
|
||||
|
||||
</Tab>
|
||||
|
||||
@ -312,10 +317,10 @@ Slack 操作由 `channels.slack.actions.*` 控制。
|
||||
提及来源:
|
||||
|
||||
- 显式应用提及(`<@botId>`)
|
||||
- 提及正则模式(`agents.list[].groupChat.mentionPatterns`,回退到 `messages.groupChat.mentionPatterns`)
|
||||
- 提及正则模式(`agents.list[].groupChat.mentionPatterns`,回退为 `messages.groupChat.mentionPatterns`)
|
||||
- 隐式回复机器人线程行为
|
||||
|
||||
按渠道的控制项(`channels.slack.channels.<id>`;名称仅通过启动时解析或 `dangerouslyAllowNameMatching` 支持):
|
||||
按渠道控制(`channels.slack.channels.<id>`;名称仅通过启动解析或 `dangerouslyAllowNameMatching` 支持):
|
||||
|
||||
- `requireMention`
|
||||
- `users`(允许列表)
|
||||
@ -323,25 +328,25 @@ Slack 操作由 `channels.slack.actions.*` 控制。
|
||||
- `skills`
|
||||
- `systemPrompt`
|
||||
- `tools`, `toolsBySender`
|
||||
- `toolsBySender` 键格式:`id:`、`e164:`、`username:`、`name:` 或 `"*"` 通配符
|
||||
(旧版无前缀键仍只映射为 `id:`)
|
||||
- `toolsBySender` 键格式:`id:`、`e164:`、`username:`、`name:`,或 `"*"` 通配符
|
||||
(旧版无前缀键仍只映射到 `id:`)
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## 线程、会话和回复标签
|
||||
## 线程、会话与回复标签
|
||||
|
||||
- 私信路由为 `direct`;渠道为 `channel`;MPIM 为 `group`。
|
||||
- 使用默认 `session.dmScope=main` 时,Slack 私信会合并到智能体主会话。
|
||||
- 使用默认 `session.dmScope=main` 时,Slack 私信会折叠到智能体主会话。
|
||||
- 渠道会话:`agent:<agentId>:slack:channel:<channelId>`。
|
||||
- 在线程回复适用时,线程回复可创建线程会话后缀(`:thread:<threadTs>`)。
|
||||
- 在线程回复适用时,可创建线程会话后缀(`:thread:<threadTs>`)。
|
||||
- `channels.slack.thread.historyScope` 默认值为 `thread`;`thread.inheritParent` 默认值为 `false`。
|
||||
- `channels.slack.thread.initialHistoryLimit` 控制新线程会话启动时抓取多少现有线程消息(默认 `20`;设置为 `0` 可禁用)。
|
||||
- `channels.slack.thread.initialHistoryLimit` 控制新线程会话启动时会抓取多少现有线程消息(默认 `20`;设为 `0` 可禁用)。
|
||||
|
||||
回复线程控制:
|
||||
|
||||
- `channels.slack.replyToMode`:`off|first|all`(默认 `off`)
|
||||
- `channels.slack.replyToModeByChatType`:按 `direct|group|channel` 分别设置
|
||||
- `channels.slack.replyToMode`:`off|first|all|batched`(默认 `off`)
|
||||
- `channels.slack.replyToModeByChatType`:按 `direct|group|channel` 分别配置
|
||||
- 私聊的旧版回退:`channels.slack.dm.replyToMode`
|
||||
|
||||
支持手动回复标签:
|
||||
@ -349,11 +354,11 @@ Slack 操作由 `channels.slack.actions.*` 控制。
|
||||
- `[[reply_to_current]]`
|
||||
- `[[reply_to:<id>]]`
|
||||
|
||||
注意:`replyToMode="off"` 会禁用 Slack 中的**所有**回复线程功能,包括显式 `[[reply_to_*]]` 标签。这与 Telegram 不同:在 `"off"` 模式下,Telegram 仍会遵循显式标签。这个差异反映了平台的线程模型:Slack 线程会将消息隐藏在渠道之外,而 Telegram 回复仍会显示在主聊天流中。
|
||||
注意:`replyToMode="off"` 会禁用 Slack 中的**所有**回复线程行为,包括显式 `[[reply_to_*]]` 标签。这与 Telegram 不同,在 Telegram 中,即使在 `"off"` 模式下也仍会遵循显式标签。之所以不同,是因为平台线程模型不同:Slack 线程会将消息隐藏在渠道主流之外,而 Telegram 回复仍会显示在主聊天流中。
|
||||
|
||||
## 确认反应
|
||||
## 确认表情回应
|
||||
|
||||
`ackReaction` 会在 OpenClaw 处理入站消息时发送一个确认 emoji。
|
||||
`ackReaction` 会在 OpenClaw 处理入站消息期间发送一个确认表情。
|
||||
|
||||
解析顺序:
|
||||
|
||||
@ -364,8 +369,8 @@ Slack 操作由 `channels.slack.actions.*` 控制。
|
||||
|
||||
说明:
|
||||
|
||||
- Slack 需要使用 shortcode(例如 `"eyes"`)。
|
||||
- 使用 `""` 可为某个 Slack 账户或全局禁用该反应。
|
||||
- Slack 需要使用短代码(例如 `"eyes"`)。
|
||||
- 使用 `""` 可为某个 Slack 账户或全局禁用该表情回应。
|
||||
|
||||
## 文本流式传输
|
||||
|
||||
@ -379,10 +384,10 @@ Slack 操作由 `channels.slack.actions.*` 控制。
|
||||
当 `streaming` 为 `partial` 时,`channels.slack.nativeStreaming` 控制 Slack 原生文本流式传输(默认:`true`)。
|
||||
|
||||
- 必须有可用的回复线程,原生文本流式传输才会显示。线程选择仍遵循 `replyToMode`。如果没有,则使用普通草稿预览。
|
||||
- 媒体和非文本负载会回退为普通投递。
|
||||
- 如果流式传输在回复中途失败,OpenClaw 会对剩余负载回退为普通投递。
|
||||
- 媒体和非文本负载会回退到普通投递。
|
||||
- 如果流式传输在回复中途失败,OpenClaw 会将剩余负载回退为普通投递。
|
||||
|
||||
使用草稿预览而不是 Slack 原生文本流式传输:
|
||||
如果要使用草稿预览而不是 Slack 原生文本流式传输:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -398,11 +403,11 @@ Slack 操作由 `channels.slack.actions.*` 控制。
|
||||
旧版键:
|
||||
|
||||
- `channels.slack.streamMode`(`replace | status_final | append`)会自动迁移到 `channels.slack.streaming`。
|
||||
- 布尔值 `channels.slack.streaming` 会自动迁移到 `channels.slack.nativeStreaming`。
|
||||
- 布尔型 `channels.slack.streaming` 会自动迁移到 `channels.slack.nativeStreaming`。
|
||||
|
||||
## 输入中反应回退
|
||||
## 输入中表情回应回退
|
||||
|
||||
`typingReaction` 会在 OpenClaw 处理回复期间,向入站 Slack 消息添加一个临时反应,并在运行结束时将其移除。这在非线程回复场景下最有用,因为线程回复会使用默认的“正在输入...”状态指示器。
|
||||
`typingReaction` 会在 OpenClaw 处理回复期间,为入站 Slack 消息添加一个临时表情回应,并在运行结束后移除。在非线程回复场景中,这最有用,因为线程回复会使用默认的“正在输入...”状态指示器。
|
||||
|
||||
解析顺序:
|
||||
|
||||
@ -411,33 +416,33 @@ Slack 操作由 `channels.slack.actions.*` 控制。
|
||||
|
||||
说明:
|
||||
|
||||
- Slack 需要使用 shortcode(例如 `"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="出站文本和文件">
|
||||
<Accordion title="出站文本与文件">
|
||||
- 文本分块使用 `channels.slack.textChunkLimit`(默认 4000)
|
||||
- `channels.slack.chunkMode="newline"` 启用优先按段落拆分
|
||||
- 文件发送使用 Slack 上传 API,并可包含线程回复(`thread_ts`)
|
||||
- 配置了 `channels.slack.mediaMaxMb` 时,出站媒体上限遵循该值;否则渠道发送使用媒体流水线中的 MIME 类型默认值
|
||||
- 如果配置了 `channels.slack.mediaMaxMb`,则出站媒体上限遵循该值;否则渠道发送会使用媒体流水线中的 MIME 类型默认值
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="投递目标">
|
||||
首选的显式目标:
|
||||
推荐使用显式目标:
|
||||
|
||||
- 私信用 `user:<id>`
|
||||
- 渠道用 `channel:<id>`
|
||||
- `user:<id>` 用于私信
|
||||
- `channel:<id>` 用于渠道
|
||||
|
||||
向用户目标发送时,Slack 私信会通过 Slack 会话 API 打开。
|
||||
发送到用户目标时,Slack 私信会通过 Slack conversation API 打开。
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
@ -445,16 +450,16 @@ 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.commands.native: true`(或全局 `commands.native: true`)启用 Slack 原生命令处理器。
|
||||
- 启用原生命令后,需要在 Slack 中注册对应的斜杠命令(`/<command>` 名称),但有一个例外:
|
||||
- 状态命令请注册 `/agentstatus`(Slack 保留了 `/status`)
|
||||
- 如果未启用原生命令,你可以通过 `channels.slack.slashCommand` 运行单个已配置的斜杠命令。
|
||||
- 原生参数菜单现在会自适应其渲染策略:
|
||||
- 最多 5 个选项:按钮块
|
||||
- 6-100 个选项:静态选择菜单
|
||||
- 超过 100 个选项:当提供交互选项处理器时,使用带异步选项过滤的外部选择
|
||||
- 超过 100 个选项:当可用交互选项处理器时,使用带异步选项过滤的外部选择
|
||||
- 如果编码后的选项值超出 Slack 限制,流程会回退为按钮
|
||||
- 对于较长的选项负载,斜杠命令参数菜单会在分发所选值之前显示确认对话框。
|
||||
- 对于较长的选项负载,斜杠命令参数菜单会在分发所选值之前使用确认对话框。
|
||||
|
||||
默认斜杠命令设置:
|
||||
|
||||
@ -467,13 +472,13 @@ Slack 操作由 `channels.slack.actions.*` 控制。
|
||||
|
||||
- `agent:<agentId>:slack:slash:<userId>`
|
||||
|
||||
并且仍会针对目标会话路由命令执行(`CommandTargetSessionKey`)。
|
||||
并且仍会针对目标对话会话(`CommandTargetSessionKey`)路由命令执行。
|
||||
|
||||
## 交互式回复
|
||||
|
||||
Slack 可以渲染由智能体生成的交互式回复控件,但此功能默认禁用。
|
||||
|
||||
全局启用方式:
|
||||
全局启用:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -487,7 +492,7 @@ Slack 可以渲染由智能体生成的交互式回复控件,但此功能默
|
||||
}
|
||||
```
|
||||
|
||||
或仅为一个 Slack 账户启用:
|
||||
或仅为某个 Slack 账户启用:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -505,38 +510,40 @@ 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 指令转换为它们自己的按钮系统。
|
||||
- 交互回调值是 OpenClaw 生成的不透明令牌,不是智能体原始编写的值。
|
||||
- 如果生成的交互块超出 Slack Block Kit 限制,OpenClaw 会回退为原始文本回复,而不是发送无效的 blocks 负载。
|
||||
- 这是 Slack 专用 UI。其他渠道不会将 Slack Block Kit 指令翻译为它们自己的按钮系统。
|
||||
- 交互回调值是 OpenClaw 生成的不透明令牌,而不是智能体原始编写的值。
|
||||
- 如果生成的交互块会超出 Slack Block Kit 限制,OpenClaw 会回退为原始文本回复,而不是发送无效的块负载。
|
||||
|
||||
## Slack 中的 exec 审批
|
||||
## Slack 中的 Exec 审批
|
||||
|
||||
Slack 可以作为原生审批客户端,使用交互按钮和交互事件,而不是回退到 Web UI 或终端。
|
||||
|
||||
- Exec 审批使用 `channels.slack.execApprovals.*` 进行原生私信/渠道路由。
|
||||
- 如果请求已经落在 Slack 中且审批 ID 类型为 `plugin:`,插件审批仍可通过同一个 Slack 原生按钮界面处理。
|
||||
- 审批人授权仍然会被强制执行:只有被识别为审批人的用户,才能通过 Slack 批准或拒绝请求。
|
||||
- 当请求已经落在 Slack 中且审批 ID 类型为 `plugin:` 时,插件审批仍可通过同一个 Slack 原生按钮界面进行处理。
|
||||
- 审批人授权仍会被强制执行:只有被识别为审批人的用户才能通过 Slack 批准或拒绝请求。
|
||||
|
||||
这使用与其他渠道相同的共享审批按钮界面。当你在 Slack 应用设置中启用了 `interactivity` 时,审批提示会直接在会话中渲染为 Block Kit 按钮。
|
||||
当这些按钮存在时,它们就是主要审批 UX;只有当工具结果表明聊天审批不可用,或手动审批是唯一途径时,OpenClaw 才应包含手动 `/approve` 命令。
|
||||
这使用与其他渠道相同的共享审批按钮界面。当你在 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` 未设置或为 `"auto"` 且至少解析出一名
|
||||
审批人时,Slack 会自动启用原生 exec 审批。设置 `enabled: false` 可显式禁用 Slack 作为原生审批客户端。
|
||||
设置 `enabled: true` 可在审批人解析成功时强制启用原生审批。
|
||||
|
||||
在没有显式 Slack exec 审批配置时的默认行为:
|
||||
@ -549,7 +556,8 @@ Slack 可以作为原生审批客户端,使用交互按钮和交互事件,
|
||||
}
|
||||
```
|
||||
|
||||
只有当你想覆盖审批人、添加过滤器或选择向来源聊天投递时,才需要显式 Slack 原生配置:
|
||||
只有当你想覆盖审批人、添加过滤器或
|
||||
选择源聊天投递时,才需要显式 Slack 原生配置:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -565,27 +573,30 @@ Slack 可以作为原生审批客户端,使用交互按钮和交互事件,
|
||||
}
|
||||
```
|
||||
|
||||
共享的 `approvals.exec` 转发是独立的。仅当 exec 审批提示还必须路由到其他聊天或显式带外目标时才使用它。共享的 `approvals.plugin` 转发也是独立的;当这些请求已经落在 Slack 中时,Slack 原生按钮仍可处理插件审批。
|
||||
共享 `approvals.exec` 转发是独立功能。只有当 exec 审批提示还必须
|
||||
路由到其他聊天或显式的带外目标时,才使用它。共享 `approvals.plugin` 转发也
|
||||
是独立功能;当这些请求已经落在 Slack
|
||||
中时,Slack 原生按钮仍可处理插件审批。
|
||||
|
||||
同一聊天中的 `/approve` 也可在已支持命令的 Slack 渠道和私信中使用。有关完整的审批转发模型,请参阅 [Exec approvals](/tools/exec-approvals)。
|
||||
同一聊天中的 `/approve` 也可在已支持命令的 Slack 渠道和私信中使用。完整的审批转发模型,请参见 [Exec approvals](/zh-CN/tools/exec-approvals)。
|
||||
|
||||
## 事件与运行行为
|
||||
|
||||
- 消息编辑/删除/线程广播会映射为系统事件。
|
||||
- 添加/移除反应事件会映射为系统事件。
|
||||
- 成员加入/离开、渠道创建/重命名以及添加/移除置顶事件会映射为系统事件。
|
||||
- 添加/移除表情回应事件会映射为系统事件。
|
||||
- 成员加入/离开、渠道创建/重命名,以及添加/移除置顶事件都会映射为系统事件。
|
||||
- 当启用 `configWrites` 时,`channel_id_changed` 可以迁移渠道配置键。
|
||||
- 渠道 topic/purpose 元数据被视为不可信上下文,并可注入到路由上下文中。
|
||||
- 在线程发起者和初始线程历史上下文植入时,会在适用情况下按配置的发送者允许列表进行过滤。
|
||||
- Block action 和 modal 交互会发出结构化的 `Slack interaction: ...` 系统事件,并携带丰富的负载字段:
|
||||
- block action:选定值、标签、picker 值以及 `workflow_*` 元数据
|
||||
- modal `view_submission` 和 `view_closed` 事件,包含已路由的渠道元数据和表单输入
|
||||
- 渠道 topic/purpose 元数据被视为不可信上下文,可注入到路由上下文中。
|
||||
- 线程发起者和初始线程历史上下文播种会在适用时按配置的发送者允许列表进行过滤。
|
||||
- 块操作和模态交互会发出结构化的 `Slack interaction: ...` 系统事件,并带有丰富的负载字段:
|
||||
- 块操作:所选值、标签、选择器值以及 `workflow_*` 元数据
|
||||
- 模态 `view_submission` 和 `view_closed` 事件,带有路由后的渠道元数据和表单输入
|
||||
|
||||
## 配置参考指引
|
||||
## 配置参考指针
|
||||
|
||||
主要参考:
|
||||
|
||||
- [配置参考 - Slack](/gateway/configuration-reference#slack)
|
||||
- [配置参考 - Slack](/zh-CN/gateway/configuration-reference#slack)
|
||||
|
||||
高信号 Slack 字段:
|
||||
- mode/auth:`mode`、`botToken`、`appToken`、`signingSecret`、`webhookPath`、`accounts.*`
|
||||
@ -600,12 +611,12 @@ Slack 可以作为原生审批客户端,使用交互按钮和交互事件,
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="渠道中没有回复">
|
||||
请按顺序检查:
|
||||
按顺序检查:
|
||||
|
||||
- `groupPolicy`
|
||||
- 渠道允许列表(`channels.slack.channels`)
|
||||
- `requireMention`
|
||||
- 按渠道的 `users` 允许列表
|
||||
- 按渠道配置的 `users` 允许列表
|
||||
|
||||
有用的命令:
|
||||
|
||||
@ -631,17 +642,17 @@ openclaw pairing list slack
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Socket 模式未连接">
|
||||
请在 Slack 应用设置中验证 bot + app 令牌以及 Socket Mode 是否已启用。
|
||||
验证机器人令牌、应用令牌以及 Slack 应用设置中的 Socket Mode 是否已启用。
|
||||
|
||||
如果 `openclaw channels status --probe --json` 显示 `botTokenStatus` 或
|
||||
`appTokenStatus: "configured_unavailable"`,则表示该 Slack 账户
|
||||
已完成配置,但当前运行时无法解析由 SecretRef 支持的
|
||||
实际值。
|
||||
`appTokenStatus: "configured_unavailable"`,说明 Slack 账户已完成
|
||||
配置,但当前运行时无法解析由 SecretRef 支持的
|
||||
值。
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HTTP 模式未接收到事件">
|
||||
请验证:
|
||||
验证:
|
||||
|
||||
- signing secret
|
||||
- webhook 路径
|
||||
@ -649,28 +660,28 @@ openclaw pairing list slack
|
||||
- 每个 HTTP 账户使用唯一的 `webhookPath`
|
||||
|
||||
如果账户快照中出现 `signingSecretStatus: "configured_unavailable"`,
|
||||
则表示该 HTTP 账户已完成配置,但当前运行时无法
|
||||
说明该 HTTP 账户已完成配置,但当前运行时无法
|
||||
解析由 SecretRef 支持的 signing secret。
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="原生/斜杠命令未触发">
|
||||
请确认你的预期是:
|
||||
<Accordion title="原生命令/斜杠命令未触发">
|
||||
确认你原本是想使用:
|
||||
|
||||
- 原生命令模式(`channels.slack.commands.native: true`),并已在 Slack 中注册匹配的斜杠命令
|
||||
- 原生命令模式(`channels.slack.commands.native: true`),并在 Slack 中注册匹配的斜杠命令
|
||||
- 或单一斜杠命令模式(`channels.slack.slashCommand.enabled: true`)
|
||||
|
||||
同时检查 `commands.useAccessGroups` 以及渠道/用户允许列表。
|
||||
还要检查 `commands.useAccessGroups` 以及渠道/用户允许列表。
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## 相关内容
|
||||
|
||||
- [配对](/channels/pairing)
|
||||
- [群组](/channels/groups)
|
||||
- [安全](/gateway/security)
|
||||
- [渠道路由](/channels/channel-routing)
|
||||
- [故障排除](/channels/troubleshooting)
|
||||
- [配置](/gateway/configuration)
|
||||
- [斜杠命令](/tools/slash-commands)
|
||||
- [配对](/zh-CN/channels/pairing)
|
||||
- [群组](/zh-CN/channels/groups)
|
||||
- [安全](/zh-CN/gateway/security)
|
||||
- [渠道路由](/zh-CN/channels/channel-routing)
|
||||
- [故障排除](/zh-CN/channels/troubleshooting)
|
||||
- [配置](/zh-CN/gateway/configuration)
|
||||
- [斜杠命令](/zh-CN/tools/slash-commands)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user