- Dołącza tylko do jawnego adresu URL
https://meet.google.com/.... - Może utworzyć nową przestrzeń Meet przez Google Meet API, a następnie dołączyć do zwróconego adresu URL.
agentto domyślny tryb odpowiedzi głosowej: transkrypcja w czasie rzeczywistym nasłuchuje, skonfigurowany agent OpenClaw odpowiada, a zwykłe TTS OpenClaw mówi w Meet.bidipozostaje dostępny jako zapasowy tryb bezpośredniego modelu głosowego w czasie rzeczywistym.- Agenci wybierają sposób dołączenia za pomocą
mode: użyjagentdo nasłuchiwania i odpowiedzi głosowej na żywo,bidijako bezpośredniego zapasowego trybu głosu w czasie rzeczywistym albotranscribedo dołączenia/sterowania przeglądarką bez mostka odpowiedzi głosowej. - Uwierzytelnianie zaczyna się jako osobisty Google OAuth albo już zalogowany profil Chrome.
- Nie ma automatycznego komunikatu o zgodzie.
- Domyślny backend audio Chrome to
BlackHole 2ch. - Chrome może działać lokalnie albo na sparowanym hoście węzła.
- Twilio przyjmuje numer do wdzwaniania oraz opcjonalny PIN lub sekwencję DTMF; nie może bezpośrednio wybierać adresu URL Meet.
- Polecenie CLI to
googlemeet;meetjest zarezerwowane dla szerszych przepływów pracy telekonferencji agenta.
Szybki start
Zainstaluj lokalne zależności audio i skonfiguruj dostawcę transkrypcji w czasie rzeczywistym oraz zwykłe TTS OpenClaw. OpenAI jest domyślnym dostawcą transkrypcji; Google Gemini Live działa również jako oddzielny zapasowy tryb głosowybidi z
realtime.voiceProvider: "google":
blackhole-2ch instaluje wirtualne urządzenie audio BlackHole 2ch. Instalator
Homebrew wymaga ponownego uruchomienia, zanim macOS udostępni urządzenie:
--mode transcribe; ten tryb pomija wymagania wstępne audio w czasie rzeczywistym,
ponieważ nie nasłuchuje przez mostek ani przez niego nie mówi:
voice-call, poświadczenia Twilio i publiczna ekspozycja Webhook są gotowe.
Traktuj każdą kontrolę ok: false jako blokującą dla sprawdzanego transportu i trybu,
zanim poprosisz agenta o dołączenie. Użyj openclaw googlemeet setup --json dla
skryptów lub danych wyjściowych czytelnych maszynowo. Użyj --transport chrome,
--transport chrome-node albo --transport twilio, aby wstępnie sprawdzić konkretny
transport, zanim agent go wypróbuje.
W przypadku Twilio zawsze wstępnie sprawdzaj transport jawnie, gdy domyślnym transportem
jest Chrome:
voice-call, poświadczenia Twilio lub nieosiągalną
ekspozycję Webhook, zanim agent spróbuje wdzwaniać się na spotkanie.
Dołącz do spotkania:
google_meet:
google_meet dla agentów pozostaje dostępne na hostach innych niż macOS dla
przepływów artefaktów, kalendarza, konfiguracji, transkrypcji, Twilio i chrome-node. Lokalne
akcje odpowiedzi głosowej Chrome są tam blokowane, ponieważ dołączona ścieżka audio Chrome
obecnie zależy od macOS BlackHole 2ch. W Linuksie użyj mode: "transcribe",
wdzwaniania Twilio albo hosta macOS chrome-node dla udziału w Chrome z odpowiedzią głosową.
Utwórz nowe spotkanie i dołącz do niego:
SpaceConfig.accessType, gdy chcesz,
aby polityka pokoju dotycząca dołączania bez proszenia o wpuszczenie była jawna zamiast odziedziczona z domyślnych ustawień konta Google:
OPEN pozwala każdemu z adresem URL Meet dołączyć bez proszenia o wpuszczenie. TRUSTED pozwala
zaufanym użytkownikom organizacji gospodarza, zaproszonym użytkownikom zewnętrznym i użytkownikom wdzwaniającym się
dołączyć bez proszenia o wpuszczenie. RESTRICTED ogranicza wejście bez proszenia o wpuszczenie do zaproszonych osób. Te
ustawienia mają zastosowanie tylko do oficjalnej ścieżki tworzenia przez Google Meet API, więc poświadczenia
OAuth muszą być skonfigurowane.
Jeśli uwierzytelniłeś Google Meet, zanim ta opcja była dostępna, uruchom ponownie
openclaw googlemeet auth login --json po dodaniu zakresu
meetings.space.settings do ekranu zgody Google OAuth.
Utwórz tylko adres URL bez dołączania:
googlemeet create ma dwie ścieżki:
- Tworzenie przez API: używane, gdy skonfigurowane są poświadczenia Google Meet OAuth. To najbardziej deterministyczna ścieżka i nie zależy od stanu interfejsu przeglądarki.
- Zapasowa ścieżka przeglądarki: używana, gdy brakuje poświadczeń OAuth. OpenClaw używa
przypiętego węzła Chrome, otwiera
https://meet.google.com/new, czeka, aż Google przekieruje do prawdziwego adresu URL z kodem spotkania, a następnie zwraca ten adres URL. Ta ścieżka wymaga, aby profil OpenClaw Chrome na węźle był już zalogowany do Google. Automatyzacja przeglądarki obsługuje własny monit Meet pierwszego uruchomienia o mikrofon; ten monit nie jest traktowany jako niepowodzenie logowania Google. Przepływy dołączania i tworzenia próbują też ponownie użyć istniejącej karty Meet przed otwarciem nowej. Dopasowywanie ignoruje nieszkodliwe ciągi zapytania URL, takie jakauthuser, więc ponowna próba agenta powinna skupić już otwarte spotkanie zamiast tworzyć drugą kartę Chrome.
source (api lub browser), aby agenci
mogli wyjaśnić, której ścieżki użyto. create domyślnie dołącza do nowego spotkania i
zwraca joined: true oraz sesję dołączenia. Aby tylko wygenerować adres URL, użyj
create --no-join w CLI albo przekaż "join": false do narzędzia.
Albo powiedz agentowi: „Utwórz Google Meet, dołącz do niego w trybie odpowiedzi głosowej agenta
i wyślij mi link”. Agent powinien wywołać google_meet z
action: "create", a następnie udostępnić zwrócone meetingUri.
"mode": "transcribe". To
nie uruchamia dwukierunkowego mostka głosowego w czasie rzeczywistym, nie wymaga BlackHole ani SoX
i nie będzie odpowiadać głosowo na spotkaniu. Dołączenia Chrome w tym trybie unikają również
przyznania przez OpenClaw uprawnień do mikrofonu/kamery i unikają ścieżki Meet Użyj
mikrofonu. Jeśli Meet pokaże ekran pośredni wyboru audio, automatyzacja próbuje
ścieżki bez mikrofonu, a w przeciwnym razie zgłasza ręczną akcję zamiast otwierać
lokalny mikrofon. W trybie transkrypcji zarządzane transporty Chrome instalują również
najlepszy możliwy obserwator napisów Meet. googlemeet status --json i
googlemeet doctor ujawniają captioning, captionsEnabledAttempted,
transcriptLines, lastCaptionAt, lastCaptionSpeaker, lastCaptionText
oraz krótki ogon recentTranscript, aby operatorzy mogli stwierdzić, czy przeglądarka
dołączyła do rozmowy i czy napisy Meet produkują tekst.
Użyj openclaw googlemeet test-listen <meet-url> --transport chrome-node, gdy
potrzebujesz sondy tak/nie: dołącza w trybie transkrypcji, czeka na świeży ruch napisów lub
transkryptu i zwraca listenVerified, listenTimedOut, pola ręcznej
akcji oraz najnowszy stan napisów.
Podczas sesji w czasie rzeczywistym status google_meet zawiera stan przeglądarki i mostka audio,
taki jak inCall, manualActionRequired, providerConnected,
realtimeReady, audioInputActive, audioOutputActive, znaczniki czasu ostatniego wejścia/wyjścia,
liczniki bajtów oraz stan zamknięcia mostka. Jeśli pojawi się bezpieczny monit strony Meet,
automatyzacja przeglądarki obsługuje go, gdy może. Logowanie, wpuszczenie przez gospodarza oraz
monity uprawnień przeglądarki/systemu operacyjnego są zgłaszane jako ręczna akcja z powodem i
komunikatem, który agent może przekazać. Zarządzane sesje Chrome emitują wprowadzenie albo
frazę testową dopiero po tym, jak stan przeglądarki zgłosi inCall: true; w przeciwnym razie status zgłasza
speechReady: false, a próba mówienia jest blokowana zamiast udawać, że
agent przemówił na spotkaniu.
Lokalne dołączenia Chrome przechodzą przez zalogowany profil przeglądarki OpenClaw. Tryb czasu rzeczywistego
wymaga BlackHole 2ch dla ścieżki mikrofonu/głośnika używanej przez OpenClaw. Dla
czystego dwukierunkowego audio użyj oddzielnych urządzeń wirtualnych albo grafu w stylu Loopback; pojedyncze
urządzenie BlackHole wystarczy do pierwszego testu dymnego, ale może powodować echo.
Lokalny Gateway + Chrome w Parallels
Nie potrzebujesz pełnego OpenClaw Gateway ani klucza API modelu w maszynie wirtualnej macOS tylko po to, aby VM była właścicielem Chrome. Uruchom Gateway i agenta lokalnie, a następnie uruchom hosta węzła w VM. Włącz dołączony plugin w VM jeden raz, aby węzeł reklamował polecenie Chrome: Co działa gdzie:- Host Gateway: OpenClaw Gateway, przestrzeń robocza agenta, klucze modelu/API, dostawca czasu rzeczywistego i konfiguracja pluginu Google Meet.
- Maszyna wirtualna Parallels macOS: OpenClaw CLI/host węzła, Google Chrome, SoX, BlackHole 2ch i profil Chrome zalogowany do Google.
- Niewymagane w VM: usługa Gateway, konfiguracja agenta, klucz OpenAI/GPT ani konfiguracja dostawcy modelu.
BlackHole 2ch:
<gateway-host> to adres IP LAN i nie używasz TLS, węzeł odrzuca
nieszyfrowany WebSocket, chyba że jawnie zgodzisz się na tę zaufaną sieć prywatną:
OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1 jest środowiskiem procesu, a nie ustawieniem
openclaw.json. openclaw node install zapisuje je w środowisku LaunchAgent,
gdy jest obecne w poleceniu instalacji.
Zatwierdź węzeł z hosta Gateway:
googlemeet.chrome,
jak i funkcję przeglądarki/browser.proxy:
google_meet z transport: "chrome-node".
Dla jedno-poleceniowego testu dymnego, który tworzy lub ponownie używa sesji, wypowiada znaną
frazę i wypisuje stan sesji:
manualActionRequired: true z manualActionReason i
manualActionMessage. Agenci powinni przerwać ponawianie dołączania, zgłosić dokładnie ten
komunikat razem z bieżącymi browserUrl/browserTitle i ponowić próbę dopiero po
ukończeniu ręcznej czynności w przeglądarce.
Jeśli chromeNode.node zostanie pominięte, OpenClaw wybiera automatycznie tylko wtedy, gdy dokładnie jeden
połączony węzeł ogłasza zarówno googlemeet.chrome, jak i sterowanie przeglądarką. Jeśli
połączonych jest kilka zgodnych węzłów, ustaw chromeNode.node na identyfikator węzła,
nazwę wyświetlaną albo zdalny adres IP.
Typowe kontrole awarii:
Configured Google Meet node ... is not usable: offline: przypięty węzeł jest znany Gateway, ale niedostępny. Agenci powinni traktować ten węzeł jako stan diagnostyczny, a nie używalny host Chrome, i zgłosić blokadę konfiguracji zamiast przełączać się na inny transport, chyba że użytkownik o to poprosił.No connected Google Meet-capable node: uruchomopenclaw node runw VM, zatwierdź parowanie i upewnij się, że w VM uruchomionoopenclaw plugins enable google-meetorazopenclaw plugins enable browser. Potwierdź też, że host Gateway pozwala na oba polecenia węzła za pomocągateway.nodes.allowCommands: ["googlemeet.chrome", "browser.proxy"].BlackHole 2ch audio device not found: zainstalujblackhole-2chna sprawdzanym hoście i uruchom go ponownie przed użyciem lokalnego audio Chrome.BlackHole 2ch audio device not found on the node: zainstalujblackhole-2chw VM i uruchom VM ponownie.- Chrome otwiera się, ale nie może dołączyć: zaloguj się do profilu przeglądarki wewnątrz VM albo
pozostaw ustawione
chrome.guestNamedla dołączania jako gość. Automatyczne dołączanie gościa używa automatyzacji przeglądarki OpenClaw przez proxy przeglądarki węzła; upewnij się, że konfiguracja przeglądarki węzła wskazuje profil, którego chcesz użyć, na przykładbrowser.defaultProfile: "user"albo nazwany profil istniejącej sesji. - Zduplikowane karty Meet: pozostaw włączone
chrome.reuseExistingTab: true. OpenClaw aktywuje istniejącą kartę dla tego samego URL Meet przed otwarciem nowej, a tworzenie spotkania w przeglądarce ponownie używa trwającej kartyhttps://meet.google.com/newalbo karty monitu konta Google przed otwarciem kolejnej. - Brak audio: w Meet skieruj mikrofon/głośnik przez ścieżkę wirtualnego urządzenia audio używaną przez OpenClaw; użyj osobnych urządzeń wirtualnych albo routingu w stylu Loopback dla czystego dwukierunkowego audio.
Uwagi dotyczące instalacji
Domyślny tryb talk-back Chrome używa dwóch zewnętrznych narzędzi:sox: narzędzie audio wiersza poleceń. Plugin używa jawnych poleceń urządzeń CoreAudio dla domyślnego mostka audio 24 kHz PCM16.blackhole-2ch: wirtualny sterownik audio macOS. Tworzy urządzenie audioBlackHole 2ch, przez które Chrome/Meet może kierować audio.
LGPL-2.0-only AND GPL-2.0-only; BlackHole ma licencję GPL-3.0. Jeśli budujesz
instalator albo appliance, który dołącza BlackHole z OpenClaw, przejrzyj warunki licencji
upstream BlackHole albo uzyskaj osobną licencję od Existential Audio.
Transporty
Chrome
Transport Chrome otwiera URL Meet przez sterowanie przeglądarką OpenClaw i dołącza jako zalogowany profil przeglądarki OpenClaw. Na macOS plugin sprawdza obecnośćBlackHole 2ch przed uruchomieniem. Jeśli skonfigurowano, uruchamia też polecenie
sprawdzenia kondycji mostka audio oraz polecenie startowe przed otwarciem Chrome. Użyj chrome, gdy
Chrome/audio działają na hoście Gateway; użyj chrome-node, gdy Chrome/audio działają
na sparowanym węźle, takim jak VM macOS Parallels. Dla lokalnego Chrome wybierz
profil za pomocą browser.defaultProfile; chrome.browserProfile jest przekazywane do
hostów chrome-node.
BlackHole 2ch nie jest zainstalowany, dołączenie kończy się błędem konfiguracji
zamiast cicho dołączać bez ścieżki audio.
Twilio
Transport Twilio jest ścisłym planem wybierania delegowanym do pluginu Voice Call. Nie parsuje stron Meet w poszukiwaniu numerów telefonów. Użyj tego, gdy udział przez Chrome jest niedostępny albo chcesz awaryjne dołączanie telefoniczne. Google Meet musi udostępniać numer telefoniczny do dołączenia i PIN dla spotkania; OpenClaw nie wykrywa ich ze strony Meet. Włącz plugin Voice Call na hoście Gateway, nie na węźle Chrome:openclaw.json:
realtime.provider: "openai" z pluginem dostawcy OpenAI oraz
OPENAI_API_KEY, jeśli to jest twój dostawca głosu realtime.
Uruchom ponownie albo przeładuj Gateway po włączeniu voice-call; zmiany konfiguracji pluginu
nie pojawią się w już działającym procesie Gateway, dopóki nie zostanie przeładowany.
Następnie zweryfikuj:
googlemeet setup zawiera pomyślne kontrole
twilio-voice-call-plugin, twilio-voice-call-credentials oraz
twilio-voice-call-webhook.
--dtmf-sequence, gdy spotkanie wymaga własnej sekwencji:
OAuth i preflight
OAuth jest opcjonalny przy tworzeniu linku Meet, ponieważgooglemeet create może przejść
na automatyzację przeglądarki. Skonfiguruj OAuth, gdy chcesz oficjalnego tworzenia przez API,
rozwiązywania przestrzeni albo kontroli preflight Meet Media API.
Dostęp do Google Meet API używa OAuth użytkownika: utwórz klienta OAuth Google Cloud,
zażądaj wymaganych zakresów, autoryzuj konto Google, a następnie zapisz
otrzymany token odświeżania w konfiguracji pluginu Google Meet albo podaj
zmienne środowiskowe OPENCLAW_GOOGLE_MEET_*.
OAuth nie zastępuje ścieżki dołączania przez Chrome. Transporty Chrome i Chrome-node
nadal dołączają przez zalogowany profil Chrome, BlackHole/SoX i połączony
węzeł, gdy używasz udziału przez przeglądarkę. OAuth służy tylko do oficjalnej ścieżki
Google Meet API: tworzenia przestrzeni spotkań, rozwiązywania przestrzeni i uruchamiania kontroli
preflight Meet Media API.
Utwórz poświadczenia Google
W Google Cloud Console:- Utwórz albo wybierz projekt Google Cloud.
- Włącz Google Meet REST API dla tego projektu.
-
Skonfiguruj ekran zgody OAuth.
- Internal jest najprostsze dla organizacji Google Workspace.
- External działa dla konfiguracji osobistych/testowych; gdy aplikacja jest w trybie Testing, dodaj każde konto Google, które będzie autoryzować aplikację, jako użytkownika testowego.
-
Dodaj zakresy wymagane przez OpenClaw:
https://www.googleapis.com/auth/meetings.space.createdhttps://www.googleapis.com/auth/meetings.space.readonlyhttps://www.googleapis.com/auth/meetings.space.settingshttps://www.googleapis.com/auth/meetings.conference.media.readonly
-
Utwórz identyfikator klienta OAuth.
- Typ aplikacji: Web application.
-
Autoryzowany URI przekierowania:
- Skopiuj identyfikator klienta i sekret klienta.
meetings.space.created jest wymagane przez Google Meet spaces.create.
meetings.space.readonly pozwala OpenClaw rozwiązywać URL-e/kody Meet na przestrzenie.
meetings.space.settings pozwala OpenClaw przekazywać ustawienia SpaceConfig, takie jak
accessType, podczas tworzenia pokoju przez API.
meetings.conference.media.readonly służy do preflight Meet Media API i pracy z mediami;
Google może wymagać rejestracji w Developer Preview do faktycznego użycia Media API.
Jeśli potrzebujesz tylko dołączeń przez Chrome opartych na przeglądarce, całkowicie pomiń OAuth.
Wygeneruj token odświeżania
Skonfigurujoauth.clientId i opcjonalnie oauth.clientSecret albo przekaż je jako
zmienne środowiskowe, a następnie uruchom:
oauth z tokenem odświeżania. Używa PKCE,
callbacku localhost pod http://localhost:8085/oauth2callback oraz ręcznego
przepływu kopiuj/wklej z --manual.
Przykłady:
oauth pod konfiguracją pluginu Google Meet:
openclaw googlemeet auth login --json, aby token odświeżania
miał zakres meetings.space.created.
Zweryfikuj OAuth za pomocą doctor
Uruchom doctor OAuth, gdy chcesz szybką kontrolę kondycji bez sekretów:ok, configured,
tokenSource, expiresAt i komunikaty kontroli; nie wypisuje tokenu dostępu,
tokenu odświeżania ani sekretu klienta.
Typowe wyniki:
| Sprawdzenie | Znaczenie |
|---|---|
oauth-config | Obecne jest oauth.clientId oraz oauth.refreshToken albo buforowany token dostępu. |
oauth-token | Buforowany token dostępu jest nadal ważny albo token odświeżania wydał nowy token dostępu. |
meet-spaces-get | Opcjonalne sprawdzenie --meeting rozwiązało istniejącą przestrzeń Meet. |
meet-spaces-create | Opcjonalne sprawdzenie --create-space utworzyło nową przestrzeń Meet. |
spaces.create, uruchom
sprawdzenie tworzenia z efektem ubocznym:
--create-space tworzy jednorazowy adres URL Meet. Użyj go, gdy musisz
potwierdzić, że projekt Google Cloud ma włączone Meet API i że autoryzowane
konto ma zakres meetings.space.created.
Aby potwierdzić dostęp do odczytu istniejącej przestrzeni spotkania:
doctor --oauth --meeting i resolve-space potwierdzają dostęp do odczytu
istniejącej przestrzeni, do której autoryzowane konto Google ma dostęp. 403 z
tych sprawdzeń zwykle oznacza, że Google Meet REST API jest wyłączone, zaakceptowany
token odświeżania nie ma wymaganego zakresu albo konto Google nie może uzyskać
dostępu do tej przestrzeni Meet. Błąd tokenu odświeżania oznacza, że trzeba ponownie
uruchomić openclaw googlemeet auth login --json i zapisać nowy blok oauth.
Dane logowania OAuth nie są potrzebne dla awaryjnej ścieżki przeglądarkowej. W
tym trybie uwierzytelnianie Google pochodzi z zalogowanego profilu Chrome na
wybranym węźle, a nie z konfiguracji OpenClaw.
Te zmienne środowiskowe są akceptowane jako wartości awaryjne:
OPENCLAW_GOOGLE_MEET_CLIENT_IDlubGOOGLE_MEET_CLIENT_IDOPENCLAW_GOOGLE_MEET_CLIENT_SECRETlubGOOGLE_MEET_CLIENT_SECRETOPENCLAW_GOOGLE_MEET_REFRESH_TOKENlubGOOGLE_MEET_REFRESH_TOKENOPENCLAW_GOOGLE_MEET_ACCESS_TOKENlubGOOGLE_MEET_ACCESS_TOKENOPENCLAW_GOOGLE_MEET_ACCESS_TOKEN_EXPIRES_ATlubGOOGLE_MEET_ACCESS_TOKEN_EXPIRES_ATOPENCLAW_GOOGLE_MEET_DEFAULT_MEETINGlubGOOGLE_MEET_DEFAULT_MEETINGOPENCLAW_GOOGLE_MEET_PREVIEW_ACKlubGOOGLE_MEET_PREVIEW_ACK
spaces/{id} przez spaces.get:
--meeting, artifacts i attendance domyślnie używają najnowszego rekordu
konferencji. Przekaż --all-conference-records, gdy chcesz uzyskać każdy
zachowany rekord dla tego spotkania.
Wyszukiwanie w kalendarzu może rozwiązać adres URL spotkania z Google Calendar
przed odczytem artefaktów Meet:
--today przeszukuje dzisiejszy kalendarz primary pod kątem wydarzenia
Calendar z linkiem Google Meet. Użyj --event <query>, aby wyszukać pasujący
tekst wydarzenia, oraz --calendar <id> dla kalendarza innego niż podstawowy.
Wyszukiwanie w kalendarzu wymaga świeżego logowania OAuth obejmującego zakres
tylko do odczytu wydarzeń Calendar. calendar-events pokazuje podgląd
pasujących wydarzeń Meet i oznacza wydarzenie, które wybiorą latest,
artifacts, attendance albo export.
Jeśli znasz już identyfikator rekordu konferencji, odwołaj się do niego bezpośrednio:
spaces.endActiveConference i wymaga OAuth z zakresem
meetings.space.created dla przestrzeni, którą autoryzowane konto może
zarządzać. OpenClaw akceptuje adres URL Meet, kod spotkania albo wejście
spaces/{id} i rozwiązuje je do zasobu przestrzeni API przed zakończeniem
aktywnej konferencji. Jest to oddzielne od googlemeet leave: leave zatrzymuje
lokalny/sesyjny udział OpenClaw, a end-active-conference prosi Google Meet o
zakończenie aktywnej konferencji dla przestrzeni.
Zapisz czytelny raport:
artifacts zwraca metadane rekordu konferencji oraz metadane zasobów
uczestników, nagrań, transkrypcji, strukturalnych wpisów transkrypcji i
inteligentnych notatek, gdy Google udostępnia je dla spotkania. Użyj
--no-transcript-entries, aby pominąć wyszukiwanie wpisów dla dużych spotkań.
attendance rozwija uczestników do wierszy sesji uczestników z czasami
pierwszego/ostatniego wykrycia, łącznym czasem trwania sesji, flagami spóźnienia
i wcześniejszego opuszczenia oraz zduplikowanymi zasobami uczestników scalonymi
według zalogowanego użytkownika albo nazwy wyświetlanej. Przekaż
--no-merge-duplicates, aby zachować surowe zasoby uczestników oddzielnie,
--late-after-minutes, aby dostroić wykrywanie spóźnień, oraz
--early-before-minutes, aby dostroić wykrywanie wcześniejszego opuszczenia.
export zapisuje folder zawierający summary.md, attendance.csv,
transcript.md, artifacts.json, attendance.json i manifest.json.
manifest.json rejestruje wybrane wejście, opcje eksportu, rekordy konferencji,
pliki wyjściowe, liczby, źródło tokenu, wydarzenie Calendar, jeśli go użyto, oraz
wszelkie ostrzeżenia o częściowym pobraniu. Przekaż --zip, aby zapisać także
przenośne archiwum obok folderu. Przekaż --include-doc-bodies, aby wyeksportować
tekst powiązanych dokumentów Google Docs z transkrypcją i inteligentnymi notatkami
przez Google Drive files.export; wymaga to świeżego logowania OAuth obejmującego
zakres tylko do odczytu Drive Meet. Bez --include-doc-bodies eksporty obejmują
tylko metadane Meet i strukturalne wpisy transkrypcji. Jeśli Google zwróci błąd
częściowego artefaktu, taki jak błąd listowania inteligentnych notatek, wpisu
transkrypcji albo treści dokumentu Drive, podsumowanie i manifest zachowają
ostrzeżenie zamiast przerywać cały eksport. Użyj --dry-run, aby pobrać te same
dane artefaktów/obecności i wypisać JSON manifestu bez tworzenia folderu ani
pliku ZIP. Jest to przydatne przed zapisaniem dużego eksportu albo gdy agent
potrzebuje tylko liczników, wybranych rekordów i ostrzeżeń.
Agenci mogą też utworzyć ten sam pakiet przez narzędzie google_meet:
"dryRun": true, aby zwrócić tylko manifest eksportu i pominąć zapisy plików.
Agenci mogą też utworzyć pokój oparty na API z jawną polityką dostępu:
test_listen, zanim
stwierdzą, że spotkanie jest użyteczne:
OPENCLAW_LIVE_TEST=1włącza chronione testy live.OPENCLAW_GOOGLE_MEET_LIVE_MEETINGwskazuje zachowany adres URL Meet, kod albospaces/{id}.OPENCLAW_GOOGLE_MEET_CLIENT_IDlubGOOGLE_MEET_CLIENT_IDdostarcza identyfikator klienta OAuth.OPENCLAW_GOOGLE_MEET_REFRESH_TOKENlubGOOGLE_MEET_REFRESH_TOKENdostarcza token odświeżania.- Opcjonalnie:
OPENCLAW_GOOGLE_MEET_CLIENT_SECRET,OPENCLAW_GOOGLE_MEET_ACCESS_TOKENiOPENCLAW_GOOGLE_MEET_ACCESS_TOKEN_EXPIRES_ATużywają tych samych nazw awaryjnych bez prefiksuOPENCLAW_.
https://www.googleapis.com/auth/meetings.space.readonly i
https://www.googleapis.com/auth/meetings.conference.media.readonly.
Wyszukiwanie w kalendarzu wymaga
https://www.googleapis.com/auth/calendar.events.readonly. Eksport treści
dokumentów Drive wymaga https://www.googleapis.com/auth/drive.meet.readonly.
Utwórz świeżą przestrzeń Meet:
meeting uri, źródło i sesję dołączenia. Z danymi
logowania OAuth używa oficjalnego Google Meet API. Bez danych logowania OAuth
używa jako awaryjnej ścieżki zalogowanego profilu przeglądarki przypiętego węzła
Chrome. Agenci mogą użyć narzędzia google_meet z action: "create", aby
utworzyć i dołączyć w jednym kroku. Aby utworzyć tylko adres URL, przekaż
"join": false.
Przykładowe wyjście JSON z awaryjnej ścieżki przeglądarkowej:
google_meet zwróci strukturalne szczegóły
zamiast zwykłego ciągu znaków:
manualActionRequired: true, powinien zgłosić
manualActionMessage wraz z kontekstem węzła/karty przeglądarki i przestać
otwierać nowe karty Meet, dopóki operator nie ukończy kroku w przeglądarce.
Przykładowe wyjście JSON z tworzenia przez API:
manualActionRequired: true albo błąd
awaryjnego użycia przeglądarki i prosi operatora o dokończenie logowania do Google przed
ponowną próbą.
Ustaw preview.enrollmentAcknowledged: true dopiero po potwierdzeniu, że Twój projekt Cloud,
principal OAuth oraz uczestnicy spotkania są zarejestrowani w Google
Workspace Developer Preview Program dla interfejsów Meet media API.
Konfiguracja
Wspólna ścieżka agenta Chrome wymaga tylko włączonego Plugin, BlackHole, SoX, klucza dostawcy transkrypcji w czasie rzeczywistym oraz skonfigurowanego dostawcy OpenClaw TTS. OpenAI jest domyślnym dostawcą transkrypcji; ustawrealtime.voiceProvider na
"google" i realtime.model, aby używać Google Gemini Live w trybie bidi
bez zmieniania domyślnego dostawcy transkrypcji dla trybu agenta:
plugins.entries.google-meet.config:
defaultTransport: "chrome"defaultMode: "agent"("realtime"jest akceptowane wyłącznie jako starszy alias zgodności dla"agent"; nowe wywołania narzędzi powinny podawać"agent")chromeNode.node: opcjonalny identyfikator/nazwa/IP węzła dlachrome-nodechrome.audioBackend: "blackhole-2ch"chrome.guestName: "OpenClaw Agent": nazwa używana na ekranie gościa Meet bez zalogowaniachrome.autoJoin: true: podejmowana w miarę możliwości próba wypełnienia nazwy gościa i kliknięcia Dołącz teraz przez automatyzację przeglądarki OpenClaw wchrome-nodechrome.reuseExistingTab: true: aktywuj istniejącą kartę Meet zamiast otwierać duplikatychrome.waitForInCallMs: 20000: czekaj, aż karta Meet zgłosi stan połączenia, zanim zostanie uruchomione wprowadzenie mówionechrome.audioFormat: "pcm16-24khz": format audio pary poleceń. Używaj"g711-ulaw-8khz"tylko dla starszych/niestandardowych par poleceń, które nadal emitują audio telefoniczne.chrome.audioBufferBytes: 4096: bufor przetwarzania SoX dla generowanych poleceń audio pary poleceń Chrome. To połowa domyślnego bufora SoX o rozmiarze 8192 bajtów, co zmniejsza domyślne opóźnienie potoku, pozostawiając możliwość zwiększenia go na obciążonych hostach. Wartości poniżej minimum SoX są ograniczane do 17 bajtów.chrome.audioInputCommand: polecenie SoX czytające z CoreAudioBlackHole 2chi zapisujące audio wchrome.audioFormatchrome.audioOutputCommand: polecenie SoX czytające audio wchrome.audioFormati zapisujące do CoreAudioBlackHole 2chchrome.bargeInInputCommand: opcjonalne polecenie lokalnego mikrofonu, które zapisuje podpisany 16-bitowy, little-endian, jednokanałowy PCM do wykrywania przerwania przez człowieka, gdy odtwarzanie asystenta jest aktywne. Obecnie dotyczy to hostowanego przez Gateway mostu pary poleceńchrome.chrome.bargeInRmsThreshold: 650: poziom RMS liczony jako przerwanie przez człowieka wchrome.bargeInInputCommandchrome.bargeInPeakThreshold: 2500: poziom szczytowy liczony jako przerwanie przez człowieka wchrome.bargeInInputCommandchrome.bargeInCooldownMs: 900: minimalne opóźnienie między kolejnymi wyczyszczeniami przerwań przez człowiekamode: "agent": domyślny tryb odpowiedzi mówionej. Mowa uczestnika jest transkrybowana przez skonfigurowanego dostawcę transkrypcji w czasie rzeczywistym, wysyłana do skonfigurowanego agenta OpenClaw w sesji podagenta dla danego spotkania i odtwarzana przez standardowe środowisko wykonawcze OpenClaw TTS.mode: "bidi": awaryjny bezpośredni, dwukierunkowy tryb modelu czasu rzeczywistego. Dostawca głosu czasu rzeczywistego odpowiada bezpośrednio na mowę uczestnika i może wywołaćopenclaw_agent_consult, aby uzyskać głębsze odpowiedzi lub odpowiedzi oparte na narzędziach.mode: "transcribe": tryb wyłącznie obserwacyjny bez mostu odpowiedzi mówionej.realtime.provider: "openai": awaryjna zgodność używana, gdy poniższe pola dostawcy o ograniczonym zakresie nie są ustawione.realtime.transcriptionProvider: "openai": identyfikator dostawcy używany przez trybagentdo transkrypcji w czasie rzeczywistym.realtime.voiceProvider: identyfikator dostawcy używany przez trybbidido bezpośredniego głosu w czasie rzeczywistym. Ustaw go na"google", aby używać Gemini Live przy zachowaniu transkrypcji trybu agenta w OpenAI.realtime.toolPolicy: "safe-read-only"realtime.instructions: krótkie odpowiedzi mówione, zopenclaw_agent_consultdla głębszych odpowiedzirealtime.introMessage: krótki mówiony test gotowości po połączeniu mostu czasu rzeczywistego; ustaw na"", aby dołączyć po cichurealtime.agentId: opcjonalny identyfikator agenta OpenClaw dlaopenclaw_agent_consult; domyślniemain
messages.tts.providers.elevenlabs.speakerVoiceId. Odpowiedzi agenta mogą również używać
dyrektyw dla odpowiedzi [[tts:speakerVoiceId=... model=eleven_v3]], gdy nadpisania modelu TTS
są włączone, ale konfiguracja jest deterministyczną wartością domyślną dla spotkań.
Po dołączeniu logi powinny pokazywać transcriptionProvider=elevenlabs, a każda
wypowiedziana odpowiedź powinna logować provider=elevenlabs model=eleven_v3 speakerVoiceId=<voiceId>.
Konfiguracja tylko dla Twilio:
voiceCall.enabled ma domyślnie wartość true; z transportem Twilio deleguje
właściwe połączenie PSTN, DTMF i powitanie wprowadzające do Plugin Voice Call. Voice Call
odtwarza sekwencję DTMF przed otwarciem strumienia multimediów czasu rzeczywistego, a następnie używa
zapisanego tekstu wprowadzenia jako początkowego powitania w czasie rzeczywistym. Jeśli voice-call nie jest
włączony, Google Meet nadal może zweryfikować i zarejestrować plan wybierania, ale nie może
wykonać połączenia Twilio.
Narzędzie
Agenci mogą używać narzędziagoogle_meet:
transport: "chrome", gdy Chrome działa na hoście Gateway. Użyj
transport: "chrome-node", gdy Chrome działa na sparowanym węźle, takim jak maszyna wirtualna Parallels.
W obu przypadkach dostawcy modeli i openclaw_agent_consult działają na hoście
Gateway, więc poświadczenia modeli pozostają tam. Przy domyślnym mode: "agent"
dostawca transkrypcji w czasie rzeczywistym obsługuje słuchanie, skonfigurowany agent OpenClaw
generuje odpowiedź, a zwykły OpenClaw TTS wypowiada ją w Meet. Użyj
mode: "bidi", gdy chcesz, aby model głosu w czasie rzeczywistym odpowiadał bezpośrednio.
Surowe mode: "realtime" pozostaje akceptowane jako starszy alias zgodności dla
mode: "agent", ale nie jest już reklamowane w schemacie narzędzia agenta.
Logi trybu agenta zawierają rozwiązanego dostawcę/model transkrypcji podczas uruchamiania mostu
oraz dostawcę TTS, model, głos, format wyjściowy i częstotliwość próbkowania po
każdej zsyntetyzowanej odpowiedzi.
Użyj action: "status", aby wyświetlić aktywne sesje lub sprawdzić identyfikator sesji. Użyj
action: "speak" z sessionId i message, aby agent czasu rzeczywistego
natychmiast przemówił. Użyj action: "test_speech", aby utworzyć lub ponownie użyć sesji,
uruchomić znaną frazę i zwrócić stan inCall, gdy host Chrome może
go zgłosić. test_speech zawsze wymusza mode: "agent" i kończy się niepowodzeniem, jeśli poproszono o
uruchomienie w mode: "transcribe", ponieważ sesje wyłącznie obserwacyjne celowo nie mogą
emitować mowy. Wynik speechOutputVerified opiera się na wzroście liczby bajtów wyjścia audio
w czasie rzeczywistym podczas tego wywołania testowego, więc ponownie użyta sesja ze starszym audio
nie liczy się jako świeży, pomyślny test mowy. Użyj action: "leave", aby oznaczyć
sesję jako zakończoną.
status zawiera stan Chrome, gdy jest dostępny:
inCall: wygląda na to, że Chrome jest wewnątrz połączenia MeetmicMuted: stan mikrofonu Meet ustalany w miarę możliwościmanualActionRequired/manualActionReason/manualActionMessage: profil przeglądarki wymaga ręcznego logowania, wpuszczenia przez gospodarza Meet, uprawnień albo naprawy sterowania przeglądarką, zanim mowa będzie działaćspeechReady/speechBlockedReason/speechBlockedMessage: czy zarządzana mowa Chrome jest teraz dozwolona.speechReady: falseoznacza, że OpenClaw nie wysłał frazy wprowadzającej/testowej do mostu audio.providerConnected/realtimeReady: stan mostu głosu w czasie rzeczywistymlastInputAt/lastOutputAt: ostatnie audio odebrane z mostu lub wysłane do niegoaudioOutputRouted/audioOutputDeviceLabel: czy wyjście multimediów karty Meet zostało aktywnie skierowane do urządzenia BlackHole używanego przez mostlastSuppressedInputAt/suppressedInputBytes: dane wejściowe local loopback ignorowane, gdy odtwarzanie asystenta jest aktywne
Tryby agent i bidi
Tryb Chromeagent jest zoptymalizowany pod zachowanie „mój agent jest na spotkaniu”. Dostawca
transkrypcji w czasie rzeczywistym słyszy audio spotkania, finalne transkrypcje uczestników
są kierowane przez skonfigurowanego agenta OpenClaw, a odpowiedź jest
wypowiadana przez standardowe środowisko wykonawcze OpenClaw TTS. Ustaw mode: "bidi", gdy chcesz,
aby model głosu w czasie rzeczywistym odpowiadał bezpośrednio.
Pobliskie finalne fragmenty transkrypcji są scalane przed konsultacją, aby jedna wypowiedziana
tura nie generowała kilku nieaktualnych częściowych odpowiedzi. Dane wejściowe czasu rzeczywistego są także
wyciszane, gdy zakolejkowane audio asystenta nadal jest odtwarzane,
a niedawne echa transkrypcji podobne do asystenta są ignorowane przed konsultacją agenta,
aby local loopback BlackHole nie sprawił, że agent odpowie na własną mowę.
| Tryb | Kto decyduje o odpowiedzi | Ścieżka wyjścia mowy | Użyj, gdy |
|---|---|---|---|
agent | Skonfigurowany agent OpenClaw | Standardowe środowisko wykonawcze OpenClaw TTS | Chcesz zachowania „mój agent jest na spotkaniu” |
bidi | Model głosu w czasie rzeczywistym | Odpowiedź audio dostawcy głosu w czasie rzeczywistym | Chcesz pętli konwersacyjnego głosu o najniższym opóźnieniu |
bidi, gdy model czasu rzeczywistego potrzebuje głębszego rozumowania, aktualnych
informacji albo zwykłych narzędzi OpenClaw, może wywołać openclaw_agent_consult.
Narzędzie consult uruchamia standardowego agenta OpenClaw w tle z kontekstem
najnowszej transkrypcji spotkania i zwraca zwięzłą odpowiedź mówioną. W trybie agent
OpenClaw wysyła tę odpowiedź bezpośrednio do środowiska uruchomieniowego TTS; w trybie bidi
model głosowy realtime może wypowiedzieć wynik consult z powrotem na spotkaniu. Używa
tego samego współdzielonego mechanizmu consult co Voice Call.
Domyślnie consult działa na agencie main. Ustaw realtime.agentId, gdy
ścieżka Meet ma konsultować się z dedykowaną przestrzenią roboczą agenta OpenClaw,
domyślnymi ustawieniami modelu, polityką narzędzi, pamięcią i historią sesji.
Consult w trybie agenta używa klucza sesji dla pojedynczego spotkania
agent:<id>:subagent:google-meet:<session>, dzięki czemu pytania uzupełniające
zachowują kontekst spotkania, dziedzicząc normalną politykę agenta ze skonfigurowanego
agenta.
realtime.toolPolicy steruje uruchomieniem consult:
safe-read-only: udostępnia narzędzie consult i ogranicza standardowego agenta doread,web_search,web_fetch,x_search,memory_searchorazmemory_get.owner: udostępnia narzędzie consult i pozwala standardowemu agentowi używać normalnej polityki narzędzi agenta.none: nie udostępnia narzędzia consult modelowi głosowemu realtime.
Lista kontrolna testu live
Użyj tej sekwencji przed przekazaniem spotkania nienadzorowanemu agentowi:googlemeet setupjest w całości zielony.googlemeet setupzawierachrome-node-connected, gdy Chrome-node jest domyślnym transportem albo węzeł jest przypięty.nodes statuspokazuje, że wybrany węzeł jest połączony.- Wybrany węzeł ogłasza zarówno
googlemeet.chrome, jak ibrowser.proxy. - Karta Meet dołącza do połączenia, a
test-speechzwraca stan Chrome zinCall: true.
googlemeet setupzawiera zielone kontroletwilio-voice-call-plugin,twilio-voice-call-credentialsitwilio-voice-call-webhook.voicecalljest dostępne w CLI po ponownym załadowaniu Gateway.- Zwrócona sesja ma
transport: "twilio"oraztwilio.voiceCallId. openclaw logs --followpokazuje TwiML DTMF obsłużony przed TwiML realtime, a następnie mostek realtime z początkowym powitaniem w kolejce.googlemeet leave <sessionId>rozłącza delegowane połączenie głosowe.
Rozwiązywanie problemów
Agent nie widzi narzędzia Google Meet
Potwierdź, że Plugin jest włączony w konfiguracji Gateway, i przeładuj Gateway:plugins.entries.google-meet, uruchom ponownie albo przeładuj Gateway.
Działający agent widzi tylko narzędzia Pluginów zarejestrowane przez bieżący proces
Gateway.
Na hostach Gateway innych niż macOS narzędzie google_meet widoczne dla agenta pozostaje widoczne,
ale lokalne akcje talk-back Chrome są blokowane, zanim dotrą do mostka audio.
Lokalny dźwięk talk-back Chrome obecnie zależy od macOS BlackHole 2ch, więc
agenty Linux powinny używać mode: "transcribe", połączenia telefonicznego Twilio albo hosta
macOS chrome-node zamiast domyślnej lokalnej ścieżki agenta Chrome.
Brak połączonego węzła obsługującego Google Meet
Na hoście węzła uruchom:googlemeet.chrome oraz browser.proxy.
Konfiguracja Gateway musi zezwalać na te polecenia węzła:
googlemeet setup nie zalicza chrome-node-connected albo log Gateway zgłasza
gateway token mismatch, zainstaluj ponownie albo uruchom ponownie węzeł z bieżącym tokenem Gateway.
Dla Gateway w LAN zwykle oznacza to:
Przeglądarka się otwiera, ale agent nie może dołączyć
Uruchomgooglemeet test-listen dla dołączeń tylko obserwacyjnych albo googlemeet test-speech
dla dołączeń realtime, a następnie sprawdź zwrócony stan Chrome. Jeśli którykolwiek test
zgłasza manualActionRequired: true, pokaż operatorowi manualActionMessage
i przestań ponawiać próby, dopóki akcja w przeglądarce nie zostanie ukończona.
Typowe akcje ręczne:
- Zaloguj się w profilu Chrome.
- Wpuść gościa z konta gospodarza Meet.
- Przyznaj Chrome uprawnienia do mikrofonu/kamery, gdy pojawi się natywny monit uprawnień Chrome.
- Zamknij albo napraw zablokowane okno dialogowe uprawnień Meet.
Tworzenie spotkania kończy się niepowodzeniem
googlemeet create najpierw używa punktu końcowego Google Meet API spaces.create,
gdy skonfigurowano dane uwierzytelniające OAuth. Bez danych uwierzytelniających OAuth przechodzi awaryjnie
do przeglądarki przypiętego węzła Chrome. Potwierdź:
- Dla tworzenia przez API: skonfigurowano
oauth.clientIdioauth.refreshToken, albo obecne są zgodne zmienne środowiskoweOPENCLAW_GOOGLE_MEET_*. - Dla tworzenia przez API: token odświeżania został wygenerowany po dodaniu obsługi tworzenia.
Starszym tokenom może brakować zakresu
meetings.space.created; uruchom ponownieopenclaw googlemeet auth login --jsoni zaktualizuj konfigurację Pluginu. - Dla awaryjnej ścieżki przeglądarki:
defaultTransport: "chrome-node"orazchromeNode.nodewskazują połączony węzeł zbrowser.proxyigooglemeet.chrome. - Dla awaryjnej ścieżki przeglądarki: profil Chrome OpenClaw na tym węźle jest zalogowany
do Google i może otworzyć
https://meet.google.com/new. - Dla awaryjnej ścieżki przeglądarki: ponowienia używają istniejącej karty
https://meet.google.com/newalbo monitu konta Google przed otwarciem nowej karty. Jeśli agent przekroczy limit czasu, ponów wywołanie narzędzia zamiast ręcznie otwierać kolejną kartę Meet. - Dla awaryjnej ścieżki przeglądarki: jeśli narzędzie zwraca
manualActionRequired: true, użyj zwróconychbrowser.nodeId,browser.targetId,browserUrlimanualActionMessage, aby pokierować operatorem. Nie ponawiaj prób w pętli, dopóki ta akcja nie zostanie ukończona. - Dla awaryjnej ścieżki przeglądarki: jeśli Meet pokazuje „Do you want people to hear you in the
meeting?”, zostaw kartę otwartą. OpenClaw powinien kliknąć Use microphone albo, dla
awaryjnej ścieżki tylko do tworzenia, Continue without microphone przez automatyzację
przeglądarki i kontynuować oczekiwanie na wygenerowany URL Meet. Jeśli nie może tego zrobić, błąd
powinien wskazywać
meet-audio-choice-required, a niegoogle-login-required.
Agent dołącza, ale nie mówi
Sprawdź ścieżkę realtime:mode: "agent" dla normalnej ścieżki STT -> agent OpenClaw -> talk-back TTS,
albo mode: "bidi" dla bezpośredniej awaryjnej ścieżki głosowej realtime. mode: "transcribe"
celowo nie uruchamia mostka talk-back. Do debugowania tylko obserwacyjnego
uruchom openclaw googlemeet status --json <session-id> po tym, jak uczestnicy zaczną mówić,
i sprawdź captioning, transcriptLines oraz lastCaptionText. Jeśli inCall ma wartość
true, ale transcriptLines pozostaje na 0, napisy Meet mogą być wyłączone, nikt
nie mówił od zainstalowania obserwatora, UI Meet się zmienił albo napisy live
są niedostępne dla języka/konta spotkania.
googlemeet test-speech zawsze sprawdza ścieżkę realtime i raportuje, czy
dla tego wywołania zaobserwowano bajty wyjściowe mostka. Jeśli speechOutputVerified jest false, a
speechOutputTimedOut jest true, dostawca realtime mógł zaakceptować
wypowiedź, ale OpenClaw nie zobaczył, aby nowe bajty wyjściowe dotarły do mostka audio
Chrome.
Zweryfikuj także:
- Klucz dostawcy realtime jest dostępny na hoście Gateway, na przykład
OPENAI_API_KEYalboGEMINI_API_KEY. BlackHole 2chjest widoczne na hoście Chrome.soxistnieje na hoście Chrome.- Mikrofon i głośnik Meet są kierowane przez wirtualną ścieżkę audio używaną przez
OpenClaw.
doctorpowinien pokazaćmeet output routed: yesdla lokalnych dołączeń realtime Chrome.
googlemeet doctor [session-id] wypisuje sesję, węzeł, stan w połączeniu,
powód akcji ręcznej, połączenie z dostawcą realtime, realtimeReady, aktywność
wejścia/wyjścia audio, ostatnie znaczniki czasu audio, liczniki bajtów i URL przeglądarki.
Użyj googlemeet status [session-id] --json, gdy potrzebujesz surowego JSON-a. Użyj
googlemeet doctor --oauth, gdy musisz zweryfikować odświeżanie OAuth Google Meet
bez ujawniania tokenów; dodaj --meeting albo --create-space, gdy potrzebujesz
także dowodu Google Meet API.
Jeśli agent przekroczył limit czasu i widzisz już otwartą kartę Meet, sprawdź tę kartę
bez otwierania kolejnej:
recover_current_tab. Ustawia fokus i sprawdza
istniejącą kartę Meet dla wybranego transportu. Z chrome używa lokalnej
kontroli przeglądarki przez Gateway; z chrome-node używa skonfigurowanego
węzła Chrome. Nie otwiera nowej karty ani nie tworzy nowej sesji; raportuje
bieżącą blokadę, taką jak logowanie, wpuszczenie, uprawnienia albo stan wyboru audio.
Polecenie CLI komunikuje się ze skonfigurowanym Gateway, więc Gateway musi działać;
chrome-node wymaga także połączenia węzła Chrome.
Kontrole konfiguracji Twilio kończą się niepowodzeniem
twilio-voice-call-plugin kończy się niepowodzeniem, gdy voice-call nie jest dozwolone albo włączone.
Dodaj je do plugins.allow, włącz plugins.entries.voice-call i przeładuj
Gateway.
twilio-voice-call-credentials kończy się niepowodzeniem, gdy backend Twilio nie ma identyfikatora SID konta,
tokenu uwierzytelniania albo numeru dzwoniącego. Ustaw je na hoście Gateway:
twilio-voice-call-webhook kończy się niepowodzeniem, gdy voice-call nie ma publicznej ekspozycji
Webhooka albo gdy publicUrl wskazuje na local loopback lub prywatną przestrzeń sieciową.
Ustaw plugins.entries.voice-call.config.publicUrl na publiczny URL dostawcy albo
skonfiguruj tunel/ekspozycję Tailscale dla voice-call.
Adresy URL pętli zwrotnej i prywatne nie są poprawne dla wywołań zwrotnych operatora. Nie używaj
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 ani fd00::/8 jako publicUrl.
Dla stabilnego publicznego URL-a:
voicecall smoke domyślnie sprawdza tylko gotowość. Aby wykonać próbę dla konkretnego numeru:
--yes tylko wtedy, gdy celowo chcesz wykonać rzeczywiste wychodzące połączenie
z powiadomieniem:
Połączenie Twilio się rozpoczyna, ale nigdy nie wchodzi do spotkania
Potwierdź, że wydarzenie Meet udostępnia szczegóły telefonicznego dołączania. Przekaż dokładny numer telefoniczny i PIN albo niestandardową sekwencję DTMF:w albo przecinków w --dtmf-sequence, jeśli dostawca potrzebuje pauzy
przed wprowadzeniem PIN-u.
Jeśli połączenie telefoniczne zostało utworzone, ale lista uczestników Meet nigdy nie pokazuje
uczestnika dołączonego telefonicznie:
- Uruchom
openclaw googlemeet doctor <session-id>, aby potwierdzić delegowany identyfikator połączenia Twilio, czy DTMF został zakolejkowany i czy poproszono o powitanie wstępne. - Uruchom
openclaw voicecall status --call-id <id>i potwierdź, że połączenie nadal jest aktywne. - Uruchom
openclaw voicecall taili sprawdź, czy Webhook Twilio docierają do Gateway. - Uruchom
openclaw logs --followi poszukaj sekwencji Twilio Meet: Google Meet deleguje dołączenie, Voice Call zapisuje i serwuje TwiML DTMF przed połączeniem, Voice Call serwuje TwiML czasu rzeczywistego dla połączenia Twilio, a następnie Google Meet żąda mowy wprowadzającej przezvoicecall.speak. - Uruchom ponownie
openclaw googlemeet setup --transport twilio; zielony wynik sprawdzenia konfiguracji jest wymagany, ale nie dowodzi, że sekwencja PIN-u spotkania jest poprawna. - Potwierdź, że numer telefoniczny należy do tego samego zaproszenia Meet i regionu co PIN.
- Zwiększ
voiceCall.dtmfDelayMsz domyślnych 12 sekund, jeśli Meet odpowiada powoli albo transkrypcja połączenia nadal pokazuje monit proszący o PIN po wysłaniu DTMF przed połączeniem. - Jeśli uczestnik dołącza, ale nie słyszysz powitania, sprawdź
openclaw logs --followpod kątem żądaniavoicecall.speakpo DTMF oraz odtwarzania TTS strumienia multimediów albo awaryjnego Twilio<Say>. Jeśli transkrypcja połączenia nadal zawiera „enter the meeting PIN”, noga telefoniczna nie dołączyła jeszcze do pokoju Meet, więc uczestnicy spotkania nie usłyszą mowy.
plugins.entries.voice-call.config.publicUrl albo skonfigurowany tunel.
Zobacz Rozwiązywanie problemów z połączeniami głosowymi.
Uwagi
Oficjalne API multimediów Google Meet jest zorientowane na odbiór, więc mówienie w połączeniu Meet nadal wymaga ścieżki uczestnika. Ten Plugin utrzymuje tę granicę widoczną: Chrome obsługuje uczestnictwo w przeglądarce i lokalne trasowanie audio; Twilio obsługuje uczestnictwo przez telefoniczne dołączanie. Tryby odpowiedzi głosowej Chrome wymagająBlackHole 2ch oraz jednego z poniższych:
chrome.audioInputCommandpluschrome.audioOutputCommand: OpenClaw zarządza mostkiem i przesyła audio wchrome.audioFormatmiędzy tymi poleceniami a wybranym dostawcą. Tryb agenta używa transkrypcji czasu rzeczywistego oraz zwykłego TTS; tryb bidi używa dostawcy głosu czasu rzeczywistego. Domyślna ścieżka Chrome to 24 kHz PCM16 zchrome.audioBufferBytes: 4096; 8 kHz G.711 mu-law pozostaje dostępne dla starszych par poleceń.chrome.audioBridgeCommand: zewnętrzne polecenie mostka zarządza całą lokalną ścieżką audio i musi zakończyć działanie po uruchomieniu albo zweryfikowaniu swojego demona. Jest to poprawne tylko dlabidi, ponieważ trybagentpotrzebuje bezpośredniego dostępu do par poleceń dla TTS.
google_meet w trybie agenta, sesja konsultanta spotkania
forkuje bieżącą transkrypcję wywołującego przed odpowiadaniem na mowę uczestników.
Sesja Meet nadal pozostaje oddzielna (agent:<agentId>:subagent:google-meet:<sessionId>),
więc dalsze działania spotkania nie mutują bezpośrednio transkrypcji wywołującego.
Aby uzyskać czysty dźwięk dwukierunkowy, trasuj wyjście Meet i mikrofon Meet przez oddzielne
urządzenia wirtualne albo graf urządzeń wirtualnych w stylu Loopback. Jedno współdzielone
urządzenie BlackHole może odbijać innych uczestników z powrotem do połączenia.
Przy mostku Chrome opartym na parze poleceń chrome.bargeInInputCommand może nasłuchiwać
oddzielnego lokalnego mikrofonu i czyścić odtwarzanie asystenta, gdy człowiek zaczyna
mówić. Dzięki temu mowa człowieka ma pierwszeństwo przed wyjściem asystenta nawet wtedy, gdy współdzielone
wejście loopback BlackHole jest tymczasowo tłumione podczas odtwarzania asystenta.
Podobnie jak chrome.audioInputCommand i chrome.audioOutputCommand, jest to
lokalne polecenie konfigurowane przez operatora. Użyj jawnej zaufanej ścieżki polecenia albo
listy argumentów i nie kieruj go do skryptów z niezaufanych lokalizacji.
googlemeet speak wyzwala aktywny mostek audio odpowiedzi głosowej dla sesji Chrome.
googlemeet leave zatrzymuje ten mostek. W przypadku sesji Twilio delegowanych
przez Plugin Voice Call leave rozłącza również bazowe połączenie głosowe.
Użyj googlemeet end-active-conference, gdy chcesz także zamknąć aktywną
konferencję Google Meet dla przestrzeni zarządzanej przez API.