chore(i18n): refresh uk translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-05-01 05:41:07 +00:00
parent 8319b9e425
commit a2efdac3c4
2 changed files with 141 additions and 132 deletions

View File

@ -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 <id> --digits "ww123456#"
openclaw voicecall end --call-id <id>
```
`setup` за замовчуванням виводить зручні для читання перевірки готовності. Використовуйте `--json` для
`setup` за замовчуванням виводить перевірки готовності в зручному для читання форматі. Використовуйте `--json` для
скриптів:
```bash
openclaw voicecall setup --json
```
`status` за замовчуванням виводить активні виклики у форматі JSON. Передайте `--call-id <id>`, щоб переглянути
`status` за замовчуванням виводить активні виклики у форматі JSON. Передайте `--call-id <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.
## Пов’язане

View File

@ -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` (розробка/без мережі).
<Note>
Plugin Voice Call працює **всередині процесу Gateway**. Якщо ви використовуєте
віддалений Gateway, установіть і налаштуйте Plugin на машині, де працює
Плагін Voice Call працює **всередині процесу Gateway**. Якщо ви використовуєте
віддалений Gateway, установіть і налаштуйте плагін на машині, де запущено
Gateway, а потім перезапустіть Gateway, щоб завантажити його.
</Note>
## Швидкий старт
<Steps>
<Step title="Установіть Plugin">
<Step title="Установіть плагін">
<Tabs>
<Tab title="З npm">
```bash
@ -48,28 +48,28 @@ Gateway, а потім перезапустіть Gateway, щоб заванта
</Tab>
</Tabs>
Якщо npm повідомляє, що пакет, який належить OpenClaw, застарілий, ця версія пакета
походить зі старішої зовнішньої гілки пакетів; використовуйте поточну пакетовану збірку
OpenClaw або шлях до локальної папки, доки не буде опубліковано новіший пакет npm.
Якщо npm повідомляє, що пакет, який належить OpenClaw, є застарілим, ця версія пакета
походить зі старішої зовнішньої лінійки пакетів; використовуйте поточну пакетовану збірку OpenClaw
або шлях до локальної папки, доки не буде опубліковано новіший пакет npm.
Після цього перезапустіть Gateway, щоб Plugin завантажився.
Після цього перезапустіть Gateway, щоб плагін завантажився.
</Step>
<Step title="Налаштуйте провайдера та Webhook">
Установіть конфігурацію в `plugins.entries.voice-call.config` (повну структуру див.
<Step title="Налаштуйте провайдера та webhook">
Задайте конфігурацію в `plugins.entries.voice-call.config` (повну структуру див.
у розділі [Конфігурація](#configuration) нижче). Мінімально потрібні:
`provider`, облікові дані провайдера, `fromNumber` і публічно
доступна URL-адреса Webhook.
`provider`, облікові дані провайдера, `fromNumber` і загальнодоступна
URL-адреса webhook.
</Step>
<Step title="Перевірте налаштування">
```bash
openclaw voicecall setup
```
Типовий вивід зручно читати в журналах чату й терміналах. Він перевіряє,
чи ввімкнено Plugin, облікові дані провайдера, доступність Webhook і те,
що активний лише один аудіорежим (`streaming` або `realtime`). Використовуйте
`--json` для скриптів.
Типовий вивід зручно читати в журналах чатів і терміналах. Він перевіряє
ввімкнення плагіна, облікові дані провайдера, доступність webhook і те, що
активний лише один аудіорежим (`streaming` або `realtime`). Для скриптів використовуйте
`--json`.
</Step>
<Step title="Smoke-тест">
@ -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, щоб заванта
</Steps>
<Warning>
Для Twilio, Telnyx і Plivo налаштування має визначати **публічну URL-адресу Webhook**.
Якщо `publicUrl`, URL тунелю, URL Tailscale або резервний serve
визначається як loopback чи приватний мережевий простір, налаштування завершується помилкою замість
запуску провайдера, який не може отримувати Webhook-и оператора.
Для Twilio, Telnyx і Plivo налаштування має визначати **публічну URL-адресу webhook**.
Якщо `publicUrl`, URL-адреса тунелю, URL-адреса Tailscale або резервний варіант serve
визначається як loopback чи простір приватної мережі, налаштування завершується помилкою замість
запуску провайдера, який не зможе отримувати webhook від оператора.
</Warning>
## Конфігурація
Якщо `enabled: true`, але у вибраного провайдера бракує облікових даних,
Якщо `enabled: true`, але для вибраного провайдера бракує облікових даних,
під час запуску Gateway записує попередження про неповне налаштування з відсутніми ключами та
пропускає запуск runtime. Команди, RPC-виклики й інструменти агента все одно
повертають точну відсутню конфігурацію провайдера під час використання.
@ -164,20 +164,20 @@ Gateway, а потім перезапустіть Gateway, щоб заванта
```
<AccordionGroup>
<Accordion title="Нотатки щодо відкриття доступу до провайдера та безпеки">
- Twilio, Telnyx і Plivo потребують **публічно доступної** URL-адреси Webhook.
- `mock` — локальний провайдер для розробки (без мережевих викликів).
- Telnyx потребує `telnyx.publicKey` (або `TELNYX_PUBLIC_KEY`), якщо `skipSignatureVerification` не дорівнює true.
<Accordion title="Нотатки щодо доступності провайдера та безпеки">
- 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.
</Accordion>
<Accordion title="Обмеження потокових підключень">
<Accordion title="Ліміти потокових з’єднань">
- `streaming.preStartTimeoutMs` закриває сокети, які ніколи не надсилають дійсний кадр `start`.
- `streaming.maxPendingConnections` обмежує загальну кількість неавтентифікованих сокетів до start.
- `streaming.maxPendingConnectionsPerIp` обмежує кількість неавтентифікованих сокетів до start на IP-адресу джерела.
- `streaming.maxPendingConnections` обмежує загальну кількість неавтентифікованих сокетів перед стартом.
- `streaming.maxPendingConnectionsPerIp` обмежує неавтентифіковані сокети перед стартом для однієї вихідної IP-адреси.
- `streaming.maxConnections` обмежує загальну кількість відкритих сокетів медіапотоку (очікувані + активні).
</Accordion>
@ -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`, який лише пересилає аудіо
провайдерам транскрипції в реальному часі.
<Warning>
`realtime.enabled` не можна поєднувати з `streaming.enabled`. Виберіть один
аудіорежим на виклик.
аудіорежим для кожного виклику.
</Warning>
Поточна поведінка runtime:
- `realtime.enabled` підтримується для Twilio Media Streams.
- `realtime.provider` є необов’язковим. Якщо його не задано, Voice Call використовує першого зареєстрованого голосового провайдера реального часу.
- Вбудовані голосові провайдери реального часу: Google Gemini Live (`google`) і OpenAI (`openai`), зареєстровані їхніми провайдерськими plugins.
- Необроблена конфігурація, що належить провайдеру, розміщується в `realtime.providers.<providerId>`.
- 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.<providerId>`.
- 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` усе одно передаються провайдеру реального часу. |
### Приклади провайдерів реального часу
<Tabs>
<Tab title="Google Gemini Live">
Типові значення: 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, щоб заванта
</Tabs>
Див. [провайдера 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.<providerId>`.
- Після того як Twilio надсилає прийняте повідомлення `start` потоку, Voice Call негайно реєструє потік, ставить вхідні медіа в чергу через провайдера транскрипції, поки провайдер підключається, і починає початкове привітання лише після готовності транскрипції в реальному часі.
- Якщо `streaming.provider` вказує на незареєстрованого провайдера або жодного не зареєстровано, Voice Call записує попередження й пропускає потокове медіа замість того, щоб завершити весь Plugin помилкою.
- Вбудовані провайдери транскрипції в реальному часі: Deepgram (`deepgram`), ElevenLabs (`elevenlabs`), Mistral (`mistral`), OpenAI (`openai`) і xAI (`xai`), зареєстровані їхніми плагінами провайдерів.
- Необроблена конфігурація, що належить провайдеру, міститься в `streaming.providers.<providerId>`.
- Після того як Twilio надсилає прийняте повідомлення потоку `start`, Voice Call негайно реєструє потік, ставить вхідні медіа в чергу через провайдера транскрипції, поки провайдер під’єднується, і запускає початкове привітання лише після готовності транскрипції в реальному часі.
- Якщо `streaming.provider` вказує на незареєстрованого провайдера або жодного не зареєстровано, Voice Call записує попередження й пропускає потокове медіа замість того, щоб зупиняти весь плагін з помилкою.
### Приклади провайдерів streaming
<Tabs>
<Tab title="OpenAI">
Типові значення: 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, щоб заванта
</Tab>
<Tab title="xAI">
Типові значення: 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
```
<Warning>
**Microsoft speech ігнорується для голосових викликів.** Телефонний аудіопотік потребує PCM;
поточний транспорт Microsoft не надає телефонний PCM-вивід.
**Microsoft speech ігнорується для голосових викликів.** Телефонний звук потребує PCM;
поточний транспорт Microsoft не надає телефонний вихід PCM.
</Warning>
Примітки щодо поведінки:
- Застарілі ключі `tts.<provider>` у конфігурації Plugin (`openai`, `elevenlabs`, `microsoft`, `edge`) виправляються командою `openclaw doctor --fix`; зафіксована конфігурація має використовувати `tts.providers.<provider>`.
- Основний TTS використовується, коли ввімкнено потокове передавання медіа Twilio; інакше виклики повертаються до нативних голосів провайдера.
- Якщо медіапотік Twilio уже активний, Voice Call не повертається до TwiML `<Say>`. Якщо телефонний TTS недоступний у цьому стані, запит відтворення завершується помилкою замість змішування двох шляхів відтворення.
- Застарілі ключі `tts.<provider>` у конфігурації plugin (`openai`, `elevenlabs`, `microsoft`, `edge`) виправляються командою `openclaw doctor --fix`; зафіксована конфігурація має використовувати `tts.providers.<provider>`.
- Основний TTS використовується, коли ввімкнено медіапотокове передавання Twilio; інакше виклики повертаються до нативних голосів провайдера.
- Якщо медіапотік Twilio вже активний, Voice Call не повертається до TwiML `<Say>`. Якщо телефонний 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
```
<Warning>
`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, а не як надійну
ідентичність абонента.
</Warning>
Автовідповіді використовують систему агента. Налаштовуйте їх за допомогою `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 `<Say>` для цього початкового повідомлення, тож вихідні сеанси `<Connect><Stream>` залишаються підключеними.
- Очищення черги barge-in і автовідповідь пригнічуються лише тоді, коли початкове привітання активно промовляється.
- Якщо початкове відтворення не вдається, виклик повертається до `listening`, а початкове повідомлення залишається в черзі для повторної спроби.
- Початкове відтворення для потокового передавання Twilio починається після підключення потоку без додаткової затримки.
- Barge-in перериває активне відтворення та очищає записи Twilio TTS, які стоять у черзі, але ще не відтворюються. Очищені записи завершуються як пропущені, тому логіка наступної відповіді може продовжитися без очікування аудіо, яке ніколи не відтвориться.
- Голосові розмови Realtime використовують власний початковий хід realtime-потоку. Voice Call **не** надсилає застаріле оновлення TwiML `<Say>` для цього початкового повідомлення, тому вихідні сеанси `<Connect><Stream>` залишаються підключеними.
### Пільговий період відключення потоку Twilio
Коли медіапотік Twilio відключається, Voice Call чекає **2000 мс**, перш ніж
автоматично завершити виклик:
Коли медіапотік Twilio відключається, Voice Call чекає **2000 мс** перед
автоматичним завершенням виклику:
- Якщо потік повторно підключається протягом цього вікна, автоматичне завершення скасовується.
- Якщо після пільгового періоду жоден потік не зареєструється повторно, виклик завершується, щоб запобігти завислим активним викликам.
- Якщо після пільгового періоду жоден потік не реєструється повторно, виклик завершується, щоб запобігти завислим активним викликам.
## Очищувач застарілих викликів
Використовуйте `staleCallReaperSeconds`, щоб завершувати виклики, які ніколи не отримують термінальний
Webhook (наприклад, виклики в notify-режимі, які ніколи не завершуються). Типове значення —
Використовуйте `staleCallReaperSeconds`, щоб завершувати виклики, які ніколи не отримують фінальний
Webhook (наприклад, виклики в режимі сповіщення, що ніколи не завершуються). Типове значення —
`0` (вимкнено).
Рекомендовані діапазони:
- **Production:** `120``300` секунд для потоків у стилі сповіщення.
- **Продакшн:** `120``300` секунд для потоків у стилі сповіщень.
- Тримайте це значення **вищим за `maxDurationSeconds`**, щоб звичайні виклики могли завершитися. Хороша початкова точка — `maxDurationSeconds + 3060` секунд.
```json5
@ -561,26 +562,26 @@ Webhook (наприклад, виклики в notify-режимі, які ні
## Безпека Webhook
Коли перед Gateway розміщено proxy або tunnel, Plugin
реконструює публічний URL для перевірки підпису. Ці параметри
керують тим, яким forwarded headers довіряти:
Коли проксі або тунель розташований перед Gateway, plugin
реконструює публічну URL-адресу для перевірки підпису. Ці параметри
керують тим, яким перенаправленим заголовкам можна довіряти:
<ParamField path="webhookSecurity.allowedHosts" type="string[]">
Список дозволених hosts із forwarding headers.
Дозволяє hosts із заголовків forwarding за списком allowlist.
</ParamField>
<ParamField path="webhookSecurity.trustForwardingHeaders" type="boolean">
Довіряти forwarded headers без списку дозволених.
Довіряє перенаправленим заголовкам без allowlist.
</ParamField>
<ParamField path="webhookSecurity.trustedProxyIPs" type="string[]">
Довіряти forwarded headers лише тоді, коли віддалений IP запиту збігається зі списком.
Довіряє перенаправленим заголовкам лише тоді, коли віддалена IP-адреса запиту відповідає списку.
</ParamField>
Додаткові засоби захисту:
- **Захист від replay** Webhook увімкнено для Twilio і Plivo. Повторно відтворені дійсні запити Webhook підтверджуються, але пропускаються для побічних ефектів.
- Ходи розмови Twilio містять токен для кожного ходу в callbacks `<Gather>`, тож застарілі/повторно відтворені 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-ах `<Gather>`, тому застарілі або повторно відтворені 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 <path>`, щоб указати інший log, і `--last <n>`, щоб обмежити
Використовуйте `--file <path>`, щоб вказати інший журнал, і `--last <n>`, щоб обмежити
аналіз останніми 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)