google-meet neemt namens een OpenClaw-agent deel via expliciete Meet-URL’s. De functie is bewust beperkt:
- De Plugin neemt alleen deel via
https://meet.google.com/...-URL’s; de Plugin belt nooit in bij een vergadering via een telefoonnummer dat de Plugin zelf vindt. googlemeet createkan via de Google Meet-API (of een browserfallback) een nieuwe Meet-URL genereren en neemt er standaard aan deel.- Voor deelname via Chrome wordt een aangemeld Chrome-profiel gebruikt, eventueel op een gekoppelde Node. Voor deelname via Twilio wordt via de Plugin voor spraakoproepen een telefoonnummer plus pincode/DTMF gebeld; hiermee kan niet rechtstreeks naar een Meet-URL worden gebeld.
mode: "agent"(standaard) transcribeert de spraak van deelnemers met een realtimeprovider, stuurt deze naar de geconfigureerde OpenClaw-agent en spreekt het antwoord uit met de reguliere OpenClaw-TTS. Metmode: "bidi"kan een realtime spraakmodel rechtstreeks antwoorden. Metmode: "transcribe"wordt alleen als waarnemer deelgenomen, zonder terugspraak.- Er wordt niet automatisch een toestemmingsmelding afgespeeld wanneer de Plugin aan een gesprek deelneemt.
- De CLI-opdracht is
googlemeet;meetis gereserveerd voor bredere workflows voor telefonische vergaderingen van agents.
Snel aan de slag
Installeer de Plugin en de lokale audioafhankelijkheden en stel vervolgens een sleutel voor een realtimeprovider in. OpenAI is de standaardprovider voor transcriptie in de modusagent; Google Gemini Live is beschikbaar als spraakprovider voor de modus bidi:
blackhole-2ch installeert het virtuele audioapparaat BlackHole 2ch waar Chrome audio doorheen stuurt. Het installatieprogramma van Homebrew vereist een herstart voordat macOS het apparaat beschikbaar stelt:
openclaw plugins disable google-meet uit als je de Plugin niet actief wilt hebben.
Controleer de configuratie en neem vervolgens deel:
setup is leesbaar voor agents en houdt rekening met de modus en het transport: de uitvoer vermeldt het Chrome-profiel, de vastgezette Node en, voor realtime deelname via Chrome, de BlackHole/SoX-audiobrug en de controle voor de vertraagde introductie. Bij deelname alleen als waarnemer worden realtimevereisten overgeslagen:
setup ook of voice-call, de Twilio-inloggegevens en de openbare beschikbaarheid van de Webhook gereed zijn. Beschouw elke controle met ok: false als een blokkade voor die combinatie van transport en modus voordat een agent deelneemt. Gebruik --json voor machineleesbare uitvoer en --transport chrome|chrome-node|twilio om een specifiek transport vooraf te controleren:
google_meet:
google_meet zichtbaar voor acties voor artefacten, agenda’s, configuratie, transcriptie, Twilio en chrome-node, maar lokale terugspraak via Chrome (transport: "chrome" met mode: "agent" of "bidi") wordt geblokkeerd voordat de audiobrug wordt bereikt, omdat dat pad momenteel afhankelijk is van BlackHole 2ch van macOS. Gebruik in plaats daarvan mode: "transcribe", inbellen via Twilio of een macOS-host met chrome-node.
Een vergadering maken
create heeft twee paden, die worden vermeld in het veld source van het resultaat:
api: wordt gebruikt wanneer OAuth-inloggegevens voor Google Meet zijn geconfigureerd. Deterministisch; niet afhankelijk van de status van de browserinterface.browser: wordt gebruikt zonder OAuth-inloggegevens. OpenClaw openthttps://meet.google.com/newop de vastgezette Chrome-Node en wacht totdat Google doorstuurt naar een echte URL met een vergaderingscode; het OpenClaw Chrome-profiel op die Node moet al bij Google zijn aangemeld. Zowel deelnemen als maken hergebruiken een bestaand Meet-tabblad (of een tabblad met een lopende.../new- of Google-accountprompt) voordat een nieuw tabblad wordt geopend; bij het vergelijken van tabbladen worden onschuldige queryreeksen zoalsauthusergenegeerd.
create neemt standaard deel en retourneert joined: true plus de deelnamesessie. Geef --no-join (CLI) of "join": false (tool) door om alleen de URL te genereren.
Stel voor kamers die via de API worden gemaakt een expliciet toegangsbeleid in, in plaats van de standaardinstelling van het Google-account over te nemen:
Dit is alleen van toepassing op kamers die via de API worden gemaakt, dus OAuth moet zijn geconfigureerd. Als je je hebt geauthenticeerd voordat deze optie bestond, voer je
openclaw googlemeet auth login --json opnieuw uit nadat je het bereik meetings.space.settings aan je OAuth-toestemmingsscherm hebt toegevoegd.
Als de browserfallback wordt geblokkeerd door een Google-aanmelding of Meet-machtiging, retourneert de tool manualActionRequired: true met manualActionReason, manualActionMessage en de browser.nodeId/browser.targetId/browserUrl. Meld dat bericht en open geen nieuwe Meet-tabbladen totdat de beheerder de browserstap heeft voltooid.
Alleen als waarnemer deelnemen
Stel"mode": "transcribe" in om de bidirectionele realtimebrug over te slaan (geen BlackHole/SoX vereist en geen terugspraak). Bij deelname via Chrome in de transcriptiemodus worden ook de machtiging voor de microfoon/camera van OpenClaw en het Meet-pad Use microphone overgeslagen; als Meet het tussenscherm voor audiokeuze toont, probeert de automatisering eerst Continue without microphone. Beheerde Chrome-transporten installeren in elke modus naar beste vermogen een waarnemer voor Meet-ondertiteling, zodat duurzame notities beschikbaar zijn zonder het pad voor live raadpleging van de agent te wijzigen. googlemeet status --json en googlemeet doctor melden captioning, captionsEnabledAttempted, transcriptLines, lastCaptionAt, lastCaptionSpeaker, lastCaptionText en een recentTranscript-staart.
Lees voor het begrensde sessietranscript het exact bijgehouden Meet-tabblad:
nextIndex een latere tekstuitbreiding niet kan overslaan; bij het verlaten worden zichtbare regels voltooid voordat de momentopname wordt gemaakt. droppedLines meldt regels die aan het begin verloren zijn gegaan wanneer de limiet wordt overschreden. De begrensde googlemeet transcript-staart bewaart nog steeds alleen de vier laatst beëindigde sessies en wordt opnieuw ingesteld met de Gateway. Daarnaast voegt OpenClaw gedurende de vergadering voltooide ondertitelregels toe aan de gedeelde statusdatabase en schrijft het bij vertrek een afgeleide samenvatting. Gebruik openclaw transcripts om deze duurzame notities te bekijken of te exporteren.
Automatische notities zijn standaard ingeschakeld. Stel transcripts.enabled: false in om
duurzame notities globaal uit te schakelen; de expliciete modus transcribe stelt nog steeds alleen
de begrensde live-staart beschikbaar. Twilio-deelnames hebben geen browserstroom voor ondertiteling en
worden via dit pad niet vastgelegd.
Voor een ja/nee-luistertest:
listenVerified, listenTimedOut, velden voor handmatige acties en de huidige status van de ondertiteling.
Status van de realtimesessie
Tijdens sessies met terugspraak meldt de status vangoogle_meet de status van Chrome/de audiobrug: inCall, manualActionRequired, providerConnected, realtimeReady, audioInputActive, audioOutputActive, tijdstempels van de laatste invoer/uitvoer, bytetellers en de gesloten status van de brug. Beheerde Chrome-sessies spreken de introductie-/testzin pas uit nadat de status inCall: true meldt; anders speechReady: false en wordt de spraakpoging geblokkeerd in plaats van stilzwijgend niets te doen.
Lokale deelname via Chrome verloopt via het aangemelde OpenClaw-browserprofiel en vereist BlackHole 2ch voor het microfoon-/luidsprekerpad. Eén BlackHole-apparaat is voldoende voor een eerste rooktest, maar kan echo veroorzaken; gebruik afzonderlijke virtuele apparaten of een Loopback-achtige graaf voor zuivere bidirectionele audio.
Lokale Gateway + Chrome in Parallels
Een volledige Gateway of API-sleutel voor een model is niet vereist in een macOS-VM als deze alleen Chrome beschikbaar hoeft te stellen. Voer de Gateway en agent lokaal uit; voer een Node-host uit in de VM.
Installeer de VM-afhankelijkheden, start opnieuw op en controleer:
<gateway-host> een LAN-IP-adres zonder TLS is, meld je dan expliciet aan voor dat vertrouwde privénetwerk:
openclaw.json):
googlemeet.chrome als browserfunctionaliteit/browser.proxy aanbiedt:
manualActionRequired: true met manualActionReason en manualActionMessage. Stop met opnieuw proberen, rapporteer dat bericht plus browserUrl/browserTitle en probeer het pas opnieuw nadat de handmatige actie is voltooid.
Als chromeNode.node is weggelaten, selecteert OpenClaw alleen automatisch wanneer precies één verbonden Node zowel googlemeet.chrome als browserbesturing aanbiedt; leg chromeNode.node vast (Node-id, weergavenaam of extern IP-adres) wanneer meerdere geschikte Nodes zijn verbonden.
Controles voor veelvoorkomende fouten
Installatie-opmerkingen
De standaardinstelling voor terugspreken via Chrome gebruikt twee externe tools die OpenClaw niet bundelt of distribueert; installeer ze als hostafhankelijkheden via Homebrew:sox: audiohulpprogramma voor de opdrachtregel. De Plugin geeft expliciete CoreAudio-apparaatopdrachten voor de standaard 24 kHz PCM16-audiobrug.blackhole-2ch: virtueel audiostuurprogramma voor macOS dat hetBlackHole 2ch-apparaat levert waar Chrome/Meet via wordt gerouteerd.
LGPL-2.0-only AND GPL-2.0-only; BlackHole is GPL-3.0. Als je een installatieprogramma of appliance bouwt waarin BlackHole met OpenClaw wordt gebundeld, controleer dan de upstreamlicentie van BlackHole of verkrijg een afzonderlijke licentie van Existential Audio.
Transporten
Chrome
Opent de Meet-URL via OpenClaw-browserbesturing en neemt deel als het aangemelde OpenClaw-browserprofiel. Op macOS controleert de Plugin vóór het starten opBlackHole 2ch en voert deze, indien geconfigureerd, een opdracht voor statuscontrole/het starten van de audiobrug uit voordat Chrome wordt geopend. Kies voor lokale Chrome het profiel met browser.defaultProfile; chrome.browserProfile wordt in plaats daarvan doorgegeven aan chrome-node-hosts.
BlackHole 2ch niet is geïnstalleerd, mislukt deelname met een installatiefout in plaats van zonder audiopad deel te nemen.
Twilio
Een strikt belplan dat is gedelegeerd aan de Voice Call-Plugin. Het parseert Meet-pagina’s niet op telefoonnummers; Google Meet moet een telefonisch inbelnummer en een pincode voor de vergadering beschikbaar stellen. Schakel Voice Call in op de Gateway-host, niet op de Chrome-Node:openclaw.json te houden:
realtime.provider: "openai" met OPENAI_API_KEY als OpenAI de realtime spraakprovider is.
Start of herlaad de Gateway nadat je voice-call hebt ingeschakeld; wijzigingen in de Plugin-configuratie worden pas na herladen van kracht. Controleer:
googlemeet setup controles voor twilio-voice-call-plugin, twilio-voice-call-credentials en twilio-voice-call-webhook.
--dtmf-sequence voor een aangepaste reeks, met vooraan w of komma’s voor een pauze vóór de pincode:
OAuth en preflight
OAuth is optioneel voor het maken van een Meet-link, omdatgooglemeet create kan terugvallen op browserautomatisering. Configureer OAuth voor het maken via de officiële API, ruimteresolutie of preflight van de Meet Media API. Deelnames via Chrome/Chrome-Node zijn nooit afhankelijk van OAuth; ze gebruiken hoe dan ook een aangemeld Chrome-profiel, BlackHole/SoX en (voor chrome-node) een verbonden Node.
Google-referenties maken
In Google Cloud Console:1
Een project maken of selecteren
2
De Google Meet REST API inschakelen
3
Het OAuth-toestemmingsscherm configureren
Internal is het eenvoudigst voor een Google Workspace-organisatie. External werkt voor persoonlijke/testinstallaties; zolang de app zich in Testing bevindt, voeg je elk Google-account dat de app zal autoriseren toe als testgebruiker.
4
De gevraagde bereiken toevoegen
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.readonlyhttps://www.googleapis.com/auth/calendar.events.readonly(agenda opzoeken)https://www.googleapis.com/auth/drive.meet.readonly(export van de hoofdtekst van transcript/slimme notitie)
5
Een OAuth-client-ID maken
Applicatietype Web application. Geautoriseerde omleidings-URI:
6
Het client-ID en clientgeheim kopiëren
meetings.space.created is vereist door spaces.create. meetings.space.readonly zet Meet-URL’s/-codes om naar ruimtes. Met meetings.space.settings kan OpenClaw SpaceConfig-instellingen zoals accessType doorgeven bij het maken van een ruimte via de API. meetings.conference.media.readonly is voor preflight en mediawerk met de Meet Media API; Google kan inschrijving voor Developer Preview vereisen voor daadwerkelijk gebruik van de Media API. calendar.events.readonly is alleen nodig voor het opzoeken in de agenda via --today/--event. drive.meet.readonly is alleen nodig voor --include-doc-bodies-export. Als je alleen via de browser aan Chrome-sessies wilt deelnemen, sla OAuth dan volledig over.
Het vernieuwingstoken aanmaken
Configureeroauth.clientId en optioneel oauth.clientSecret (of geef ze door als omgevingsvariabelen) en voer vervolgens uit:
http://localhost:8085/oauth2callback en drukt een oauth-configuratieblok met een vernieuwingstoken af. Voeg --manual toe voor een kopieer-en-plakflow wanneer de browser de lokale callback niet kan bereiken:
oauth-object op onder de Plugin-configuratie:
openclaw googlemeet auth login --json opnieuw uit zodat het vernieuwingstoken de huidige set bereiken dekt.
OAuth controleren met doctor
ok, configured, tokenSource, expiresAt, controlemeldingen) en geeft nooit de toegangstoken, vernieuwingstoken of het clientgeheim weer.
Toon met de aanmaakcontrole met neveneffecten aan dat de Meet-API is ingeschakeld en het bereik
spaces.create beschikbaar is:
403 bij deze controles betekent meestal dat de Meet REST-API is uitgeschakeld, dat de vernieuwingstoken het vereiste bereik mist of dat het Google-account geen toegang tot die ruimte heeft. Een fout met de vernieuwingstoken betekent dat je openclaw googlemeet auth login --json opnieuw moet uitvoeren en het nieuwe blok oauth moet opslaan.
Voor de browserfallback is geen OAuth nodig; Google-authenticatie is daar afkomstig van het aangemelde Chrome-profiel op de geselecteerde Node, niet van de OpenClaw-configuratie.
Deze omgevingsvariabelen worden als fallback 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
Artefacten vinden, vooraf controleren en lezen
--meeting gebruiken artifacts en attendance standaard het nieuwste conferentierecord; geef --all-conference-records door voor elk bewaard record.
Bij het opzoeken in de agenda wordt de vergaderings-URL eerst via Google Calendar gevonden voordat artefacten worden gelezen (hiervoor is een vernieuwingstoken vereist die het alleen-lezenbereik voor Calendar-gebeurtenissen bevat):
--today doorzoekt de agenda primary van vandaag naar een gebeurtenis met een Meet-link; --event <query> zoekt in overeenkomende gebeurtenistekst; --calendar <id> richt zich op een niet-primaire agenda. calendar-events toont een voorbeeld van overeenkomende gebeurtenissen en markeert welke latest/artifacts/attendance/export zal kiezen.
Als je de id van het conferentierecord al kent, kun je dit rechtstreeks aanspreken:
spaces.endActiveConference aan en vereist OAuth met het bereik meetings.space.created voor een ruimte die het geautoriseerde account kan beheren. Accepteert een Meet-URL, vergaderingscode of spaces/{id} en zet deze eerst om naar de ruimteresource van de API. Dit staat los van googlemeet leave: leave stopt de lokale/sessiedeelname van OpenClaw; end-active-conference vraagt Google Meet de actieve conferentie voor de ruimte te beëindigen.
Schrijf een leesbaar rapport:
artifacts retourneert metagegevens van het conferentierecord plus metagegevens van deelnemer-, opname-, transcript-, gestructureerde transcriptitem- en slimme-notitieresources wanneer Google deze beschikbaar stelt. --no-transcript-entries slaat het opzoeken van items over voor grote vergaderingen. attendance breidt deelnemers uit tot deelnemersessierijen met tijdstippen waarop ze voor het eerst en laatst zijn gezien, de totale sessieduur, markeringen voor te laat komen/vroeg vertrekken en dubbele deelnemersresources die op basis van de aangemelde gebruiker of weergavenaam zijn samengevoegd; --no-merge-duplicates houdt onbewerkte resources gescheiden, --late-after-minutes/--early-before-minutes stellen de drempelwaarden af.
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, eventueel gebruikte Calendar-gebeurtenissen en waarschuwingen over gedeeltelijk ophalen. --zip schrijft ook een overdraagbaar archief naast de map. --include-doc-bodies exporteert de tekst van gekoppelde Google Docs voor transcripties/slimme notities via Drive files.export (hiervoor is het alleen-lezenbereik van Drive Meet vereist); zonder dit bereik bevatten exports alleen Meet-metagegevens en gestructureerde transcriptitems. Bij een gedeeltelijke artefactfout (een fout bij het weergeven van slimme notities, transcriptitems of de documenttekst) blijft de waarschuwing in de samenvatting/het manifest staan in plaats van dat de volledige export mislukt. --dry-run haalt dezelfde gegevens op en geeft de JSON van het manifest weer zonder de map of het ZIP-bestand te maken.
Agents gebruiken dezelfde acties via de tool google_meet (export, create met accessType, end_active_conference, test_listen); zie Tool.
Live-rooktest
Voor de basisrooktest voor artefacten/aanwezigheid zijn
meetings.space.readonly en meetings.conference.media.readonly nodig. Voor opzoeken in de agenda is calendar.events.readonly nodig. Voor het exporteren van documenttekst uit Drive is drive.meet.readonly nodig.
Aanmaakvoorbeelden
google_meet gestructureerde details in plaats van een gewone tekenreeks:
manualActionRequired: true of een browserfallbackfout en vraagt het de beheerder de Google-aanmelding te voltooien voordat deze het opnieuw probeert.
Stel preview.enrollmentAcknowledged: true alleen in nadat je hebt bevestigd dat je Cloud-project, OAuth-principal en deelnemers aan de vergadering zijn ingeschreven voor het Google Workspace Developer Preview Program voor Meet-media-API’s.
Configuratie
Voor het algemene pad van de Chrome-agent hoeven alleen de Plugin, BlackHole, SoX, een sleutel voor een realtimeprovider en een geconfigureerde OpenClaw-TTS-provider te zijn ingeschakeld:Standaardinstellingen
Met
chrome.audioBridgeCommand en chrome.audioBridgeHealthCommand kan een externe bridge het volledige lokale audiopad beheren in plaats van chrome.audioInputCommand/chrome.audioOutputCommand; zie Opmerkingen voor de beperking op de modus waarin ze kunnen worden gebruikt.
Er bestaat een openclaw doctor --fix-migratie voor de verouderde vorm realtime.provider: "google": deze verplaatst die intentie naar realtime.voiceProvider: "google" plus realtime.transcriptionProvider: "openai" wanneer die velden nog niet zijn ingesteld.
Optionele overschrijvingen
tts.providers.elevenlabs.speakerVoiceId. Agentantwoorden kunnen ook [[tts:speakerVoiceId=... model=eleven_v3]]-instructies per antwoord gebruiken wanneer overschrijvingen van het TTS-model zijn ingeschakeld, maar de configuratie is de deterministische standaard voor vergaderingen. Bij deelname tonen de logboeken transcriptionProvider=elevenlabs, en elk gesproken antwoord wordt vastgelegd als provider=elevenlabs model=eleven_v3 speakerVoiceId=<voiceId>.
Configuratie uitsluitend voor Twilio:
voiceCall.enabled: true (de standaard) en Twilio-transport plaatst Voice Call de DTMF-reeks voordat de realtime mediastream wordt geopend en gebruikt vervolgens de opgeslagen introductietekst als eerste realtime begroeting. Als voice-call niet is ingeschakeld, kan Google Meet het belplan nog steeds valideren en vastleggen, maar kan het Twilio-gesprek niet worden geplaatst.
Laat voiceCall.gatewayUrl niet ingesteld om de lokale vertrouwde Gateway-runtime te gebruiken, die de
aanroepende agent gedurende de volledige aanroep behoudt. Een geconfigureerde Gateway-URL blijft een expliciet WebSocket-doel en
kan de herkomst van plugins niet verifiëren; koppelingen met niet-standaardagents worden veilig geweigerd in plaats van stilzwijgend
een andere agent te gebruiken. Voer Google Meet en Voice Call uit in hetzelfde Gateway-proces wanneer routering
per agent vereist is.
Tool
Agents gebruiken de toolgoogle_meet:
test_speech dwingt altijd mode: "agent" of "bidi" af en mislukt als wordt gevraagd om in mode: "transcribe" te worden uitgevoerd, omdat sessies die alleen observeren geen spraak kunnen uitsturen. speechOutputVerified vereist zowel nieuwe realtime-uitvoerbytes als nieuwe, niet-stille audio die tijdens die uitvoer terugkomt via het microfoonopnamepad van de bridge. Oudere uitvoer of een loopbacksignaal van een hergebruikte sessie telt niet mee, en alleen een toename van sink-bytes wordt niet langer als geverifieerde spraak gerapporteerd.
Voor Chrome-transports houdt leave een hergebruikt tabblad van de gebruiker open nadat op de knop voor het verlaten van het Meet-gesprek is geklikt. Tabbladen die door OpenClaw zijn geopend, worden na vertrek gesloten.
Gebruik transport: "chrome" wanneer Chrome op de Gateway-host wordt uitgevoerd en transport: "chrome-node" wanneer het op een gekoppelde Node wordt uitgevoerd. In beide gevallen worden de modelproviders en openclaw_agent_consult op de Gateway-host uitgevoerd, zodat modelreferenties daar blijven. Logboeken in agentmodus bevatten bij het starten van de bridge de vastgestelde transcriptieprovider en het model, en na elk gesynthetiseerd antwoord de TTS-provider, het model, de stem, de uitvoerindeling en de samplefrequentie. Onbewerkte mode: "realtime" wordt nog steeds geaccepteerd als verouderde compatibiliteitsalias voor mode: "agent", maar wordt niet meer vermeld in de mode-enum van de tool.
create met een ruimte die door een API wordt ondersteund en een expliciet toegangsbeleid:
status bevat de Chrome-status wanneer die beschikbaar is:
Agent- en bidi-modi
agent-modus: de realtime-transcriptieprovider hoort de vergaderaudio, definitieve transcripties van deelnemers worden via de geconfigureerde OpenClaw-agent gerouteerd en het antwoord wordt uitgesproken via de normale OpenClaw TTS. Nabijgelegen definitieve transcriptfragmenten worden vóór de raadpleging samengevoegd, zodat één gesproken beurt niet meerdere verouderde gedeeltelijke antwoorden oplevert; realtime-invoer wordt onderdrukt zolang assistentaudio in de wachtrij nog wordt afgespeeld, en recente transcriptie-echo’s die op assistentuitvoer lijken, worden vóór de raadpleging genegeerd, zodat BlackHole-loopback de agent niet op zijn eigen spraak laat antwoorden.
bidi-modus: het realtime-spraakmodel antwoordt rechtstreeks en kan openclaw_agent_consult aanroepen voor diepere redenering, actuele informatie of normale OpenClaw-tools. De raadpleegtool voert achter de schermen de normale OpenClaw-agent uit met recente context uit het vergaderingstranscript en retourneert een beknopt gesproken antwoord; in de agent-modus stuurt OpenClaw dat antwoord rechtstreeks naar TTS, in de bidi-modus kan het realtime-spraakmodel het uitspreken. Hiervoor wordt hetzelfde gedeelde raadpleegmechanisme gebruikt als voor Voice Call.
Standaard worden raadplegingen uitgevoerd voor de agent main; stel realtime.agentId in om een Meet-kanaal naar een specifieke agentwerkruimte, standaardmodellen, toolbeleid, geheugen en sessiegeschiedenis te verwijzen. Raadplegingen in agentmodus gebruiken per vergadering een agent:<id>:subagent:google-meet:<session>-sessiesleutel, zodat vervolgvragen de vergadercontext behouden en tegelijkertijd het normale agentbeleid overnemen. Wanneer een agent in agentmodus google_meet aanroept, vertakt de consultantsessie het huidige transcript van de aanroeper voordat op de spraak van deelnemers wordt geantwoord; de Meet-sessie blijft afzonderlijk, zodat vervolgvragen in de vergadering het transcript van de aanroeper niet rechtstreeks wijzigen.
realtime.toolPolicy bepaalt de raadpleeguitvoering:
De sleutel van de raadpleegsessie heeft per Meet-sessie een eigen bereik, zodat opeenvolgende raadpleegaanroepen eerdere raadpleegcontext binnen dezelfde vergadering hergebruiken.
Dwing een gesproken gereedheidscontrole af nadat Chrome volledig heeft deelgenomen:
Checklist voor livetests
Voordat je een vergadering overdraagt aan een onbeheerde agent:googlemeet setupis volledig groen en bevatchrome-node-connectedwanneer Chrome-node het standaardtransport is of een node is vastgezet.nodes statustoont dat de geselecteerde node verbonden is en zowelgooglemeet.chromealsbrowser.proxyaanbiedt.- Het tabblad Meet neemt deel en
test-speechretourneert de Chrome-status metinCall: true.
googlemeet setupbevat groene controles voortwilio-voice-call-plugin,twilio-voice-call-credentialsentwilio-voice-call-webhook.voicecallis na het herladen van de Gateway beschikbaar in de CLI.- De geretourneerde sessie heeft
transport: "twilio"en eentwilio.voiceCallId. openclaw logs --followtoont dat DTMF-TwiML vóór realtime-TwiML is aangeboden, gevolgd door een realtimebrug met de eerste begroeting in de wachtrij.googlemeet leave <sessionId>beëindigt de gedelegeerde spraakoproep.
Problemen oplossen
Agent kan de Google Meet-tool niet zien
Controleer of de plugin is ingeschakeld en herlaad de Gateway; de actieve agent ziet alleen plugintools die door het huidige Gateway-proces zijn geregistreerd:google_meet zichtbaar, maar lokale Chrome-acties voor terugspreken worden geblokkeerd voordat ze de audiobrug bereiken. Gebruik mode: "transcribe", telefonisch inbellen via Twilio of een macOS-host met chrome-node in plaats van het standaardpad voor de lokale Chrome-agent.
Geen verbonden node met Google Meet-mogelijkheden
Op de nodehost:googlemeet.chrome plus browser.proxy vermelden; de Gateway-configuratie moet beide toestaan:
googlemeet setup niet slaagt voor chrome-node-connected, of het Gateway-logboek gateway token mismatch meldt, installeer de node dan opnieuw of start deze opnieuw met het huidige Gateway-token:
Browser wordt geopend, maar agent kan niet deelnemen
Voergooglemeet test-listen uit voor deelnames waarbij alleen wordt geobserveerd, of googlemeet test-speech voor realtime-deelnames, en controleer vervolgens de geretourneerde Chrome-status. Als een van beide manualActionRequired: true meldt, toon dan manualActionMessage aan de operator en probeer het niet opnieuw totdat de browseractie is voltooid.
Veelvoorkomende handmatige acties: meld je aan bij het Chrome-profiel; laat de gast toe vanuit het Meet-hostaccount; verleen Chrome toestemming voor de microfoon/camera wanneer de systeemeigen prompt verschijnt; sluit of herstel een vastgelopen toestemmingsdialoogvenster van Meet.
Meld niet dat je „niet aangemeld” bent alleen omdat Meet vraagt „Do you want people to hear you in the meeting?”; dat is het tussenscherm van Meet voor de audiokeuze. OpenClaw klikt via browserautomatisering op Use microphone wanneer dat beschikbaar is en blijft wachten op de werkelijke vergaderstatus; voor een browserfallback die alleen een vergadering aanmaakt, kan het in plaats daarvan op Continue without microphone klikken, omdat voor het genereren van de URL het realtime-audiopad niet nodig is.
Vergadering aanmaken mislukt
googlemeet create gebruikt de Meet-API spaces.create wanneer OAuth is geconfigureerd, en anders de browser van de vastgezette Chrome-node. Controleer het volgende:
- Aanmaken via API:
oauth.clientIdenoauth.refreshToken(of overeenkomendeOPENCLAW_GOOGLE_MEET_*-omgevingsvariabelen) zijn aanwezig en het vernieuwingstoken is aangemaakt nadat ondersteuning voor aanmaken werd toegevoegd; oudere tokens beschikken mogelijk niet overmeetings.space.created, dus voeropenclaw googlemeet auth login --jsonopnieuw uit. - Browserfallback:
defaultTransport: "chrome-node"enchromeNode.nodeverwijzen naar een verbonden node metbrowser.proxyengooglemeet.chrome; het OpenClaw Chrome-profiel op die node is aangemeld en kanhttps://meet.google.com/newopenen. - Nieuwe pogingen voor browserfallback: hergebruik een bestaand tabblad met
.../newof een Google-accountprompt voordat je een nieuw tabblad opent; probeer de toolaanroep opnieuw in plaats van handmatig nog een tabblad te openen. - Handmatige actie: als de tool
manualActionRequired: trueretourneert, gebruik danbrowser.nodeId,browser.targetId,browserUrlenmanualActionMessageom de operator te begeleiden; blijf niet in een lus opnieuw proberen. - Tussenscherm voor audiokeuze: als Meet „Do you want people to hear you in the meeting?” toont, laat het tabblad dan open. OpenClaw hoort op Use microphone of (alleen voor aanmaken) Continue without microphone te klikken en te blijven wachten op de gegenereerde URL; als dat niet lukt, moet de foutmelding
meet-audio-choice-requiredvermelden en nietgoogle-login-required.
Agent neemt deel, maar praat niet
mode: "agent" voor het pad STT -> OpenClaw-agent -> TTS en mode: "bidi" voor de directe realtime-spraakfallback. mode: "transcribe" start opzettelijk geen brug voor terugspreken. Voer voor foutopsporing waarbij alleen wordt geobserveerd openclaw googlemeet status --json <session-id> uit nadat deelnemers hebben gesproken en controleer captioning, transcriptLines en lastCaptionText. Als inCall waar is, maar transcriptLines 0 blijft, zijn Meet-ondertitels mogelijk uitgeschakeld, heeft niemand gesproken sinds de observator is geïnstalleerd, is de Meet-interface gewijzigd of zijn live-ondertitels niet beschikbaar voor de taal of het account van de vergadering.
googlemeet test-speech controleert altijd het realtimepad en meldt of voor die aanroep uitvoerbytes van de brug zijn waargenomen. Als speechOutputVerified onwaar is en speechOutputTimedOut waar is, heeft de realtimeprovider de uiting mogelijk geaccepteerd, maar heeft OpenClaw geen nieuwe uitvoerbytes de Chrome-audiobrug zien bereiken.
Controleer ook het volgende: er is een sleutel voor een realtimeprovider (OPENAI_API_KEY of GEMINI_API_KEY) beschikbaar op de Gateway-host; BlackHole 2ch is zichtbaar op de Chrome-host; sox bestaat daar; de Meet-microfoon en -luidspreker worden via het virtuele audiopad geleid (doctor hoort meet output routed: yes te tonen voor realtime-deelnames met lokale Chrome).
googlemeet doctor [session-id] toont de sessie, node, status tijdens de oproep, reden voor handmatige actie, verbinding met de realtimeprovider, realtimeReady, audio-invoer-/uitvoeractiviteit, tijdstempels van de laatste audio, bytetellers en browser-URL. Gebruik googlemeet status [session-id] --json voor onbewerkte JSON en googlemeet doctor --oauth (voeg --meeting of --create-space toe) om OAuth-vernieuwing te verifiëren zonder tokens prijs te geven.
Als een agent een time-out heeft gekregen en er al een Meet-tabblad is geopend, controleer dit dan zonder nog een tabblad te openen:
recover_current_tab: deze activeert en controleert een bestaand Meet-tabblad voor het geselecteerde transport (lokale browserbesturing voor chrome, de geconfigureerde node voor chrome-node) zonder een nieuw tabblad of een nieuwe sessie te openen, en meldt de huidige blokkade (aanmelding, toelating, toestemmingen, status van de audiokeuze). De CLI-opdracht communiceert met de geconfigureerde Gateway, die actief moet zijn; voor chrome-node moet de node ook verbonden zijn.
Twilio-installatiecontroles mislukken
twilio-voice-call-plugin mislukt wanneer voice-call niet is toegestaan of niet is ingeschakeld: voeg het toe aan plugins.allow, schakel plugins.entries.voice-call in en herlaad de Gateway.
twilio-voice-call-credentials mislukt wanneer bij de Twilio-backend de account-SID, het authenticatietoken of het nummer van de beller ontbreekt:
twilio-voice-call-webhook mislukt wanneer voice-call niet via een openbare Webhook bereikbaar is, of publicUrl naar een loopbackadres of privé-netwerkruimte verwijst. 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; callbacks van de provider kunnen die niet bereiken. Stel plugins.entries.voice-call.config.publicUrl in op een openbare URL of configureer bereikbaarheid via een tunnel/Tailscale:
voicecall smoke controleert standaard alleen de gereedheid. Voer een droogtest uit voor een specifiek nummer:
--yes alleen toe om opzettelijk een echte uitgaande oproep te plaatsen:
Twilio-oproep start, maar neemt nooit deel aan de vergadering
Controleer of de Meet-gebeurtenis telefonische inbelgegevens beschikbaar stelt en geef het exacte inbelnummer plus de pincode of een aangepaste DTMF-reeks door:w of komma’s in --dtmf-sequence voor een pauze vóór de pincode.
Als de oproep is aangemaakt, maar de lijst met Meet-deelnemers de inbellende deelnemer nooit toont:
openclaw googlemeet doctor <session-id>: controleer de gedelegeerde Twilio-oproep-ID, of DTMF in de wachtrij is geplaatst en of om de inleidende begroeting is gevraagd.openclaw voicecall status --call-id <id>: controleer of de oproep nog actief is.openclaw voicecall tail: controleer of Twilio-webhooks bij de Gateway aankomen.openclaw logs --follow: zoek naar de Twilio Meet-volgorde: Google Meet delegeert het deelnemen, Voice Call slaat TwiML voor DTMF vóór de verbinding op en biedt dit aan, Voice Call biedt realtime-TwiML voor de Twilio-oproep aan en vervolgens vraagt Google Meet metvoicecall.speakom de inleidende spraak.- Voer
openclaw googlemeet setup --transport twilioopnieuw uit; een groene installatiecontrole is vereist, maar bewijst niet dat de pincodevolgorde van de vergadering correct is. - Controleer of het inbelnummer bij dezelfde Meet-uitnodiging en regio hoort als de pincode.
- Verhoog
voiceCall.dtmfDelayMsvanaf de standaardwaarde van 12 seconden als Meet langzaam opneemt of het oproeptranscript nog steeds de pincodeprompt toont nadat DTMF vóór de verbinding is verzonden. - Als de deelnemer deelneemt, maar je de begroeting niet hoort, controleer dan
openclaw logs --followop hetvoicecall.speak-verzoek na DTMF en op TTS-weergave via de mediastream of de Twilio-fallback<Say>. Als het transcript nog steeds „enter the meeting PIN” toont, heeft de telefonische verbinding nog niet deelgenomen aan de Meet-ruimte, zodat deelnemers geen spraak zullen horen.
plugins.entries.voice-call.config.publicUrl of de geconfigureerde tunnel kunnen bereiken. Zie Problemen met spraakoproepen oplossen.
Opmerkingen
De officiële media-API van Google Meet is gericht op ontvangst, dus om in een gesprek te spreken is nog steeds een deelnemerspad nodig. Deze Plugin houdt die grens zichtbaar: Chrome verzorgt deelname via de browser en lokale audioroutering; Twilio verzorgt telefonische inbeldeelname. De terugspreekmodi van Chrome vereisenBlackHole 2ch plus een van de volgende opties:
chrome.audioInputCommandpluschrome.audioOutputCommand: OpenClaw beheert de bridge en stuurt audio inchrome.audioFormatdoor tussen deze opdrachten en de geselecteerde provider. De modusagentgebruikt realtime transcriptie plus reguliere TTS; de modusbidigebruikt de realtime spraakprovider. Het standaardpad is 24 kHz PCM16 metchrome.audioBufferBytes: 4096; 8 kHz G.711 mu-law blijft beschikbaar voor verouderde opdrachtparen.chrome.audioBridgeCommand: een externe bridgeopdracht beheert het volledige lokale audiopad en moet worden afgesloten nadat de daemon is gestart of gevalideerd. Alleen geldig voorbidi, omdat de modusagentdirecte toegang tot het opdrachtenpaar nodig heeft voor TTS.
chrome.bargeInInputCommand naar een afzonderlijke lokale microfoon luisteren en het afspelen door de assistent wissen wanneer een persoon begint te praten, zodat menselijke spraak voorrang houdt op de uitvoer van de assistent, zelfs wanneer de gedeelde BlackHole-loopbackinvoer tijdens het afspelen door de assistent tijdelijk wordt onderdrukt. Net als chrome.audioInputCommand/chrome.audioOutputCommand is dit een door de beheerder geconfigureerde lokale opdracht: gebruik een expliciet vertrouwd opdrachtpad of een expliciete argumentenlijst, en nooit een script vanaf een niet-vertrouwde locatie.
Routeer voor heldere duplexaudio de Meet-uitvoer en de Meet-microfoon via afzonderlijke virtuele apparaten of een virtuele apparaatgraaf in Loopback-stijl; één gedeeld BlackHole-apparaat kan andere deelnemers terug laten echoën in het gesprek.
googlemeet speak activeert de actieve terugspreekaudiobridge voor een Chrome-sessie; googlemeet leave stopt deze (en beëindigt bij Twilio-sessies die via Voice Call zijn gedelegeerd ook het onderliggende gesprek). Gebruik googlemeet end-active-conference om ook de actieve Google Meet-vergadering te sluiten voor een via de API beheerde ruimte.