Bundled plugin guides
Google Meet Plugin
OpenClaw рдХреЗ рд▓рд┐рдП Google Meet рдкреНрд░рддрд┐рднрд╛рдЧреА рд╕рдорд░реНрдерди тАФ Plugin рдЬрд╛рдирдмреВрдЭрдХрд░ рд╕реНрдкрд╖реНрдЯ рд╣реИ:
- рдпрд╣ рдХреЗрд╡рд▓ рд╕реНрдкрд╖реНрдЯ
https://meet.google.com/...URL рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИред - рдпрд╣ Google Meet API рдХреЗ рдЬрд╝рд░рд┐рдП рдПрдХ рдирдпрд╛ Meet рд╕реНрдкреЗрд╕ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ, рдлрд┐рд░ рд▓реМрдЯрд╛рдП рдЧрдП URL рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
agentрдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЯреЙрдХ-рдмреИрдХ рдореЛрдб рд╣реИ: рд░рд┐рдпрд▓рдЯрд╛рдЗрдо рдЯреНрд░рд╛рдВрд╕рдХреНрд░рд┐рдкреНрд╢рди рд╕реБрдирддрд╛ рд╣реИ, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ OpenClaw рдПрдЬреЗрдВрдЯ рдЬрд╡рд╛рдм рджреЗрддрд╛ рд╣реИ, рдФрд░ рдирд┐рдпрдорд┐рдд OpenClaw TTS Meet рдореЗрдВ рдмреЛрд▓рддрд╛ рд╣реИредbidifallback рд╕реАрдзреЗ рд░рд┐рдпрд▓рдЯрд╛рдЗрдо рд╡реЙрдЗрд╕ рдореЙрдбрд▓ рдореЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд░рд╣рддрд╛ рд╣реИред- рдПрдЬреЗрдВрдЯ
modeрдХреЗ рд╕рд╛рде рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдЪреБрдирддреЗ рд╣реИрдВ: рд▓рд╛рдЗрд╡ рд╕реБрдирдиреЗ/рдЯреЙрдХ-рдмреИрдХ рдХреЗ рд▓рд┐рдПagent, рд╕реАрдзреЗ рд░рд┐рдпрд▓рдЯрд╛рдЗрдо рд╡реЙрдЗрд╕ fallback рдХреЗ рд▓рд┐рдПbidi, рдпрд╛ рдЯреЙрдХ-рдмреИрдХ рдмреНрд░рд┐рдЬ рдХреЗ рдмрд┐рдирд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╢рд╛рдорд┐рд▓/рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПtranscribeрдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред - Auth рд╡реНрдпрдХреНрддрд┐рдЧрдд Google OAuth рдпрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╕рд╛рдЗрди-рдЗрди Chrome рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред
- рдХреЛрдИ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕рд╣рдорддрд┐ рдШреЛрд╖рдгрд╛ рдирд╣реАрдВ рд╣реИред
- рдбрд┐рдлрд╝реЙрд▓реНрдЯ Chrome рдСрдбрд┐рдпреЛ рдмреИрдХрдПрдВрдб
BlackHole 2chрд╣реИред - Chrome рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдпрд╛ paired node host рдкрд░ рдЪрд▓ рд╕рдХрддрд╛ рд╣реИред
- Twilio рдбрд╛рдпрд▓-рдЗрди рдирдВрдмрд░ рдХреЗ рд╕рд╛рде рд╡реИрдХрд▓реНрдкрд┐рдХ PIN рдпрд╛ DTMF sequence рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ; рдпрд╣ Meet URL рдХреЛ рд╕реАрдзреЗ рдбрд╛рдпрд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред
- CLI рдХрдорд╛рдВрдб
googlemeetрд╣реИ;meetрд╡реНрдпрд╛рдкрдХ рдПрдЬреЗрдВрдЯ рдЯреЗрд▓реАрдХреЙрдиреНрдлрд╝реНрд░реЗрдВрд╕ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЗ рд▓рд┐рдП рдЖрд░рдХреНрд╖рд┐рдд рд╣реИред
рддреНрд╡рд░рд┐рдд рд╢реБрд░реБрдЖрдд
рд╕реНрдерд╛рдиреАрдп рдСрдбрд┐рдпреЛ dependencies рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ рдФрд░ рд░рд┐рдпрд▓рдЯрд╛рдЗрдо рдЯреНрд░рд╛рдВрд╕рдХреНрд░рд┐рдкреНрд╢рди
provider рддрдерд╛ рдирд┐рдпрдорд┐рдд OpenClaw TTS рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред OpenAI рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЯреНрд░рд╛рдВрд╕рдХреНрд░рд┐рдкреНрд╢рди
provider рд╣реИ; Google Gemini Live рдЕрд▓рдЧ bidi рд╡реЙрдЗрд╕ fallback рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
realtime.voiceProvider: "google" рдХреЗ рд╕рд╛рде:
brew install blackhole-2ch soxexport OPENAI_API_KEY=sk-...# only needed when realtime.voiceProvider is "google" for bidi modeexport GEMINI_API_KEY=...blackhole-2ch BlackHole 2ch рд╡рд░реНрдЪреБрдЕрд▓ рдСрдбрд┐рдпреЛ рдбрд┐рд╡рд╛рдЗрд╕ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рддрд╛ рд╣реИред Homebrew рдХреЗ
installer рдХреЛ macOS рджреНрд╡рд╛рд░рд╛ рдбрд┐рд╡рд╛рдЗрд╕ рджрд┐рдЦрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ reboot рдЪрд╛рд╣рд┐рдП:
sudo rebootReboot рдХреЗ рдмрд╛рдж, рджреЛрдиреЛрдВ рд╣рд┐рд╕реНрд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ:
system_profiler SPAudioDataType | grep -i BlackHolecommand -v soxPlugin рд╕рдХреНрд╖рдо рдХрд░реЗрдВ:
{ plugins: { entries: { "google-meet": { enabled: true, config: {}, }, }, },}Setup рдЬрд╛рдВрдЪреЗрдВ:
openclaw googlemeet setupSetup рдЖрдЙрдЯрдкреБрдЯ рдПрдЬреЗрдВрдЯ-рдкрдардиреАрдп рдФрд░ mode-aware рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ Chrome
profile, node pinning, рдФрд░, рд░рд┐рдпрд▓рдЯрд╛рдЗрдо Chrome joins рдХреЗ рд▓рд┐рдП, BlackHole/SoX audio
bridge рддрдерд╛ delayed realtime intro checks рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИред Observe-only joins рдХреЗ рд▓рд┐рдП, рд╡рд╣реА
transport --mode transcribe рдХреЗ рд╕рд╛рде рдЬрд╛рдВрдЪреЗрдВ; рд╡рд╣ рдореЛрдб realtime audio prerequisites рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ
рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ bridge рдХреЗ рдЬрд╝рд░рд┐рдП рди рд╕реБрдирддрд╛ рд╣реИ рди рдмреЛрд▓рддрд╛ рд╣реИ:
openclaw googlemeet setup --transport chrome-node --mode transcribeрдЬрдм Twilio delegation рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рд╣реЛ, setup рдпрд╣ рднреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐
voice-call Plugin, Twilio credentials, рдФрд░ public Webhook exposure рддреИрдпрд╛рд░ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред
Agent рдХреЛ join рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐рд╕реА рднреА ok: false check рдХреЛ checked transport рдФрд░ mode
рдХреЗ рд▓рд┐рдП blocker рдорд╛рдиреЗрдВред Scripts рдпрд╛ machine-readable output рдХреЗ рд▓рд┐рдП openclaw googlemeet setup --json рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдХрд┐рд╕реА specific transport рдХреЛ agent рджреНрд╡рд╛рд░рд╛ try рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ preflight рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП --transport chrome,
--transport chrome-node, рдпрд╛ --transport twilio рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
Twilio рдХреЗ рд▓рд┐рдП, рдЬрдм default transport Chrome рд╣реЛ рддреЛ рд╣рдореЗрд╢рд╛ transport рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ preflight рдХрд░реЗрдВ:
openclaw googlemeet setup --transport twilioрдпрд╣ agent рджреНрд╡рд╛рд░рд╛ meeting dial рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рд╕реЗ рдкрд╣рд▓реЗ missing voice-call wiring,
Twilio credentials, рдпрд╛ unreachable Webhook exposure рдкрдХрдбрд╝рддрд╛ рд╣реИред
Meeting рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ:
openclaw googlemeet join https://meet.google.com/abc-defg-hijрдпрд╛ agent рдХреЛ google_meet tool рдХреЗ рдЬрд╝рд░рд┐рдП join рдХрд░рдиреЗ рджреЗрдВ:
{ "action": "join", "url": "https://meet.google.com/abc-defg-hij", "transport": "chrome-node", "mode": "agent"}Agent-facing google_meet tool artifact, calendar, setup, transcribe, Twilio,
рдФрд░ chrome-node flows рдХреЗ рд▓рд┐рдП non-macOS hosts рдкрд░ рдЙрдкрд▓рдмреНрдз рд░рд╣рддрд╛ рд╣реИред Local
Chrome talk-back actions рд╡рд╣рд╛рдБ blocked рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ bundled Chrome audio path
рдлрд╝рд┐рд▓рд╣рд╛рд▓ macOS BlackHole 2ch рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИред Linux рдкрд░, Chrome talk-back
participation рдХреЗ рд▓рд┐рдП mode: "transcribe", Twilio dial-in, рдпрд╛ macOS chrome-node host рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдирдИ meeting рдмрдирд╛рдПрдБ рдФрд░ рдЙрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ:
openclaw googlemeet create --transport chrome-node --mode agentAPI-created rooms рдХреЗ рд▓рд┐рдП, рдЬрдм рдЖрдк room рдХреА no-knock policy рдХреЛ Google
account defaults рд╕реЗ inherit рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕реНрдкрд╖реНрдЯ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реЛрдВ, Google Meet SpaceConfig.accessType рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
openclaw googlemeet create --access-type OPEN --transport chrome-node --mode agentOPEN Meet URL рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреЛ knocking рдХреЗ рдмрд┐рдирд╛ join рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИред TRUSTED host
organization рдХреЗ trusted users, invited external users, рдФрд░ dial-in users рдХреЛ
knocking рдХреЗ рдмрд┐рдирд╛ join рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИред RESTRICTED no-knock entry рдХреЛ invitees рддрдХ рд╕реАрдорд┐рдд рдХрд░рддрд╛ рд╣реИред рдпреЗ
settings рдХреЗрд╡рд▓ official Google Meet API creation path рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП OAuth
credentials рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред
рдпрджрд┐ рдЖрдкрдиреЗ рдпрд╣ option рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ Google Meet authenticate рдХрд┐рдпрд╛ рдерд╛, рддреЛ рдЕрдкрдиреА Google OAuth consent screen рдореЗрдВ
meetings.space.settings scope рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж
openclaw googlemeet auth login --json рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдПрдБред
рдХреЗрд╡рд▓ URL рдмрдирд╛рдПрдБ, join рди рдХрд░реЗрдВ:
openclaw googlemeet create --no-joingooglemeet create рдХреЗ рджреЛ paths рд╣реИрдВ:
- API create: рдЬрдм Google Meet OAuth credentials рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рд╣реЛрдВ рддрдм рдЙрдкрдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рд╕рдмрд╕реЗ deterministic path рд╣реИ рдФрд░ browser UI state рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░рддрд╛ред
- Browser fallback: рдЬрдм OAuth credentials рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реЛрдВ рддрдм рдЙрдкрдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИред OpenClaw
pinned Chrome node рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ,
https://meet.google.com/newрдЦреЛрд▓рддрд╛ рд╣реИ, Google рджреНрд╡рд╛рд░рд╛ real meeting-code URL рдкрд░ redirect рдХрд░рдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ, рдлрд┐рд░ рд╡рд╣ URL рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдЗрд╕ path рдХреЗ рд▓рд┐рдП node рдкрд░ OpenClaw Chrome profile рдХрд╛ Google рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ signed in рд╣реЛрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред Browser automation Meet рдХреЗ рдЕрдкрдиреЗ first-run microphone prompt рдХреЛ handle рдХрд░рддрд╛ рд╣реИ; рдЙрд╕ prompt рдХреЛ Google login failure рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ред Join рдФрд░ create flows рдирдпрд╛ рдЦреЛрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ existing Meet tab рдХреЛ reuse рдХрд░рдиреЗ рдХреА рднреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред MatchingauthuserрдЬреИрд╕реА harmless URL query strings рдХреЛ ignore рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП agent retry рдХреЛ second Chrome tab рдмрдирд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп already-open meeting рдкрд░ focus рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
Command/tool output рдореЗрдВ source field (api рдпрд╛ browser) рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИ рддрд╛рдХрд┐ agents
рдмрддрд╛ рд╕рдХреЗрдВ рдХрд┐ рдХреМрди рд╕рд╛ path рдЙрдкрдпреЛрдЧ рд╣реБрдЖред create рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ new meeting join рдХрд░рддрд╛ рд╣реИ рдФрд░
joined: true plus join session рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдХреЗрд╡рд▓ URL mint рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, CLI рдкрд░
create --no-join рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдпрд╛ tool рдХреЛ "join": false pass рдХрд░реЗрдВред
рдпрд╛ agent рд╕реЗ рдХрд╣реЗрдВ: "Google Meet рдмрдирд╛рдПрдБ, agent talk-back mode рдХреЗ рд╕рд╛рде join рдХрд░реЗрдВ,
рдФрд░ рдореБрдЭреЗ link рднреЗрдЬреЗрдВред" Agent рдХреЛ action: "create" рдХреЗ рд╕рд╛рде google_meet call рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
рдФрд░ рдлрд┐рд░ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ meetingUri share рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
{ "action": "create", "transport": "chrome-node", "mode": "agent"}Observe-only/browser-control join рдХреЗ рд▓рд┐рдП, "mode": "transcribe" set рдХрд░реЗрдВред рдпрд╣
duplex realtime voice bridge start рдирд╣реАрдВ рдХрд░рддрд╛, BlackHole рдпрд╛ SoX рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд░рдЦрддрд╛,
рдФрд░ meeting рдореЗрдВ talk back рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЗрд╕ mode рдореЗрдВ Chrome joins
OpenClaw рдХреЗ microphone/camera permission grant рдФрд░ Meet Use
microphone path рд╕реЗ рднреА рдмрдЪрддреЗ рд╣реИрдВред рдпрджрд┐ Meet audio-choice interstitial рджрд┐рдЦрд╛рддрд╛ рд╣реИ, automation
no-microphone path рдЖрдЬрд╝рдорд╛рддрд╛ рд╣реИ рдФрд░ рдЕрдиреНрдпрдерд╛ local microphone рдЦреЛрд▓рдиреЗ рдХреЗ рдмрдЬрд╛рдп
manual action report рдХрд░рддрд╛ рд╣реИред Transcribe mode рдореЗрдВ, managed Chrome transports
best-effort Meet caption observer рднреА install рдХрд░рддреЗ рд╣реИрдВред googlemeet status --json рдФрд░
googlemeet doctor captioning, captionsEnabledAttempted,
transcriptLines, lastCaptionAt, lastCaptionSpeaker, lastCaptionText,
рдФрд░ рдЫреЛрдЯрд╛ recentTranscript tail рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ operators рдмрддрд╛ рд╕рдХреЗрдВ рдХрд┐ browser
call рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реБрдЖ рдпрд╛ рдирд╣реАрдВ рдФрд░ Meet captions text produce рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред
рдЬрдм рдЖрдкрдХреЛ yes/no probe рдЪрд╛рд╣рд┐рдП рддреЛ openclaw googlemeet test-listen <meet-url> --transport chrome-node рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
рдпрд╣ transcribe mode рдореЗрдВ join рдХрд░рддрд╛ рд╣реИ, fresh caption рдпрд╛ transcript movement рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ,
рдФрд░ listenVerified, listenTimedOut, manual
action fields, рддрдерд╛ latest caption health рд▓реМрдЯрд╛рддрд╛ рд╣реИред
Realtime sessions рдХреЗ рджреМрд░рд╛рди, google_meet status рдореЗрдВ browser рдФрд░ audio bridge
health рд╢рд╛рдорд┐рд▓ рд╣реЛрддреА рд╣реИ рдЬреИрд╕реЗ inCall, manualActionRequired, providerConnected,
realtimeReady, audioInputActive, audioOutputActive, last input/output
timestamps, byte counters, рдФрд░ bridge closed stateред рдпрджрд┐ safe Meet page prompt
рджрд┐рдЦрддрд╛ рд╣реИ, browser automation рдЬрдм рдХрд░ рд╕рдХрддрд╛ рд╣реИ рддрдм рдЙрд╕реЗ handle рдХрд░рддрд╛ рд╣реИред Login, host admission, рдФрд░
browser/OS permission prompts agent рджреНрд╡рд╛рд░рд╛ relay рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП reason рдФрд░
message рд╕рд╣рд┐рдд manual action рдХреЗ рд░реВрдк рдореЗрдВ report рд╣реЛрддреЗ рд╣реИрдВред Managed Chrome sessions рдХреЗрд╡рд▓ рддрдм intro рдпрд╛
test phrase emit рдХрд░рддреЗ рд╣реИрдВ рдЬрдм browser health inCall: true report рдХрд░рддреА рд╣реИ; рдЕрдиреНрдпрдерд╛ status
speechReady: false report рдХрд░рддрд╛ рд╣реИ рдФрд░ speech attempt рдХреЛ рдпрд╣ pretend рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп block рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдХрд┐ agent рдиреЗ meeting рдореЗрдВ рдмреЛрд▓рд╛ред
Local Chrome joins signed-in OpenClaw browser profile рдХреЗ рдЬрд╝рд░рд┐рдП рд╣реЛрддреЗ рд╣реИрдВред Realtime mode рдХреЛ
OpenClaw рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ microphone/speaker path рдХреЗ рд▓рд┐рдП BlackHole 2ch рдЪрд╛рд╣рд┐рдПред рд╕рд╛рдлрд╝
duplex audio рдХреЗ рд▓рд┐рдП, separate virtual devices рдпрд╛ Loopback-style graph рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ; рдПрдХ
single BlackHole device рдкрд╣рд▓реЗ smoke test рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рд▓реЗрдХрд┐рди echo рдХрд░ рд╕рдХрддрд╛ рд╣реИред
Local gateway + Parallels Chrome
рд╕рд┐рд░реНрдл VM рдХреЛ Chrome own рдХрд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП macOS VM рдХреЗ рдЕрдВрджрд░ full OpenClaw Gateway рдпрд╛ model API key рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред Gateway рдФрд░ agent locally рдЪрд▓рд╛рдПрдБ, рдлрд┐рд░ VM рдореЗрдВ node host рдЪрд▓рд╛рдПрдБред VM рдкрд░ bundled Plugin рдПрдХ рдмрд╛рд░ enable рдХрд░реЗрдВ рддрд╛рдХрд┐ node Chrome command advertise рдХрд░реЗ:
рдХрд╣рд╛рдБ рдХреНрдпрд╛ рдЪрд▓рддрд╛ рд╣реИ:
- Gateway host: OpenClaw Gateway, agent workspace, model/API keys, realtime provider, рдФрд░ Google Meet Plugin configред
- Parallels macOS VM: OpenClaw CLI/node host, Google Chrome, SoX, BlackHole 2ch, рдФрд░ Google рдореЗрдВ signed in Chrome profileред
- VM рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ: Gateway service, agent config, OpenAI/GPT key, рдпрд╛ model provider setupред
VM dependencies рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ:
brew install blackhole-2ch soxBlackHole рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж VM reboot рдХрд░реЗрдВ рддрд╛рдХрд┐ macOS BlackHole 2ch expose рдХрд░реЗ:
sudo rebootReboot рдХреЗ рдмрд╛рдж, verify рдХрд░реЗрдВ рдХрд┐ VM audio device рдФрд░ SoX commands рджреЗрдЦ рд╕рдХрддрд╛ рд╣реИ:
system_profiler SPAudioDataType | grep -i BlackHolecommand -v soxVM рдореЗрдВ OpenClaw install рдпрд╛ update рдХрд░реЗрдВ, рдлрд┐рд░ рд╡рд╣рд╛рдБ bundled Plugin enable рдХрд░реЗрдВ:
openclaw plugins enable google-meetVM рдореЗрдВ node host start рдХрд░реЗрдВ:
openclaw node run --host <gateway-host> --port 18789 --display-name parallels-macosрдпрджрд┐ <gateway-host> LAN IP рд╣реИ рдФрд░ рдЖрдк TLS use рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ, рддреЛ node plaintext WebSocket рдХреЛ refuse рдХрд░рддрд╛ рд╣реИ
рдЬрдм рддрдХ рдЖрдк рдЙрд╕ trusted private network рдХреЗ рд▓рд┐рдП opt in рди рдХрд░реЗрдВ:
OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1 \ openclaw node run --host <gateway-lan-ip> --port 18789 --display-name parallels-macosNode рдХреЛ LaunchAgent рдХреЗ рд░реВрдк рдореЗрдВ install рдХрд░рддреЗ рд╕рдордп рд╡рд╣реА environment variable рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1 \ openclaw node install --host <gateway-lan-ip> --port 18789 --display-name parallels-macos --forceopenclaw node restartOPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1 process environment рд╣реИ, рдХреЛрдИ
openclaw.json setting рдирд╣реАрдВред openclaw node install рдЗрд╕реЗ LaunchAgent
environment рдореЗрдВ store рдХрд░рддрд╛ рд╣реИ рдЬрдм рдпрд╣ install command рдкрд░ present рд╣реЛрддрд╛ рд╣реИред
Gateway host рд╕реЗ node approve рдХрд░реЗрдВ:
openclaw devices listopenclaw devices approve <requestId>Confirm рдХрд░реЗрдВ рдХрд┐ Gateway node рджреЗрдЦрддрд╛ рд╣реИ рдФрд░ рдпрд╣ googlemeet.chrome
рддрдерд╛ browser capability/browser.proxy рджреЛрдиреЛрдВ advertise рдХрд░рддрд╛ рд╣реИ:
openclaw nodes statusGateway host рдкрд░ Meet рдХреЛ рдЙрд╕ node рдХреЗ рдЬрд╝рд░рд┐рдП route рдХрд░реЗрдВ:
{ gateway: { nodes: { allowCommands: ["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 host рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ join рдХрд░реЗрдВ:
openclaw googlemeet join https://meet.google.com/abc-defg-hijрдпрд╛ agent рд╕реЗ transport: "chrome-node" рдХреЗ рд╕рд╛рде google_meet tool рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЛ рдХрд╣реЗрдВред
рдПрдХ-command smoke test рдХреЗ рд▓рд┐рдП рдЬреЛ session create рдпрд╛ reuse рдХрд░рддрд╛ рд╣реИ, known phrase рдмреЛрд▓рддрд╛ рд╣реИ, рдФрд░ session health print рдХрд░рддрд╛ рд╣реИ:
openclaw googlemeet test-speech https://meet.google.com/abc-defg-hijрд░реАрдпрд▓рдЯрд╛рдЗрдо рдЬреЙрдЗрди рдХреЗ рджреМрд░рд╛рди, OpenClaw рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдСрдЯреЛрдореЗрд╢рди рдЕрддрд┐рдерд┐ рдирд╛рдо рднрд░рддрд╛ рд╣реИ, Join/Ask to join рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╡рд╣ рдкреНрд░реЙрдореНрдкреНрдЯ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рдкрд░ Meet рдХреА рдкрд╣рд▓реА рдмрд╛рд░ рд╡рд╛рд▓реА "Use microphone" рдкрд╕рдВрдж рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред observe-only рдЬреЙрдЗрди рдпрд╛ browser-only рдореАрдЯрд┐рдВрдЧ рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди, рдЬрдм рд╡рд╣ рд╡рд┐рдХрд▓реНрдк рдЙрдкрд▓рдмреНрдз рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдмрд┐рдирд╛ рдорд╛рдЗрдХреНрд░реЛрдлрд╝реЛрди рдЙрд╕реА рдкреНрд░реЙрдореНрдкреНрдЯ рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реИред рдпрджрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд╕рд╛рдЗрди рдЗрди рдирд╣реАрдВ рд╣реИ, Meet рд╣реЛрд╕реНрдЯ рдЕрдиреБрдорддрд┐ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ, Chrome рдХреЛ рд░реАрдпрд▓рдЯрд╛рдЗрдо рдЬреЙрдЗрди рдХреЗ рд▓рд┐рдП рдорд╛рдЗрдХреНрд░реЛрдлрд╝реЛрди/рдХреИрдорд░рд╛ рдЕрдиреБрдорддрд┐ рдЪрд╛рд╣рд┐рдП, рдпрд╛ Meet рдРрд╕реЗ рдкреНрд░реЙрдореНрдкреНрдЯ рдкрд░ рдЕрдЯрдХрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдСрдЯреЛрдореЗрд╢рди рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛, рддреЛ join/test-speech рдкрд░рд┐рдгрд╛рдо manualActionRequired: true рдХреЛ manualActionReason рдФрд░ manualActionMessage рдХреЗ рд╕рд╛рде рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИред Agents рдХреЛ рдЬреЙрдЗрди рдлрд┐рд░ рд╕реЗ рдЖрдЬрд╝рдорд╛рдирд╛ рдмрдВрдж рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрд╕ рд╕рдЯреАрдХ рд╕рдВрджреЗрд╢ рдХреЗ рд╕рд╛рде рд╡рд░реНрддрдорд╛рди browserUrl/browserTitle рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдХреЗрд╡рд▓ рдореИрдиреБрдЕрд▓ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдкреВрд░реА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдлрд┐рд░ рд╕реЗ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрджрд┐ chromeNode.node рдЫреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ OpenClaw рдХреЗрд╡рд▓ рддрдм рдЕрдкрдиреЗ-рдЖрдк рдЪрдпрди рдХрд░рддрд╛ рд╣реИ рдЬрдм рдареАрдХ рдПрдХ рдХрдиреЗрдХреНрдЯреЗрдб рдиреЛрдб googlemeet.chrome рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдирд┐рдпрдВрддреНрд░рдг рджреЛрдиреЛрдВ рд╡рд┐рдЬреНрдЮрд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реЛред рдпрджрд┐ рдХрдИ рд╕рдХреНрд╖рдо рдиреЛрдб рдХрдиреЗрдХреНрдЯреЗрдб рд╣реИрдВ, рддреЛ chromeNode.node рдХреЛ рдиреЛрдб рдЖрдИрдбреА, рдкреНрд░рджрд░реНрд╢рди рдирд╛рдо, рдпрд╛ рд░рд┐рдореЛрдЯ IP рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВред
рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдлрд▓рддрд╛ рдЬрд╛рдВрдЪреЗрдВ:
Configured Google Meet node ... is not usable: offline: рдкрд┐рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдиреЛрдб Gateway рдХреЛ рдЬреНрдЮрд╛рдд рд╣реИ рд▓реЗрдХрд┐рди рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИред Agents рдХреЛ рдЙрд╕ рдиреЛрдб рдХреЛ рдирд┐рджрд╛рди рд╕реНрдерд┐рддрд┐ рдорд╛рдирдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрдкрдпреЛрдЧ рдпреЛрдЧреНрдп Chrome рд╣реЛрд╕реНрдЯ рдирд╣реАрдВ, рдФрд░ рдХрд┐рд╕реА рдЕрдиреНрдп рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕реЗрдЯрдЕрдк рдЕрд╡рд░реЛрдзрдХ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрдм рддрдХ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЛ рди рдХрд╣рд╛ рд╣реЛред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: рдЬрд╛рдВрдЪреЗ рдЬрд╛ рд░рд╣реЗ рд╣реЛрд╕реНрдЯ рдкрд░blackhole-2chрдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ рдФрд░ local Chrome рдСрдбрд┐рдпреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд░реАрдмреВрдЯ рдХрд░реЗрдВредBlackHole 2ch audio device not found on the node: VM рдореЗрдВblackhole-2chрдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ рдФрд░ VM рдХреЛ рд░реАрдмреВрдЯ рдХрд░реЗрдВред- Chrome рдЦреБрд▓рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЬреЙрдЗрди рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛: VM рдХреЗ рдЕрдВрджрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╛рдЗрди рдЗрди рдХрд░реЗрдВ, рдпрд╛ рдЕрддрд┐рдерд┐ рдЬреЙрдЗрди рдХреЗ рд▓рд┐рдП
chrome.guestNameрд╕реЗрдЯ рд░рдЦреЗрдВред рдЕрддрд┐рдерд┐ auto-join рдиреЛрдб рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ OpenClaw рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдСрдЯреЛрдореЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ; рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдиреЛрдб рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧ рдЙрд╕ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреА рдУрд░ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдПbrowser.defaultProfile: "user"рдпрд╛ рдирд╛рдорд┐рдд existing-session рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ред - рдбреБрдкреНрд▓рд┐рдХреЗрдЯ Meet рдЯреИрдм:
chrome.reuseExistingTab: trueрд╕рдХреНрд╖рдо рдЫреЛрдбрд╝реЗрдВред OpenClaw рдирдпрд╛ рдЯреИрдм рдЦреЛрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрд╕реА Meet URL рдХреЗ рд▓рд┐рдП рдореМрдЬреВрджрд╛ рдЯреИрдм рд╕рдХреНрд░рд┐рдп рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореАрдЯрд┐рдВрдЧ рдирд┐рд░реНрдорд╛рдг рджреВрд╕рд░рд╛ рдЯреИрдм рдЦреЛрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рдЧрддрд┐ рдореЗрдВ рдореМрдЬреВрджhttps://meet.google.com/newрдпрд╛ Google рдЦрд╛рддрд╛ рдкреНрд░реЙрдореНрдкреНрдЯ рдЯреИрдм рдХрд╛ рдкреБрдирдГ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред - рдСрдбрд┐рдпреЛ рдирд╣реАрдВ: Meet рдореЗрдВ, рдорд╛рдЗрдХреНрд░реЛрдлрд╝реЛрди/рд╕реНрдкреАрдХрд░ рдХреЛ OpenClaw рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╡рд░реНрдЪреБрдЕрд▓ рдСрдбрд┐рдпреЛ рдбрд┐рд╡рд╛рдЗрд╕ рдкрде рд╕реЗ рд░реВрдЯ рдХрд░реЗрдВ; рд╕рд╛рдлрд╝ рдбреБрдкреНрд▓реЗрдХреНрд╕ рдСрдбрд┐рдпреЛ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╡рд░реНрдЪреБрдЕрд▓ рдбрд┐рд╡рд╛рдЗрд╕ рдпрд╛ Loopback-рд╢реИрд▓реА рд░реВрдЯрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдЗрдВрд╕реНрдЯреЙрд▓ рдиреЛрдЯреНрд╕
Chrome talk-back рдбрд┐рдлрд╝реЙрд▓реНрдЯ рджреЛ рдмрд╛рд╣рд░реА рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:
sox: рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди рдСрдбрд┐рдпреЛ рдЙрдкрдпреЛрдЧрд┐рддрд╛ред Plugin рдбрд┐рдлрд╝реЙрд▓реНрдЯ 24 kHz PCM16 рдСрдбрд┐рдпреЛ рдмреНрд░рд┐рдЬ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ CoreAudio рдбрд┐рд╡рд╛рдЗрд╕ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИредblackhole-2ch: macOS рд╡рд░реНрдЪреБрдЕрд▓ рдСрдбрд┐рдпреЛ рдбреНрд░рд╛рдЗрд╡рд░ред рдпрд╣BlackHole 2chрдСрдбрд┐рдпреЛ рдбрд┐рд╡рд╛рдЗрд╕ рдмрдирд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ Chrome/Meet рд░реВрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
OpenClaw рдЗрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рднреА рдкреИрдХреЗрдЬ рдХреЛ рдмрдВрдбрд▓ рдпрд╛ рдкреБрдирд░реНрд╡рд┐рддрд░рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рдЙрдиреНрд╣реЗрдВ Homebrew рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрд╕реНрдЯ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреЛ рдХрд╣рддреЗ рд╣реИрдВред SoX LGPL-2.0-only AND GPL-2.0-only рдХреЗ рддрд╣рдд рд▓рд╛рдЗрд╕реЗрдВрд╕ рдкреНрд░рд╛рдкреНрдд рд╣реИ; BlackHole GPL-3.0 рд╣реИред рдпрджрд┐ рдЖрдк рдРрд╕рд╛ рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдпрд╛ appliance рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ BlackHole рдХреЛ OpenClaw рдХреЗ рд╕рд╛рде рдмрдВрдбрд▓ рдХрд░рддрд╛ рд╣реИ, рддреЛ BlackHole рдХреА upstream рд▓рд╛рдЗрд╕реЗрдВрд╕рд┐рдВрдЧ рд╢рд░реНрддреЛрдВ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░реЗрдВ рдпрд╛ Existential Audio рд╕реЗ рдЕрд▓рдЧ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ
Chrome
Chrome рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ OpenClaw рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ Meet URL рдЦреЛрд▓рддрд╛ рд╣реИ рдФрд░ рд╕рд╛рдЗрди-рдЗрди рдХрд┐рдП рдЧрдП OpenClaw рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЙрдЗрди рдХрд░рддрд╛ рд╣реИред macOS рдкрд░, Plugin рд▓реЙрдиреНрдЪ рд╕реЗ рдкрд╣рд▓реЗ BlackHole 2ch рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ, рддреЛ рдпрд╣ Chrome рдЦреЛрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдСрдбрд┐рдпреЛ рдмреНрд░рд┐рдЬ health рдХрдорд╛рдВрдб рдФрд░ startup рдХрдорд╛рдВрдб рднреА рдЪрд▓рд╛рддрд╛ рд╣реИред рдЬрдм Chrome/рдСрдбрд┐рдпреЛ Gateway рд╣реЛрд╕реНрдЯ рдкрд░ рд╣реЛрдВ рддреЛ chrome рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ; рдЬрдм Chrome/рдСрдбрд┐рдпреЛ рдХрд┐рд╕реА paired node рдЬреИрд╕реЗ Parallels macOS VM рдкрд░ рд╣реЛрдВ рддреЛ chrome-node рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред local Chrome рдХреЗ рд▓рд┐рдП, browser.defaultProfile рд╕реЗ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдЪреБрдиреЗрдВ; chrome.browserProfile рдХреЛ chrome-node рд╣реЛрд╕реНрдЯ рдХреЛ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
openclaw googlemeet join https://meet.google.com/abc-defg-hij --transport chromeopenclaw googlemeet join https://meet.google.com/abc-defg-hij --transport chrome-nodeChrome рдорд╛рдЗрдХреНрд░реЛрдлрд╝реЛрди рдФрд░ рд╕реНрдкреАрдХрд░ рдСрдбрд┐рдпреЛ рдХреЛ local OpenClaw рдСрдбрд┐рдпреЛ рдмреНрд░рд┐рдЬ рд╕реЗ рд░реВрдЯ рдХрд░реЗрдВред рдпрджрд┐ BlackHole 2ch рдЗрдВрд╕реНрдЯреЙрд▓ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЬреЙрдЗрди рдмрд┐рдирд╛ рдСрдбрд┐рдпреЛ рдкрде рдХреЗ рдЪреБрдкрдЪрд╛рдк рдЬреЙрдЗрди рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕реЗрдЯрдЕрдк рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓ рд╣реЛрддрд╛ рд╣реИред
Twilio
Twilio рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ Voice Call Plugin рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рдПрдХ рд╕рдЦреНрдд рдбрд╛рдпрд▓ рдкреНрд▓рд╛рди рд╣реИред рдпрд╣ рдлрд╝реЛрди рдирдВрдмрд░реЛрдВ рдХреЗ рд▓рд┐рдП Meet рдкреЗрдЬреЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ред
рдЬрдм Chrome рднрд╛рдЧреАрджрд╛рд░реА рдЙрдкрд▓рдмреНрдз рди рд╣реЛ рдпрд╛ рдЖрдк рдлрд╝реЛрди dial-in fallback рдЪрд╛рд╣рддреЗ рд╣реЛрдВ рддреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред Google Meet рдХреЛ рдореАрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдлрд╝реЛрди dial-in рдирдВрдмрд░ рдФрд░ PIN рджрд┐рдЦрд╛рдирд╛ рд╣реЛрдЧрд╛; OpenClaw рдЙрдиреНрд╣реЗрдВ Meet рдкреЗрдЬ рд╕реЗ рдЦреЛрдЬрддрд╛ рдирд╣реАрдВ рд╣реИред
Voice Call Plugin рдХреЛ Gateway рд╣реЛрд╕реНрдЯ рдкрд░ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ, Chrome рдиреЛрдб рдкрд░ рдирд╣реАрдВ:
{ 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 рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ environment рдпрд╛ config рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рджрд╛рди рдХрд░реЗрдВред Environment secrets рдХреЛ openclaw.json рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦрддрд╛ рд╣реИ:
export TWILIO_ACCOUNT_SID=AC...export TWILIO_AUTH_TOKEN=...export TWILIO_FROM_NUMBER=+15550001234export GEMINI_API_KEY=...рдпрджрд┐ рдЖрдкрдХрд╛ realtime voice provider рд╡рд╣реА рд╣реИ, рддреЛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп OpenAI provider Plugin рдФрд░ OPENAI_API_KEY рдХреЗ рд╕рд╛рде realtime.provider: "openai" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
voice-call рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж Gateway рдХреЛ restart рдпрд╛ reload рдХрд░реЗрдВ; Plugin config рдкрд░рд┐рд╡рд░реНрддрди рдкрд╣рд▓реЗ рд╕реЗ рдЪрд▓ рд░рд╣реЗ Gateway process рдореЗрдВ reload рд╣реЛрдиреЗ рддрдХ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддреЗред
рдлрд┐рд░ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ:
openclaw config validateopenclaw plugins list | grep -E 'google-meet|voice-call'openclaw googlemeet setupрдЬрдм Twilio delegation wired рд╣реЛ, рддреЛ googlemeet setup рдореЗрдВ рд╕рдлрд▓ twilio-voice-call-plugin, twilio-voice-call-credentials, рдФрд░ twilio-voice-call-webhook checks рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВред
openclaw googlemeet join https://meet.google.com/abc-defg-hij \ --transport twilio \ --dial-in-number +15551234567 \ --pin 123456рдЬрдм рдореАрдЯрд┐рдВрдЧ рдХреЛ custom sequence рдЪрд╛рд╣рд┐рдП рд╣реЛ рддреЛ --dtmf-sequence рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
openclaw googlemeet join https://meet.google.com/abc-defg-hij \ --transport twilio \ --dial-in-number +15551234567 \ --dtmf-sequence ww123456#OAuth рдФрд░ preflight
Meet рд▓рд┐рдВрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП OAuth рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ googlemeet create browser automation рдкрд░ fallback рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЬрдм рдЖрдк official API create, space resolution, рдпрд╛ Meet Media API preflight checks рдЪрд╛рд╣рддреЗ рд╣реЛрдВ рддреЛ OAuth рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред
Google Meet API access user OAuth рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ: Google Cloud OAuth client рдмрдирд╛рдПрдВ, рдЖрд╡рд╢реНрдпрдХ scopes рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВ, Google account рдХреЛ authorize рдХрд░реЗрдВ, рдлрд┐рд░ рдкрд░рд┐рдгрд╛рдореА refresh token рдХреЛ Google Meet Plugin config рдореЗрдВ store рдХрд░реЗрдВ рдпрд╛ OPENCLAW_GOOGLE_MEET_* environment variables рдкреНрд░рджрд╛рди рдХрд░реЗрдВред
OAuth Chrome join path рдХреЛ replace рдирд╣реАрдВ рдХрд░рддрд╛ред Chrome рдФрд░ Chrome-node transports рдЕрднреА рднреА signed-in Chrome profile, BlackHole/SoX, рдФрд░ connected node рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ join рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рдЖрдк browser participation рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред OAuth рдХреЗрд╡рд▓ official Google Meet API path рдХреЗ рд▓рд┐рдП рд╣реИ: meeting spaces рдмрдирд╛рдирд╛, spaces resolve рдХрд░рдирд╛, рдФрд░ Meet Media API preflight checks рдЪрд▓рд╛рдирд╛ред
Google credentials рдмрдирд╛рдПрдВ
Google Cloud Console рдореЗрдВ:
-
Google Cloud project рдмрдирд╛рдПрдВ рдпрд╛ рдЪреБрдиреЗрдВред
-
рдЙрд╕ project рдХреЗ рд▓рд┐рдП Google Meet REST API рд╕рдХреНрд╖рдо рдХрд░реЗрдВред
-
OAuth consent screen рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред
- Google Workspace organization рдХреЗ рд▓рд┐рдП Internal рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╣реИред
- personal/test setups рдХреЗ рд▓рд┐рдП External рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ; рдЬрдм app Testing рдореЗрдВ рд╣реЛ, рддреЛ app authorize рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╣рд░ Google account рдХреЛ test user рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред
-
OpenClaw рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд░реЛрдзрд┐рдд scopes рдЬреЛрдбрд╝реЗрдВ:
https://www.googleapis.com/auth/meetings.space.createdhttps://www.googleapis.com/auth/meetings.space.readonlyhttps://www.googleapis.com/auth/meetings.space.settingshttps://www.googleapis.com/auth/meetings.conference.media.readonly
-
OAuth client ID рдмрдирд╛рдПрдВред
-
Application type: Web application.
-
Authorized redirect URI:
text http://localhost:8085/oauth2callback
-
-
client ID рдФрд░ client secret рдХреЙрдкреА рдХрд░реЗрдВред
meetings.space.created Google Meet spaces.create рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред
meetings.space.readonly OpenClaw рдХреЛ Meet URLs/codes рдХреЛ spaces рдореЗрдВ resolve рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИред
meetings.space.settings OpenClaw рдХреЛ API room creation рдХреЗ рджреМрд░рд╛рди accessType рдЬреИрд╕реА SpaceConfig settings рдкрд╛рд╕ рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИред
meetings.conference.media.readonly Meet Media API preflight рдФрд░ media work рдХреЗ рд▓рд┐рдП рд╣реИ; actual Media API use рдХреЗ рд▓рд┐рдП Google Developer Preview enrollment рдорд╛рдВрдЧ рд╕рдХрддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ browser-based Chrome joins рдЪрд╛рд╣рд┐рдП, рддреЛ OAuth рдХреЛ рдкреВрд░реА рддрд░рд╣ рдЫреЛрдбрд╝ рджреЗрдВред
refresh token рдмрдирд╛рдПрдВ
oauth.clientId рдФрд░ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ oauth.clientSecret рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ, рдпрд╛ рдЙрдиреНрд╣реЗрдВ environment variables рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░реЗрдВ, рдлрд┐рд░ рдЪрд▓рд╛рдПрдВ:
openclaw googlemeet auth login --jsonрдХрдорд╛рдВрдб refresh token рдХреЗ рд╕рд╛рде oauth config block рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИред рдпрд╣ PKCE, http://localhost:8085/oauth2callback рдкрд░ localhost callback, рдФрд░ --manual рдХреЗ рд╕рд╛рде manual copy/paste flow рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг:
OPENCLAW_GOOGLE_MEET_CLIENT_ID="your-client-id" \OPENCLAW_GOOGLE_MEET_CLIENT_SECRET="your-client-secret" \openclaw googlemeet auth login --jsonрдЬрдм browser local callback рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛, manual mode рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
OPENCLAW_GOOGLE_MEET_CLIENT_ID="your-client-id" \OPENCLAW_GOOGLE_MEET_CLIENT_SECRET="your-client-secret" \openclaw googlemeet auth login --json --manualJSON output рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ:
{ "oauth": { "clientId": "your-client-id", "clientSecret": "your-client-secret", "refreshToken": "refresh-token", "accessToken": "access-token", "expiresAt": 1770000000000 }, "scope": "..."}oauth object рдХреЛ Google Meet Plugin config рдХреЗ рдЕрдВрддрд░реНрдЧрдд store рдХрд░реЗрдВ:
{ plugins: { entries: { "google-meet": { enabled: true, config: { oauth: { clientId: "your-client-id", clientSecret: "your-client-secret", refreshToken: "refresh-token", }, }, }, }, },}рдЬрдм рдЖрдк config рдореЗрдВ refresh token рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ, рддреЛ environment variables рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрдВред рдпрджрд┐ config рдФрд░ environment values рджреЛрдиреЛрдВ рдореМрдЬреВрдж рд╣реИрдВ, рддреЛ Plugin рдкрд╣рд▓реЗ config рдФрд░ рдлрд┐рд░ environment fallback resolve рдХрд░рддрд╛ рд╣реИред
OAuth consent рдореЗрдВ Meet space creation, Meet space read access, рдФрд░ Meet conference media read access рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдиреЗ meeting creation support рдореМрдЬреВрдж рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ authenticate рдХрд┐рдпрд╛ рдерд╛, рддреЛ openclaw googlemeet auth login --json рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдПрдВ рддрд╛рдХрд┐ refresh token рдХреЗ рдкрд╛рд╕ meetings.space.created scope рд╣реЛред
doctor рд╕реЗ OAuth рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ
рдЬрдм рдЖрдк рддреЗрдЬ, non-secret health check рдЪрд╛рд╣рддреЗ рд╣реЛрдВ рддреЛ OAuth doctor рдЪрд▓рд╛рдПрдВ:
openclaw googlemeet doctor --oauth --jsonрдпрд╣ Chrome runtime load рдирд╣реАрдВ рдХрд░рддрд╛ рдпрд╛ connected Chrome node рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд░рдЦрддрд╛ред рдпрд╣ рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ OAuth config рдореМрдЬреВрдж рд╣реИ рдФрд░ refresh token access token mint рдХрд░ рд╕рдХрддрд╛ рд╣реИред JSON report рдореЗрдВ рдХреЗрд╡рд▓ ok, configured, tokenSource, expiresAt, рдФрд░ check messages рдЬреИрд╕реЗ status fields рд╢рд╛рдорд┐рд▓ рд╣реИрдВ; рдпрд╣ access token, refresh token, рдпрд╛ client secret рдкреНрд░рд┐рдВрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ред
рд╕рд╛рдорд╛рдиреНрдп рдкрд░рд┐рдгрд╛рдо:
| рдЬрд╛рдБрдЪ | рдЕрд░реНрде |
|---|---|
oauth-config |
oauth.clientId рдФрд░ oauth.refreshToken, рдпрд╛ рдХреИрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдРрдХреНрд╕реЗрд╕ рдЯреЛрдХрди, рдореМрдЬреВрдж рд╣реИред |
oauth-token |
рдХреИрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдРрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдЕрдм рднреА рдорд╛рдиреНрдп рд╣реИ, рдпрд╛ рд░рд┐рдлреНрд░реЗрд╢ рдЯреЛрдХрди рдиреЗ рдирдпрд╛ рдРрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдмрдирд╛рдпрд╛ред |
meet-spaces-get |
рд╡реИрдХрд▓реНрдкрд┐рдХ --meeting рдЬрд╛рдБрдЪ рдиреЗ рдореМрдЬреВрджрд╛ Meet рд╕реНрдкреЗрд╕ рд╣рд▓ рдХрд┐рдпрд╛ред |
meet-spaces-create |
рд╡реИрдХрд▓реНрдкрд┐рдХ --create-space рдЬрд╛рдБрдЪ рдиреЗ рдирдпрд╛ Meet рд╕реНрдкреЗрд╕ рдмрдирд╛рдпрд╛ред |
Google Meet API рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдФрд░ spaces.create рд╕реНрдХреЛрдк рдХреЛ рднреА рд╕рд╛рдмрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
рд╕рд╛рдЗрдб-рдЗрдлрд╝реЗрдХреНрдЯ рд╡рд╛рд▓реА create рдЬрд╛рдБрдЪ рдЪрд▓рд╛рдПрдБ:
openclaw googlemeet doctor --oauth --create-space --jsonopenclaw googlemeet create --no-join --json--create-space рдПрдХ рдЕрд╕реНрдерд╛рдпреА Meet URL рдмрдирд╛рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рддрдм рдХрд░реЗрдВ рдЬрдм рдЖрдкрдХреЛ рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреА рд╣реЛ
рдХрд┐ Google Cloud рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ Meet API рд╕рдХреНрд╖рдо рд╣реИ рдФрд░ рдЕрдзрд┐рдХреГрдд
рдЦрд╛рддреЗ рдХреЗ рдкрд╛рд╕ meetings.space.created рд╕реНрдХреЛрдк рд╣реИред
рдХрд┐рд╕реА рдореМрдЬреВрджрд╛ рдореАрдЯрд┐рдВрдЧ рд╕реНрдкреЗрд╕ рдХреЗ рд▓рд┐рдП рдкрдврд╝рдиреЗ рдХреА рдкрд╣реБрдБрдЪ рд╕рд╛рдмрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:
openclaw googlemeet doctor --oauth --meeting https://meet.google.com/abc-defg-hij --jsonopenclaw googlemeet resolve-space --meeting https://meet.google.com/abc-defg-hijdoctor --oauth --meeting рдФрд░ resolve-space рдРрд╕реЗ рдореМрдЬреВрджрд╛
рд╕реНрдкреЗрд╕ рддрдХ рдкрдврд╝рдиреЗ рдХреА рдкрд╣реБрдБрдЪ рд╕рд╛рдмрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдЕрдзрд┐рдХреГрдд Google рдЦрд╛рддрд╛ рдПрдХреНрд╕реЗрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрди рдЬрд╛рдБрдЪреЛрдВ рд╕реЗ рдорд┐рд▓рд╛ 403
рдЖрдорддреМрд░ рдкрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ Google Meet REST API рдЕрдХреНрд╖рдо рд╣реИ, рд╕рд╣рдорддрд┐ рд╡рд╛рд▓реЗ рд░рд┐рдлреНрд░реЗрд╢ рдЯреЛрдХрди рдореЗрдВ
рдЬрд╝рд░реВрд░реА рд╕реНрдХреЛрдк рдирд╣реАрдВ рд╣реИ, рдпрд╛ Google рдЦрд╛рддрд╛ рдЙрд╕ Meet
рд╕реНрдкреЗрд╕ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рд░рд┐рдлреНрд░реЗрд╢-рдЯреЛрдХрди рддреНрд░реБрдЯрд┐ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ openclaw googlemeet auth login --json рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдПрдБ рдФрд░ рдирдпрд╛ oauth рдмреНрд▓реЙрдХ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░реЗрдВред
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдлрд╝реЙрд▓рдмреИрдХ рдХреЗ рд▓рд┐рдП OAuth рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИред рдЙрд╕ рдореЛрдб рдореЗрдВ, Google auth рдЪреБрдиреЗ рдЧрдП рдиреЛрдб рдкрд░ рд╕рд╛рдЗрди-рдЗрди рдХрд┐рдП Chrome рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЖрддрд╛ рд╣реИ, OpenClaw рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗ рдирд╣реАрдВред
рдЗрди рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░реЛрдВ рдХреЛ рдлрд╝реЙрд▓рдмреИрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
OPENCLAW_GOOGLE_MEET_CLIENT_IDрдпрд╛GOOGLE_MEET_CLIENT_IDOPENCLAW_GOOGLE_MEET_CLIENT_SECRETрдпрд╛GOOGLE_MEET_CLIENT_SECRETOPENCLAW_GOOGLE_MEET_REFRESH_TOKENрдпрд╛GOOGLE_MEET_REFRESH_TOKENOPENCLAW_GOOGLE_MEET_ACCESS_TOKENрдпрд╛GOOGLE_MEET_ACCESS_TOKENOPENCLAW_GOOGLE_MEET_ACCESS_TOKEN_EXPIRES_ATрдпрд╛GOOGLE_MEET_ACCESS_TOKEN_EXPIRES_ATOPENCLAW_GOOGLE_MEET_DEFAULT_MEETINGрдпрд╛GOOGLE_MEET_DEFAULT_MEETINGOPENCLAW_GOOGLE_MEET_PREVIEW_ACKрдпрд╛GOOGLE_MEET_PREVIEW_ACK
Meet URL, рдХреЛрдб, рдпрд╛ spaces/{id} рдХреЛ spaces.get рдХреЗ рдЬрд╝рд░рд┐рдП рд╣рд▓ рдХрд░реЗрдВ:
openclaw googlemeet resolve-space --meeting https://meet.google.com/abc-defg-hijрдореАрдбрд┐рдпрд╛ рдХрд╛рд░реНрдп рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░реАрдлрд╝реНрд▓рд╛рдЗрдЯ рдЪрд▓рд╛рдПрдБ:
openclaw googlemeet preflight --meeting https://meet.google.com/abc-defg-hijMeet рджреНрд╡рд╛рд░рд╛ рдХреЙрдиреНрдлрд╝реНрд░реЗрдВрд╕ рд░рд┐рдХреЙрд░реНрдб рдмрдирд╛рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдореАрдЯрд┐рдВрдЧ рдЖрд░реНрдЯрд┐рдлрд╝реИрдХреНрдЯ рдФрд░ рдЙрдкрд╕реНрдерд┐рддрд┐ рд╕реВрдЪреАрдмрджреНрдз рдХрд░реЗрдВ:
openclaw googlemeet artifacts --meeting https://meet.google.com/abc-defg-hijopenclaw googlemeet attendance --meeting https://meet.google.com/abc-defg-hijopenclaw googlemeet export --meeting https://meet.google.com/abc-defg-hij --output ./meet-export--meeting рдХреЗ рд╕рд╛рде, artifacts рдФрд░ attendance рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдирд╡реАрдирддрдо рдХреЙрдиреНрдлрд╝реНрд░реЗрдВрд╕ рд░рд┐рдХреЙрд░реНрдб
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЬрдм рдЖрдк рдЙрд╕ рдореАрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╣рд░ рд╕реБрд░рдХреНрд╖рд┐рдд рд░рдЦрд╛ рдЧрдпрд╛ рд░рд┐рдХреЙрд░реНрдб рдЪрд╛рд╣рддреЗ рд╣реЛрдВ, рддреЛ
--all-conference-records рдкрд╛рд╕ рдХрд░реЗрдВред
Calendar рд▓реБрдХрдЕрдк Meet рдЖрд░реНрдЯрд┐рдлрд╝реИрдХреНрдЯ рдкрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ Google Calendar рд╕реЗ рдореАрдЯрд┐рдВрдЧ URL рд╣рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ:
openclaw googlemeet latest --todayopenclaw googlemeet calendar-events --today --jsonopenclaw googlemeet artifacts --event "Weekly sync"openclaw googlemeet attendance --today --format csv --output attendance.csv--today Google Meet рд▓рд┐рдВрдХ рд╡рд╛рд▓реЗ Calendar рдИрд╡реЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдЖрдЬ рдХреЗ primary рдХреИрд▓реЗрдВрдбрд░ рдореЗрдВ рдЦреЛрдЬрддрд╛ рд╣реИред
рдорд┐рд▓рддреЗ-рдЬреБрд▓рддреЗ рдИрд╡реЗрдВрдЯ рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП --event <query> рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдФрд░
рдЧреИрд░-рдкреНрд░рд╛рдердорд┐рдХ рдХреИрд▓реЗрдВрдбрд░ рдХреЗ рд▓рд┐рдП --calendar <id> рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред Calendar рд▓реБрдХрдЕрдк рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдирдпрд╛
OAuth рд▓реЙрдЧрд┐рди рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдореЗрдВ Calendar events readonly рд╕реНрдХреЛрдк рд╢рд╛рдорд┐рд▓ рд╣реЛред
calendar-events рдореЗрд▓ рдЦрд╛рддреЗ Meet рдИрд╡реЗрдВрдЯ рдХрд╛ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрд╕ рдИрд╡реЗрдВрдЯ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ
latest, artifacts, attendance, рдпрд╛ export рдЪреБрдиреЗрдЧрд╛ред
рдпрджрд┐ рдЖрдкрдХреЛ рдХреЙрдиреНрдлрд╝реНрд░реЗрдВрд╕ рд░рд┐рдХреЙрд░реНрдб id рдкрд╣рд▓реЗ рд╕реЗ рдкрддрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ рд╕реАрдзреЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░реЗрдВ:
openclaw googlemeet latest --meeting https://meet.google.com/abc-defg-hijopenclaw googlemeet artifacts --conference-record conferenceRecords/abc123 --jsonopenclaw googlemeet attendance --conference-record conferenceRecords/abc123 --jsonрдЬрдм рдЖрдк рдХреЙрд▓ рдХреЗ рдмрд╛рдж рдХрдорд░реЗ рдХреЛ рдмрдВрдж рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реЛрдВ, рддреЛ API рд╕реЗ рдмрдирд╛рдП рдЧрдП рд╕реНрдкреЗрд╕ рдХреЗ рд▓рд┐рдП рд╕рдХреНрд░рд┐рдп рдХреЙрдиреНрдлрд╝реНрд░реЗрдВрд╕ рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВ:
openclaw googlemeet end-active-conference https://meet.google.com/abc-defg-hijрдпрд╣ Google Meet spaces.endActiveConference рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдРрд╕реЗ рд╕реНрдкреЗрд╕ рдХреЗ рд▓рд┐рдП
meetings.space.created рд╕реНрдХреЛрдк рд╡рд╛рд▓реЗ OAuth рдХреА рдЬрд╝рд░реВрд░рдд рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕реЗ рдЕрдзрд┐рдХреГрдд рдЦрд╛рддрд╛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред
OpenClaw Meet URL, рдореАрдЯрд┐рдВрдЧ рдХреЛрдб, рдпрд╛ spaces/{id} рдЗрдирдкреБрдЯ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рдХреНрд░рд┐рдп рдХреЙрдиреНрдлрд╝реНрд░реЗрдВрд╕
рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрд╕реЗ API рд╕реНрдкреЗрд╕ рд╕рдВрд╕рд╛рдзрди рдореЗрдВ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред
рдпрд╣ googlemeet leave рд╕реЗ рдЕрд▓рдЧ рд╣реИ: leave OpenClaw рдХреА local/session
рднрд╛рдЧреАрджрд╛рд░реА рд░реЛрдХрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ end-active-conference Google Meet рд╕реЗ рдЙрд╕ рд╕реНрдкреЗрд╕ рдХреА рд╕рдХреНрд░рд┐рдп
рдХреЙрдиреНрдлрд╝реНрд░реЗрдВрд╕ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИред
рдкрдврд╝рдиреЗ рдпреЛрдЧреНрдп рд░рд┐рдкреЛрд░реНрдЯ рд▓рд┐рдЦреЗрдВ:
openclaw googlemeet artifacts --conference-record conferenceRecords/abc123 \ --format markdown --output meet-artifacts.mdopenclaw googlemeet attendance --conference-record conferenceRecords/abc123 \ --format markdown --output meet-attendance.mdopenclaw googlemeet attendance --conference-record conferenceRecords/abc123 \ --format csv --output meet-attendance.csvopenclaw googlemeet export --conference-record conferenceRecords/abc123 \ --include-doc-bodies --zip --output meet-exportopenclaw googlemeet export --conference-record conferenceRecords/abc123 \ --include-doc-bodies --dry-runрдЬрдм Google рдореАрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЗрдиреНрд╣реЗрдВ рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реИ, рддреЛ artifacts рдХреЙрдиреНрдлрд╝реНрд░реЗрдВрд╕ рд░рд┐рдХреЙрд░реНрдб рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде
рдкреНрд░рддрд┐рднрд╛рдЧреА, рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ, рдЯреНрд░рд╛рдВрд╕рдХреНрд░рд┐рдкреНрдЯ, рд╕рдВрд░рдЪрд┐рдд рдЯреНрд░рд╛рдВрд╕рдХреНрд░рд┐рдкреНрдЯ-рдПрдВрдЯреНрд░реА, рдФрд░ рд╕реНрдорд╛рд░реНрдЯ-рдиреЛрдЯ рд╕рдВрд╕рд╛рдзрди рдореЗрдЯрд╛рдбреЗрдЯрд╛
рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдмрдбрд╝реА рдореАрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдВрдЯреНрд░реА рд▓реБрдХрдЕрдк рдЫреЛрдбрд╝рдиреЗ рд╣реЗрддреБ --no-transcript-entries рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
attendance рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХреЛ participant-session рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдлреИрд▓рд╛рддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рдкрд╣рд▓реА/рдЖрдЦрд┐рд░реА рдмрд╛рд░ рджреЗрдЦреЗ рдЬрд╛рдиреЗ рдХрд╛ рд╕рдордп,
рдХреБрд▓ рд╕рддреНрд░ рдЕрд╡рдзрд┐, рджреЗрд░/рдЬрд▓реНрджреА-рдЫреЛрдбрд╝рдиреЗ рдХреЗ рдлрд╝реНрд▓реИрдЧ, рдФрд░ рд╕рд╛рдЗрди-рдЗрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдпрд╛ рдбрд┐рд╕реНрдкреНрд▓реЗ рдирд╛рдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдорд░реНрдЬ рдХрд┐рдП рдЧрдП
рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдкреНрд░рддрд┐рднрд╛рдЧреА рд╕рдВрд╕рд╛рдзрди рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВред рдХрдЪреНрдЪреЗ рдкреНрд░рддрд┐рднрд╛рдЧреА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЕрд▓рдЧ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП
--no-merge-duplicates, рджреЗрд░ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЛ рдЯреНрдпреВрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП --late-after-minutes, рдФрд░
рдЬрд▓реНрджреА-рдЫреЛрдбрд╝рдиреЗ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЛ рдЯреНрдпреВрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП --early-before-minutes рдкрд╛рд╕ рдХрд░реЗрдВред
export summary.md, attendance.csv,
transcript.md, artifacts.json, attendance.json, рдФрд░ manifest.json рд╡рд╛рд▓реА рдлрд╝реЛрд▓реНрдбрд░ рд▓рд┐рдЦрддрд╛ рд╣реИред
manifest.json рдЪреБрдиреЗ рдЧрдП рдЗрдирдкреБрдЯ, рдирд┐рд░реНрдпрд╛рдд рд╡рд┐рдХрд▓реНрдк, рдХреЙрдиреНрдлрд╝реНрд░реЗрдВрд╕ рд░рд┐рдХреЙрд░реНрдб,
рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓реЗрдВ, рдЧрд┐рдирддрд┐рдпрд╛рдБ, рдЯреЛрдХрди рд╕реНрд░реЛрдд, рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ Calendar рдИрд╡реЗрдВрдЯ, рдФрд░ рдХрд┐рд╕реА рднреА
рдЖрдВрд╢рд┐рдХ рдкреНрд░рд╛рдкреНрддрд┐ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рддрд╛ рд╣реИред рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рдкрд╛рд╕ рдПрдХ рдкреЛрд░реНрдЯреЗрдмрд▓ рдЖрд░реНрдХрд╛рдЗрд╡ рднреА рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП
--zip рдкрд╛рд╕ рдХрд░реЗрдВред рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рдЯреНрд░рд╛рдВрд╕рдХреНрд░рд┐рдкреНрдЯ рдФрд░
рд╕реНрдорд╛рд░реНрдЯ-рдиреЛрдЯ Google Docs рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ Google Drive files.export рдХреЗ рдЬрд╝рд░рд┐рдП рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП --include-doc-bodies
рдкрд╛рд╕ рдХрд░реЗрдВ; рдЗрд╕рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдирдпрд╛ OAuth рд▓реЙрдЧрд┐рди рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдореЗрдВ Drive Meet readonly рд╕реНрдХреЛрдк рд╢рд╛рдорд┐рд▓ рд╣реЛред
--include-doc-bodies рдХреЗ рдмрд┐рдирд╛, рдирд┐рд░реНрдпрд╛рддреЛрдВ рдореЗрдВ рдХреЗрд╡рд▓ Meet рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдФрд░ рд╕рдВрд░рдЪрд┐рдд рдЯреНрд░рд╛рдВрд╕рдХреНрд░рд┐рдкреНрдЯ
рдПрдВрдЯреНрд░рд┐рдпрд╛рдБ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреА рд╣реИрдВред рдпрджрд┐ Google рдХреЛрдИ рдЖрдВрд╢рд┐рдХ рдЖрд░реНрдЯрд┐рдлрд╝реИрдХреНрдЯ рд╡рд┐рдлрд▓рддрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рд╕реНрдорд╛рд░реНрдЯ-рдиреЛрдЯ
рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ, рдЯреНрд░рд╛рдВрд╕рдХреНрд░рд┐рдкреНрдЯ-рдПрдВрдЯреНрд░реА, рдпрд╛ Drive рджрд╕реНрддрд╛рд╡реЗрдЬрд╝-рдмреЙрдбреА рддреНрд░реБрдЯрд┐, рддреЛ рд╕рд╛рд░рд╛рдВрд╢ рдФрд░
рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рдкреВрд░реЗ рдирд┐рд░реНрдпрд╛рдд рдХреЛ рд╡рд┐рдлрд▓ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЪреЗрддрд╛рд╡рдиреА рд░рдЦрддреЗ рд╣реИрдВред
рд╡рд╣реА рдЖрд░реНрдЯрд┐рдлрд╝реИрдХреНрдЯ/рдЙрдкрд╕реНрдерд┐рддрд┐ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдлрд╝реЛрд▓реНрдбрд░ рдпрд╛ ZIP рдмрдирд╛рдП рдмрд┐рдирд╛
рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ JSON рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП --dry-run рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрд╣ рдмрдбрд╝рд╛ рдирд┐рд░реНрдпрд╛рдд рд▓рд┐рдЦрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ
рдпрд╛ рдЬрдм рдХрд┐рд╕реА рдПрдЬреЗрдВрдЯ рдХреЛ рдХреЗрд╡рд▓ рдЧрд┐рдирддрд┐рдпрд╛рдБ, рдЪреБрдиреЗ рдЧрдП рд░рд┐рдХреЙрд░реНрдб, рдФрд░
рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдБ рдЪрд╛рд╣рд┐рдП рд╣реЛрдВ, рдЙрдкрдпреЛрдЧреА рд╣реИред
рдПрдЬреЗрдВрдЯ google_meet рдЯреВрд▓ рдХреЗ рдЬрд╝рд░рд┐рдП рднреА рд╡рд╣реА рдмрдВрдбрд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:
{ "action": "export", "conferenceRecord": "conferenceRecords/abc123", "includeDocumentBodies": true, "outputDir": "meet-export", "zip": true}рдХреЗрд╡рд▓ рдирд┐рд░реНрдпрд╛рдд рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рд▓реМрдЯрд╛рдиреЗ рдФрд░ рдлрд╝рд╛рдЗрд▓ рд▓реЗрдЦрди рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП "dryRun": true рд╕реЗрдЯ рдХрд░реЗрдВред
рдПрдЬреЗрдВрдЯ рд╕реНрдкрд╖реНрдЯ рдкрд╣реБрдБрдЪ рдиреАрддрд┐ рдХреЗ рд╕рд╛рде API-рд╕рдорд░реНрдерд┐рдд рдХрдорд░рд╛ рднреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:
{ "action": "create", "transport": "chrome-node", "mode": "agent", "accessType": "OPEN"}рдФрд░ рд╡реЗ рдХрд┐рд╕реА рдЬреНрдЮрд╛рдд рдХрдорд░реЗ рдХреЗ рд▓рд┐рдП рд╕рдХреНрд░рд┐рдп рдХреЙрдиреНрдлрд╝реНрд░реЗрдВрд╕ рд╕рдорд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
{ "action": "end_active_conference", "meeting": "https://meet.google.com/abc-defg-hij"}рдкрд╣рд▓реЗ-рд╕реБрдирдиреЗ рд╡рд╛рд▓реЗ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП, рдПрдЬреЗрдВрдЯреЛрдВ рдХреЛ рдореАрдЯрд┐рдВрдЧ рдЙрдкрдпреЛрдЧреА рд╣реЛрдиреЗ рдХрд╛ рджрд╛рд╡рд╛ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ
test_listen рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:
{ "action": "test_listen", "url": "https://meet.google.com/abc-defg-hij", "transport": "chrome-node", "timeoutMs": 30000}рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реБрд░рдХреНрд╖рд┐рдд рд░рдЦреА рдЧрдИ рдореАрдЯрд┐рдВрдЧ рдХреЗ рд╡рд┐рд░реБрджреНрдз рд╕рдВрд░рдХреНрд╖рд┐рдд рд▓рд╛рдЗрд╡ рд╕реНрдореЛрдХ рдЪрд▓рд╛рдПрдБ:
OPENCLAW_LIVE_TEST=1 \OPENCLAW_GOOGLE_MEET_LIVE_MEETING=https://meet.google.com/abc-defg-hij \pnpm test:live -- extensions/google-meet/google-meet.live.test.tsрдРрд╕реА рдореАрдЯрд┐рдВрдЧ рдХреЗ рд╡рд┐рд░реБрджреНрдз рд▓рд╛рдЗрд╡ рдкрд╣рд▓реЗ-рд╕реБрдирдиреЗ рд╡рд╛рд▓рд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреНрд░реЛрдм рдЪрд▓рд╛рдПрдБ рдЬрд╣рд╛рдБ рдХреЛрдИ Meet рдХреИрдкреНрд╢рди рдЙрдкрд▓рдмреНрдз рд░рд╣рддреЗ рд╣реБрдП рдмреЛрд▓реЗрдЧрд╛:
openclaw googlemeet setup --transport chrome-node --mode transcribeopenclaw googlemeet test-listen https://meet.google.com/abc-defg-hij --transport chrome-node --timeout-ms 30000рд▓рд╛рдЗрд╡ рд╕реНрдореЛрдХ рд╡рд╛рддрд╛рд╡рд░рдг:
OPENCLAW_LIVE_TEST=1рд╕рдВрд░рдХреНрд╖рд┐рдд рд▓рд╛рдЗрд╡ рдкрд░реАрдХреНрд╖рдг рд╕рдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИредOPENCLAW_GOOGLE_MEET_LIVE_MEETINGрдХрд┐рд╕реА рд╕реБрд░рдХреНрд╖рд┐рдд рд░рдЦреЗ рдЧрдП Meet URL, рдХреЛрдб, рдпрд╛spaces/{id}рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддрд╛ рд╣реИредOPENCLAW_GOOGLE_MEET_CLIENT_IDрдпрд╛GOOGLE_MEET_CLIENT_IDOAuth рдХреНрд▓рд╛рдЗрдВрдЯ id рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИредOPENCLAW_GOOGLE_MEET_REFRESH_TOKENрдпрд╛GOOGLE_MEET_REFRESH_TOKENрд░рд┐рдлреНрд░реЗрд╢ рдЯреЛрдХрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред- рд╡реИрдХрд▓реНрдкрд┐рдХ:
OPENCLAW_GOOGLE_MEET_CLIENT_SECRET,OPENCLAW_GOOGLE_MEET_ACCESS_TOKEN, рдФрд░OPENCLAW_GOOGLE_MEET_ACCESS_TOKEN_EXPIRES_ATOPENCLAW_рдЙрдкрд╕рд░реНрдЧ рдХреЗ рдмрд┐рдирд╛ рд╡рд╣реА рдлрд╝реЙрд▓рдмреИрдХ рдирд╛рдо рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдмреЗрд╕ рдЖрд░реНрдЯрд┐рдлрд╝реИрдХреНрдЯ/рдЙрдкрд╕реНрдерд┐рддрд┐ рд▓рд╛рдЗрд╡ рд╕реНрдореЛрдХ рдХреЛ
https://www.googleapis.com/auth/meetings.space.readonly рдФрд░
https://www.googleapis.com/auth/meetings.conference.media.readonly рдЪрд╛рд╣рд┐рдПред Calendar
рд▓реБрдХрдЕрдк рдХреЛ https://www.googleapis.com/auth/calendar.events.readonly рдЪрд╛рд╣рд┐рдПред Drive
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝-рдмреЙрдбреА рдирд┐рд░реНрдпрд╛рдд рдХреЛ
https://www.googleapis.com/auth/drive.meet.readonly рдЪрд╛рд╣рд┐рдПред
рдирдпрд╛ Meet рд╕реНрдкреЗрд╕ рдмрдирд╛рдПрдБ:
openclaw googlemeet createрдХрдорд╛рдВрдб рдирдпрд╛ meeting uri, рд╕реНрд░реЛрдд, рдФрд░ рдЬреЙрдЗрди рд╕рддреНрд░ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИред OAuth
рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдХреЗ рд╕рд╛рде рдпрд╣ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ Google Meet API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред OAuth рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдХреЗ рдмрд┐рдирд╛ рдпрд╣
рдкрд┐рди рдХрд┐рдП рдЧрдП Chrome рдиреЛрдб рдХреЗ рд╕рд╛рдЗрди-рдЗрди рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЛ рдлрд╝реЙрд▓рдмреИрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдПрдЬреЗрдВрдЯ
рдПрдХ рд╣реА рдЪрд░рдг рдореЗрдВ рдмрдирд╛рдиреЗ рдФрд░ рдЬреБрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП action: "create" рдХреЗ рд╕рд╛рде google_meet рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдХреЗрд╡рд▓-URL рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП, "join": false рдкрд╛рд╕ рдХрд░реЗрдВред
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдлрд╝реЙрд▓рдмреИрдХ рд╕реЗ рдЙрджрд╛рд╣рд░рдг JSON рдЖрдЙрдЯрдкреБрдЯ:
{ "source": "browser", "meetingUri": "https://meet.google.com/abc-defg-hij", "joined": true, "browser": { "nodeId": "ba0f4e4bc...", "targetId": "tab-1" }, "join": { "session": { "id": "meet_...", "url": "https://meet.google.com/abc-defg-hij" } }}рдпрджрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдлрд╝реЙрд▓рдмреИрдХ URL рдмрдирд╛ рдкрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ Google рд▓реЙрдЧрд┐рди рдпрд╛ Meet рдЕрдиреБрдорддрд┐ рдЕрд╡рд░реЛрдз рд╕реЗ рдЯрдХрд░рд╛рддрд╛ рд╣реИ,
рддреЛ Gateway рд╡рд┐рдзрд┐ рд╡рд┐рдлрд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд▓реМрдЯрд╛рддреА рд╣реИ рдФрд░
google_meet рдЯреВрд▓ рд╕рд╛рджреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдмрдЬрд╛рдп рд╕рдВрд░рдЪрд┐рдд рд╡рд┐рд╡рд░рдг рд▓реМрдЯрд╛рддрд╛ рд╣реИ:
{ "source": "browser", "error": "google-login-required: Sign in to Google in the OpenClaw browser profile, then retry meeting creation.", "manualActionRequired": true, "manualActionReason": "google-login-required", "manualActionMessage": "Sign in to Google in the OpenClaw browser profile, then retry meeting creation.", "browser": { "nodeId": "ba0f4e4bc...", "targetId": "tab-1", "browserUrl": "https://accounts.google.com/signin", "browserTitle": "Sign in - Google Accounts" }}рдЬрдм рдХреЛрдИ рдПрдЬреЗрдВрдЯ manualActionRequired: true рджреЗрдЦрддрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ
manualActionMessage рдХреЗ рд╕рд╛рде рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдиреЛрдб/рдЯреИрдм рд╕рдВрджрд░реНрдн рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдСрдкрд░реЗрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЪрд░рдг рдкреВрд░рд╛ рдХрд░рдиреЗ рддрдХ рдирдП
Meet рдЯреИрдм рдЦреЛрд▓рдирд╛ рдмрдВрдж рдХрд░ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред
API create рд╕реЗ рдЙрджрд╛рд╣рд░рдг JSON рдЖрдЙрдЯрдкреБрдЯ:
{ "source": "api", "meetingUri": "https://meet.google.com/abc-defg-hij", "joined": true, "space": { "name": "spaces/abc-defg-hij", "meetingCode": "abc-defg-hij", "meetingUri": "https://meet.google.com/abc-defg-hij" }, "join": { "session": { "id": "meet_...", "url": "https://meet.google.com/abc-defg-hij" } }}Meet рдмрдирд╛рдирд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЙрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИред Chrome рдпрд╛ Chrome-node рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ рдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдЬрд╝рд░рд┐рдП рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдм рднреА рд╕рд╛рдЗрди-рдЗрди рдХрд┐рдП рд╣реБрдП Google Chrome рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реЛрддреА рд╣реИред рдЕрдЧрд░ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд╕рд╛рдЗрди рдЖрдЙрдЯ рд╣реИ, рддреЛ OpenClaw manualActionRequired: true рдпрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдлрд╝реЙрд▓рдмреИрдХ рддреНрд░реБрдЯрд┐ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдСрдкрд░реЗрдЯрд░ рд╕реЗ рджреЛрдмрд╛рд░рд╛ рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ Google рд▓реЙрдЧрд┐рди рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЛ рдХрд╣рддрд╛ рд╣реИред
preview.enrollmentAcknowledged: true рдХреЗрд╡рд▓ рдпрд╣ рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╕реЗрдЯ рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХрд╛ Cloud рдкреНрд░реЛрдЬреЗрдХреНрдЯ, OAuth рдкреНрд░рд┐рдВрд╕рд┐рдкрд▓, рдФрд░ рдореАрдЯрд┐рдВрдЧ рдкреНрд░рддрд┐рднрд╛рдЧреА Meet media APIs рдХреЗ рд▓рд┐рдП Google Workspace Developer Preview Program рдореЗрдВ рдирд╛рдорд╛рдВрдХрд┐рдд рд╣реИрдВред
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди
рд╕рд╛рдорд╛рдиреНрдп Chrome рдПрдЬреЗрдВрдЯ рдкрд╛рде рдХреЛ рдХреЗрд╡рд▓ Plugin рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ, BlackHole, SoX, рдПрдХ рд░рд┐рдпрд▓рдЯрд╛рдЗрдо рдЯреНрд░рд╛рдВрд╕рдХреНрд░рд┐рдкреНрд╢рди рдкреНрд░рджрд╛рддрд╛ рдХреБрдВрдЬреА, рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рд╣реБрдП OpenClaw TTS рдкреНрд░рджрд╛рддрд╛ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реЛрддреА рд╣реИред OpenAI рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЯреНрд░рд╛рдВрд╕рдХреНрд░рд┐рдкреНрд╢рди рдкреНрд░рджрд╛рддрд╛ рд╣реИ; рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдПрдЬреЗрдВрдЯ-рдореЛрдб рдЯреНрд░рд╛рдВрд╕рдХреНрд░рд┐рдкреНрд╢рди рдкреНрд░рджрд╛рддрд╛ рдмрджрд▓реЗ рдмрд┐рдирд╛ bidi рдореЛрдб рдХреЗ рд▓рд┐рдП Google Gemini Live рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╣реЗрддреБ realtime.voiceProvider рдХреЛ "google" рдФрд░ realtime.model рдХреЛ рд╕реЗрдЯ рдХрд░реЗрдВ:
brew install blackhole-2ch soxexport OPENAI_API_KEY=sk-...# orexport GEMINI_API_KEY=...Plugin рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ plugins.entries.google-meet.config рдХреЗ рдЕрдВрддрд░реНрдЧрдд рд╕реЗрдЯ рдХрд░реЗрдВ:
{ plugins: { entries: { "google-meet": { enabled: true, config: {}, }, }, },}рдбрд┐рдлрд╝реЙрд▓реНрдЯ:
defaultTransport: "chrome"defaultMode: "agent"("realtime"рдХреЗрд╡рд▓"agent"рдХреЗ рд▓рд┐рдП рд▓реЗрдЧреЗрд╕реА рд╕рдВрдЧрддрддрд╛ рдЙрдкрдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ; рдирдП рдЯреВрд▓ рдХреЙрд▓ рдореЗрдВ"agent"рдХрд╣рдирд╛ рдЪрд╛рд╣рд┐рдП)chromeNode.node:chrome-nodeрдХреЗ рд▓рд┐рдП рд╡реИрдХрд▓реНрдкрд┐рдХ node id/name/IPchrome.audioBackend: "blackhole-2ch"chrome.guestName: "OpenClaw Agent": рд╕рд╛рдЗрди-рдЖрдЙрдЯ Meet рдЕрддрд┐рдерд┐ рд╕реНрдХреНрд░реАрди рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдирд╛рдоchrome.autoJoin: true:chrome-nodeрдкрд░ OpenClaw рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдСрдЯреЛрдореЗрд╢рди рдХреЗ рдЬрд╝рд░рд┐рдП рд╕рд░реНрд╡реЛрддреНрддрдо-рдкреНрд░рдпрд╛рд╕ рдЕрддрд┐рдерд┐-рдирд╛рдо рднрд░рдирд╛ рдФрд░ Join Now рдХреНрд▓рд┐рдХ рдХрд░рдирд╛chrome.reuseExistingTab: true: рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдЦреЛрд▓рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдореМрдЬреВрджрд╛ Meet рдЯреИрдм рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВchrome.waitForInCallMs: 20000: talk-back intro рдЯреНрд░рд┐рдЧрд░ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ Meet рдЯреИрдм рдХреЗ in-call рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВchrome.audioFormat: "pcm16-24khz": рдХрдорд╛рдВрдб-рдкреЗрдпрд░ рдСрдбрд┐рдпреЛ рдлрд╝реЙрд░реНрдореИрдЯред"g711-ulaw-8khz"рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдЙрди рд▓реЗрдЧреЗрд╕реА/рдХрд╕реНрдЯрдо рдХрдорд╛рдВрдб рдкреЗрдпрд░ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВ рдЬреЛ рдЕрдм рднреА рдЯреЗрд▓реАрдлрд╝реЛрдиреА рдСрдбрд┐рдпреЛ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВредchrome.audioBufferBytes: 4096: рдЬрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП Chrome рдХрдорд╛рдВрдб-рдкреЗрдпрд░ рдСрдбрд┐рдпреЛ рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП SoX рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдмрдлрд╝рд░ред рдпрд╣ SoX рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ 8192-рдмрд╛рдЗрдЯ рдмрдлрд╝рд░ рдХрд╛ рдЖрдзрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкрд╛рдЗрдк рд▓реЗрдЯреЗрдВрд╕реА рдШрдЯрддреА рд╣реИ рдФрд░ рд╡реНрдпрд╕реНрдд рд╣реЛрд╕реНрдЯ рдкрд░ рдЗрд╕реЗ рдмрдврд╝рд╛рдиреЗ рдХреА рдЧреБрдВрдЬрд╛рдЗрд╢ рдмрдЪрддреА рд╣реИред SoX рдХреЗ рдиреНрдпреВрдирддрдо рд╕реЗ рдХрдо рдорд╛рди 17 рдмрд╛рдЗрдЯ рдкрд░ рдХреНрд▓реИрдВрдк рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВредchrome.audioInputCommand: CoreAudioBlackHole 2chрд╕реЗ рдкрдврд╝рдиреЗ рдФрд░chrome.audioFormatрдореЗрдВ рдСрдбрд┐рдпреЛ рд▓рд┐рдЦрдиреЗ рд╡рд╛рд▓рд╛ SoX рдХрдорд╛рдВрдбchrome.audioOutputCommand:chrome.audioFormatрдореЗрдВ рдСрдбрд┐рдпреЛ рдкрдврд╝рдиреЗ рдФрд░ CoreAudioBlackHole 2chрдкрд░ рд▓рд┐рдЦрдиреЗ рд╡рд╛рд▓рд╛ SoX рдХрдорд╛рдВрдбchrome.bargeInInputCommand: рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕реНрдерд╛рдиреАрдп рдорд╛рдЗрдХреНрд░реЛрдлрд╝реЛрди рдХрдорд╛рдВрдб рдЬреЛ assistant playback рд╕рдХреНрд░рд┐рдп рд░рд╣рдиреЗ рдкрд░ рдорд╛рдирд╡ barge-in рдкрд╣рдЪрд╛рди рдХреЗ рд▓рд┐рдП signed 16-bit little-endian mono PCM рд▓рд┐рдЦрддрд╛ рд╣реИред рдпрд╣ рдЕрднреА Gateway-рд╣реЛрд╕реНрдЯреЗрдбchromeрдХрдорд╛рдВрдб-рдкреЗрдпрд░ рдмреНрд░рд┐рдЬ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИредchrome.bargeInRmsThreshold: 650: RMS рд╕реНрддрд░ рдЬрд┐рд╕реЗchrome.bargeInInputCommandрдкрд░ рдорд╛рдирд╡реАрдп рд╡реНрдпрд╡рдзрд╛рди рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИchrome.bargeInPeakThreshold: 2500: рдкреАрдХ рд╕реНрддрд░ рдЬрд┐рд╕реЗchrome.bargeInInputCommandрдкрд░ рдорд╛рдирд╡реАрдп рд╡реНрдпрд╡рдзрд╛рди рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИchrome.bargeInCooldownMs: 900: рджреЛрд╣рд░рд╛рдП рдЧрдП рдорд╛рдирд╡реАрдп рд╡реНрдпрд╡рдзрд╛рди clear рдХреЗ рдмреАрдЪ рдиреНрдпреВрдирддрдо рд╡рд┐рд▓рдВрдмmode: "agent": рдбрд┐рдлрд╝реЙрд▓реНрдЯ talk-back рдореЛрдбред рдкреНрд░рддрд┐рднрд╛рдЧреА рдХреА рдмреЛрд▓реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рд░рд┐рдпрд▓рдЯрд╛рдЗрдо рдЯреНрд░рд╛рдВрд╕рдХреНрд░рд┐рдкреНрд╢рди рдкреНрд░рджрд╛рддрд╛ рджреНрд╡рд╛рд░рд╛ рдЯреНрд░рд╛рдВрд╕рдХреНрд░рд╛рдЗрдм рдХреА рдЬрд╛рддреА рд╣реИ, рдкреНрд░рддрд┐-рдореАрдЯрд┐рдВрдЧ рд╕рдм-рдПрдЬреЗрдВрдЯ рд╕рддреНрд░ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП OpenClaw рдПрдЬреЗрдВрдЯ рдХреЛ рднреЗрдЬреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рд╕рд╛рдорд╛рдиреНрдп OpenClaw TTS runtime рдХреЗ рдЬрд╝рд░рд┐рдП рдмреЛрд▓реА рдЬрд╛рддреА рд╣реИредmode: "bidi": рдлрд╝реЙрд▓рдмреИрдХ рдкреНрд░рддреНрдпрдХреНрд╖ рджреНрд╡рд┐рджрд┐рд╢ рд░рд┐рдпрд▓рдЯрд╛рдЗрдо рдореЙрдбрд▓ рдореЛрдбред рд░рд┐рдпрд▓рдЯрд╛рдЗрдо voice provider рдкреНрд░рддрд┐рднрд╛рдЧреА рдХреА рдмреЛрд▓реА рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЧрд╣рд░реЗ/рдЯреВрд▓-рд╕рдорд░реНрдерд┐рдд рдЙрддреНрддрд░реЛрдВ рдХреЗ рд▓рд┐рдПopenclaw_agent_consultрдХреЙрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИредmode: "transcribe": talk-back рдмреНрд░рд┐рдЬ рдХреЗ рдмрд┐рдирд╛ рдХреЗрд╡рд▓-рдЕрд╡рд▓реЛрдХрди рдореЛрдбредrealtime.provider: "openai": рдиреАрдЪреЗ рджрд┐рдП рдЧрдП scoped provider рдлрд╝реАрд▓реНрдб unset рд╣реЛрдиреЗ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд╕рдВрдЧрддрддрд╛ рдлрд╝реЙрд▓рдмреИрдХредrealtime.transcriptionProvider: "openai": рд░рд┐рдпрд▓рдЯрд╛рдЗрдо рдЯреНрд░рд╛рдВрд╕рдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рд▓рд┐рдПagentрдореЛрдб рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ provider idредrealtime.voiceProvider: рдкреНрд░рддреНрдпрдХреНрд╖ рд░рд┐рдпрд▓рдЯрд╛рдЗрдо рдЖрд╡рд╛рдЬрд╝ рдХреЗ рд▓рд┐рдПbidiрдореЛрдб рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ provider idред agent-mode рдЯреНрд░рд╛рдВрд╕рдХреНрд░рд┐рдкреНрд╢рди рдХреЛ OpenAI рдкрд░ рд░рдЦрддреЗ рд╣реБрдП Gemini Live рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ"google"рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВредrealtime.toolPolicy: "safe-read-only"realtime.instructions: рдЧрд╣рд░реЗ рдЙрддреНрддрд░реЛрдВ рдХреЗ рд▓рд┐рдПopenclaw_agent_consultрдХреЗ рд╕рд╛рде рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдмреЛрд▓реЗ рдЧрдП рдЙрддреНрддрд░realtime.introMessage: рд░рд┐рдпрд▓рдЯрд╛рдЗрдо рдмреНрд░рд┐рдЬ рдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рдкрд░ рдЫреЛрдЯрд╛ рдмреЛрд▓рд╛ рдЧрдпрд╛ readiness check; рдЪреБрдкрдЪрд╛рдк рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ""рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВrealtime.agentId:openclaw_agent_consultрдХреЗ рд▓рд┐рдП рд╡реИрдХрд▓реНрдкрд┐рдХ OpenClaw agent id; рдбрд┐рдлрд╝реЙрд▓реНрдЯmain
рд╡реИрдХрд▓реНрдкрд┐рдХ рдУрд╡рд░рд░рд╛рдЗрдб:
{ 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-2.5-flash-native-audio-preview-12-2025", agentId: "jay", toolPolicy: "owner", introMessage: "Say exactly: I'm here.", providers: { google: { speakerVoice: "Kore", }, }, },}agent-mode рд╕реБрдирдиреЗ рдФрд░ рдмреЛрд▓рдиреЗ, рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП ElevenLabs:
{ messages: { 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 рдЖрд╡рд╛рдЬрд╝ messages.tts.providers.elevenlabs.speakerVoiceId рд╕реЗ рдЖрддреА рд╣реИред TTS рдореЙрдбрд▓ рдУрд╡рд░рд░рд╛рдЗрдб рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдкрд░ рдПрдЬреЗрдВрдЯ рдЙрддреНрддрд░ рдкреНрд░рддрд┐-рдЙрддреНрддрд░ [[tts:speakerVoiceId=... model=eleven_v3]] рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореАрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди deterministic рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реИред Join рдкрд░, рд▓реЙрдЧ рдореЗрдВ transcriptionProvider=elevenlabs рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╣рд░ рдмреЛрд▓реЗ рдЧрдП рдЙрддреНрддрд░ рдореЗрдВ provider=elevenlabs model=eleven_v3 speakerVoiceId=<voiceId> рд▓реЙрдЧ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдХреЗрд╡рд▓ Twilio рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди:
{ defaultTransport: "twilio", twilio: { defaultDialInNumber: "+15551234567", defaultPin: "123456", }, voiceCall: { gatewayUrl: "ws://127.0.0.1:18789", },}voiceCall.enabled рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ true рд╣реЛрддрд╛ рд╣реИ; Twilio рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ рдХреЗ рд╕рд╛рде рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХ PSTN рдХреЙрд▓, DTMF, рдФрд░ intro greeting рдХреЛ Voice Call Plugin рдХреЛ рд╕реМрдВрдкрддрд╛ рд╣реИред Voice Call рд░рд┐рдпрд▓рдЯрд╛рдЗрдо рдореАрдбрд┐рдпрд╛ рд╕реНрдЯреНрд░реАрдо рдЦреЛрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ DTMF sequence рдЪрд▓рд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рд╕рд╣реЗрдЬреЗ рдЧрдП intro text рдХреЛ рд╢реБрд░реБрдЖрддреА рд░рд┐рдпрд▓рдЯрд╛рдЗрдо greeting рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЕрдЧрд░ voice-call рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИ, рддреЛ Google Meet рдЕрдм рднреА dial plan рдХреЛ validate рдФрд░ record рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ Twilio рдХреЙрд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред
рдЯреВрд▓
рдПрдЬреЗрдВрдЯ google_meet рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
{ "action": "join", "url": "https://meet.google.com/abc-defg-hij", "transport": "chrome-node", "mode": "agent"}рдЬрдм Chrome Gateway host рдкрд░ рдЪрд▓рддрд╛ рд╣реЛ рддреЛ transport: "chrome" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЬрдм Chrome paired node рдЬреИрд╕реЗ Parallels VM рдкрд░ рдЪрд▓рддрд╛ рд╣реЛ рддреЛ transport: "chrome-node" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рджреЛрдиреЛрдВ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ model providers рдФрд░ openclaw_agent_consult Gateway host рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП model credentials рд╡рд╣реАрдВ рд░рд╣рддреЗ рд╣реИрдВред рдбрд┐рдлрд╝реЙрд▓реНрдЯ mode: "agent" рдХреЗ рд╕рд╛рде, рд░рд┐рдпрд▓рдЯрд╛рдЗрдо рдЯреНрд░рд╛рдВрд╕рдХреНрд░рд┐рдкреНрд╢рди рдкреНрд░рджрд╛рддрд╛ рд╕реБрдирдиреЗ рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ OpenClaw рдПрдЬреЗрдВрдЯ рдЙрддреНрддрд░ рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рдирд┐рдпрдорд┐рдд OpenClaw TTS рдЙрд╕реЗ Meet рдореЗрдВ рдмреЛрд▓рддрд╛ рд╣реИред рдЬрдм рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд░рд┐рдпрд▓рдЯрд╛рдЗрдо voice model рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗ, рддреЛ mode: "bidi" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдХрдЪреНрдЪрд╛ mode: "realtime" рдЕрдм рднреА mode: "agent" рдХреЗ рд▓рд┐рдП рд▓реЗрдЧреЗрд╕реА рд╕рдВрдЧрддрддрд╛ рдЙрдкрдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдм рдПрдЬреЗрдВрдЯ рдЯреВрд▓ schema рдореЗрдВ рд╡рд┐рдЬреНрдЮрд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реИред Agent-mode logs рдореЗрдВ bridge startup рдкрд░ resolved transcription provider/model рдФрд░ рд╣рд░ synthesized reply рдХреЗ рдмрд╛рдж TTS provider, model, voice, output format, рдФрд░ sample rate рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВред
рд╕рдХреНрд░рд┐рдп рд╕рддреНрд░реЛрдВ рдХреА рд╕реВрдЪреА рджреЗрдЦрдиреЗ рдпрд╛ session ID inspect рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП action: "status" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред realtime agent рдХреЛ рддреБрд░рдВрдд рдмреЛрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП sessionId рдФрд░ message рдХреЗ рд╕рд╛рде action: "speak" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред session рдмрдирд╛рдиреЗ рдпрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ, known phrase trigger рдХрд░рдиреЗ, рдФрд░ рдЬрдм Chrome host рдЗрд╕реЗ report рдХрд░ рд╕рдХреЗ рддреЛ inCall health рд▓реМрдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП action: "test_speech" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред test_speech рд╣рдореЗрд╢рд╛ mode: "agent" рдХреЛ force рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдЧрд░ рдЙрд╕реЗ mode: "transcribe" рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреЛ рдХрд╣рд╛ рдЬрд╛рдП рддреЛ fail рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ observe-only sessions рдЬрд╛рдирдмреВрдЭрдХрд░ speech emit рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдЗрд╕рдХрд╛ speechOutputVerified рдкрд░рд┐рдгрд╛рдо рдЗрд╕ test call рдХреЗ рджреМрд░рд╛рди realtime audio output bytes рдмрдврд╝рдиреЗ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкреБрд░рд╛рдиреЗ audio рд╡рд╛рд▓рд╛ reused session fresh successful speech check рдХреЗ рд░реВрдк рдореЗрдВ count рдирд╣реАрдВ рд╣реЛрддрд╛ред session ended mark рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП action: "leave" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреЗ рдкрд░ status рдореЗрдВ Chrome health рд╢рд╛рдорд┐рд▓ рд╣реЛрддреА рд╣реИ:
inCall: Chrome Meet call рдХреЗ рдЕрдВрджрд░ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИmicMuted: best-effort Meet microphone statemanualActionRequired/manualActionReason/manualActionMessage: speech рдХрд╛рдо рдХрд░ рд╕рдХреЗ рдЙрд╕рд╕реЗ рдкрд╣рд▓реЗ browser profile рдХреЛ manual login, Meet host admission, permissions, рдпрд╛ browser-control repair рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИspeechReady/speechBlockedReason/speechBlockedMessage: рдХреНрдпрд╛ managed Chrome speech рдЕрднреА allowed рд╣реИредspeechReady: falseрдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ OpenClaw рдиреЗ intro/test phrase рдХреЛ audio bridge рдореЗрдВ рдирд╣реАрдВ рднреЗрдЬрд╛редproviderConnected/realtimeReady: realtime voice bridge statelastInputAt/lastOutputAt: bridge рд╕реЗ рджреЗрдЦрд╛ рдЧрдпрд╛ рдпрд╛ bridge рдХреЛ рднреЗрдЬрд╛ рдЧрдпрд╛ рдЕрдВрддрд┐рдо audioaudioOutputRouted/audioOutputDeviceLabel: рдХреНрдпрд╛ Meet tab рдХрд╛ media output bridge рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП BlackHole device рдкрд░ actively routed рдерд╛lastSuppressedInputAt/suppressedInputBytes: assistant playback рд╕рдХреНрд░рд┐рдп рд░рд╣рдиреЗ рдкрд░ ignore рдХрд┐рдпрд╛ рдЧрдпрд╛ loopback input
{ "action": "speak", "sessionId": "meet_...", "message": "Say exactly: I'm here and listening."}рдПрдЬреЗрдВрдЯ рдФрд░ bidi рдореЛрдб
Chrome agent mode "рдореЗрд░рд╛ рдПрдЬреЗрдВрдЯ рдореАрдЯрд┐рдВрдЧ рдореЗрдВ рд╣реИ" рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рд╣реИред рд░рд┐рдпрд▓рдЯрд╛рдЗрдо рдЯреНрд░рд╛рдВрд╕рдХреНрд░рд┐рдкреНрд╢рди рдкреНрд░рджрд╛рддрд╛ meeting audio рд╕реБрдирддрд╛ рд╣реИ, final participant transcripts рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП OpenClaw agent рдХреЗ рдЬрд╝рд░рд┐рдП route рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЙрддреНрддрд░ рд╕рд╛рдорд╛рдиреНрдп OpenClaw TTS runtime рдХреЗ рдЬрд╝рд░рд┐рдП рдмреЛрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ realtime voice model рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗ, рддреЛ mode: "bidi" рд╕реЗрдЯ рдХрд░реЗрдВред consult рд╕реЗ рдкрд╣рд▓реЗ рдЖрд╕рдкрд╛рд╕ рдХреЗ final transcript fragments рдХреЛ coalesce рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдПрдХ spoken turn рдХрдИ stale partial answers рди рдмрдирд╛рдПред Queued assistant audio рдЕрдм рднреА рдЪрд▓ рд░рд╣рд╛ рд╣реЛ рддрдм realtime input рднреА suppress рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ agent consult рд╕реЗ рдкрд╣рд▓реЗ рд╣рд╛рд▓ рдХреЗ assistant-рдЬреИрд╕реЗ transcript echoes рдХреЛ ignore рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ BlackHole loopback рдПрдЬреЗрдВрдЯ рд╕реЗ рдЙрд╕рдХреА рдЕрдкрдиреА speech рдХрд╛ рдЙрддреНрддрд░ рди рджрд┐рд▓рд╡рд╛ рджреЗред
| Mode | рдЙрддреНрддрд░ рдХреМрди рддрдп рдХрд░рддрд╛ рд╣реИ | Speech output path | рдХрдм рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ |
|---|---|---|---|
agent |
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ OpenClaw agent | рд╕рд╛рдорд╛рдиреНрдп OpenClaw TTS runtime | рдЬрдм рдЖрдк "рдореЗрд░рд╛ рдПрдЬреЗрдВрдЯ рдореАрдЯрд┐рдВрдЧ рдореЗрдВ рд╣реИ" рд╡реНрдпрд╡рд╣рд╛рд░ рдЪрд╛рд╣рддреЗ рд╣реИрдВ |
bidi |
realtime voice model | realtime voice provider audio response | рдЬрдм рдЖрдк рд╕рдмрд╕реЗ рдХрдо-рд▓реЗрдЯреЗрдВрд╕реА conversational voice loop рдЪрд╛рд╣рддреЗ рд╣реИрдВ |
bidi mode рдореЗрдВ, рдЬрдм realtime model рдХреЛ рдЧрд╣рд░реЗ reasoning, current information, рдпрд╛ рд╕рд╛рдорд╛рдиреНрдп OpenClaw tools рдХреА рдЬрд╝рд░реВрд░рдд рд╣реЛ, рддреЛ рдпрд╣ openclaw_agent_consult рдХреЙрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
consult рдЯреВрд▓ рд╣рд╛рд▓рд┐рдпрд╛ рдореАрдЯрд┐рдВрдЧ рдЯреНрд░рд╛рдВрд╕рдХреНрд░рд┐рдкреНрдЯ рд╕рдВрджрд░реНрдн рдХреЗ рд╕рд╛рде рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдирд┐рдпрдорд┐рдд OpenClaw рдПрдЬреЗрдВрдЯ рдЪрд▓рд╛рддрд╛ рд╣реИ рдФрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдмреЛрд▓рд╛ рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓рд╛ рдЙрддреНрддрд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИред agent рдореЛрдб рдореЗрдВ, OpenClaw рдЙрд╕ рдЙрддреНрддрд░ рдХреЛ рд╕реАрдзреЗ TTS рд░рдирдЯрд╛рдЗрдо рдХреЛ рднреЗрдЬрддрд╛ рд╣реИ; bidi рдореЛрдб рдореЗрдВ, рд░реАрдпрд▓рдЯрд╛рдЗрдо рдЖрд╡рд╛рдЬрд╝ рдореЙрдбрд▓ consult рдкрд░рд┐рдгрд╛рдо рдХреЛ рдореАрдЯрд┐рдВрдЧ рдореЗрдВ рдмреЛрд▓рдХрд░ рд╕реБрдирд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ Voice Call рдЬреИрд╕реА рд╣реА рд╕рд╛рдЭрд╛ consult рдорд╢реАрдирд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, consult main рдПрдЬреЗрдВрдЯ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред рдЬрдм рдХрд┐рд╕реА Meet рд▓реЗрди рдХреЛ рд╕рдорд░реНрдкрд┐рдд OpenClaw рдПрдЬреЗрдВрдЯ рд╡рд░реНрдХрд╕реНрдкреЗрд╕, рдореЙрдбрд▓ рдбрд┐рдлрд╝реЙрд▓реНрдЯ, рдЯреВрд▓ рдиреАрддрд┐, рдореЗрдореЛрд░реА, рдФрд░ рд╕рддреНрд░ рдЗрддрд┐рд╣рд╛рд╕ рд╕реЗ consult рдХрд░рдирд╛ рд╣реЛ, рддреЛ realtime.agentId рд╕реЗрдЯ рдХрд░реЗрдВред
рдПрдЬреЗрдВрдЯ-рдореЛрдб consult рдкреНрд░рддрд┐-рдореАрдЯрд┐рдВрдЧ agent:<id>:subagent:google-meet:<session> рд╕рддреНрд░ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдлрд╝реЙрд▓реЛ-рдЕрдк рдкреНрд░рд╢реНрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рдПрдЬреЗрдВрдЯ рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдПрдЬреЗрдВрдЯ рдиреАрддрд┐ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рд▓реЗрддреЗ рд╣реБрдП рдореАрдЯрд┐рдВрдЧ рд╕рдВрджрд░реНрдн рдмрдирд╛рдП рд░рдЦреЗрдВред
realtime.toolPolicy consult рд░рди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ:
safe-read-only: consult рдЯреВрд▓ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдПрдВ рдФрд░ рдирд┐рдпрдорд┐рдд рдПрдЬреЗрдВрдЯ рдХреЛread,web_search,web_fetch,x_search,memory_search, рдФрд░memory_getрддрдХ рд╕реАрдорд┐рдд рдХрд░реЗрдВредowner: consult рдЯреВрд▓ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдПрдВ рдФрд░ рдирд┐рдпрдорд┐рдд рдПрдЬреЗрдВрдЯ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдПрдЬреЗрдВрдЯ рдЯреВрд▓ рдиреАрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рджреЗрдВредnone: рд░реАрдпрд▓рдЯрд╛рдЗрдо рдЖрд╡рд╛рдЬрд╝ рдореЙрдбрд▓ рдХреЛ consult рдЯреВрд▓ рдЙрдкрд▓рдмреНрдз рди рдХрд░рд╛рдПрдВред
consult рд╕рддреНрд░ рдХреБрдВрдЬреА рдкреНрд░рддрд┐ Meet рд╕рддреНрд░ рд╕реАрдорд┐рдд рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдлрд╝реЙрд▓реЛ-рдЕрдк consult рдХреЙрд▓ рдЙрд╕реА рдореАрдЯрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдкрд┐рдЫрд▓реЗ consult рд╕рдВрджрд░реНрдн рдХрд╛ рдлрд┐рд░ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
Chrome рдХреЗ рдХреЙрд▓ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╢рд╛рдорд┐рд▓ рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдмреЛрд▓реА рдЧрдИ рддреИрдпрд╛рд░реА рдЬрд╛рдВрдЪ рдХреЛ рдмрд╛рдзреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:
openclaw googlemeet speak meet_... "Say exactly: I'm here and listening."рдкреВрд░реНрдг рдЬреЙрдЗрди-рдПрдВрдб-рд╕реНрдкреАрдХ рд╕реНрдореЛрдХ рдХреЗ рд▓рд┐рдП:
openclaw googlemeet test-speech https://meet.google.com/abc-defg-hij \ --transport chrome-node \ --message "Say exactly: I'm here and listening."рд▓рд╛рдЗрд╡ рдкрд░реАрдХреНрд╖рдг рдЪреЗрдХрд▓рд┐рд╕реНрдЯ
рдХрд┐рд╕реА рдореАрдЯрд┐рдВрдЧ рдХреЛ рдЕрдирдЕрдЯреЗрдВрдбреЗрдб рдПрдЬреЗрдВрдЯ рдХреЛ рд╕реМрдВрдкрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕ рдХреНрд░рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
openclaw googlemeet setupopenclaw nodes statusopenclaw googlemeet test-speech https://meet.google.com/abc-defg-hij \ --transport chrome-node \ --message "Say exactly: Google Meet speech test complete."рдЕрдкреЗрдХреНрд╖рд┐рдд Chrome-node рд╕реНрдерд┐рддрд┐:
googlemeet setupрдкреВрд░реА рддрд░рд╣ рд╣рд░рд╛ рд╣реИред- рдЬрдм Chrome-node рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ рд╣реЛ рдпрд╛ рдХреЛрдИ node рдкрд┐рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ, рддреЛ
googlemeet setupрдореЗрдВchrome-node-connectedрд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИред nodes statusрдЪрдпрдирд┐рдд node рдХреЛ рдХрдиреЗрдХреНрдЯреЗрдб рджрд┐рдЦрд╛рддрд╛ рд╣реИред- рдЪрдпрдирд┐рдд node
googlemeet.chromeрдФрд░browser.proxy, рджреЛрдиреЛрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред - Meet рдЯреИрдм рдХреЙрд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИ рдФрд░
test-speechinCall: trueрдХреЗ рд╕рд╛рде Chrome рд╕реНрд╡рд╛рд╕реНрдереНрдп рд▓реМрдЯрд╛рддрд╛ рд╣реИред
Parallels macOS VM рдЬреИрд╕реЗ рд░рд┐рдореЛрдЯ Chrome рд╣реЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП, Gateway рдпрд╛ VM рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдпрд╣ рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рдЪреЗрдХ рд╣реИ:
openclaw googlemeet setupopenclaw nodes status --connectedopenclaw nodes invoke \ --node parallels-macos \ --command googlemeet.chrome \ --params '{"action":"setup"}'рдпрд╣ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ Gateway Plugin рд▓реЛрдб рд╣реИ, VM node рд╡рд░реНрддрдорд╛рди рдЯреЛрдХрди рдХреЗ рд╕рд╛рде рдХрдиреЗрдХреНрдЯреЗрдб рд╣реИ, рдФрд░ рдПрдЬреЗрдВрдЯ рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореАрдЯрд┐рдВрдЧ рдЯреИрдм рдЦреЛрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ Meet рдСрдбрд┐рдпреЛ рдмреНрд░рд┐рдЬ рдЙрдкрд▓рдмреНрдз рд╣реИред
Twilio рд╕реНрдореЛрдХ рдХреЗ рд▓рд┐рдП, рдРрд╕реА рдореАрдЯрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬреЛ рдлрд╝реЛрди рдбрд╛рдпрд▓-рдЗрди рд╡рд┐рд╡рд░рдг рджрд┐рдЦрд╛рддреА рд╣реЛ:
openclaw googlemeet setupopenclaw googlemeet join https://meet.google.com/abc-defg-hij \ --transport twilio \ --dial-in-number +15551234567 \ --pin 123456рдЕрдкреЗрдХреНрд╖рд┐рдд Twilio рд╕реНрдерд┐рддрд┐:
googlemeet setupрдореЗрдВ рд╣рд░реЗtwilio-voice-call-plugin,twilio-voice-call-credentials, рдФрд░twilio-voice-call-webhookрдЪреЗрдХ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВред- Gateway рд░реАрд▓реЛрдб рдХреЗ рдмрд╛рдж CLI рдореЗрдВ
voicecallрдЙрдкрд▓рдмреНрдз рд╣реИред - рд▓реМрдЯреЗ рд╣реБрдП рд╕рддреНрд░ рдореЗрдВ
transport: "twilio"рдФрд░twilio.voiceCallIdрд╣реЛрддрд╛ рд╣реИред openclaw logs --followрд░реАрдпрд▓рдЯрд╛рдЗрдо TwiML рд╕реЗ рдкрд╣рд▓реЗ DTMF TwiML рд╕рд░реНрд╡ рд╣реЛрддреЗ рд╣реБрдП рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрднрд┐рд╡рд╛рджрди рдХрддрд╛рд░рдмрджреНрдз рдХрд┐рдП рд╣реБрдП рд░реАрдпрд▓рдЯрд╛рдЗрдо рдмреНрд░рд┐рдЬ рджрд┐рдЦрд╛рддрд╛ рд╣реИредgooglemeet leave <sessionId>рдкреНрд░рддреНрдпрд╛рдпреЛрдЬрд┐рдд voice call рдХреЛ рд╣реИрдВрдЧ рдЕрдк рдХрд░рддрд╛ рд╣реИред
рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг
рдПрдЬреЗрдВрдЯ Google Meet рдЯреВрд▓ рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛
рдкреБрд╖реНрдЯрд┐ рдХрд░реЗрдВ рдХрд┐ Plugin Gateway рдХреЙрдиреНрдлрд╝рд┐рдЧ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ рдФрд░ Gateway рд░реАрд▓реЛрдб рдХрд░реЗрдВ:
openclaw plugins list | grep google-meetopenclaw googlemeet setupрдЕрдЧрд░ рдЖрдкрдиреЗ рдЕрднреА plugins.entries.google-meet рд╕рдВрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рддреЛ Gateway рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рд░рдВрдн рдпрд╛ рд░реАрд▓реЛрдб рдХрд░реЗрдВред рдЪрд▓ рд░рд╣рд╛ рдПрдЬреЗрдВрдЯ рдХреЗрд╡рд▓ рд╡рд░реНрддрдорд╛рди Gateway рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреНрд╡рд╛рд░рд╛ рдкрдВрдЬреАрдХреГрдд Plugin рдЯреВрд▓ рджреЗрдЦрддрд╛ рд╣реИред
рдЧреИрд░-macOS Gateway рд╣реЛрд╕реНрдЯ рдкрд░, рдПрдЬреЗрдВрдЯ-рдлрд╝реЗрд╕рд┐рдВрдЧ google_meet рдЯреВрд▓ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд░рд╣рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдерд╛рдиреАрдп Chrome talk-back рдХрд╛рд░реНрд░рд╡рд╛рдЗрдпрд╛рдВ рдСрдбрд┐рдпреЛ рдмреНрд░рд┐рдЬ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд░реЛрдХ рджреА рдЬрд╛рддреА рд╣реИрдВред рд╕реНрдерд╛рдиреАрдп Chrome talk-back рдСрдбрд┐рдпреЛ рдлрд┐рд▓рд╣рд╛рд▓ macOS BlackHole 2ch рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП Linux рдПрдЬреЗрдВрдЯреЛрдВ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрдерд╛рдиреАрдп Chrome рдПрдЬреЗрдВрдЯ рдкрде рдХреЗ рдмрдЬрд╛рдп mode: "transcribe", Twilio рдбрд╛рдпрд▓-рдЗрди, рдпрд╛ macOS chrome-node рд╣реЛрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдХреЛрдИ рдХрдиреЗрдХреНрдЯреЗрдб Google Meet-рд╕рдХреНрд╖рдо node рдирд╣реАрдВ
node рд╣реЛрд╕реНрдЯ рдкрд░ рдЪрд▓рд╛рдПрдВ:
openclaw plugins enable google-meetopenclaw plugins enable browserOPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1 \ openclaw node run --host <gateway-lan-ip> --port 18789 --display-name parallels-macosGateway рд╣реЛрд╕реНрдЯ рдкрд░, node рдХреЛ рд╕реНрд╡реАрдХреГрдд рдХрд░реЗрдВ рдФрд░ рдХрдорд╛рдВрдб рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ:
openclaw devices listopenclaw devices approve <requestId>openclaw nodes statusnode рдХрдиреЗрдХреНрдЯреЗрдб рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ googlemeet.chrome рдХреЗ рд╕рд╛рде browser.proxy рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред Gateway рдХреЙрдиреНрдлрд╝рд┐рдЧ рдХреЛ рдЙрди node рдХрдорд╛рдВрдб рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреА рдЪрд╛рд╣рд┐рдП:
{ gateway: { nodes: { allowCommands: ["browser.proxy", "googlemeet.chrome"], }, },}рдЕрдЧрд░ googlemeet setup chrome-node-connected рдкрд░ рд╡рд┐рдлрд▓ рд╣реЛрддрд╛ рд╣реИ рдпрд╛ Gateway рд▓реЙрдЧ gateway token mismatch рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╡рд░реНрддрдорд╛рди Gateway рдЯреЛрдХрди рдХреЗ рд╕рд╛рде node рдХреЛ рдлрд┐рд░ рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдпрд╛ рдкреБрдирдГ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВред LAN Gateway рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЖрдо рддреМрд░ рдкрд░ рдЕрд░реНрде рд╣реИ:
OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1 \ openclaw node install \ --host <gateway-lan-ip> \ --port 18789 \ --display-name parallels-macos \ --forceрдлрд┐рд░ node рд╕реЗрд╡рд╛ рд░реАрд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдПрдВ:
openclaw googlemeet setupopenclaw nodes status --connectedрдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЦреБрд▓рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдПрдЬреЗрдВрдЯ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛
observe-only рдЬреЙрдЗрди рдХреЗ рд▓рд┐рдП googlemeet test-listen рдпрд╛ рд░реАрдпрд▓рдЯрд╛рдЗрдо рдЬреЙрдЗрди рдХреЗ рд▓рд┐рдП googlemeet test-speech рдЪрд▓рд╛рдПрдВ, рдлрд┐рд░ рд▓реМрдЯреЗ рд╣реБрдП Chrome рд╕реНрд╡рд╛рд╕реНрдереНрдп рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВред рдЕрдЧрд░ рдХреЛрдИ рднреА probe manualActionRequired: true рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдСрдкрд░реЗрдЯрд░ рдХреЛ manualActionMessage рджрд┐рдЦрд╛рдПрдВ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдкреВрд░реА рд╣реЛрдиреЗ рддрдХ рдлрд┐рд░ рд╕реЗ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рд░реЛрдХ рджреЗрдВред
рд╕рд╛рдорд╛рдиреНрдп рдореИрдиреБрдЕрд▓ рдХрд╛рд░реНрд░рд╡рд╛рдЗрдпрд╛рдВ:
- Chrome рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╛рдЗрди рдЗрди рдХрд░реЗрдВред
- Meet рд╣реЛрд╕реНрдЯ рдЦрд╛рддреЗ рд╕реЗ рдЕрддрд┐рдерд┐ рдХреЛ рдкреНрд░рд╡реЗрд╢ рджреЗрдВред
- Chrome рдХрд╛ рдореВрд▓ рдЕрдиреБрдорддрд┐ prompt рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рдкрд░ Chrome рдорд╛рдЗрдХреНрд░реЛрдлрд╝реЛрди/рдХреИрдорд░рд╛ рдЕрдиреБрдорддрд┐рдпрд╛рдВ рджреЗрдВред
- рдЕрдЯрдХреЗ рд╣реБрдП Meet рдЕрдиреБрдорддрд┐ рдбрд╛рдпрд▓реЙрдЧ рдХреЛ рдмрдВрдж рдпрд╛ рдареАрдХ рдХрд░реЗрдВред
рд╕рд┐рд░реНрдл рдЗрд╕рд▓рд┐рдП "not signed in" рд░рд┐рдкреЛрд░реНрдЯ рди рдХрд░реЗрдВ рдХреНрдпреЛрдВрдХрд┐ Meet "Do you want people to hear you in the meeting?" рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдпрд╣ Meet рдХрд╛ рдСрдбрд┐рдпреЛ-рдЪреЙрдЗрд╕ рдЗрдВрдЯрд░рд╕реНрдЯрд┐рд╢рд┐рдпрд▓ рд╣реИ; рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреЗ рдкрд░ OpenClaw рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдСрдЯреЛрдореЗрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ Use microphone рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореАрдЯрд┐рдВрдЧ рд╕реНрдерд┐рддрд┐ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИред create-only рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдлрд╝реЙрд▓рдмреИрдХ рдХреЗ рд▓рд┐рдП, OpenClaw Continue without microphone рдХреНрд▓рд┐рдХ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ URL рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд░реАрдпрд▓рдЯрд╛рдЗрдо рдСрдбрд┐рдпреЛ рдкрде рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреАред
рдореАрдЯрд┐рдВрдЧ рдмрдирд╛рдирд╛ рд╡рд┐рдлрд▓ рд╣реЛрддрд╛ рд╣реИ
OAuth рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рд╣реЛрдиреЗ рдкрд░ googlemeet create рдкрд╣рд▓реЗ Google Meet API spaces.create endpoint рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред OAuth рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдХреЗ рдмрд┐рдирд╛, рдпрд╣ рдкрд┐рди рдХрд┐рдП рдЧрдП Chrome node рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрд░ рдлрд╝реЙрд▓рдмреИрдХ рдХрд░рддрд╛ рд╣реИред рдкреБрд╖реНрдЯрд┐ рдХрд░реЗрдВ:
- API рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП:
oauth.clientIdрдФрд░oauth.refreshTokenрдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рд╣реИрдВ, рдпрд╛ рдореЗрд▓ рдЦрд╛рддреЗOPENCLAW_GOOGLE_MEET_*environment variables рдореМрдЬреВрдж рд╣реИрдВред - API рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП: refresh token create рд╕рдорд░реНрдерди рдЬреЛрдбрд╝реЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдорд┐рдВрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдкреБрд░рд╛рдиреЗ tokens рдореЗрдВ
meetings.space.createdscope рдЫреВрдЯрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ;openclaw googlemeet auth login --jsonрдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдПрдВ рдФрд░ Plugin рдХреЙрдиреНрдлрд╝рд┐рдЧ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВред - рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдлрд╝реЙрд▓рдмреИрдХ рдХреЗ рд▓рд┐рдП:
defaultTransport: "chrome-node"рдФрд░chromeNode.nodeрдРрд╕реЗ рдХрдиреЗрдХреНрдЯреЗрдб node рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВbrowser.proxyрдФрд░googlemeet.chromeрд╣реИрдВред - рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдлрд╝реЙрд▓рдмреИрдХ рдХреЗ рд▓рд┐рдП: рдЙрд╕ node рдкрд░ OpenClaw Chrome рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ Google рдореЗрдВ рд╕рд╛рдЗрди рдЗрди рд╣реИ рдФрд░
https://meet.google.com/newрдЦреЛрд▓ рд╕рдХрддреА рд╣реИред - рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдлрд╝реЙрд▓рдмреИрдХ рдХреЗ рд▓рд┐рдП: рдкреБрдирдГ рдкреНрд░рдпрд╛рд╕ рдирдпрд╛ рдЯреИрдм рдЦреЛрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдореМрдЬреВрджрд╛
https://meet.google.com/newрдпрд╛ Google account prompt рдЯреИрдм рдХрд╛ рдлрд┐рд░ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЕрдЧрд░ рдПрдЬреЗрдВрдЯ рдЯрд╛рдЗрдо рдЖрдЙрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рджреВрд╕рд░рд╛ Meet рдЯреИрдм рдЦреЛрд▓рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЯреВрд▓ рдХреЙрд▓ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред - рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдлрд╝реЙрд▓рдмреИрдХ рдХреЗ рд▓рд┐рдП: рдЕрдЧрд░ рдЯреВрд▓
manualActionRequired: trueрд▓реМрдЯрд╛рддрд╛ рд╣реИ, рддреЛ рдСрдкрд░реЗрдЯрд░ рдХреЛ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд▓реМрдЯреЗ рд╣реБрдПbrowser.nodeId,browser.targetId,browserUrl, рдФрд░manualActionMessageрдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЙрд╕ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рддрдХ рд▓реВрдк рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдкреНрд░рдпрд╛рд╕ рди рдХрд░реЗрдВред - рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдлрд╝реЙрд▓рдмреИрдХ рдХреЗ рд▓рд┐рдП: рдЕрдЧрд░ Meet "Do you want people to hear you in the meeting?" рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рдЯреИрдм рдЦреБрд▓рд╛ рдЫреЛрдбрд╝ рджреЗрдВред OpenClaw рдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдСрдЯреЛрдореЗрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ Use microphone рдпрд╛, create-only рдлрд╝реЙрд▓рдмреИрдХ рдХреЗ рд▓рд┐рдП, Continue without microphone рдХреНрд▓рд┐рдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЬрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП Meet URL рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдЬрд╛рд░реА рд░рдЦрдиреА рдЪрд╛рд╣рд┐рдПред рдЕрдЧрд░ рд╡рд╣ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рддреЛ рддреНрд░реБрдЯрд┐ рдореЗрдВ
google-login-requiredрдирд╣реАрдВ, рдмрд▓реНрдХрд┐meet-audio-choice-requiredрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдПрдЬреЗрдВрдЯ рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдмреЛрд▓рддрд╛ рдирд╣реАрдВ
рд░реАрдпрд▓рдЯрд╛рдЗрдо рдкрде рдЬрд╛рдВрдЪреЗрдВ:
openclaw googlemeet setupopenclaw googlemeet doctorрд╕рд╛рдорд╛рдиреНрдп STT -> OpenClaw рдПрдЬреЗрдВрдЯ -> TTS talk-back рдкрде рдХреЗ рд▓рд┐рдП mode: "agent" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдпрд╛ рд╕реАрдзреЗ рд░реАрдпрд▓рдЯрд╛рдЗрдо рдЖрд╡рд╛рдЬрд╝ рдлрд╝реЙрд▓рдмреИрдХ рдХреЗ рд▓рд┐рдП mode: "bidi" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред mode: "transcribe" рдЬрд╛рдирдмреВрдЭрдХрд░ talk-back рдмреНрд░рд┐рдЬ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд░рддрд╛ред observe-only рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП, рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХреЗ рдмреЛрд▓рдиреЗ рдХреЗ рдмрд╛рдж openclaw googlemeet status --json <session-id> рдЪрд▓рд╛рдПрдВ рдФрд░ captioning, transcriptLines, рдФрд░ lastCaptionText рдЬрд╛рдВрдЪреЗрдВред рдЕрдЧрд░ inCall true рд╣реИ рд▓реЗрдХрд┐рди transcriptLines 0 рдкрд░ рд░рд╣рддрд╛ рд╣реИ, рддреЛ Meet captions рдЕрдХреНрд╖рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, observer рдЗрдВрд╕реНрдЯреЙрд▓ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдХреЛрдИ рдмреЛрд▓рд╛ рдирд╣реАрдВ рд╣реИ, Meet UI рдмрджрд▓ рдЧрдпрд╛ рд╣реИ, рдпрд╛ рдореАрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛/рдЦрд╛рддреЗ рдХреЗ рд▓рд┐рдП live captions рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИрдВред
googlemeet test-speech рд╣рдореЗрд╢рд╛ рд░реАрдпрд▓рдЯрд╛рдЗрдо рдкрде рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдФрд░ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЙрд╕ invocation рдХреЗ рд▓рд┐рдП рдмреНрд░рд┐рдЬ output bytes рджреЗрдЦреЗ рдЧрдП рдпрд╛ рдирд╣реАрдВред рдЕрдЧрд░ speechOutputVerified false рд╣реИ рдФрд░ speechOutputTimedOut true рд╣реИ, рддреЛ рд░реАрдпрд▓рдЯрд╛рдЗрдо provider рдиреЗ utterance рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд▓рд┐рдпрд╛ рд╣реЛрдЧрд╛ рд▓реЗрдХрд┐рди OpenClaw рдиреЗ Chrome рдСрдбрд┐рдпреЛ рдмреНрд░рд┐рдЬ рддрдХ рдирдП output bytes рдкрд╣реБрдВрдЪрддреЗ рд╣реБрдП рдирд╣реАрдВ рджреЗрдЦреЗред
рдпрд╣ рднреА рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ:
- Gateway рд╣реЛрд╕реНрдЯ рдкрд░ рд░реАрдпрд▓рдЯрд╛рдЗрдо provider key рдЙрдкрд▓рдмреНрдз рд╣реИ, рдЬреИрд╕реЗ
OPENAI_API_KEYрдпрд╛GEMINI_API_KEYред - Chrome рд╣реЛрд╕реНрдЯ рдкрд░
BlackHole 2chрджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред - Chrome рд╣реЛрд╕реНрдЯ рдкрд░
soxрдореМрдЬреВрдж рд╣реИред - Meet рдорд╛рдЗрдХреНрд░реЛрдлрд╝реЛрди рдФрд░ рд╕реНрдкреАрдХрд░ OpenClaw рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП virtual audio path рд╕реЗ routed рд╣реИрдВред рд╕реНрдерд╛рдиреАрдп Chrome рд░реАрдпрд▓рдЯрд╛рдЗрдо рдЬреЙрдЗрди рдХреЗ рд▓рд┐рдП
doctorрдХреЛmeet output routed: yesрджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
googlemeet doctor [session-id] рд╕рддреНрд░, node, in-call рд╕реНрдерд┐рддрд┐, manual action рдХрд╛рд░рдг, рд░реАрдпрд▓рдЯрд╛рдЗрдо provider рдХрдиреЗрдХреНрд╢рди, realtimeReady, audio input/output activity, рдЖрдЦрд┐рд░реА audio timestamps, byte counters, рдФрд░ browser URL рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИред рдЬрдм рдЖрдкрдХреЛ raw JSON рдЪрд╛рд╣рд┐рдП, рддреЛ googlemeet status [session-id] --json рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЬрдм рдЖрдкрдХреЛ tokens рдЙрдЬрд╛рдЧрд░ рдХрд┐рдП рдмрд┐рдирд╛ Google Meet OAuth refresh рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛ, рддреЛ googlemeet doctor --oauth рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ; рдЬрдм рдЖрдкрдХреЛ Google Meet API proof рднреА рдЪрд╛рд╣рд┐рдП, рддреЛ --meeting рдпрд╛ --create-space рдЬреЛрдбрд╝реЗрдВред
рдЕрдЧрд░ рдПрдЬреЗрдВрдЯ рдЯрд╛рдЗрдо рдЖрдЙрдЯ рд╣реЛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ Meet рдЯреИрдм рдкрд╣рд▓реЗ рд╕реЗ рдЦреБрд▓рд╛ рджрд┐рдЦрддрд╛ рд╣реИ, рддреЛ рджреВрд╕рд░рд╛ рдЯреИрдм рдЦреЛрд▓реЗ рдмрд┐рдирд╛ рдЙрд╕ рдЯреИрдм рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ:
openclaw googlemeet recover-tabopenclaw googlemeet recover-tab https://meet.google.com/abc-defg-hijрд╕рдорддреБрд▓реНрдп рдЯреВрд▓ рдХрд╛рд░реНрд░рд╡рд╛рдИ recover_current_tab рд╣реИред рдпрд╣ рдЪрдпрдирд┐рдд transport рдХреЗ рд▓рд┐рдП рдореМрдЬреВрджрд╛ Meet рдЯреИрдм рдХреЛ focus рдФрд░ inspect рдХрд░рддреА рд╣реИред chrome рдХреЗ рд╕рд╛рде, рдпрд╣ Gateway рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдиреАрдп browser control рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ; chrome-node рдХреЗ рд╕рд╛рде, рдпрд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП Chrome node рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред рдпрд╣ рдирдпрд╛ рдЯреИрдм рдирд╣реАрдВ рдЦреЛрд▓рддреА рдпрд╛ рдирдпрд╛ рд╕рддреНрд░ рдирд╣реАрдВ рдмрдирд╛рддреА; рдпрд╣ рд╡рд░реНрддрдорд╛рди blocker рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддреА рд╣реИ, рдЬреИрд╕реЗ login, admission, permissions, рдпрд╛ audio-choice рд╕реНрдерд┐рддрд┐ред CLI рдХрдорд╛рдВрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП Gateway рд╕реЗ рдмрд╛рдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП Gateway рдЪрд▓ рд░рд╣рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП; chrome-node рдХреЗ рд▓рд┐рдП Chrome node рдХрд╛ рдХрдиреЗрдХреНрдЯреЗрдб рд╣реЛрдирд╛ рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИред
Twilio setup checks рд╡рд┐рдлрд▓ рд╣реЛрддреЗ рд╣реИрдВ
рдЬрдм voice-call рдЕрдиреБрдордд рдпрд╛ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрддрд╛, рддреЛ twilio-voice-call-plugin рд╡рд┐рдлрд▓ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕реЗ plugins.allow рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ, plugins.entries.voice-call рд╕рдХреНрд╖рдо рдХрд░реЗрдВ, рдФрд░ Gateway рд░реАрд▓реЛрдб рдХрд░реЗрдВред
рдЬрдм Twilio backend рдореЗрдВ account SID, auth token, рдпрд╛ caller number рдирд╣реАрдВ рд╣реЛрддрд╛, рддреЛ twilio-voice-call-credentials рд╡рд┐рдлрд▓ рд╣реЛрддрд╛ рд╣реИред рдЗрдиреНрд╣реЗрдВ Gateway рд╣реЛрд╕реНрдЯ рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ:
export TWILIO_ACCOUNT_SID=AC...export TWILIO_AUTH_TOKEN=...export TWILIO_FROM_NUMBER=+15550001234рдЬрдм voice-call рдХреЗ рдкрд╛рд╕ рдХреЛрдИ public Webhook exposure рдирд╣реАрдВ рд╣реЛрддрд╛, рдпрд╛ рдЬрдм publicUrl loopback рдпрд╛ private network space рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддрд╛ рд╣реИ, рддреЛ twilio-voice-call-webhook рд╡рд┐рдлрд▓ рд╣реЛрддрд╛ рд╣реИред plugins.entries.voice-call.config.publicUrl рдХреЛ public provider URL рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ рдпрд╛ voice-call tunnel/Tailscale exposure рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред
Loopback рдФрд░ private URLs carrier callbacks рдХреЗ рд▓рд┐рдП рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИрдВред publicUrl рдХреЗ рд░реВрдк рдореЗрдВ localhost, 127.0.0.1, 0.0.0.0, 10.x, 172.16.x-172.31.x, 192.168.x, 169.254.x, fc00::/7, рдпрд╛ fd00::/8 рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВред
рд╕реНрдерд┐рд░ public URL рдХреЗ рд▓рд┐рдП:
{ plugins: { entries: { "voice-call": { enabled: true, config: { provider: "twilio", fromNumber: "+15550001234", publicUrl: "https://voice.example.com/voice/webhook", }, }, }, },}рд╕реНрдерд╛рдиреАрдп рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП, рдирд┐рдЬреА рд╣реЛрд╕реНрдЯ URL рдХреЗ рдмрдЬрд╛рдп рдЯрдирд▓ рдпрд╛ Tailscale рдПрдХреНрд╕рдкреЛрдЬрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
{ plugins: { entries: { "voice-call": { config: { tunnel: { provider: "ngrok" }, // or tailscale: { mode: "funnel", path: "/voice/webhook" }, }, }, }, },}рдлрд┐рд░ Gateway рдХреЛ рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдпрд╛ рд░реАрд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдЪрд▓рд╛рдПрдВ:
openclaw googlemeet setup --transport twilioopenclaw voicecall setupopenclaw voicecall smokevoicecall smoke рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХреЗрд╡рд▓ рддреИрдпрд╛рд░реА рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рд╣реИред рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирдВрдмрд░ рдХрд╛ рдбреНрд░рд╛рдИ-рд░рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:
openclaw voicecall smoke --to "+15555550123"--yes рдХреЗрд╡рд▓ рддрдм рдЬреЛрдбрд╝реЗрдВ рдЬрдм рдЖрдк рдЬрд╛рдирдмреВрдЭрдХрд░ рд▓рд╛рдЗрд╡ рдЖрдЙрдЯрдмрд╛рдЙрдВрдб рд╕реВрдЪрдирд╛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реЛрдВ:
openclaw voicecall smoke --to "+15555550123" --yesTwilio рдХреЙрд▓ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ рд▓реЗрдХрд┐рди рдореАрдЯрд┐рдВрдЧ рдореЗрдВ рдХрднреА рдкреНрд░рд╡реЗрд╢ рдирд╣реАрдВ рдХрд░рддреА
рдкреБрд╖реНрдЯрд┐ рдХрд░реЗрдВ рдХрд┐ Meet рдЗрд╡реЗрдВрдЯ рдлреЛрди рдбрд╛рдпрд▓-рдЗрди рд╡рд┐рд╡рд░рдг рджрд┐рдЦрд╛рддрд╛ рд╣реИред рд╕рдЯреАрдХ рдбрд╛рдпрд▓-рдЗрди рдирдВрдмрд░ рдФрд░ PIN рдпрд╛ рдХрд╕реНрдЯрдо DTMF рдЕрдиреБрдХреНрд░рдо рдкрд╛рд╕ рдХрд░реЗрдВ:
openclaw googlemeet join https://meet.google.com/abc-defg-hij \ --transport twilio \ --dial-in-number +15551234567 \ --dtmf-sequence ww123456#рдЕрдЧрд░ рдкреНрд░рджрд╛рддрд╛ рдХреЛ PIN рджрд░реНрдЬ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╡рд┐рд░рд╛рдо рдЪрд╛рд╣рд┐рдП, рддреЛ --dtmf-sequence рдореЗрдВ рд╢реБрд░реБрдЖрдд рдореЗрдВ w рдпрд╛ рдХреЙрдорд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдЕрдЧрд░ рдлреЛрди рдХреЙрд▓ рдмрди рдЬрд╛рддреА рд╣реИ рд▓реЗрдХрд┐рди Meet рд░реЛрд╕реНрдЯрд░ рдореЗрдВ рдбрд╛рдпрд▓-рдЗрди рдкреНрд░рддрд┐рднрд╛рдЧреА рдХрднреА рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛:
- рдкреНрд░рддреНрдпрд╛рдпреЛрдЬрд┐рдд Twilio рдХреЙрд▓ ID, DTMF рдХрддрд╛рд░рдмрджреНрдз рд╣реБрдЖ рдпрд╛ рдирд╣реАрдВ, рдФрд░ рдкрд░рд┐рдЪрдп рдЕрднрд┐рд╡рд╛рджрди рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рдпрд╛ рдирд╣реАрдВ, рдЗрд╕рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
openclaw googlemeet doctor <session-id>рдЪрд▓рд╛рдПрдВред openclaw voicecall status --call-id <id>рдЪрд▓рд╛рдПрдВ рдФрд░ рдкреБрд╖реНрдЯрд┐ рдХрд░реЗрдВ рдХрд┐ рдХреЙрд▓ рдЕрдм рднреА рд╕рдХреНрд░рд┐рдп рд╣реИредopenclaw voicecall tailрдЪрд▓рд╛рдПрдВ рдФрд░ рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ Twilio webhooks Gateway рдкрд░ рдЖ рд░рд╣реЗ рд╣реИрдВредopenclaw logs --followрдЪрд▓рд╛рдПрдВ рдФрд░ Twilio Meet рдЕрдиреБрдХреНрд░рдо рджреЗрдЦреЗрдВ: Google Meet join рдХреЛ рдкреНрд░рддреНрдпрд╛рдпреЛрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ, Voice Call рдкреНрд░реА-рдХрдиреЗрдХреНрдЯ DTMF TwiML рдХреЛ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдФрд░ рд╕рд░реНрд╡ рдХрд░рддрд╛ рд╣реИ, Voice Call Twilio рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рд░реАрдпрд▓рдЯрд╛рдЗрдо TwiML рд╕рд░реНрд╡ рдХрд░рддрд╛ рд╣реИ, рдлрд┐рд░ Google Meetvoicecall.speakрдХреЗ рд╕рд╛рде рдкрд░рд┐рдЪрдп рднрд╛рд╖рдг рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИредopenclaw googlemeet setup --transport twilioрджреЛрдмрд╛рд░рд╛ рдЪрд▓рд╛рдПрдВ; рд╣рд░реА setup рдЬрд╛рдВрдЪ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд╛рдмрд┐рдд рдирд╣реАрдВ рдХрд░рддреА рдХрд┐ рдореАрдЯрд┐рдВрдЧ PIN рдЕрдиреБрдХреНрд░рдо рд╕рд╣реА рд╣реИред- рдкреБрд╖реНрдЯрд┐ рдХрд░реЗрдВ рдХрд┐ рдбрд╛рдпрд▓-рдЗрди рдирдВрдмрд░ рдЙрд╕реА Meet рдЖрдордВрддреНрд░рдг рдФрд░ рдХреНрд╖реЗрддреНрд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдЬрд┐рд╕рд╕реЗ PIN рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред
- рдЕрдЧрд░ Meet рдзреАрд░реЗ рдЬрд╡рд╛рдм рджреЗрддрд╛ рд╣реИ рдпрд╛ рдХреЙрд▓ рдЯреНрд░рд╛рдВрд╕рдХреНрд░рд┐рдкреНрдЯ рдЕрдм рднреА рдкреНрд░реА-рдХрдиреЗрдХреНрдЯ DTMF рднреЗрдЬреЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж PIN рдорд╛рдВрдЧрдиреЗ рд╡рд╛рд▓рд╛ рдкреНрд░реЙрдореНрдкреНрдЯ рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рддреЛ
voiceCall.dtmfDelayMsрдХреЛ 12-рд╕реЗрдХрдВрдб рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗ рдмрдврд╝рд╛рдПрдВред - рдЕрдЧрд░ рдкреНрд░рддрд┐рднрд╛рдЧреА рдЬреБрдбрд╝ рдЬрд╛рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЕрднрд┐рд╡рд╛рджрди рд╕реБрдирд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛, рддреЛ рдкреЛрд╕реНрдЯ-DTMF
voicecall.speakрдЕрдиреБрд░реЛрдз рдФрд░ media-stream TTS рдкреНрд▓реЗрдмреИрдХ рдпрд╛ TwilioOPENCLAW_DOCS_MARKER:calloutOpen:U2F5fallback рдХреЗ рд▓рд┐рдПopenclaw logs --followрдЬрд╛рдВрдЪреЗрдВред рдЕрдЧрд░ рдХреЙрд▓ рдЯреНрд░рд╛рдВрд╕рдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЕрдм рднреА "enter the meeting PIN" рд╣реИ, рддреЛ рдлреЛрди рд▓реЗрдЧ рдЕрднреА Meet рд░реВрдо рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореАрдЯрд┐рдВрдЧ рдкреНрд░рддрд┐рднрд╛рдЧреА рднрд╛рд╖рдг рдирд╣реАрдВ рд╕реБрдиреЗрдВрдЧреЗред
рдЕрдЧрд░ webhooks рдирд╣реАрдВ рдЖрддреЗ, рддреЛ рдкрд╣рд▓реЗ Voice Call plugin рдХреЛ debug рдХрд░реЗрдВ: рдкреНрд░рджрд╛рддрд╛ рдХреЛ plugins.entries.voice-call.config.publicUrl рдпрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рдЯрдирд▓ рддрдХ рдкрд╣реБрдВрдЪрдирд╛ рдЪрд╛рд╣рд┐рдПред Voice call рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг рджреЗрдЦреЗрдВред
рдиреЛрдЯреНрд╕
Google Meet рдХрд╛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдореАрдбрд┐рдпрд╛ API receive-oriented рд╣реИ, рдЗрд╕рд▓рд┐рдП Meet рдХреЙрд▓ рдореЗрдВ рдмреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдм рднреА рдПрдХ рдкреНрд░рддрд┐рднрд╛рдЧреА рдкрде рдЪрд╛рд╣рд┐рдПред рдпрд╣ plugin рдЙрд╕ рд╕реАрдорд╛ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░рдЦрддрд╛ рд╣реИ: Chrome рдмреНрд░рд╛рдЙрдЬрд╝рд░ рднрд╛рдЧреАрджрд╛рд░реА рдФрд░ рд╕реНрдерд╛рдиреАрдп рдСрдбрд┐рдпреЛ рд░реВрдЯрд┐рдВрдЧ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ; Twilio рдлреЛрди рдбрд╛рдпрд▓-рдЗрди рднрд╛рдЧреАрджрд╛рд░реА рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред
Chrome talk-back рдореЛрдб рдХреЗ рд▓рд┐рдП BlackHole 2ch рдФрд░ рдЗрдирдореЗрдВ рд╕реЗ рдПрдХ рдЪрд╛рд╣рд┐рдП:
chrome.audioInputCommandрдФрд░chrome.audioOutputCommand: OpenClaw рдмреНрд░рд┐рдЬ рдХрд╛ рд╕реНрд╡рд╛рдореА рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЙрди commands рдФрд░ рдЪрдпрдирд┐рдд рдкреНрд░рджрд╛рддрд╛ рдХреЗ рдмреАрдЪchrome.audioFormatрдореЗрдВ рдСрдбрд┐рдпреЛ рдкрд╛рдЗрдк рдХрд░рддрд╛ рд╣реИред рдПрдЬреЗрдВрдЯ рдореЛрдб рд░реАрдпрд▓рдЯрд╛рдЗрдо transcription рдФрд░ рдирд┐рдпрдорд┐рдд TTS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ; bidi рдореЛрдб рд░реАрдпрд▓рдЯрд╛рдЗрдо voice рдкреНрд░рджрд╛рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ Chrome рдкрдеchrome.audioBufferBytes: 4096рдХреЗ рд╕рд╛рде 24 kHz PCM16 рд╣реИ; 8 kHz G.711 mu-law legacy command pairs рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд░рд╣рддрд╛ рд╣реИредchrome.audioBridgeCommand: рдПрдХ рдмрд╛рд╣рд░реА рдмреНрд░рд┐рдЬ command рдкреВрд░реЗ рд╕реНрдерд╛рдиреАрдп рдСрдбрд┐рдпреЛ рдкрде рдХрд╛ рд╕реНрд╡рд╛рдореА рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЕрдкрдиреЗ daemon рдХреЛ рд╢реБрд░реВ рдпрд╛ validate рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж exit рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдХреЗрд╡рд▓bidiрдХреЗ рд▓рд┐рдП valid рд╣реИ рдХреНрдпреЛрдВрдХрд┐agentрдореЛрдб рдХреЛ TTS рдХреЗ рд▓рд┐рдП direct command-pair access рдЪрд╛рд╣рд┐рдПред
рдЬрдм рдХреЛрдИ рдПрдЬреЗрдВрдЯ agent рдореЛрдб рдореЗрдВ google_meet tool рдХреЛ call рдХрд░рддрд╛ рд╣реИ, рддреЛ meeting consultant session participant speech рдХрд╛ рдЙрддреНрддрд░ рджреЗрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ caller рдХреЗ current transcript рдХреЛ fork рдХрд░рддрд╛ рд╣реИред Meet session рдлрд┐рд░ рднреА рдЕрд▓рдЧ рд░рд╣рддрд╛ рд╣реИ (agent:<agentId>:subagent:google-meet:<sessionId>) рддрд╛рдХрд┐ meeting follow-ups caller transcript рдХреЛ рд╕реАрдзреЗ mutate рди рдХрд░реЗрдВред
рд╕реНрд╡рдЪреНрдЫ duplex audio рдХреЗ рд▓рд┐рдП, Meet output рдФрд░ Meet microphone рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ virtual devices рдпрд╛ Loopback-style virtual device graph рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ route рдХрд░реЗрдВред рдПрдХ single shared BlackHole device рджреВрд╕рд░реЗ participants рдХреЛ рд╡рд╛рдкрд╕ call рдореЗрдВ echo рдХрд░ рд╕рдХрддрд╛ рд╣реИред
command-pair Chrome bridge рдХреЗ рд╕рд╛рде, chrome.bargeInInputCommand рдПрдХ рдЕрд▓рдЧ local microphone рдХреЛ рд╕реБрди рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЬрдм human рдмреЛрд▓рдирд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ рддреЛ assistant playback clear рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд╕реЗ human speech assistant output рд╕реЗ рдЖрдЧреЗ рд░рд╣рддреА рд╣реИ, рднрд▓реЗ рд╣реА shared BlackHole loopback input assistant playback рдХреЗ рджреМрд░рд╛рди рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ suppressed рд╣реЛред chrome.audioInputCommand рдФрд░ chrome.audioOutputCommand рдХреА рддрд░рд╣, рдпрд╣ operator-configured local command рд╣реИред рдПрдХ explicit trusted command path рдпрд╛ argument list рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдФрд░ рдЗрд╕реЗ untrusted locations рдХреА scripts рдкрд░ point рди рдХрд░реЗрдВред
googlemeet speak Chrome session рдХреЗ рд▓рд┐рдП active talk-back audio bridge trigger рдХрд░рддрд╛ рд╣реИред googlemeet leave рдЙрд╕ bridge рдХреЛ рд░реЛрдХрддрд╛ рд╣реИред Voice Call plugin рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ delegated Twilio sessions рдХреЗ рд▓рд┐рдП, leave underlying voice call рдХреЛ рднреА hang up рдХрд░рддрд╛ рд╣реИред рдЬрдм рдЖрдк API-managed space рдХреЗ рд▓рд┐рдП active Google Meet conference рдХреЛ рднреА close рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реЛрдВ, рддреЛ googlemeet end-active-conference рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред