google-meet tritt im Namen eines OpenClaw-Agenten expliziten Meet-URLs bei. Sein Funktionsumfang ist bewusst eng gefasst:
- Es tritt ausschließlich
https://meet.google.com/...-URLs bei; es wählt sich niemals über eine selbst gefundene Telefonnummer in eine Besprechung ein. googlemeet createkann über die Google Meet API (oder einen Browser-Fallback) eine neue Meet-URL erstellen und ihr standardmäßig beitreten.- Die Teilnahme über Chrome verwendet ein angemeldetes Chrome-Profil, optional auf einem gekoppelten Node. Bei der Teilnahme über Twilio wird über das Plugin für Sprachanrufe eine Telefonnummer samt PIN/DTMF gewählt; eine Meet-URL kann damit nicht direkt angewählt werden.
mode: "agent"(Standard) transkribiert die Sprache der Teilnehmenden mit einem Echtzeit-Provider, leitet sie an den konfigurierten OpenClaw-Agenten weiter und gibt die Antwort mit der regulären OpenClaw-Sprachausgabe wieder. Mitmode: "bidi"antwortet ein Echtzeit-Sprachmodell direkt.mode: "transcribe"tritt nur zur Beobachtung ohne Sprachantwort bei.- Beim Beitritt des Plugins zu einem Anruf erfolgt keine automatische Einwilligungsansage.
- Der CLI-Befehl lautet
googlemeet;meetist umfassenderen Workflows für Agententelefonkonferenzen vorbehalten.
Schnellstart
Installieren Sie das Plugin und die lokalen Audioabhängigkeiten und legen Sie anschließend einen Schlüssel für einen Echtzeit-Provider fest. OpenAI ist der standardmäßige Transkriptions-Provider für den Modusagent; Google Gemini Live ist als Sprach-Provider für den Modus bidi verfügbar:
blackhole-2ch installiert das virtuelle Audiogerät BlackHole 2ch, über das Chrome das Audio leitet. Das Homebrew-Installationsprogramm erfordert einen Neustart, bevor macOS das Gerät bereitstellt:
openclaw plugins disable google-meet aus, wenn das Plugin nicht aktiv sein soll.
Überprüfen Sie die Einrichtung und treten Sie anschließend bei:
setup ist für Agenten lesbar und berücksichtigt Modus und Transport: Sie meldet das Chrome-Profil, die Bindung an einen Node und bei Echtzeitbeitritten über Chrome die BlackHole-/SoX-Audiobrücke sowie die Prüfung der verzögerten Einführung. Bei Beitritten nur zur Beobachtung werden die Echtzeitvoraussetzungen übersprungen:
setup außerdem, ob voice-call, die Twilio-Anmeldedaten und die öffentliche Webhook-Erreichbarkeit bereit sind. Behandeln Sie jede Prüfung mit dem Ergebnis ok: false für den jeweiligen Transport und Modus als Blocker, bevor ein Agent beitritt. Verwenden Sie --json für eine maschinenlesbare Ausgabe und --transport chrome|chrome-node|twilio, um einen bestimmten Transport vorab zu prüfen:
google_meet beitreten:
google_meet für Artefakt-, Kalender-, Einrichtungs-, Transkriptions-, Twilio- und chrome-node-Aktionen sichtbar. Die lokale Sprachantwort über Chrome (transport: "chrome" mit mode: "agent" oder "bidi") wird jedoch blockiert, bevor sie die Audiobrücke erreicht, da dieser Pfad derzeit von BlackHole 2ch unter macOS abhängt. Verwenden Sie stattdessen mode: "transcribe", die Twilio-Einwahl oder einen macOS-Host chrome-node.
Eine Besprechung erstellen
create verfügt über zwei Pfade, die im Feld source des Ergebnisses angegeben werden:
api: Wird verwendet, wenn OAuth-Anmeldedaten für Google Meet konfiguriert sind. Deterministisch; unabhängig vom Zustand der Browseroberfläche.browser: Wird ohne OAuth-Anmeldedaten verwendet. OpenClaw öffnethttps://meet.google.com/newauf dem festgelegten Chrome-Node und wartet darauf, dass Google zu einer echten URL mit Besprechungscode weiterleitet; das OpenClaw-Chrome-Profil auf diesem Node muss bereits bei Google angemeldet sein. Sowohl beim Beitreten als auch beim Erstellen wird zunächst ein vorhandener Meet-Tab (oder ein laufender.../new- bzw. Google-Konto-Aufforderungs-Tab) wiederverwendet, bevor ein neuer geöffnet wird. Beim Tab-Abgleich werden unproblematische Abfragezeichenfolgen wieauthuserignoriert.
create tritt standardmäßig bei und gibt joined: true sowie die Beitrittssitzung zurück. Übergeben Sie --no-join (CLI) oder "join": false (Tool), um nur die URL zu erstellen.
Legen Sie für über die API erstellte Räume eine explizite Zugriffsrichtlinie fest, anstatt den Standardwert des Google-Kontos zu übernehmen:
Dies gilt nur für über die API erstellte Räume, daher muss OAuth konfiguriert sein. Wenn Sie sich authentifiziert haben, bevor diese Option verfügbar war, führen Sie
openclaw googlemeet auth login --json erneut aus, nachdem Sie den Scope meetings.space.settings zu Ihrem OAuth-Zustimmungsbildschirm hinzugefügt haben.
Wenn der Browser-Fallback durch eine Google-Anmeldung oder eine Meet-Berechtigungsanforderung blockiert wird, gibt das Tool manualActionRequired: true mit manualActionReason, manualActionMessage und browser.nodeId/browser.targetId/browserUrl zurück. Melden Sie diese Nachricht und öffnen Sie keine weiteren Meet-Tabs, bis die bedienende Person den Schritt im Browser abgeschlossen hat.
Beitritt nur zur Beobachtung
Setzen Sie"mode": "transcribe", um die bidirektionale Echtzeitbrücke zu überspringen (keine BlackHole-/SoX-Anforderung, keine Sprachantwort). Chrome-Beitritte im Transkriptionsmodus überspringen außerdem die Erteilung der OpenClaw-Mikrofon-/Kameraberechtigung sowie den Meet-Pfad Use microphone. Wenn Meet den Zwischendialog zur Audioauswahl anzeigt, versucht die Automatisierung zuerst Continue without microphone. Verwaltete Chrome-Transporte installieren in jedem Modus nach Möglichkeit einen Meet-Untertitelbeobachter, damit dauerhafte Notizen verfügbar sind, ohne den Live-Konsultationspfad des Agenten zu ändern. googlemeet status --json und googlemeet doctor melden captioning, captionsEnabledAttempted, transcriptLines, lastCaptionAt, lastCaptionSpeaker, lastCaptionText sowie einen recentTranscript-Nachlauf.
Lesen Sie für das begrenzte Sitzungstranskript den exakt verfolgten Meet-Tab aus:
nextIndex eine spätere Texterweiterung nicht überspringen; beim Verlassen werden sichtbare Zeilen vor dem Snapshot abgeschlossen. droppedLines meldet die am Anfang verlorenen Zeilen, wenn die Obergrenze überschritten wird. Der begrenzte googlemeet transcript-Nachlauf bewahrt weiterhin nur die vier zuletzt beendeten Sitzungen auf und wird mit dem Gateway zurückgesetzt. Unabhängig davon hängt OpenClaw während der gesamten Besprechung abgeschlossene Untertitelzeilen an die gemeinsame Zustandsdatenbank an und schreibt beim Verlassen eine abgeleitete Zusammenfassung. Verwenden Sie openclaw transcripts, um diese dauerhaften Notizen anzuzeigen oder zu exportieren.
Automatische Notizen sind standardmäßig aktiviert. Setzen Sie transcripts.enabled: false, um
dauerhafte Notizen global zu deaktivieren; der explizite Modus transcribe stellt weiterhin nur
seinen begrenzten Live-Nachlauf bereit. Twilio-Beitritte verfügen nicht über den Untertitelstream des Browsers und
werden über diesen Pfad nicht erfasst.
Für eine Ja/Nein-Abhörprüfung:
listenVerified, listenTimedOut, Felder für manuelle Aktionen sowie den aktuellen Untertitelzustand zurück.
Zustand der Echtzeitsitzung
Während Sitzungen mit Sprachantwort meldet der Statusgoogle_meet den Zustand von Chrome und der Audiobrücke: inCall, manualActionRequired, providerConnected, realtimeReady, audioInputActive, audioOutputActive, Zeitstempel der letzten Ein- und Ausgabe, Bytezähler sowie den Zustand der geschlossenen Brücke. Verwaltete Chrome-Sitzungen geben die Einführungs-/Testphrase erst aus, nachdem der Zustand inCall: true gemeldet wurde; andernfalls wird speechReady: false ausgegeben und der Sprechversuch blockiert, statt ohne Hinweis wirkungslos zu bleiben.
Lokale Chrome-Beitritte erfolgen über das angemeldete OpenClaw-Browserprofil und benötigen BlackHole 2ch für den Mikrofon-/Lautsprecherpfad. Ein einzelnes BlackHole-Gerät genügt für einen ersten Funktionstest, kann jedoch ein Echo erzeugen. Verwenden Sie separate virtuelle Geräte oder eine Loopback-ähnliche Verschaltung für sauberes bidirektionales Audio.
Lokales Gateway und Chrome unter Parallels
Innerhalb einer macOS-VM sind weder ein vollständiges Gateway noch ein Modell-API-Schlüssel erforderlich, wenn sie lediglich Chrome bereitstellen soll. Führen Sie das Gateway und den Agenten lokal und einen Node-Host in der VM aus.
Installieren Sie die VM-Abhängigkeiten, starten Sie neu und überprüfen Sie die Installation:
<gateway-host> eine LAN-IP-Adresse ohne TLS ist, lassen Sie dies für das vertrauenswürdige private Netzwerk ausdrücklich zu:
openclaw.json-Einstellung:
googlemeet.chrome als auch die Browserfunktion/browser.proxy ankündigt:
manualActionRequired: true mit manualActionReason und manualActionMessage. Beenden Sie die Wiederholungsversuche, melden Sie diese Nachricht zusammen mit browserUrl/browserTitle und versuchen Sie es erst erneut, nachdem die manuelle Aktion abgeschlossen wurde.
Wenn chromeNode.node ausgelassen wird, trifft OpenClaw nur dann automatisch eine Auswahl, wenn genau ein verbundener Node sowohl googlemeet.chrome als auch Browsersteuerung anbietet. Legen Sie chromeNode.node (Node-ID, Anzeigename oder Remote-IP) fest, wenn mehrere geeignete Nodes verbunden sind.
Häufige Fehlerprüfungen
Installationshinweise
Die standardmäßige Chrome-Antwortfunktion verwendet zwei externe Werkzeuge, die OpenClaw weder bündelt noch weiterverteilt. Installieren Sie sie über Homebrew als Host-Abhängigkeiten:sox: Befehlszeilen-Audiowerkzeug. Das Plugin führt für die standardmäßige 24-kHz-PCM16-Audiobrücke explizite CoreAudio-Gerätebefehle aus.blackhole-2ch: Virtueller macOS-Audiotreiber, der das GerätBlackHole 2chbereitstellt, über das Chrome/Meet geleitet wird.
LGPL-2.0-only AND GPL-2.0-only lizenziert; BlackHole unter GPL-3.0. Wenn Sie ein Installationsprogramm oder eine Appliance erstellen, das bzw. die BlackHole mit OpenClaw bündelt, prüfen Sie die Lizenzierung des BlackHole-Upstream-Projekts oder erwerben Sie eine separate Lizenz von Existential Audio.
Transporte
Chrome
Öffnet die Meet-URL über die OpenClaw-Browsersteuerung und tritt mit dem angemeldeten OpenClaw-Browserprofil bei. Unter macOS prüft das Plugin vor dem Start aufBlackHole 2ch und führt, sofern konfiguriert, einen Befehl zur Zustandsprüfung/zum Start der Audiobrücke aus, bevor Chrome geöffnet wird. Wählen Sie für lokales Chrome das Profil mit browser.defaultProfile; chrome.browserProfile wird stattdessen an chrome-node-Hosts übergeben.
BlackHole 2ch nicht installiert ist, schlägt der Beitritt mit einem Einrichtungsfehler fehl, statt ohne Audiopfad beizutreten.
Twilio
Ein strikter, an das Voice-Call-Plugin delegierter Wählplan. Meet-Seiten werden nicht nach Telefonnummern durchsucht; Google Meet muss für die Besprechung eine telefonische Einwahlnummer und PIN bereitstellen. Aktivieren Sie Voice Call auf dem Gateway-Host, nicht auf dem Chrome-Node:openclaw.json gespeichert werden:
realtime.provider: "openai" mit OPENAI_API_KEY, wenn OpenAI der Echtzeit-Sprach-Provider ist.
Starten oder laden Sie das Gateway nach der Aktivierung von voice-call neu; Änderungen an der Plugin-Konfiguration werden erst nach dem Neuladen wirksam. Überprüfung:
googlemeet setup Prüfungen für twilio-voice-call-plugin, twilio-voice-call-credentials und twilio-voice-call-webhook.
--dtmf-sequence für eine benutzerdefinierte Sequenz, mit vorangestelltem w oder Kommas für eine Pause vor der PIN:
OAuth und Vorabprüfung
OAuth ist für die Erstellung eines Meet-Links optional, dagooglemeet create auf Browserautomatisierung ausweichen kann. Konfigurieren Sie OAuth für die Erstellung über die offizielle API, die Space-Auflösung oder die Vorabprüfung der Meet Media API. Beitritte über Chrome/Chrome-Node hängen nie von OAuth ab; sie verwenden in jedem Fall ein angemeldetes Chrome-Profil, BlackHole/SoX und (für chrome-node) einen verbundenen Node.
Google-Anmeldedaten erstellen
In der Google Cloud Console:1
Projekt erstellen oder auswählen
2
Google Meet REST API aktivieren
3
OAuth-Zustimmungsbildschirm konfigurieren
Internal ist für eine Google-Workspace-Organisation am einfachsten. External eignet sich für persönliche/Testeinrichtungen. Solange sich die App in Testing befindet, fügen Sie jedes Google-Konto, das sie autorisieren soll, als Testnutzer hinzu.
4
Angeforderte Bereiche hinzufügen
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(Kalendersuche)https://www.googleapis.com/auth/drive.meet.readonly(Export des Dokumentinhalts von Transkripten/intelligenten Notizen)
5
OAuth-Client-ID erstellen
Anwendungstyp Web application. Autorisierte Weiterleitungs-URI:
6
Client-ID und Client-Secret kopieren
meetings.space.created wird von spaces.create benötigt. meetings.space.readonly löst Meet-URLs/-Codes in Spaces auf. Mit meetings.space.settings kann OpenClaw bei der API-Raumerstellung SpaceConfig-Einstellungen wie accessType übergeben. meetings.conference.media.readonly ist für die Vorabprüfung und Medienfunktionen der Meet Media API vorgesehen; Google kann für die tatsächliche Nutzung der Media API eine Anmeldung zum Developer Preview verlangen. calendar.events.readonly wird nur für die Kalendersuche mit --today/--event benötigt. drive.meet.readonly wird nur für den Export mit --include-doc-bodies benötigt. Wenn Sie ausschließlich browserbasierte Chrome-Beitritte benötigen, überspringen Sie OAuth vollständig.
Aktualisierungstoken erzeugen
Konfigurieren Sieoauth.clientId und optional oauth.clientSecret (oder übergeben Sie sie als Umgebungsvariablen) und führen Sie anschließend Folgendes aus:
http://localhost:8085/oauth2callback ausgeführt und ein oauth-Konfigurationsblock mit einem Aktualisierungstoken ausgegeben. Fügen Sie --manual für einen Kopieren-und-Einfügen-Ablauf hinzu, wenn der Browser den lokalen Callback nicht erreichen kann:
oauth-Objekt unter der Plugin-Konfiguration:
openclaw googlemeet auth login --json erneut aus, damit das Aktualisierungstoken den aktuellen Bereichssatz abdeckt.
OAuth mit doctor überprüfen
ok, configured, tokenSource, expiresAt, Prüfmeldungen) und gibt niemals das Zugriffstoken, das Aktualisierungstoken oder das Client-Geheimnis aus.
Weisen Sie die Aktivierung der Meet API und den Geltungsbereich
spaces.create mit der zustandsverändernden Erstellungsprüfung nach:
403 bei diesen Prüfungen bedeutet normalerweise, dass die Meet REST API deaktiviert ist, dem Aktualisierungstoken der erforderliche Geltungsbereich fehlt oder das Google-Konto nicht auf diesen Raum zugreifen kann. Ein Aktualisierungstokenfehler bedeutet, dass openclaw googlemeet auth login --json erneut ausgeführt und der neue Block oauth gespeichert werden muss.
Für den Browser-Fallback ist kein OAuth erforderlich; die Google-Authentifizierung stammt dort aus dem angemeldeten Chrome-Profil auf der ausgewählten Node und nicht aus der OpenClaw-Konfiguration.
Diese Umgebungsvariablen werden als Fallbacks akzeptiert:
OPENCLAW_GOOGLE_MEET_CLIENT_IDoderGOOGLE_MEET_CLIENT_IDOPENCLAW_GOOGLE_MEET_CLIENT_SECREToderGOOGLE_MEET_CLIENT_SECRETOPENCLAW_GOOGLE_MEET_REFRESH_TOKENoderGOOGLE_MEET_REFRESH_TOKENOPENCLAW_GOOGLE_MEET_ACCESS_TOKENoderGOOGLE_MEET_ACCESS_TOKENOPENCLAW_GOOGLE_MEET_ACCESS_TOKEN_EXPIRES_AToderGOOGLE_MEET_ACCESS_TOKEN_EXPIRES_ATOPENCLAW_GOOGLE_MEET_DEFAULT_MEETINGoderGOOGLE_MEET_DEFAULT_MEETINGOPENCLAW_GOOGLE_MEET_PREVIEW_ACKoderGOOGLE_MEET_PREVIEW_ACK
Artefakte auflösen, vorab prüfen und lesen
--meeting verwenden artifacts und attendance standardmäßig den neuesten Konferenzdatensatz; übergeben Sie --all-conference-records für jeden aufbewahrten Datensatz.
Die Kalendersuche löst die Besprechungs-URL aus Google Calendar auf, bevor Artefakte gelesen werden (erfordert ein Aktualisierungstoken, das den schreibgeschützten Geltungsbereich für Kalenderereignisse enthält):
--today durchsucht den heutigen Kalender primary nach einem Ereignis mit einem Meet-Link; --event <query> durchsucht übereinstimmenden Ereignistext; --calendar <id> richtet sich an einen nicht primären Kalender. calendar-events zeigt übereinstimmende Ereignisse in der Vorschau an und kennzeichnet, welches davon latest/artifacts/attendance/export auswählt.
Wenn Sie die ID des Konferenzdatensatzes bereits kennen, sprechen Sie ihn direkt an:
spaces.endActiveConference auf und erfordert OAuth mit dem Geltungsbereich meetings.space.created für einen Raum, den das autorisierte Konto verwalten kann. Akzeptiert eine Meet-URL, einen Besprechungscode oder spaces/{id} und löst die Angabe zunächst in die API-Raumressource auf. Dies ist von googlemeet leave getrennt: leave beendet die lokale/Sitzungsteilnahme von OpenClaw; end-active-conference fordert Google Meet auf, die aktive Konferenz für den Raum zu beenden.
Schreiben Sie einen lesbaren Bericht:
artifacts gibt Metadaten des Konferenzdatensatzes sowie Ressourcenmetadaten zu Teilnehmern, Aufzeichnungen, Transkripten, strukturierten Transkripteinträgen und intelligenten Notizen zurück, wenn Google diese bereitstellt. --no-transcript-entries überspringt die Eintragssuche bei großen Besprechungen. attendance erweitert Teilnehmer zu Teilnehmer-Sitzungszeilen mit Zeitpunkten der ersten/letzten Anwesenheit, gesamter Sitzungsdauer, Kennzeichnungen für Verspätung/vorzeitiges Verlassen sowie doppelten Teilnehmerressourcen, die anhand des angemeldeten Benutzers oder Anzeigenamens zusammengeführt werden; --no-merge-duplicates hält Rohressourcen getrennt, --late-after-minutes/--early-before-minutes passen die Schwellenwerte an.
export schreibt einen Ordner mit summary.md, attendance.csv, transcript.md, artifacts.json, attendance.json und manifest.json. manifest.json zeichnet die ausgewählte Eingabe, Exportoptionen, Konferenzdatensätze, Ausgabedateien, Anzahlen, Tokenquelle, jedes verwendete Kalenderereignis und Warnungen zu unvollständigen Abrufen auf. --zip schreibt außerdem ein portables Archiv neben den Ordner. --include-doc-bodies exportiert den Text verknüpfter Google Docs für Transkripte/intelligente Notizen über Drive files.export (erfordert den schreibgeschützten Drive-Meet-Geltungsbereich); ohne diese Option enthalten Exporte nur Meet-Metadaten und strukturierte Transkripteinträge. Bei einem teilweisen Artefaktfehler (Fehler beim Auflisten intelligenter Notizen, bei Transkripteinträgen oder Dokumentinhalten) bleibt die Warnung in der Zusammenfassung/im Manifest erhalten, anstatt den gesamten Export fehlschlagen zu lassen. --dry-run ruft dieselben Daten ab und gibt das Manifest-JSON aus, ohne den Ordner oder die ZIP-Datei zu erstellen.
Agenten verwenden dieselben Aktionen über das Werkzeug google_meet (export, create mit accessType, end_active_conference, test_listen); siehe Werkzeug.
Live-Funktionstest
Der grundlegende Funktionstest für Artefakte/Anwesenheit benötigt
meetings.space.readonly und meetings.conference.media.readonly. Die Kalendersuche benötigt calendar.events.readonly. Der Export von Drive-Dokumentinhalten benötigt drive.meet.readonly.
Erstellungsbeispiele
google_meet strukturierte Details anstelle einer einfachen Zeichenfolge zurück:
manualActionRequired: true oder einen Browser-Fallbackfehler und fordert den Betreiber auf, die Google-Anmeldung abzuschließen, bevor er es erneut versucht.
Setzen Sie preview.enrollmentAcknowledged: true erst, nachdem bestätigt wurde, dass Ihr Cloud-Projekt, Ihr OAuth-Prinzipal und die Besprechungsteilnehmer am Google Workspace Developer Preview Program für Meet-Medien-APIs teilnehmen.
Konfiguration
Der übliche Chrome-Agentenpfad benötigt lediglich das aktivierte Plugin, BlackHole, SoX, einen Echtzeit-Provider-Schlüssel und einen konfigurierten OpenClaw-TTS-Provider:Standardwerte
Mit
chrome.audioBridgeCommand und chrome.audioBridgeHealthCommand kann eine externe Bridge den gesamten lokalen Audiopfad anstelle von chrome.audioInputCommand/chrome.audioOutputCommand übernehmen; die Einschränkung, welcher Modus sie verwenden kann, finden Sie unter Hinweise.
Für die veraltete Struktur realtime.provider: "google" ist eine openclaw doctor --fix-Migration vorhanden: Sie überträgt diese Absicht auf realtime.voiceProvider: "google" und realtime.transcriptionProvider: "openai", sofern diese Felder nicht bereits gesetzt sind.
Optionale Überschreibungen
tts.providers.elevenlabs.speakerVoiceId. Agentenantworten können auch antwortspezifische [[tts:speakerVoiceId=... model=eleven_v3]]-Direktiven verwenden, wenn Überschreibungen des TTS-Modells aktiviert sind; für Meetings ist die Konfiguration jedoch der deterministische Standard. Beim Beitritt zeigen die Protokolle transcriptionProvider=elevenlabs, und jede gesprochene Antwort protokolliert provider=elevenlabs model=eleven_v3 speakerVoiceId=<voiceId>.
Nur-Twilio-Konfiguration:
voiceCall.enabled: true (dem Standardwert) und Twilio-Transport sendet Voice Call die DTMF-Sequenz, bevor der Echtzeit-Medienstream geöffnet wird, und verwendet anschließend den gespeicherten Begrüßungstext als anfängliche Echtzeit-Begrüßung. Wenn voice-call nicht aktiviert ist, kann Google Meet den Wählplan weiterhin validieren und aufzeichnen, aber den Twilio-Anruf nicht tätigen.
Lassen Sie voiceCall.gatewayUrl nicht gesetzt, um die lokale vertrauenswürdige Gateway-Laufzeit zu verwenden, die den
aufrufenden Agenten für den gesamten Aufruf beibehält. Eine konfigurierte Gateway-URL bleibt ein explizites WebSocket-Ziel und
kann die Herkunft des Plugins nicht authentifizieren; Beitritte von nicht standardmäßigen Agenten schlagen geschlossen fehl, statt stillschweigend
einen anderen Agenten zu verwenden. Führen Sie Google Meet und Voice Call im selben Gateway-Prozess aus, wenn ein agentenspezifisches
Routing erforderlich ist.
Tool
Agenten verwenden das Toolgoogle_meet:
test_speech erzwingt immer mode: "agent" oder "bidi" und schlägt fehl, wenn die Ausführung in mode: "transcribe" angefordert wird, da reine Beobachtungssitzungen keine Sprache ausgeben können. speechOutputVerified erfordert sowohl neue Echtzeit-Ausgabebytes als auch neues nicht stummes Audio, das während dieser Ausgabe über den Mikrofon-Aufnahmepfad der Bridge zurückkehrt. Ältere Ausgaben oder Loopback-Signale einer wiederverwendeten Sitzung zählen nicht, und das alleinige Anwachsen der Sink-Bytes meldet keine verifizierte Sprachausgabe mehr.
Bei Chrome-Transporten lässt leave einen wiederverwendeten Tab im Besitz des Benutzers geöffnet, nachdem auf die Meet-Schaltfläche Leave call geklickt wurde. Von OpenClaw geöffnete Tabs werden nach dem Verlassen geschlossen.
Verwenden Sie transport: "chrome", wenn Chrome auf dem Gateway-Host ausgeführt wird, und transport: "chrome-node", wenn es auf einer gekoppelten Node ausgeführt wird. In beiden Fällen werden die Modell-Provider und openclaw_agent_consult auf dem Gateway-Host ausgeführt, sodass die Modell-Anmeldedaten dort verbleiben. Protokolle im Agentenmodus enthalten beim Start der Bridge den aufgelösten Transkriptions-Provider und das Modell sowie nach jeder synthetisierten Antwort den TTS-Provider, das Modell, die Stimme, das Ausgabeformat und die Abtastrate. Das unverarbeitete mode: "realtime" wird weiterhin als Legacy-Kompatibilitätsalias für mode: "agent" akzeptiert, aber nicht mehr in der mode-Enumeration des Tools angeboten.
create mit einem API-gestützten Raum und einer expliziten Zugriffsrichtlinie:
status enthält den Chrome-Zustand, sofern verfügbar:
Agenten- und Bidi-Modi
agent-Modus: Der Echtzeit-Transkriptions-Provider hört das Besprechungsaudio, endgültige Teilnehmertranskripte werden durch den konfigurierten OpenClaw-Agenten geleitet und die Antwort wird über die reguläre OpenClaw-TTS ausgegeben. Zeitlich nahe endgültige Transkriptfragmente werden vor der Konsultation zusammengeführt, damit eine gesprochene Äußerung nicht mehrere veraltete Teilantworten erzeugt; Echtzeiteingaben werden unterdrückt, solange Audioausgaben des Assistenten in der Warteschlange noch wiedergegeben werden, und kürzlich aufgezeichnete, assistentenähnliche Transkriptechos werden vor der Konsultation ignoriert, damit der BlackHole-Loopback den Agenten nicht auf seine eigene Sprachausgabe antworten lässt.
bidi-Modus: Das Echtzeit-Sprachmodell antwortet direkt und kann openclaw_agent_consult für tiefere Schlussfolgerungen, aktuelle Informationen oder normale OpenClaw-Tools aufrufen. Das Konsultationstool führt im Hintergrund den regulären OpenClaw-Agenten mit dem Kontext des aktuellen Besprechungstranskripts aus und gibt eine prägnante gesprochene Antwort zurück; im agent-Modus sendet OpenClaw diese Antwort direkt an TTS, im bidi-Modus kann das Echtzeit-Sprachmodell sie aussprechen. Es verwendet dieselbe gemeinsame Konsultationslogik wie Voice Call.
Standardmäßig werden Konsultationen für den Agenten main ausgeführt; setzen Sie realtime.agentId, um eine Meet-Spur auf einen dedizierten Agenten-Arbeitsbereich, Modellstandards, eine Tool-Richtlinie, den Speicher und den Sitzungsverlauf auszurichten. Konsultationen im Agentenmodus verwenden einen besprechungsspezifischen agent:<id>:subagent:google-meet:<session>-Sitzungsschlüssel, damit Folgefragen den Besprechungskontext beibehalten und zugleich die normale Agentenrichtlinie übernehmen. Wenn ein Agent google_meet im Agentenmodus aufruft, verzweigt die Konsultationssitzung vor der Beantwortung der Teilnehmeräußerung vom aktuellen Transkript des Aufrufers; die Meet-Sitzung bleibt getrennt, damit Folgefragen in der Besprechung das Transkript des Aufrufers nicht direkt verändern.
realtime.toolPolicy steuert den Konsultationslauf:
Der Konsultationssitzungsschlüssel ist auf die jeweilige Meet-Sitzung beschränkt, sodass nachfolgende Konsultationsaufrufe während derselben Besprechung den vorherigen Konsultationskontext wiederverwenden.
Eine gesprochene Bereitschaftsprüfung erzwingen, nachdem Chrome vollständig beigetreten ist:
Checkliste für Live-Tests
Bevor Sie eine Besprechung an einen unbeaufsichtigten Agenten übergeben:googlemeet setupist vollständig grün und umfasstchrome-node-connected, wenn Chrome-node der Standardtransport oder ein Node festgelegt ist.nodes statuszeigt den ausgewählten Node als verbunden an, wobei sowohlgooglemeet.chromeals auchbrowser.proxyangekündigt werden.- Der Meet-Tab tritt bei, und
test-speechgibt den Chrome-Zustand mitinCall: truezurück.
googlemeet setupumfasst grüne Prüfungen fürtwilio-voice-call-plugin,twilio-voice-call-credentialsundtwilio-voice-call-webhook.voicecallist nach dem Neuladen des Gateway in der CLI verfügbar.- Die zurückgegebene Sitzung enthält
transport: "twilio"und einetwilio.voiceCallId. openclaw logs --followzeigt, dass DTMF-TwiML vor Echtzeit-TwiML bereitgestellt wurde, gefolgt von einer Echtzeitbrücke mit der eingereihten anfänglichen Begrüßung.googlemeet leave <sessionId>beendet den delegierten Sprachanruf.
Fehlerbehebung
Agent kann das Google-Meet-Tool nicht sehen
Vergewissern Sie sich, dass das Plugin aktiviert ist, und laden Sie das Gateway neu. Der laufende Agent sieht nur Plugin-Tools, die vom aktuellen Gateway-Prozess registriert wurden:google_meet sichtbar, lokale Chrome-Talkback-Aktionen werden jedoch blockiert, bevor sie die Audiobrücke erreichen. Verwenden Sie statt des standardmäßigen lokalen Chrome-Agent-Pfads mode: "transcribe", die Twilio-Einwahl oder einen macOS-Host vom Typ chrome-node.
Kein verbundener Google-Meet-fähiger Node
Auf dem Node-Host:googlemeet.chrome sowie browser.proxy auflisten. Die Gateway-Konfiguration muss beides zulassen:
googlemeet setup bei chrome-node-connected fehlschlägt oder das Gateway-Protokoll gateway token mismatch meldet, installieren Sie den Node mit dem aktuellen Gateway-Token neu oder starten Sie ihn damit neu:
Browser wird geöffnet, aber Agent kann nicht beitreten
Führen Siegooglemeet test-listen für reine Beobachterbeitritte oder googlemeet test-speech für Echtzeitbeitritte aus und prüfen Sie anschließend den zurückgegebenen Chrome-Zustand. Wenn eine der beiden Aktionen manualActionRequired: true meldet, zeigen Sie dem Bediener manualActionMessage und versuchen Sie es erst erneut, wenn die Browseraktion abgeschlossen ist.
Häufige manuelle Aktionen: beim Chrome-Profil anmelden; den Gast über das Meet-Hostkonto zulassen; Chrome Mikrofon-/Kameraberechtigungen erteilen, wenn die native Eingabeaufforderung erscheint; einen hängen gebliebenen Meet-Berechtigungsdialog schließen oder beheben.
Melden Sie nicht „nicht angemeldet“, nur weil Meet fragt „Do you want people to hear you in the meeting?“; dies ist die Audioauswahl-Zwischenseite von Meet. OpenClaw klickt, sofern verfügbar, per Browserautomatisierung auf Use microphone und wartet weiter auf den tatsächlichen Besprechungsstatus. Beim reinen Erstellen über den Browser-Fallback kann OpenClaw stattdessen auf Continue without microphone klicken, da zum Erzeugen der URL kein Echtzeit-Audiopfad erforderlich ist.
Erstellen der Besprechung schlägt fehl
googlemeet create verwendet bei konfiguriertem OAuth die Meet-API spaces.create, andernfalls den Browser des festgelegten Chrome-Node. Prüfen Sie Folgendes:
- API-Erstellung:
oauth.clientIdundoauth.refreshToken(oder entsprechendeOPENCLAW_GOOGLE_MEET_*-Umgebungsvariablen) sind vorhanden, und das Aktualisierungstoken wurde erstellt, nachdem die Erstellungsunterstützung hinzugefügt wurde. Älteren Token fehlt möglicherweisemeetings.space.created; führen Sie daheropenclaw googlemeet auth login --jsonerneut aus. - Browser-Fallback:
defaultTransport: "chrome-node"undchromeNode.nodeverweisen auf einen verbundenen Node mitbrowser.proxyundgooglemeet.chrome. Das OpenClaw-Chrome-Profil auf diesem Node ist angemeldet und kannhttps://meet.google.com/newöffnen. - Browser-Fallback-Wiederholungen: Verwenden Sie einen vorhandenen
.../new- oder Google-Konto-Eingabeaufforderungs-Tab erneut, bevor Sie einen neuen öffnen. Wiederholen Sie den Tool-Aufruf, statt manuell einen weiteren Tab zu öffnen. - Manuelle Aktion: Wenn das Tool
manualActionRequired: truezurückgibt, verwenden Siebrowser.nodeId,browser.targetId,browserUrlundmanualActionMessage, um den Bediener anzuleiten. Wiederholen Sie den Vorgang nicht in einer Schleife. - Audioauswahl-Zwischenseite: Wenn Meet „Do you want people to hear you in the meeting?“ anzeigt, lassen Sie den Tab geöffnet. OpenClaw sollte auf Use microphone oder – nur beim Erstellen – auf Continue without microphone klicken und weiter auf die generierte URL warten. Ist dies nicht möglich, sollte der Fehler
meet-audio-choice-requiredund nichtgoogle-login-requirederwähnen.
Agent tritt bei, spricht aber nicht
mode: "agent" für den Pfad STT -> OpenClaw-Agent -> TTS und mode: "bidi" für den direkten Echtzeit-Sprachfallback. mode: "transcribe" startet absichtlich keine Talkback-Brücke. Führen Sie zur Fehlerbehebung im reinen Beobachtermodus openclaw googlemeet status --json <session-id> aus, nachdem Teilnehmer gesprochen haben, und prüfen Sie captioning, transcriptLines und lastCaptionText. Wenn inCall wahr ist, transcriptLines jedoch 0 bleibt, sind möglicherweise Meet-Untertitel deaktiviert, seit der Installation des Beobachters hat niemand gesprochen, die Meet-Benutzeroberfläche wurde geändert oder Live-Untertitel sind für die Sprache beziehungsweise das Konto der Besprechung nicht verfügbar.
googlemeet test-speech prüft immer den Echtzeitpfad und meldet, ob bei diesem Aufruf Ausgabebytes der Brücke beobachtet wurden. Wenn speechOutputVerified falsch und speechOutputTimedOut wahr ist, hat der Echtzeit-Provider die Äußerung möglicherweise akzeptiert, OpenClaw hat jedoch nicht beobachtet, dass neue Ausgabebytes die Chrome-Audiobrücke erreichten.
Prüfen Sie außerdem Folgendes: Auf dem Gateway-Host ist ein Schlüssel für einen Echtzeit-Provider (OPENAI_API_KEY oder GEMINI_API_KEY) verfügbar; BlackHole 2ch ist auf dem Chrome-Host sichtbar; sox ist dort vorhanden; Meet-Mikrofon und -Lautsprecher werden über den virtuellen Audiopfad geleitet (doctor sollte bei lokalen Chrome-Echtzeitbeitritten meet output routed: yes anzeigen).
googlemeet doctor [session-id] gibt Sitzung, Node, Anrufstatus, Grund für die manuelle Aktion, Verbindung zum Echtzeit-Provider, realtimeReady, Audioeingabe-/Audioausgabeaktivität, letzte Audiozeitstempel, Bytezähler und Browser-URL aus. Verwenden Sie googlemeet status [session-id] --json für unformatiertes JSON und googlemeet doctor --oauth (ergänzen Sie --meeting oder --create-space), um die OAuth-Aktualisierung zu überprüfen, ohne Token offenzulegen.
Wenn bei einem Agent eine Zeitüberschreitung aufgetreten ist und bereits ein Meet-Tab geöffnet ist, prüfen Sie ihn, ohne einen weiteren zu öffnen:
recover_current_tab: Sie fokussiert und prüft einen vorhandenen Meet-Tab für den ausgewählten Transport – lokale Browsersteuerung für chrome, der konfigurierte Node für chrome-node –, ohne einen neuen Tab oder eine neue Sitzung zu öffnen, und meldet die aktuelle Blockade (Anmeldung, Zulassung, Berechtigungen, Audioauswahlstatus). Der CLI-Befehl kommuniziert mit dem konfigurierten Gateway, das ausgeführt werden muss. chrome-node setzt außerdem voraus, dass der Node verbunden ist.
Twilio-Einrichtungsprüfungen schlagen fehl
twilio-voice-call-plugin schlägt fehl, wenn voice-call nicht zulässig oder nicht aktiviert ist: Fügen Sie es zu plugins.allow hinzu, aktivieren Sie plugins.entries.voice-call und laden Sie das Gateway neu.
twilio-voice-call-credentials schlägt fehl, wenn im Twilio-Backend die Konto-SID, das Authentifizierungstoken oder die Anrufernummer fehlt:
twilio-voice-call-webhook schlägt fehl, wenn voice-call keine öffentliche Webhook-Bereitstellung besitzt oder publicUrl auf den Loopback-/privaten Netzwerkbereich verweist. Verwenden Sie 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 oder fd00::/8 nicht als publicUrl; Netzbetreiber-Callbacks können diese Adressen nicht erreichen. Legen Sie plugins.entries.voice-call.config.publicUrl auf eine öffentliche URL fest oder konfigurieren Sie die Bereitstellung über einen Tunnel/Tailscale:
voicecall smoke prüft standardmäßig nur die Bereitschaft. Führen Sie einen Probelauf für eine bestimmte Nummer durch:
--yes nur hinzu, wenn absichtlich ein echter ausgehender Anruf getätigt werden soll:
Twilio-Anruf beginnt, tritt der Besprechung jedoch nie bei
Vergewissern Sie sich, dass das Meet-Ereignis Telefoneinwahldaten bereitstellt, und übergeben Sie die genaue Einwahlnummer sowie die PIN oder eine benutzerdefinierte DTMF-Sequenz:w oder Kommas in --dtmf-sequence für eine Pause vor der PIN.
Wenn der Anruf erstellt wurde, der Einwahlteilnehmer jedoch nie in der Meet-Teilnehmerliste erscheint:
openclaw googlemeet doctor <session-id>: Prüfen Sie die delegierte Twilio-Anruf-ID, ob DTMF eingereiht wurde und ob die Einführungsbegrüßung angefordert wurde.openclaw voicecall status --call-id <id>: Prüfen Sie, ob der Anruf noch aktiv ist.openclaw voicecall tail: Prüfen Sie, ob Twilio-Webhooks beim Gateway eingehen.openclaw logs --follow: Suchen Sie nach der Twilio-Meet-Sequenz: Google Meet delegiert den Beitritt, Voice Call speichert Pre-Connect-DTMF-TwiML und stellt es bereit, Voice Call stellt Echtzeit-TwiML für den Twilio-Anruf bereit, anschließend fordert Google Meet mitvoicecall.speakdie Einführungsansage an.- Führen Sie
openclaw googlemeet setup --transport twilioerneut aus. Eine grüne Einrichtungsprüfung ist erforderlich, weist jedoch nicht nach, dass die Besprechungs-PIN-Sequenz korrekt ist. - Vergewissern Sie sich, dass Einwahlnummer und PIN zu derselben Meet-Einladung und Region gehören.
- Erhöhen Sie
voiceCall.dtmfDelayMsgegenüber dem Standardwert von 12 Sekunden, wenn Meet langsam antwortet oder das Anruftranskript nach dem Senden des Pre-Connect-DTMF weiterhin die PIN-Eingabeaufforderung anzeigt. - Wenn der Teilnehmer beitritt, Sie die Begrüßung jedoch nicht hören, prüfen Sie
openclaw logs --followauf die nach dem DTMF gesendetevoicecall.speak-Anforderung und entweder die TTS-Wiedergabe des Medienstreams oder den Twilio-Fallback<Say>. Wenn das Transkript weiterhin „enter the meeting PIN“ anzeigt, ist der Telefonabschnitt dem Meet-Raum noch nicht beigetreten, sodass die Teilnehmer keine Sprache hören.
plugins.entries.voice-call.config.publicUrl oder den konfigurierten Tunnel erreichen können. Siehe Fehlerbehebung bei Sprachanrufen.
Hinweise
Die offizielle Medien-API von Google Meet ist auf den Empfang ausgerichtet, daher ist zum Sprechen in einem Anruf weiterhin ein Teilnehmerpfad erforderlich. Dieses Plugin macht diese Abgrenzung sichtbar: Chrome übernimmt die Browserteilnahme und das lokale Audio-Routing; Twilio übernimmt die Teilnahme per Telefoneinwahl. Die Talkback-Modi von Chrome benötigenBlackHole 2ch sowie eine der folgenden Optionen:
chrome.audioInputCommandpluschrome.audioOutputCommand: OpenClaw verwaltet die Bridge und leitet Audio inchrome.audioFormatzwischen diesen Befehlen und dem ausgewählten Provider weiter. Der Modusagentverwendet Echtzeittranskription plus reguläres TTS; der Modusbidiverwendet den Echtzeit-Sprach-Provider. Der Standardpfad ist 24 kHz PCM16 mitchrome.audioBufferBytes: 4096; 8 kHz G.711 mu-law bleibt für ältere Befehlspaare verfügbar.chrome.audioBridgeCommand: Ein externer Bridge-Befehl verwaltet den gesamten lokalen Audiopfad und muss nach dem Starten oder Validieren seines Daemons beendet werden. Nur fürbidigültig, da der Modusagentfür TTS direkten Zugriff auf das Befehlspaar benötigt.
chrome.bargeInInputCommand ein separates lokales Mikrofon abhören und die Wiedergabe des Assistenten löschen, sobald ein Mensch zu sprechen beginnt. Dadurch hat menschliche Sprache Vorrang vor der Ausgabe des Assistenten, selbst wenn der gemeinsam genutzte BlackHole-Loopback-Eingang während der Wiedergabe des Assistenten vorübergehend unterdrückt wird. Wie chrome.audioInputCommand/chrome.audioOutputCommand handelt es sich um einen vom Operator konfigurierten lokalen Befehl: Verwenden Sie einen expliziten vertrauenswürdigen Befehlspfad oder eine Argumentliste, niemals ein Skript aus einem nicht vertrauenswürdigen Speicherort.
Für sauberes Duplex-Audio leiten Sie die Meet-Ausgabe und das Meet-Mikrofon über separate virtuelle Geräte oder einen virtuellen Gerätegraphen im Stil von Loopback; ein einzelnes gemeinsam genutztes BlackHole-Gerät kann Audio anderer Teilnehmer zurück in den Anruf spiegeln.
googlemeet speak löst die aktive Talkback-Audio-Bridge für eine Chrome-Sitzung aus; googlemeet leave stoppt sie (und legt bei Twilio-Sitzungen, die über Voice Call delegiert wurden, den zugrunde liegenden Anruf auf). Verwenden Sie googlemeet end-active-conference, um außerdem die aktive Google-Meet-Konferenz für einen API-verwalteten Bereich zu schließen.