---
summary: "Google Meet 传输:配对节点上的本地 Chrome、Chrome 以及 Twilio 拨入"
read_when:
- "您正在本地 Chrome、配对的 Chrome 节点和 Twilio 拨入之间进行选择"
- "您将 macOS VM 作为 Chrome 主机提供给网关"
- "您正在安装 Chrome 对讲路径所需的主机音频工具"
title: "Google 满足传输和主机"
sidebarTitle: "交通"
---
Chrome、Chrome 节点和 Twilio 传输、Parallels macOS VM 拓扑以及它们所需的主机音频工具。 [Google Meet 插件](/plugins/google-meet) 指南的一部分。
## 本地 Gateway + Parallels Chrome
在 macOS VM 中不需要完整的网关或模型 API 密钥,只是为了给它 Chrome。本地运行网关和代理;在 VM 中运行节点主机。
| 位置 | 什么 |
| -------------------- | ----------------------------------------------------------------------------------------------- |
| 网关主机 | OpenClaw 网关、代理工作区、model/API 密钥、实时提供商、Google Meet 插件配置 |
| 平行线 macOS VM | OpenClaw CLI/node 主机、Chrome、SoX、BlackHole 2ch、登录到 Google 的 Chrome 配置文件 |
| VM 中不需要 | 网关服务、代理配置、模型提供程序设置 |
安装 VM 依赖项,重新启动,验证:
```bash
brew install blackhole-2ch sox
sudo reboot
system_profiler SPAudioDataType | grep -i BlackHole
command -v sox
```
在VM中安装插件,默认启用,并启动节点主机:
```bash
openclaw plugins install @openclaw/google-meet
openclaw node run --host --port 18789 --display-name parallels-macos
```
如果 `` 是没有 TLS 的 LAN IP,请选择加入该受信任的专用网络:
```bash
OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1 \
openclaw node run --host --port 18789 --display-name parallels-macos
```
安装为 LaunchAgent 时,也使用相同的标志(它是进程环境变量,在安装时会保留到 LaunchAgent 环境中,而不是保存在 `openclaw.json` 设置中):
```bash
OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1 \
openclaw node install --host --port 18789 --display-name parallels-macos --force
openclaw node restart
```
从网关主机批准该节点,然后确认它同时通告 `googlemeet.chrome` 和浏览器 capability/`browser.proxy`:
```bash
openclaw devices list
openclaw devices approve
openclaw nodes status
```
通过该 node 路由 Meet:
```json5
{
gateway: {
nodes: {
commands: { allow: ["googlemeet.chrome", "browser.proxy"] },
},
},
plugins: {
entries: {
"google-meet": {
enabled: true,
config: {
defaultTransport: "chrome-node",
chrome: {
guestName: "OpenClaw Agent",
autoJoin: true,
reuseExistingTab: true,
},
chromeNode: {
node: "parallels-macos",
},
},
},
},
},
}
```
现在从 Gateway 主机正常加入:
```bash
openclaw googlemeet join https://meet.google.com/abc-defg-hij
```
进行单命令冒烟测试,该命令会创建或复用会话、说出已知短语,并打印会话健康状态:
```bash
openclaw googlemeet test-speech https://meet.google.com/abc-defg-hij
```
在实时加入期间,浏览器自动填充来宾姓名,单击 Join/Ask 加入,并在出现时接受 Meet 的首次运行“使用麦克风”提示(或在仅观察加入和仅浏览器会议创建期间“在没有麦克风的情况下继续”)。如果配置文件已注销、Meet 正在等待主持人准入、Chrome 需要 mic/camera 权限,或者 Meet 停留在未解决的提示上,则结果包括 `manualAction: { reason, message }`。停止重试,报告该消息加上 `browserUrl`/`browserTitle`,并仅在手动操作完成后重试。
如果省略 `chromeNode.node`,OpenClaw 仅会在恰好有一个已连接 node 同时声明 `googlemeet.chrome` 和浏览器控制能力时自动选择;当有多个具备能力的 node 连接时,请固定设置 `chromeNode.node`(可使用 node id、显示名称或远程 IP)。
### 常见故障排查
| 症状 | 修复 |
| -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Configured Google Meet node ... is not usable: offline` | 已知指定的 node,但当前不可用。报告设置阻塞原因;除非用户要求,否则不要静默回退到其他传输方式。 |
| `No connected Google Meet-capable node` | 在VM中安装`npm:@openclaw/google-meet`,运行`openclaw plugins enable browser`,启动`openclaw node run`,并批准配对。如果 Google Meet 已明确禁用,也请启用它。确认`gateway.nodes.commands.allow`包括`googlemeet.chrome`和`browser.proxy`。 |
| `BlackHole 2ch audio device not found` | 在 macOS 上,在被检查的主机中安装 `blackhole-2ch` 并重启。 |
| `PipeWire-Pulse is unavailable` | 在 Linux 上,启动桌面用户的 `pipewire-pulse` 服务并安装 `pulseaudio-utils`;不要以 root 身份运行 node,也不要在 Chrome 用户的音频会话之外运行。 |
| Chrome 打开但无法加入 | 登录 VM 中的浏览器配置文件,或保留 `chrome.guestName` 设置。访客自动加入通过节点浏览器代理使用 OpenClaw 浏览器自动化;将节点的 `browser.defaultProfile`(或命名的现有会话配置文件)指向所需的配置文件。 |
| Meet 标签页重复 | 保留 `chrome.reuseExistingTab: true`。对于相同 URL,OpenClaw 会激活现有标签页;在打开另一个标签页之前,创建操作会复用正在进行的 `.../new` 或 Google 账户提示标签页。 |
| 无音频 | 通过 OpenClaw 使用的虚拟音频路径路由 Meet mic/speaker;使用单独的虚拟设备或环回式路由来实现干净的双工音频。 |
## 安装说明
Chrome 对讲默认使用 OpenClaw 未捆绑或再分发的主机音频工具:
- `sox`:命令行音频实用程序。该插件为默认 24 kHz PCM16 音频桥发出显式 CoreAudio 设备命令。
- `blackhole-2ch`:macOS 虚拟音频驱动,提供 Chrome/Meet 音频路由所使用的 `BlackHole 2ch` 设备。
- `pactl`、`pacat` 和 `parec`:Linux PulseAudio 实用程序用于 PipeWire-Pulse,以通过 `OpenClaw Meeting Audio` 进行配置和流传输。
SoX 的许可证为 `LGPL-2.0-only AND GPL-2.0-only`;BlackHole 的许可证为 GPL-3.0。如果你构建的安装程序或设备将 BlackHole 与 OpenClaw 捆绑在一起,请审查 BlackHole 上游的许可,或从 Existential Audio 获取单独许可。
## 传输方式
| 传输方式 | 适用场景 |
| ------------- | -------------------------------------------------------------------------------------------- |
| `chrome` | Chrome/audio 位于网关主机上 |
| `chrome-node` | Chrome/audio 位于配对节点上(例如 Parallels macOS VM) |
| `twilio` | 通过 Voice Call 插件进行电话拨入回退,当无法使用 Chrome 参与时使用 |
### Chrome
通过 OpenClaw 浏览器控件打开 Meet URL 并作为登录的 OpenClaw 浏览器配置文件加入。对于对讲模式,插件会在浏览器工作之前检查或配置主机的本机虚拟音频后端。本地 Chrome 此时还运行任何配置的音频桥健康命令; `chrome-node` 在启动桥接时在节点上运行该检查。对讲桥仅在浏览器运行状况确认虚拟 input/output 音频路由后启动。对于本地Chrome,选择带有`browser.defaultProfile`的配置文件; `chrome.browserProfile` 被传递到 `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
```
通过生成的输入命令,共享浏览器桥可以独立于助理输出捕获参与者回放。本机后端将助理音频注入 Meet 的虚拟麦克风,并捕获该注入以进行波形验证。远程播放远离麦克风总线,并且相同的路径在本地或配对节点上运行。显式 `chrome.audioInputCommand` 覆盖保留其配置的提供程序输入路径。实时需要托管隔离捕获,因此在选择输入覆盖之前将其删除。如果所需的本机后端或浏览器捕获不可用,则加入会失败并出现音频路径错误。
如果 OpenClaw 获取命令对音频桥后启动失败,它会在回滚失败连接打开的选项卡之前尝试停止该桥。此启动清理不会影响重用或采用的选项卡,包括 `chrome.launch: false` 会话。 Node 清理目标是返回的桥 ID;如果节点启动在返回 ID 之前失败,则网关无法保证远程桥清理。外部桥命令管理它们自己的进程生命周期。
### Twilio
由 [Voice call 插件](/plugins/voice-call) 执行的严格拨号计划。它不会解析 Meet 页面中的电话号码;Google Meet 必须为该会议提供电话拨入号码和 PIN。
请在 Gateway 主机上启用 Voice Call,而不是在 Chrome 节点上:
```json5
{
plugins: {
allow: ["google-meet", "voice-call", "google"],
entries: {
"google-meet": {
enabled: true,
config: {
defaultTransport: "chrome-node",
// or set "twilio" if Twilio should be the default
},
},
"voice-call": {
enabled: true,
config: {
provider: "twilio",
inboundPolicy: "allowlist",
realtime: {
enabled: true,
provider: "google",
instructions: "Join this Google Meet as an OpenClaw agent. Be brief.",
toolPolicy: "safe-read-only",
providers: {
google: {
silenceDurationMs: 500,
startSensitivity: "high",
},
},
},
},
},
google: {
enabled: true,
},
},
},
}
```
通过环境变量提供 Twilio 凭据,以避免将密钥放入 `openclaw.json`:
```bash
export TWILIO_ACCOUNT_SID=AC...
export TWILIO_AUTH_TOKEN=...
export TWILIO_FROM_NUMBER=+15550001234
export GEMINI_API_KEY=...
```
如果实时语音提供方是 OpenAI,请改用 `realtime.provider: "openai"` 并设置 `OPENAI_API_KEY`。
插件启用和配置更改会自动应用默认的混合重新加载模式(请参阅 [Hot reload](/gateway/configuration/hot-reload))。如果您更改了网关的进程环境,请使用这些可用变量重新启动它。核实:
```bash
openclaw config validate
openclaw plugins list | grep -E 'google-meet|voice-call'
openclaw googlemeet setup
```
当 Twilio 委派已配置完成时,`googlemeet setup` 会包含 `twilio-voice-call-plugin`、`twilio-voice-call-credentials` 和 `twilio-voice-call-webhook` 检查。
```bash
openclaw googlemeet join https://meet.google.com/abc-defg-hij \
--transport twilio \
--dial-in-number +15551234567 \
--pin 123456
```
使用 `--dtmf-sequence` 可以自定义序列,并使用前导 `w` 或逗号在 PIN 前暂停:
```bash
openclaw googlemeet join https://meet.google.com/abc-defg-hij \
--transport twilio \
--dial-in-number +15551234567 \
--dtmf-sequence ww123456#
```