本页内容

本页内容

插件指南

Google 满足配置

插件配置默认值、可选覆盖和语音提供程序示例。 Google Meet 插件 指南的一部分。

配置

通用的 Chrome agent 路径只需要启用插件、BlackHole、SoX、一个实时提供商密钥,以及一个已配置的 OpenClaw TTS 提供商:

json5
{  plugins: {    entries: {      "google-meet": {        enabled: true,        config: {},      },    },  },}

默认值

键 默认值 笔记
defaultTransport "chrome"
defaultMode "agent" "realtime" 是 "agent" 的旧版别名;新调用方应使用 "agent"
chromeNode.node 未设置 Node id/name/IP 为 chrome-node;当可能连接多个有能力的节点时需要
chrome.launch true 为加入通话启动 Chrome;仅在复用已打开的会话时设为 false
chrome.audioBackend "auto" 在 macOS 上选择 blackhole-2ch 或在 Linux 上选择 pipewire-pulse;当配对的 Chrome 节点使用与网关不同的 OS 时,设置显式后端
chrome.guestName "OpenClaw Agent" 显示在未登录状态的 Meet 来宾界面上
chrome.autoJoin true 在 chrome-node 上尽力填写来宾名称并点击“立即加入”
chrome.reuseExistingTab true 激活现有的 Meet 标签页,而不是打开重复的标签页
chrome.waitForInCallMs 20000 等待 Meet 标签页报告已进入通话状态,然后再播放语音回复开场白
chrome.audioFormat "pcm16-24khz" 命令对音频格式; "g711-ulaw-8khz" 仅适用于发出电话音频的 legacy/custom 命令对
chrome.audioBufferBytes 4096 用于推导生成的命令延迟的处理缓冲区;值会被限制为至少 17 字节
chrome.audioInputCommand 生成的本机命令 显式命令向提供者提供参与者输入。如果没有覆盖,浏览器回放会提供参与者输入,生成的本机命令会验证助理注入。在 macOS 上使用 SoX/CoreAudio 或在 Linux 上使用 parec。
chrome.audioOutputCommand 生成的本机命令 使用 macOS 上的 SoX/CoreAudio 或 Linux 上的 pacat 将助理语音注入虚拟麦克风。
chrome.bargeInInputCommand 未设置 可选的独立本地麦克风,供提供商在网关托管的命令对桥上支持主机驱动的中断。 GPT-Live 自行处理中断,不启动该命令。
chrome.bargeInRmsThreshold 650 被视为人为打断的 RMS 音量
chrome.bargeInPeakThreshold 2500 被视为人为打断的峰值音量
chrome.bargeInCooldownMs 900 两次重复打断清除之间的最短延迟
mode(每次请求) "agent" 对讲模式;请参阅 Agent 和 bidi 模式 表
realtime.provider "openai" 当下方的作用域字段未设置时使用的兼容性回退值
realtime.transcriptionProvider "openai" agent 模式用于实时转录的提供者 ID
realtime.voiceProvider 未设置 bidi 模式使用的提供商 ID。设置"google"为Gemini Live或"openai"为OpenAI实时语音;与 realtime.model 配对以获得显式模型。
realtime.toolPolicy "safe-read-only" 请参阅 代理和双向模式
realtime.instructions 简短的语音回复指令 告知模型简短发言,并使用 openclaw_agent_consult 获取更深入的回答
realtime.introMessage "Say exactly: I'm here and listening." 实时桥接连接时播放一次;设为 "" 可静默加入
realtime.agentId "main" OpenClaw 用于功能工具咨询和本机 Live 委派的代理 ID。
voiceCall.enabled true 将 Twilio PSTN 通话、DTMF 和开场问候语交由 Voice Call 插件处理
voiceCall.dtmfDelayMs 12000 在通过 Twilio 播放 PIN- 派生的 DTMF 序列之前引导等待
voiceCall.postDtmfSpeechDelayMs 5000 Voice Call 启动 Twilio 通话线路后,请求实时开场问候语前的延迟

chrome.audioBridgeCommand 和 chrome.audioBridgeHealthCommand 让外部桥接器拥有整个本地音频路径,而不是 chrome.audioInputCommand/chrome.audioOutputCommand;有关哪种模式可以使用它们的约束,请参阅 Notes。

旧版 realtime.provider: "google" 形状存在 openclaw doctor --fix 迁移:当尚未设置这些字段时,它将将该意图移至 realtime.voiceProvider: "google" 加上 realtime.transcriptionProvider: "openai"。

