58 KiB
| read_when | summary | title | x-i18n | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Google Meet Plugin: neem deel aan expliciete Meet-URL's via Chrome of Twilio met standaardinstellingen voor realtime spraak | Google Meet-Plugin |
|
Google Meet-deelnemersondersteuning voor OpenClaw — de plugin is bewust expliciet ontworpen:
- Deze sluit alleen aan bij een expliciete
https://meet.google.com/...-URL. - Deze kan via de Google Meet API een nieuwe Meet-ruimte maken en daarna aansluiten bij de geretourneerde URL.
realtime-spraak is de standaardmodus.- Realtime-spraak kan terugroepen naar de volledige OpenClaw-agent wanneer diepere redenering of tools nodig zijn.
- Agents kiezen het aansluitgedrag met
mode: gebruikrealtimevoor live luisteren/terugpraten, oftranscribeom aan te sluiten/de browser te bedienen zonder de realtime-spraakbrug. - Auth begint als persoonlijke Google OAuth of een Chrome-profiel dat al is aangemeld.
- Er is geen automatische toestemmingsaankondiging.
- De standaard Chrome-audiobackend is
BlackHole 2ch. - Chrome kan lokaal of op een gekoppelde node-host draaien.
- Twilio accepteert een inbelnummer plus optionele pincode of DTMF-reeks.
- De CLI-opdracht is
googlemeet;meetis gereserveerd voor bredere teleconferentieworkflows van agents.
Snelstart
Installeer de lokale audioafhankelijkheden en configureer een backendprovider voor realtime-spraak.
OpenAI is de standaard; Google Gemini Live werkt ook met
realtime.provider: "google":
brew install blackhole-2ch sox
export OPENAI_API_KEY=sk-...
# or
export GEMINI_API_KEY=...
blackhole-2ch installeert het virtuele audioapparaat BlackHole 2ch. De installer van Homebrew
vereist een herstart voordat macOS het apparaat beschikbaar maakt:
sudo reboot
Controleer na de herstart beide onderdelen:
system_profiler SPAudioDataType | grep -i BlackHole
command -v sox
Schakel de plugin in:
{
plugins: {
entries: {
"google-meet": {
enabled: true,
config: {},
},
},
},
}
Controleer de setup:
openclaw googlemeet setup
De setup-uitvoer is bedoeld om leesbaar te zijn voor agents en bewust te zijn van de modus. Deze rapporteert het Chrome-
profiel, node-pinning en, voor realtime Chrome-aansluitingen, de BlackHole/SoX-audio-
brug en vertraagde realtime-introcontroles. Controleer voor alleen observerende aansluitingen hetzelfde
transport met --mode transcribe; die modus slaat realtime-audiovoorwaarden over
omdat deze niet via de brug luistert of spreekt:
openclaw googlemeet setup --transport chrome-node --mode transcribe
Wanneer Twilio-delegatie is geconfigureerd, rapporteert setup ook of de
voice-call-plugin, Twilio-referenties en publieke Webhook-blootstelling gereed zijn.
Behandel elke ok: false-controle als een blokkade voor het gecontroleerde transport en de gecontroleerde modus
voordat je een agent vraagt aan te sluiten. Gebruik openclaw googlemeet setup --json voor
scripts of machineleesbare uitvoer. Gebruik --transport chrome,
--transport chrome-node of --transport twilio om een specifiek
transport vooraf te controleren voordat een agent het probeert.
Voor Twilio moet je het transport altijd expliciet vooraf controleren wanneer het standaardtransport Chrome is:
openclaw googlemeet setup --transport twilio
Dat vangt ontbrekende voice-call-bedrading, Twilio-referenties of onbereikbare
Webhook-blootstelling op voordat de agent de vergadering probeert te bellen.
Sluit aan bij een vergadering:
openclaw googlemeet join https://meet.google.com/abc-defg-hij
Of laat een agent aansluiten via de google_meet-tool:
{
"action": "join",
"url": "https://meet.google.com/abc-defg-hij",
"transport": "chrome-node",
"mode": "realtime"
}
Maak een nieuwe vergadering en sluit erbij aan:
openclaw googlemeet create --transport chrome-node --mode realtime
Maak alleen de URL zonder aan te sluiten:
openclaw googlemeet create --no-join
googlemeet create heeft twee paden:
- API-aanmaak: gebruikt wanneer Google Meet OAuth-referenties zijn geconfigureerd. Dit is het meest deterministische pad en is niet afhankelijk van de UI-status van de browser.
- Browser-fallback: gebruikt wanneer OAuth-referenties ontbreken. OpenClaw gebruikt de
vastgezette Chrome-node, opent
https://meet.google.com/new, wacht tot Google omleidt naar een echte URL met vergadercode en retourneert daarna die URL. Dit pad vereist dat het OpenClaw Chrome-profiel op de node al is aangemeld bij Google. Browserautomatisering handelt Meets eigen eerste microfoonprompt af; die prompt wordt niet behandeld als een mislukte Google-login. Aansluit- en aanmaakflows proberen ook een bestaand Meet-tabblad opnieuw te gebruiken voordat er een nieuw wordt geopend. Matching negeert onschuldige querystrings in URL's zoalsauthuser, zodat een nieuwe poging van een agent de al geopende vergadering zou moeten focussen in plaats van een tweede Chrome-tabblad te maken.
De opdracht-/tooluitvoer bevat een source-veld (api of browser), zodat agents
kunnen uitleggen welk pad is gebruikt. create sluit standaard aan bij de nieuwe vergadering en
retourneert joined: true plus de aansluitsessie. Gebruik
create --no-join in de CLI of geef "join": false door aan de tool om alleen de URL te maken.
Of vertel een agent: "Maak een Google Meet, sluit erbij aan met realtime-spraak en stuur
mij de link." De agent moet google_meet aanroepen met action: "create" en
daarna de geretourneerde meetingUri delen.
{
"action": "create",
"transport": "chrome-node",
"mode": "realtime"
}
Voor een alleen observerende/browserbedieningsaansluiting stel je "mode": "transcribe" in. Dat start
de duplex realtime-modelbrug niet, vereist geen BlackHole of SoX,
en praat niet terug in de vergadering. Chrome-aansluitingen in deze modus vermijden ook
OpenClaw's toekenning van microfoon-/cameratoestemming en vermijden het Meet-pad Microfoon gebruiken.
Als Meet een tussenvenster voor audiokeuze toont, probeert de automatisering
het pad zonder microfoon en rapporteert anders een handmatige actie in plaats van
de lokale microfoon te openen.
Tijdens realtime-sessies bevat de google_meet-status de gezondheid van de browser en audiobrug,
zoals inCall, manualActionRequired, providerConnected,
realtimeReady, audioInputActive, audioOutputActive, laatste invoer-/uitvoer-
tijdstempels, byte-tellers en gesloten status van de brug. Als er een veilige Meet-paginaprompt
verschijnt, handelt browserautomatisering die af wanneer dat kan. Login, hosttoelating en
browser-/OS-toestemmingsprompts worden gerapporteerd als handmatige actie met een reden en
bericht dat de agent kan doorgeven. Beheerde Chrome-sessies geven de intro of
testzin pas uit nadat browsergezondheid inCall: true rapporteert; anders rapporteert de status
speechReady: false en wordt de spreekpoging geblokkeerd in plaats van te doen alsof de
agent in de vergadering heeft gesproken.
Lokale Chrome-aansluitingen verlopen via het aangemelde OpenClaw-browserprofiel. Realtime-modus
vereist BlackHole 2ch voor het microfoon-/speakerpad dat door OpenClaw wordt gebruikt. Gebruik voor
schone duplex-audio afzonderlijke virtuele apparaten of een Loopback-achtige grafiek; een
enkel BlackHole-apparaat is genoeg voor een eerste smoketest, maar kan echo veroorzaken.
Lokale Gateway + Parallels Chrome
Je hebt geen volledige OpenClaw Gateway of model-API-sleutel nodig in een macOS-VM alleen om de VM eigenaar van Chrome te maken. Draai de Gateway en agent lokaal en draai daarna een node-host in de VM. Schakel de gebundelde plugin één keer in op de VM, zodat de node de Chrome-opdracht adverteert:
Wat waar draait:
- Gateway-host: OpenClaw Gateway, agentwerkruimte, model-/API-sleutels, realtime- provider en de Google Meet-pluginconfiguratie.
- Parallels macOS-VM: OpenClaw CLI/node-host, Google Chrome, SoX, BlackHole 2ch, en een Chrome-profiel dat bij Google is aangemeld.
- Niet nodig in de VM: Gateway-service, agentconfiguratie, OpenAI/GPT-sleutel of setup van de modelprovider.
Installeer de VM-afhankelijkheden:
brew install blackhole-2ch sox
Herstart de VM na het installeren van BlackHole, zodat macOS BlackHole 2ch beschikbaar maakt:
sudo reboot
Controleer na de herstart of de VM het audioapparaat en de SoX-opdrachten kan zien:
system_profiler SPAudioDataType | grep -i BlackHole
command -v sox
Installeer of werk OpenClaw bij in de VM en schakel daarna de gebundelde plugin daar in:
openclaw plugins enable google-meet
Start de node-host in de VM:
openclaw node run --host <gateway-host> --port 18789 --display-name parallels-macos
Als <gateway-host> een LAN-IP is en je geen TLS gebruikt, weigert de node de
platte WebSocket tenzij je daar expliciet voor kiest voor dat vertrouwde privénetwerk:
OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1 \
openclaw node run --host <gateway-lan-ip> --port 18789 --display-name parallels-macos
Gebruik dezelfde omgevingsvariabele wanneer je de node als LaunchAgent installeert:
OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1 \
openclaw node install --host <gateway-lan-ip> --port 18789 --display-name parallels-macos --force
openclaw node restart
OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1 is procesomgeving, geen
openclaw.json-instelling. openclaw node install slaat deze op in de LaunchAgent-
omgeving wanneer deze aanwezig is op de installatieopdracht.
Keur de node goed vanaf de Gateway-host:
openclaw devices list
openclaw devices approve <requestId>
Bevestig dat de Gateway de node ziet en dat deze zowel googlemeet.chrome
als browsermogelijkheid/browser.proxy adverteert:
openclaw nodes status
Routeer Meet via die node op de Gateway-host:
{
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",
},
},
},
},
},
}
Sluit nu normaal aan vanaf de Gateway-host:
openclaw googlemeet join https://meet.google.com/abc-defg-hij
of vraag de agent om de google_meet-tool te gebruiken met transport: "chrome-node".
Voor een smoketest met één opdracht die een sessie maakt of hergebruikt, een bekende zin uitspreekt en sessiegezondheid afdrukt:
openclaw googlemeet test-speech https://meet.google.com/abc-defg-hij
Tijdens realtime-aansluiting vult OpenClaw-browserautomatisering de gastnaam in, klikt op
Deelnemen/Vragen om deel te nemen en accepteert Meets eerste keuze "Microfoon gebruiken" wanneer die
prompt verschijnt. Tijdens alleen observerend aansluiten of alleen-browser-vergaderaanmaak gaat deze
voorbij dezelfde prompt zonder microfoon wanneer die keuze beschikbaar is.
Als het browserprofiel niet is aangemeld, Meet wacht op hosttoelating,
Chrome microfoon-/cameratoestemming nodig heeft voor een realtime-aansluiting, of Meet vastzit
op een prompt die automatisering niet kon oplossen, rapporteert het join-/test-speech-resultaat
manualActionRequired: true met manualActionReason en
manualActionMessage. Agents moeten stoppen met opnieuw proberen aan te sluiten, dat exacte
bericht plus de huidige browserUrl/browserTitle rapporteren, en pas opnieuw proberen nadat de
handmatige browseractie is voltooid.
Als chromeNode.node is weggelaten, selecteert OpenClaw alleen automatisch wanneer precies één
verbonden node zowel googlemeet.chrome als browserbediening adverteert. Als
er meerdere geschikte nodes zijn verbonden, stel dan chromeNode.node in op de node-id,
weergavenaam of externe IP.
Veelvoorkomende foutcontroles:
Configured Google Meet node ... is not usable: offline: de vastgezette node is bekend bij de Gateway maar niet beschikbaar. Agents moeten die node behandelen als diagnostische status, niet als een bruikbare Chrome-host, en de installatieblokkade melden in plaats van terug te vallen op een ander transport, tenzij de gebruiker daarom heeft gevraagd.No connected Google Meet-capable node: startopenclaw node runin de VM, keur het koppelen goed en zorg datopenclaw plugins enable google-meetenopenclaw plugins enable browserin de VM zijn uitgevoerd. Bevestig ook dat de Gateway-host beide node-opdrachten toestaat metgateway.nodes.allowCommands: ["googlemeet.chrome", "browser.proxy"].BlackHole 2ch audio device not found: installeerblackhole-2chop de host die wordt gecontroleerd en herstart voordat je lokale Chrome-audio gebruikt.BlackHole 2ch audio device not found on the node: installeerblackhole-2chin de VM en herstart de VM.- Chrome opent maar kan niet deelnemen: log in op het browserprofiel binnen de VM,
of laat
chrome.guestNameingesteld voor deelnemen als gast. Automatisch deelnemen als gast gebruikt OpenClaw-browserautomatisering via de node-browserproxy; zorg dat de node-browserconfiguratie verwijst naar het gewenste profiel, bijvoorbeeldbrowser.defaultProfile: "user"of een benoemd profiel voor een bestaande sessie. - Dubbele Meet-tabbladen: laat
chrome.reuseExistingTab: trueingeschakeld. OpenClaw activeert een bestaand tabblad voor dezelfde Meet-URL voordat een nieuw wordt geopend, en het maken van browservergaderingen hergebruikt een lopendhttps://meet.google.com/newof Google-accountprompttabblad voordat een ander wordt geopend. - Geen audio: routeer in Meet microfoon-/luidsprekeraudio via het virtuele audioapparaatpad dat OpenClaw gebruikt; gebruik afzonderlijke virtuele apparaten of Loopback-achtige routing voor schone duplexaudio.
Installatieopmerkingen
De realtime-standaard voor Chrome gebruikt twee externe tools:
sox: opdrachtregel-audiohulpprogramma. De Plugin gebruikt expliciete CoreAudio- apparaatopdrachten voor de standaard 24 kHz PCM16-audiobrug.blackhole-2ch: virtuele audiodriver voor macOS. Deze maakt hetBlackHole 2ch- audioapparaat dat Chrome/Meet kan routeren.
OpenClaw bundelt of herdistribueert geen van beide pakketten. De documentatie vraagt gebruikers
om ze via Homebrew als hostafhankelijkheden te installeren. SoX heeft de licentie
LGPL-2.0-only AND GPL-2.0-only; BlackHole is GPL-3.0. Als je een
installatieprogramma of appliance bouwt die BlackHole met OpenClaw bundelt, controleer dan de
upstream licentievoorwaarden van BlackHole of verkrijg een afzonderlijke licentie van Existential Audio.
Transporten
Chrome
Chrome-transport opent de Meet-URL via OpenClaw-browserbesturing en neemt deel
als het ingelogde OpenClaw-browserprofiel. Op macOS controleert de Plugin voor
het starten op BlackHole 2ch. Indien geconfigureerd, voert deze ook een audiobrug-
gezondheidsopdracht en opstartopdracht uit voordat Chrome wordt geopend. Gebruik chrome wanneer
Chrome/audio op de Gateway-host draaien; gebruik chrome-node wanneer Chrome/audio draaien
op een gekoppelde node zoals een Parallels macOS-VM. Kies voor lokale Chrome het
profiel met browser.defaultProfile; chrome.browserProfile wordt doorgegeven aan
chrome-node-hosts.
openclaw googlemeet join https://meet.google.com/abc-defg-hij --transport chrome
openclaw googlemeet join https://meet.google.com/abc-defg-hij --transport chrome-node
Routeer Chrome-microfoon- en luidsprekeraudio via de lokale OpenClaw-audiobrug.
Als BlackHole 2ch niet is geïnstalleerd, mislukt het deelnemen met een installatiefout
in plaats van stilzwijgend deel te nemen zonder audiopad.
Twilio
Twilio-transport is een strikt belplan dat is gedelegeerd aan de Voice Call-plugin. Het parseert Meet-pagina's niet voor telefoonnummers.
Gebruik dit wanneer Chrome-deelname niet beschikbaar is of wanneer je een fallback voor telefonisch inbellen wilt. Google Meet moet een telefoonnummer en pincode voor inbellen beschikbaar maken voor de vergadering; OpenClaw ontdekt die niet via de Meet-pagina.
Schakel de Voice Call-plugin in op de Gateway-host, niet op de Chrome-node:
{
plugins: {
allow: ["google-meet", "voice-call"],
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",
},
},
},
},
}
Geef Twilio-referenties op via omgeving of configuratie. De omgeving houdt
geheimen buiten openclaw.json:
export TWILIO_ACCOUNT_SID=AC...
export TWILIO_AUTH_TOKEN=...
export TWILIO_FROM_NUMBER=+15550001234
Herstart of herlaad de Gateway nadat voice-call is ingeschakeld; wijzigingen in Plugin-configuratie
verschijnen niet in een al draaiend Gateway-proces totdat dit herlaadt.
Controleer daarna:
openclaw config validate
openclaw plugins list | grep -E 'google-meet|voice-call'
openclaw googlemeet setup
Wanneer Twilio-delegatie is gekoppeld, bevat googlemeet setup geslaagde
controles voor twilio-voice-call-plugin, twilio-voice-call-credentials en
twilio-voice-call-webhook.
openclaw googlemeet join https://meet.google.com/abc-defg-hij \
--transport twilio \
--dial-in-number +15551234567 \
--pin 123456
Gebruik --dtmf-sequence wanneer de vergadering een aangepaste reeks nodig heeft:
openclaw googlemeet join https://meet.google.com/abc-defg-hij \
--transport twilio \
--dial-in-number +15551234567 \
--dtmf-sequence ww123456#
OAuth en preflight
OAuth is optioneel voor het maken van een Meet-link, omdat googlemeet create kan terugvallen
op browserautomatisering. Configureer OAuth wanneer je officiële API-creatie,
space-resolutie of Meet Media API-preflightcontroles wilt.
Google Meet API-toegang gebruikt gebruikers-OAuth: maak een Google Cloud OAuth-client,
vraag de vereiste scopes aan, autoriseer een Google-account en sla daarna de
resulterende refresh token op in de Google Meet-pluginconfiguratie of geef de
OPENCLAW_GOOGLE_MEET_*-omgevingsvariabelen op.
OAuth vervangt het Chrome-deelnamepad niet. Chrome- en Chrome-node-transporten nemen nog steeds deel via een ingelogd Chrome-profiel, BlackHole/SoX en een verbonden node wanneer je browserdeelname gebruikt. OAuth is alleen voor het officiële Google Meet API-pad: vergaderruimten maken, spaces oplossen en Meet Media API- preflightcontroles uitvoeren.
Google-referenties maken
In Google Cloud Console:
-
Maak of selecteer een Google Cloud-project.
-
Schakel Google Meet REST API in voor dat project.
-
Configureer het OAuth-toestemmingsscherm.
- Internal is het eenvoudigst voor een Google Workspace-organisatie.
- External werkt voor persoonlijke/testopstellingen; terwijl de app in Testing is, voeg je elk Google-account dat de app zal autoriseren toe als testgebruiker.
-
Voeg de scopes toe die OpenClaw aanvraagt:
https://www.googleapis.com/auth/meetings.space.createdhttps://www.googleapis.com/auth/meetings.space.readonlyhttps://www.googleapis.com/auth/meetings.conference.media.readonly
-
Maak een OAuth-client-ID.
-
Applicatietype: Web application.
-
Geautoriseerde redirect-URI:
http://localhost:8085/oauth2callback
-
-
Kopieer de client-ID en het clientgeheim.
meetings.space.created is vereist door Google Meet spaces.create.
meetings.space.readonly laat OpenClaw Meet-URL's/codes omzetten naar spaces.
meetings.conference.media.readonly is voor Meet Media API-preflight en mediawerk;
Google kan Developer Preview-inschrijving vereisen voor daadwerkelijk gebruik van de Media API.
Als je alleen browsergebaseerde Chrome-deelname nodig hebt, sla OAuth dan volledig over.
De refresh token aanmaken
Configureer oauth.clientId en optioneel oauth.clientSecret, of geef ze door als
omgevingsvariabelen, en voer daarna uit:
openclaw googlemeet auth login --json
De opdracht drukt een oauth-configuratieblok af met een refresh token. Deze gebruikt PKCE,
localhost-callback op http://localhost:8085/oauth2callback en een handmatige
kopieer-/plakstroom met --manual.
Voorbeelden:
OPENCLAW_GOOGLE_MEET_CLIENT_ID="your-client-id" \
OPENCLAW_GOOGLE_MEET_CLIENT_SECRET="your-client-secret" \
openclaw googlemeet auth login --json
Gebruik handmatige modus wanneer de browser de lokale callback niet kan bereiken:
OPENCLAW_GOOGLE_MEET_CLIENT_ID="your-client-id" \
OPENCLAW_GOOGLE_MEET_CLIENT_SECRET="your-client-secret" \
openclaw googlemeet auth login --json --manual
De JSON-uitvoer bevat:
{
"oauth": {
"clientId": "your-client-id",
"clientSecret": "your-client-secret",
"refreshToken": "refresh-token",
"accessToken": "access-token",
"expiresAt": 1770000000000
},
"scope": "..."
}
Sla het oauth-object op onder de Google Meet-pluginconfiguratie:
{
plugins: {
entries: {
"google-meet": {
enabled: true,
config: {
oauth: {
clientId: "your-client-id",
clientSecret: "your-client-secret",
refreshToken: "refresh-token",
},
},
},
},
},
}
Geef de voorkeur aan omgevingsvariabelen wanneer je de refresh token niet in configuratie wilt. Als zowel configuratie- als omgevingswaarden aanwezig zijn, gebruikt de Plugin eerst de configuratie en daarna de omgevingsfallback.
De OAuth-toestemming omvat het maken van Meet-spaces, leestoegang tot Meet-spaces en
leestoegang tot Meet-conferentiemedia. Als je bent geauthenticeerd voordat ondersteuning
voor het maken van vergaderingen bestond, voer dan openclaw googlemeet auth login --json
opnieuw uit zodat de refresh token de scope meetings.space.created heeft.
OAuth verifiëren met doctor
Voer de OAuth-doctor uit wanneer je een snelle gezondheidscontrole zonder geheimen wilt:
openclaw googlemeet doctor --oauth --json
Dit laadt de Chrome-runtime niet en vereist geen verbonden Chrome-node. Het
controleert of OAuth-configuratie bestaat en of de refresh token een access token kan
aanmaken. Het JSON-rapport bevat alleen statusvelden zoals ok, configured,
tokenSource, expiresAt en controleberichten; het drukt de access token,
refresh token of clientgeheim niet af.
Veelvoorkomende resultaten:
| Controle | Betekenis |
|---|---|
oauth-config |
oauth.clientId plus oauth.refreshToken, of een gecachte access token, is aanwezig. |
oauth-token |
De gecachte access token is nog geldig, of de refresh token heeft een nieuwe access token aangemaakt. |
meet-spaces-get |
Optionele --meeting-controle heeft een bestaande Meet-space opgelost. |
meet-spaces-create |
Optionele --create-space-controle heeft een nieuwe Meet-space gemaakt. |
Om ook Google Meet API-inschakeling en de spaces.create-scope te bewijzen, voer je de
controle met bijwerking voor maken uit:
openclaw googlemeet doctor --oauth --create-space --json
openclaw googlemeet create --no-join --json
--create-space maakt een wegwerp-Meet-URL. Gebruik dit wanneer je moet bevestigen
dat het Google Cloud-project de Meet API heeft ingeschakeld en dat het geautoriseerde
account de scope meetings.space.created heeft.
Om leestoegang voor een bestaande vergaderruimte te bewijzen:
openclaw googlemeet doctor --oauth --meeting https://meet.google.com/abc-defg-hij --json
openclaw googlemeet resolve-space --meeting https://meet.google.com/abc-defg-hij
doctor --oauth --meeting en resolve-space bewijzen leestoegang tot een bestaande
space waartoe het geautoriseerde Google-account toegang heeft. Een 403 van deze controles
betekent meestal dat de Google Meet REST API is uitgeschakeld, dat de goedgekeurde refresh token
de vereiste scope mist, of dat het Google-account geen toegang heeft tot die Meet-
space. Een refresh-tokenfout betekent dat je openclaw googlemeet auth login --json opnieuw moet uitvoeren en het nieuwe oauth-blok moet opslaan.
Er zijn geen OAuth-referenties nodig voor de browserfallback. In die modus komt Google- authenticatie van het ingelogde Chrome-profiel op de geselecteerde node, niet van OpenClaw-configuratie.
Deze omgevingsvariabelen worden als fallbacks geaccepteerd:
OPENCLAW_GOOGLE_MEET_CLIENT_IDofGOOGLE_MEET_CLIENT_IDOPENCLAW_GOOGLE_MEET_CLIENT_SECRETofGOOGLE_MEET_CLIENT_SECRETOPENCLAW_GOOGLE_MEET_REFRESH_TOKENofGOOGLE_MEET_REFRESH_TOKENOPENCLAW_GOOGLE_MEET_ACCESS_TOKENofGOOGLE_MEET_ACCESS_TOKENOPENCLAW_GOOGLE_MEET_ACCESS_TOKEN_EXPIRES_ATofGOOGLE_MEET_ACCESS_TOKEN_EXPIRES_ATOPENCLAW_GOOGLE_MEET_DEFAULT_MEETINGofGOOGLE_MEET_DEFAULT_MEETINGOPENCLAW_GOOGLE_MEET_PREVIEW_ACKofGOOGLE_MEET_PREVIEW_ACK
Los een Meet-URL, code of spaces/{id} op via spaces.get:
openclaw googlemeet resolve-space --meeting https://meet.google.com/abc-defg-hij
Voer preflight uit vóór mediawerk:
openclaw googlemeet preflight --meeting https://meet.google.com/abc-defg-hij
Geef vergaderingsartefacten en aanwezigheid weer nadat Meet conferentierecords heeft gemaakt:
openclaw googlemeet artifacts --meeting https://meet.google.com/abc-defg-hij
openclaw googlemeet attendance --meeting https://meet.google.com/abc-defg-hij
openclaw googlemeet export --meeting https://meet.google.com/abc-defg-hij --output ./meet-export
Met --meeting gebruiken artifacts en attendance standaard het nieuwste
conferentierecord. Geef --all-conference-records door wanneer je elk bewaard
record voor die vergadering wilt.
Agendaopzoeking kan de vergaderings-URL uit Google Calendar oplossen voordat Meet-artefacten worden gelezen:
openclaw googlemeet latest --today
openclaw googlemeet calendar-events --today --json
openclaw googlemeet artifacts --event "Weekly sync"
openclaw googlemeet attendance --today --format csv --output attendance.csv
--today doorzoekt de primary-agenda van vandaag naar een Calendar-gebeurtenis met een
Google Meet-link. Gebruik --event <query> om overeenkomende gebeurtenistekst te zoeken, en
--calendar <id> voor een niet-primaire agenda. Agendaopzoeking vereist een nieuwe
OAuth-login die het alleen-lezen bereik voor Calendar-gebeurtenissen bevat.
calendar-events toont een voorbeeld van de overeenkomende Meet-gebeurtenissen en markeert de gebeurtenis die
latest, artifacts, attendance of export kiest.
Als je de conferentierecord-id al kent, spreek die dan direct aan:
openclaw googlemeet latest --meeting https://meet.google.com/abc-defg-hij
openclaw googlemeet artifacts --conference-record conferenceRecords/abc123 --json
openclaw googlemeet attendance --conference-record conferenceRecords/abc123 --json
Schrijf een leesbaar rapport:
openclaw googlemeet artifacts --conference-record conferenceRecords/abc123 \
--format markdown --output meet-artifacts.md
openclaw googlemeet attendance --conference-record conferenceRecords/abc123 \
--format markdown --output meet-attendance.md
openclaw googlemeet attendance --conference-record conferenceRecords/abc123 \
--format csv --output meet-attendance.csv
openclaw googlemeet export --conference-record conferenceRecords/abc123 \
--include-doc-bodies --zip --output meet-export
openclaw googlemeet export --conference-record conferenceRecords/abc123 \
--include-doc-bodies --dry-run
artifacts retourneert metagegevens van conferentierecords plus metagegevens van deelnemers,
opnamen, transcripties, gestructureerde transcriptie-items en smart-note-resources wanneer
Google die voor de vergadering beschikbaar stelt. Gebruik --no-transcript-entries om
itemopzoeking voor grote vergaderingen over te slaan. attendance breidt deelnemers uit naar
deelnemer-sessierijen met tijden voor eerste/laatste waarneming, totale sessieduur,
markeringen voor te laat/vroeg verlaten, en dubbele deelnemerresources samengevoegd op basis van ingelogde
gebruiker of weergavenaam. Geef --no-merge-duplicates door om ruwe deelnemerresources
gescheiden te houden, --late-after-minutes om te-laat-detectie af te stemmen, en
--early-before-minutes om detectie van vroeg verlaten af te stemmen.
export schrijft een map met summary.md, attendance.csv,
transcript.md, artifacts.json, attendance.json en manifest.json.
manifest.json registreert de gekozen invoer, exportopties, conferentierecords,
uitvoerbestanden, aantallen, tokenbron, Calendar-gebeurtenis wanneer die is gebruikt, en eventuele
waarschuwingen over gedeeltelijke ophaling. Geef --zip door om ook een draagbaar archief naast
de map te schrijven. Geef --include-doc-bodies door om gekoppelde transcriptie- en
smart-note-Google Docs-tekst te exporteren via Google Drive files.export; hiervoor is een
nieuwe OAuth-login vereist die het alleen-lezen bereik voor Drive Meet bevat. Zonder
--include-doc-bodies bevatten exports alleen Meet-metagegevens en gestructureerde transcriptie-items.
Als Google een gedeeltelijke artefactfout retourneert, zoals een smart-note-
listing, transcriptie-item- of Drive-documenttekstfout, bewaren de samenvatting en
het manifest de waarschuwing in plaats van de hele export te laten mislukken.
Gebruik --dry-run om dezelfde artefact-/aanwezigheidsgegevens op te halen en de
manifest-JSON af te drukken zonder de map of ZIP te maken. Dat is nuttig voordat je
een grote export schrijft of wanneer een agent alleen aantallen, geselecteerde records en
waarschuwingen nodig heeft.
Agents kunnen dezelfde bundel ook maken via de google_meet-tool:
{
"action": "export",
"conferenceRecord": "conferenceRecords/abc123",
"includeDocumentBodies": true,
"outputDir": "meet-export",
"zip": true
}
Stel "dryRun": true in om alleen het exportmanifest te retourneren en bestandswrites over te slaan.
Voer de bewaakte live smoke uit tegen een echte bewaarde vergadering:
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
Live smoke-omgeving:
OPENCLAW_LIVE_TEST=1schakelt bewaakte live tests in.OPENCLAW_GOOGLE_MEET_LIVE_MEETINGwijst naar een bewaarde Meet-URL, code ofspaces/{id}.OPENCLAW_GOOGLE_MEET_CLIENT_IDofGOOGLE_MEET_CLIENT_IDlevert de OAuth- client-id.OPENCLAW_GOOGLE_MEET_REFRESH_TOKENofGOOGLE_MEET_REFRESH_TOKENlevert het refresh-token.- Optioneel:
OPENCLAW_GOOGLE_MEET_CLIENT_SECRET,OPENCLAW_GOOGLE_MEET_ACCESS_TOKENenOPENCLAW_GOOGLE_MEET_ACCESS_TOKEN_EXPIRES_ATgebruiken dezelfde fallbacknamen zonder het voorvoegselOPENCLAW_.
De basis-live smoke voor artefacten/aanwezigheid heeft
https://www.googleapis.com/auth/meetings.space.readonly en
https://www.googleapis.com/auth/meetings.conference.media.readonly nodig. Agendaopzoeking
heeft https://www.googleapis.com/auth/calendar.events.readonly nodig. Drive-
export van documenttekst heeft
https://www.googleapis.com/auth/drive.meet.readonly nodig.
Maak een nieuwe Meet-ruimte:
openclaw googlemeet create
De opdracht drukt de nieuwe meeting uri, bron en deelsessie af. Met OAuth-
referenties gebruikt deze de officiële Google Meet-API. Zonder OAuth-referenties
gebruikt deze als fallback het ingelogde browserprofiel van de vastgepinde Chrome-Node. Agents kunnen
de google_meet-tool gebruiken met action: "create" om in één stap te maken en deel te nemen.
Geef voor alleen URL-aanmaak "join": false door.
Voorbeeld van JSON-uitvoer van de browserfallback:
{
"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"
}
}
}
Als de browserfallback een Google-login of Meet-machtigingsblokkade tegenkomt voordat deze
de URL kan maken, retourneert de Gateway-methode een mislukte respons en retourneert de
google_meet-tool gestructureerde details in plaats van een platte tekenreeks:
{
"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"
}
}
Wanneer een agent manualActionRequired: true ziet, moet die de
manualActionMessage plus de browser-Node-/tabcontext melden en stoppen met het openen van nieuwe
Meet-tabs totdat de operator de browserstap voltooit.
Voorbeeld van JSON-uitvoer van API-aanmaak:
{
"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"
}
}
}
Een Meet maken neemt standaard deel aan de vergadering. Het Chrome- of Chrome-Node-transport heeft nog steeds
een ingelogd Google Chrome-profiel nodig om via de browser deel te nemen. Als het
profiel is uitgelogd, meldt OpenClaw manualActionRequired: true of een
browserfallbackfout en vraagt het de operator om de Google-login te voltooien voordat
opnieuw wordt geprobeerd.
Stel preview.enrollmentAcknowledged: true alleen in nadat je hebt bevestigd dat je Cloud-
project, OAuth-principal en vergaderingsdeelnemers zijn ingeschreven in het Google
Workspace Developer Preview Program voor Meet-media-API's.
Configuratie
Het algemene realtime Chrome-pad heeft alleen de ingeschakelde Plugin, BlackHole, SoX
en een realtime spraakproviderkey voor de backend nodig. OpenAI is de standaard; stel
realtime.provider: "google" in om Google Gemini Live te gebruiken:
brew install blackhole-2ch sox
export OPENAI_API_KEY=sk-...
# or
export GEMINI_API_KEY=...
Stel de Plugin-configuratie in onder plugins.entries.google-meet.config:
{
plugins: {
entries: {
"google-meet": {
enabled: true,
config: {},
},
},
},
}
Standaarden:
defaultTransport: "chrome"defaultMode: "realtime"chromeNode.node: optionele Node-id/naam/IP voorchrome-nodechrome.audioBackend: "blackhole-2ch"chrome.guestName: "OpenClaw Agent": naam die wordt gebruikt op het Meet-gastscherm wanneer niet is ingelogdchrome.autoJoin: true: best-effort invullen van gastnaam en klikken op Nu deelnemen via OpenClaw-browserautomatisering opchrome-nodechrome.reuseExistingTab: true: activeer een bestaande Meet-tab in plaats van duplicaten te openenchrome.waitForInCallMs: 20000: wacht tot de Meet-tab meldt dat deze in gesprek is voordat de realtime intro wordt geactiveerdchrome.audioFormat: "pcm16-24khz": audioformaat voor opdrachtparen. Gebruik"g711-ulaw-8khz"alleen voor verouderde/aangepaste opdrachtparen die nog steeds telefonieaudio uitsturen.chrome.audioInputCommand: SoX-opdracht die leest uit CoreAudioBlackHole 2chen audio schrijft inchrome.audioFormatchrome.audioOutputCommand: SoX-opdracht die audio leest inchrome.audioFormaten schrijft naar CoreAudioBlackHole 2chchrome.bargeInInputCommand: optionele lokale microfoonopdracht die signed 16-bit little-endian mono PCM schrijft voor detectie van menselijke onderbreking terwijl afspelen door de assistent actief is. Dit geldt momenteel voor de door Gateway gehostechrome-opdrachtpaarbridge.chrome.bargeInRmsThreshold: 650: RMS-niveau dat telt als een menselijke onderbreking opchrome.bargeInInputCommandchrome.bargeInPeakThreshold: 2500: piekniveau dat telt als een menselijke onderbreking opchrome.bargeInInputCommandchrome.bargeInCooldownMs: 900: minimale vertraging tussen herhaalde resets van menselijke onderbrekingenrealtime.provider: "openai"realtime.toolPolicy: "safe-read-only"realtime.instructions: korte gesproken antwoorden, metopenclaw_agent_consultvoor diepere antwoordenrealtime.introMessage: korte gesproken gereedheidscontrole wanneer de realtime bridge verbinding maakt; stel deze in op""om stil deel te nemenrealtime.agentId: optionele OpenClaw-agent-id vooropenclaw_agent_consult; standaard ismain
Optionele overrides:
{
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",
},
realtime: {
provider: "google",
agentId: "jay",
toolPolicy: "owner",
introMessage: "Say exactly: I'm here.",
providers: {
google: {
model: "gemini-2.5-flash-native-audio-preview-12-2025",
voice: "Kore",
},
},
},
}
Configuratie alleen voor Twilio:
{
defaultTransport: "twilio",
twilio: {
defaultDialInNumber: "+15551234567",
defaultPin: "123456",
},
voiceCall: {
gatewayUrl: "ws://127.0.0.1:18789",
},
}
voiceCall.enabled is standaard true; met Twilio-transport delegeert het de
daadwerkelijke PSTN-oproep, DTMF en introductiebegroeting aan de Voice Call Plugin. Voice Call
speelt de DTMF-reeks af voordat de realtime-mediastream wordt geopend en gebruikt daarna de
opgeslagen introductietekst als de eerste realtime-begroeting. Als voice-call niet is
ingeschakeld, kan Google Meet het kiesplan nog steeds valideren en vastleggen, maar het kan
de Twilio-oproep niet plaatsen.
Hulpmiddel
Agents kunnen de google_meet-tool gebruiken:
{
"action": "join",
"url": "https://meet.google.com/abc-defg-hij",
"transport": "chrome-node",
"mode": "realtime"
}
Gebruik transport: "chrome" wanneer Chrome op de Gateway-host draait. Gebruik
transport: "chrome-node" wanneer Chrome op een gekoppelde Node draait, zoals een Parallels
VM. In beide gevallen draaien het realtime-model en openclaw_agent_consult op de
Gateway-host, zodat modelreferenties daar blijven.
Gebruik action: "status" om actieve sessies te tonen of een sessie-ID te inspecteren. Gebruik
action: "speak" met sessionId en message om de realtime-agent onmiddellijk te laten
spreken. Gebruik action: "test_speech" om de sessie te maken of opnieuw te gebruiken,
een bekende zin te triggeren en inCall-gezondheid terug te geven wanneer de Chrome-host die kan
rapporteren. test_speech forceert altijd mode: "realtime" en mislukt als gevraagd wordt om
in mode: "transcribe" te draaien, omdat observe-only-sessies bewust geen spraak kunnen
uitzenden. Het resultaat speechOutputVerified is gebaseerd op realtime-audio-uitvoerbytes
die tijdens deze testoproep toenemen, dus een hergebruikte sessie met oudere audio telt niet
als een nieuwe geslaagde spraakcontrole. Gebruik action: "leave" om een sessie als beëindigd
te markeren.
status bevat Chrome-gezondheid wanneer beschikbaar:
inCall: Chrome lijkt zich in de Meet-oproep te bevindenmicMuted: best-effort Meet-microfoonstatusmanualActionRequired/manualActionReason/manualActionMessage: het browserprofiel heeft handmatige login, toelating door de Meet-host, machtigingen of herstel van browserbesturing nodig voordat spraak kan werkenspeechReady/speechBlockedReason/speechBlockedMessage: of beheerde Chrome-spraak nu is toegestaan.speechReady: falsebetekent dat OpenClaw de introductie-/testzin niet naar de audiobrug heeft gestuurd.providerConnected/realtimeReady: status van de realtime-spraakbruglastInputAt/lastOutputAt: laatste audio die van de brug is gezien of naar de brug is gestuurdlastSuppressedInputAt/suppressedInputBytes: loopback-invoer genegeerd terwijl afspelen door de assistent actief is
{
"action": "speak",
"sessionId": "meet_...",
"message": "Say exactly: I'm here and listening."
}
Realtime-agentconsult
Chrome realtime-modus is geoptimaliseerd voor een live spraaklus. De realtime-spraakprovider
hoort de audio van de vergadering en spreekt via de geconfigureerde audiobrug.
Wanneer het realtime-model diepere redenering, actuele informatie of normale
OpenClaw-tools nodig heeft, kan het openclaw_agent_consult aanroepen.
De consulttool draait de reguliere OpenClaw-agent achter de schermen met recente vergaderingstranscriptcontext en geeft een beknopt gesproken antwoord terug aan de realtime- spraaksessie. Het spraakmodel kan dat antwoord daarna terug de vergadering in spreken. Het gebruikt dezelfde gedeelde realtime-consulttool als Voice Call.
Standaard draaien consults tegen de main-agent. Stel realtime.agentId in wanneer een
Meet-lane een dedicated OpenClaw-agentworkspace, modelstandaarden,
toolbeleid, geheugen en sessiegeschiedenis moet raadplegen.
realtime.toolPolicy bepaalt de consult-run:
safe-read-only: stel de consulttool beschikbaar en beperk de reguliere agent totread,web_search,web_fetch,x_search,memory_searchenmemory_get.owner: stel de consulttool beschikbaar en laat de reguliere agent het normale agenttoolbeleid gebruiken.none: stel de consulttool niet beschikbaar aan het realtime-spraakmodel.
De consultsessiesleutel is per Meet-sessie gescoped, zodat vervolgconsultaanroepen eerdere consultcontext tijdens dezelfde vergadering kunnen hergebruiken.
Om een gesproken gereedheidscontrole te forceren nadat Chrome volledig aan de oproep heeft deelgenomen:
openclaw googlemeet speak meet_... "Say exactly: I'm here and listening."
Voor de volledige join-and-speak-smoke:
openclaw googlemeet test-speech https://meet.google.com/abc-defg-hij \
--transport chrome-node \
--message "Say exactly: I'm here and listening."
Live-testchecklist
Gebruik deze reeks voordat je een vergadering aan een onbeheerde agent overdraagt:
openclaw googlemeet setup
openclaw nodes status
openclaw googlemeet test-speech https://meet.google.com/abc-defg-hij \
--transport chrome-node \
--message "Say exactly: Google Meet speech test complete."
Verwachte Chrome-node-status:
googlemeet setupis volledig groen.googlemeet setupbevatchrome-node-connectedwanneer Chrome-node het standaardtransport is of een Node is vastgezet.nodes statustoont dat de geselecteerde Node is verbonden.- De geselecteerde Node adverteert zowel
googlemeet.chromealsbrowser.proxy. - Het Meet-tabblad neemt deel aan de oproep en
test-speechgeeft Chrome-gezondheid terug metinCall: true.
Voor een externe Chrome-host zoals een Parallels macOS VM is dit de kortste veilige controle na het bijwerken van de Gateway of de VM:
openclaw googlemeet setup
openclaw nodes status --connected
openclaw nodes invoke \
--node parallels-macos \
--command googlemeet.chrome \
--params '{"action":"setup"}'
Dat bewijst dat de Gateway-Plugin is geladen, dat de VM-Node is verbonden met het huidige token en dat de Meet-audiobrug beschikbaar is voordat een agent een echt vergaderingstabblad opent.
Voor een Twilio-smoke gebruik je een vergadering die telefonische inbelgegevens toont:
openclaw googlemeet setup
openclaw googlemeet join https://meet.google.com/abc-defg-hij \
--transport twilio \
--dial-in-number +15551234567 \
--pin 123456
Verwachte Twilio-status:
googlemeet setupbevat groene controles voortwilio-voice-call-plugin,twilio-voice-call-credentialsentwilio-voice-call-webhook.voicecallis beschikbaar in de CLI na het herladen van de Gateway.- De geretourneerde sessie heeft
transport: "twilio"en eentwilio.voiceCallId. openclaw logs --followtoont dat DTMF TwiML wordt geserveerd vóór realtime TwiML, daarna een realtime-brug met de initiële begroeting in de wachtrij.googlemeet leave <sessionId>hangt de gedelegeerde spraakoproep op.
Probleemoplossing
Agent kan de Google Meet-tool niet zien
Controleer of de Plugin is ingeschakeld in de Gateway-configuratie en herlaad de Gateway:
openclaw plugins list | grep google-meet
openclaw googlemeet setup
Als je net plugins.entries.google-meet hebt bewerkt, herstart of herlaad dan de Gateway.
De draaiende agent ziet alleen Plugin-tools die door het huidige Gateway-proces
zijn geregistreerd.
Geen verbonden Google Meet-geschikte Node
Voer op de Node-host uit:
openclaw plugins enable google-meet
openclaw plugins enable browser
OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1 \
openclaw node run --host <gateway-lan-ip> --port 18789 --display-name parallels-macos
Keur op de Gateway-host de Node goed en verifieer opdrachten:
openclaw devices list
openclaw devices approve <requestId>
openclaw nodes status
De Node moet verbonden zijn en googlemeet.chrome plus browser.proxy tonen.
De Gateway-configuratie moet die Node-opdrachten toestaan:
{
gateway: {
nodes: {
allowCommands: ["browser.proxy", "googlemeet.chrome"],
},
},
}
Als googlemeet setup faalt op chrome-node-connected of het Gateway-log
gateway token mismatch rapporteert, installeer of herstart de Node dan opnieuw met het huidige Gateway-
token. Voor een LAN-Gateway betekent dit meestal:
OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1 \
openclaw node install \
--host <gateway-lan-ip> \
--port 18789 \
--display-name parallels-macos \
--force
Herlaad daarna de Node-service en voer opnieuw uit:
openclaw googlemeet setup
openclaw nodes status --connected
Browser opent maar agent kan niet deelnemen
Voer googlemeet test-speech uit en inspecteer de geretourneerde Chrome-gezondheid. Als die
manualActionRequired: true rapporteert, toon dan manualActionMessage aan de operator
en stop met opnieuw proberen totdat de browseractie is voltooid.
Veelvoorkomende handmatige acties:
- Log in op het Chrome-profiel.
- Laat de gast toe vanuit het Meet-hostaccount.
- Verleen Chrome-microfoon-/cameramachtigingen wanneer de native toestemmingsprompt van Chrome verschijnt.
- Sluit of herstel een vastgelopen Meet-machtigingsdialoog.
Rapporteer niet "not signed in" alleen omdat Meet "Do you want people to hear you in the meeting?" toont. Dat is Meet's audio-keuze-interstitial; OpenClaw klikt Use microphone via browserautomatisering wanneer beschikbaar en blijft wachten op de echte vergaderingstatus. Voor create-only browserfallback kan OpenClaw Continue without microphone klikken omdat het maken van de URL het realtime-audiopad niet nodig heeft.
Vergadering maken mislukt
googlemeet create gebruikt eerst het Google Meet API-eindpunt spaces.create
wanneer OAuth-referenties zijn geconfigureerd. Zonder OAuth-referenties valt het terug
op de vastgezette Chrome-node-browser. Controleer:
- Voor API-aanmaak:
oauth.clientIdenoauth.refreshTokenzijn geconfigureerd, of overeenkomendeOPENCLAW_GOOGLE_MEET_*-omgevingsvariabelen zijn aanwezig. - Voor API-aanmaak: het refresh-token is uitgegeven nadat ondersteuning voor maken is
toegevoegd. Oudere tokens kunnen de scope
meetings.space.createdmissen; voeropenclaw googlemeet auth login --jsonopnieuw uit en werk de Plugin-configuratie bij. - Voor browserfallback:
defaultTransport: "chrome-node"enchromeNode.nodewijzen naar een verbonden Node metbrowser.proxyengooglemeet.chrome. - Voor browserfallback: het OpenClaw Chrome-profiel op die Node is aangemeld
bij Google en kan
https://meet.google.com/newopenen. - Voor browserfallback: nieuwe pogingen hergebruiken een bestaand tabblad voor
https://meet.google.com/newof een Google-accountprompt voordat een nieuw tabblad wordt geopend. Als een agent time-out, probeer de toolaanroep opnieuw in plaats van handmatig een ander Meet-tabblad te openen. - Voor browserfallback: als de tool
manualActionRequired: trueretourneert, gebruik dan de geretourneerdebrowser.nodeId,browser.targetId,browserUrlenmanualActionMessageom de operator te begeleiden. Probeer niet in een lus opnieuw totdat die actie is voltooid. - Voor browserfallback: als Meet "Do you want people to hear you in the
meeting?" toont, laat het tabblad open. OpenClaw moet Use microphone klikken of, voor
create-only fallback, Continue without microphone via browser-
automatisering en blijven wachten op de gegenereerde Meet-URL. Als dat niet lukt, moet de
fout
meet-audio-choice-requirednoemen, nietgoogle-login-required.
Agent neemt deel maar praat niet
Controleer het realtime-pad:
openclaw googlemeet setup
openclaw googlemeet doctor
Gebruik mode: "realtime" voor luisteren/terugpraten. mode: "transcribe" start bewust niet de duplex realtime-spraakbridge. googlemeet test-speech controleert altijd het realtime-pad en meldt of er bij die aanroep bridge-uitvoerbytes zijn waargenomen. Als speechOutputVerified false is en speechOutputTimedOut true is, heeft de realtime-provider de uiting mogelijk geaccepteerd, maar zag OpenClaw geen nieuwe uitvoerbytes de Chrome-audiobridge bereiken.
Controleer ook:
- Er is een realtime-providerkey beschikbaar op de Gateway-host, zoals
OPENAI_API_KEYofGEMINI_API_KEY. BlackHole 2chis zichtbaar op de Chrome-host.soxbestaat op de Chrome-host.- De Meet-microfoon en -speaker worden gerouteerd via het virtuele audiopad dat door OpenClaw wordt gebruikt.
googlemeet doctor [session-id] toont de sessie, node, gespreksstatus,
reden voor handmatige actie, realtime-providerverbinding, realtimeReady, audio-
invoer-/uitvoeractiviteit, laatste audiotijdstempels, bytetellers en browser-URL.
Gebruik googlemeet status [session-id] --json wanneer je de onbewerkte JSON nodig hebt. Gebruik
googlemeet doctor --oauth wanneer je Google Meet OAuth-verversing wilt verifiëren
zonder tokens bloot te leggen; voeg --meeting of --create-space toe wanneer je ook
Google Meet API-bewijs nodig hebt.
Als een agent een time-out kreeg en je ziet dat er al een Meet-tabblad open is, inspecteer dat tabblad zonder een ander tabblad te openen:
openclaw googlemeet recover-tab
openclaw googlemeet recover-tab https://meet.google.com/abc-defg-hij
De equivalente toolactie is recover_current_tab. Deze focust en inspecteert een
bestaand Meet-tabblad voor het geselecteerde transport. Met chrome gebruikt deze lokale
browserbesturing via de Gateway; met chrome-node gebruikt deze de geconfigureerde
Chrome-node. Deze opent geen nieuw tabblad en maakt geen nieuwe sessie aan; hij meldt de
huidige blokkade, zoals login, toelating, machtigingen of audio-keuzestatus.
De CLI-opdracht praat met de geconfigureerde Gateway, dus de Gateway moet actief zijn;
chrome-node vereist ook dat de Chrome-node verbonden is.
Twilio-installatiecontroles mislukken
twilio-voice-call-plugin mislukt wanneer voice-call niet is toegestaan of niet is ingeschakeld.
Voeg dit toe aan plugins.allow, schakel plugins.entries.voice-call in en herlaad de
Gateway.
twilio-voice-call-credentials mislukt wanneer de Twilio-backend account-
SID, auth-token of beller-nummer mist. Stel deze in op de Gateway-host:
export TWILIO_ACCOUNT_SID=AC...
export TWILIO_AUTH_TOKEN=...
export TWILIO_FROM_NUMBER=+15550001234
twilio-voice-call-webhook mislukt wanneer voice-call geen publieke Webhook-
blootstelling heeft, of wanneer publicUrl naar loopback- of privénetwerkruimte wijst.
Stel plugins.entries.voice-call.config.publicUrl in op de publieke provider-URL of
configureer een voice-call-tunnel-/Tailscale-blootstelling.
Loopback- en privé-URL's zijn niet geldig voor carrier-callbacks. Gebruik
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 of fd00::/8 niet als publicUrl.
Voor een stabiele publieke URL:
{
plugins: {
entries: {
"voice-call": {
enabled: true,
config: {
provider: "twilio",
fromNumber: "+15550001234",
publicUrl: "https://voice.example.com/voice/webhook",
},
},
},
},
}
Gebruik voor lokale ontwikkeling een tunnel- of Tailscale-blootstelling in plaats van een privé host-URL:
{
plugins: {
entries: {
"voice-call": {
config: {
tunnel: { provider: "ngrok" },
// or
tailscale: { mode: "funnel", path: "/voice/webhook" },
},
},
},
},
}
Herstart of herlaad daarna de Gateway en voer uit:
openclaw googlemeet setup --transport twilio
openclaw voicecall setup
openclaw voicecall smoke
voicecall smoke controleert standaard alleen gereedheid. Om een specifiek nummer proef te draaien:
openclaw voicecall smoke --to "+15555550123"
Voeg --yes alleen toe wanneer je bewust een live uitgaand meldingsgesprek wilt plaatsen:
openclaw voicecall smoke --to "+15555550123" --yes
Twilio-gesprek start maar komt nooit de vergadering binnen
Bevestig dat de Meet-gebeurtenis telefonische inbelgegevens blootlegt. Geef het exacte inbel- nummer en de pincode of een aangepaste DTMF-reeks door:
openclaw googlemeet join https://meet.google.com/abc-defg-hij \
--transport twilio \
--dial-in-number +15551234567 \
--dtmf-sequence ww123456#
Gebruik voorafgaande w of komma's in --dtmf-sequence als de provider een pauze nodig heeft
voordat de pincode wordt ingevoerd.
Als het telefoongesprek wordt aangemaakt maar de Meet-deelnemerslijst de inbel- deelnemer nooit toont:
- Voer
openclaw voicecall status --call-id <id>uit en bevestig dat het gesprek nog actief is. - Voer
openclaw voicecall tailuit en controleer of Twilio-webhooks bij de Gateway aankomen. - Voer
openclaw logs --followuit en zoek naar de Twilio Meet-reeks: Google Meet delegeert het deelnemen, Voice Call slaat pre-connect DTMF TwiML op, serveert die initiële TwiML, serveert daarna realtime TwiML en start de realtime-bridge metinitialGreeting=queued. - Voer
openclaw googlemeet setup --transport twilioopnieuw uit; een groene installatiecontrole is vereist, maar bewijst niet dat de pincode-reeks voor de vergadering correct is. - Bevestig dat het inbelnummer bij dezelfde Meet-uitnodiging en regio hoort als de pincode.
- Vergroot de voorafgaande pauzes in
--dtmf-sequenceals Meet langzaam opneemt, bijvoorbeeldwwww123456#. - Als de deelnemer binnenkomt maar je de begroeting niet hoort, controleer
openclaw logs --followop realtime TwiML, start van de realtime-bridge eninitialGreeting=queued. De begroeting wordt gegenereerd uit het initiëlevoicecall.start-bericht nadat de realtime-bridge verbinding maakt.
Als Webhooks niet aankomen, debug dan eerst de Voice Call-plugin: de provider moet
plugins.entries.voice-call.config.publicUrl of de geconfigureerde tunnel kunnen bereiken.
Zie Probleemoplossing voor spraakoproepen.
Opmerkingen
De officiële media-API van Google Meet is gericht op ontvangen, dus spreken in een Meet- gesprek vereist nog steeds een deelnemerspad. Deze Plugin houdt die grens zichtbaar: Chrome behandelt browserdeelname en lokale audiorouting; Twilio behandelt telefonische inbeldeelname.
Chrome-realtime-modus heeft BlackHole 2ch nodig plus een van de volgende opties:
chrome.audioInputCommandpluschrome.audioOutputCommand: OpenClaw beheert de realtime-modelbridge en pipet audio inchrome.audioFormattussen die opdrachten en de geselecteerde realtime-spraakprovider. Het standaard Chrome-pad is 24 kHz PCM16; 8 kHz G.711 mu-law blijft beschikbaar voor verouderde opdrachtparen.chrome.audioBridgeCommand: een externe bridge-opdracht beheert het volledige lokale audiopad en moet afsluiten nadat de daemon is gestart of gevalideerd.
Routeer voor schone duplex-audio Meet-uitvoer en Meet-microfoon via afzonderlijke virtuele apparaten of een Loopback-achtige grafiek van virtuele apparaten. Een enkel gedeeld BlackHole-apparaat kan andere deelnemers terug het gesprek in echoën.
Met de Chrome-bridge met opdrachtpaar kan chrome.bargeInInputCommand luisteren naar een
afzonderlijke lokale microfoon en de assistentweergave wissen wanneer de mens begint
te praten. Dit houdt menselijke spraak vóór assistentuitvoer, zelfs wanneer de gedeelde
BlackHole-loopbackinvoer tijdelijk wordt onderdrukt tijdens assistentweergave.
Net als chrome.audioInputCommand en chrome.audioOutputCommand is het een
door de operator geconfigureerde lokale opdracht. Gebruik een expliciet vertrouwd opdrachtpad of
argumentenlijst, en wijs deze niet naar scripts op niet-vertrouwde locaties.
googlemeet speak activeert de actieve realtime-audiobridge voor een Chrome-
sessie. googlemeet leave stopt die bridge. Voor Twilio-sessies die via de
Voice Call-plugin zijn gedelegeerd, beëindigt leave ook het onderliggende spraakgesprek.