google-meet приєднується до явних URL-адрес Meet від імені агента OpenClaw. Його можливості навмисно обмежені:
- Він приєднується лише до URL-адрес
https://meet.google.com/...; він ніколи самостійно не телефонує на зустріч за знайденим номером телефону. googlemeet createможе створити нову URL-адресу Meet через Google Meet API (або резервний варіант у браузері) і типово приєднатися до неї.- Участь через Chrome використовує профіль Chrome із виконаним входом, за потреби на спареному вузлі. Участь через Twilio передбачає набір номера телефону з PIN-кодом/DTMF через плагін голосових викликів; безпосередньо набрати URL-адресу Meet він не може.
mode: "agent"(типово) транскрибує мовлення учасників за допомогою постачальника послуг реального часу, спрямовує його налаштованому агенту OpenClaw і озвучує відповідь за допомогою звичайного TTS OpenClaw.mode: "bidi"дає змогу голосовій моделі реального часу відповідати безпосередньо.mode: "transcribe"приєднується лише для спостереження без голосових відповідей.- Під час приєднання плагіна до виклику автоматичне оголошення про згоду не відтворюється.
- Команда CLI —
googlemeet;meetзарезервовано для ширших сценаріїв телеконференцій агента.
Швидкий початок
Установіть локальні аудіозалежності, а потім задайте ключ постачальника послуг реального часу. OpenAI є типовим постачальником транскрибування для режимуagent; Google Gemini Live доступний як постачальник голосових послуг для режиму bidi:
blackhole-2ch установлює віртуальний аудіопристрій BlackHole 2ch, через який Chrome спрямовує звук. Інсталятор Homebrew вимагає перезавантаження, перш ніж macOS зробить пристрій доступним:
setup придатний для читання агентом і враховує режим та транспорт: він повідомляє про профіль Chrome, закріплення вузла, а для приєднань Chrome у реальному часі — про аудіоміст BlackHole/SoX і перевірку відкладеного вступу. Приєднання лише для спостереження пропускають передумови реального часу:
setup також повідомляє, чи готові voice-call, облікові дані Twilio та загальнодоступний Webhook. Вважайте будь-яку перевірку ok: false блокувальною для відповідного транспорту/режиму до приєднання агента. Використовуйте --json для машинозчитуваного виводу, а --transport chrome|chrome-node|twilio — для завчасної попередньої перевірки певного транспорту:
google_meet:
google_meet залишається доступним для дій з артефактами, календарем, налаштуванням, транскрибуванням, Twilio та chrome-node, але локальні голосові відповіді Chrome (transport: "chrome" із mode: "agent" або "bidi") блокуються до потрапляння в аудіоміст, оскільки цей шлях наразі залежить від macOS BlackHole 2ch. Натомість використовуйте mode: "transcribe", телефонне підключення через Twilio або хост macOS chrome-node.
Створення зустрічі
create має два шляхи, зазначені в полі source результату:
api: використовується, коли налаштовано облікові дані Google Meet OAuth. Детермінований; не залежить від стану інтерфейсу браузера.browser: використовується без облікових даних OAuth. OpenClaw відкриваєhttps://meet.google.com/newна закріпленому вузлі Chrome і чекає, доки Google переспрямує на справжню URL-адресу з кодом зустрічі; у профілі OpenClaw Chrome на цьому вузлі вже має бути виконано вхід у Google. І приєднання, і створення повторно використовують наявну вкладку Meet (або вкладку з незавершеним.../new/ запитом облікового запису Google), перш ніж відкрити нову; під час зіставлення вкладок ігноруються нешкідливі рядки запиту на кшталтauthuser.
create типово приєднується та повертає joined: true разом із сеансом приєднання. Передайте --no-join (CLI) або "join": false (інструмент), щоб лише створити URL-адресу.
Для кімнат, створених через API, задайте явну політику доступу замість успадкування типових налаштувань облікового запису Google:
Це стосується лише кімнат, створених через API, тому OAuth має бути налаштовано. Якщо автентифікацію виконано до появи цієї опції, повторно запустіть
openclaw googlemeet auth login --json після додавання області meetings.space.settings на екран згоди OAuth.
Якщо резервний варіант у браузері стикається з блокуванням через вхід у Google або дозволи Meet, інструмент повертає manualActionRequired: true із manualActionReason, manualActionMessage та browser.nodeId/browser.targetId/browserUrl. Повідомте це повідомлення й припиніть відкривати нові вкладки Meet, доки оператор не завершить дію в браузері.
Приєднання лише для спостереження
Установіть"mode": "transcribe", щоб пропустити дуплексний міст реального часу (без вимоги BlackHole/SoX і без голосових відповідей). Приєднання Chrome у режимі транскрибування також пропускають надання OpenClaw дозволу на мікрофон/камеру та шлях Meet Use microphone; якщо Meet показує проміжний екран вибору аудіо, автоматизація спочатку намагається вибрати Continue without microphone. Керовані транспорти Chrome у цьому режимі встановлюють спостерігач субтитрів Meet за принципом найкращих зусиль. googlemeet status --json і googlemeet doctor повідомляють captioning, captionsEnabledAttempted, transcriptLines, lastCaptionAt, lastCaptionSpeaker, lastCaptionText і хвіст recentTranscript.
Щоб отримати обмежену стенограму сеансу, прочитайте точну відстежувану вкладку Meet:
nextIndex не може пропустити пізніше розширення тексту; вихід завершує видимі рядки перед створенням знімка. droppedLines повідомляє про рядки, утрачені з початку після перевищення обмеження. Стенограми чотирьох останніх завершених сеансів залишаються доступними для читання до перезапуску Gateway. Старіші завершені стенограми повертають evicted: true. Це навмисно пам’ять середовища виконання, а не постійне сховище історії зустрічей: перезапуск Gateway, закриття вкладки до створення знімка або перевищення задокументованих обмежень може призвести до втрати субтитрів.
Для перевірки прослуховування з відповіддю «так/ні»:
listenVerified, listenTimedOut, поля ручних дій і поточний стан субтитрів.
Стан сеансу реального часу
Під час сеансів із голосовими відповідями станgoogle_meet повідомляє про справність Chrome/аудіомоста: inCall, manualActionRequired, providerConnected, realtimeReady, audioInputActive, audioOutputActive, часові позначки останнього вводу/виводу, лічильники байтів і стан закриття моста. Керовані сеанси Chrome озвучують вступну/тестову фразу лише після того, як стан справності повідомить inCall: true; інакше speechReady: false, а спроба мовлення блокується замість непомітної бездіяльності.
Локальні приєднання Chrome відбуваються через профіль браузера OpenClaw із виконаним входом і потребують BlackHole 2ch для шляху мікрофона/динаміка. Одного пристрою BlackHole достатньо для першої базової перевірки, але він може створювати відлуння; для чистого дуплексного аудіо використовуйте окремі віртуальні пристрої або граф у стилі Loopback.
Локальний Gateway + Chrome у Parallels
Повноцінний Gateway або ключ API моделі не потрібні всередині віртуальної машини macOS, якщо вона лише надає Chrome. Запускайте Gateway і агента локально, а хост вузла — у віртуальній машині.
Установіть залежності у віртуальній машині, перезавантажте її та перевірте:
<gateway-host> — це IP-адреса LAN без TLS, явно дозвольте використання цієї довіреної приватної мережі:
openclaw.json):
googlemeet.chrome, і можливість браузера/browser.proxy:
manualActionRequired: true із manualActionReason і manualActionMessage. Припиніть повторні спроби, повідомте це повідомлення разом із browserUrl/browserTitle і повторіть спробу лише після завершення ручної дії.
Якщо chromeNode.node не вказано, OpenClaw автоматично вибирає вузол лише тоді, коли рівно один підключений вузол заявляє про підтримку і googlemeet.chrome, і керування браузером; зафіксуйте chromeNode.node (ідентифікатор вузла, відображуване ім’я або віддалену IP-адресу), коли підключено кілька придатних вузлів.
Перевірки поширених помилок
Примітки щодо встановлення
Типова конфігурація зворотного аудіозв’язку Chrome використовує два зовнішні інструменти, які OpenClaw не постачає та не розповсюджує; установіть їх як залежності хоста через Homebrew:sox: утиліта командного рядка для роботи зі звуком. Plugin надсилає явні команди пристрою CoreAudio для типового аудіомоста PCM16 із частотою 24 кГц.blackhole-2ch: віртуальний аудіодрайвер macOS, що надає пристрійBlackHole 2ch, через який проходить маршрут Chrome/Meet.
LGPL-2.0-only AND GPL-2.0-only; BlackHole — за GPL-3.0. Якщо ви створюєте інсталятор або готовий пристрій, що постачає BlackHole разом з OpenClaw, перевірте умови ліцензування BlackHole від розробника або отримайте окрему ліцензію від Existential Audio.
Транспорти
Chrome
Відкриває URL-адресу Meet за допомогою керування браузером OpenClaw і приєднується через профіль браузера OpenClaw, у якому виконано вхід. У macOS Plugin перед запуском перевіряє наявністьBlackHole 2ch і, якщо налаштовано, запускає команду перевірки справності або запуску аудіомоста перед відкриттям Chrome. Для локального Chrome виберіть профіль за допомогою browser.defaultProfile; натомість chrome.browserProfile передається хостам chrome-node.
BlackHole 2ch не встановлено, приєднання завершується помилкою налаштування замість приєднання без аудіотракту.
Twilio
Строгий план набору, делегований Plugin голосових викликів. Він не аналізує сторінки Meet для пошуку телефонних номерів; Google Meet має надати для зустрічі номер телефонного підключення та PIN-код. Увімкніть Voice Call на хості Gateway, а не на вузлі Chrome:openclaw.json:
realtime.provider: "openai" разом із OPENAI_API_KEY.
Перезапустіть або перезавантажте Gateway після ввімкнення voice-call; зміни конфігурації Plugin не набудуть чинності до перезавантаження. Перевірте:
googlemeet setup містить перевірки twilio-voice-call-plugin, twilio-voice-call-credentials і twilio-voice-call-webhook.
--dtmf-sequence, додаючи на початку w або коми для паузи перед PIN-кодом:
OAuth і попередня перевірка
OAuth необов’язковий для створення посилання Meet, оскількиgooglemeet create може використати автоматизацію браузера як резервний варіант. Налаштуйте OAuth для офіційного створення через API, визначення простору або попередньої перевірки Meet Media API. Приєднання через Chrome/Chrome-node ніколи не залежать від OAuth; вони в будь-якому разі використовують профіль Chrome, у якому виконано вхід, BlackHole/SoX і (для chrome-node) підключений вузол.
Створення облікових даних Google
У Google Cloud Console:1
Створіть або виберіть проєкт
2
Увімкніть Google Meet REST API
3
Налаштуйте екран згоди OAuth
Варіант Internal найпростіший для організації Google Workspace. Варіант External підходить для особистих або тестових конфігурацій; поки застосунок перебуває в режимі Testing, додайте кожен обліковий запис Google, який його авторизуватиме, як тестового користувача.
4
Додайте запитувані області доступу
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(пошук у календарі)https://www.googleapis.com/auth/drive.meet.readonly(експорт тексту документа з транскриптом або інтелектуальними нотатками)
5
Створіть ідентифікатор клієнта OAuth
Тип застосунку Web application. Авторизована URI-адреса переспрямування:
6
Скопіюйте ідентифікатор клієнта та секрет клієнта
meetings.space.created потрібен для spaces.create. meetings.space.readonly зіставляє URL-адреси й коди Meet із просторами. meetings.space.settings дає OpenClaw змогу передавати параметри SpaceConfig, як-от accessType, під час створення кімнати через API. meetings.conference.media.readonly призначений для попередньої перевірки Meet Media API та роботи з медіа; для фактичного використання Media API Google може вимагати участі в Developer Preview. calendar.events.readonly потрібен лише для пошуку в календарі через --today/--event. drive.meet.readonly потрібен лише для експорту --include-doc-bodies. Якщо потрібні лише приєднання через Chrome на основі браузера, повністю пропустіть OAuth.
Створення токена оновлення
Налаштуйтеoauth.clientId і, за потреби, oauth.clientSecret (або передайте їх як змінні середовища), а потім виконайте:
http://localhost:8085/oauth2callback і виводить блок конфігурації oauth із токеном оновлення. Додайте --manual для потоку з копіюванням і вставленням, коли браузер не може отримати доступ до локального зворотного виклику:
oauth у конфігурації Plugin:
openclaw googlemeet auth login --json, щоб токен оновлення охоплював поточний набір областей доступу.
Перевірка OAuth за допомогою doctor
ok, configured, tokenSource, expiresAt, повідомлення перевірок) і ніколи не виводить токен доступу, токен оновлення або секрет клієнта.
Підтвердьте ввімкнення Meet API та область доступу
spaces.create за допомогою перевірки створення, що має побічний ефект:
403 у цих перевірках зазвичай означає, що Meet REST API вимкнено, у токена оновлення немає потрібної області доступу або обліковий запис Google не має доступу до цього простору. Помилка токена оновлення означає, що потрібно повторно виконати openclaw googlemeet auth login --json і зберегти новий блок oauth.
Для резервного варіанта через браузер OAuth не потрібен; автентифікація Google у цьому випадку надходить із профілю Chrome, у який виконано вхід на вибраному Node, а не з конфігурації OpenClaw.
Як резервні варіанти приймаються такі змінні середовища:
OPENCLAW_GOOGLE_MEET_CLIENT_IDабоGOOGLE_MEET_CLIENT_IDOPENCLAW_GOOGLE_MEET_CLIENT_SECRETабоGOOGLE_MEET_CLIENT_SECRETOPENCLAW_GOOGLE_MEET_REFRESH_TOKENабоGOOGLE_MEET_REFRESH_TOKENOPENCLAW_GOOGLE_MEET_ACCESS_TOKENабоGOOGLE_MEET_ACCESS_TOKENOPENCLAW_GOOGLE_MEET_ACCESS_TOKEN_EXPIRES_ATабоGOOGLE_MEET_ACCESS_TOKEN_EXPIRES_ATOPENCLAW_GOOGLE_MEET_DEFAULT_MEETINGабоGOOGLE_MEET_DEFAULT_MEETINGOPENCLAW_GOOGLE_MEET_PREVIEW_ACKабоGOOGLE_MEET_PREVIEW_ACK
Визначення, попередня перевірка та читання артефактів
--meeting команди artifacts та attendance типово використовують найновіший запис конференції; передайте --all-conference-records для кожного збереженого запису.
Пошук у календарі визначає URL зустрічі з Google Calendar перед читанням артефактів (потрібен токен оновлення, що містить область доступу лише для читання подій Calendar):
--today шукає в сьогоднішньому календарі primary подію з посиланням Meet; --event <query> шукає відповідний текст події; --calendar <id> націлюється на неосновний календар. calendar-events показує попередній перегляд відповідних подій і позначає, яку з них виберуть latest/artifacts/attendance/export.
Якщо ідентифікатор запису конференції вже відомий, зверніться до нього безпосередньо:
spaces.endActiveConference і потребує OAuth з областю доступу meetings.space.created для простору, яким може керувати авторизований обліковий запис. Приймає URL Meet, код зустрічі або spaces/{id} і спочатку визначає для нього ресурс простору API. Це окремо від googlemeet leave: leave припиняє локальну участь або участь у сеансі OpenClaw; end-active-conference просить Google Meet завершити активну конференцію для простору.
Створіть зручний для читання звіт:
artifacts повертає метадані запису конференції, а також метадані ресурсів учасників, записів, транскриптів, структурованих записів транскрипту та розумних нотаток, коли Google їх надає. --no-transcript-entries пропускає пошук записів для великих зустрічей. attendance розгортає учасників у рядки сеансів учасників із часом першої та останньої появи, загальною тривалістю сеансу, ознаками запізнення або дочасного виходу та об’єднанням дублікатів ресурсів учасників за користувачем, який увійшов у систему, або відображуваним ім’ям; --no-merge-duplicates зберігає необроблені ресурси окремо, а --late-after-minutes/--early-before-minutes налаштовують порогові значення.
export записує папку з summary.md, attendance.csv, transcript.md, artifacts.json, attendance.json та manifest.json. manifest.json фіксує вибрані вхідні дані, параметри експорту, записи конференції, вихідні файли, кількості, джерело токена, усі використані події Calendar і попередження про часткове отримання даних. --zip також записує переносний архів поруч із папкою. --include-doc-bodies експортує текст пов’язаних Google Docs із транскриптами та розумними нотатками через Drive files.export (потрібна область доступу Drive Meet лише для читання); без неї експорт містить лише метадані Meet і структуровані записи транскрипту. У разі часткової помилки артефакту (помилки отримання списку розумних нотаток, запису транскрипту або вмісту документа) попередження зберігається у зведенні або маніфесті замість завершення всього експорту з помилкою. --dry-run отримує ті самі дані та виводить JSON маніфесту без створення папки або ZIP-архіву.
Агенти використовують ті самі дії через інструмент google_meet (export, create з accessType, end_active_conference, test_listen); див. Інструмент.
Оперативна димова перевірка
Базова димова перевірка артефактів і відвідуваності потребує
meetings.space.readonly та meetings.conference.media.readonly. Для пошуку в календарі потрібен calendar.events.readonly. Для експорту вмісту документів Drive потрібен drive.meet.readonly.
Приклади створення
google_meet повертає структуровані відомості замість простого рядка:
manualActionRequired: true або помилку резервного варіанта через браузер і просить оператора завершити вхід у Google перед повторною спробою.
Установлюйте preview.enrollmentAcknowledged: true лише після підтвердження, що ваш хмарний проєкт, суб’єкт OAuth та учасники зустрічі зареєстровані в Google Workspace Developer Preview Program для медіа-API Meet.
Конфігурація
Для спільного шляху агента Chrome потрібні лише ввімкнений plugin, BlackHole, SoX, ключ постачальника реального часу та налаштований постачальник TTS OpenClaw:Типові значення
chrome.audioBridgeCommand і chrome.audioBridgeHealthCommand дають змогу зовнішньому мосту керувати всім локальним аудіотрактом замість chrome.audioInputCommand/chrome.audioOutputCommand; обмеження щодо режиму, у якому їх можна використовувати, див. у Примітках.
Існує міграція openclaw doctor --fix для застарілої структури realtime.provider: "google": вона переносить цей намір до realtime.voiceProvider: "google" разом із realtime.transcriptionProvider: "openai", якщо ці поля ще не задано.
Необов’язкові перевизначення
messages.tts.providers.elevenlabs.speakerVoiceId. Відповіді агента також можуть використовувати директиви [[tts:speakerVoiceId=... model=eleven_v3]] для кожної відповіді, коли перевизначення моделі TTS увімкнено, але конфігурація є детермінованим стандартним варіантом для зустрічей. Під час приєднання в журналах відображається transcriptionProvider=elevenlabs, а для кожної озвученої відповіді записується provider=elevenlabs model=eleven_v3 speakerVoiceId=<voiceId>.
Конфігурація лише для Twilio:
voiceCall.enabled: true (значенням за замовчуванням) і транспортом Twilio Voice Call вводить послідовність DTMF перед відкриттям медіапотоку реального часу, а потім використовує збережений текст вступу як початкове привітання в реальному часі. Якщо voice-call не ввімкнено, Google Meet усе одно може перевірити й записати план набору, але не може здійснити виклик Twilio.
Залиште voiceCall.gatewayUrl невстановленим, щоб використовувати локальне довірене середовище виконання Gateway, яке зберігає
агента-викликувача протягом усього виклику. Налаштована URL-адреса Gateway залишається явною ціллю WebSocket і
не може автентифікувати походження плагіна; приєднання агентів, відмінних від типового, завершується відмовою замість непомітного
використання іншого агента. Запускайте Google Meet і Voice Call в одному процесі Gateway, коли потрібна маршрутизація
за агентами.
Інструмент
Агенти використовують інструментgoogle_meet:
test_speech завжди примусово встановлює mode: "agent" або "bidi" і завершується помилкою, якщо його просять працювати в mode: "transcribe", оскільки сеанси лише для спостереження не можуть відтворювати мовлення. Його результат speechOutputVerified ґрунтується на збільшенні кількості вихідних аудіобайтів реального часу під час цього виклику, тому повторно використаний сеанс зі старішим аудіо не вважається новою перевіркою.
Для транспортів Chrome leave залишає повторно використану вкладку користувача відкритою після натискання кнопки завершення виклику Leave у Meet. Вкладки, відкриті OpenClaw, закриваються після виходу.
Використовуйте transport: "chrome", коли Chrome працює на хості Gateway, і transport: "chrome-node", коли він працює на спареному вузлі. В обох випадках постачальники моделей і openclaw_agent_consult працюють на хості Gateway, тому облікові дані моделей залишаються там. Журнали режиму агента містять визначені постачальника/модель транскрибування під час запуску мосту та постачальника/модель/голос/формат виведення/частоту дискретизації TTS після кожної синтезованої відповіді. Необроблений mode: "realtime" усе ще приймається як застарілий псевдонім сумісності для mode: "agent", але більше не оголошується в переліку mode інструмента.
create із кімнатою на основі API та явною політикою доступу:
status містить стан Chrome, коли він доступний:
Режими агента та bidi
Режим
agent: постачальник транскрибування реального часу отримує аудіо зустрічі, остаточні транскрипти учасників спрямовуються через налаштованого агента OpenClaw, а відповідь озвучується через звичайний TTS OpenClaw. Сусідні фрагменти остаточного транскрипту об’єднуються перед консультацією, щоб одна усна репліка не породжувала кілька застарілих часткових відповідей; вхід реального часу пригнічується, доки аудіо асистента в черзі ще відтворюється, а нещодавні відлуння транскрипту, схожі на мовлення асистента, ігноруються перед консультацією, щоб зворотний зв’язок BlackHole не змушував агента відповідати на власне мовлення.
Режим bidi: голосова модель реального часу відповідає безпосередньо й може викликати openclaw_agent_consult для глибшого міркування, актуальної інформації або звичайних інструментів OpenClaw. Інструмент консультації непомітно запускає звичайного агента OpenClaw із контекстом нещодавнього транскрипту зустрічі та повертає стислу усну відповідь; у режимі agent OpenClaw надсилає цю відповідь безпосередньо до TTS, у режимі bidi голосова модель реального часу може її озвучити. Він використовує той самий спільний механізм консультацій, що й Voice Call.
Типово консультації виконуються для агента main; установіть realtime.agentId, щоб спрямувати канал Meet на окремий робочий простір агента, типові параметри моделі, політику інструментів, пам’ять та історію сеансів. Консультації в режимі агента використовують окремий для кожної зустрічі ключ сеансу agent:<id>:subagent:google-meet:<session>, тому подальші запитання зберігають контекст зустрічі й водночас успадковують звичайну політику агента. Коли агент викликає google_meet у режимі агента, сеанс консультанта створює відгалуження поточного транскрипту агента-викликувача, перш ніж відповідати на мовлення учасника; сеанс Meet залишається окремим, тому подальші запитання зустрічі не змінюють транскрипт агента-викликувача безпосередньо.
realtime.toolPolicy керує виконанням консультації:
Ключ сеансу консультації має область дії окремого сеансу Meet, тому наступні виклики консультації повторно використовують попередній контекст консультації під час тієї самої зустрічі.
Примусово виконайте голосову перевірку готовності після повного приєднання Chrome:
Контрольний список перевірки в реальному середовищі
Перед передаванням зустрічі автономному агенту:googlemeet setupповністю зелений і міститьchrome-node-connected, коли Chrome-node є типовим транспортом або закріплено вузол.nodes statusпоказує, що вибраний вузол підключений і оголошує якgooglemeet.chrome, так іbrowser.proxy.- Вкладка Meet приєднується, а
test-speechповертає стан Chrome зinCall: true.
googlemeet setupмістить зелені перевіркиtwilio-voice-call-plugin,twilio-voice-call-credentialsіtwilio-voice-call-webhook.voicecallдоступний у CLI після перезавантаження Gateway.- Повернений сеанс має
transport: "twilio"іtwilio.voiceCallId. openclaw logs --followпоказує, що DTMF TwiML обслуговується перед TwiML реального часу, а потім створюється міст реального часу з початковим привітанням у черзі.googlemeet leave <sessionId>завершує делегований голосовий виклик.
Усунення несправностей
Агент не бачить інструмент Google Meet
Переконайтеся, що плагін увімкнено, і перезавантажте Gateway; запущений агент бачить лише інструменти плагінів, зареєстровані поточним процесом Gateway:google_meet залишається видимим, але локальні дії зворотного передавання звуку Chrome блокуються до потрапляння в аудіоміст. Замість стандартного шляху локального агента Chrome використовуйте mode: "transcribe", телефонне підключення Twilio або хост macOS chrome-node.
Немає підключеного Node з підтримкою Google Meet
На хості Node:googlemeet.chrome та browser.proxy; конфігурація Gateway має дозволяти обидві команди:
googlemeet setup завершує chrome-node-connected невдало або журнал Gateway повідомляє gateway token mismatch, перевстановіть чи перезапустіть Node з поточним токеном Gateway:
Браузер відкривається, але агент не може приєднатися
Запустітьgooglemeet test-listen для приєднання лише в режимі спостереження або googlemeet test-speech для приєднання в реальному часі, а потім перевірте повернений стан Chrome. Якщо будь-яка з команд повідомляє manualActionRequired: true, покажіть оператору manualActionMessage і припиніть повторні спроби, доки дію в браузері не буде завершено.
Поширені ручні дії: увійти в профіль Chrome; допустити гостя з облікового запису організатора Meet; надати Chrome дозволи на мікрофон і камеру, коли з’явиться системний запит; закрити або виправити зависле діалогове вікно дозволів Meet.
Не повідомляйте «не виконано вхід» лише тому, що Meet запитує «Do you want people to hear you in the meeting?»; це проміжний екран Meet для вибору аудіо. OpenClaw натискає Use microphone за допомогою автоматизації браузера, коли це можливо, і продовжує очікувати фактичного стану зустрічі; для резервного браузерного створення без приєднання натомість може бути натиснуто Continue without microphone, оскільки для створення URL не потрібен шлях аудіо в реальному часі.
Не вдається створити зустріч
googlemeet create використовує API Meet spaces.create, коли налаштовано OAuth, а інакше — браузер закріпленого Node Chrome. Перевірте:
- Створення через API: наявні
oauth.clientIdтаoauth.refreshToken(або відповідні змінні середовищаOPENCLAW_GOOGLE_MEET_*), а токен оновлення створено після додавання підтримки створення; старішим токенам може бракуватиmeetings.space.created, тому повторно запустітьopenclaw googlemeet auth login --json. - Резервний браузерний шлях:
defaultTransport: "chrome-node"іchromeNode.nodeвказують на підключений Node зbrowser.proxyтаgooglemeet.chrome; у профілі OpenClaw Chrome на цьому Node виконано вхід і він може відкритиhttps://meet.google.com/new. - Повторні спроби резервного браузерного шляху: повторно використовуйте наявну вкладку
.../newабо вкладку із запитом облікового запису Google, перш ніж відкривати нову; повторіть виклик інструмента замість ручного відкриття іншої вкладки. - Ручна дія: якщо інструмент повертає
manualActionRequired: true, використовуйтеbrowser.nodeId,browser.targetId,browserUrlіmanualActionMessage, щоб надати оператору вказівки; не повторюйте спроби циклічно. - Проміжний екран вибору аудіо: якщо Meet показує «Do you want people to hear you in the meeting?», залиште вкладку відкритою. OpenClaw має натиснути Use microphone або (лише для створення) Continue without microphone і продовжувати очікувати згенерований URL; якщо це не вдається, у помилці має згадуватися
meet-audio-choice-required, а неgoogle-login-required.
Агент приєднується, але не говорить
mode: "agent" для шляху STT -> агент OpenClaw -> TTS, а mode: "bidi" — для прямого резервного голосового зв’язку в реальному часі. mode: "transcribe" навмисно не запускає міст зворотного передавання звуку. Для налагодження лише в режимі спостереження запустіть openclaw googlemeet status --json <session-id> після того, як учасники заговорять, і перевірте captioning, transcriptLines, lastCaptionText. Якщо inCall має значення true, але transcriptLines залишається 0, субтитри Meet може бути вимкнено, після встановлення спостерігача ніхто не говорив, інтерфейс Meet змінився або живі субтитри недоступні для мови чи облікового запису зустрічі.
googlemeet test-speech завжди перевіряє шлях реального часу й повідомляє, чи спостерігалися вихідні байти мосту для цього виклику. Якщо speechOutputVerified має значення false, а speechOutputTimedOut — true, постачальник реального часу міг прийняти висловлювання, але OpenClaw не виявив, що нові вихідні байти надійшли до аудіомосту Chrome.
Також перевірте: на хості Gateway доступний ключ постачальника реального часу (OPENAI_API_KEY або GEMINI_API_KEY); BlackHole 2ch видимий на хості Chrome; там існує sox; мікрофон і динамік Meet спрямовані через віртуальний аудіошлях (doctor має показувати meet output routed: yes для локальних приєднань Chrome у реальному часі).
googlemeet doctor [session-id] виводить сеанс, Node, стан виклику, причину ручної дії, підключення постачальника реального часу, realtimeReady, активність аудіовходу й аудіовиходу, часові позначки останнього аудіо, лічильники байтів і URL браузера. Використовуйте googlemeet status [session-id] --json для необробленого JSON, а googlemeet doctor --oauth (додайте --meeting або --create-space) — щоб перевірити оновлення OAuth без розкриття токенів.
Якщо час очікування агента минув, а вкладку Meet уже відкрито, перевірте її, не відкриваючи нову:
recover_current_tab: вона фокусує й перевіряє наявну вкладку Meet для вибраного транспорту (локальне керування браузером для chrome, налаштований Node для chrome-node), не відкриваючи нової вкладки чи сеансу, і повідомляє про поточну перешкоду (вхід, допуск, дозволи, стан вибору аудіо). Команда CLI взаємодіє з налаштованим Gateway, який має бути запущений; для chrome-node також потрібно, щоб Node був підключений.
Перевірки налаштування Twilio завершуються невдало
twilio-voice-call-plugin завершується невдало, коли voice-call не дозволено або не ввімкнено: додайте його до plugins.allow, увімкніть plugins.entries.voice-call і перезавантажте Gateway.
twilio-voice-call-credentials завершується невдало, коли в бекенді Twilio відсутні SID облікового запису, токен автентифікації або номер абонента:
twilio-voice-call-webhook завершується невдало, коли voice-call не має загальнодоступної адреси Webhook або publicUrl вказує на loopback чи простір приватної мережі. Не використовуйте localhost, 127.0.0.1, 0.0.0.0, 10.x, 172.16.x-172.31.x, 192.168.x, 169.254.x, fc00::/7 або fd00::/8 як publicUrl; зворотні виклики оператора не можуть звернутися до них. Установіть для plugins.entries.voice-call.config.publicUrl загальнодоступний URL або налаштуйте доступ через тунель/Tailscale:
voicecall smoke за замовчуванням лише перевіряє готовність. Виконайте тестовий запуск для конкретного номера:
--yes лише для навмисного здійснення реального вихідного виклику:
Виклик Twilio починається, але не переходить до зустрічі
Переконайтеся, що подія Meet містить відомості для телефонного підключення, і передайте точний номер підключення разом із PIN-кодом або власною послідовністю DTMF:w або коми в --dtmf-sequence для паузи перед PIN-кодом.
Якщо виклик створено, але учасник, що підключається телефоном, так і не з’являється у списку Meet:
openclaw googlemeet doctor <session-id>: перевірте ідентифікатор делегованого виклику Twilio, чи додано DTMF до черги та чи було запитано вступне привітання.openclaw voicecall status --call-id <id>: переконайтеся, що виклик досі активний.openclaw voicecall tail: переконайтеся, що вебхуки Twilio надходять до Gateway.openclaw logs --follow: знайдіть послідовність Twilio Meet: Google Meet делегує приєднання, Voice Call зберігає та обслуговує DTMF TwiML до підключення, Voice Call обслуговує TwiML реального часу для виклику Twilio, а потім Google Meet запитує вступне мовлення черезvoicecall.speak.- Повторно запустіть
openclaw googlemeet setup --transport twilio; успішна перевірка налаштування є обов’язковою, але не доводить правильності послідовності PIN-коду зустрічі. - Переконайтеся, що номер телефонного підключення належить тому самому запрошенню Meet і регіону, що й PIN-код.
- Збільште
voiceCall.dtmfDelayMsпорівняно зі стандартним значенням 12 секунд, якщо Meet відповідає повільно або транскрипт виклику все ще показує запит PIN-коду після надсилання DTMF до підключення. - Якщо учасник приєднується, але привітання не чути, перевірте
openclaw logs --followна наявність запитуvoicecall.speakпісля DTMF і відтворення TTS через медіапотік або резервного варіанта Twilio<Say>. Якщо транскрипт усе ще показує «enter the meeting PIN», телефонне з’єднання ще не приєдналося до кімнати Meet, тому учасники не почують мовлення.
plugins.entries.voice-call.config.publicUrl або налаштованого тунелю. Див. усунення несправностей голосових викликів.
Примітки
Офіційний API мультимедіа Google Meet орієнтований на отримання даних, тому для мовлення у виклику все одно потрібен шлях учасника. Цей плагін чітко зберігає цю межу: Chrome забезпечує участь через браузер і локальне спрямування аудіо; Twilio забезпечує участь через телефонне підключення. Для режимів зворотного передавання звуку Chrome потрібенBlackHole 2ch і один із таких варіантів:
chrome.audioInputCommandплюсchrome.audioOutputCommand: OpenClaw керує мостом і передає аудіо вchrome.audioFormatміж цими командами та вибраним провайдером. Режимagentвикористовує транскрибування в реальному часі разом зі звичайним TTS; режимbidiвикористовує провайдера голосового зв’язку в реальному часі. Типовий шлях — 24 кГц PCM16 ізchrome.audioBufferBytes: 4096; 8 кГц G.711 mu-law залишається доступним для застарілих пар команд.chrome.audioBridgeCommand: зовнішня команда мосту керує всім локальним аудіотрактом і має завершити роботу після запуску або перевірки свого демона. Припустимо лише дляbidi, оскільки режимуagentпотрібен прямий доступ до пари команд для TTS.
chrome.bargeInInputCommand може прослуховувати окремий локальний мікрофон і прибирати відтворення асистента, коли людина починає говорити, надаючи мовленню людини пріоритет над виведенням асистента, навіть коли спільний петльовий вхід BlackHole тимчасово приглушено під час відтворення асистента. Як і chrome.audioInputCommand/chrome.audioOutputCommand, це локальна команда, яку налаштовує оператор: використовуйте явно вказаний довірений шлях до команди або список аргументів, але ніколи не використовуйте сценарій із недовіреного розташування.
Для чистого дуплексного аудіо спрямовуйте вихід Meet і мікрофон Meet через окремі віртуальні пристрої або граф віртуальних пристроїв на кшталт Loopback; один спільний пристрій BlackHole може повертати відлуння голосів інших учасників у виклик.
googlemeet speak запускає активний аудіоміст зворотного зв’язку для сеансу Chrome; googlemeet leave зупиняє його (а для сеансів Twilio, делегованих через Voice Call, завершує базовий виклик). Використовуйте googlemeet end-active-conference, щоб також закрити активну конференцію Google Meet для простору, керованого через API.