From a2efdac3c4231928af832d3d8d8716f5434d6a6e Mon Sep 17 00:00:00 2001 From: "openclaw-docs-i18n[bot]" Date: Fri, 1 May 2026 05:41:07 +0000 Subject: [PATCH] chore(i18n): refresh uk translations --- docs/uk/cli/voicecall.md | 35 ++--- docs/uk/plugins/voice-call.md | 238 +++++++++++++++++----------------- 2 files changed, 141 insertions(+), 132 deletions(-) diff --git a/docs/uk/cli/voicecall.md b/docs/uk/cli/voicecall.md index eada233a8..ec0fd76de 100644 --- a/docs/uk/cli/voicecall.md +++ b/docs/uk/cli/voicecall.md @@ -1,25 +1,28 @@ --- read_when: - - Ви використовуєте Plugin для голосових викликів і хочете точки входу CLI - - Вам потрібні короткі приклади для `voicecall setup|smoke|call|continue|dtmf|status|tail|expose` -summary: Довідник CLI для `openclaw voicecall` (поверхня команд Plugin для голосових викликів) -title: Голосовий дзвінок + - Ви використовуєте Plugin голосових викликів і хочете отримати точки входу CLI + - Вам потрібні швидкі приклади для `voicecall setup|smoke|call|continue|dtmf|status|tail|expose` +summary: Довідник CLI для `openclaw voicecall` (командний інтерфейс Plugin для голосових викликів) +title: Голосовий виклик x-i18n: - generated_at: "2026-05-01T04:46:21Z" + generated_at: "2026-05-01T05:39:40Z" model: gpt-5.5 provider: openai - source_hash: 4090858a58b7defaff955a370c8cb0ff025ef68061e68a6c69a637de24707c0b + source_hash: c040cf4cd984ad6d6dd302923494a7c8ee131390b803fe20a9894b077f08d5bb source_path: cli/voicecall.md workflow: 16 --- # `openclaw voicecall` -`voicecall` — це команда, яку надає Plugin. Вона зʼявляється лише тоді, коли Plugin голосових викликів встановлено й увімкнено. +`voicecall` — це команда, надана Plugin. Вона з’являється лише якщо Plugin голосових викликів встановлено й увімкнено. -Основний документ: +Коли Gateway запущено, операційні команди (`call`, `start`, +`continue`, `speak`, `dtmf`, `end` і `status`) надсилаються до середовища виконання голосових викликів цього Gateway. Якщо Gateway недоступний, вони повертаються до автономного середовища виконання CLI. -- Plugin голосових викликів: [Voice Call](/uk/plugins/voice-call) +Основна документація: + +- Plugin голосових викликів: [Голосовий виклик](/uk/plugins/voice-call) ## Поширені команди @@ -34,21 +37,21 @@ openclaw voicecall dtmf --call-id --digits "ww123456#" openclaw voicecall end --call-id ``` -`setup` за замовчуванням виводить зручні для читання перевірки готовності. Використовуйте `--json` для +`setup` за замовчуванням виводить перевірки готовності в зручному для читання форматі. Використовуйте `--json` для скриптів: ```bash openclaw voicecall setup --json ``` -`status` за замовчуванням виводить активні виклики у форматі JSON. Передайте `--call-id `, щоб переглянути +`status` за замовчуванням виводить активні виклики у форматі JSON. Передайте `--call-id `, щоб перевірити один виклик. -Для зовнішніх провайдерів (`twilio`, `telnyx`, `plivo`) налаштування має визначити публічну -URL-адресу Webhook з `publicUrl`, тунелю або доступу через Tailscale. Резервний варіант обслуговування через loopback/private -відхиляється, оскільки оператори не можуть до нього звернутися. +Для зовнішніх провайдерів (`twilio`, `telnyx`, `plivo`) налаштування має визначити публічний +URL Webhook з `publicUrl`, тунелю або експозиції Tailscale. Резервний варіант обслуговування через loopback/приватну мережу +відхиляється, бо оператори не можуть до нього дістатися. -`smoke` виконує ті самі перевірки готовності. Він не здійснюватиме справжній телефонний виклик, +`smoke` запускає ті самі перевірки готовності. Він не здійснюватиме реальний телефонний виклик, якщо не вказано одночасно `--to` і `--yes`: ```bash @@ -64,7 +67,7 @@ openclaw voicecall expose --mode funnel openclaw voicecall expose --mode off ``` -Примітка щодо безпеки: відкривайте endpoint Webhook лише для мереж, яким довіряєте. За можливості віддавайте перевагу Tailscale Serve замість Funnel. +Примітка щодо безпеки: відкривайте кінцеву точку Webhook лише для мереж, яким довіряєте. За можливості надавайте перевагу Tailscale Serve замість Funnel. ## Пов’язане diff --git a/docs/uk/plugins/voice-call.md b/docs/uk/plugins/voice-call.md index 74224a568..5d2175a13 100644 --- a/docs/uk/plugins/voice-call.md +++ b/docs/uk/plugins/voice-call.md @@ -1,38 +1,38 @@ --- read_when: - - Ви хочете здійснити вихідний голосовий дзвінок з OpenClaw + - Ви хочете здійснити вихідний голосовий виклик з OpenClaw - Ви налаштовуєте або розробляєте Plugin для голосових викликів - - Вам потрібен голосовий зв’язок у реальному часі або потокова транскрипція в телефонії + - Вам потрібен голосовий зв’язок у реальному часі або потокова транскрипція для телефонії sidebarTitle: Voice call -summary: Здійснюйте вихідні та приймайте вхідні голосові виклики через Twilio, Telnyx або Plivo, з необов’язковим голосовим зв’язком у реальному часі та потоковою транскрипцією -title: Plugin для голосових викликів +summary: Здійснюйте вихідні та приймайте вхідні голосові виклики через Twilio, Telnyx або Plivo, з опційним голосовим зв’язком у реальному часі та потоковою транскрипцією +title: Plugin голосових викликів x-i18n: - generated_at: "2026-05-01T05:30:00Z" + generated_at: "2026-05-01T05:39:49Z" model: gpt-5.5 provider: openai - source_hash: ef7ab7d7499e65d4514eda607f49b10aabd5feab11cac9f808de890176606f3b + source_hash: 08690f9f27de8a3d4d2c6056cd08edcc42f60f0592272a464c07cb1dc7fee26e source_path: plugins/voice-call.md workflow: 16 --- -Голосові виклики для OpenClaw через Plugin. Підтримує вихідні сповіщення, +Голосові виклики для OpenClaw через плагін. Підтримує вихідні сповіщення, багатоходові розмови, повнодуплексний голос у реальному часі, потокову -транскрипцію та вхідні виклики з політиками списку дозволених. +транскрипцію та вхідні виклики з політиками allowlist. **Поточні провайдери:** `twilio` (Programmable Voice + Media Streams), `telnyx` (Call Control v2), `plivo` (Voice API + XML transfer + GetInput speech), `mock` (розробка/без мережі). -Plugin Voice Call працює **всередині процесу Gateway**. Якщо ви використовуєте -віддалений Gateway, установіть і налаштуйте Plugin на машині, де працює +Плагін Voice Call працює **всередині процесу Gateway**. Якщо ви використовуєте +віддалений Gateway, установіть і налаштуйте плагін на машині, де запущено Gateway, а потім перезапустіть Gateway, щоб завантажити його. ## Швидкий старт - + ```bash @@ -48,28 +48,28 @@ Gateway, а потім перезапустіть Gateway, щоб заванта - Якщо npm повідомляє, що пакет, який належить OpenClaw, застарілий, ця версія пакета - походить зі старішої зовнішньої гілки пакетів; використовуйте поточну пакетовану збірку - OpenClaw або шлях до локальної папки, доки не буде опубліковано новіший пакет npm. + Якщо npm повідомляє, що пакет, який належить OpenClaw, є застарілим, ця версія пакета + походить зі старішої зовнішньої лінійки пакетів; використовуйте поточну пакетовану збірку OpenClaw + або шлях до локальної папки, доки не буде опубліковано новіший пакет npm. - Після цього перезапустіть Gateway, щоб Plugin завантажився. + Після цього перезапустіть Gateway, щоб плагін завантажився. - - Установіть конфігурацію в `plugins.entries.voice-call.config` (повну структуру див. + + Задайте конфігурацію в `plugins.entries.voice-call.config` (повну структуру див. у розділі [Конфігурація](#configuration) нижче). Мінімально потрібні: - `provider`, облікові дані провайдера, `fromNumber` і публічно - доступна URL-адреса Webhook. + `provider`, облікові дані провайдера, `fromNumber` і загальнодоступна + URL-адреса webhook. ```bash openclaw voicecall setup ``` - Типовий вивід зручно читати в журналах чату й терміналах. Він перевіряє, - чи ввімкнено Plugin, облікові дані провайдера, доступність Webhook і те, - що активний лише один аудіорежим (`streaming` або `realtime`). Використовуйте - `--json` для скриптів. + Типовий вивід зручно читати в журналах чатів і терміналах. Він перевіряє + ввімкнення плагіна, облікові дані провайдера, доступність webhook і те, що + активний лише один аудіорежим (`streaming` або `realtime`). Для скриптів використовуйте + `--json`. @@ -78,8 +78,8 @@ Gateway, а потім перезапустіть Gateway, щоб заванта openclaw voicecall smoke --to "+15555550123" ``` - За замовчуванням обидві команди виконуються як dry run. Додайте `--yes`, щоб фактично здійснити короткий - вихідний виклик-сповіщення: + Обидві команди за замовчуванням виконуються як пробні запуски. Додайте `--yes`, щоб фактично здійснити короткий + вихідний дзвінок зі сповіщенням: ```bash openclaw voicecall smoke --to "+15555550123" --yes @@ -89,15 +89,15 @@ Gateway, а потім перезапустіть Gateway, щоб заванта -Для Twilio, Telnyx і Plivo налаштування має визначати **публічну URL-адресу Webhook**. -Якщо `publicUrl`, URL тунелю, URL Tailscale або резервний serve -визначається як loopback чи приватний мережевий простір, налаштування завершується помилкою замість -запуску провайдера, який не може отримувати Webhook-и оператора. +Для Twilio, Telnyx і Plivo налаштування має визначати **публічну URL-адресу webhook**. +Якщо `publicUrl`, URL-адреса тунелю, URL-адреса Tailscale або резервний варіант serve +визначається як loopback чи простір приватної мережі, налаштування завершується помилкою замість +запуску провайдера, який не зможе отримувати webhook від оператора. ## Конфігурація -Якщо `enabled: true`, але у вибраного провайдера бракує облікових даних, +Якщо `enabled: true`, але для вибраного провайдера бракує облікових даних, під час запуску Gateway записує попередження про неповне налаштування з відсутніми ключами та пропускає запуск runtime. Команди, RPC-виклики й інструменти агента все одно повертають точну відсутню конфігурацію провайдера під час використання. @@ -164,20 +164,20 @@ Gateway, а потім перезапустіть Gateway, щоб заванта ``` - - - Twilio, Telnyx і Plivo потребують **публічно доступної** URL-адреси Webhook. - - `mock` — локальний провайдер для розробки (без мережевих викликів). - - Telnyx потребує `telnyx.publicKey` (або `TELNYX_PUBLIC_KEY`), якщо `skipSignatureVerification` не дорівнює true. + + - Twilio, Telnyx і Plivo всі потребують **публічно доступної** URL-адреси webhook. + - `mock` — це локальний провайдер для розробки (без мережевих викликів). + - Telnyx потребує `telnyx.publicKey` (або `TELNYX_PUBLIC_KEY`), якщо `skipSignatureVerification` не має значення true. - `skipSignatureVerification` призначено лише для локального тестування. - - На безплатному рівні ngrok установіть `publicUrl` на точну URL-адресу ngrok; перевірка підписів завжди застосовується. - - `tunnel.allowNgrokFreeTierLoopbackBypass: true` дозволяє Webhook-и Twilio з недійсними підписами **лише** коли `tunnel.provider="ngrok"` і `serve.bind` є loopback (локальний агент ngrok). Лише для локальної розробки. - - URL-адреси безплатного рівня Ngrok можуть змінюватися або додавати проміжну поведінку; якщо `publicUrl` зміщується, підписи Twilio не проходять перевірку. Продакшн: віддавайте перевагу стабільному домену або Tailscale funnel. + - На безкоштовному рівні ngrok задайте `publicUrl` як точну URL-адресу ngrok; перевірка підпису завжди застосовується. + - `tunnel.allowNgrokFreeTierLoopbackBypass: true` дозволяє webhook Twilio з недійсними підписами **лише** коли `tunnel.provider="ngrok"` і `serve.bind` є loopback (локальний агент ngrok). Лише для локальної розробки. + - URL-адреси безкоштовного рівня Ngrok можуть змінюватися або додавати проміжну поведінку; якщо `publicUrl` відхиляється, підписи Twilio не проходять перевірку. Для production краще використовуйте стабільний домен або funnel Tailscale. - + - `streaming.preStartTimeoutMs` закриває сокети, які ніколи не надсилають дійсний кадр `start`. - - `streaming.maxPendingConnections` обмежує загальну кількість неавтентифікованих сокетів до start. - - `streaming.maxPendingConnectionsPerIp` обмежує кількість неавтентифікованих сокетів до start на IP-адресу джерела. + - `streaming.maxPendingConnections` обмежує загальну кількість неавтентифікованих сокетів перед стартом. + - `streaming.maxPendingConnectionsPerIp` обмежує неавтентифіковані сокети перед стартом для однієї вихідної IP-адреси. - `streaming.maxConnections` обмежує загальну кількість відкритих сокетів медіапотоку (очікувані + активні). @@ -185,7 +185,7 @@ Gateway, а потім перезапустіть Gateway, щоб заванта Старіші конфігурації, що використовують `provider: "log"`, `twilio.from` або застарілі ключі OpenAI `streaming.*`, переписуються командою `openclaw doctor --fix`. Резервний runtime поки що все ще приймає старі ключі voice-call, але - шлях переписування — `openclaw doctor --fix`, а сумісний shim є + шлях переписування — це `openclaw doctor --fix`, а шар сумісності є тимчасовим. Автоматично мігровані ключі streaming: @@ -201,40 +201,40 @@ Gateway, а потім перезапустіть Gateway, щоб заванта ## Голосові розмови в реальному часі -`realtime` вибирає повнодуплексного голосового провайдера реального часу для live-аудіо виклику. -Це окремо від `streaming`, який лише пересилає аудіо до -провайдерів транскрипції в реальному часі. +`realtime` вибирає повнодуплексного провайдера голосу в реальному часі для живого аудіо виклику. +Він відокремлений від `streaming`, який лише пересилає аудіо +провайдерам транскрипції в реальному часі. `realtime.enabled` не можна поєднувати з `streaming.enabled`. Виберіть один -аудіорежим на виклик. +аудіорежим для кожного виклику. Поточна поведінка runtime: - `realtime.enabled` підтримується для Twilio Media Streams. -- `realtime.provider` є необов’язковим. Якщо його не задано, Voice Call використовує першого зареєстрованого голосового провайдера реального часу. -- Вбудовані голосові провайдери реального часу: Google Gemini Live (`google`) і OpenAI (`openai`), зареєстровані їхніми провайдерськими plugins. -- Необроблена конфігурація, що належить провайдеру, розміщується в `realtime.providers.`. -- Voice Call за замовчуванням відкриває спільний realtime-інструмент `openclaw_agent_consult`. Модель реального часу може викликати його, коли абонент просить глибшого міркування, актуальної інформації або звичайних інструментів OpenClaw. -- Якщо `realtime.provider` вказує на незареєстрованого провайдера або жодного голосового провайдера реального часу не зареєстровано, Voice Call записує попередження й пропускає realtime-медіа замість того, щоб завершити весь Plugin помилкою. -- Ключі консультативної сесії повторно використовують наявну голосову сесію, коли вона доступна, а потім переходять до номера телефону абонента/одержувача, щоб подальші консультативні виклики зберігали контекст під час виклику. +- `realtime.provider` є необов’язковим. Якщо його не задано, Voice Call використовує першого зареєстрованого провайдера голосу в реальному часі. +- Вбудовані провайдери голосу в реальному часі: Google Gemini Live (`google`) і OpenAI (`openai`), зареєстровані їхніми плагінами провайдерів. +- Необроблена конфігурація, що належить провайдеру, міститься в `realtime.providers.`. +- Voice Call за замовчуванням відкриває спільний інструмент реального часу `openclaw_agent_consult`. Модель реального часу може викликати його, коли абонент просить глибше міркування, актуальну інформацію або звичайні інструменти OpenClaw. +- Якщо `realtime.provider` вказує на незареєстрованого провайдера або взагалі не зареєстровано жодного провайдера голосу в реальному часі, Voice Call записує попередження й пропускає медіа реального часу замість того, щоб зупиняти весь плагін з помилкою. +- Ключі сесії consult повторно використовують наявну голосову сесію, коли вона доступна, а потім переходять до номера телефону абонента/одержувача, щоб подальші виклики consult зберігали контекст під час дзвінка. ### Політика інструментів -`realtime.toolPolicy` керує консультативним запуском: +`realtime.toolPolicy` керує запуском consult: -| Політика | Поведінка | +| Політика | Поведінка | | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | -| `safe-read-only` | Відкриває консультативний інструмент і обмежує звичайного агента `read`, `web_search`, `web_fetch`, `x_search`, `memory_search` і `memory_get`. | -| `owner` | Відкриває консультативний інструмент і дозволяє звичайному агенту використовувати нормальну політику інструментів агента. | -| `none` | Не відкриває консультативний інструмент. Користувацькі `realtime.tools` все одно передаються провайдеру реального часу. | +| `safe-read-only` | Відкрити інструмент consult і обмежити звичайного агента до `read`, `web_search`, `web_fetch`, `x_search`, `memory_search` і `memory_get`. | +| `owner` | Відкрити інструмент consult і дозволити звичайному агенту використовувати стандартну політику інструментів агента. | +| `none` | Не відкривати інструмент consult. Власні `realtime.tools` усе одно передаються провайдеру реального часу. | ### Приклади провайдерів реального часу - Типові значення: API-ключ із `realtime.providers.google.apiKey`, + Типові значення: ключ API з `realtime.providers.google.apiKey`, `GEMINI_API_KEY` або `GOOGLE_GENERATIVE_AI_API_KEY`; модель `gemini-2.5-flash-native-audio-preview-12-2025`; голос `Kore`. @@ -292,26 +292,26 @@ Gateway, а потім перезапустіть Gateway, щоб заванта Див. [провайдера Google](/uk/providers/google) і -[провайдера OpenAI](/uk/providers/openai) щодо специфічних для провайдера параметрів голосу -в реальному часі. +[провайдера OpenAI](/uk/providers/openai), щоб дізнатися про параметри голосу в реальному часі, +специфічні для провайдера. ## Потокова транскрипція -`streaming` вибирає провайдера транскрипції в реальному часі для live-аудіо виклику. +`streaming` вибирає провайдера транскрипції в реальному часі для живого аудіо виклику. Поточна поведінка runtime: - `streaming.provider` є необов’язковим. Якщо його не задано, Voice Call використовує першого зареєстрованого провайдера транскрипції в реальному часі. -- Вбудовані провайдери транскрипції в реальному часі: Deepgram (`deepgram`), ElevenLabs (`elevenlabs`), Mistral (`mistral`), OpenAI (`openai`) і xAI (`xai`), зареєстровані їхніми провайдерськими plugins. -- Необроблена конфігурація, що належить провайдеру, розміщується в `streaming.providers.`. -- Після того як Twilio надсилає прийняте повідомлення `start` потоку, Voice Call негайно реєструє потік, ставить вхідні медіа в чергу через провайдера транскрипції, поки провайдер підключається, і починає початкове привітання лише після готовності транскрипції в реальному часі. -- Якщо `streaming.provider` вказує на незареєстрованого провайдера або жодного не зареєстровано, Voice Call записує попередження й пропускає потокове медіа замість того, щоб завершити весь Plugin помилкою. +- Вбудовані провайдери транскрипції в реальному часі: Deepgram (`deepgram`), ElevenLabs (`elevenlabs`), Mistral (`mistral`), OpenAI (`openai`) і xAI (`xai`), зареєстровані їхніми плагінами провайдерів. +- Необроблена конфігурація, що належить провайдеру, міститься в `streaming.providers.`. +- Після того як Twilio надсилає прийняте повідомлення потоку `start`, Voice Call негайно реєструє потік, ставить вхідні медіа в чергу через провайдера транскрипції, поки провайдер під’єднується, і запускає початкове привітання лише після готовності транскрипції в реальному часі. +- Якщо `streaming.provider` вказує на незареєстрованого провайдера або жодного не зареєстровано, Voice Call записує попередження й пропускає потокове медіа замість того, щоб зупиняти весь плагін з помилкою. ### Приклади провайдерів streaming - Типові значення: API-ключ `streaming.providers.openai.apiKey` або + Типові значення: ключ API `streaming.providers.openai.apiKey` або `OPENAI_API_KEY`; модель `gpt-4o-transcribe`; `silenceDurationMs: 800`; `vadThreshold: 0.5`. @@ -343,7 +343,7 @@ Gateway, а потім перезапустіть Gateway, щоб заванта - Типові значення: API-ключ `streaming.providers.xai.apiKey` або `XAI_API_KEY`; + Типові значення: ключ API `streaming.providers.xai.apiKey` або `XAI_API_KEY`; кінцева точка `wss://api.x.ai/v1/stt`; кодування `mulaw`; частота дискретизації `8000`; `endpointingMs: 800`; `interimResults: true`. @@ -378,8 +378,8 @@ Gateway, а потім перезапустіть Gateway, щоб заванта ## TTS для викликів Voice Call використовує основну конфігурацію `messages.tts` для потокового -мовлення під час викликів. Її можна перевизначити в конфігурації Plugin з -**такою самою структурою** — вона глибоко зливається з `messages.tts`. +мовлення під час викликів. Її можна перевизначити в конфігурації plugin з +**тією самою структурою** — вона глибоко об'єднується з `messages.tts`. ```json5 { @@ -396,17 +396,17 @@ Voice Call використовує основну конфігурацію `mes ``` -**Microsoft speech ігнорується для голосових викликів.** Телефонний аудіопотік потребує PCM; -поточний транспорт Microsoft не надає телефонний PCM-вивід. +**Microsoft speech ігнорується для голосових викликів.** Телефонний звук потребує PCM; +поточний транспорт Microsoft не надає телефонний вихід PCM. Примітки щодо поведінки: -- Застарілі ключі `tts.` у конфігурації Plugin (`openai`, `elevenlabs`, `microsoft`, `edge`) виправляються командою `openclaw doctor --fix`; зафіксована конфігурація має використовувати `tts.providers.`. -- Основний TTS використовується, коли ввімкнено потокове передавання медіа Twilio; інакше виклики повертаються до нативних голосів провайдера. -- Якщо медіапотік Twilio уже активний, Voice Call не повертається до TwiML ``. Якщо телефонний TTS недоступний у цьому стані, запит відтворення завершується помилкою замість змішування двох шляхів відтворення. +- Застарілі ключі `tts.` у конфігурації plugin (`openai`, `elevenlabs`, `microsoft`, `edge`) виправляються командою `openclaw doctor --fix`; зафіксована конфігурація має використовувати `tts.providers.`. +- Основний TTS використовується, коли ввімкнено медіапотокове передавання Twilio; інакше виклики повертаються до нативних голосів провайдера. +- Якщо медіапотік Twilio вже активний, Voice Call не повертається до TwiML ``. Якщо телефонний TTS у цьому стані недоступний, запит відтворення завершується помилкою замість змішування двох шляхів відтворення. - Коли телефонний TTS повертається до вторинного провайдера, Voice Call записує попередження з ланцюжком провайдерів (`from`, `to`, `attempts`) для налагодження. -- Коли втручання в розмову Twilio або завершення потоку очищає чергу очікуваного TTS, поставлені в чергу запити відтворення завершуються, а не залишають абонентів чекати на завершення відтворення. +- Коли Twilio barge-in або завершення потоку очищає чергу TTS, запити відтворення в черзі завершуються, а не залишають абонентів у завислому стані в очікуванні завершення відтворення. ### Приклади TTS @@ -475,7 +475,7 @@ Voice Call використовує основну конфігурацію `mes ## Вхідні виклики -Типове значення політики вхідних викликів — `disabled`. Щоб увімкнути вхідні виклики, задайте: +Типова вхідна політика — `disabled`. Щоб увімкнути вхідні виклики, задайте: ```json5 { @@ -486,20 +486,21 @@ Voice Call використовує основну конфігурацію `mes ``` -`inboundPolicy: "allowlist"` — це перевірка caller ID з низьким рівнем надійності. Plugin +`inboundPolicy: "allowlist"` — це перевірка caller ID із низьким рівнем достовірності. Plugin нормалізує надане провайдером значення `From` і порівнює його з -`allowFrom`. Перевірка Webhook автентифікує доставлення провайдером і -цілісність payload, але **не** доводить володіння номером абонента -PSTN/VoIP. Розглядайте `allowFrom` як фільтрацію caller ID, а не як надійну -ідентифікацію абонента. +`allowFrom`. Перевірка Webhook автентифікує доставку провайдером і +цілісність корисного навантаження, але вона **не** доводить право власності +на номер абонента PSTN/VoIP. Сприймайте `allowFrom` як фільтрацію caller ID, а не як надійну +ідентичність абонента. -Автовідповіді використовують систему агента. Налаштовуйте їх за допомогою `responseModel`, +Автовідповіді використовують систему агента. Налаштовуйте за допомогою `responseModel`, `responseSystemPrompt` і `responseTimeoutMs`. ### Контракт мовленнєвого виводу -Для автовідповідей Voice Call додає до системного prompt суворий контракт мовленнєвого виводу: +Для автовідповідей Voice Call додає строгий контракт мовленнєвого виводу до +системного промпта: ```text {"spoken":"..."} @@ -507,41 +508,41 @@ PSTN/VoIP. Розглядайте `allowFrom` як фільтрацію caller I Voice Call захисно витягує текст мовлення: -- Ігнорує payload, позначені як reasoning/error content. +- Ігнорує корисні навантаження, позначені як вміст міркувань або помилок. - Розбирає прямий JSON, JSON у fenced-блоці або вбудовані ключі `"spoken"`. -- Повертається до звичайного тексту й видаляє ймовірні вступні абзаци планування/метаданих. +- Повертається до звичайного тексту та видаляє ймовірні вступні абзаци планування чи метаданих. -Це утримує мовленнєве відтворення сфокусованим на тексті для абонента й запобігає -витоку тексту планування в аудіо. +Це зберігає мовленнєве відтворення зосередженим на тексті для абонента та запобігає +потраплянню тексту планування в аудіо. ### Поведінка запуску розмови -Для вихідних викликів `conversation` обробка першого повідомлення прив’язана до поточного +Для вихідних викликів `conversation` обробка першого повідомлення прив'язана до поточного стану відтворення: -- Очищення черги під час втручання в розмову та автовідповідь пригнічуються лише тоді, коли початкове привітання активно промовляється. -- Якщо початкове відтворення завершується помилкою, виклик повертається до стану `listening`, а початкове повідомлення залишається в черзі для повторної спроби. -- Початкове відтворення для потокового передавання Twilio запускається під час підключення потоку без додаткової затримки. -- Втручання в розмову перериває активне відтворення й очищає записи Twilio TTS, які поставлені в чергу, але ще не відтворюються. Очищені записи завершуються як пропущені, тож логіка наступної відповіді може продовжуватися без очікування аудіо, яке ніколи не буде відтворене. -- Розмови realtime voice використовують власний початковий хід realtime-потоку. Voice Call **не** надсилає застаріле оновлення TwiML `` для цього початкового повідомлення, тож вихідні сеанси `` залишаються підключеними. +- Очищення черги barge-in і автовідповідь пригнічуються лише тоді, коли початкове привітання активно промовляється. +- Якщо початкове відтворення не вдається, виклик повертається до `listening`, а початкове повідомлення залишається в черзі для повторної спроби. +- Початкове відтворення для потокового передавання Twilio починається після підключення потоку без додаткової затримки. +- Barge-in перериває активне відтворення та очищає записи Twilio TTS, які стоять у черзі, але ще не відтворюються. Очищені записи завершуються як пропущені, тому логіка наступної відповіді може продовжитися без очікування аудіо, яке ніколи не відтвориться. +- Голосові розмови Realtime використовують власний початковий хід realtime-потоку. Voice Call **не** надсилає застаріле оновлення TwiML `` для цього початкового повідомлення, тому вихідні сеанси `` залишаються підключеними. ### Пільговий період відключення потоку Twilio -Коли медіапотік Twilio відключається, Voice Call чекає **2000 мс**, перш ніж -автоматично завершити виклик: +Коли медіапотік Twilio відключається, Voice Call чекає **2000 мс** перед +автоматичним завершенням виклику: - Якщо потік повторно підключається протягом цього вікна, автоматичне завершення скасовується. -- Якщо після пільгового періоду жоден потік не зареєструється повторно, виклик завершується, щоб запобігти завислим активним викликам. +- Якщо після пільгового періоду жоден потік не реєструється повторно, виклик завершується, щоб запобігти завислим активним викликам. ## Очищувач застарілих викликів -Використовуйте `staleCallReaperSeconds`, щоб завершувати виклики, які ніколи не отримують термінальний -Webhook (наприклад, виклики в notify-режимі, які ніколи не завершуються). Типове значення — +Використовуйте `staleCallReaperSeconds`, щоб завершувати виклики, які ніколи не отримують фінальний +Webhook (наприклад, виклики в режимі сповіщення, що ніколи не завершуються). Типове значення — `0` (вимкнено). Рекомендовані діапазони: -- **Production:** `120`–`300` секунд для потоків у стилі сповіщення. +- **Продакшн:** `120`–`300` секунд для потоків у стилі сповіщень. - Тримайте це значення **вищим за `maxDurationSeconds`**, щоб звичайні виклики могли завершитися. Хороша початкова точка — `maxDurationSeconds + 30–60` секунд. ```json5 @@ -561,26 +562,26 @@ Webhook (наприклад, виклики в notify-режимі, які ні ## Безпека Webhook -Коли перед Gateway розміщено proxy або tunnel, Plugin -реконструює публічний URL для перевірки підпису. Ці параметри -керують тим, яким forwarded headers довіряти: +Коли проксі або тунель розташований перед Gateway, plugin +реконструює публічну URL-адресу для перевірки підпису. Ці параметри +керують тим, яким перенаправленим заголовкам можна довіряти: - Список дозволених hosts із forwarding headers. + Дозволяє hosts із заголовків forwarding за списком allowlist. - Довіряти forwarded headers без списку дозволених. + Довіряє перенаправленим заголовкам без allowlist. - Довіряти forwarded headers лише тоді, коли віддалений IP запиту збігається зі списком. + Довіряє перенаправленим заголовкам лише тоді, коли віддалена IP-адреса запиту відповідає списку. Додаткові засоби захисту: -- **Захист від replay** Webhook увімкнено для Twilio і Plivo. Повторно відтворені дійсні запити Webhook підтверджуються, але пропускаються для побічних ефектів. -- Ходи розмови Twilio містять токен для кожного ходу в callbacks ``, тож застарілі/повторно відтворені speech callbacks не можуть задовольнити новіший очікуваний хід транскрипта. -- Неавтентифіковані запити Webhook відхиляються до читання body, коли відсутні потрібні провайдеру signature headers. -- Webhook voice-call використовує спільний pre-auth body profile (64 KB / 5 секунд) плюс per-IP in-flight cap до перевірки підпису. +- **Захист від повторного відтворення** Webhook увімкнено для Twilio і Plivo. Повторно відтворені дійсні Webhook-запити підтверджуються, але пропускаються щодо побічних ефектів. +- Ходи розмови Twilio містять токен для кожного ходу у callback-ах ``, тому застарілі або повторно відтворені callback-и мовлення не можуть задовольнити новіший очікуваний хід транскрипту. +- Неавтентифіковані Webhook-запити відхиляються до читання тіла, якщо відсутні потрібні провайдером заголовки підпису. +- Webhook voice-call використовує спільний pre-auth профіль тіла (64 КБ / 5 секунд) плюс обмеження одночасних запитів для кожної IP-адреси перед перевіркою підпису. Приклад зі стабільним публічним host: @@ -616,10 +617,15 @@ openclaw voicecall latency # summarize turn latency from lo openclaw voicecall expose --mode funnel ``` +Коли Gateway уже запущено, операційні команди `voicecall` делегують виконання +runtime voice-call, яким володіє Gateway, щоб CLI не прив'язував другий +Webhook-сервер. Якщо Gateway недоступний, команди повертаються до +автономного runtime CLI. + `latency` читає `calls.jsonl` зі стандартного шляху сховища voice-call. -Використовуйте `--file `, щоб указати інший log, і `--last `, щоб обмежити +Використовуйте `--file `, щоб вказати інший журнал, і `--last `, щоб обмежити аналіз останніми N записами (типово 200). Вивід містить p50/p90/p99 -для затримки ходу та часу очікування прослуховування. +для затримки ходу та часу очікування слухання. ## Інструмент агента @@ -636,9 +642,9 @@ openclaw voicecall expose --mode funnel Цей репозиторій постачає відповідний документ skill за адресою `skills/voice-call/SKILL.md`. -## Gateway RPC +## RPC Gateway -| Метод | Аргументи | +| Метод | Аргументи | | -------------------- | ------------------------- | | `voicecall.initiate` | `to?`, `message`, `mode?` | | `voicecall.continue` | `callId`, `message` | @@ -647,8 +653,8 @@ openclaw voicecall expose --mode funnel | `voicecall.end` | `callId` | | `voicecall.status` | `callId` | -## Пов’язане +## Пов'язане -- [Talk mode](/uk/nodes/talk) -- [Text-to-speech](/uk/tools/tts) -- [Voice wake](/uk/nodes/voicewake) +- [Режим розмови](/uk/nodes/talk) +- [Перетворення тексту на мовлення](/uk/tools/tts) +- [Голосова активація](/uk/nodes/voicewake)