chore(i18n): refresh zh-CN translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-04-24 21:15:56 +00:00
parent bb4c0219aa
commit 760cae3d80

View File

@ -1,35 +1,36 @@
---
read_when:
- 你希望一个 OpenClaw 智能体加入一个 Google Meet 通话
- 你希望一个 OpenClaw 智能体加入 Google Meet 通话
- 你希望一个 OpenClaw 智能体创建新的 Google Meet 通话
- 你正在将 Chrome、Chrome 节点或 Twilio 配置为 Google Meet 传输方式
summary: Google Meet 插件:通过 Chrome 或 Twilio 加入显式的 Meet URL并使用默认实时语音设置
summary: Google Meet 插件:通过 Chrome 或 Twilio 加入明确指定的 Meet URL并使用实时语音默认设置
title: Google Meet 插件
x-i18n:
generated_at: "2026-04-24T19:57:07Z"
generated_at: "2026-04-24T21:14:29Z"
model: gpt-5.4
provider: openai
source_hash: 08d1bc95465cc1a6063d5ef6707babf69d16f7f244bd4a9e88a28e3f7a62b2f9
source_hash: 8c109e07170601a81f1802bcfb1477d82ff22d69966f73c7811d4c158a1854d7
source_path: plugins/google-meet.md
workflow: 15
---
适用于 OpenClaw 的 Google Meet 参会支持 —— 该插件在设计上是显式的:
OpenClaw 的 Google Meet 参会支持——该插件在设计上是显式的:
- 它只会加入显式的 `https://meet.google.com/...` URL。
- 它只会加入明确指定的 `https://meet.google.com/...` URL。
- 它可以通过 Google Meet API 创建新的 Meet 空间,然后加入返回的 URL。
- `realtime` 语音是默认模式。
- 当需要更深的推理或工具时,实时语音可以回调到完整的 OpenClaw 智能体。
- 当需要更深的推理或工具时,实时语音可以回调到完整的 OpenClaw 智能体。
- 智能体通过 `mode` 选择加入行为:实时收听/回话使用 `realtime`,仅加入/控制浏览器而不启用实时语音桥接则使用 `transcribe`
- 认证起点是个人 Google OAuth或已经登录的 Chrome 配置文件。
- 不会自动播报同意声明
- 身份验证起始方式为个人 Google OAuth或使用已登录的 Chrome 配置文件。
- 没有自动的同意提示播报
- 默认的 Chrome 音频后端是 `BlackHole 2ch`
- Chrome 可以在本地运行,也可以在已配对的节点主机上运行。
- Twilio 接受拨入号码以及可选的 PIN 或 DTMF 序列。
- CLI 命令是 `googlemeet``meet` 保留给更广泛的智能体电话会议工作流。
- Twilio 接受拨入号码以及可选的 PIN 或 DTMF 序列。
- CLI 命令是 `googlemeet``meet` 保留给更广泛的智能体电话会议工作流使用
## 快速开始
安装本地音频依赖,并配置一个后端实时语音 provider。默认使用 OpenAIGoogle Gemini Live 也可与
`realtime.provider: "google"` 配合使用:
安装本地音频依赖,并配置一个后端实时语音提供商。默认使用 OpenAIGoogle Gemini Live 也可用,只需设置 `realtime.provider: "google"`
```bash
brew install blackhole-2ch sox
@ -38,14 +39,13 @@ export OPENAI_API_KEY=sk-...
export GEMINI_API_KEY=...
```
`blackhole-2ch` 会安装 `BlackHole 2ch` 虚拟音频设备。Homebrew 的
安装器要求重启后 macOS 才会暴露该设备:
`blackhole-2ch` 会安装 `BlackHole 2ch` 虚拟音频设备。Homebrew 的安装程序要求重启后 macOS 才会暴露该设备:
```bash
sudo reboot
```
重启后,验证这两项是否都已就绪:
重启后,验证这两部分都已就绪:
```bash
system_profiler SPAudioDataType | grep -i BlackHole
@ -73,10 +73,8 @@ command -v rec play
openclaw googlemeet setup
```
设置输出旨在供智能体读取。它会报告 Chrome 配置文件、
音频桥接、节点固定、延迟的实时引导,以及在配置了 Twilio 委派时,
`voice-call` 插件和 Twilio 凭证是否已准备就绪。
在要求智能体加入之前,请将任何 `ok: false` 检查视为阻塞项。
设置输出旨在便于智能体读取。它会报告 Chrome 配置文件、音频桥接、节点固定、延迟的实时引导,以及在配置了 Twilio 委派时,`voice-call` 插件和 Twilio 凭证是否已就绪。
在要求智能体加入之前,应将任何 `ok: false` 检查视为阻塞项。
脚本或机器可读输出请使用 `openclaw googlemeet setup --json`
加入会议:
@ -96,29 +94,43 @@ openclaw googlemeet join https://meet.google.com/abc-defg-hij
}
```
对于仅观察/浏览器控制的加入,请设置 `"mode": "transcribe"`。这样
不会启动双向实时模型桥接,因此它不会在会议中回话。
创建新会议,然后加入:
Chrome 会以已登录的 Chrome 配置文件身份加入。在 Meet 中,为
OpenClaw 使用的麦克风/扬声器路径选择 `BlackHole 2ch`
为了获得干净的双工音频,请使用独立的虚拟设备或类似 Loopback 的路由图;单个 BlackHole 设备
足以完成第一次冒烟测试,但可能会产生回声。
```bash
openclaw googlemeet create
openclaw googlemeet join https://meet.google.com/new-abcd-xyz --transport chrome-node
```
或者告诉智能体:“创建一个 Google Meet用实时语音加入它然后把链接发给我。” 智能体应先调用 `google_meet` 并设置 `action: "create"`,复制返回的 `meetingUri`,然后再调用 `google_meet` 并设置 `action: "join"` 以及该 URL。
```json
{
"action": "create"
}
```
```json
{
"action": "join",
"url": "https://meet.google.com/new-abcd-xyz",
"transport": "chrome-node",
"mode": "realtime"
}
```
如果只想观察或控制浏览器加入,请设置 `"mode": "transcribe"`。这不会启动双向实时模型桥接,因此它不会在会议中回话。
Chrome 会以已登录的 Chrome 配置文件身份加入。在 Meet 中,为 OpenClaw 使用的麦克风/扬声器路径选择 `BlackHole 2ch`。若要获得干净的双向音频,请使用独立的虚拟设备或类似 Loopback 的音频图;单个 BlackHole 设备足以进行首次冒烟测试,但可能会产生回声。
### 本地 Gateway 网关 + Parallels Chrome
你**不**需要在 macOS VM 中运行完整的 OpenClaw Gateway 网关或模型 API 密钥,
仅仅是为了让 VM 承载 Chrome。你可以在本地运行 Gateway 网关和智能体,
然后在 VM 中运行一个节点主机。只需在 VM 中启用一次内置插件,
这样节点就会通告 Chrome 命令:
你**不**需要在 macOS VM 中运行完整的 OpenClaw Gateway 网关或模型 API 密钥,仅仅为了让 VM 拥有 Chrome。你可以在本地运行 Gateway 网关和智能体,然后在 VM 中运行一个节点主机。只需在 VM 中启用一次内置插件,使节点能够通告 Chrome 命令:
各组件运行位置:
各组件运行位置如下:
- Gateway 网关主机OpenClaw Gateway 网关、智能体工作区、模型/API 密钥、实时
provider以及 Google Meet 插件配置。
- Parallels macOS VMOpenClaw CLI/节点主机、Google Chrome、SoX、BlackHole 2ch
以及一个已登录 Google 的 Chrome 配置文件。
- VM 中不需要Gateway 网关服务、智能体配置、OpenAI/GPT 密钥,或模型
provider 设置。
- Gateway 网关主机OpenClaw Gateway 网关、智能体工作区、模型/API 密钥、实时提供商,以及 Google Meet 插件配置。
- Parallels macOS VMOpenClaw CLI/节点主机、Google Chrome、SoX、BlackHole 2ch以及一个已登录 Google 的 Chrome 配置文件。
- VM 中不需要Gateway 网关服务、智能体配置、OpenAI/GPT 密钥,或模型提供商设置。
安装 VM 依赖:
@ -151,15 +163,14 @@ openclaw plugins enable google-meet
openclaw node run --host <gateway-host> --port 18789 --display-name parallels-macos
```
如果 `<gateway-host>` 是局域网 IP且你未使用 TLS则除非你明确允许该受信任私有网络
否则节点会拒绝明文 WebSocket
如果 `<gateway-host>` 是局域网 IP并且你未使用 TLS则除非你为该受信任的私有网络显式启用否则节点会拒绝明文 WebSocket
```bash
OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1 \
openclaw node run --host <gateway-lan-ip> --port 18789 --display-name parallels-macos
```
将节点安装为 LaunchAgent 时,也请使用同一个环境变量:
将节点安装为 LaunchAgent 时,使用相同的环境变量:
```bash
OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1 \
@ -167,9 +178,8 @@ OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1 \
openclaw node restart
```
`OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1` 是进程环境变量,不是
`openclaw.json` 设置。当该变量出现在安装命令中时,`openclaw node install` 会将其存储到 LaunchAgent
环境中。
`OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1` 是进程环境变量,不是 `openclaw.json` 设置。
`openclaw node install` 的安装命令中存在该变量时,它会将其存储到 LaunchAgent 环境中。
从 Gateway 网关主机批准该节点:
@ -178,8 +188,7 @@ openclaw devices list
openclaw devices approve <requestId>
```
确认 Gateway 网关可以看到该节点,并且它通告了 `googlemeet.chrome`
以及浏览器能力/`browser.proxy`
确认 Gateway 网关可以看到该节点,并且它同时通告了 `googlemeet.chrome` 和浏览器能力/`browser.proxy`
```bash
openclaw nodes status
@ -215,93 +224,62 @@ openclaw nodes status
}
```
现在从 Gateway 网关主机正常加入:
现在可以像平常一样从 Gateway 网关主机加入:
```bash
openclaw googlemeet join https://meet.google.com/abc-defg-hij
```
或者要求智能体使用 `google_meet` 工具,并设置 `transport: "chrome-node"`
或者让智能体使用 `google_meet` 工具并设置 `transport: "chrome-node"`
如果你想做一个单命令冒烟测试,用于创建或复用会话、说出一段已知
短语,并打印会话健康状态:
若要进行一个单命令冒烟测试,以创建或复用会话、说出已知短语,并打印会话健康状态:
```bash
openclaw googlemeet test-speech https://meet.google.com/abc-defg-hij
```
如果浏览器配置文件未登录、Meet 正在等待主持人批准加入,或
Chrome 需要麦克风/摄像头权限,则 join/test-speech 结果会报告
`manualActionRequired: true`,并附带 `manualActionReason`
`manualActionMessage`。智能体应停止重试加入,将该消息报告给操作员,
并仅在完成手动浏览器操作后重试。
如果浏览器配置文件未登录、Meet 正在等待主持人准入,或 Chrome 需要麦克风/摄像头权限,则 join/test-speech 结果会报告 `manualActionRequired: true`,并附带 `manualActionReason``manualActionMessage`。智能体应停止重试加入,将该消息报告给操作员,并仅在手动浏览器操作完成后再重试。
如果省略 `chromeNode.node`,只有在恰好有一个已连接节点同时通告 `googlemeet.chrome`
和浏览器控制时OpenClaw 才会自动选择。
如果连接了多个具备能力的节点,请将 `chromeNode.node` 设置为节点 id、
显示名称或远程 IP。
如果省略 `chromeNode.node`,只有在**恰好一个**已连接节点同时通告 `googlemeet.chrome` 和浏览器控制能力时OpenClaw 才会自动选择。
如果连接了多个具备该能力的节点,请将 `chromeNode.node` 设置为节点 id、显示名称或远程 IP。
常见故障检查:
- `No connected Google Meet-capable node`:在 VM 中启动 `openclaw node run`
批准配对,并确保已在 VM 中运行 `openclaw plugins enable google-meet`
`openclaw plugins enable browser`。同时确认
Gateway 网关主机已通过
`gateway.nodes.allowCommands: ["googlemeet.chrome", "browser.proxy"]` 允许这两个节点命令。
- `BlackHole 2ch audio device not found on the node`:在 VM 中安装 `blackhole-2ch`
然后重启 VM。
- Chrome 已打开但无法加入:在 VM 中登录浏览器配置文件,或者
保持设置 `chrome.guestName` 以便访客加入。访客自动加入通过节点浏览器代理使用 OpenClaw
浏览器自动化;请确保节点浏览器
配置指向你想使用的配置文件,例如
`browser.defaultProfile: "user"` 或一个已命名的现有会话配置文件。
- 重复的 Meet 标签页:保持启用 `chrome.reuseExistingTab: true`
在打开新标签页之前OpenClaw 会先激活同一个 Meet URL 的现有标签页。
- 没有音频:在 Meet 中,将麦克风/扬声器路由到 OpenClaw 使用的虚拟音频设备
路径;使用独立的虚拟设备或类似 Loopback 的路由
以获得干净的双工音频。
- `No connected Google Meet-capable node`:在 VM 中启动 `openclaw node run`,批准配对,并确保已在 VM 中运行 `openclaw plugins enable google-meet``openclaw plugins enable browser`。同时确认 Gateway 网关主机允许这两个节点命令:
`gateway.nodes.allowCommands: ["googlemeet.chrome", "browser.proxy"]`
- `BlackHole 2ch audio device not found on the node`:在 VM 中安装 `blackhole-2ch`,并重启 VM。
- Chrome 打开了但无法加入:在 VM 内登录浏览器配置文件,或者保留 `chrome.guestName` 用于访客加入。访客自动加入会通过节点浏览器代理使用 OpenClaw 浏览器自动化;请确保节点浏览器配置指向你想要的配置文件,例如 `browser.defaultProfile: "user"` 或某个已存在会话的命名配置文件。
- 重复的 Meet 标签页:保持启用 `chrome.reuseExistingTab: true`。在打开新标签页之前OpenClaw 会先激活相同 Meet URL 的现有标签页。
- 没有音频:在 Meet 中,将麦克风/扬声器路由到 OpenClaw 使用的虚拟音频设备路径;若要获得干净的双向音频,请使用独立的虚拟设备或类似 Loopback 的路由。
## 安装说明
Chrome 的 `realtime` 默认设置使用两个外部工具:
Chrome 的实时默认方案使用两个外部工具:
- `sox`:命令行音频工具。该插件使用它的 `rec``play`
命令来实现默认的 8 kHz G.711 mu-law 音频桥接。
- `blackhole-2ch`macOS 虚拟音频驱动。它会创建
`BlackHole 2ch` 音频设备,供 Chrome/Meet 路由使用。
- `sox`:命令行音频工具。该插件使用其 `rec``play` 命令来实现默认的 8 kHz G.711 mu-law 音频桥接。
- `blackhole-2ch`macOS 虚拟音频驱动。它会创建 `BlackHole 2ch` 音频设备,供 Chrome/Meet 进行路由。
OpenClaw 不内置或重新分发这两个软件包。文档要求用户
通过 Homebrew 将它们作为主机依赖安装。SoX 的许可证为
`LGPL-2.0-only AND GPL-2.0-only`BlackHole 为 GPL-3.0。如果你构建的是一个将 BlackHole
与 OpenClaw 一起内置的安装器或 appliance请审查 BlackHole
上游许可条款,或从 Existential Audio 获取单独许可。
OpenClaw 不会内置或重新分发这两个软件包。文档要求用户通过 Homebrew 将它们安装为主机依赖。SoX 的许可证是 `LGPL-2.0-only AND GPL-2.0-only`BlackHole 是 GPL-3.0。如果你要构建一个将 BlackHole 与 OpenClaw 一起打包的安装程序或设备,请审查 BlackHole 上游的许可条款,或从 Existential Audio 获取单独许可。
## 传输方式
### Chrome
Chrome 传输会在 Google Chrome 中打开 Meet URL并以已登录的
Chrome 配置文件身份加入。在 macOS 上,插件会在启动前检查 `BlackHole 2ch`
如果已配置,它还会在打开 Chrome 之前运行音频桥接健康检查命令和启动命令。
当 Chrome/音频位于 Gateway 网关主机上时使用 `chrome`
当 Chrome/音频位于已配对节点(例如 Parallels macOS VM上时使用 `chrome-node`
Chrome 传输会在 Google Chrome 中打开 Meet URL并以已登录的 Chrome 配置文件身份加入。在 macOS 上,插件会在启动前检查 `BlackHole 2ch`。如果已配置,它还会在打开 Chrome 前运行音频桥接健康检查命令和启动命令。当 Chrome/音频运行在 Gateway 网关主机上时使用 `chrome`;当 Chrome/音频运行在已配对节点上(例如 Parallels macOS VM时使用 `chrome-node`
```bash
openclaw googlemeet join https://meet.google.com/abc-defg-hij --transport chrome
openclaw googlemeet join https://meet.google.com/abc-defg-hij --transport chrome-node
```
将 Chrome 的麦克风和扬声器音频通过本地 OpenClaw 音频桥接进行路由。
如果未安装 `BlackHole 2ch`,加入会因设置错误而失败,而不是在没有音频路径的情况下静默加入。
将 Chrome 的麦克风和扬声器音频路由到本地 OpenClaw 音频桥接。如果未安装 `BlackHole 2ch`,加入会以设置错误失败,而不是在没有音频路径的情况下静默加入。
### Twilio
Twilio 传输是一个严格的拨号方案,并委派给 Voice Call 插件。
它不会从 Meet 页面解析电话号码。
Twilio 传输是一个严格的拨号计划,并委派给 Voice Call 插件。
它不会解析 Meet 页面以提取电话号码。
当无法使用 Chrome 参会,或者你想要电话拨入作为回退方式时,请使用它。
Google Meet 必须为会议提供电话拨入号码和 PIN
OpenClaw 不会从 Meet 页面中发现这些信息。
当无法使用 Chrome 参会或者你希望使用电话拨入作为回退方案时请使用此方式。Google Meet 必须为该会议提供电话拨入号码和 PINOpenClaw 不会从 Meet 页面发现这些信息。
在 Gateway 网关主机上启用 Voice Call 插件,而不是在 Chrome 节点上:
@ -328,7 +306,7 @@ OpenClaw 不会从 Meet 页面中发现这些信息。
}
```
通过环境变量或配置提供 Twilio 凭证。环境变量可以让密钥不出现在 `openclaw.json`
通过环境变量或配置提供 Twilio 凭证。环境变量可以避免将密钥写入 `openclaw.json`
```bash
export TWILIO_ACCOUNT_SID=AC...
@ -336,8 +314,7 @@ export TWILIO_AUTH_TOKEN=...
export TWILIO_FROM_NUMBER=+15550001234
```
启用 `voice-call` 后,重启或重新加载 Gateway 网关;在已运行的 Gateway 网关进程重新加载之前,
插件配置变更不会生效。
启用 `voice-call` 后,请重启或重新加载 Gateway 网关;在 Gateway 网关已运行的进程中,插件配置变更在重新加载前不会生效。
然后验证:
@ -347,8 +324,7 @@ openclaw plugins list | grep -E 'google-meet|voice-call'
openclaw googlemeet setup
```
当 Twilio 委派接线完成后,`googlemeet setup` 会包含成功的
`twilio-voice-call-plugin``twilio-voice-call-credentials` 检查。
当 Twilio 委派接线完成后,`googlemeet setup` 会包含成功的 `twilio-voice-call-plugin``twilio-voice-call-credentials` 检查。
```bash
openclaw googlemeet join https://meet.google.com/abc-defg-hij \
@ -368,18 +344,18 @@ openclaw googlemeet join https://meet.google.com/abc-defg-hij \
## OAuth 和预检
Google Meet Media API 访问先使用个人 OAuth 客户端。配置
`oauth.clientId` 以及可选的 `oauth.clientSecret`,然后运行:
Google Meet Media API 访问先使用个人 OAuth 客户端。配置
`oauth.clientId`,并可选配置 `oauth.clientSecret`,然后运行:
```bash
openclaw googlemeet auth login --json
```
该命令会打印一个带有刷新令牌的 `oauth` 配置块。它使用 PKCE、
位于 `http://localhost:8085/oauth2callback` 的 localhost 回调,以及使用 `--manual` 的手动
复制/粘贴流程。
该命令会输出一个带有刷新令牌的 `oauth` 配置块。它使用 PKCE、位于 `http://localhost:8085/oauth2callback` 的 localhost 回调,以及通过 `--manual` 启用的手动复制/粘贴流程。
这些环境变量可作为回退方案接受:
OAuth 同意范围包括 Meet 空间创建、Meet 空间读取访问,以及 Meet 会议媒体读取访问。如果你是在支持会议创建之前完成身份验证的,请重新运行 `openclaw googlemeet auth login --json`,以便刷新令牌具备 `meetings.space.created` 作用域。
这些环境变量可作为回退值使用:
- `OPENCLAW_GOOGLE_MEET_CLIENT_ID``GOOGLE_MEET_CLIENT_ID`
- `OPENCLAW_GOOGLE_MEET_CLIENT_SECRET``GOOGLE_MEET_CLIENT_SECRET`
@ -402,14 +378,22 @@ openclaw googlemeet resolve-space --meeting https://meet.google.com/abc-defg-hij
openclaw googlemeet preflight --meeting https://meet.google.com/abc-defg-hij
```
只有在确认你的 Cloud
项目、OAuth 主体和会议参与者都已加入 Google
Workspace Developer Preview Program 的 Meet 媒体 API 预览后,才设置 `preview.enrollmentAcknowledged: true`
使用相同的 OAuth 配置创建一个新的 Meet 空间:
```bash
openclaw googlemeet create
```
该命令会输出新的 `meeting uri``space`。智能体可以使用带有 `action: "create"``google_meet` 工具来创建会议,然后使用返回的 `meetingUri` 调用带有 `action: "join"` 的操作。
创建 Meet 空间只会创建会议 URL。`chrome` 或 `chrome-node` 传输仍然需要一个已登录 Google 的 Chrome 配置文件才能通过浏览器加入。如果该配置文件已登出OpenClaw 会报告
`manualActionRequired: true`,并要求操作员先完成 Google 登录,再重试加入。
只有在确认你的 Cloud 项目、OAuth 主体和会议参与者已加入 Google Workspace Developer Preview Program for Meet media APIs 后,才设置 `preview.enrollmentAcknowledged: true`
## 配置
常见的 Chrome `realtime` 路径只需要启用插件、BlackHole、SoX
以及一个后端实时语音 provider 密钥。默认使用 OpenAI设置
常见的 Chrome 实时路径只需要启用该插件、安装 BlackHole、SoX以及一个后端实时语音提供商密钥。默认使用 OpenAI设置
`realtime.provider: "google"` 可使用 Google Gemini Live
```bash
@ -438,25 +422,19 @@ export GEMINI_API_KEY=...
- `defaultTransport: "chrome"`
- `defaultMode: "realtime"`
- `chromeNode.node``chrome-node` 的可选节点 id/名称/IP
- `chromeNode.node``chrome-node` 使用的可选节点 id/名称/IP
- `chrome.audioBackend: "blackhole-2ch"`
- `chrome.guestName: "OpenClaw Agent"`:在未登录 Meet 的访客
页面上使用的名称
- `chrome.autoJoin: true`:在 `chrome-node` 上通过 OpenClaw 浏览器自动化尽力完成访客名称填写并点击“立即加入”
- `chrome.reuseExistingTab: true`:激活现有 Meet 标签页,而不是
打开重复标签页
- `chrome.waitForInCallMs: 20000`:等待 Meet 标签页报告已在通话中,
然后再触发实时引导
- `chrome.audioInputCommand`:将 8 kHz G.711 mu-law
音频写入 stdout 的 SoX `rec` 命令
- `chrome.audioOutputCommand`:从 stdin 读取 8 kHz G.711 mu-law
音频的 SoX `play` 命令
- `chrome.guestName: "OpenClaw Agent"`:在已登出 Meet 访客界面上使用的名称
- `chrome.autoJoin: true`:通过 OpenClaw 浏览器自动化在 `chrome-node` 上尽力填写访客名并点击立即加入
- `chrome.reuseExistingTab: true`:激活现有 Meet 标签页,而不是打开重复标签页
- `chrome.waitForInCallMs: 20000`:在触发实时引导前,等待 Meet 标签页报告已在通话中
- `chrome.audioInputCommand`:将 8 kHz G.711 mu-law 音频写入 stdout 的 SoX `rec` 命令
- `chrome.audioOutputCommand`:从 stdin 读取 8 kHz G.711 mu-law 音频的 SoX `play` 命令
- `realtime.provider: "openai"`
- `realtime.toolPolicy: "safe-read-only"`
- `realtime.instructions`:简短口头回复,
深层回答使用 `openclaw_agent_consult`
- `realtime.introMessage`:当实时桥接
连接时进行简短口头就绪检查;将其设为 `""` 可静默加入
- `realtime.instructions`:简短的口头回复,深入回答时使用
`openclaw_agent_consult`
- `realtime.introMessage`:实时桥接连接时的简短口头就绪检查;将其设置为 `""` 可静默加入
可选覆盖项:
@ -487,7 +465,7 @@ export GEMINI_API_KEY=...
}
```
使用 Twilio 配置:
仅 Twilio 配置:
```json5
{
@ -502,10 +480,7 @@ export GEMINI_API_KEY=...
}
```
`voiceCall.enabled` 默认为 `true`;使用 Twilio 传输时,它会将实际的
PSTN 呼叫和 DTMF 委派给 Voice Call 插件。如果未启用 `voice-call`
Google Meet 仍然可以验证并记录拨号计划,但无法发起
Twilio 呼叫。
`voiceCall.enabled` 默认为 `true`;使用 Twilio 传输时,它会将实际的 PSTN 呼叫和 DTMF 委派给 Voice Call 插件。如果未启用 `voice-call`Google Meet 仍然可以验证并记录拨号计划,但无法发起 Twilio 呼叫。
## 工具
@ -520,25 +495,18 @@ Twilio 呼叫。
}
```
当 Chrome 运行在 Gateway 网关主机上时,使用 `transport: "chrome"`。当
Chrome 运行在已配对节点(例如 Parallels
VM上时使用 `transport: "chrome-node"`。在这两种情况下,实时模型和 `openclaw_agent_consult` 都运行在
Gateway 网关主机上,因此模型凭证会保留在那里。
当 Chrome 运行在 Gateway 网关主机上时,使用 `transport: "chrome"`。当 Chrome 运行在已配对节点上,例如 Parallels VM则使用
`transport: "chrome-node"`。这两种情况下,实时模型和 `openclaw_agent_consult` 都运行在 Gateway 网关主机上,因此模型凭证保留在那里。
使用 `action: "status"` 可列出活动会话,或检查某个会话 ID。使用
`action: "speak"` 并提供 `sessionId``message`,可让实时智能体
立即说话。使用 `action: "test_speech"` 可创建或复用会话、
触发一个已知短语,并在 Chrome 主机可报告时返回 `inCall`
健康状态。使用 `action: "leave"` 可将会话标记为已结束。
使用 `action: "status"` 可列出活动会话或检查某个会话 ID。使用带有 `sessionId``message``action: "speak"` 可让实时智能体立即发声。使用 `action: "test_speech"` 可创建或复用会话、触发一个已知短语,并在 Chrome 主机能够报告时返回 `inCall` 健康状态。使用 `action: "leave"` 可将会话标记为结束。
`status` 在可用时包含 Chrome 健康状态:
`status` 在可用时包含 Chrome 健康状态:
- `inCall`Chrome 看起来已进入 Meet 通话
- `micMuted`:尽力检测的 Meet 麦克风状态
- `manualActionRequired` / `manualActionReason` / `manualActionMessage`:浏览器
配置文件需要手动登录、主持人批准加入、授予权限,或进行浏览器控制修复后语音才能工作
- `manualActionRequired` / `manualActionReason` / `manualActionMessage`浏览器配置文件需要手动登录、Meet 主持人准入、权限授予,或浏览器控制修复后语音才可工作
- `providerConnected` / `realtimeReady`:实时语音桥接状态
- `lastInputAt` / `lastOutputAt`:桥接上次收到或发送音频的时间
- `lastInputAt` / `lastOutputAt`:桥接最近一次接收到或发送出的音频时间
```json
{
@ -550,34 +518,27 @@ Gateway 网关主机上,因此模型凭证会保留在那里。
## 实时智能体咨询
Chrome `realtime` 模式针对实时语音回路进行了优化。实时语音
provider 会听取会议音频,并通过配置的音频桥接进行发声。
当实时模型需要更深层的推理、当前信息或常规
OpenClaw 工具时,它可以调用 `openclaw_agent_consult`
Chrome 实时模式针对实时语音循环进行了优化。实时语音提供商会听取会议音频,并通过已配置的音频桥接发声。当实时模型需要更深入的推理、当前信息或常规 OpenClaw 工具时,它可以调用 `openclaw_agent_consult`
咨询工具会在后台运行常规 OpenClaw 智能体,并携带最近的
会议转录上下文,然后向实时语音会话返回简明的口头回答。
语音模型随后可以将该回答说回会议中。
咨询工具会在后台运行常规 OpenClaw 智能体,带上最近的会议转录上下文,并向实时语音会话返回简洁的口头回答。然后语音模型可以将该回答说回会议中。
`realtime.toolPolicy` 控制咨询运行方式:
- `safe-read-only`:暴露咨询工具,并将常规智能体限制为
- `safe-read-only`:暴露咨询工具,并将常规智能体限制为使用
`read`、`web_search`、`web_fetch`、`x_search`、`memory_search` 和
`memory_get`
- `owner`:暴露咨询工具,并允许常规智能体使用正常的
智能体工具策略。
- `owner`:暴露咨询工具,并允许常规智能体使用正常的智能体工具策略。
- `none`:不向实时语音模型暴露咨询工具。
咨询会话键按 Meet 会话范围隔离,因此在同一场会议期间,
后续咨询调用可以复用先前的咨询上下文。
咨询会话键按每个 Meet 会话划分作用域,因此同一会议期间后续的咨询调用可以复用先前的咨询上下文。
要在 Chrome 完全加入通话后强制执行一次口头就绪检查:
若要在 Chrome 完全加入通话后强制进行一次口头就绪检查:
```bash
openclaw googlemeet speak meet_... "Say exactly: I'm here and listening."
```
完整的加入并发声冒烟测试:
如需完整的加入并发声冒烟测试:
```bash
openclaw googlemeet test-speech https://meet.google.com/abc-defg-hij \
@ -585,9 +546,9 @@ openclaw googlemeet test-speech https://meet.google.com/abc-defg-hij \
--message "Say exactly: I'm here and listening."
```
## 在线测试清单
## 实时测试清单
在将会议交给无人值守智能体之前,请使用以下流程
在将会议交给无人值守的智能体之前,使用以下顺序
```bash
openclaw googlemeet setup
@ -597,15 +558,15 @@ openclaw googlemeet test-speech https://meet.google.com/abc-defg-hij \
--message "Say exactly: Google Meet speech test complete."
```
预期的 `chrome-node` 状态:
预期的 Chrome-node 状态:
- `googlemeet setup` 全部为绿色。
- `nodes status` 显示所选节点已连接。
- 所选节点同时通告 `googlemeet.chrome``browser.proxy`
- Meet 标签页加入通话,且 `test-speech` 返回的 Chrome 健康状态中
`inCall: true`
- Meet 标签页加入通话,且 `test-speech` 返回包含
`inCall: true` 的 Chrome 健康状态
对于 Twilio 冒烟测试,使用一个会公开电话拨入详情的会议:
对于 Twilio 冒烟测试,使用一个会公开电话拨入详情的会议:
```bash
openclaw googlemeet setup
@ -619,9 +580,9 @@ openclaw googlemeet join https://meet.google.com/abc-defg-hij \
- `googlemeet setup` 包含绿色的 `twilio-voice-call-plugin`
`twilio-voice-call-credentials` 检查。
- Gateway 网关重新加载后CLI 中可用 `voicecall`
- 返回的会话`transport: "twilio"` 和一个 `twilio.voiceCallId`
- `googlemeet leave <sessionId>` 会挂断委派的语音呼叫。
- Gateway 网关重新加载后CLI 中可使`voicecall`
- 返回的会话`transport: "twilio"` 和一个 `twilio.voiceCallId`
- `googlemeet leave <sessionId>` 会挂断委派的语音呼叫。
## 故障排除
@ -635,12 +596,11 @@ openclaw googlemeet setup
```
如果你刚编辑了 `plugins.entries.google-meet`,请重启或重新加载 Gateway 网关。
运行中的智能体只能看到当前 Gateway 网关
进程注册的插件工具。
正在运行的智能体只能看到当前 Gateway 网关进程已注册的插件工具。
### 没有已连接的具备 Google Meet 能力的节点
### 没有已连接的支持 Google Meet 的节点
在节点主机上运行:
在节点主机上运行:
```bash
openclaw plugins enable google-meet
@ -649,7 +609,7 @@ OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1 \
openclaw node run --host <gateway-lan-ip> --port 18789 --display-name parallels-macos
```
在 Gateway 网关主机上,批准节点并验证命令:
在 Gateway 网关主机上,批准节点并验证命令:
```bash
openclaw devices list
@ -657,7 +617,7 @@ openclaw devices approve <requestId>
openclaw nodes status
```
该节点必须处于已连接状态,并列出 `googlemeet.chrome` 以及 `browser.proxy`
该节点必须已连接,并列出 `googlemeet.chrome` 以及 `browser.proxy`
Gateway 网关配置必须允许这些节点命令:
```json5
@ -670,47 +630,53 @@ Gateway 网关配置必须允许这些节点命令:
}
```
### 浏览器打开,但智能体无法加入
### 浏览器打开,但智能体无法加入
运行 `googlemeet test-speech` 并检查返回的 Chrome 健康状态。如果
它报告 `manualActionRequired: true`,请将 `manualActionMessage` 展示给操作员,
并在完成浏览器操作前停止重试。
运行 `googlemeet test-speech` 并检查返回的 Chrome 健康状态。如果它报告 `manualActionRequired: true`,请将 `manualActionMessage` 展示给操作员,并在浏览器操作完成前停止重试。
常见手动操作:
常见的手动操作:
- 登录 Chrome 配置文件。
- 通过 Meet 主持人账号批准访客加入。
- 从 Meet 主持人账户允许该访客加入。
- 授予 Chrome 麦克风/摄像头权限。
- 关闭或修复卡住的 Meet 权限对话框。
### 智能体已加入,但不会说话
### 会议创建失败
检查 `realtime` 路径:
`googlemeet create` 使用 Google Meet API 的 `spaces.create` 端点。请确认:
- 已配置 `oauth.clientId``oauth.refreshToken`,或存在匹配的
`OPENCLAW_GOOGLE_MEET_*` 环境变量。
- 刷新令牌是在加入创建支持后签发的。较旧的令牌可能缺少
`meetings.space.created` 作用域;请重新运行
`openclaw googlemeet auth login --json` 并更新插件配置。
- Google Cloud 项目和 OAuth 主体被允许使用所需的 Google Meet API 作用域。
### 智能体加入了,但不说话
检查实时路径:
```bash
openclaw googlemeet setup
openclaw googlemeet status
```
使用 `mode: "realtime"` 实现收听/回话。`mode: "transcribe"` 按设计
不会启动双向实时语音桥接。
收听/回话请使用 `mode: "realtime"`。`mode: "transcribe"` 按设计不会启动双向实时语音桥接。
还要验证:
- Gateway 网关主机上有可用的实时 provider 密钥,例如
- Gateway 网关主机上有可用的实时提供商密钥,例如
`OPENAI_API_KEY``GEMINI_API_KEY`
- Chrome 主机上可以看到 `BlackHole 2ch`
- Chrome 主机上可 `BlackHole 2ch`
- Chrome 主机上存在 `rec``play`
- Meet 麦克风和扬声器已通过 OpenClaw 使用的虚拟音频路径进行路由。
- Meet 麦克风和扬声器已通过 OpenClaw 使用的虚拟音频路径进行路由。
### Twilio 设置检查失败
`voice-call` 未被允许或未启用时,`twilio-voice-call-plugin` 会失败。
将其添加到 `plugins.allow`,启用 `plugins.entries.voice-call`,然后重新加载
Gateway 网关。
请将其添加到 `plugins.allow`,启用 `plugins.entries.voice-call`,并重新加载 Gateway 网关。
当 Twilio 后端缺少账户
SID、auth token 或主叫号码时,`twilio-voice-call-credentials` 会失败。在 Gateway 网关主机上设置这些值:
当 Twilio 后端缺少 account SID、auth token 或主叫号码时,`twilio-voice-call-credentials` 会失败。请在 Gateway 网关主机上设置这些值:
```bash
export TWILIO_ACCOUNT_SID=AC...
@ -726,8 +692,7 @@ openclaw googlemeet setup
### Twilio 呼叫已开始,但始终未进入会议
确认 Meet 事件公开了电话拨入详情。传入准确的拨入
号码和 PIN或自定义 DTMF 序列:
确认 Meet 事件公开了电话拨入详情。传入精确的拨入号码和 PIN或自定义 DTMF 序列:
```bash
openclaw googlemeet join https://meet.google.com/abc-defg-hij \
@ -736,33 +701,23 @@ openclaw googlemeet join https://meet.google.com/abc-defg-hij \
--dtmf-sequence ww123456#
```
如果 provider 在输入 PIN 前需要暂停,请在 `--dtmf-sequence` 中使用前导 `w` 或逗号。
如果提供商在输入 PIN 前需要暂停,请在 `--dtmf-sequence` 中使用前导 `w` 或逗号。
## 说明
Google Meet 官方媒体 API 偏向接收,因此向 Meet
通话中发声仍然需要一个参会者路径。该插件让这一边界保持可见:
Chrome 负责浏览器参会和本地音频路由Twilio 负责
电话拨入参会。
Google Meet 的官方媒体 API 偏向接收,因此要在 Meet 通话中发言仍然需要一个参会者路径。该插件会将这一边界清晰地保留下来Chrome 负责浏览器参会和本地音频路由Twilio 负责电话拨入参会。
Chrome `realtime` 模式需要以下之一:
Chrome 实时模式需要以下之一:
- `chrome.audioInputCommand``chrome.audioOutputCommand`OpenClaw 负责
实时模型桥接,并在这些
命令与所选实时语音 provider 之间传输 8 kHz G.711 mu-law 音频。
- `chrome.audioBridgeCommand`:一个外部桥接命令负责整个本地
音频路径,并且必须在启动或验证其守护进程后退出。
- `chrome.audioInputCommand` 加上 `chrome.audioOutputCommand`OpenClaw 拥有实时模型桥接,并在这些命令与所选实时语音提供商之间传输 8 kHz G.711 mu-law 音频。
- `chrome.audioBridgeCommand`:由外部桥接命令接管整个本地音频路径,并且该命令必须在启动或验证其守护进程后退出。
为了获得干净的双工音频,请将 Meet 输出和 Meet 麦克风路由到独立的
虚拟设备,或类似 Loopback 的虚拟设备图。单个共享的
BlackHole 设备可能会把其他参会者的声音回送进通话。
若要获得干净的双向音频,请将 Meet 输出和 Meet 麦克风分别路由到独立的虚拟设备,或使用类似 Loopback 的虚拟设备图。单个共享的 BlackHole 设备可能会将其他参会者的声音回送到通话中。
`googlemeet speak` 会触发 Chrome
会话的活动实时音频桥接。`googlemeet leave` 会停止该桥接。对于通过 Voice Call 插件委派的 Twilio
会话,`leave` 还会挂断底层语音呼叫。
`googlemeet speak` 会触发 Chrome 会话的活动实时音频桥接。`googlemeet leave` 会停止该桥接。对于通过 Voice Call 插件委派的 Twilio 会话,`leave` 还会挂断底层语音呼叫。
## 相关内容
- [Voice call 插件](/zh-CN/plugins/voice-call)
- [Talk mode](/zh-CN/nodes/talk)
- [Talk 模式](/zh-CN/nodes/talk)
- [构建插件](/zh-CN/plugins/building-plugins)