From dfb44c8c9a7d8e9d261b230e2d7adffc476d6c4a Mon Sep 17 00:00:00 2001 From: "openclaw-docs-i18n[bot]" Date: Mon, 4 May 2026 00:33:48 +0000 Subject: [PATCH] chore(i18n): refresh uk translations --- docs/uk/plugins/google-meet.md | 782 ++++++++++++++------------------- 1 file changed, 328 insertions(+), 454 deletions(-) diff --git a/docs/uk/plugins/google-meet.md b/docs/uk/plugins/google-meet.md index be797a993..3514c1ea1 100644 --- a/docs/uk/plugins/google-meet.md +++ b/docs/uk/plugins/google-meet.md @@ -1,43 +1,43 @@ --- read_when: - Ви хочете, щоб агент OpenClaw приєднався до дзвінка Google Meet - - Ви хочете, щоб агент OpenClaw створив новий дзвінок Google Meet + - Ви хочете, щоб агент OpenClaw створив нову зустріч Google Meet - Ви налаштовуєте Chrome, вузол Chrome або Twilio як транспорт Google Meet -summary: 'Google Meet Plugin: приєднання до явних URL-адрес Meet через Chrome або Twilio з типовими налаштуваннями голосу в реальному часі' +summary: 'Plugin Google Meet: приєднання до явних URL-адрес Meet через Chrome або Twilio з типовими параметрами голосу в реальному часі' title: Plugin Google Meet x-i18n: - generated_at: "2026-05-02T10:00:33Z" + generated_at: "2026-05-04T00:29:59Z" model: gpt-5.5 provider: openai - source_hash: 0dc515382d2cc7beacaf18a50b75cb0f4eda3038cfd8efe73ea3ce7b5007bc43 + source_hash: 7635306e880d37f6f86afc0732322167ff785105201b5dd38658215b5439e6b0 source_path: plugins/google-meet.md workflow: 16 --- -Підтримка учасника Google Meet для OpenClaw — цей Plugin навмисно є явним: +Підтримка учасника Google Meet для OpenClaw — Plugin навмисно працює явно: - Він приєднується лише до явної URL-адреси `https://meet.google.com/...`. -- Він може створити новий простір Meet через Google Meet API, а потім приєднатися за - поверненою URL-адресою. -- `realtime`-голос є режимом за замовчуванням. -- Голос у реальному часі може звертатися назад до повного агента OpenClaw, коли потрібні глибші +- Він може створити новий простір Meet через Google Meet API, а потім приєднатися до + повернутої URL-адреси. +- `realtime` voice є режимом за замовчуванням. +- Realtime voice може звертатися назад до повного агента OpenClaw, коли потрібні глибше міркування або інструменти. - Агенти вибирають поведінку приєднання за допомогою `mode`: використовуйте `realtime` для живого - прослуховування/відповіді голосом або `transcribe`, щоб приєднатися/керувати браузером без - голосового мосту реального часу. + прослуховування/відповіді голосом або `transcribe`, щоб приєднатися й керувати браузером без + realtime voice bridge. - Автентифікація починається як особистий Google OAuth або вже авторизований профіль Chrome. -- Автоматичного оголошення згоди немає. -- Типовий аудіобекенд Chrome — `BlackHole 2ch`. +- Автоматичного оголошення про згоду немає. +- Стандартний аудіобекенд Chrome — `BlackHole 2ch`. - Chrome може працювати локально або на спареному вузловому хості. -- Twilio приймає номер дозвону плюс необов’язковий PIN або послідовність DTMF; він - не може напряму набрати URL Meet. +- Twilio приймає номер для дозвону плюс необов’язковий PIN або DTMF-послідовність; він + не може напряму набирати URL Meet. - Команда CLI — `googlemeet`; `meet` зарезервовано для ширших агентських телеконференційних робочих процесів. ## Швидкий старт -Установіть локальні аудіозалежності та налаштуйте бекенд-провайдер голосу реального часу. -OpenAI є типовим; Google Gemini Live також працює з +Установіть локальні аудіозалежності та налаштуйте бекенд realtime voice +провайдера. OpenAI використовується за замовчуванням; Google Gemini Live також працює з `realtime.provider: "google"`: ```bash @@ -47,8 +47,8 @@ export OPENAI_API_KEY=sk-... export GEMINI_API_KEY=... ``` -`blackhole-2ch` встановлює віртуальний аудіопристрій `BlackHole 2ch`. Інсталятор -Homebrew потребує перезавантаження, перш ніж macOS покаже пристрій: +`blackhole-2ch` встановлює віртуальний аудіопристрій `BlackHole 2ch`. Інсталятор Homebrew +потребує перезавантаження, перш ніж macOS покаже пристрій: ```bash sudo reboot @@ -82,35 +82,35 @@ command -v sox openclaw googlemeet setup ``` -Вивід налаштування призначений бути читабельним для агента та враховувати режим. Він повідомляє про профіль Chrome, -закріплення вузла, а для приєднань Chrome у режимі реального часу — про аудіоміст BlackHole/SoX -і відкладені перевірки вступу в реальному часі. Для приєднань лише для спостереження перевірте той самий -транспорт із `--mode transcribe`; цей режим пропускає передумови аудіо реального часу, -бо не слухає через міст і не говорить через нього: +Вивід налаштування призначений бути читабельним для агентів і враховувати режим. Він повідомляє про профіль Chrome +, прив’язку до вузла, а для realtime-приєднань через Chrome — про аудіоміст +BlackHole/SoX і перевірки відкладеного realtime-вступу. Для приєднань лише для спостереження перевірте той самий +транспорт за допомогою `--mode transcribe`; цей режим пропускає передумови realtime-аудіо, +оскільки він не слухає через міст і не говорить через нього: ```bash openclaw googlemeet setup --transport chrome-node --mode transcribe ``` -Коли делегування Twilio налаштоване, налаштування також повідомляє, чи готові -Plugin `voice-call`, облікові дані Twilio та публічне Webhook-оприлюднення. -Вважайте будь-яку перевірку `ok: false` блокером для перевірених транспорту й режиму +Коли налаштовано делегування Twilio, налаштування також повідомляє, чи готові +Plugin `voice-call`, облікові дані Twilio та публічна доступність Webhook. +Сприймайте будь-яку перевірку `ok: false` як блокер для перевіреного транспорту та режиму перед тим, як просити агента приєднатися. Використовуйте `openclaw googlemeet setup --json` для -скриптів або машинно-читабельного виводу. Використовуйте `--transport chrome`, +скриптів або машинозчитуваного виводу. Використовуйте `--transport chrome`, `--transport chrome-node` або `--transport twilio`, щоб попередньо перевірити конкретний транспорт до того, як агент спробує його використати. -Для Twilio завжди попередньо перевіряйте транспорт явно, коли типовим транспортом -є Chrome: +Для Twilio завжди явно попередньо перевіряйте транспорт, коли типовий транспорт +— Chrome: ```bash openclaw googlemeet setup --transport twilio ``` -Це виявляє відсутню проводку `voice-call`, облікові дані Twilio або недосяжне -Webhook-оприлюднення до того, як агент спробує набрати зустріч. +Це виявить відсутнє підключення `voice-call`, облікові дані Twilio або недоступну +експозицію Webhook до того, як агент спробує набрати зустріч. -Приєднатися до зустрічі: +Приєднайтеся до зустрічі: ```bash openclaw googlemeet join https://meet.google.com/abc-defg-hij @@ -127,21 +127,21 @@ openclaw googlemeet join https://meet.google.com/abc-defg-hij } ``` -Агентський інструмент `google_meet` залишається доступним на хостах не macOS для +Агентський інструмент `google_meet` залишається доступним на хостах не-macOS для артефактів, календаря, налаштування, транскрибування, Twilio та потоків `chrome-node`. Локальні -дії Chrome у режимі реального часу там заблоковані, бо вбудований аудіошлях Chrome -реального часу наразі залежить від macOS `BlackHole 2ch`. На Linux використовуйте -`mode: "transcribe"`, дозвін Twilio або macOS-хост `chrome-node` для участі Chrome -у режимі реального часу. +realtime-дії Chrome там заблоковані, бо вбудований realtime-аудіошлях Chrome +зараз залежить від macOS `BlackHole 2ch`. На Linux використовуйте +`mode: "transcribe"`, дозвін Twilio або macOS-хост `chrome-node` для realtime +участі через Chrome. -Створити нову зустріч і приєднатися до неї: +Створіть нову зустріч і приєднайтеся до неї: ```bash openclaw googlemeet create --transport chrome-node --mode realtime ``` -Для кімнат, створених через API, використовуйте Google Meet `SpaceConfig.accessType`, коли хочете, -щоб політика кімнати без стуку була явною, а не успадкованою з типових налаштувань +Для кімнат, створених API, використовуйте Google Meet `SpaceConfig.accessType`, коли хочете, +щоб політика кімнати щодо входу без стуку була явною, а не успадкованою з типових налаштувань облікового запису Google: ```bash @@ -150,15 +150,15 @@ openclaw googlemeet create --access-type OPEN --transport chrome-node --mode rea `OPEN` дозволяє будь-кому з URL Meet приєднатися без стуку. `TRUSTED` дозволяє довіреним користувачам організації хоста, запрошеним зовнішнім користувачам і користувачам дозвону -приєднуватися без стуку. `RESTRICTED` обмежує вхід без стуку запрошеними. Ці -налаштування застосовуються лише до офіційного шляху створення Google Meet API, тож облікові дані -OAuth мають бути налаштовані. +приєднуватися без стуку. `RESTRICTED` обмежує вхід без стуку лише запрошеними. Ці +налаштування застосовуються лише до офіційного шляху створення через Google Meet API, тому OAuth +облікові дані мають бути налаштовані. Якщо ви автентифікували Google Meet до появи цієї опції, повторно запустіть -`openclaw googlemeet auth login --json` після додавання області -`meetings.space.settings` до екрана згоди Google OAuth. +`openclaw googlemeet auth login --json` після додавання scope +`meetings.space.settings` на екрані згоди Google OAuth. -Створити лише URL без приєднання: +Створіть лише URL без приєднання: ```bash openclaw googlemeet create --no-join @@ -166,27 +166,27 @@ openclaw googlemeet create --no-join `googlemeet create` має два шляхи: -- Створення через API: використовується, коли налаштовані облікові дані Google Meet OAuth. Це +- Створення через API: використовується, коли налаштовано OAuth-облікові дані Google Meet. Це найбільш детермінований шлях, який не залежить від стану інтерфейсу браузера. -- Резервний браузерний шлях: використовується, коли облікові дані OAuth відсутні. OpenClaw використовує +- Резервний браузерний шлях: використовується, коли OAuth-облікові дані відсутні. OpenClaw використовує закріплений вузол Chrome, відкриває `https://meet.google.com/new`, чекає, доки Google - переспрямує на реальну URL-адресу з кодом зустрічі, а потім повертає цю URL-адресу. Цей шлях потребує, + перенаправить на справжню URL-адресу з кодом зустрічі, а потім повертає цю URL-адресу. Цей шлях вимагає, щоб профіль OpenClaw Chrome на вузлі вже був авторизований у Google. - Браузерна автоматизація обробляє власний перший запит Meet на мікрофон; цей запит + Браузерна автоматизація обробляє власну першу підказку Meet щодо мікрофона; ця підказка не вважається помилкою входу Google. Потоки приєднання та створення також намагаються повторно використати наявну вкладку Meet перед відкриттям - нової. Зіставлення ігнорує нешкідливі рядки запиту URL, такі як `authuser`, тож - повторна спроба агента має сфокусувати вже відкриту зустріч, а не створювати другу - вкладку Chrome. + нової. Зіставлення ігнорує безпечні рядки запиту URL, такі як `authuser`, тому + повторна спроба агента має сфокусувати вже відкриту зустріч замість створення другої + вкладки Chrome. Вивід команди/інструмента містить поле `source` (`api` або `browser`), щоб агенти могли пояснити, який шлях було використано. `create` за замовчуванням приєднується до нової зустрічі та -повертає `joined: true` плюс сеанс приєднання. Щоб лише створити URL, використовуйте -`create --no-join` у CLI або передайте `"join": false` інструменту. +повертає `joined: true` плюс сеанс приєднання. Щоб лише створити URL, +використовуйте `create --no-join` у CLI або передайте `"join": false` в інструмент. -Або скажіть агенту: "Створи Google Meet, приєднайся до нього з голосом у реальному часі та надішли +Або скажіть агенту: "Створи Google Meet, приєднайся до нього з realtime voice і надішли мені посилання." Агент має викликати `google_meet` з `action: "create"`, а -потім поділитися поверненим `meetingUri`. +потім поділитися повернутим `meetingUri`. ```json { @@ -196,50 +196,50 @@ openclaw googlemeet create --no-join } ``` -Для приєднання лише для спостереження/керування браузером установіть `"mode": "transcribe"`. Це -не запускає дуплексний міст моделі реального часу, не потребує BlackHole або SoX +Для приєднання лише для спостереження/керування браузером задайте `"mode": "transcribe"`. Це +не запускає двобічний realtime voice bridge, не потребує BlackHole або SoX і не відповідатиме голосом у зустрічі. Приєднання Chrome у цьому режимі також уникають -надання OpenClaw дозволів на мікрофон/камеру та уникають шляху Meet **Використовувати -мікрофон**. Якщо Meet показує проміжний екран вибору аудіо, автоматизація пробує -шлях без мікрофона, а інакше повідомляє про ручну дію замість відкриття -локального мікрофона. У режимі транскрибування керовані транспорти Chrome також установлюють +надання OpenClaw дозволу на мікрофон/камеру та обходять шлях Meet **Використовувати +мікрофон**. Якщо Meet показує проміжний екран вибору аудіо, автоматизація намагається +використати шлях без мікрофона, а в іншому разі повідомляє про ручну дію замість відкриття +локального мікрофона. У режимі transcribe керовані транспорти Chrome також установлюють best-effort спостерігач субтитрів Meet. `googlemeet status --json` і `googlemeet doctor` показують `captioning`, `captionsEnabledAttempted`, -`transcriptLines`, `lastCaptionAt`, `lastCaptionSpeaker`, `lastCaptionText`, +`transcriptLines`, `lastCaptionAt`, `lastCaptionSpeaker`, `lastCaptionText` і короткий хвіст `recentTranscript`, щоб оператори могли зрозуміти, чи браузер -приєднався до виклику та чи субтитри Meet створюють текст. +приєднався до дзвінка і чи субтитри Meet створюють текст. Використовуйте `openclaw googlemeet test-listen --transport chrome-node`, коли -потрібна перевірка так/ні: вона приєднується в режимі транскрибування, чекає на свіжі субтитри або -рух транскрипту та повертає `listenVerified`, `listenTimedOut`, поля ручних -дій і найновіший стан субтитрів. +потрібна перевірка так/ні: вона приєднується в режимі transcribe, чекає свіжого руху субтитрів або +транскрипту та повертає `listenVerified`, `listenTimedOut`, поля ручних +дій і останній стан субтитрів. -Під час сеансів реального часу статус `google_meet` містить стан браузера й аудіомоста, +Під час realtime-сеансів статус `google_meet` містить стан браузера й аудіомоста, як-от `inCall`, `manualActionRequired`, `providerConnected`, -`realtimeReady`, `audioInputActive`, `audioOutputActive`, останні часові позначки введення/виведення, -лічильники байтів і стан закриття мосту. Якщо з’являється безпечний запит сторінки Meet, -браузерна автоматизація обробляє його, коли може. Запити входу, допуску хостом і -дозволів браузера/ОС повідомляються як ручна дія з причиною та -повідомленням, яке агент має передати. Керовані сеанси Chrome видають вступну або -тестову фразу лише після того, як стан браузера повідомляє `inCall: true`; інакше статус повідомляє -`speechReady: false`, а спроба мовлення блокується замість того, щоб удавати, що +`realtimeReady`, `audioInputActive`, `audioOutputActive`, останні часові мітки вводу/виводу, +лічильники байтів і стан закриття моста. Якщо з’являється безпечна підказка сторінки Meet, +браузерна автоматизація обробляє її, коли може. Вхід, допуск хостом і +підказки дозволів браузера/ОС повідомляються як ручна дія з причиною та +повідомленням, яке агент може передати. Керовані сеанси Chrome видають вступ або +тестову фразу лише після того, як стан браузера повідомить `inCall: true`; інакше статус повідомляє +`speechReady: false`, а спроба мовлення блокується замість того, щоб удавати, ніби агент говорив у зустрічі. -Локальні приєднання Chrome виконуються через авторизований браузерний профіль OpenClaw. Режим реального часу +Локальні приєднання Chrome використовують авторизований профіль браузера OpenClaw. Realtime-режим потребує `BlackHole 2ch` для шляху мікрофона/динаміка, який використовує OpenClaw. Для -чистого дуплексного аудіо використовуйте окремі віртуальні пристрої або граф у стилі Loopback; одного -пристрою BlackHole достатньо для першого smoke test, але він може створювати відлуння. +чистого двобічного аудіо використовуйте окремі віртуальні пристрої або граф у стилі Loopback; одного +пристрою BlackHole достатньо для першого smoke test, але він може давати відлуння. ### Локальний Gateway + Parallels Chrome Вам **не** потрібен повний OpenClaw Gateway або ключ API моделі всередині macOS VM лише для того, щоб VM володіла Chrome. Запустіть Gateway і агента локально, а потім запустіть -вузловий хост у VM. Увімкніть вбудований Plugin у VM один раз, щоб вузол +вузловий хост у VM. Один раз увімкніть вбудований Plugin у VM, щоб вузол оголошував команду Chrome: Що де працює: -- Хост Gateway: OpenClaw Gateway, робочий простір агента, ключі моделі/API, провайдер - реального часу та конфігурація Plugin Google Meet. +- Хост Gateway: OpenClaw Gateway, робочий простір агента, ключі моделі/API, realtime + провайдер і конфігурація Plugin Google Meet. - Parallels macOS VM: OpenClaw CLI/вузловий хост, Google Chrome, SoX, BlackHole 2ch і профіль Chrome, авторизований у Google. - Не потрібно у VM: служба Gateway, конфігурація агента, ключ OpenAI/GPT або налаштування @@ -276,8 +276,8 @@ openclaw plugins enable google-meet openclaw node run --host --port 18789 --display-name parallels-macos ``` -Якщо `` є LAN IP і ви не використовуєте TLS, вузол відмовляється від -незашифрованого WebSocket, якщо ви явно не погодитеся для цієї довіреної приватної мережі: +Якщо `` — це LAN IP і ви не використовуєте TLS, вузол відмовиться від +plaintext WebSocket, якщо ви явно не дозволите його для цієї довіреної приватної мережі: ```bash OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1 \ @@ -310,7 +310,7 @@ openclaw devices approve openclaw nodes status ``` -Маршрутизуйте Meet через цей вузол на хості Gateway: +Спрямуйте Meet через цей вузол на хості Gateway: ```json5 { @@ -348,105 +348,56 @@ openclaw googlemeet join https://meet.google.com/abc-defg-hij або попросіть агента використати інструмент `google_meet` з `transport: "chrome-node"`. -Для однокомандного smoke test, який створює або повторно використовує сеанс, вимовляє відому +Для smoke test однією командою, який створює або повторно використовує сеанс, промовляє відому фразу та друкує стан сеансу: ```bash openclaw googlemeet test-speech https://meet.google.com/abc-defg-hij ``` -Під час realtime-приєднання браузерна автоматизація OpenClaw заповнює ім’я гостя, натискає -Join/Ask to join і приймає перший вибір Meet "Use microphone", коли цей -запит з’являється. Під час observe-only приєднання або створення зустрічі лише через браузер вона -проходить повз той самий запит без мікрофона, коли такий вибір доступний. -Якщо профіль браузера не ввійшов в обліковий запис, Meet очікує допуску від організатора, -Chrome потребує дозволу на мікрофон/камеру для realtime-приєднання, або Meet застряг -на запиті, який автоматизація не змогла розв’язати, результат join/test-speech повідомляє -`manualActionRequired: true` з `manualActionReason` і -`manualActionMessage`. Агенти мають припинити повторні спроби приєднання, повідомити це точне -повідомлення разом із поточними `browserUrl`/`browserTitle`, і повторити спробу лише після -завершення ручної дії в браузері. +Під час realtime-приєднання автоматизація браузера OpenClaw заповнює ім’я гостя, натискає Join/Ask to join і приймає початковий вибір Meet "Use microphone", коли з’являється цей запит. Під час приєднання лише для спостереження або створення зустрічі лише через браузер вона проходить той самий запит без мікрофона, коли такий вибір доступний. Якщо профіль браузера не ввійшов в обліковий запис, Meet очікує допуску від організатора, Chrome потребує дозволу на мікрофон/камеру для realtime-приєднання або Meet застряг на запиті, який автоматизація не змогла розв’язати, результат join/test-speech повідомляє `manualActionRequired: true` з `manualActionReason` і `manualActionMessage`. Агенти мають припинити повторювати приєднання, повідомити саме це повідомлення разом із поточними `browserUrl`/`browserTitle` і повторити спробу лише після завершення ручної дії в браузері. -Якщо `chromeNode.node` пропущено, OpenClaw виконує автовибір лише тоді, коли рівно один -під’єднаний вузол оголошує і `googlemeet.chrome`, і керування браузером. Якщо -під’єднано кілька придатних вузлів, установіть `chromeNode.node` як id вузла, -відображуване ім’я або віддалену IP-адресу. +Якщо `chromeNode.node` пропущено, OpenClaw автоматично вибирає лише тоді, коли рівно один підключений Node оголошує і `googlemeet.chrome`, і керування браузером. Якщо підключено кілька придатних Node, задайте `chromeNode.node` як ідентифікатор Node, відображуване ім’я або віддалену IP-адресу. -Поширені перевірки збоїв: +Типові перевірки збоїв: -- `Configured Google Meet node ... is not usable: offline`: закріплений вузол - відомий Gateway, але недоступний. Агенти мають трактувати цей вузол як - діагностичний стан, а не як придатний Chrome-хост, і повідомляти про блокер налаштування - замість переходу на інший транспорт, якщо користувач не просив цього. -- `No connected Google Meet-capable node`: запустіть `openclaw node run` у VM, - схваліть спарювання і переконайтеся, що `openclaw plugins enable google-meet` та - `openclaw plugins enable browser` були виконані у VM. Також підтвердьте, що - хост Gateway дозволяє обидві команди вузла за допомогою - `gateway.nodes.allowCommands: ["googlemeet.chrome", "browser.proxy"]`. -- `BlackHole 2ch audio device not found`: установіть `blackhole-2ch` на хості, - який перевіряється, і перезавантажтеся перед використанням локального аудіо Chrome. -- `BlackHole 2ch audio device not found on the node`: установіть `blackhole-2ch` - у VM і перезавантажте VM. -- Chrome відкривається, але не може приєднатися: увійдіть у профіль браузера всередині VM або - залиште `chrome.guestName` заданим для гостьового приєднання. Гостьове автоприєднання використовує браузерну - автоматизацію OpenClaw через проксі браузера вузла; переконайтеся, що конфігурація браузера вузла - вказує на потрібний профіль, наприклад - `browser.defaultProfile: "user"` або іменований профіль наявної сесії. -- Дублікати вкладок Meet: залиште `chrome.reuseExistingTab: true` увімкненим. OpenClaw - активує наявну вкладку для того самого URL Meet перед відкриттям нової, а - браузерне створення зустрічі повторно використовує поточну вкладку `https://meet.google.com/new` - або вкладку запиту облікового запису Google перед відкриттям іншої. -- Немає аудіо: у Meet спрямовуйте мікрофон/динамік через шлях віртуального аудіопристрою, - який використовує OpenClaw; використовуйте окремі віртуальні пристрої або маршрутизацію в стилі Loopback - для чистого двостороннього аудіо. +- `Configured Google Meet node ... is not usable: offline`: закріплений Node відомий Gateway, але недоступний. Агенти мають розглядати цей Node як діагностичний стан, а не як придатний хост Chrome, і повідомляти про блокер налаштування замість переходу на інший транспорт, якщо користувач не попросив про це. +- `No connected Google Meet-capable node`: запустіть `openclaw node run` у VM, схваліть спарювання і переконайтеся, що `openclaw plugins enable google-meet` та `openclaw plugins enable browser` були виконані у VM. Також підтвердьте, що хост Gateway дозволяє обидві команди Node через `gateway.nodes.allowCommands: ["googlemeet.chrome", "browser.proxy"]`. +- `BlackHole 2ch audio device not found`: установіть `blackhole-2ch` на хості, який перевіряється, і перезавантажте його перед використанням локального аудіо Chrome. +- `BlackHole 2ch audio device not found on the node`: установіть `blackhole-2ch` у VM і перезавантажте VM. +- Chrome відкривається, але не може приєднатися: увійдіть у профіль браузера всередині VM або залиште `chrome.guestName` заданим для гостьового приєднання. Автоматичне гостьове приєднання використовує автоматизацію браузера OpenClaw через проксі браузера Node; переконайтеся, що конфігурація браузера Node вказує на потрібний профіль, наприклад `browser.defaultProfile: "user"` або іменований профіль існуючого сеансу. +- Дублікати вкладок Meet: залиште `chrome.reuseExistingTab: true` увімкненим. OpenClaw активує наявну вкладку для тієї самої URL-адреси Meet перед відкриттям нової, а створення зустрічі в браузері повторно використовує незавершену вкладку `https://meet.google.com/new` або вкладку запиту облікового запису Google перед відкриттям іншої. +- Немає аудіо: у Meet спрямуйте мікрофон/динамік через шлях віртуального аудіопристрою, який використовує OpenClaw; використовуйте окремі віртуальні пристрої або маршрутизацію у стилі Loopback для чистого дуплексного аудіо. -## Примітки щодо встановлення +## Нотатки щодо встановлення Realtime-типовий режим Chrome використовує два зовнішні інструменти: -- `sox`: аудіоутиліта командного рядка. Plugin використовує явні команди CoreAudio - для пристрою для типового аудіомоста 24 kHz PCM16. -- `blackhole-2ch`: віртуальний аудіодрайвер macOS. Він створює аудіопристрій `BlackHole 2ch`, - через який Chrome/Meet можуть маршрутизувати звук. +- `sox`: аудіоутиліта командного рядка. Плагін використовує явні команди пристроїв CoreAudio для стандартного аудіомоста 24 kHz PCM16. +- `blackhole-2ch`: віртуальний аудіодрайвер macOS. Він створює аудіопристрій `BlackHole 2ch`, через який Chrome/Meet може виконувати маршрутизацію. -OpenClaw не включає й не розповсюджує жоден із цих пакетів. Документація просить користувачів -встановлювати їх як залежності хоста через Homebrew. SoX ліцензовано як -`LGPL-2.0-only AND GPL-2.0-only`; BlackHole має ліцензію GPL-3.0. Якщо ви створюєте -інсталятор або appliance, який включає BlackHole разом з OpenClaw, перегляньте -умови ліцензування BlackHole від upstream або отримайте окрему ліцензію від Existential Audio. +OpenClaw не вбудовує й не розповсюджує жоден із цих пакетів. Документація просить користувачів установити їх як залежності хоста через Homebrew. SoX ліцензовано як `LGPL-2.0-only AND GPL-2.0-only`; BlackHole має ліцензію GPL-3.0. Якщо ви створюєте інсталятор або appliance, який комплектує BlackHole разом з OpenClaw, перегляньте умови ліцензування upstream BlackHole або отримайте окрему ліцензію від Existential Audio. ## Транспорти ### Chrome -Транспорт Chrome відкриває URL Meet через керування браузером OpenClaw і приєднується -як профіль браузера OpenClaw, що ввійшов в обліковий запис. На macOS Plugin перед запуском -перевіряє наявність `BlackHole 2ch`. Якщо налаштовано, він також запускає команду -перевірки стану аудіомоста і команду запуску перед відкриттям Chrome. Використовуйте `chrome`, коли -Chrome/audio працюють на хості Gateway; використовуйте `chrome-node`, коли Chrome/audio працюють -на спареному вузлі, наприклад Parallels macOS VM. Для локального Chrome виберіть -профіль через `browser.defaultProfile`; `chrome.browserProfile` передається хостам -`chrome-node`. +Транспорт Chrome відкриває URL-адресу Meet через керування браузером OpenClaw і приєднується як профіль браузера OpenClaw, що ввійшов в обліковий запис. На macOS плагін перевіряє наявність `BlackHole 2ch` перед запуском. Якщо налаштовано, він також запускає команду перевірки стану аудіомоста і стартову команду перед відкриттям Chrome. Використовуйте `chrome`, коли Chrome/аудіо працюють на хості Gateway; використовуйте `chrome-node`, коли Chrome/аудіо працюють на спареному Node, наприклад Parallels macOS VM. Для локального Chrome виберіть профіль через `browser.defaultProfile`; `chrome.browserProfile` передається хостам `chrome-node`. ```bash openclaw googlemeet join https://meet.google.com/abc-defg-hij --transport chrome openclaw googlemeet join https://meet.google.com/abc-defg-hij --transport chrome-node ``` -Спрямовуйте аудіо мікрофона й динаміка Chrome через локальний аудіоміст OpenClaw. -Якщо `BlackHole 2ch` не встановлено, приєднання завершується помилкою налаштування -замість тихого приєднання без аудіошляху. +Спрямуйте аудіо мікрофона і динаміка Chrome через локальний аудіоміст OpenClaw. Якщо `BlackHole 2ch` не встановлено, приєднання завершується помилкою налаштування замість тихого приєднання без аудіошляху. ### Twilio -Транспорт Twilio — це суворий план набору, делегований Plugin Voice Call. Він -не аналізує сторінки Meet для пошуку телефонних номерів. +Транспорт Twilio — це строгий план набору, делегований плагіну Voice Call. Він не розбирає сторінки Meet для пошуку телефонних номерів. -Використовуйте це, коли участь через Chrome недоступна або потрібен резервний варіант -телефонного дозвону. Google Meet має показувати номер телефонного дозвону і PIN для -зустрічі; OpenClaw не виявляє їх зі сторінки Meet. +Використовуйте це, коли участь через Chrome недоступна або потрібен запасний варіант телефонного дозвону. Google Meet має надати телефонний номер дозвону і PIN для зустрічі; OpenClaw не виявляє їх зі сторінки Meet. -Увімкніть Plugin Voice Call на хості Gateway, а не на вузлі Chrome: +Увімкніть плагін Voice Call на хості Gateway, а не на Node Chrome: ```json5 { @@ -471,8 +422,7 @@ openclaw googlemeet join https://meet.google.com/abc-defg-hij --transport chrome } ``` -Надайте облікові дані Twilio через середовище або конфігурацію. Середовище тримає -секрети поза `openclaw.json`: +Надайте облікові дані Twilio через середовище або конфігурацію. Середовище не допускає потрапляння секретів у `openclaw.json`: ```bash export TWILIO_ACCOUNT_SID=AC... @@ -480,8 +430,7 @@ export TWILIO_AUTH_TOKEN=... export TWILIO_FROM_NUMBER=+15550001234 ``` -Перезапустіть або перезавантажте Gateway після ввімкнення `voice-call`; зміни конфігурації Plugin -не з’являться в уже запущеному процесі Gateway, доки він не перезавантажиться. +Перезапустіть або перезавантажте Gateway після ввімкнення `voice-call`; зміни конфігурації плагіна не з’являються в уже запущеному процесі Gateway, доки він не перезавантажиться. Потім перевірте: @@ -491,9 +440,7 @@ openclaw plugins list | grep -E 'google-meet|voice-call' openclaw googlemeet setup ``` -Коли делегування Twilio під’єднано, `googlemeet setup` містить успішні перевірки -`twilio-voice-call-plugin`, `twilio-voice-call-credentials` і -`twilio-voice-call-webhook`. +Коли делегування Twilio підключено, `googlemeet setup` містить успішні перевірки `twilio-voice-call-plugin`, `twilio-voice-call-credentials` і `twilio-voice-call-webhook`. ```bash openclaw googlemeet join https://meet.google.com/abc-defg-hij \ @@ -511,21 +458,13 @@ openclaw googlemeet join https://meet.google.com/abc-defg-hij \ --dtmf-sequence ww123456# ``` -## OAuth і попередня перевірка +## OAuth і preflight -OAuth необов’язковий для створення посилання Meet, бо `googlemeet create` може -відступити до браузерної автоматизації. Налаштуйте OAuth, коли потрібне офіційне створення через API, -розв’язання space або попередні перевірки Meet Media API. +OAuth необов’язковий для створення посилання Meet, оскільки `googlemeet create` може повернутися до автоматизації браузера. Налаштуйте OAuth, коли потрібне офіційне створення через API, розв’язання простору або preflight-перевірки Meet Media API. -Доступ до Google Meet API використовує користувацький OAuth: створіть OAuth-клієнт Google Cloud, -запросіть потрібні scopes, авторизуйте обліковий запис Google, а потім збережіть -отриманий refresh token у конфігурації Plugin Google Meet або надайте -змінні середовища `OPENCLAW_GOOGLE_MEET_*`. +Доступ до Google Meet API використовує OAuth користувача: створіть OAuth-клієнт Google Cloud, запросіть потрібні scopes, авторизуйте обліковий запис Google, а потім збережіть отриманий refresh token у конфігурації плагіна Google Meet або надайте змінні середовища `OPENCLAW_GOOGLE_MEET_*`. -OAuth не замінює шлях приєднання Chrome. Транспорти Chrome і Chrome-node -досі приєднуються через профіль Chrome, що ввійшов в обліковий запис, BlackHole/SoX і під’єднаний -вузол, коли ви використовуєте браузерну участь. OAuth призначений лише для офіційного шляху -Google Meet API: створення meeting spaces, розв’язання spaces і виконання попередніх перевірок Meet Media API. +OAuth не замінює шлях приєднання Chrome. Транспорти Chrome і Chrome-node все одно приєднуються через профіль Chrome, що ввійшов в обліковий запис, BlackHole/SoX і підключений Node, коли ви використовуєте участь через браузер. OAuth призначений лише для офіційного шляху Google Meet API: створення просторів зустрічей, розв’язання просторів і виконання preflight-перевірок Meet Media API. ### Створення облікових даних Google @@ -534,9 +473,8 @@ Google Meet API: створення meeting spaces, розв’язання spac 1. Створіть або виберіть проєкт Google Cloud. 2. Увімкніть **Google Meet REST API** для цього проєкту. 3. Налаштуйте екран згоди OAuth. - - **Internal** — найпростіше для організації Google Workspace. - - **External** працює для особистих/тестових налаштувань; поки застосунок у Testing, - додайте кожен обліковий запис Google, який авторизуватиме застосунок, як тестового користувача. + - **Internal** найпростіший для організації Google Workspace. + - **External** працює для особистих/тестових налаштувань; поки застосунок перебуває в Testing, додайте кожен обліковий запис Google, який авторизуватиме застосунок, як тестового користувача. 4. Додайте scopes, які запитує OpenClaw: - `https://www.googleapis.com/auth/meetings.space.created` - `https://www.googleapis.com/auth/meetings.space.readonly` @@ -544,7 +482,7 @@ Google Meet API: створення meeting spaces, розв’язання spac - `https://www.googleapis.com/auth/meetings.conference.media.readonly` 5. Створіть OAuth client ID. - Тип застосунку: **Web application**. - - Авторизований redirect URI: + - Авторизована URI перенаправлення: ```text http://localhost:8085/oauth2callback @@ -553,25 +491,20 @@ Google Meet API: створення meeting spaces, розв’язання spac 6. Скопіюйте client ID і client secret. `meetings.space.created` потрібен Google Meet `spaces.create`. -`meetings.space.readonly` дає OpenClaw змогу розв’язувати URL/коди Meet у spaces. -`meetings.space.settings` дає OpenClaw змогу передавати налаштування `SpaceConfig`, такі як -`accessType`, під час створення кімнати через API. -`meetings.conference.media.readonly` призначений для попередньої перевірки Meet Media API і роботи з медіа; -Google може вимагати реєстрації Developer Preview для фактичного використання Media API. -Якщо вам потрібні лише браузерні приєднання Chrome, повністю пропустіть OAuth. +`meetings.space.readonly` дає OpenClaw змогу розв’язувати URL-адреси/коди Meet у простори. +`meetings.space.settings` дає OpenClaw змогу передавати налаштування `SpaceConfig`, такі як `accessType`, під час створення кімнати через API. +`meetings.conference.media.readonly` призначений для preflight Meet Media API і роботи з медіа; Google може вимагати реєстрації в Developer Preview для фактичного використання Media API. +Якщо вам потрібні лише приєднання Chrome на основі браузера, повністю пропустіть OAuth. -### Випуск refresh token +### Отримання refresh token -Налаштуйте `oauth.clientId` і, за потреби, `oauth.clientSecret`, або передайте їх як -змінні середовища, а потім виконайте: +Налаштуйте `oauth.clientId` і, за потреби, `oauth.clientSecret`, або передайте їх як змінні середовища, а потім виконайте: ```bash openclaw googlemeet auth login --json ``` -Команда друкує конфігураційний блок `oauth` із refresh token. Вона використовує PKCE, -localhost callback на `http://localhost:8085/oauth2callback` і ручний -copy/paste flow з `--manual`. +Команда друкує конфігураційний блок `oauth` із refresh token. Вона використовує PKCE, localhost callback на `http://localhost:8085/oauth2callback` і ручний потік копіювання/вставлення з `--manual`. Приклади: @@ -581,7 +514,7 @@ OPENCLAW_GOOGLE_MEET_CLIENT_SECRET="your-client-secret" \ openclaw googlemeet auth login --json ``` -Використовуйте ручний режим, коли браузер не може досягти локального callback: +Використовуйте ручний режим, коли браузер не може дістатися локального callback: ```bash OPENCLAW_GOOGLE_MEET_CLIENT_ID="your-client-id" \ @@ -604,7 +537,7 @@ JSON-вивід містить: } ``` -Збережіть об’єкт `oauth` у конфігурації Plugin Google Meet: +Збережіть об’єкт `oauth` у конфігурації плагіна Google Meet: ```json5 { @@ -625,14 +558,9 @@ JSON-вивід містить: } ``` -Надавайте перевагу змінним середовища, якщо не хочете мати refresh token у конфігурації. -Якщо наявні і значення конфігурації, і значення середовища, Plugin спершу бере конфігурацію, -а потім використовує середовище як fallback. +Надавайте перевагу змінним середовища, коли не хочете зберігати refresh token у конфігурації. Якщо присутні і конфігураційні, і середовищні значення, плагін спочатку розв’язує конфігурацію, а потім використовує середовище як fallback. -Згода OAuth включає створення Meet space, доступ читання Meet space і доступ читання -медіа конференцій Meet. Якщо ви автентифікувалися до появи підтримки створення зустрічей, -повторно виконайте `openclaw googlemeet auth login --json`, щоб refresh token мав scope -`meetings.space.created`. +Згода OAuth включає створення просторів Meet, доступ на читання просторів Meet і доступ на читання медіа конференцій Meet. Якщо ви автентифікувалися до появи підтримки створення зустрічей, повторно виконайте `openclaw googlemeet auth login --json`, щоб refresh token мав scope `meetings.space.created`. ### Перевірка OAuth через doctor @@ -642,32 +570,27 @@ JSON-вивід містить: openclaw googlemeet doctor --oauth --json ``` -Це не завантажує runtime Chrome і не потребує під’єднаного вузла Chrome. Воно -перевіряє, що конфігурація OAuth існує і що refresh token може випустити access -token. JSON-звіт містить лише поля стану, такі як `ok`, `configured`, -`tokenSource`, `expiresAt`, і повідомлення перевірок; він не друкує access -token, refresh token або client secret. +Це не завантажує runtime Chrome і не потребує підключеного Node Chrome. Воно перевіряє, що конфігурація OAuth існує і що refresh token може видати access token. JSON-звіт містить лише поля стану, такі як `ok`, `configured`, `tokenSource`, `expiresAt`, і повідомлення перевірок; він не друкує access token, refresh token або client secret. -Поширені результати: +Типові результати: -| Перевірка | Значення | -| -------------------- | ----------------------------------------------------------------------------------------- | -| `oauth-config` | Наявні `oauth.clientId` плюс `oauth.refreshToken` або кешований access token. | -| `oauth-token` | Кешований access token досі чинний, або refresh token випустив новий access token. | -| `meet-spaces-get` | Необов’язкова перевірка `--meeting` розв’язала наявний Meet space. | -| `meet-spaces-create` | Необов’язкова перевірка `--create-space` створила новий Meet space. | +| Перевірка | Значення | +| -------------------- | --------------------------------------------------------------------------------------- | +| `oauth-config` | Наявні `oauth.clientId` плюс `oauth.refreshToken` або кешований access token. | +| `oauth-token` | Кешований access token усе ще чинний або refresh token видав новий access token. | +| `meet-spaces-get` | Необов’язкова перевірка `--meeting` розв’язала наявний простір Meet. | +| `meet-spaces-create` | Необов’язкова перевірка `--create-space` створила новий простір Meet. | -Щоб також довести ввімкнення Google Meet API і scope `spaces.create`, запустіть -перевірку створення з побічним ефектом: +Щоб також підтвердити ввімкнення Google Meet API і scope `spaces.create`, виконайте перевірку створення з побічним ефектом: ```bash openclaw googlemeet doctor --oauth --create-space --json openclaw googlemeet create --no-join --json ``` -`--create-space` створює тимчасову URL-адресу Meet. Використовуйте його, коли потрібно підтвердити, +`--create-space` створює одноразову URL-адресу Meet. Використовуйте це, коли потрібно підтвердити, що в проєкті Google Cloud увімкнено Meet API і що авторизований -обліковий запис має область доступу `meetings.space.created`. +обліковий запис має область `meetings.space.created`. Щоб підтвердити доступ на читання для наявного простору зустрічі: @@ -679,15 +602,15 @@ openclaw googlemeet resolve-space --meeting https://meet.google.com/abc-defg-hij `doctor --oauth --meeting` і `resolve-space` підтверджують доступ на читання до наявного простору, до якого авторизований обліковий запис Google має доступ. `403` від цих перевірок зазвичай означає, що Google Meet REST API вимкнено, погоджений refresh token -не має потрібної області доступу або обліковий запис Google не може отримати доступ до цього -простору Meet. Помилка refresh-token означає, що потрібно повторно виконати `openclaw googlemeet auth login +не має потрібної області або обліковий запис Google не може отримати доступ до цього простору +Meet. Помилка refresh-token означає, що потрібно повторно виконати `openclaw googlemeet auth login --json` і зберегти новий блок `oauth`. -Для резервного браузерного режиму облікові дані OAuth не потрібні. У цьому режимі Google -auth надходить із профілю Chrome з виконаним входом на вибраному вузлі, а не з +Для резервного браузерного режиму облікові дані OAuth не потрібні. У цьому режимі автентифікація Google +береться з профілю Chrome, у який виконано вхід на вибраному вузлі, а не з конфігурації OpenClaw. -Ці змінні середовища приймаються як резервні значення: +Ці змінні середовища приймаються як резервні: - `OPENCLAW_GOOGLE_MEET_CLIENT_ID` або `GOOGLE_MEET_CLIENT_ID` - `OPENCLAW_GOOGLE_MEET_CLIENT_SECRET` або `GOOGLE_MEET_CLIENT_SECRET` @@ -698,7 +621,7 @@ auth надходить із профілю Chrome з виконаним вхо - `OPENCLAW_GOOGLE_MEET_DEFAULT_MEETING` або `GOOGLE_MEET_DEFAULT_MEETING` - `OPENCLAW_GOOGLE_MEET_PREVIEW_ACK` або `GOOGLE_MEET_PREVIEW_ACK` -Розв’яжіть URL-адресу Meet, код або `spaces/{id}` через `spaces.get`: +Визначте Meet URL, код або `spaces/{id}` через `spaces.get`: ```bash openclaw googlemeet resolve-space --meeting https://meet.google.com/abc-defg-hij @@ -719,10 +642,10 @@ openclaw googlemeet export --meeting https://meet.google.com/abc-defg-hij --outp ``` З `--meeting`, `artifacts` і `attendance` типово використовують найновіший запис конференції. -Передайте `--all-conference-records`, коли потрібні всі збережені записи +Передайте `--all-conference-records`, якщо потрібні всі збережені записи для цієї зустрічі. -Пошук у календарі може розв’язати URL-адресу зустрічі з Google Calendar перед читанням +Пошук у календарі може визначити URL зустрічі з Google Calendar перед читанням артефактів Meet: ```bash @@ -732,14 +655,14 @@ openclaw googlemeet artifacts --event "Weekly sync" openclaw googlemeet attendance --today --format csv --output attendance.csv ``` -`--today` шукає в сьогоднішньому календарі `primary` подію Calendar з -посиланням Google Meet. Використовуйте `--event ` для пошуку відповідного тексту події та -`--calendar ` для неосновного календаря. Пошук у календарі потребує нового -входу OAuth, який включає область доступу Calendar events readonly. +`--today` шукає в сьогоднішньому календарі `primary` подію Calendar із +посиланням Google Meet. Використовуйте `--event ` для пошуку відповідного тексту події, і +`--calendar ` для неосновного календаря. Пошук у календарі потребує свіжого +входу OAuth, який включає область readonly для подій Calendar. `calendar-events` попередньо показує відповідні події Meet і позначає подію, яку -вибере `latest`, `artifacts`, `attendance` або `export`. +виберуть `latest`, `artifacts`, `attendance` або `export`. -Якщо ви вже знаєте ідентифікатор запису конференції, звертайтеся до нього напряму: +Якщо ви вже знаєте id запису конференції, звертайтеся до нього напряму: ```bash openclaw googlemeet latest --meeting https://meet.google.com/abc-defg-hij @@ -747,7 +670,7 @@ openclaw googlemeet artifacts --conference-record conferenceRecords/abc123 --jso openclaw googlemeet attendance --conference-record conferenceRecords/abc123 --json ``` -Завершіть активну конференцію для створеного через API простору, коли потрібно закрити +Завершіть активну конференцію для простору, створеного через API, коли потрібно закрити кімнату після дзвінка: ```bash @@ -756,8 +679,8 @@ openclaw googlemeet end-active-conference https://meet.google.com/abc-defg-hij Це викликає Google Meet `spaces.endActiveConference` і потребує OAuth з областю `meetings.space.created` для простору, яким авторизований обліковий запис може керувати. -OpenClaw приймає URL-адресу Meet, код зустрічі або вхід `spaces/{id}` і розв’язує його -до ресурсу простору API перед завершенням активної конференції. +OpenClaw приймає на вході Meet URL, код зустрічі або `spaces/{id}` і перетворює його +на ресурс простору API перед завершенням активної конференції. Це окремо від `googlemeet leave`: `leave` зупиняє локальну/сеансову участь OpenClaw, тоді як `end-active-conference` просить Google Meet завершити активну конференцію для простору. @@ -778,29 +701,29 @@ openclaw googlemeet export --conference-record conferenceRecords/abc123 \ ``` `artifacts` повертає метадані запису конференції, а також метадані ресурсів учасників, записів, -транскриптів, структурованих записів транскрипту та розумних нотаток, коли +стенограм, структурованих записів стенограми та розумних нотаток, коли Google надає їх для зустрічі. Використовуйте `--no-transcript-entries`, щоб пропустити пошук записів для великих зустрічей. `attendance` розгортає учасників у рядки сеансів учасників із часом першої/останньої появи, загальною тривалістю сеансу, -прапорцями запізнення/раннього виходу та об’єднаними дубльованими ресурсами учасників за користувачем -із виконаним входом або відображуваним ім’ям. Передайте `--no-merge-duplicates`, щоб залишити сирі ресурси учасників -окремими, `--late-after-minutes` для налаштування виявлення запізнення та -`--early-before-minutes` для налаштування виявлення раннього виходу. +прапорцями запізнення/раннього виходу та дубльованими ресурсами учасників, об’єднаними за користувачем, +що ввійшов у систему, або відображуваним іменем. Передайте `--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, якщо її було використано, і будь-які +`manifest.json` записує вибраний вхід, параметри експорту, записи конференції, +вихідні файли, лічильники, джерело токена, подію Calendar, якщо вона використовувалася, і будь-які попередження про часткове отримання. Передайте `--zip`, щоб також записати переносний архів поруч -із папкою. Передайте `--include-doc-bodies`, щоб експортувати текст пов’язаних транскриптів і +із папкою. Передайте `--include-doc-bodies`, щоб експортувати текст пов’язаних стенограм і розумних нотаток Google Docs через Google Drive `files.export`; для цього потрібен -новий вхід OAuth, який включає область доступу Drive Meet readonly. Без -`--include-doc-bodies` експорти містять лише метадані Meet і структуровані записи транскрипту. -Якщо Google повертає часткову помилку артефакта, наприклад помилку переліку розумних нотаток, -запису транскрипту або тіла документа Drive, зведення та -маніфест зберігають попередження замість того, щоб провалити весь експорт. +свіжий вхід OAuth, який включає область Drive Meet readonly. Без +`--include-doc-bodies` експорти включають лише метадані Meet і структуровані записи стенограми. +Якщо Google повертає часткову помилку артефакта, як-от помилку списку розумних нотаток, +запису стенограми або тіла документа Drive, підсумок і +маніфест зберігають попередження замість провалу всього експорту. Використовуйте `--dry-run`, щоб отримати ті самі дані артефактів/відвідуваності та надрукувати -JSON маніфесту без створення папки чи ZIP. Це корисно перед записом +JSON маніфесту без створення папки або ZIP. Це корисно перед записом великого експорту або коли агенту потрібні лише лічильники, вибрані записи та попередження. @@ -816,7 +739,7 @@ JSON маніфесту без створення папки чи ZIP. Це ко } ``` -Установіть `"dryRun": true`, щоб повернути лише маніфест експорту та пропустити записи файлів. +Задайте `"dryRun": true`, щоб повернути лише маніфест експорту й пропустити записи файлів. Агенти також можуть створити кімнату на базі API з явною політикою доступу: @@ -850,7 +773,7 @@ JSON маніфесту без створення папки чи ZIP. Це ко } ``` -Запустіть захищений live smoke проти реальної збереженої зустрічі: +Запустіть захищений live smoke для реальної збереженої зустрічі: ```bash OPENCLAW_LIVE_TEST=1 \ @@ -858,8 +781,8 @@ OPENCLAW_GOOGLE_MEET_LIVE_MEETING=https://meet.google.com/abc-defg-hij \ pnpm test:live -- extensions/google-meet/google-meet.live.test.ts ``` -Запустіть live браузерну пробу з пріоритетом прослуховування проти зустрічі, де хтось буде -говорити з доступними субтитрами Meet: +Запустіть live браузерну перевірку з пріоритетом прослуховування для зустрічі, де хтось +говоритиме, а субтитри Meet будуть доступні: ```bash openclaw googlemeet setup --transport chrome-node --mode transcribe @@ -869,7 +792,7 @@ openclaw googlemeet test-listen https://meet.google.com/abc-defg-hij --transport Середовище live smoke: - `OPENCLAW_LIVE_TEST=1` вмикає захищені live тести. -- `OPENCLAW_GOOGLE_MEET_LIVE_MEETING` вказує на збережену URL-адресу Meet, код або +- `OPENCLAW_GOOGLE_MEET_LIVE_MEETING` вказує на збережений Meet URL, код або `spaces/{id}`. - `OPENCLAW_GOOGLE_MEET_CLIENT_ID` або `GOOGLE_MEET_CLIENT_ID` надає OAuth client id. @@ -882,12 +805,12 @@ openclaw googlemeet test-listen https://meet.google.com/abc-defg-hij --transport Базовий live smoke для артефактів/відвідуваності потребує `https://www.googleapis.com/auth/meetings.space.readonly` і -`https://www.googleapis.com/auth/meetings.conference.media.readonly`. Пошук у календарі +`https://www.googleapis.com/auth/meetings.conference.media.readonly`. Пошук у Calendar потребує `https://www.googleapis.com/auth/calendar.events.readonly`. Експорт тіла документа Drive потребує `https://www.googleapis.com/auth/drive.meet.readonly`. -Створіть новий простір Meet: +Створіть свіжий простір Meet: ```bash openclaw googlemeet create @@ -895,11 +818,11 @@ openclaw googlemeet create Команда друкує новий `meeting uri`, джерело та сеанс приєднання. З обліковими даними OAuth вона використовує офіційний Google Meet API. Без облікових даних OAuth вона -використовує профіль браузера з виконаним входом закріпленого вузла Chrome як резервний варіант. Агенти можуть +використовує як резервний варіант профіль браузера закріпленого вузла Chrome, у який виконано вхід. Агенти можуть використовувати інструмент `google_meet` з `action: "create"`, щоб створити й приєднатися за один -крок. Для створення лише URL-адреси передайте `"join": false`. +крок. Для створення лише URL передайте `"join": false`. -Приклад JSON-виводу з браузерного резервного режиму: +Приклад JSON-виводу з резервного браузерного режиму: ```json { @@ -919,9 +842,9 @@ openclaw googlemeet create } ``` -Якщо браузерний резервний режим натрапляє на вхід Google або блокування дозволу Meet до того, як -зможе створити URL-адресу, метод Gateway повертає невдалу відповідь, а -інструмент `google_meet` повертає структуровані деталі замість простого рядка: +Якщо резервний браузерний режим натрапляє на вхід у Google або блокування дозволів Meet до того, як +зможе створити URL, метод Gateway повертає невдалу відповідь, а +інструмент `google_meet` повертає структуровані подробиці замість простого рядка: ```json { @@ -940,10 +863,10 @@ openclaw googlemeet create ``` Коли агент бачить `manualActionRequired: true`, він має повідомити -`manualActionMessage` разом із контекстом вузла/вкладки браузера та припинити відкривати нові +`manualActionMessage` разом із контекстом браузерного вузла/вкладки та припинити відкривати нові вкладки Meet, доки оператор не завершить браузерний крок. -Приклад JSON-виводу створення через API: +Приклад JSON-виводу зі створення через API: ```json { @@ -964,20 +887,20 @@ openclaw googlemeet create } ``` -Створення Meet типово приєднує до зустрічі. Транспорт Chrome або Chrome-node все одно -потребує профілю Google Chrome з виконаним входом, щоб приєднатися через браузер. Якщо +Створення Meet типово приєднується до зустрічі. Транспорт Chrome або Chrome-node все ще +потребує профілю Google Chrome, у який виконано вхід, щоб приєднатися через браузер. Якщо з профілю виконано вихід, OpenClaw повідомляє `manualActionRequired: true` або -помилку браузерного резервного режиму й просить оператора завершити вхід Google перед +помилку резервного браузерного режиму й просить оператора завершити вхід у Google перед повторною спробою. -Установлюйте `preview.enrollmentAcknowledged: true` лише після підтвердження, що ваш проєкт Cloud, -OAuth principal і учасники зустрічі зареєстровані в Google +Задавайте `preview.enrollmentAcknowledged: true` лише після підтвердження, що ваш проєкт Cloud, +принципал OAuth і учасники зустрічі зареєстровані в Google Workspace Developer Preview Program для Meet media APIs. ## Конфігурація -Загальний realtime шлях Chrome потребує лише ввімкненого plugin, BlackHole, SoX -і ключа backend realtime постачальника голосу. OpenAI є типовим; установіть +Загальний шлях Chrome realtime потребує лише увімкненого Plugin, BlackHole, SoX +і ключа бекенд-постачальника realtime voice. OpenAI є типовим; задайте `realtime.provider: "google"`, щоб використовувати Google Gemini Live: ```bash @@ -1006,26 +929,28 @@ export GEMINI_API_KEY=... - `defaultTransport: "chrome"` - `defaultMode: "realtime"` -- `chromeNode.node`: необов’язковий ідентифікатор/назва/IP вузла для `chrome-node` +- `chromeNode.node`: необов'язковий ідентифікатор/назва/IP вузла для `chrome-node` - `chrome.audioBackend: "blackhole-2ch"` -- `chrome.guestName: "OpenClaw Agent"`: ім’я, що використовується на екрані гостя Meet без входу в обліковий запис -- `chrome.autoJoin: true`: заповнення імені гостя та натискання Join Now за принципом best-effort через браузерну автоматизацію OpenClaw на `chrome-node` -- `chrome.reuseExistingTab: true`: активувати наявну вкладку Meet замість відкриття дублікатів -- `chrome.waitForInCallMs: 20000`: чекати, доки вкладка Meet повідомить, що вона в дзвінку, перш ніж буде запущено вступ у режимі realtime -- `chrome.audioFormat: "pcm16-24khz"`: аудіоформат command-pair. Використовуйте `"g711-ulaw-8khz"` лише для застарілих/користувацьких command pairs, які все ще видають телефонний звук. -- `chrome.audioInputCommand`: команда SoX, що читає з CoreAudio `BlackHole 2ch` і записує звук у `chrome.audioFormat` -- `chrome.audioOutputCommand`: команда SoX, що читає звук у `chrome.audioFormat` і записує в CoreAudio `BlackHole 2ch` -- `chrome.bargeInInputCommand`: необов’язкова команда локального мікрофона, яка записує підписаний 16-бітний little-endian моно PCM для виявлення людського втручання, поки відтворення асистента активне. Наразі це застосовується до command-pair bridge `chrome`, розміщеного на Gateway. +- `chrome.guestName: "OpenClaw Agent"`: ім'я, що використовується на екрані гостя Meet без входу в обліковий запис +- `chrome.autoJoin: true`: найкраща спроба заповнити ім'я гостя й натиснути Join Now через браузерну автоматизацію OpenClaw на `chrome-node` +- `chrome.reuseExistingTab: true`: активувати наявну вкладку Meet замість відкривання дублікатів +- `chrome.waitForInCallMs: 20000`: чекати, доки вкладка Meet повідомить про стан у дзвінку, перш ніж буде запущено realtime-вступ +- `chrome.audioFormat: "pcm16-24khz"`: аудіоформат пари команд. Використовуйте `"g711-ulaw-8khz"` лише для застарілих/користувацьких пар команд, які досі видають телефонний аудіосигнал. +- `chrome.audioInputCommand`: команда SoX, що читає з CoreAudio `BlackHole 2ch` і записує аудіо у форматі `chrome.audioFormat` +- `chrome.audioOutputCommand`: команда SoX, що читає аудіо у форматі `chrome.audioFormat` і записує в CoreAudio `BlackHole 2ch` +- `chrome.bargeInInputCommand`: необов'язкова команда локального мікрофона, що записує знаковий 16-бітний little-endian моно PCM для виявлення людського втручання, поки відтворення асистента активне. Наразі це застосовується до розміщеного на Gateway мосту пари команд `chrome`. - `chrome.bargeInRmsThreshold: 650`: рівень RMS, що вважається людським перериванням на `chrome.bargeInInputCommand` - `chrome.bargeInPeakThreshold: 2500`: піковий рівень, що вважається людським перериванням на `chrome.bargeInInputCommand` - `chrome.bargeInCooldownMs: 900`: мінімальна затримка між повторними очищеннями людського переривання +- `realtime.strategy: "agent"`: типово. Мовлення учасника транскрибується, надсилається налаштованому агенту OpenClaw в окремій sub-agent-сесії для зустрічі, а отримана відповідь озвучується через realtime-провайдера. +- `realtime.strategy: "bidi"`: прямий двонапрямний режим realtime-моделі. Realtime-провайдер відповідає на мовлення учасника напряму й може викликати `openclaw_agent_consult` для глибших відповідей або відповідей із використанням інструментів. - `realtime.provider: "openai"` - `realtime.toolPolicy: "safe-read-only"` -- `realtime.instructions`: короткі усні відповіді з `openclaw_agent_consult` для глибших відповідей -- `realtime.introMessage`: коротка усна перевірка готовності, коли realtime bridge підключається; задайте `""`, щоб приєднатися тихо -- `realtime.agentId`: необов’язковий ідентифікатор агента OpenClaw для `openclaw_agent_consult`; типово `main` +- `realtime.instructions`: короткі усні відповіді, з `openclaw_agent_consult` для глибших відповідей +- `realtime.introMessage`: коротка усна перевірка готовності, коли realtime-міст підключається; встановіть `""`, щоб приєднатися мовчки +- `realtime.agentId`: необов'язковий ідентифікатор агента OpenClaw для `openclaw_agent_consult`; типово `main` -Необов’язкові перевизначення: +Необов'язкові перевизначення: ```json5 { @@ -1061,6 +986,7 @@ export GEMINI_API_KEY=... node: "parallels-macos", }, realtime: { + strategy: "agent", provider: "google", agentId: "jay", toolPolicy: "owner", @@ -1090,7 +1016,7 @@ export GEMINI_API_KEY=... } ``` -`voiceCall.enabled` типово має значення `true`; із транспортом Twilio він делегує фактичний PSTN-дзвінок, DTMF і вступне привітання Plugin Voice Call. Voice Call відтворює послідовність DTMF перед відкриттям realtime media stream, а потім використовує збережений вступний текст як початкове realtime-привітання. Якщо `voice-call` не ввімкнено, Google Meet усе ще може перевірити й записати план набору, але не може здійснити дзвінок Twilio. +`voiceCall.enabled` типово має значення `true`; з транспортом Twilio він делегує фактичний PSTN-дзвінок, DTMF і вступне привітання Plugin Voice Call. Voice Call відтворює DTMF-послідовність перед відкриттям realtime-медіапотоку, а потім використовує збережений вступний текст як початкове realtime-привітання. Якщо `voice-call` не ввімкнено, Google Meet усе ще може перевірити й записати план набору, але не може здійснити Twilio-дзвінок. ## Інструмент @@ -1105,18 +1031,19 @@ export GEMINI_API_KEY=... } ``` -Використовуйте `transport: "chrome"`, коли Chrome працює на хості Gateway. Використовуйте `transport: "chrome-node"`, коли Chrome працює на спареному вузлі, наприклад у Parallels VM. В обох випадках realtime-модель і `openclaw_agent_consult` працюють на хості Gateway, тому облікові дані моделі залишаються там. +Використовуйте `transport: "chrome"`, коли Chrome працює на хості Gateway. Використовуйте `transport: "chrome-node"`, коли Chrome працює на спареному вузлі, наприклад VM Parallels. В обох випадках realtime-модель і `openclaw_agent_consult` працюють на хості Gateway, тому облікові дані моделі залишаються там. З типовою стратегією `realtime.strategy: "agent"` realtime-провайдер обробляє аудіо й транскрипцію, а налаштований агент OpenClaw створює усну відповідь. З `realtime.strategy: "bidi"` realtime-модель відповідає напряму. -Використовуйте `action: "status"`, щоб перелічити активні сеанси або перевірити ідентифікатор сеансу. Використовуйте `action: "speak"` із `sessionId` і `message`, щоб realtime-агент негайно заговорив. Використовуйте `action: "test_speech"`, щоб створити або повторно використати сеанс, запустити відому фразу й повернути стан `inCall`, коли хост Chrome може про нього повідомити. `test_speech` завжди примусово задає `mode: "realtime"` і завершується помилкою, якщо його просять працювати в `mode: "transcribe"`, оскільки сеанси лише для спостереження навмисно не можуть видавати мовлення. Його результат `speechOutputVerified` базується на збільшенні байтів вихідного realtime-аудіо під час цього тестового виклику, тому повторно використаний сеанс зі старішим аудіо не вважається свіжою успішною перевіркою мовлення. Використовуйте `action: "leave"`, щоб позначити сеанс як завершений. +Використовуйте `action: "status"`, щоб перелічити активні сесії або переглянути ідентифікатор сесії. Використовуйте `action: "speak"` із `sessionId` і `message`, щоб realtime-агент заговорив негайно. Використовуйте `action: "test_speech"`, щоб створити або повторно використати сесію, запустити відому фразу й повернути стан `inCall`, коли хост Chrome може про нього повідомити. `test_speech` завжди примусово встановлює `mode: "realtime"` і завершується помилкою, якщо його просять працювати в `mode: "transcribe"`, бо сесії лише для спостереження навмисно не можуть видавати мовлення. Його результат `speechOutputVerified` базується на збільшенні байтів realtime-аудіовиходу під час цього тестового виклику, тому повторно використана сесія зі старішим аудіо не зараховується як свіжа успішна перевірка мовлення. Використовуйте `action: "leave"`, щоб позначити сесію завершеною. `status` містить стан Chrome, коли він доступний: - `inCall`: Chrome, схоже, перебуває всередині дзвінка Meet -- `micMuted`: стан мікрофона Meet за принципом best-effort -- `manualActionRequired` / `manualActionReason` / `manualActionMessage`: профіль браузера потребує ручного входу, допуску хостом Meet, дозволів або виправлення керування браузером, перш ніж мовлення зможе працювати -- `speechReady` / `speechBlockedReason` / `speechBlockedMessage`: чи дозволене кероване мовлення Chrome зараз. `speechReady: false` означає, що OpenClaw не надіслав вступну/тестову фразу в audio bridge. -- `providerConnected` / `realtimeReady`: стан realtime voice bridge -- `lastInputAt` / `lastOutputAt`: останній звук, отриманий із bridge або надісланий до нього +- `micMuted`: найкраща спроба визначити стан мікрофона Meet +- `manualActionRequired` / `manualActionReason` / `manualActionMessage`: профіль браузера потребує ручного входу, допуску хостом Meet, дозволів або відновлення керування браузером, перш ніж мовлення зможе працювати +- `speechReady` / `speechBlockedReason` / `speechBlockedMessage`: чи дозволене зараз кероване Chrome мовлення. `speechReady: false` означає, що OpenClaw не надіслав вступну/тестову фразу в аудіоміст. +- `providerConnected` / `realtimeReady`: стан realtime-голосового мосту +- `lastInputAt` / `lastOutputAt`: останнє аудіо, отримане з мосту або надіслане до нього +- `audioOutputRouted` / `audioOutputDeviceLabel`: чи медіавихід вкладки Meet було активно спрямовано на пристрій BlackHole, який використовує міст - `lastSuppressedInputAt` / `suppressedInputBytes`: loopback-вхід, проігнорований, поки відтворення асистента активне ```json @@ -1127,29 +1054,41 @@ export GEMINI_API_KEY=... } ``` -## Консультація realtime-агента +## Realtime-консультація агента -Режим Chrome realtime оптимізовано для живого голосового циклу. Realtime voice provider чує аудіо зустрічі й говорить через налаштований audio bridge. Коли realtime-моделі потрібні глибше міркування, актуальна інформація або звичайні інструменти OpenClaw, вона може викликати `openclaw_agent_consult`. +Realtime-режим Chrome оптимізований для живого голосового циклу. Realtime-голосовий провайдер чує аудіо зустрічі й говорить через налаштований аудіоміст. Типова стратегія `realtime.strategy: "agent"` використовує realtime-провайдера для аудіовводу/виводу й транскрипції, але спрямовує фінальні транскрипти учасників через налаштованого агента OpenClaw перед озвученням. Встановіть `realtime.strategy: "bidi"`, коли потрібно, щоб realtime-модель відповідала напряму. +Близькі фінальні фрагменти транскрипту об'єднуються перед консультацією, щоб один усний хід не створював кілька застарілих часткових відповідей. -Інструмент консультації запускає звичайного агента OpenClaw у фоновому режимі з контекстом нещодавньої транскрипції зустрічі та повертає стислу усну відповідь realtime-голосовому сеансу. Потім голосова модель може озвучити цю відповідь назад у зустріч. Він використовує той самий спільний інструмент realtime-консультації, що й Voice Call. +| Стратегія | Хто визначає відповідь | Поведінка контексту | Коли використовувати | +| -------- | ----------------------------- | ------------------------------------------------------------------------------------ | ----------------------------------------------------- | +| `agent` | Налаштований агент OpenClaw | Окрема sub-agent-сесія для зустрічі плюс звичайна політика агента, інструменти, workspace і memory | Потрібна поведінка «мій агент присутній на зустрічі» | +| `bidi` | Realtime-голосова модель | Контекст realtime-сесії з необов'язковими викликами `openclaw_agent_consult` | Потрібен голосовий цикл розмови з найменшою затримкою | -Типово консультації запускаються для агента `main`. Задайте `realtime.agentId`, коли канал Meet має консультувати спеціалізований робочий простір агента OpenClaw, типові налаштування моделі, політику інструментів, пам’ять і історію сеансу. +У стратегії `bidi`, коли realtime-моделі потрібне глибше міркування, актуальна інформація або звичайні інструменти OpenClaw, вона може викликати `openclaw_agent_consult`. + +Інструмент консультації запускає звичайного агента OpenClaw у фоновому режимі з контекстом останніх транскриптів зустрічі та повертає стислу усну відповідь у realtime-голосову сесію. Потім голосова модель може озвучити цю відповідь назад у зустріч. Він використовує той самий спільний realtime-інструмент консультації, що й Voice Call. + +Типово консультації виконуються для агента `main`. Встановіть `realtime.agentId`, коли канал Meet має консультуватися з виділеним workspace агента OpenClaw, типовими налаштуваннями моделі, політикою інструментів, memory та історією сесії. + +Консультації зі стратегії агента використовують ключ сеансу `agent::subagent:google-meet:` для кожної зустрічі, щоб подальші запитання зберігали контекст зустрічі й водночас успадковували звичайну політику агента від налаштованого агента. `realtime.toolPolicy` керує запуском консультації: -- `safe-read-only`: надати інструмент консультації та обмежити звичайного агента до `read`, `web_search`, `web_fetch`, `x_search`, `memory_search` і `memory_get`. -- `owner`: надати інструмент консультації та дозволити звичайному агенту використовувати звичайну політику інструментів агента. -- `none`: не надавати інструмент консультації realtime-голосовій моделі. +- `safe-read-only`: показувати інструмент консультації та обмежити звичайного агента до + `read`, `web_search`, `web_fetch`, `x_search`, `memory_search` і + `memory_get`. +- `owner`: показувати інструмент консультації та дозволити звичайному агенту використовувати звичайну політику інструментів агента. +- `none`: не показувати інструмент консультації голосовій моделі реального часу. -Ключ сеансу консультації обмежений кожним сеансом Meet, тому подальші виклики консультації можуть повторно використовувати попередній контекст консультації під час тієї самої зустрічі. +Ключ сеансу консультації обмежений окремим сеансом Meet, тому подальші виклики консультації можуть повторно використовувати попередній контекст консультації під час тієї самої зустрічі. -Щоб примусово запустити усну перевірку готовності після того, як Chrome повністю приєднався до дзвінка: +Щоб примусово виконати голосову перевірку готовності після того, як Chrome повністю приєднався до виклику: ```bash openclaw googlemeet speak meet_... "Say exactly: I'm here and listening." ``` -Для повної smoke-перевірки join-and-speak: +Для повної перевірки приєднання й мовлення: ```bash openclaw googlemeet test-speech https://meet.google.com/abc-defg-hij \ @@ -1157,7 +1096,7 @@ openclaw googlemeet test-speech https://meet.google.com/abc-defg-hij \ --message "Say exactly: I'm here and listening." ``` -## Чекліст live-тесту +## Контрольний список live-тесту Використовуйте цю послідовність перед передаванням зустрічі автономному агенту: @@ -1172,12 +1111,15 @@ openclaw googlemeet test-speech https://meet.google.com/abc-defg-hij \ Очікуваний стан Chrome-node: - `googlemeet setup` повністю зелений. -- `googlemeet setup` містить `chrome-node-connected`, коли Chrome-node є типовим транспортом або вузол закріплено. -- `nodes status` показує вибраний вузол як підключений. -- Вибраний вузол оголошує і `googlemeet.chrome`, і `browser.proxy`. -- Вкладка Meet приєднується до дзвінка, а `test-speech` повертає стан Chrome із `inCall: true`. +- `googlemeet setup` включає `chrome-node-connected`, коли Chrome-node є + транспортом за замовчуванням або Node закріплено. +- `nodes status` показує, що вибраний Node підключено. +- Вибраний Node оголошує і `googlemeet.chrome`, і `browser.proxy`. +- Вкладка Meet приєднується до виклику, а `test-speech` повертає стан Chrome з + `inCall: true`. -Для віддаленого хоста Chrome, наприклад Parallels macOS VM, це найкоротша безпечна перевірка після оновлення Gateway або VM: +Для віддаленого хоста Chrome, наприклад Parallels macOS VM, це найкоротша +безпечна перевірка після оновлення Gateway або VM: ```bash openclaw googlemeet setup @@ -1188,9 +1130,11 @@ openclaw nodes invoke \ --params '{"action":"setup"}' ``` -Це підтверджує, що Plugin Gateway завантажено, вузол VM підключений із поточним токеном, а Meet audio bridge доступний, перш ніж агент відкриє вкладку реальної зустрічі. +Це доводить, що Plugin Gateway завантажено, Node VM підключено з +поточним токеном, а аудіоміст Meet доступний до того, як агент відкриє +справжню вкладку зустрічі. -Для smoke-перевірки Twilio використовуйте зустріч, яка надає телефонні дані для набору: +Для Twilio smoke використовуйте зустріч, яка надає дані телефонного дозвону: ```bash openclaw googlemeet setup @@ -1202,11 +1146,13 @@ openclaw googlemeet join https://meet.google.com/abc-defg-hij \ Очікуваний стан Twilio: -- `googlemeet setup` містить зелені перевірки `twilio-voice-call-plugin`, `twilio-voice-call-credentials` і `twilio-voice-call-webhook`. +- `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 віддано перед realtime TwiML, а потім realtime bridge із початковим привітанням у черзі. -- `googlemeet leave ` завершує делегований голосовий дзвінок. +- Повернута сесія має `transport: "twilio"` і `twilio.voiceCallId`. +- `openclaw logs --follow` показує, що DTMF TwiML віддано перед TwiML реального + часу, а потім міст реального часу з початковим привітанням у черзі. +- `googlemeet leave ` завершує делегований голосовий виклик. ## Усунення несправностей @@ -1219,9 +1165,11 @@ openclaw plugins list | grep google-meet openclaw googlemeet setup ``` -Якщо ви щойно відредагували `plugins.entries.google-meet`, перезапустіть або перезавантажте Gateway. Запущений агент бачить лише інструменти Plugin, зареєстровані поточним процесом Gateway. +Якщо ви щойно відредагували `plugins.entries.google-meet`, перезапустіть або перезавантажте Gateway. +Запущений агент бачить лише інструменти плагінів, зареєстровані поточним процесом Gateway. -На хостах Gateway не під macOS агентський інструмент `google_meet` залишається видимим, але локальні дії Chrome realtime блокуються до того, як вони потраплять в audio bridge. Локальне realtime-аудіо Chrome наразі залежить від macOS `BlackHole 2ch`, тому Linux-агентам слід використовувати `mode: "transcribe"`, набір Twilio або хост macOS `chrome-node` замість типового локального шляху Chrome realtime. +На хостах Gateway, що не є macOS, інструмент `google_meet`, видимий агенту, залишається видимим, але локальні realtime-дії Chrome блокуються до того, як вони потрапляють до аудіомоста. +Локальний realtime-аудіо Chrome зараз залежить від macOS `BlackHole 2ch`, тому агенти Linux мають використовувати `mode: "transcribe"`, Twilio dial-in або macOS-хост `chrome-node` замість стандартного локального realtime-шляху Chrome. ### Немає підключеного вузла з підтримкою Google Meet @@ -1242,7 +1190,8 @@ openclaw devices approve openclaw nodes status ``` -Вузол має бути підключений і містити `googlemeet.chrome` плюс `browser.proxy`. Конфігурація Gateway має дозволяти ці команди вузла: +Вузол має бути підключений і перелічувати `googlemeet.chrome` плюс `browser.proxy`. +Конфігурація Gateway має дозволяти ці команди вузла: ```json5 { @@ -1254,7 +1203,8 @@ openclaw nodes status } ``` -Якщо `googlemeet setup` не проходить `chrome-node-connected` або журнал Gateway повідомляє `gateway token mismatch`, перевстановіть або перезапустіть вузол із поточним токеном Gateway. Для LAN Gateway це зазвичай означає: +Якщо `googlemeet setup` не проходить перевірку `chrome-node-connected` або журнал Gateway повідомляє `gateway token mismatch`, перевстановіть або перезапустіть вузол із поточним токеном Gateway. +Для LAN Gateway це зазвичай означає: ```bash OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1 \ @@ -1265,7 +1215,7 @@ OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1 \ --force ``` -Потім перезавантажте службу вузла й повторно запустіть: +Потім перезавантажте службу вузла й повторно виконайте: ```bash openclaw googlemeet setup @@ -1274,115 +1224,66 @@ openclaw nodes status --connected ### Браузер відкривається, але агент не може приєднатися -Запустіть `googlemeet test-listen` для приєднань лише для спостереження або `googlemeet test-speech` для realtime-приєднань, а потім перегляньте повернутий стан Chrome. Якщо будь-яка з перевірок повідомляє `manualActionRequired: true`, покажіть `manualActionMessage` оператору й припиніть повторні спроби, доки дію в браузері не буде завершено. +Запустіть `googlemeet test-listen` для приєднань лише для спостереження або `googlemeet test-speech` для realtime-приєднань, а потім перевірте повернений стан Chrome. Якщо будь-яка перевірка повідомляє `manualActionRequired: true`, покажіть `manualActionMessage` оператору й припиніть повторні спроби, доки дія в браузері не буде завершена. -Типові ручні дії: +Поширені ручні дії: - Увійти в профіль Chrome. - Допустити гостя з облікового запису хоста Meet. -- Надати Chrome дозволи на мікрофон/камеру, коли з’явиться власний запит дозволу Chrome. +- Надати Chrome дозволи на мікрофон/камеру, коли з’явиться нативний запит дозволу Chrome. - Закрити або виправити завислий діалог дозволів Meet. -Не повідомляйте "not signed in" лише тому, що Meet показує "Do you want people to -hear you in the meeting?" Це проміжний екран вибору аудіо в Meet; OpenClaw -натискає **Use microphone** через браузерну автоматизацію, коли це доступно, і -продовжує чекати справжній стан зустрічі. Для резервного браузерного режиму лише створення OpenClaw -може натиснути **Continue without microphone**, оскільки для створення URL не потрібен -шлях аудіо в реальному часі. +Не повідомляйте "not signed in" лише тому, що Meet показує "Do you want people to hear you in the meeting?" Це проміжний екран вибору аудіо Meet; OpenClaw натискає **Use microphone** через автоматизацію браузера, коли це доступно, і продовжує чекати на реальний стан зустрічі. Для create-only резервного сценарію браузера OpenClaw може натиснути **Continue without microphone**, бо створення URL не потребує realtime-аудіошляху. ### Не вдається створити зустріч -`googlemeet create` спочатку використовує endpoint Google Meet API `spaces.create`, -коли налаштовано облікові дані OAuth. Без облікових даних OAuth він переходить -до закріпленого браузера Chrome node. Перевірте: +`googlemeet create` спочатку використовує endpoint `spaces.create` Google Meet API, коли налаштовані облікові дані OAuth. Без облікових даних OAuth він переходить до резервного pinned браузера Chrome node. Перевірте: -- Для створення через API: `oauth.clientId` і `oauth.refreshToken` налаштовані, - або наявні відповідні змінні середовища `OPENCLAW_GOOGLE_MEET_*`. -- Для створення через API: refresh token було згенеровано після додавання - підтримки створення. У старіших токенах може бракувати scope `meetings.space.created`; повторно запустіть - `openclaw googlemeet auth login --json` і оновіть конфігурацію Plugin. -- Для резервного браузерного режиму: `defaultTransport: "chrome-node"` і - `chromeNode.node` вказують на підключений node з `browser.proxy` і - `googlemeet.chrome`. -- Для резервного браузерного режиму: профіль OpenClaw Chrome на цьому node увійшов - у Google і може відкрити `https://meet.google.com/new`. -- Для резервного браузерного режиму: повторні спроби повторно використовують наявну вкладку `https://meet.google.com/new` - або вкладку запиту облікового запису Google перед відкриттям нової вкладки. Якщо агент вичерпав час очікування, - повторіть виклик інструмента, а не відкривайте вручну ще одну вкладку Meet. -- Для резервного браузерного режиму: якщо інструмент повертає `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. Якщо це неможливо, у - помилці має згадуватися `meet-audio-choice-required`, а не `google-login-required`. +- Для створення через API: налаштовані `oauth.clientId` і `oauth.refreshToken` або наявні відповідні змінні середовища `OPENCLAW_GOOGLE_MEET_*`. +- Для створення через API: refresh token було створено після додавання підтримки створення. У старіших токенів може бракувати scope `meetings.space.created`; повторно виконайте `openclaw googlemeet auth login --json` і оновіть конфігурацію плагіна. +- Для резервного браузерного сценарію: `defaultTransport: "chrome-node"` і `chromeNode.node` вказують на підключений вузол із `browser.proxy` і `googlemeet.chrome`. +- Для резервного браузерного сценарію: профіль Chrome OpenClaw на цьому вузлі виконано вхід у Google і може відкрити `https://meet.google.com/new`. +- Для резервного браузерного сценарію: повторні спроби повторно використовують наявну вкладку `https://meet.google.com/new` або вкладку запиту облікового запису Google перед відкриттям нової вкладки. Якщо в агента спливає час очікування, повторіть виклик інструмента замість того, щоб вручну відкривати ще одну вкладку Meet. +- Для резервного браузерного сценарію: якщо інструмент повертає `manualActionRequired: true`, використайте повернені `browser.nodeId`, `browser.targetId`, `browserUrl` і `manualActionMessage`, щоб скерувати оператора. Не повторюйте спроби в циклі, доки ця дія не буде завершена. +- Для резервного браузерного сценарію: якщо Meet показує "Do you want people to hear you in the meeting?", залиште вкладку відкритою. OpenClaw має натиснути **Use microphone** або, для create-only резервного сценарію, **Continue without microphone** через автоматизацію браузера й продовжити чекати на згенерований Meet URL. Якщо це неможливо, помилка має згадувати `meet-audio-choice-required`, а не `google-login-required`. ### Агент приєднується, але не говорить -Перевірте шлях у реальному часі: +Перевірте realtime-шлях: ```bash openclaw googlemeet setup openclaw googlemeet doctor ``` -Використовуйте `mode: "realtime"` для прослуховування/відповіді голосом. `mode: "transcribe"` навмисно -не запускає двосторонній голосовий міст у реальному часі. Для налагодження лише спостереження -запустіть `openclaw googlemeet status --json ` після того, як учасники заговорять, -і перевірте `captioning`, `transcriptLines` та `lastCaptionText`. Якщо `inCall` дорівнює -true, але `transcriptLines` залишається `0`, субтитри Meet можуть бути вимкнені, ніхто -не говорив після встановлення спостерігача, інтерфейс Meet змінився або живі -субтитри недоступні для мови/облікового запису цієї зустрічі. +Використовуйте `mode: "realtime"` для прослуховування/відповіді голосом. `mode: "transcribe"` навмисно не запускає дуплексний realtime-голосовий міст. Для налагодження лише зі спостереженням виконайте `openclaw googlemeet status --json ` після того, як учасники заговорять, і перевірте `captioning`, `transcriptLines` і `lastCaptionText`. Якщо `inCall` дорівнює true, але `transcriptLines` залишається `0`, субтитри Meet можуть бути вимкнені, ніхто не говорив після встановлення спостерігача, інтерфейс Meet змінився або live captions недоступні для мови/облікового запису зустрічі. -`googlemeet test-speech` завжди перевіряє шлях у реальному часі та повідомляє, чи -було зафіксовано вихідні байти моста для цього виклику. Якщо `speechOutputVerified` дорівнює false і -`speechOutputTimedOut` дорівнює true, провайдер реального часу міг прийняти -висловлювання, але OpenClaw не побачив, що нові вихідні байти дійшли до аудіо -моста Chrome. +`googlemeet test-speech` завжди перевіряє realtime-шлях і повідомляє, чи були помічені вихідні байти моста для цього виклику. Якщо `speechOutputVerified` дорівнює false, а `speechOutputTimedOut` дорівнює true, realtime-провайдер міг прийняти висловлювання, але OpenClaw не побачив, щоб нові вихідні байти дійшли до аудіомоста Chrome. Також перевірте: -- Ключ провайдера реального часу доступний на хості Gateway, наприклад - `OPENAI_API_KEY` або `GEMINI_API_KEY`. +- На хості Gateway доступний ключ realtime-провайдера, наприклад `OPENAI_API_KEY` або `GEMINI_API_KEY`. - `BlackHole 2ch` видимий на хості Chrome. - `sox` існує на хості Chrome. -- Мікрофон і динамік Meet спрямовані через віртуальний аудіошлях, який використовує - OpenClaw. +- Мікрофон і динамік Meet спрямовані через віртуальний аудіошлях, який використовує OpenClaw. `doctor` має показати `meet output routed: yes` для локальних realtime-приєднань Chrome. -`googlemeet doctor [session-id]` виводить сесію, node, стан перебування у виклику, -причину ручної дії, підключення провайдера реального часу, `realtimeReady`, активність -аудіовходу/аудіовиходу, останні аудіо timestamp-и, лічильники байтів і URL браузера. -Використовуйте `googlemeet status [session-id] --json`, коли потрібен сирий JSON. Використовуйте -`googlemeet doctor --oauth`, коли потрібно перевірити refresh Google Meet OAuth -без розкриття токенів; додайте `--meeting` або `--create-space`, коли також потрібен -доказ Google Meet API. +`googlemeet doctor [session-id]` виводить сесію, вузол, стан in-call, причину ручної дії, підключення realtime-провайдера, `realtimeReady`, активність аудіовходу/аудіовиходу, останні аудіомітки часу, лічильники байтів і URL браузера. Використовуйте `googlemeet status [session-id] --json`, коли потрібен сирий JSON. Використовуйте `googlemeet doctor --oauth`, коли потрібно перевірити Google Meet OAuth refresh без розкриття токенів; додайте `--meeting` або `--create-space`, коли також потрібен доказ Google Meet API. -Якщо агент вичерпав час очікування, а ви бачите, що вкладку Meet уже відкрито, перевірте цю вкладку -без відкриття ще однієї: +Якщо в агента сплив час очікування і ви бачите вже відкриту вкладку Meet, перевірте цю вкладку, не відкриваючи ще одну: ```bash openclaw googlemeet recover-tab openclaw googlemeet recover-tab https://meet.google.com/abc-defg-hij ``` -Еквівалентна дія інструмента — `recover_current_tab`. Вона фокусує та перевіряє -наявну вкладку Meet для вибраного транспорту. З `chrome` вона використовує локальне -керування браузером через Gateway; з `chrome-node` вона використовує налаштований -Chrome node. Вона не відкриває нову вкладку і не створює нову сесію; вона повідомляє про -поточний блокер, наприклад вхід, допуск, дозволи або стан вибору аудіо. -Команда CLI взаємодіє з налаштованим Gateway, тому Gateway має бути запущений; -`chrome-node` також потребує підключення Chrome node. +Еквівалентна дія інструмента — `recover_current_tab`. Вона фокусує й перевіряє наявну вкладку Meet для вибраного транспорту. З `chrome` вона використовує локальне керування браузером через Gateway; з `chrome-node` вона використовує налаштований вузол Chrome. Вона не відкриває нову вкладку й не створює нову сесію; вона повідомляє поточний блокер, наприклад стан входу, допуску, дозволів або вибору аудіо. Команда CLI звертається до налаштованого Gateway, тому Gateway має бути запущений; `chrome-node` також потребує підключеного вузла Chrome. ### Перевірки налаштування Twilio не проходять `twilio-voice-call-plugin` завершується помилкою, коли `voice-call` не дозволений або не ввімкнений. -Додайте його до `plugins.allow`, увімкніть `plugins.entries.voice-call` і перезавантажте -Gateway. +Додайте його до `plugins.allow`, увімкніть `plugins.entries.voice-call` і перезавантажте Gateway. -`twilio-voice-call-credentials` завершується помилкою, коли в backend Twilio бракує account -SID, auth token або номера абонента. Задайте їх на хості Gateway: +`twilio-voice-call-credentials` завершується помилкою, коли в бекенді Twilio бракує account SID, auth token або caller number. Задайте їх на хості Gateway: ```bash export TWILIO_ACCOUNT_SID=AC... @@ -1390,14 +1291,10 @@ export TWILIO_AUTH_TOKEN=... export TWILIO_FROM_NUMBER=+15550001234 ``` -`twilio-voice-call-webhook` завершується помилкою, коли `voice-call` не має публічного webhook -доступу або коли `publicUrl` вказує на loopback чи простір приватної мережі. -Встановіть `plugins.entries.voice-call.config.publicUrl` на URL публічного провайдера або -налаштуйте тунель/Tailscale exposure для `voice-call`. +`twilio-voice-call-webhook` завершується помилкою, коли `voice-call` не має публічного Webhook-доступу або коли `publicUrl` вказує на local loopback чи приватний мережевий простір. +Задайте `plugins.entries.voice-call.config.publicUrl` як публічний URL провайдера або налаштуйте tunnel/Tailscale-доступ для `voice-call`. -Loopback і приватні URL не є дійсними для callback-ів оператора зв'язку. Не використовуйте -`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`. +Loopback і приватні URL не є дійсними для carrier callbacks. Не використовуйте `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`. Для стабільного публічного URL: @@ -1418,8 +1315,7 @@ Loopback і приватні URL не є дійсними для callback-ів } ``` -Для локальної розробки використовуйте тунель або Tailscale exposure замість приватного -URL хоста: +Для локальної розробки використовуйте tunnel або Tailscale-доступ замість приватного URL хоста: ```json5 { @@ -1451,8 +1347,7 @@ openclaw voicecall smoke openclaw voicecall smoke --to "+15555550123" ``` -Додавайте `--yes` лише тоді, коли навмисно хочете здійснити живий вихідний notify -виклик: +Додавайте `--yes` лише тоді, коли навмисно хочете здійснити live outbound notify call: ```bash openclaw voicecall smoke --to "+15555550123" --yes @@ -1460,8 +1355,7 @@ openclaw voicecall smoke --to "+15555550123" --yes ### Виклик Twilio починається, але ніколи не входить у зустріч -Переконайтеся, що подія Meet надає дані телефонного dial-in. Передайте точний dial-in -номер і PIN або користувацьку DTMF-послідовність: +Переконайтеся, що подія Meet надає дані phone dial-in. Передайте точний dial-in number і PIN або спеціальну DTMF-послідовність: ```bash openclaw googlemeet join https://meet.google.com/abc-defg-hij \ @@ -1470,75 +1364,55 @@ openclaw googlemeet join https://meet.google.com/abc-defg-hij \ --dtmf-sequence ww123456# ``` -Використовуйте початкові `w` або коми в `--dtmf-sequence`, якщо провайдеру потрібна пауза -перед введенням PIN. +Використовуйте початковий `w` або коми в `--dtmf-sequence`, якщо провайдеру потрібна пауза перед введенням PIN. -Якщо телефонний виклик створено, але список учасників Meet ніколи не показує dial-in -учасника: +Якщо телефонний виклик створено, але roster Meet так і не показує dial-in учасника: -- Запустіть `openclaw googlemeet doctor `, щоб підтвердити делегований Twilio - call ID, чи було поставлено DTMF у чергу та чи було запитано вступне привітання. -- Запустіть `openclaw voicecall status --call-id ` і підтвердьте, що виклик досі - активний. -- Запустіть `openclaw voicecall tail` і перевірте, що webhooks Twilio надходять до - Gateway. -- Запустіть `openclaw logs --follow` і шукайте послідовність Twilio Meet: Google - Meet делегує приєднання, Voice Call запускає телефонну гілку, Google Meet чекає - `voiceCall.dtmfDelayMs`, надсилає DTMF через `voicecall.dtmf`, чекає - `voiceCall.postDtmfSpeechDelayMs`, потім запитує вступне мовлення через - `voicecall.speak`. -- Повторно запустіть `openclaw googlemeet setup --transport twilio`; зелена перевірка налаштування є - обов'язковою, але не доводить, що PIN-послідовність зустрічі правильна. -- Переконайтеся, що dial-in номер належить до того самого запрошення Meet і регіону, що й - PIN. -- Збільште `voiceCall.dtmfDelayMs`, якщо Meet відповідає повільно або транскрипт виклику - все ще показує запит на PIN після надсилання DTMF. -- Якщо учасник приєднується, але ви не чуєте привітання, перевірте - `openclaw logs --follow` на наявність post-DTMF запиту `voicecall.speak` і - або відтворення TTS через media-stream, або резервного Twilio ``. Якщо транскрипт виклику - все ще містить "enter the meeting PIN", телефонна гілка ще не приєдналася - до кімнати Meet, тому учасники зустрічі не почують мовлення. +- Виконайте `openclaw googlemeet doctor `, щоб підтвердити делегований Twilio call ID, чи DTMF було поставлено в чергу, і чи було запитано вступне привітання. +- Виконайте `openclaw voicecall status --call-id ` і переконайтеся, що виклик усе ще активний. +- Виконайте `openclaw voicecall tail` і перевірте, що Twilio webhooks надходять до Gateway. +- Виконайте `openclaw logs --follow` і знайдіть послідовність Twilio Meet: Google Meet делегує приєднання, Voice Call запускає phone leg, Google Meet чекає `voiceCall.dtmfDelayMs`, надсилає DTMF через `voicecall.dtmf`, чекає `voiceCall.postDtmfSpeechDelayMs`, а потім запитує вступну промову через `voicecall.speak`. +- Повторно виконайте `openclaw googlemeet setup --transport twilio`; зелена перевірка налаштування потрібна, але не доводить, що послідовність PIN зустрічі правильна. +- Переконайтеся, що dial-in number належить до того самого запрошення Meet і регіону, що й PIN. +- Збільште `voiceCall.dtmfDelayMs`, якщо Meet відповідає повільно або транскрипт виклику все ще показує запит на PIN після надсилання DTMF. +- Якщо учасник приєднується, але ви не чуєте привітання, перевірте `openclaw logs --follow` на наявність post-DTMF запиту `voicecall.speak` і або media-stream TTS playback, або резервного Twilio ``. Якщо транскрипт виклику все ще містить "enter the meeting PIN", phone leg ще не приєднався до кімнати Meet, тому учасники зустрічі не почують мовлення. -Якщо webhooks не надходять, спочатку налагодьте Plugin Voice Call: провайдер має -досягати `plugins.entries.voice-call.config.publicUrl` або налаштованого тунелю. -Див. [Усунення несправностей голосових викликів](/uk/plugins/voice-call#troubleshooting). +Якщо webhooks не надходять, спершу налагодьте Plugin Voice Call: провайдер має дістатися до `plugins.entries.voice-call.config.publicUrl` або налаштованого tunnel. +Див. [усунення несправностей голосового виклику](/uk/plugins/voice-call#troubleshooting). ## Примітки -Офіційний media API Google Meet орієнтований на отримання, тому для мовлення в Meet -виклику все одно потрібен шлях учасника. Цей Plugin робить цю межу видимою: -Chrome обробляє участь у браузері та локальну маршрутизацію аудіо; Twilio обробляє -участь через телефонний dial-in. +Офіційний media API Google Meet орієнтований на отримання, тому мовлення в Meet-виклик усе ще потребує шляху учасника. Цей плагін робить цю межу видимою: Chrome обробляє участь у браузері й локальну маршрутизацію аудіо; Twilio обробляє участь через phone dial-in. -Режим Chrome realtime потребує `BlackHole 2ch` плюс одне з наведеного: +Chrome realtime mode потребує `BlackHole 2ch` плюс будь-що з: -- `chrome.audioInputCommand` плюс `chrome.audioOutputCommand`: OpenClaw володіє - мостом моделі реального часу та передає аудіо у `chrome.audioFormat` між цими - командами й вибраним провайдером голосу реального часу. Типовий шлях Chrome — - 24 kHz PCM16; 8 kHz G.711 mu-law залишається доступним для legacy пар команд. -- `chrome.audioBridgeCommand`: зовнішня команда моста володіє всім локальним - аудіошляхом і має завершитися після запуску або перевірки свого daemon. +- `chrome.audioInputCommand` плюс `chrome.audioOutputCommand`: OpenClaw керує + мостом голосу в реальному часі та передає аудіо у `chrome.audioFormat` між цими + командами й вибраним провайдером голосу в реальному часі. Типовий шлях Chrome — + PCM16 24 кГц; G.711 mu-law 8 кГц залишається доступним для застарілих пар команд. +- `chrome.audioBridgeCommand`: зовнішня команда мосту керує всім локальним + аудіошляхом і має завершитися після запуску або перевірки свого демона. -Для чистого двостороннього аудіо спрямовуйте вихід Meet і мікрофон Meet через окремі +Для чистого дуплексного аудіо спрямуйте вихід Meet і мікрофон Meet через окремі віртуальні пристрої або граф віртуальних пристроїв у стилі Loopback. Один спільний -пристрій BlackHole може повертати аудіо інших учасників назад у виклик. +пристрій BlackHole може відлунювати інших учасників назад у виклик. -З командною парою Chrome bridge `chrome.bargeInInputCommand` може слухати +З мостом Chrome на основі пари команд `chrome.bargeInInputCommand` може слухати окремий локальний мікрофон і очищати відтворення асистента, коли людина починає -говорити. Це тримає людське мовлення попереду виходу асистента, навіть коли спільний -BlackHole loopback input тимчасово приглушено під час відтворення асистента. -Як і `chrome.audioInputCommand` та `chrome.audioOutputCommand`, це -локальна команда, налаштована оператором. Використовуйте явний довірений шлях команди або -список аргументів і не вказуйте на скрипти з недовірених розташувань. +говорити. Це утримує людське мовлення попереду виводу асистента, навіть коли спільний +loopback-вхід BlackHole тимчасово приглушено під час відтворення асистента. +Як і `chrome.audioInputCommand` та `chrome.audioOutputCommand`, це локальна команда, +налаштована оператором. Використовуйте явний довірений шлях до команди або +список аргументів і не вказуйте їй скрипти з недовірених розташувань. -`googlemeet speak` запускає активний аудіоміст реального часу для сесії Chrome. -`googlemeet leave` зупиняє цей міст. Для сесій Twilio, делегованих -через Plugin Voice Call, `leave` також завершує базовий голосовий виклик. +`googlemeet speak` запускає активний аудіоміст реального часу для сеансу Chrome. +`googlemeet leave` зупиняє цей міст. Для сеансів Twilio, делегованих через Plugin +голосових викликів, `leave` також завершує базовий голосовий виклик. Використовуйте `googlemeet end-active-conference`, коли також потрібно закрити активну -конференцію Google Meet для простору, керованого через API. +конференцію Google Meet для простору, керованого API. -## Пов'язане +## Пов’язане -- [Plugin голосового виклику](/uk/plugins/voice-call) +- [Plugin голосових викликів](/uk/plugins/voice-call) - [Режим розмови](/uk/nodes/talk) - [Створення Plugin](/uk/plugins/building-plugins)