GPT-Live with Cove

选择 bidi 模式进行 GPT-Live 语音。 agent模式继续使用实时转录和常规OpenClaw TTS;更改实时语音模型不会更改该模式的语音。

使用 openclaw models auth login --provider openai 登录网关主机,然后配置现有模型和提供程序字段:

json5
{  plugins: {    entries: {      "google-meet": {        config: {          defaultMode: "bidi",          realtime: {            voiceProvider: "openai",            model: "gpt-live-1-codex",            providers: {              openai: { voice: "cove" },            },          },        },      },    },  },}

这使用与 Discord 和 Talk 相同的网关拥有的 GPT-Live 路由,包括本机代理委派和提供商拥有的中断。将 chrome.audioFormat 保留为 24 kHz PCM16 默认值。现有的非固定会议配置保留提供商的默认模型;明确选择“实时”。

删除任何显式 chrome.audioInputCommand 以使用 Live 的托管隔离浏览器输入。现有的自定义输入命令保留了其他模型的提供者输入行为; Live 拒绝该路径,因为无法验证其隔离性。选择“实时”不会默默地放弃已配置的输入源。

对于公共平台 API 路由,请使用 model: "gpt-live-1" 和支持的语音(例如 voice: "marin"),并在网关主机上使用 OpenAI API 密钥。 cove属于Codex路线。请参阅 OpenAI 语音和语音 了解身份验证和 model/voice 兼容性。

可选覆盖

json5
{  defaults: {    meeting: "https://meet.google.com/abc-defg-hij",  },  browser: {    defaultProfile: "openclaw",  },  chrome: {    guestName: "OpenClaw Agent",    waitForInCallMs: 30000,    bargeInInputCommand: [      "sox",      "-q",      "-t",      "coreaudio",      "External Microphone",      "-r",      "24000",      "-c",      "1",      "-b",      "16",      "-e",      "signed-integer",      "-t",      "raw",      "-",    ],  },  chromeNode: {    node: "parallels-macos",  },  defaultMode: "agent",  realtime: {    provider: "openai",    transcriptionProvider: "openai",    voiceProvider: "google",    model: "gemini-3.1-flash-live-preview",    agentId: "jay",    toolPolicy: "owner",    introMessage: "Say exactly: I'm here.",    providers: {      google: {        speakerVoice: "Kore",      },    },  },}

同时用于 agent 模式听和说的 ElevenLabs:

json5
{  tts: {    provider: "elevenlabs",    providers: {      elevenlabs: {        modelId: "eleven_v3",        speakerVoiceId: "pMsXgVXv3BLzUgSXRplE",      },    },  },  plugins: {    entries: {      "google-meet": {        config: {          realtime: {            transcriptionProvider: "elevenlabs",            providers: {              elevenlabs: {                modelId: "scribe_v2_realtime",                audioFormat: "ulaw_8000",                sampleRate: 8000,                commitStrategy: "vad",              },            },          },        },      },    },  },}

持久的 Meet 声音来自 tts.providers.elevenlabs.speakerVoiceId。当启用 TTS 模型覆盖时,代理回复还可以使用每个回复 [[tts:speakerVoiceId=... model=eleven_v3]] 指令,但配置会提供会议的固定默认值。加入时,日志显示 transcriptionProvider=elevenlabs,每个语音回复都会记录 provider=elevenlabs model=eleven_v3 speakerVoiceId=<voiceId>。

Twilio-仅配置:

json5
{  defaultTransport: "twilio",  twilio: {    defaultDialInNumber: "+15551234567",    defaultPin: "123456",  },  voiceCall: {    gatewayUrl: "ws://127.0.0.1:18789",  },}

当 voiceCall.enabled: true(默认值)且使用 Twilio 传输时,Voice Call 会在打开实时媒体流之前先拨打 DTMF 序列,然后使用保存的开场文本作为初始实时问候。如果未启用 voice-call,Google Meet 仍然可以验证并记录拨号计划,但无法发起 Twilio 呼叫。

保留 voiceCall.gatewayUrl 未设置以使用本地可信网关运行时,这会保留完整调用的调用代理。配置的网关 URL 仍然是显式的 WebSocket 目标,并且无法验证插件来源;非默认代理加入将被拒绝,而不是默默地使用另一个代理。当需要每个座席路由时,在同一网关进程中运行 Google Meet 和语音呼叫。

本页有帮助吗?