From 8319b9e425edd2e0d42a0b9d79e6f05d3dd366da Mon Sep 17 00:00:00 2001 From: "openclaw-docs-i18n[bot]" Date: Fri, 1 May 2026 05:40:49 +0000 Subject: [PATCH] chore(i18n): refresh zh-CN translations --- docs/zh-CN/cli/voicecall.md | 29 +++-- docs/zh-CN/plugins/voice-call.md | 187 +++++++++++++++---------------- 2 files changed, 109 insertions(+), 107 deletions(-) diff --git a/docs/zh-CN/cli/voicecall.md b/docs/zh-CN/cli/voicecall.md index 5f66c2ccb..9d061d0ac 100644 --- a/docs/zh-CN/cli/voicecall.md +++ b/docs/zh-CN/cli/voicecall.md @@ -1,21 +1,26 @@ --- read_when: - - 你使用 voice-call 插件,并想要 CLI 入口点 - - 你想要 `voicecall setup|smoke|call|continue|dtmf|status|tail|expose` 的快速示例 + - 你使用 voice-call 插件,并需要 CLI 入口点 + - 你想快速查看 `voicecall setup|smoke|call|continue|dtmf|status|tail|expose` 的示例 summary: '`openclaw voicecall` 的 CLI 参考(语音通话插件命令界面)' title: 语音通话 x-i18n: - generated_at: "2026-05-01T04:46:12Z" + generated_at: "2026-05-01T05:39:41Z" model: gpt-5.5 provider: openai - source_hash: 4090858a58b7defaff955a370c8cb0ff025ef68061e68a6c69a637de24707c0b + source_hash: c040cf4cd984ad6d6dd302923494a7c8ee131390b803fe20a9894b077f08d5bb source_path: cli/voicecall.md workflow: 16 --- # `openclaw voicecall` -`voicecall` 是一个由插件提供的命令。只有安装并启用语音通话插件后,它才会出现。 +`voicecall` 是一个由插件提供的命令。只有在安装并启用语音通话插件时才会出现。 + +当 Gateway 网关正在运行时,操作命令(`call`、`start`、 +`continue`、`speak`、`dtmf`、`end` 和 `status`)会发送到该 Gateway 网关的 +语音通话运行时。如果无法访问任何 Gateway 网关,它们会回退到独立 +CLI 运行时。 主要文档: @@ -34,17 +39,19 @@ openclaw voicecall dtmf --call-id --digits "ww123456#" openclaw voicecall end --call-id ``` -`setup` 默认会打印便于阅读的就绪检查。脚本请使用 `--json`: +`setup` 默认打印便于人工阅读的就绪检查。脚本请使用 `--json`: ```bash openclaw voicecall setup --json ``` -`status` 默认以 JSON 打印活跃通话。传入 `--call-id ` 可检查一个通话。 +`status` 默认以 JSON 打印活跃通话。传入 `--call-id ` 可检查 +某一次通话。 -对于外部提供商(`twilio`、`telnyx`、`plivo`),设置必须从 `publicUrl`、隧道或 Tailscale 暴露地址解析出一个公网 webhook URL。回环/私有服务回退会被拒绝,因为运营商无法访问它。 +对于外部提供商(`twilio`、`telnyx`、`plivo`),设置必须从 `publicUrl`、隧道或 Tailscale 暴露解析出公开的 +webhook URL。loopback/private serve 回退会被拒绝,因为运营商无法访问它。 -`smoke` 会运行相同的就绪检查。除非同时提供 `--to` 和 `--yes`,否则它不会拨打真实电话: +`smoke` 会运行同样的就绪检查。除非同时提供 `--to` 和 `--yes`,否则不会拨打真实电话: ```bash openclaw voicecall smoke --to "+15555550123" # dry run @@ -59,9 +66,9 @@ openclaw voicecall expose --mode funnel openclaw voicecall expose --mode off ``` -安全注意事项:只将 webhook 端点暴露给你信任的网络。尽可能优先使用 Tailscale Serve,而不是 Funnel。 +安全注意事项:只将 webhook 端点暴露给你信任的网络。可行时优先使用 Tailscale Serve,而不是 Funnel。 -## 相关 +## 相关内容 - [CLI 参考](/zh-CN/cli) - [语音通话插件](/zh-CN/plugins/voice-call) diff --git a/docs/zh-CN/plugins/voice-call.md b/docs/zh-CN/plugins/voice-call.md index 4681665cb..fceca5368 100644 --- a/docs/zh-CN/plugins/voice-call.md +++ b/docs/zh-CN/plugins/voice-call.md @@ -1,16 +1,16 @@ --- read_when: - - 你想从 OpenClaw 发起外拨语音通话 + - 你想从 OpenClaw 发起外呼语音通话 - 你正在配置或开发语音通话插件 - - 你需要在电话通信场景中使用实时语音或流式转写 + - 你需要电话场景下的实时语音或流式转录 sidebarTitle: Voice call -summary: 通过 Twilio、Telnyx 或 Plivo 发起外呼并接听呼入语音通话,可选支持实时语音和流式转录 +summary: 通过 Twilio、Telnyx 或 Plivo 拨打外呼语音电话并接听呼入语音电话,并可选择启用实时语音和流式转录 title: 语音通话插件 x-i18n: - generated_at: "2026-05-01T05:29:41Z" + generated_at: "2026-05-01T05:39:45Z" model: gpt-5.5 provider: openai - source_hash: ef7ab7d7499e65d4514eda607f49b10aabd5feab11cac9f808de890176606f3b + source_hash: 08690f9f27de8a3d4d2c6056cd08edcc42f60f0592272a464c07cb1dc7fee26e source_path: plugins/voice-call.md workflow: 16 --- @@ -24,8 +24,8 @@ x-i18n: speech),`mock`(开发/无网络)。 -Voice Call 插件运行在 **Gateway 网关进程内部**。如果你使用 -远程 Gateway 网关,请在运行 Gateway 网关的机器上安装并配置插件, +Voice Call 插件在 **Gateway 网关进程内** 运行。如果你使用 +远程 Gateway 网关,请在运行 Gateway 网关的机器上安装并配置该插件, 然后重启 Gateway 网关以加载它。 @@ -48,17 +48,17 @@ Voice Call 插件运行在 **Gateway 网关进程内部**。如果你使用 - 如果 npm 报告 OpenClaw 拥有的包已弃用,该包版本 - 来自较旧的外部包发布序列;请使用当前已打包的 OpenClaw - 构建,或在更新的 npm 包发布前使用本地文件夹路径。 + 如果 npm 报告 OpenClaw 拥有的软件包已弃用,该软件包版本 + 来自较旧的外部软件包发布线;请使用当前打包的 OpenClaw + 构建,或在较新的 npm 软件包发布前使用本地文件夹路径。 - 随后重启 Gateway 网关,以便插件加载。 + 之后重启 Gateway 网关,以便插件加载。 在 `plugins.entries.voice-call.config` 下设置配置(完整结构见下方 [配置](#configuration))。至少需要: - `provider`、提供商凭证、`fromNumber`,以及一个可公开访问的 webhook URL。 + `provider`、提供商凭证、`fromNumber`,以及可公开访问的 webhook URL。 ```bash @@ -66,8 +66,8 @@ Voice Call 插件运行在 **Gateway 网关进程内部**。如果你使用 ``` 默认输出适合在聊天日志和终端中阅读。它会检查 - 插件启用状态、提供商凭证、webhook 暴露状态,以及是否 - 只启用了一个音频模式(`streaming` 或 `realtime`)。脚本请使用 + 插件启用状态、提供商凭证、webhook 暴露情况,以及是否 + 只有一种音频模式(`streaming` 或 `realtime`)处于活动状态。脚本可使用 `--json`。 @@ -77,7 +77,7 @@ Voice Call 插件运行在 **Gateway 网关进程内部**。如果你使用 openclaw voicecall smoke --to "+15555550123" ``` - 两者默认都是 dry run。添加 `--yes` 可实际发起一次短的 + 两者默认都是 dry run。添加 `--yes` 才会实际发起一次简短的 出站通知通话: ```bash @@ -88,21 +88,21 @@ Voice Call 插件运行在 **Gateway 网关进程内部**。如果你使用 -对于 Twilio、Telnyx 和 Plivo,设置必须解析到一个 **公共 webhook URL**。 +对于 Twilio、Telnyx 和 Plivo,设置必须解析为 **公共 webhook URL**。 如果 `publicUrl`、隧道 URL、Tailscale URL 或 serve fallback -解析到 loopback 或私有网络空间,设置会失败,而不是 -启动一个无法接收运营商 webhook 的提供商。 +解析为 loopback 或专用网络空间,设置会失败,而不是 +启动无法接收运营商 webhook 的提供商。 ## 配置 如果 `enabled: true` 但所选提供商缺少凭证, -Gateway 网关启动时会记录 setup-incomplete 警告,其中包含缺失键名, +Gateway 网关启动时会记录一条设置未完成警告,其中包含缺失键名, 并跳过启动运行时。命令、RPC 调用和智能体工具在使用时仍会 -返回缺失的提供商配置的准确内容。 +返回确切缺失的提供商配置。 -语音通话凭证接受 SecretRef。`plugins.entries.voice-call.config.twilio.authToken` 和 `plugins.entries.voice-call.config.tts.providers.*.apiKey` 会通过标准 SecretRef 接口解析;请参阅 [SecretRef 凭证接口](/zh-CN/reference/secretref-credential-surface)。 +语音通话凭证支持 SecretRef。`plugins.entries.voice-call.config.twilio.authToken` 和 `plugins.entries.voice-call.config.tts.providers.*.apiKey` 会通过标准 SecretRef 界面解析;见 [SecretRef 凭证界面](/zh-CN/reference/secretref-credential-surface)。 ```json5 @@ -164,30 +164,30 @@ Gateway 网关启动时会记录 setup-incomplete 警告,其中包含缺失键 - - Twilio、Telnyx 和 Plivo 都需要一个 **可公开访问的** webhook URL。 + - Twilio、Telnyx 和 Plivo 都需要一个 **可公开访问** 的 webhook URL。 - `mock` 是本地开发提供商(不发起网络调用)。 - Telnyx 需要 `telnyx.publicKey`(或 `TELNYX_PUBLIC_KEY`),除非 `skipSignatureVerification` 为 true。 - `skipSignatureVerification` 仅用于本地测试。 - - 在 ngrok 免费层上,将 `publicUrl` 设置为确切的 ngrok URL;签名验证始终强制执行。 - - `tunnel.allowNgrokFreeTierLoopbackBypass: true` 仅在 `tunnel.provider="ngrok"` 且 `serve.bind` 是 loopback(ngrok 本地代理)时,允许带无效签名的 Twilio webhook。仅限本地开发。 - - Ngrok 免费层 URL 可能变化或添加中间提示行为;如果 `publicUrl` 漂移,Twilio 签名会失败。生产环境:优先使用稳定域名或 Tailscale funnel。 + - 在 ngrok 免费层上,将 `publicUrl` 设置为确切的 ngrok URL;始终会强制执行签名验证。 + - `tunnel.allowNgrokFreeTierLoopbackBypass: true` 仅当 `tunnel.provider="ngrok"` 且 `serve.bind` 为 loopback(ngrok 本地代理)时,才允许签名无效的 Twilio webhook。仅限本地开发。 + - Ngrok 免费层 URL 可能变化或添加插页行为;如果 `publicUrl` 偏移,Twilio 签名会失败。生产环境:优先使用稳定域名或 Tailscale funnel。 - - `streaming.preStartTimeoutMs` 会关闭从未发送有效 `start` 帧的 socket。 - - `streaming.maxPendingConnections` 限制未认证的 pre-start socket 总数。 - - `streaming.maxPendingConnectionsPerIp` 限制每个来源 IP 的未认证 pre-start socket 数量。 - - `streaming.maxConnections` 限制已打开的媒体流 socket 总数(pending + active)。 + - `streaming.preStartTimeoutMs` 会关闭从未发送有效 `start` 帧的套接字。 + - `streaming.maxPendingConnections` 限制未认证 pre-start 套接字总数。 + - `streaming.maxPendingConnectionsPerIp` 限制每个源 IP 的未认证 pre-start 套接字数。 + - `streaming.maxConnections` 限制打开的媒体流套接字总数(pending + active)。 使用 `provider: "log"`、`twilio.from` 或旧版 `streaming.*` OpenAI 键的旧配置会由 `openclaw doctor --fix` 重写。 运行时 fallback 目前仍接受旧的 voice-call 键,但 - 重写路径是 `openclaw doctor --fix`,兼容 shim - 是临时的。 + 重写路径是 `openclaw doctor --fix`,兼容 shim 是 + 临时的。 - 自动迁移的流式传输键: + 自动迁移的 streaming 键: - `streaming.sttProvider` → `streaming.provider` - `streaming.openaiApiKey` → `streaming.providers.openai.apiKey` @@ -201,23 +201,23 @@ Gateway 网关启动时会记录 setup-incomplete 警告,其中包含缺失键 ## 实时语音对话 `realtime` 为实时通话音频选择一个全双工实时语音提供商。 -它与 `streaming` 分离,后者只会将音频转发给 +它与 `streaming` 分开,后者只会将音频转发给 实时转写提供商。 -`realtime.enabled` 不能与 `streaming.enabled` 组合使用。每次通话请选择一个 +`realtime.enabled` 不能与 `streaming.enabled` 组合使用。每次通话请选择一种 音频模式。 当前运行时行为: - Twilio Media Streams 支持 `realtime.enabled`。 -- `realtime.provider` 是可选的。如果未设置,Voice Call 会使用第一个注册的实时语音提供商。 -- 内置实时语音提供商:Google Gemini Live(`google`)和 OpenAI(`openai`),由各自的提供商插件注册。 +- `realtime.provider` 是可选的。如果未设置,Voice Call 会使用第一个已注册的实时语音提供商。 +- 内置实时语音提供商:Google Gemini Live(`google`)和 OpenAI(`openai`),由它们的提供商插件注册。 - 提供商拥有的原始配置位于 `realtime.providers.` 下。 - Voice Call 默认暴露共享的 `openclaw_agent_consult` 实时工具。当来电者请求更深入的推理、当前信息或普通 OpenClaw 工具时,实时模型可以调用它。 -- 如果 `realtime.provider` 指向未注册的提供商,或完全没有注册实时语音提供商,Voice Call 会记录警告并跳过实时媒体,而不是让整个插件失败。 -- consult 会话键会在可用时复用现有语音会话,然后 fallback 到主叫/被叫电话号码,使后续 consult 调用在通话期间保留上下文。 +- 如果 `realtime.provider` 指向未注册的提供商,或根本没有注册任何实时语音提供商,Voice Call 会记录警告并跳过实时媒体,而不是让整个插件失败。 +- consult 会话键会在可用时复用现有语音会话,然后回退到主叫/被叫电话号码,以便后续 consult 调用在通话期间保持上下文。 ### 工具策略 @@ -226,8 +226,8 @@ Gateway 网关启动时会记录 setup-incomplete 警告,其中包含缺失键 | 策略 | 行为 | | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | | `safe-read-only` | 暴露 consult 工具,并将常规智能体限制为 `read`、`web_search`、`web_fetch`、`x_search`、`memory_search` 和 `memory_get`。 | -| `owner` | 暴露 consult 工具,并允许常规智能体使用正常的智能体工具策略。 | -| `none` | 不暴露 consult 工具。自定义 `realtime.tools` 仍会透传给实时提供商。 | +| `owner` | 暴露 consult 工具,并允许常规智能体使用普通智能体工具策略。 | +| `none` | 不暴露 consult 工具。自定义 `realtime.tools` 仍会传递给实时提供商。 | ### 实时提供商示例 @@ -290,22 +290,22 @@ Gateway 网关启动时会记录 setup-incomplete 警告,其中包含缺失键 -有关提供商特定的实时语音选项,请参阅 [Google 提供商](/zh-CN/providers/google) 和 +有关提供商专用的实时语音选项,请参阅 [Google 提供商](/zh-CN/providers/google) 和 [OpenAI provider](/zh-CN/providers/openai)。 ## 流式转写 -`streaming` 为实时通话音频选择实时转写提供商。 +`streaming` 为实时通话音频选择一个实时转写提供商。 当前运行时行为: -- `streaming.provider` 是可选的。如果未设置,Voice Call 会使用第一个注册的实时转写提供商。 -- 内置实时转写提供商:Deepgram(`deepgram`)、ElevenLabs(`elevenlabs`)、Mistral(`mistral`)、OpenAI(`openai`)和 xAI(`xai`),由各自的提供商插件注册。 +- `streaming.provider` 是可选的。如果未设置,Voice Call 会使用第一个已注册的实时转写提供商。 +- 内置实时转写提供商:Deepgram(`deepgram`)、ElevenLabs(`elevenlabs`)、Mistral(`mistral`)、OpenAI(`openai`)和 xAI(`xai`),由它们的提供商插件注册。 - 提供商拥有的原始配置位于 `streaming.providers.` 下。 -- Twilio 发送已接受的流 `start` 消息后,Voice Call 会立即注册该流,在提供商连接期间将入站媒体排队传给转写提供商,并且只在实时转写就绪后才开始初始问候。 -- 如果 `streaming.provider` 指向未注册的提供商,或没有注册任何提供商,Voice Call 会记录警告并跳过媒体流式传输,而不是让整个插件失败。 +- Twilio 发送已接受的流 `start` 消息后,Voice Call 会立即注册该流,在提供商连接期间通过转写提供商排队入站媒体,并且仅在实时转写准备就绪后开始初始问候。 +- 如果 `streaming.provider` 指向未注册的提供商,或没有任何提供商注册,Voice Call 会记录警告并跳过媒体流式传输,而不是让整个插件失败。 -### 流式转写提供商示例 +### 流式提供商示例 @@ -373,9 +373,9 @@ Gateway 网关启动时会记录 setup-incomplete 警告,其中包含缺失键 -## 调用的 TTS +## 通话的 TTS -Voice Call 使用核心 `messages.tts` 配置来为调用提供流式语音。你可以在插件配置下用**相同结构**覆盖它,它会与 `messages.tts` 深度合并。 +Voice Call 使用核心 `messages.tts` 配置来处理通话中的流式语音。你可以在插件配置下用**相同结构**覆盖它 — 它会与 `messages.tts` 深度合并。 ```json5 { @@ -392,16 +392,16 @@ Voice Call 使用核心 `messages.tts` 配置来为调用提供流式语音。 ``` -**Microsoft 语音会在语音调用中被忽略。** 电话音频需要 PCM;当前 Microsoft 传输不暴露电话 PCM 输出。 +**语音通话会忽略 Microsoft speech。** 电话音频需要 PCM;当前 Microsoft 传输不公开电话 PCM 输出。 行为说明: - 插件配置中的旧版 `tts.` 键(`openai`、`elevenlabs`、`microsoft`、`edge`)会由 `openclaw doctor --fix` 修复;提交的配置应使用 `tts.providers.`。 -- 启用 Twilio 媒体流式传输时会使用核心 TTS;否则调用会回退到提供商原生语音。 -- 如果 Twilio 媒体流已经处于活动状态,Voice Call 不会回退到 TwiML ``。如果该状态下电话 TTS 不可用,播放请求会失败,而不是混合两条播放路径。 -- 当电话 TTS 回退到备用提供商时,Voice Call 会记录一条包含提供商链(`from`、`to`、`attempts`)的警告,用于调试。 -- 当 Twilio 插话或流拆除清空待处理 TTS 队列时,排队的播放请求会结算,而不是让等待播放完成的来电者一直挂起。 +- 启用 Twilio 媒体流式传输时会使用核心 TTS;否则通话会回退到提供商原生语音。 +- 如果 Twilio 媒体流已经处于活动状态,Voice Call 不会回退到 TwiML ``。如果在该状态下电话 TTS 不可用,播放请求会失败,而不是混用两条播放路径。 +- 当电话 TTS 回退到次级提供商时,Voice Call 会记录一条带有提供商链(`from`、`to`、`attempts`)的警告,便于调试。 +- 当 Twilio 插话或流拆除清空待处理 TTS 队列时,排队的播放请求会完成结算,而不是让调用方在等待播放完成时挂起。 ### TTS 示例 @@ -468,9 +468,9 @@ Voice Call 使用核心 `messages.tts` 配置来为调用提供流式语音。 -## 入站调用 +## 来电 -入站策略默认值为 `disabled`。要启用入站调用,请设置: +来电策略默认值为 `disabled`。要启用来电,请设置: ```json5 { @@ -481,14 +481,14 @@ Voice Call 使用核心 `messages.tts` 配置来为调用提供流式语音。 ``` -`inboundPolicy: "allowlist"` 是一种低保证度的来电显示筛查。该插件会规范化提供商提供的 `From` 值,并将其与 `allowFrom` 比较。Webhook 验证会认证提供商投递和载荷完整性,但它**不能**证明 PSTN/VoIP 主叫号码所有权。请将 `allowFrom` 视为来电显示过滤,而不是强来电者身份验证。 +`inboundPolicy: "allowlist"` 是低保障的来电号码筛选。该插件会规范化提供商提供的 `From` 值,并将其与 `allowFrom` 比较。Webhook 验证会认证提供商投递和负载完整性,但它**不能**证明 PSTN/VoIP 主叫号码所有权。应将 `allowFrom` 视为来电号码过滤,而不是强主叫身份验证。 -自动回复使用智能体系统。可通过 `responseModel`、`responseSystemPrompt` 和 `responseTimeoutMs` 调整。 +自动响应使用智能体系统。使用 `responseModel`、`responseSystemPrompt` 和 `responseTimeoutMs` 调整。 ### 语音输出契约 -对于自动回复,Voice Call 会向系统提示追加严格的语音输出契约: +对于自动响应,Voice Call 会将严格的语音输出契约附加到系统提示词: ```text {"spoken":"..."} @@ -496,40 +496,37 @@ Voice Call 使用核心 `messages.tts` 配置来为调用提供流式语音。 Voice Call 会防御性地提取语音文本: -- 忽略标记为推理/错误内容的载荷。 -- 解析直接 JSON、围栏 JSON,或内联 `"spoken"` 键。 +- 忽略标记为推理/错误内容的负载。 +- 解析直接 JSON、围栏 JSON 或内联 `"spoken"` 键。 - 回退到纯文本,并移除可能的规划/元信息开头段落。 -这会让语音播放聚焦于面向来电者的文本,并避免将规划文本泄露到音频中。 +这会让语音播放聚焦于面向调用方的文本,并避免将规划文本泄漏到音频中。 -### 会话启动行为 +### 对话启动行为 -对于出站 `conversation` 调用,第一条消息处理与实时播放状态绑定: +对于出站 `conversation` 通话,首条消息处理与实时播放状态绑定: -- 只有在初始问候正在主动播放时,才会抑制插话队列清空和自动回复。 -- 如果初始播放失败,调用会返回 `listening`,初始消息会保持排队以便重试。 -- Twilio 流式传输的初始播放会在流连接时启动,不增加额外延迟。 -- 插话会中止活动播放,并清空已排队但尚未播放的 Twilio TTS 条目。被清空的条目会解析为已跳过,因此后续回复逻辑可以继续,而无需等待永远不会播放的音频。 -- 实时语音会话使用实时流自己的开场轮次。Voice Call **不会**为该初始消息发布旧版 `` TwiML 更新,因此出站 `` 会话会保持附加状态。 +- 仅当初始问候正在主动播放时,才会抑制插话队列清空和自动响应。 +- 如果初始播放失败,通话会返回 `listening`,且初始消息仍保留在队列中以便重试。 +- Twilio 流式传输的初始播放会在流连接时开始,不会额外延迟。 +- 插话会中止活动播放,并清除已排队但尚未播放的 Twilio TTS 条目。清除的条目会解析为已跳过,因此后续响应逻辑可以继续,而无需等待永远不会播放的音频。 +- 实时语音对话使用实时流自己的开场回合。Voice Call **不会**为该初始消息发布旧版 `` TwiML 更新,因此出站 `` 会话会保持连接。 ### Twilio 流断开宽限期 -当 Twilio 媒体流断开时,语音通话会等待 **2000 ms**,然后再 -自动结束通话: +当 Twilio 媒体流断开时,Voice Call 会等待 **2000 ms** 后再自动结束通话: -- 如果流在该时间窗口内重新连接,则取消自动结束。 -- 如果宽限期后没有流重新注册,则结束通话,以防止活跃通话卡住。 +- 如果流在该窗口内重新连接,则取消自动结束。 +- 如果宽限期后没有流重新注册,则结束通话,防止活动通话卡住。 ## 过期通话清理器 -使用 `staleCallReaperSeconds` 来结束从未收到终止 -webhook 的通话(例如,从未完成的通知模式通话)。默认值 -是 `0`(禁用)。 +使用 `staleCallReaperSeconds` 结束从未收到终止 webhook 的通话(例如从未完成的 notify 模式通话)。默认值为 `0`(禁用)。 -推荐范围: +建议范围: -- **生产:** 对于通知式流程,设置为 `120`–`300` 秒。 -- 保持此值**高于 `maxDurationSeconds`**,以便正常通话可以完成。一个不错的起点是 `maxDurationSeconds + 30–60` 秒。 +- **生产环境:** 对于通知式流程,使用 `120`–`300` 秒。 +- 保持该值**高于 `maxDurationSeconds`**,以便正常通话能够完成。一个良好的起点是 `maxDurationSeconds + 30–60` 秒。 ```json5 { @@ -548,28 +545,26 @@ webhook 的通话(例如,从未完成的通知模式通话)。默认值 ## Webhook 安全 -当代理或隧道位于 Gateway 网关 前面时,该插件 -会重建用于签名验证的公开 URL。这些选项 -控制信任哪些转发头: +当代理或隧道位于 Gateway 网关前面时,该插件会重建用于签名验证的公开 URL。这些选项控制信任哪些转发标头: - 允许来自转发头的主机列表。 + 允许列表中的转发标头主机。 - 在没有允许列表的情况下信任转发头。 + 在没有允许列表的情况下信任转发标头。 - 仅当请求远程 IP 匹配列表时才信任转发头。 + 仅当请求远程 IP 与列表匹配时,才信任转发标头。 -其他保护措施: +额外保护: -- 已为 Twilio 和 Plivo 启用 Webhook **重放保护**。重放的有效 webhook 请求会被确认,但会跳过副作用。 -- Twilio 对话轮次在 `` 回调中包含每轮 token,因此过期或重放的语音回调无法满足较新的待处理转录轮次。 -- 当缺少提供商要求的签名头时,未经身份验证的 webhook 请求会在读取正文之前被拒绝。 -- voice-call webhook 使用共享的预认证正文配置(64 KB / 5 秒),并在签名验证前添加按 IP 计的进行中请求上限。 +- Twilio 和 Plivo 已启用 webhook **重放保护**。重放的有效 webhook 请求会被确认,但会跳过副作用。 +- Twilio 对话回合在 `` 回调中包含每回合 token,因此过期/重放的语音回调无法满足较新的待处理转录回合。 +- 当缺少提供商所需的签名标头时,未认证的 webhook 请求会在读取正文前被拒绝。 +- voice-call webhook 使用共享的预认证正文配置(64 KB / 5 秒),并在签名验证前施加按 IP 统计的进行中请求上限。 -带有稳定公开主机的示例: +使用稳定公开主机的示例: ```json5 { @@ -603,9 +598,9 @@ openclaw voicecall latency # summarize turn latency from lo openclaw voicecall expose --mode funnel ``` -`latency` 会从默认的 voice-call 存储路径读取 `calls.jsonl`。 -使用 `--file ` 指向其他日志,并使用 `--last ` 将 -分析限制为最后 N 条记录(默认 200)。输出包含轮次延迟和监听等待时间的 p50/p90/p99。 +当 Gateway 网关已在运行时,操作性 `voicecall` 命令会委托给 Gateway 网关拥有的 voice-call 运行时,因此 CLI 不会绑定第二个 webhook 服务器。如果无法访问 Gateway 网关,这些命令会回退到独立 CLI 运行时。 + +`latency` 从默认 voice-call 存储路径读取 `calls.jsonl`。使用 `--file ` 指向不同日志,并使用 `--last ` 将分析限制为最后 N 条记录(默认 200)。输出包括回合延迟和听取等待时间的 p50/p90/p99。 ## 智能体工具 @@ -620,7 +615,7 @@ openclaw voicecall expose --mode funnel | `end_call` | `callId` | | `get_status` | `callId` | -此仓库在 `skills/voice-call/SKILL.md` 提供了匹配的 skill 文档。 +此仓库在 `skills/voice-call/SKILL.md` 提供匹配的 skill 文档。 ## Gateway 网关 RPC @@ -635,6 +630,6 @@ openclaw voicecall expose --mode funnel ## 相关内容 -- [通话模式](/zh-CN/nodes/talk) +- [Talk 模式](/zh-CN/nodes/talk) - [文本转语音](/zh-CN/tools/tts) - [语音唤醒](/zh-CN/nodes/voicewake)