chore(i18n): refresh pl translations
This commit is contained in:
parent
bdbf79b61c
commit
20b2c4ef13
@ -1,54 +1,57 @@
|
||||
---
|
||||
read_when:
|
||||
- Chcesz, aby agent OpenClaw dołączył do rozmowy Google Meet
|
||||
- Konfigurujesz Chrome, Chrome Node lub Twilio jako transport Google Meet
|
||||
summary: 'Plugin Google Meet: dołączanie do jawnych URL-i Meet przez Chrome lub Twilio z domyślnymi ustawieniami głosu w czasie rzeczywistym'
|
||||
- Konfigurujesz Chrome, węzeł Chrome lub Twilio jako transport Google Meet
|
||||
summary: 'Plugin Google Meet: dołączanie do jawnych adresów URL Meet przez Chrome lub Twilio z domyślnymi ustawieniami głosu w czasie rzeczywistym'
|
||||
title: Plugin Google Meet
|
||||
x-i18n:
|
||||
generated_at: "2026-04-24T09:22:43Z"
|
||||
generated_at: "2026-04-24T09:53:34Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 8d430a1f2d6ee7fc1d997ef388a2e0d2915a6475480343e7060edac799dfc027
|
||||
source_hash: f1673ac4adc9cf163194a340dd6e451d0e4d28bb62adeb126898298e62106d43
|
||||
source_path: plugins/google-meet.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# Google Meet (Plugin)
|
||||
|
||||
Obsługa uczestników Google Meet dla OpenClaw.
|
||||
Obsługa uczestnika Google Meet dla OpenClaw.
|
||||
|
||||
Ten Plugin jest z założenia jawny:
|
||||
Plugin jest celowo jawny:
|
||||
|
||||
- Dołącza tylko do jawnego URL `https://meet.google.com/...`.
|
||||
- Domyślnym trybem głosowym jest `realtime`.
|
||||
- Głos w czasie rzeczywistym może wywoływać pełnego agenta OpenClaw, gdy potrzebne są głębsze
|
||||
- Dołącza tylko do jawnego adresu URL `https://meet.google.com/...`.
|
||||
- Głos `realtime` jest trybem domyślnym.
|
||||
- Głos w czasie rzeczywistym może wywołać pełnego agenta OpenClaw, gdy potrzebne są głębsze
|
||||
rozumowanie lub narzędzia.
|
||||
- Uwierzytelnianie zaczyna się od osobistego Google OAuth albo już zalogowanego profilu Chrome.
|
||||
- Uwierzytelnianie zaczyna się od osobistego Google OAuth lub już zalogowanego profilu Chrome.
|
||||
- Nie ma automatycznego komunikatu o zgodzie.
|
||||
- Domyślnym backendem audio Chrome jest `BlackHole 2ch`.
|
||||
- Chrome może działać lokalnie albo na sparowanym hoście Node.
|
||||
- Twilio akceptuje numer dial-in oraz opcjonalny PIN lub sekwencję DTMF.
|
||||
- Polecenie CLI to `googlemeet`; `meet` jest zarezerwowane dla szerszych
|
||||
przepływów telekonferencji agentów.
|
||||
- Chrome może działać lokalnie lub na sparowanym hoście Node.
|
||||
- Twilio przyjmuje numer do połączenia oraz opcjonalny PIN lub sekwencję DTMF.
|
||||
- Poleceniem CLI jest `googlemeet`; `meet` jest zarezerwowane dla szerszych
|
||||
przepływów telekonferencyjnych agenta.
|
||||
|
||||
## Szybki start
|
||||
|
||||
Zainstaluj lokalne zależności audio i upewnij się, że dostawca realtime może używać
|
||||
OpenAI:
|
||||
Zainstaluj lokalne zależności audio i skonfiguruj dostawcę głosu działającego w czasie rzeczywistym
|
||||
w backendzie. OpenAI jest domyślne; Google Gemini Live również działa z
|
||||
`realtime.provider: "google"`:
|
||||
|
||||
```bash
|
||||
brew install blackhole-2ch sox
|
||||
export OPENAI_API_KEY=sk-...
|
||||
# lub
|
||||
export GEMINI_API_KEY=...
|
||||
```
|
||||
|
||||
`blackhole-2ch` instaluje wirtualne urządzenie audio `BlackHole 2ch`. Instalator
|
||||
Homebrew wymaga restartu, zanim macOS udostępni to urządzenie:
|
||||
Homebrew wymaga ponownego uruchomienia, zanim macOS udostępni to urządzenie:
|
||||
|
||||
```bash
|
||||
sudo reboot
|
||||
```
|
||||
|
||||
Po restarcie zweryfikuj oba elementy:
|
||||
Po ponownym uruchomieniu sprawdź oba elementy:
|
||||
|
||||
```bash
|
||||
system_profiler SPAudioDataType | grep -i BlackHole
|
||||
@ -92,38 +95,39 @@ Albo pozwól agentowi dołączyć przez narzędzie `google_meet`:
|
||||
```
|
||||
|
||||
Chrome dołącza jako zalogowany profil Chrome. W Meet wybierz `BlackHole 2ch` dla
|
||||
ścieżki mikrofonu/głośnika używanej przez OpenClaw. Aby uzyskać czysty dźwięk
|
||||
dupleksowy, użyj oddzielnych urządzeń wirtualnych albo grafu w stylu Loopback; jedno urządzenie BlackHole wystarczy
|
||||
do pierwszego testu smoke, ale może powodować echo.
|
||||
ścieżki mikrofonu/głośnika używanej przez OpenClaw. Aby uzyskać czysty dźwięk dupleksowy, użyj
|
||||
osobnych urządzeń wirtualnych lub grafu w stylu Loopback; pojedyncze urządzenie BlackHole
|
||||
wystarcza do pierwszego testu smoke, ale może powodować echo.
|
||||
|
||||
### Lokalny Gateway + Chrome w Parallels
|
||||
|
||||
Nie potrzebujesz pełnego Gateway OpenClaw ani klucza API modelu wewnątrz maszyny wirtualnej macOS
|
||||
tylko po to, aby to VM było właścicielem Chrome. Uruchom Gateway i agenta lokalnie, a następnie uruchom
|
||||
hosta Node w VM. Włącz dołączony Plugin w VM raz, aby Node
|
||||
**Nie** potrzebujesz pełnego OpenClaw Gateway ani klucza API modelu wewnątrz macOS VM
|
||||
tylko po to, aby VM był hostem dla Chrome. Uruchom Gateway i agenta lokalnie, a następnie uruchom
|
||||
hosta Node w VM. Włącz dołączony Plugin w VM jeden raz, aby Node
|
||||
ogłaszał polecenie Chrome:
|
||||
|
||||
Co działa gdzie:
|
||||
|
||||
- Host Gateway: Gateway OpenClaw, obszar roboczy agenta, klucze modelu/API, dostawca realtime
|
||||
oraz konfiguracja Pluginu Google Meet.
|
||||
- VM macOS w Parallels: CLI/node host OpenClaw, Google Chrome, SoX, BlackHole 2ch,
|
||||
- Host Gateway: OpenClaw Gateway, przestrzeń robocza agenta, klucze modelu/API, dostawca
|
||||
`realtime` oraz konfiguracja pluginu Google Meet.
|
||||
- Parallels macOS VM: CLI/host Node OpenClaw, Google Chrome, SoX, BlackHole 2ch
|
||||
oraz profil Chrome zalogowany do Google.
|
||||
- Niewymagane w VM: usługa Gateway, konfiguracja agenta, klucz OpenAI/GPT ani konfiguracja dostawcy modelu.
|
||||
- Niepotrzebne w VM: usługa Gateway, konfiguracja agenta, klucz OpenAI/GPT ani konfiguracja
|
||||
dostawcy modelu.
|
||||
|
||||
Zainstaluj zależności VM:
|
||||
Zainstaluj zależności w VM:
|
||||
|
||||
```bash
|
||||
brew install blackhole-2ch sox
|
||||
```
|
||||
|
||||
Uruchom ponownie VM po instalacji BlackHole, aby macOS udostępnił `BlackHole 2ch`:
|
||||
Uruchom ponownie VM po zainstalowaniu BlackHole, aby macOS udostępnił `BlackHole 2ch`:
|
||||
|
||||
```bash
|
||||
sudo reboot
|
||||
```
|
||||
|
||||
Po restarcie sprawdź, czy VM widzi urządzenie audio i polecenia SoX:
|
||||
Po ponownym uruchomieniu sprawdź, czy VM widzi urządzenie audio i polecenia SoX:
|
||||
|
||||
```bash
|
||||
system_profiler SPAudioDataType | grep -i BlackHole
|
||||
@ -142,15 +146,15 @@ Uruchom hosta Node w VM:
|
||||
openclaw node run --host <gateway-host> --port 18789 --display-name parallels-macos
|
||||
```
|
||||
|
||||
Jeśli `<gateway-host>` jest adresem IP LAN i nie używasz TLS, Node odrzuci to
|
||||
jawne połączenie WebSocket, chyba że jawnie zezwolisz na tę zaufaną sieć prywatną:
|
||||
Jeśli `<gateway-host>` jest adresem IP w LAN i nie używasz TLS, Node odrzuca
|
||||
nieszyfrowany WebSocket, chyba że jawnie włączysz to dla tej zaufanej sieci prywatnej:
|
||||
|
||||
```bash
|
||||
OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1 \
|
||||
openclaw node run --host <gateway-lan-ip> --port 18789 --display-name parallels-macos
|
||||
```
|
||||
|
||||
Użyj tej samej zmiennej środowiskowej przy instalowaniu Node jako LaunchAgent:
|
||||
Użyj tej samej zmiennej środowiskowej podczas instalowania Node jako LaunchAgent:
|
||||
|
||||
```bash
|
||||
OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1 \
|
||||
@ -158,8 +162,8 @@ OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1 \
|
||||
openclaw node restart
|
||||
```
|
||||
|
||||
`OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1` to środowisko procesu, a nie
|
||||
ustawienie `openclaw.json`. `openclaw node install` zapisuje je w środowisku LaunchAgent,
|
||||
`OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1` jest środowiskiem procesu, a nie ustawieniem
|
||||
`openclaw.json`. `openclaw node install` zapisuje je w środowisku LaunchAgent,
|
||||
gdy jest obecne w poleceniu instalacji.
|
||||
|
||||
Zatwierdź Node z hosta Gateway:
|
||||
@ -169,13 +173,13 @@ openclaw devices list
|
||||
openclaw devices approve <requestId>
|
||||
```
|
||||
|
||||
Potwierdź, że Gateway widzi Node i że ogłasza `googlemeet.chrome`:
|
||||
Potwierdź, że Gateway widzi Node i że ogłasza on `googlemeet.chrome`:
|
||||
|
||||
```bash
|
||||
openclaw nodes status
|
||||
```
|
||||
|
||||
Skieruj Meet przez ten Node na hoście Gateway:
|
||||
Kieruj Meet przez ten Node na hoście Gateway:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -206,63 +210,64 @@ Teraz dołącz normalnie z hosta Gateway:
|
||||
openclaw googlemeet join https://meet.google.com/abc-defg-hij
|
||||
```
|
||||
|
||||
albo poproś agenta, aby użył narzędzia `google_meet` z `transport: "chrome-node"`.
|
||||
albo poproś agenta o użycie narzędzia `google_meet` z `transport: "chrome-node"`.
|
||||
|
||||
Jeśli `chromeNode.node` zostanie pominięte, OpenClaw automatycznie wybiera tylko wtedy, gdy dokładnie jeden
|
||||
podłączony Node ogłasza `googlemeet.chrome`. Jeśli podłączonych jest kilka
|
||||
Jeśli `chromeNode.node` zostanie pominięte, OpenClaw wybiera automatycznie tylko wtedy, gdy dokładnie jeden
|
||||
połączony Node ogłasza `googlemeet.chrome`. Jeśli podłączonych jest kilka
|
||||
obsługiwanych Node, ustaw `chromeNode.node` na identyfikator Node, nazwę wyświetlaną lub zdalny adres IP.
|
||||
|
||||
Typowe kontrole awarii:
|
||||
Typowe kontrole w przypadku błędów:
|
||||
|
||||
- `No connected Google Meet-capable node`: uruchom `openclaw node run` w VM,
|
||||
zatwierdź parowanie i upewnij się, że w VM uruchomiono `openclaw plugins enable google-meet`.
|
||||
Potwierdź też, że host Gateway zezwala na polecenie Node przez
|
||||
zatwierdź parowanie i upewnij się, że uruchomiono `openclaw plugins enable google-meet`
|
||||
w VM. Potwierdź też, że host Gateway zezwala na polecenie Node przez
|
||||
`gateway.nodes.allowCommands: ["googlemeet.chrome"]`.
|
||||
- `BlackHole 2ch audio device not found on the node`: zainstaluj `blackhole-2ch`
|
||||
w VM i uruchom ponownie VM.
|
||||
- Chrome otwiera się, ale nie może dołączyć: zaloguj się do Chrome wewnątrz VM i potwierdź, że
|
||||
ten profil może ręcznie dołączyć do URL Meet.
|
||||
- Brak audio: w Meet skieruj mikrofon/głośnik przez ścieżkę wirtualnego urządzenia audio
|
||||
używaną przez OpenClaw; dla czystego dupleksu użyj oddzielnych urządzeń wirtualnych albo routingu
|
||||
w stylu Loopback.
|
||||
w VM i uruchom VM ponownie.
|
||||
- Chrome otwiera się, ale nie może dołączyć: zaloguj się do Chrome wewnątrz VM i potwierdź, że ten
|
||||
profil może ręcznie dołączyć do adresu URL Meet.
|
||||
- Brak dźwięku: w Meet kieruj mikrofon/głośnik przez ścieżkę wirtualnego urządzenia audio
|
||||
używaną przez OpenClaw; użyj osobnych urządzeń wirtualnych lub routingu w stylu Loopback,
|
||||
aby uzyskać czysty dupleks audio.
|
||||
|
||||
## Uwagi dotyczące instalacji
|
||||
|
||||
Domyślna ścieżka Chrome realtime używa dwóch zewnętrznych narzędzi:
|
||||
Domyślna konfiguracja Chrome `realtime` używa dwóch narzędzi zewnętrznych:
|
||||
|
||||
- `sox`: narzędzie audio w wierszu poleceń. Plugin używa jego poleceń `rec` i `play`
|
||||
dla domyślnego mostu audio 8 kHz G.711 mu-law.
|
||||
- `blackhole-2ch`: wirtualny sterownik audio macOS. Tworzy urządzenie audio `BlackHole 2ch`,
|
||||
przez które Chrome/Meet mogą kierować dźwięk.
|
||||
dla domyślnego mostka audio 8 kHz G.711 mu-law.
|
||||
- `blackhole-2ch`: wirtualny sterownik audio dla macOS. Tworzy urządzenie audio `BlackHole 2ch`,
|
||||
przez które Chrome/Meet może kierować dźwięk.
|
||||
|
||||
OpenClaw nie dołącza ani nie redystrybuuje żadnego z tych pakietów. Dokumentacja prosi użytkowników o
|
||||
instalację ich jako zależności hosta przez Homebrew. SoX jest licencjonowany jako
|
||||
`LGPL-2.0-only AND GPL-2.0-only`; BlackHole jako GPL-3.0. Jeśli budujesz
|
||||
instalator lub appliance, który dołącza BlackHole do OpenClaw, sprawdź
|
||||
warunki licencyjne upstream BlackHole albo uzyskaj osobną licencję od Existential Audio.
|
||||
OpenClaw nie dołącza ani nie redystrybuuje żadnego z tych pakietów. Dokumentacja prosi użytkowników
|
||||
o zainstalowanie ich jako zależności hosta przez Homebrew. SoX jest licencjonowany na
|
||||
`LGPL-2.0-only AND GPL-2.0-only`; BlackHole na GPL-3.0. Jeśli budujesz
|
||||
instalator lub appliance, który dołącza BlackHole do OpenClaw, przejrzyj warunki licencyjne
|
||||
BlackHole u źródła albo uzyskaj osobną licencję od Existential Audio.
|
||||
|
||||
## Transporty
|
||||
|
||||
### Chrome
|
||||
|
||||
Transport Chrome otwiera URL Meet w Google Chrome i dołącza jako zalogowany
|
||||
profil Chrome. Na macOS Plugin sprawdza obecność `BlackHole 2ch` przed uruchomieniem.
|
||||
Jeśli jest skonfigurowany, uruchamia też polecenie sprawdzania kondycji mostu audio oraz polecenie startowe
|
||||
przed otwarciem Chrome. Użyj `chrome`, gdy Chrome/audio działają na hoście Gateway;
|
||||
użyj `chrome-node`, gdy Chrome/audio działają na sparowanym Node, takim jak VM macOS w Parallels.
|
||||
Transport Chrome otwiera adres URL Meet w Google Chrome i dołącza jako zalogowany
|
||||
profil Chrome. W macOS Plugin sprawdza obecność `BlackHole 2ch` przed uruchomieniem.
|
||||
Jeśli skonfigurowano, uruchamia też polecenie sprawdzania kondycji mostka audio oraz polecenie
|
||||
startowe przed otwarciem Chrome. Użyj `chrome`, gdy Chrome/audio działa na hoście Gateway;
|
||||
użyj `chrome-node`, gdy Chrome/audio działa na sparowanym Node, takim jak Parallels
|
||||
macOS VM.
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
Skieruj dźwięk mikrofonu i głośnika Chrome przez lokalny most audio OpenClaw.
|
||||
Jeśli `BlackHole 2ch` nie jest zainstalowane, dołączenie kończy się błędem konfiguracji
|
||||
zamiast po cichu dołączyć bez ścieżki audio.
|
||||
Kieruj dźwięk mikrofonu i głośnika Chrome przez lokalny mostek audio OpenClaw.
|
||||
Jeśli `BlackHole 2ch` nie jest zainstalowany, dołączenie kończy się błędem konfiguracji
|
||||
zamiast cichego dołączenia bez ścieżki audio.
|
||||
|
||||
### Twilio
|
||||
|
||||
Transport Twilio to ścisły plan wybierania delegowany do Pluginu Voice Call. Nie
|
||||
Transport Twilio to ścisły plan wybierania delegowany do pluginu Voice Call. Nie
|
||||
parsuje stron Meet w poszukiwaniu numerów telefonów.
|
||||
|
||||
```bash
|
||||
@ -281,7 +286,7 @@ openclaw googlemeet join https://meet.google.com/abc-defg-hij \
|
||||
--dtmf-sequence ww123456#
|
||||
```
|
||||
|
||||
## OAuth i preflight
|
||||
## OAuth i wstępna kontrola
|
||||
|
||||
Dostęp do Google Meet Media API najpierw używa osobistego klienta OAuth. Skonfiguruj
|
||||
`oauth.clientId` i opcjonalnie `oauth.clientSecret`, a następnie uruchom:
|
||||
@ -291,47 +296,50 @@ openclaw googlemeet auth login --json
|
||||
```
|
||||
|
||||
Polecenie wypisuje blok konfiguracji `oauth` z tokenem odświeżania. Używa PKCE,
|
||||
callbacku localhost pod `http://localhost:8085/oauth2callback` oraz ręcznego
|
||||
wywołania zwrotnego localhost pod `http://localhost:8085/oauth2callback` oraz ręcznego
|
||||
przepływu kopiuj/wklej z `--manual`.
|
||||
|
||||
Te zmienne środowiskowe są akceptowane jako fallbacki:
|
||||
Te zmienne środowiskowe są akceptowane jako wartości zapasowe:
|
||||
|
||||
- `OPENCLAW_GOOGLE_MEET_CLIENT_ID` albo `GOOGLE_MEET_CLIENT_ID`
|
||||
- `OPENCLAW_GOOGLE_MEET_CLIENT_SECRET` albo `GOOGLE_MEET_CLIENT_SECRET`
|
||||
- `OPENCLAW_GOOGLE_MEET_REFRESH_TOKEN` albo `GOOGLE_MEET_REFRESH_TOKEN`
|
||||
- `OPENCLAW_GOOGLE_MEET_ACCESS_TOKEN` albo `GOOGLE_MEET_ACCESS_TOKEN`
|
||||
- `OPENCLAW_GOOGLE_MEET_ACCESS_TOKEN_EXPIRES_AT` albo
|
||||
- `OPENCLAW_GOOGLE_MEET_CLIENT_ID` lub `GOOGLE_MEET_CLIENT_ID`
|
||||
- `OPENCLAW_GOOGLE_MEET_CLIENT_SECRET` lub `GOOGLE_MEET_CLIENT_SECRET`
|
||||
- `OPENCLAW_GOOGLE_MEET_REFRESH_TOKEN` lub `GOOGLE_MEET_REFRESH_TOKEN`
|
||||
- `OPENCLAW_GOOGLE_MEET_ACCESS_TOKEN` lub `GOOGLE_MEET_ACCESS_TOKEN`
|
||||
- `OPENCLAW_GOOGLE_MEET_ACCESS_TOKEN_EXPIRES_AT` lub
|
||||
`GOOGLE_MEET_ACCESS_TOKEN_EXPIRES_AT`
|
||||
- `OPENCLAW_GOOGLE_MEET_DEFAULT_MEETING` albo `GOOGLE_MEET_DEFAULT_MEETING`
|
||||
- `OPENCLAW_GOOGLE_MEET_PREVIEW_ACK` albo `GOOGLE_MEET_PREVIEW_ACK`
|
||||
- `OPENCLAW_GOOGLE_MEET_DEFAULT_MEETING` lub `GOOGLE_MEET_DEFAULT_MEETING`
|
||||
- `OPENCLAW_GOOGLE_MEET_PREVIEW_ACK` lub `GOOGLE_MEET_PREVIEW_ACK`
|
||||
|
||||
Rozwiąż URL Meet, kod albo `spaces/{id}` przez `spaces.get`:
|
||||
Rozwiąż adres URL Meet, kod lub `spaces/{id}` przez `spaces.get`:
|
||||
|
||||
```bash
|
||||
openclaw googlemeet resolve-space --meeting https://meet.google.com/abc-defg-hij
|
||||
```
|
||||
|
||||
Uruchom preflight przed pracą z multimediami:
|
||||
Uruchom wstępną kontrolę przed pracą z mediami:
|
||||
|
||||
```bash
|
||||
openclaw googlemeet preflight --meeting https://meet.google.com/abc-defg-hij
|
||||
```
|
||||
|
||||
Ustaw `preview.enrollmentAcknowledged: true` dopiero po potwierdzeniu, że twój
|
||||
projekt Cloud, principal OAuth i uczestnicy spotkania są zapisani do programu Google
|
||||
Workspace Developer Preview dla interfejsów Meet media API.
|
||||
Ustaw `preview.enrollmentAcknowledged: true` dopiero po potwierdzeniu, że Twój projekt Cloud,
|
||||
podmiot OAuth i uczestnicy spotkania są zapisani do Google
|
||||
Workspace Developer Preview Program dla interfejsów API mediów Meet.
|
||||
|
||||
## Konfiguracja
|
||||
|
||||
Typowa ścieżka Chrome realtime wymaga tylko włączenia Pluginu, BlackHole, SoX
|
||||
i klucza OpenAI:
|
||||
Typowa ścieżka Chrome `realtime` wymaga tylko włączonego pluginu, BlackHole, SoX
|
||||
oraz klucza dostawcy głosu działającego w czasie rzeczywistym w backendzie. OpenAI jest domyślne; ustaw
|
||||
`realtime.provider: "google"`, aby używać Google Gemini Live:
|
||||
|
||||
```bash
|
||||
brew install blackhole-2ch sox
|
||||
export OPENAI_API_KEY=sk-...
|
||||
# lub
|
||||
export GEMINI_API_KEY=...
|
||||
```
|
||||
|
||||
Ustaw konfigurację Pluginu pod `plugins.entries.google-meet.config`:
|
||||
Ustaw konfigurację pluginu w `plugins.entries.google-meet.config`:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -350,18 +358,18 @@ Wartości domyślne:
|
||||
|
||||
- `defaultTransport: "chrome"`
|
||||
- `defaultMode: "realtime"`
|
||||
- `chromeNode.node`: opcjonalny identyfikator/nazwa/IP Node dla `chrome-node`
|
||||
- `chromeNode.node`: opcjonalny identyfikator/nazwa/adres IP Node dla `chrome-node`
|
||||
- `chrome.audioBackend: "blackhole-2ch"`
|
||||
- `chrome.audioInputCommand`: polecenie SoX `rec` zapisujące 8 kHz G.711 mu-law
|
||||
audio do stdout
|
||||
- `chrome.audioOutputCommand`: polecenie SoX `play` odczytujące 8 kHz G.711 mu-law
|
||||
audio ze stdin
|
||||
- `chrome.audioInputCommand`: polecenie SoX `rec` zapisujące dźwięk 8 kHz G.711 mu-law
|
||||
na stdout
|
||||
- `chrome.audioOutputCommand`: polecenie SoX `play` odczytujące dźwięk 8 kHz G.711 mu-law
|
||||
ze stdin
|
||||
- `realtime.provider: "openai"`
|
||||
- `realtime.toolPolicy: "safe-read-only"`
|
||||
- `realtime.instructions`: krótkie odpowiedzi mówione, z
|
||||
`openclaw_agent_consult` dla głębszych odpowiedzi
|
||||
- `realtime.introMessage`: krótki mówiony komunikat gotowości, gdy most realtime
|
||||
się połączy; ustaw na `""`, aby dołączać po cichu
|
||||
- `realtime.introMessage`: krótki mówiony test gotowości po połączeniu mostka `realtime`;
|
||||
ustaw na `""`, aby dołączyć po cichu
|
||||
|
||||
Opcjonalne nadpisania:
|
||||
|
||||
@ -377,8 +385,15 @@ Opcjonalne nadpisania:
|
||||
node: "parallels-macos",
|
||||
},
|
||||
realtime: {
|
||||
provider: "google",
|
||||
toolPolicy: "owner",
|
||||
introMessage: "Say exactly: I'm here.",
|
||||
introMessage: "Powiedz dokładnie: Jestem tutaj.",
|
||||
providers: {
|
||||
google: {
|
||||
model: "gemini-2.5-flash-native-audio-preview-12-2025",
|
||||
voice: "Kore",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
@ -412,46 +427,46 @@ Agenci mogą używać narzędzia `google_meet`:
|
||||
```
|
||||
|
||||
Użyj `transport: "chrome"`, gdy Chrome działa na hoście Gateway. Użyj
|
||||
`transport: "chrome-node"`, gdy Chrome działa na sparowanym Node, takim jak VM
|
||||
w Parallels. W obu przypadkach model realtime i `openclaw_agent_consult` działają na
|
||||
hoście Gateway, więc poświadczenia modelu tam pozostają.
|
||||
`transport: "chrome-node"`, gdy Chrome działa na sparowanym Node, takim jak Parallels
|
||||
VM. W obu przypadkach model `realtime` i `openclaw_agent_consult` działają na
|
||||
hoście Gateway, więc poświadczenia modelu pozostają tam.
|
||||
|
||||
Użyj `action: "status"`, aby wyświetlić aktywne sesje albo sprawdzić identyfikator sesji. Użyj
|
||||
`action: "speak"` z `sessionId` i `message`, aby agent realtime
|
||||
Użyj `action: "status"`, aby wyświetlić aktywne sesje lub sprawdzić identyfikator sesji. Użyj
|
||||
`action: "speak"` z `sessionId` i `message`, aby agent `realtime`
|
||||
natychmiast coś powiedział. Użyj `action: "leave"`, aby oznaczyć sesję jako zakończoną.
|
||||
|
||||
```json
|
||||
{
|
||||
"action": "speak",
|
||||
"sessionId": "meet_...",
|
||||
"message": "Say exactly: I'm here and listening."
|
||||
"message": "Powiedz dokładnie: Jestem tutaj i słucham."
|
||||
}
|
||||
```
|
||||
|
||||
## Realtime agent consult
|
||||
## Konsultacja z agentem realtime
|
||||
|
||||
Tryb Chrome realtime jest zoptymalizowany pod żywą pętlę głosową. Dostawca
|
||||
głosu realtime słyszy dźwięk spotkania i mówi przez skonfigurowany most audio.
|
||||
Gdy model realtime potrzebuje głębszego rozumowania, bieżących informacji albo zwykłych
|
||||
Tryb Chrome `realtime` jest zoptymalizowany pod kątem pętli głosowej na żywo. Dostawca głosu
|
||||
działającego w czasie rzeczywistym słyszy dźwięk spotkania i mówi przez skonfigurowany mostek audio.
|
||||
Gdy model `realtime` potrzebuje głębszego rozumowania, aktualnych informacji lub zwykłych
|
||||
narzędzi OpenClaw, może wywołać `openclaw_agent_consult`.
|
||||
|
||||
Narzędzie consult uruchamia w tle zwykłego agenta OpenClaw z ostatnim
|
||||
kontekstem transkryptu spotkania i zwraca zwięzłą odpowiedź mówioną do sesji
|
||||
głosowej realtime. Model głosowy może następnie wypowiedzieć tę odpowiedź z powrotem w spotkaniu.
|
||||
Narzędzie konsultacji uruchamia w tle zwykłego agenta OpenClaw z kontekstem
|
||||
ostatniej transkrypcji spotkania i zwraca zwięzłą odpowiedź mówioną do sesji głosowej
|
||||
`realtime`. Model głosowy może następnie wypowiedzieć tę odpowiedź z powrotem na spotkaniu.
|
||||
|
||||
`realtime.toolPolicy` steruje przebiegiem consult:
|
||||
`realtime.toolPolicy` steruje przebiegiem konsultacji:
|
||||
|
||||
- `safe-read-only`: udostępnia narzędzie consult i ogranicza zwykłego agenta do
|
||||
- `safe-read-only`: udostępnij narzędzie konsultacji i ogranicz zwykłego agenta do
|
||||
`read`, `web_search`, `web_fetch`, `x_search`, `memory_search` oraz
|
||||
`memory_get`.
|
||||
- `owner`: udostępnia narzędzie consult i pozwala zwykłemu agentowi używać normalnej
|
||||
- `owner`: udostępnij narzędzie konsultacji i pozwól zwykłemu agentowi używać normalnej
|
||||
polityki narzędzi agenta.
|
||||
- `none`: nie udostępnia narzędzia consult modelowi głosowemu realtime.
|
||||
- `none`: nie udostępniaj narzędzia konsultacji modelowi głosowemu `realtime`.
|
||||
|
||||
Klucz sesji consult jest ograniczony per sesja Meet, dzięki czemu kolejne wywołania consult
|
||||
mogą ponownie używać wcześniejszego kontekstu consult podczas tego samego spotkania.
|
||||
Klucz sesji konsultacji jest ograniczony do danej sesji Meet, więc kolejne wywołania
|
||||
konsultacji mogą ponownie używać wcześniejszego kontekstu konsultacji podczas tego samego spotkania.
|
||||
|
||||
Aby wymusić mówiony komunikat gotowości po pełnym dołączeniu Chrome do połączenia:
|
||||
Aby wymusić mówiony test gotowości po pełnym dołączeniu Chrome do rozmowy:
|
||||
|
||||
```bash
|
||||
openclaw googlemeet speak meet_... "Say exactly: I'm here and listening."
|
||||
@ -459,29 +474,29 @@ openclaw googlemeet speak meet_... "Say exactly: I'm here and listening."
|
||||
|
||||
## Uwagi
|
||||
|
||||
Oficjalne media API Google Meet jest zorientowane na odbiór, więc mówienie do
|
||||
połączenia Meet nadal wymaga ścieżki uczestnika. Ten Plugin utrzymuje tę granicę jako widoczną:
|
||||
Chrome obsługuje udział przeglądarki i lokalny routing audio; Twilio obsługuje
|
||||
Oficjalne media API Google Meet jest zorientowane na odbiór, więc mówienie podczas rozmowy Meet
|
||||
nadal wymaga ścieżki uczestnika. Ten Plugin zachowuje tę granicę jako widoczną:
|
||||
Chrome obsługuje udział z poziomu przeglądarki i lokalne routowanie audio; Twilio obsługuje
|
||||
udział przez połączenie telefoniczne.
|
||||
|
||||
Tryb Chrome realtime wymaga jednego z poniższych:
|
||||
Tryb Chrome `realtime` wymaga jednego z poniższych:
|
||||
|
||||
- `chrome.audioInputCommand` plus `chrome.audioOutputCommand`: OpenClaw przejmuje
|
||||
most modelu realtime i przesyła audio 8 kHz G.711 mu-law między tymi
|
||||
poleceniami a wybranym dostawcą głosu realtime.
|
||||
- `chrome.audioBridgeCommand`: zewnętrzne polecenie mostu przejmuje całą lokalną
|
||||
ścieżkę audio i musi zakończyć się po uruchomieniu lub zweryfikowaniu swojego demona.
|
||||
- `chrome.audioInputCommand` oraz `chrome.audioOutputCommand`: OpenClaw zarządza
|
||||
mostkiem modelu `realtime` i przesyła dźwięk 8 kHz G.711 mu-law między tymi
|
||||
poleceniami a wybranym dostawcą głosu `realtime`.
|
||||
- `chrome.audioBridgeCommand`: zewnętrzne polecenie mostka zarządza całą lokalną
|
||||
ścieżką audio i musi zakończyć działanie po uruchomieniu lub sprawdzeniu swojego demona.
|
||||
|
||||
Aby uzyskać czysty dźwięk dupleksowy, kieruj wyjście Meet i mikrofon Meet przez oddzielne
|
||||
urządzenia wirtualne albo graf urządzeń wirtualnych w stylu Loopback. Pojedyncze współdzielone
|
||||
urządzenie BlackHole może odbijać innych uczestników z powrotem do połączenia.
|
||||
Aby uzyskać czysty dźwięk dupleksowy, kieruj wyjście Meet i mikrofon Meet przez osobne
|
||||
urządzenia wirtualne lub graf urządzeń wirtualnych w stylu Loopback. Pojedyncze współdzielone
|
||||
urządzenie BlackHole może powodować echo innych uczestników z powrotem do rozmowy.
|
||||
|
||||
`googlemeet speak` wyzwala aktywny most audio realtime dla sesji Chrome.
|
||||
`googlemeet leave` zatrzymuje ten most. Dla sesji Twilio delegowanych
|
||||
przez Plugin Voice Call `leave` rozłącza także bazowe połączenie głosowe.
|
||||
`googlemeet speak` wyzwala aktywny mostek audio `realtime` dla sesji Chrome.
|
||||
`googlemeet leave` zatrzymuje ten mostek. W przypadku sesji Twilio delegowanych
|
||||
przez Plugin Voice Call, `leave` również rozłącza bazowe połączenie głosowe.
|
||||
|
||||
## Powiązane
|
||||
|
||||
- [Plugin połączeń głosowych](/pl/plugins/voice-call)
|
||||
- [Tryb talk](/pl/nodes/talk)
|
||||
- [Tworzenie Pluginów](/pl/plugins/building-plugins)
|
||||
- [Plugin Voice call](/pl/plugins/voice-call)
|
||||
- [Tryb Talk](/pl/nodes/talk)
|
||||
- [Tworzenie pluginów](/pl/plugins/building-plugins)
|
||||
|
||||
@ -1,42 +1,42 @@
|
||||
---
|
||||
read_when:
|
||||
- Chcesz wykonać wychodzące połączenie głosowe z OpenClaw
|
||||
- Konfigurujesz lub rozwijasz Plugin voice-call
|
||||
summary: 'Plugin Voice Call: połączenia wychodzące + przychodzące przez Twilio/Telnyx/Plivo (instalacja Pluginu + konfiguracja + CLI)'
|
||||
title: Plugin Voice Call
|
||||
- Chcesz wykonać wychodzące połączenie głosowe z OpenClaw.
|
||||
- Konfigurujesz lub rozwijasz plugin voice-call.
|
||||
summary: 'Plugin Voice Call: połączenia wychodzące i przychodzące przez Twilio/Telnyx/Plivo (instalacja pluginu + konfiguracja + CLI)'
|
||||
title: plugin Voice Call
|
||||
x-i18n:
|
||||
generated_at: "2026-04-24T09:25:46Z"
|
||||
generated_at: "2026-04-24T09:53:25Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 4cd57118133506c22604ab9592a823546a91795ab425de4b7a81edbbb8374e6d
|
||||
source_hash: 6aed4e33ce090c86f43c71280f033e446f335c53d42456fdc93c9938250e9af6
|
||||
source_path: plugins/voice-call.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# Plugin Voice Call
|
||||
# Voice Call (plugin)
|
||||
|
||||
Połączenia głosowe dla OpenClaw przez Plugin. Obsługuje powiadomienia wychodzące i
|
||||
rozmowy wieloturowe z politykami przychodzącymi.
|
||||
Połączenia głosowe dla OpenClaw przez plugin. Obsługuje powiadomienia wychodzące oraz
|
||||
wieloturowe rozmowy z zasadami dla połączeń przychodzących.
|
||||
|
||||
Obecni providerzy:
|
||||
Obecni dostawcy:
|
||||
|
||||
- `twilio` (Programmable Voice + Media Streams)
|
||||
- `telnyx` (Call Control v2)
|
||||
- `plivo` (Voice API + transfer XML + GetInput speech)
|
||||
- `plivo` (Voice API + transfer XML + mowa GetInput)
|
||||
- `mock` (dev/bez sieci)
|
||||
|
||||
Szybki model mentalny:
|
||||
Szybki model działania:
|
||||
|
||||
- Zainstaluj Plugin
|
||||
- Zainstaluj plugin
|
||||
- Uruchom ponownie Gateway
|
||||
- Skonfiguruj pod `plugins.entries.voice-call.config`
|
||||
- Użyj `openclaw voicecall ...` albo narzędzia `voice_call`
|
||||
- Skonfiguruj w `plugins.entries.voice-call.config`
|
||||
- Użyj `openclaw voicecall ...` lub narzędzia `voice_call`
|
||||
|
||||
## Gdzie to działa (local vs remote)
|
||||
## Gdzie to działa (lokalnie vs zdalnie)
|
||||
|
||||
Plugin Voice Call działa **wewnątrz procesu Gateway**.
|
||||
|
||||
Jeśli używasz zdalnego Gateway, zainstaluj/skonfiguruj Plugin na **maszynie uruchamiającej Gateway**, a następnie uruchom ponownie Gateway, aby go załadować.
|
||||
Jeśli używasz zdalnego Gateway, zainstaluj/skonfiguruj plugin na **maszynie, na której działa Gateway**, a następnie uruchom ponownie Gateway, aby go załadować.
|
||||
|
||||
## Instalacja
|
||||
|
||||
@ -60,7 +60,7 @@ Następnie uruchom ponownie Gateway.
|
||||
|
||||
## Konfiguracja
|
||||
|
||||
Ustaw konfigurację pod `plugins.entries.voice-call.config`:
|
||||
Ustaw konfigurację w `plugins.entries.voice-call.config`:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -69,8 +69,8 @@ Ustaw konfigurację pod `plugins.entries.voice-call.config`:
|
||||
"voice-call": {
|
||||
enabled: true,
|
||||
config: {
|
||||
provider: "twilio", // albo "telnyx" | "plivo" | "mock"
|
||||
fromNumber: "+15550001234", // albo TWILIO_FROM_NUMBER dla Twilio
|
||||
provider: "twilio", // lub "telnyx" | "plivo" | "mock"
|
||||
fromNumber: "+15550001234", // lub TWILIO_FROM_NUMBER dla Twilio
|
||||
toNumber: "+15550005678",
|
||||
|
||||
twilio: {
|
||||
@ -81,7 +81,7 @@ Ustaw konfigurację pod `plugins.entries.voice-call.config`:
|
||||
telnyx: {
|
||||
apiKey: "...",
|
||||
connectionId: "...",
|
||||
// Klucz publiczny webhooka Telnyx z portalu Telnyx Mission Control
|
||||
// Publiczny klucz webhooka Telnyx z Telnyx Mission Control Portal
|
||||
// (ciąg Base64; można też ustawić przez TELNYX_PUBLIC_KEY).
|
||||
publicKey: "...",
|
||||
},
|
||||
@ -91,13 +91,13 @@ Ustaw konfigurację pod `plugins.entries.voice-call.config`:
|
||||
authToken: "...",
|
||||
},
|
||||
|
||||
// Serwer webhook
|
||||
// Serwer Webhook
|
||||
serve: {
|
||||
port: 3334,
|
||||
path: "/voice/webhook",
|
||||
},
|
||||
|
||||
// Bezpieczeństwo webhooków (zalecane dla tuneli/proxy)
|
||||
// Zabezpieczenia Webhook (zalecane dla tuneli/proxy)
|
||||
webhookSecurity: {
|
||||
allowedHosts: ["voice.example.com"],
|
||||
trustedProxyIPs: ["100.64.0.1"],
|
||||
@ -114,7 +114,7 @@ Ustaw konfigurację pod `plugins.entries.voice-call.config`:
|
||||
|
||||
streaming: {
|
||||
enabled: true,
|
||||
provider: "openai", // opcjonalne; pierwszy zarejestrowany provider transkrypcji realtime, jeśli nie ustawiono
|
||||
provider: "openai", // opcjonalne; pierwszy zarejestrowany dostawca transkrypcji realtime, gdy nie ustawiono
|
||||
streamPath: "/voice/stream",
|
||||
providers: {
|
||||
openai: {
|
||||
@ -129,6 +129,17 @@ Ustaw konfigurację pod `plugins.entries.voice-call.config`:
|
||||
maxPendingConnectionsPerIp: 4,
|
||||
maxConnections: 128,
|
||||
},
|
||||
|
||||
realtime: {
|
||||
enabled: false,
|
||||
provider: "google", // opcjonalne; pierwszy zarejestrowany dostawca głosu realtime, gdy nie ustawiono
|
||||
providers: {
|
||||
google: {
|
||||
model: "gemini-2.5-flash-native-audio-preview-12-2025",
|
||||
voice: "Kore",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
@ -138,48 +149,132 @@ Ustaw konfigurację pod `plugins.entries.voice-call.config`:
|
||||
|
||||
Uwagi:
|
||||
|
||||
- Twilio/Telnyx wymagają **publicznie osiągalnego** URL-a webhooka.
|
||||
- Plivo wymaga **publicznie osiągalnego** URL-a webhooka.
|
||||
- `mock` to lokalny provider deweloperski (bez wywołań sieciowych).
|
||||
- Jeśli starsze konfiguracje nadal używają `provider: "log"`, `twilio.from` albo starszych kluczy OpenAI `streaming.*`, uruchom `openclaw doctor --fix`, aby je przepisać.
|
||||
- Telnyx wymaga `telnyx.publicKey` (albo `TELNYX_PUBLIC_KEY`), chyba że `skipSignatureVerification` ma wartość true.
|
||||
- `skipSignatureVerification` służy wyłącznie do testów lokalnych.
|
||||
- Jeśli używasz darmowego planu ngrok, ustaw `publicUrl` na dokładny URL ngrok; weryfikacja podpisu jest zawsze wymuszana.
|
||||
- `tunnel.allowNgrokFreeTierLoopbackBypass: true` pozwala na webhooki Twilio z nieprawidłowymi podpisami **tylko** wtedy, gdy `tunnel.provider="ngrok"` i `serve.bind` jest loopback (lokalny agent ngrok). Używaj tylko do lokalnego dev.
|
||||
- URL-e ngrok w darmowym planie mogą się zmieniać albo dodawać zachowanie pośrednie; jeśli `publicUrl` przestanie być aktualny, podpisy Twilio będą zawodzić. W produkcji preferuj stabilną domenę albo Tailscale funnel.
|
||||
- Domyślne ustawienia bezpieczeństwa streamingu:
|
||||
- `streaming.preStartTimeoutMs` zamyka sockety, które nigdy nie wysyłają prawidłowej ramki `start`.
|
||||
- `streaming.maxPendingConnections` ogranicza całkowitą liczbę nieuwierzytelnionych socketów przed startem.
|
||||
- `streaming.maxPendingConnectionsPerIp` ogranicza liczbę nieuwierzytelnionych socketów przed startem dla źródłowego IP.
|
||||
- `streaming.maxConnections` ogranicza całkowitą liczbę otwartych socketów strumienia mediów (oczekujące + aktywne).
|
||||
- Fallback runtime nadal tymczasowo akceptuje te stare klucze `voice-call`, ale ścieżką przepisywania jest `openclaw doctor --fix`, a shim zgodności jest tymczasowy.
|
||||
- Twilio/Telnyx wymagają **publicznie dostępnego** adresu URL webhooka.
|
||||
- Plivo wymaga **publicznie dostępnego** adresu URL webhooka.
|
||||
- `mock` to lokalny dostawca deweloperski (bez wywołań sieciowych).
|
||||
- Jeśli starsze konfiguracje nadal używają `provider: "log"`, `twilio.from` lub starszych kluczy OpenAI `streaming.*`, uruchom `openclaw doctor --fix`, aby je przepisać.
|
||||
- Telnyx wymaga `telnyx.publicKey` (lub `TELNYX_PUBLIC_KEY`), chyba że `skipSignatureVerification` ma wartość true.
|
||||
- `skipSignatureVerification` jest tylko do testów lokalnych.
|
||||
- Jeśli używasz darmowego planu ngrok, ustaw `publicUrl` na dokładny adres URL ngrok; weryfikacja podpisu jest zawsze wymuszana.
|
||||
- `tunnel.allowNgrokFreeTierLoopbackBypass: true` pozwala na webhooki Twilio z nieprawidłowymi podpisami **tylko** gdy `tunnel.provider="ngrok"` i `serve.bind` jest loopback (lokalny agent ngrok). Używaj wyłącznie do lokalnego dev.
|
||||
- Adresy URL darmowego planu ngrok mogą się zmieniać lub dodawać zachowanie z interstitial; jeśli `publicUrl` się rozjedzie, podpisy Twilio będą nieprawidłowe. W środowisku produkcyjnym preferuj stabilną domenę lub Tailscale funnel.
|
||||
- `realtime.enabled` uruchamia pełne rozmowy voice-to-voice; nie włączaj tego razem z `streaming.enabled`.
|
||||
- Domyślne zabezpieczenia streamingu:
|
||||
- `streaming.preStartTimeoutMs` zamyka gniazda, które nigdy nie wysyłają prawidłowej ramki `start`.
|
||||
- `streaming.maxPendingConnections` ogranicza łączną liczbę nieuwierzytelnionych gniazd oczekujących przed startem.
|
||||
- `streaming.maxPendingConnectionsPerIp` ogranicza liczbę nieuwierzytelnionych gniazd oczekujących przed startem na źródłowy adres IP.
|
||||
- `streaming.maxConnections` ogranicza łączną liczbę otwartych gniazd strumienia mediów (oczekujące + aktywne).
|
||||
- Fallback środowiska wykonawczego nadal tymczasowo akceptuje te stare klucze voice-call, ale ścieżką przepisywania jest `openclaw doctor --fix`, a shim zgodności jest tymczasowy.
|
||||
|
||||
## Streaming transkrypcji
|
||||
## Rozmowy głosowe realtime
|
||||
|
||||
`streaming` wybiera providera transkrypcji realtime dla dźwięku połączenia na żywo.
|
||||
`realtime` wybiera w pełni dupleksowego dostawcę głosu realtime dla dźwięku połączenia na żywo.
|
||||
Jest to oddzielne od `streaming`, które tylko przekazuje dźwięk do dostawców
|
||||
transkrypcji realtime.
|
||||
|
||||
Bieżące zachowanie runtime:
|
||||
Obecne zachowanie środowiska wykonawczego:
|
||||
|
||||
- `realtime.enabled` jest obsługiwane dla Twilio Media Streams.
|
||||
- `realtime.enabled` nie można łączyć z `streaming.enabled`.
|
||||
- `realtime.provider` jest opcjonalne. Jeśli nie jest ustawione, Voice Call używa pierwszego
|
||||
zarejestrowanego dostawcy głosu realtime.
|
||||
- Dołączani dostawcy głosu realtime obejmują Google Gemini Live (`google`) oraz
|
||||
OpenAI (`openai`), rejestrowanych przez ich pluginy dostawców.
|
||||
- Surowa konfiguracja należąca do dostawcy znajduje się w `realtime.providers.<providerId>`.
|
||||
- Jeśli `realtime.provider` wskazuje niezarejestrowanego dostawcę lub w ogóle nie jest zarejestrowany
|
||||
żaden dostawca głosu realtime, Voice Call zapisuje ostrzeżenie w logu i pomija
|
||||
media realtime zamiast wywoływać błąd całego pluginu.
|
||||
|
||||
Domyślne ustawienia Google Gemini Live realtime:
|
||||
|
||||
- Klucz API: `realtime.providers.google.apiKey`, `GEMINI_API_KEY` lub
|
||||
`GOOGLE_GENERATIVE_AI_API_KEY`
|
||||
- model: `gemini-2.5-flash-native-audio-preview-12-2025`
|
||||
- voice: `Kore`
|
||||
|
||||
Przykład:
|
||||
|
||||
```json5
|
||||
{
|
||||
plugins: {
|
||||
entries: {
|
||||
"voice-call": {
|
||||
config: {
|
||||
provider: "twilio",
|
||||
inboundPolicy: "allowlist",
|
||||
allowFrom: ["+15550005678"],
|
||||
realtime: {
|
||||
enabled: true,
|
||||
provider: "google",
|
||||
instructions: "Mów krótko i pytaj przed użyciem narzędzi.",
|
||||
providers: {
|
||||
google: {
|
||||
apiKey: "${GEMINI_API_KEY}",
|
||||
model: "gemini-2.5-flash-native-audio-preview-12-2025",
|
||||
voice: "Kore",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
Użyj zamiast tego OpenAI:
|
||||
|
||||
```json5
|
||||
{
|
||||
plugins: {
|
||||
entries: {
|
||||
"voice-call": {
|
||||
config: {
|
||||
realtime: {
|
||||
enabled: true,
|
||||
provider: "openai",
|
||||
providers: {
|
||||
openai: {
|
||||
apiKey: "${OPENAI_API_KEY}",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
Zobacz [dostawcę Google](/pl/providers/google) i [dostawcę OpenAI](/pl/providers/openai),
|
||||
aby poznać opcje głosu realtime specyficzne dla dostawcy.
|
||||
|
||||
## Transkrypcja strumieniowa
|
||||
|
||||
`streaming` wybiera dostawcę transkrypcji realtime dla dźwięku połączenia na żywo.
|
||||
|
||||
Obecne zachowanie środowiska wykonawczego:
|
||||
|
||||
- `streaming.provider` jest opcjonalne. Jeśli nie jest ustawione, Voice Call używa pierwszego
|
||||
zarejestrowanego providera transkrypcji realtime.
|
||||
- Dołączeni providerzy transkrypcji realtime obejmują Deepgram (`deepgram`),
|
||||
zarejestrowanego dostawcy transkrypcji realtime.
|
||||
- Dołączani dostawcy transkrypcji realtime obejmują Deepgram (`deepgram`),
|
||||
ElevenLabs (`elevenlabs`), Mistral (`mistral`), OpenAI (`openai`) i xAI
|
||||
(`xai`), rejestrowanych przez ich Pluginy providerów.
|
||||
- Surowa konfiguracja należąca do providera znajduje się pod `streaming.providers.<providerId>`.
|
||||
- Jeśli `streaming.provider` wskazuje na niezarejestrowanego providera albo w ogóle nie jest zarejestrowany żaden
|
||||
provider transkrypcji realtime, Voice Call zapisuje ostrzeżenie w logu i
|
||||
pomija streaming mediów zamiast wywracać cały Plugin.
|
||||
(`xai`), rejestrowanych przez ich pluginy dostawców.
|
||||
- Surowa konfiguracja należąca do dostawcy znajduje się w `streaming.providers.<providerId>`.
|
||||
- Jeśli `streaming.provider` wskazuje niezarejestrowanego dostawcę lub w ogóle nie jest zarejestrowany
|
||||
żaden dostawca transkrypcji realtime, Voice Call zapisuje ostrzeżenie w logu i
|
||||
pomija strumieniowanie mediów zamiast wywoływać błąd całego pluginu.
|
||||
|
||||
Domyślne ustawienia transkrypcji streamingowej OpenAI:
|
||||
Domyślne ustawienia transkrypcji strumieniowej OpenAI:
|
||||
|
||||
- Klucz API: `streaming.providers.openai.apiKey` albo `OPENAI_API_KEY`
|
||||
- Klucz API: `streaming.providers.openai.apiKey` lub `OPENAI_API_KEY`
|
||||
- model: `gpt-4o-transcribe`
|
||||
- `silenceDurationMs`: `800`
|
||||
- `vadThreshold`: `0.5`
|
||||
|
||||
Domyślne ustawienia transkrypcji streamingowej xAI:
|
||||
Domyślne ustawienia transkrypcji strumieniowej xAI:
|
||||
|
||||
- Klucz API: `streaming.providers.xai.apiKey` albo `XAI_API_KEY`
|
||||
- Klucz API: `streaming.providers.xai.apiKey` lub `XAI_API_KEY`
|
||||
- endpoint: `wss://api.x.ai/v1/stt`
|
||||
- `encoding`: `mulaw`
|
||||
- `sampleRate`: `8000`
|
||||
@ -214,7 +309,7 @@ Przykład:
|
||||
}
|
||||
```
|
||||
|
||||
Zamiast tego użyj xAI:
|
||||
Użyj zamiast tego xAI:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -249,17 +344,17 @@ Starsze klucze są nadal automatycznie migrowane przez `openclaw doctor --fix`:
|
||||
- `streaming.silenceDurationMs` → `streaming.providers.openai.silenceDurationMs`
|
||||
- `streaming.vadThreshold` → `streaming.providers.openai.vadThreshold`
|
||||
|
||||
## Reaper nieaktualnych połączeń
|
||||
## Oczyszczanie nieaktualnych połączeń
|
||||
|
||||
Użyj `staleCallReaperSeconds`, aby kończyć połączenia, które nigdy nie otrzymują terminalowego webhooka
|
||||
(na przykład połączenia w trybie notify, które nigdy się nie kończą). Domyślna wartość to `0`
|
||||
Użyj `staleCallReaperSeconds`, aby kończyć połączenia, które nigdy nie otrzymują terminalnego webhooka
|
||||
(na przykład połączenia w trybie notify, które nigdy się nie kończą). Wartość domyślna to `0`
|
||||
(wyłączone).
|
||||
|
||||
Zalecane zakresy:
|
||||
|
||||
- **Produkcja:** `120`–`300` sekund dla przepływów w stylu notify.
|
||||
- Utrzymuj tę wartość **wyższą niż `maxDurationSeconds`**, aby zwykłe połączenia mogły
|
||||
się zakończyć. Dobry punkt startowy to `maxDurationSeconds + 30–60` sekund.
|
||||
się zakończyć. Dobrym punktem wyjścia jest `maxDurationSeconds + 30–60` sekund.
|
||||
|
||||
Przykład:
|
||||
|
||||
@ -278,29 +373,30 @@ Przykład:
|
||||
}
|
||||
```
|
||||
|
||||
## Bezpieczeństwo webhooków
|
||||
## Zabezpieczenia Webhook
|
||||
|
||||
Gdy przed Gateway stoi proxy albo tunel, Plugin rekonstruuje
|
||||
publiczny URL do weryfikacji podpisu. Te opcje kontrolują, którym nagłówkom forwarding ufać.
|
||||
Gdy przed Gateway znajduje się proxy lub tunel, plugin odtwarza
|
||||
publiczny adres URL do weryfikacji podpisu. Te opcje kontrolują, którym
|
||||
nagłówkom przekazywania można ufać.
|
||||
|
||||
`webhookSecurity.allowedHosts` tworzy listę dozwolonych hostów z nagłówków forwarding.
|
||||
`webhookSecurity.allowedHosts` tworzy listę dozwolonych hostów z nagłówków przekazywania.
|
||||
|
||||
`webhookSecurity.trustForwardingHeaders` ufa nagłówkom forwarding bez listy dozwolonych.
|
||||
`webhookSecurity.trustForwardingHeaders` ufa nagłówkom przekazywania bez listy dozwolonych hostów.
|
||||
|
||||
`webhookSecurity.trustedProxyIPs` ufa nagłówkom forwarding tylko wtedy, gdy zdalny IP żądania
|
||||
pasuje do listy.
|
||||
`webhookSecurity.trustedProxyIPs` ufa nagłówkom przekazywania tylko wtedy, gdy zdalny adres IP
|
||||
żądania pasuje do listy.
|
||||
|
||||
Ochrona przed replay webhooków jest włączona dla Twilio i Plivo. Ponownie odtworzone prawidłowe żądania webhook
|
||||
są potwierdzane, ale pomijane dla skutków ubocznych.
|
||||
Ochrona przed powtórzeniem webhooka jest włączona dla Twilio i Plivo. Powtórzone prawidłowe żądania webhooka
|
||||
są potwierdzane, ale pomijane pod kątem skutków ubocznych.
|
||||
|
||||
Tury rozmowy Twilio zawierają token per tura w callbackach `<Gather>`, więc
|
||||
nieaktualne/odtworzone callbacki mowy nie mogą spełnić nowszej oczekującej tury transkryptu.
|
||||
Tury rozmów Twilio zawierają token dla każdej tury w callbackach `<Gather>`, więc
|
||||
nieaktualne/powtórzone callbacki mowy nie mogą spełnić warunków nowszej oczekującej tury transkrypcji.
|
||||
|
||||
Nieuwierzytelnione żądania webhooków są odrzucane przed odczytem body, gdy
|
||||
brakuje wymaganych przez providera nagłówków podpisu.
|
||||
Nieuwierzytelnione żądania webhooka są odrzucane przed odczytem treści, gdy brakuje
|
||||
wymaganych przez dostawcę nagłówków podpisu.
|
||||
|
||||
Webhook voice-call używa współdzielonego profilu body pre-auth (64 KB / 5 sekund)
|
||||
plus limitu in-flight per IP przed weryfikacją podpisu.
|
||||
Webhook voice-call używa współdzielonego profilu treści przed uwierzytelnieniem (64 KB / 5 sekund)
|
||||
plus limitu aktywnych żądań na IP przed weryfikacją podpisu.
|
||||
|
||||
Przykład ze stabilnym publicznym hostem:
|
||||
|
||||
@ -324,8 +420,8 @@ Przykład ze stabilnym publicznym hostem:
|
||||
## TTS dla połączeń
|
||||
|
||||
Voice Call używa podstawowej konfiguracji `messages.tts` do
|
||||
streamowania mowy w połączeniach. Możesz ją nadpisać w konfiguracji Pluginu, używając
|
||||
**tego samego kształtu** — jest głęboko scalana z `messages.tts`.
|
||||
strumieniowania mowy w połączeniach. Możesz ją nadpisać w konfiguracji pluginu, używając
|
||||
**tego samego kształtu** — jest ona głęboko scalana z `messages.tts`.
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -343,15 +439,15 @@ streamowania mowy w połączeniach. Możesz ją nadpisać w konfiguracji Pluginu
|
||||
|
||||
Uwagi:
|
||||
|
||||
- Starsze klucze `tts.<provider>` wewnątrz konfiguracji Pluginu (`openai`, `elevenlabs`, `microsoft`, `edge`) są automatycznie migrowane przy ładowaniu do `tts.providers.<provider>`. W zapisanej konfiguracji preferuj kształt `providers`.
|
||||
- **Microsoft speech jest ignorowany dla połączeń głosowych** (audio telefoniczne wymaga PCM; bieżący transport Microsoft nie udostępnia wyjścia PCM dla telefonii).
|
||||
- Główny TTS jest używany, gdy włączony jest streaming mediów Twilio; w przeciwnym razie połączenia wracają do natywnych głosów providera.
|
||||
- Jeśli strumień mediów Twilio jest już aktywny, Voice Call nie wraca do TwiML `<Say>`. Jeśli telefoniczny TTS jest w tym stanie niedostępny, żądanie odtworzenia kończy się błędem zamiast mieszać dwie ścieżki odtwarzania.
|
||||
- Gdy telefoniczny TTS wraca do drugiego providera, Voice Call zapisuje ostrzeżenie z łańcuchem providerów (`from`, `to`, `attempts`) do debugowania.
|
||||
- Starsze klucze `tts.<provider>` wewnątrz konfiguracji pluginu (`openai`, `elevenlabs`, `microsoft`, `edge`) są automatycznie migrowane do `tts.providers.<provider>` podczas ładowania. W zatwierdzonej konfiguracji preferuj kształt `providers`.
|
||||
- **Mowa Microsoft jest ignorowana dla połączeń głosowych** (dźwięk telefoniczny wymaga PCM; obecny transport Microsoft nie udostępnia telefonicznego wyjścia PCM).
|
||||
- Podstawowy TTS jest używany, gdy włączone jest strumieniowanie mediów Twilio; w przeciwnym razie połączenia przechodzą na natywne głosy dostawcy.
|
||||
- Jeśli strumień mediów Twilio jest już aktywny, Voice Call nie przechodzi awaryjnie do TwiML `<Say>`. Jeśli telefoniczny TTS jest niedostępny w tym stanie, żądanie odtwarzania kończy się niepowodzeniem zamiast mieszać dwie ścieżki odtwarzania.
|
||||
- Gdy telefoniczny TTS przechodzi awaryjnie na drugiego dostawcę, Voice Call zapisuje ostrzeżenie z łańcuchem dostawców (`from`, `to`, `attempts`) na potrzeby debugowania.
|
||||
|
||||
### Więcej przykładów
|
||||
|
||||
Użyj tylko podstawowego TTS (bez nadpisania):
|
||||
Używaj tylko podstawowego TTS (bez nadpisania):
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -391,7 +487,7 @@ Nadpisz na ElevenLabs tylko dla połączeń (zachowaj podstawowe ustawienie gdzi
|
||||
}
|
||||
```
|
||||
|
||||
Nadpisz tylko model OpenAI dla połączeń (przykład deep-merge):
|
||||
Nadpisz tylko model OpenAI dla połączeń (przykład głębokiego scalania):
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -416,55 +512,56 @@ Nadpisz tylko model OpenAI dla połączeń (przykład deep-merge):
|
||||
|
||||
## Połączenia przychodzące
|
||||
|
||||
Domyślna polityka połączeń przychodzących to `disabled`. Aby włączyć połączenia przychodzące, ustaw:
|
||||
Domyślna zasada połączeń przychodzących to `disabled`. Aby włączyć połączenia przychodzące, ustaw:
|
||||
|
||||
```json5
|
||||
{
|
||||
inboundPolicy: "allowlist",
|
||||
allowFrom: ["+15550001234"],
|
||||
inboundGreeting: "Hello! How can I help?",
|
||||
inboundGreeting: "Cześć! Jak mogę pomóc?",
|
||||
}
|
||||
```
|
||||
|
||||
`inboundPolicy: "allowlist"` to filtr caller ID o niskim poziomie pewności. Plugin
|
||||
normalizuje wartość `From` dostarczoną przez providera i porównuje ją z `allowFrom`.
|
||||
Weryfikacja webhooków uwierzytelnia dostarczenie przez providera i integralność ładunku, ale
|
||||
nie dowodzi własności numeru dzwoniącego PSTN/VoIP. Traktuj `allowFrom` jako filtrowanie caller ID, a nie silną tożsamość rozmówcy.
|
||||
`inboundPolicy: "allowlist"` to ekran caller ID o niskim poziomie zaufania. Plugin
|
||||
normalizuje wartość `From` dostarczoną przez dostawcę i porównuje ją z `allowFrom`.
|
||||
Weryfikacja webhooka uwierzytelnia dostarczenie przez dostawcę i integralność ładunku,
|
||||
ale nie potwierdza własności numeru dzwoniącego PSTN/VoIP. Traktuj `allowFrom` jako
|
||||
filtrowanie caller ID, a nie silną tożsamość dzwoniącego.
|
||||
|
||||
Automatyczne odpowiedzi używają systemu agenta. Dostrajasz je przez:
|
||||
Automatyczne odpowiedzi używają systemu agentów. Dostosuj je za pomocą:
|
||||
|
||||
- `responseModel`
|
||||
- `responseSystemPrompt`
|
||||
- `responseTimeoutMs`
|
||||
|
||||
### Kontrakt danych mówionych
|
||||
### Kontrakt wypowiedzi mówionej
|
||||
|
||||
Dla automatycznych odpowiedzi Voice Call dołącza do promptu systemowego ścisły kontrakt danych mówionych:
|
||||
W przypadku automatycznych odpowiedzi Voice Call dołącza ścisły kontrakt wypowiedzi mówionej do system prompt:
|
||||
|
||||
- `{"spoken":"..."}`
|
||||
|
||||
Voice Call następnie defensywnie wyciąga tekst mowy:
|
||||
Następnie Voice Call defensywnie wyodrębnia tekst mowy:
|
||||
|
||||
- Ignoruje ładunki oznaczone jako treść rozumowania/błędu.
|
||||
- Parsuje bezpośredni JSON, JSON w ogrodzeniu albo inline’owe klucze `"spoken"`.
|
||||
- Wraca do zwykłego tekstu i usuwa prawdopodobne wiodące akapity planowania/meta.
|
||||
- Parsuje bezpośredni JSON, JSON w blokach kodu lub wbudowane klucze `"spoken"`.
|
||||
- Przechodzi awaryjnie do zwykłego tekstu i usuwa prawdopodobne początkowe akapity planowania/meta.
|
||||
|
||||
Dzięki temu odtwarzanie mowy pozostaje skupione na tekście skierowanym do rozmówcy i unika przedostawania się tekstu planowania do audio.
|
||||
Dzięki temu odtwarzana mowa pozostaje skupiona na tekście dla dzwoniącego i unika przeciekania tekstu planowania do dźwięku.
|
||||
|
||||
### Zachowanie przy starcie rozmowy
|
||||
### Zachowanie przy uruchamianiu rozmowy
|
||||
|
||||
Dla połączeń wychodzących w trybie `conversation` obsługa pierwszej wiadomości jest powiązana ze stanem odtwarzania na żywo:
|
||||
W przypadku wychodzących połączeń `conversation` obsługa pierwszej wiadomości jest powiązana ze stanem odtwarzania na żywo:
|
||||
|
||||
- Czyszczenie kolejki barge-in i automatyczna odpowiedź są tłumione tylko wtedy, gdy początkowe powitanie jest aktywnie odtwarzane.
|
||||
- Jeśli początkowe odtwarzanie się nie powiedzie, połączenie wraca do `listening`, a początkowa wiadomość pozostaje w kolejce do ponownej próby.
|
||||
- Początkowe odtwarzanie dla streamingu Twilio startuje przy połączeniu strumienia bez dodatkowego opóźnienia.
|
||||
- Czyszczenie kolejki barging-in i automatyczna odpowiedź są wstrzymywane tylko wtedy, gdy początkowe powitanie jest aktywnie odtwarzane.
|
||||
- Jeśli początkowe odtwarzanie zakończy się niepowodzeniem, połączenie wraca do stanu `listening`, a początkowa wiadomość pozostaje w kolejce do ponownej próby.
|
||||
- Początkowe odtwarzanie dla streamingu Twilio uruchamia się po połączeniu strumienia bez dodatkowego opóźnienia.
|
||||
|
||||
### Grace dla rozłączenia strumienia Twilio
|
||||
### Grace przy rozłączeniu strumienia Twilio
|
||||
|
||||
Gdy strumień mediów Twilio się rozłącza, Voice Call czeka `2000ms`, zanim automatycznie zakończy połączenie:
|
||||
Gdy strumień mediów Twilio zostaje rozłączony, Voice Call czeka `2000ms`, zanim automatycznie zakończy połączenie:
|
||||
|
||||
- Jeśli strumień połączy się ponownie w tym oknie, automatyczne zakończenie zostaje anulowane.
|
||||
- Jeśli po okresie grace żaden strumień nie zostanie ponownie zarejestrowany, połączenie jest kończone, aby zapobiec utknięciu aktywnych połączeń.
|
||||
- Jeśli strumień połączy się ponownie w tym oknie, automatyczne zakończenie zostanie anulowane.
|
||||
- Jeśli po upływie okresu grace żaden strumień nie zostanie ponownie zarejestrowany, połączenie zostanie zakończone, aby zapobiec zawieszonym aktywnym połączeniom.
|
||||
|
||||
## CLI
|
||||
|
||||
@ -477,14 +574,14 @@ openclaw voicecall dtmf --call-id <id> --digits "ww123456#"
|
||||
openclaw voicecall end --call-id <id>
|
||||
openclaw voicecall status --call-id <id>
|
||||
openclaw voicecall tail
|
||||
openclaw voicecall latency # podsumowanie opóźnienia tur z logów
|
||||
openclaw voicecall latency # podsumowanie opóźnień tur z logów
|
||||
openclaw voicecall expose --mode funnel
|
||||
```
|
||||
|
||||
`latency` odczytuje `calls.jsonl` z domyślnej ścieżki storage voice-call. Użyj
|
||||
`latency` odczytuje `calls.jsonl` z domyślnej ścieżki przechowywania voice-call. Użyj
|
||||
`--file <path>`, aby wskazać inny log, oraz `--last <n>`, aby ograniczyć analizę
|
||||
do ostatnich N rekordów (domyślnie 200). Dane wyjściowe obejmują p50/p90/p99 dla
|
||||
opóźnienia tury i czasów listen-wait.
|
||||
opóźnienia tur i czasów oczekiwania nasłuchu.
|
||||
|
||||
## Narzędzie agenta
|
||||
|
||||
@ -499,7 +596,7 @@ Akcje:
|
||||
- `end_call` (callId)
|
||||
- `get_status` (callId)
|
||||
|
||||
To repozytorium dostarcza pasujący dokument skill pod `skills/voice-call/SKILL.md`.
|
||||
To repozytorium zawiera pasujący dokument Skills w `skills/voice-call/SKILL.md`.
|
||||
|
||||
## Gateway RPC
|
||||
|
||||
@ -513,5 +610,5 @@ To repozytorium dostarcza pasujący dokument skill pod `skills/voice-call/SKILL.
|
||||
## Powiązane
|
||||
|
||||
- [Text-to-speech](/pl/tools/tts)
|
||||
- [Talk mode](/pl/nodes/talk)
|
||||
- [Voice wake](/pl/nodes/voicewake)
|
||||
- [Tryb rozmowy](/pl/nodes/talk)
|
||||
- [Wybudzanie głosowe](/pl/nodes/voicewake)
|
||||
|
||||
@ -1,87 +1,90 @@
|
||||
---
|
||||
read_when:
|
||||
- Szukasz przeglądu możliwości multimedialnych
|
||||
- Decydowanie, którego dostawcę multimediów skonfigurować
|
||||
- Zrozumienie, jak działa asynchroniczne generowanie multimediów
|
||||
summary: Ujednolicona strona docelowa dla możliwości generowania, rozumienia i mowy dla multimediów
|
||||
- Szukasz przeglądu możliwości multimedialnych?
|
||||
- Wybierasz dostawcę multimediów do skonfigurowania
|
||||
- Zrozumienie działania asynchronicznego generowania multimediów
|
||||
summary: Ujednolicona strona docelowa dla możliwości generowania multimediów, rozumienia ich i obsługi mowy
|
||||
title: Przegląd multimediów
|
||||
x-i18n:
|
||||
generated_at: "2026-04-24T09:37:29Z"
|
||||
generated_at: "2026-04-24T09:53:29Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 469fb173ac3853011b8cd4f89f3ab97dd7d14e12e4e1d7d87e84de05d025a593
|
||||
source_hash: 39848c6104ebd4feeb37b233b70f3312fa076b535c3b3780336729eb9fdfa4e6
|
||||
source_path: tools/media-overview.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# Generowanie i rozumienie multimediów
|
||||
|
||||
OpenClaw generuje obrazy, filmy i muzykę, rozumie multimedia przychodzące (obrazy, audio, wideo) oraz odczytuje odpowiedzi na głos za pomocą text-to-speech. Wszystkie możliwości multimedialne są sterowane narzędziami: agent decyduje, kiedy ich użyć na podstawie rozmowy, a każde narzędzie pojawia się tylko wtedy, gdy skonfigurowano co najmniej jednego dostawcę zaplecza.
|
||||
OpenClaw generuje obrazy, filmy i muzykę, rozumie przychodzące multimedia (obrazy, dźwięk, wideo) oraz odtwarza odpowiedzi na głos za pomocą syntezy mowy. Wszystkie możliwości multimedialne są sterowane narzędziami: agent decyduje, kiedy ich użyć, na podstawie rozmowy, a każde narzędzie pojawia się tylko wtedy, gdy skonfigurowano co najmniej jednego obsługującego je dostawcę.
|
||||
|
||||
## Możliwości w skrócie
|
||||
|
||||
| Możliwość | Narzędzie | Dostawcy | Co robi |
|
||||
| --------------------- | ---------------- | -------------------------------------------------------------------------------------------- | --------------------------------------------------------- |
|
||||
| Generowanie obrazów | `image_generate` | ComfyUI, fal, Google, MiniMax, OpenAI, Vydra, xAI | Tworzy lub edytuje obrazy na podstawie promptów tekstowych lub referencji |
|
||||
| Możliwość | Narzędzie | Dostawcy | Co robi |
|
||||
| --------------------- | ---------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------- |
|
||||
| Generowanie obrazów | `image_generate` | ComfyUI, fal, Google, MiniMax, OpenAI, Vydra, xAI | Tworzy lub edytuje obrazy na podstawie promptów tekstowych lub materiałów referencyjnych |
|
||||
| Generowanie wideo | `video_generate` | Alibaba, BytePlus, ComfyUI, fal, Google, MiniMax, OpenAI, Qwen, Runway, Together, Vydra, xAI | Tworzy filmy na podstawie tekstu, obrazów lub istniejących filmów |
|
||||
| Generowanie muzyki | `music_generate` | ComfyUI, Google, MiniMax | Tworzy muzykę lub ścieżki audio na podstawie promptów tekstowych |
|
||||
| Text-to-speech (TTS) | `tts` | ElevenLabs, Microsoft, MiniMax, OpenAI, xAI | Zamienia odpowiedzi wychodzące na mowę |
|
||||
| Rozumienie multimediów| (automatyczne) | Dowolny dostawca modeli z obsługą vision/audio oraz fallbacki CLI | Podsumowuje obrazy, audio i wideo przychodzące |
|
||||
| Synteza mowy (TTS) | `tts` | ElevenLabs, Google, Microsoft, MiniMax, OpenAI, xAI | Zamienia wychodzące odpowiedzi na mowę |
|
||||
| Rozumienie multimediów | (automatycznie) | Dowolny dostawca modelu obsługujący wizję lub dźwięk, plus rozwiązania zapasowe CLI | Podsumowuje przychodzące obrazy, dźwięk i wideo |
|
||||
|
||||
## Macierz możliwości dostawców
|
||||
|
||||
Ta tabela pokazuje, którzy dostawcy obsługują które możliwości multimedialne na całej platformie.
|
||||
Ta tabela pokazuje, którzy dostawcy obsługują poszczególne możliwości multimedialne na całej platformie.
|
||||
|
||||
| Dostawca | Obrazy | Wideo | Muzyka | TTS | STT / Transkrypcja | Rozumienie multimediów |
|
||||
| --------- | ------ | ----- | ------ | --- | ------------------ | ---------------------- |
|
||||
| Alibaba | | Tak | | | | |
|
||||
| BytePlus | | Tak | | | | |
|
||||
| ComfyUI | Tak | Tak | Tak | | | |
|
||||
| Deepgram | | | | | Tak | |
|
||||
| ElevenLabs| | | | Tak | Tak | |
|
||||
| fal | Tak | Tak | | | | |
|
||||
| Google | Tak | Tak | Tak | | | Tak |
|
||||
| Microsoft | | | | Tak | | |
|
||||
| MiniMax | Tak | Tak | Tak | Tak | | |
|
||||
| Mistral | | | | | Tak | |
|
||||
| OpenAI | Tak | Tak | | Tak | Tak | Tak |
|
||||
| Qwen | | Tak | | | | |
|
||||
| Runway | | Tak | | | | |
|
||||
| Together | | Tak | | | | |
|
||||
| Vydra | Tak | Tak | | | | |
|
||||
| xAI | Tak | Tak | | Tak | Tak | Tak |
|
||||
| Dostawca | Obrazy | Wideo | Muzyka | TTS | STT / Transkrypcja | Głos w czasie rzeczywistym | Rozumienie multimediów |
|
||||
| ---------- | ------ | ----- | ------ | --- | ------------------ | -------------------------- | ---------------------- |
|
||||
| Alibaba | | Tak | | | | | |
|
||||
| BytePlus | | Tak | | | | | |
|
||||
| ComfyUI | Tak | Tak | Tak | | | | |
|
||||
| Deepgram | | | | | Tak | | |
|
||||
| ElevenLabs | | | | Tak | Tak | | |
|
||||
| fal | Tak | Tak | | | | | |
|
||||
| Google | Tak | Tak | Tak | Tak | | Tak | Tak |
|
||||
| Microsoft | | | | Tak | | | |
|
||||
| MiniMax | Tak | Tak | Tak | Tak | | | |
|
||||
| Mistral | | | | | Tak | | |
|
||||
| OpenAI | Tak | Tak | | Tak | Tak | Tak | Tak |
|
||||
| Qwen | | Tak | | | | | |
|
||||
| Runway | | Tak | | | | | |
|
||||
| Together | | Tak | | | | | |
|
||||
| Vydra | Tak | Tak | | | | | |
|
||||
| xAI | Tak | Tak | | Tak | Tak | | Tak |
|
||||
|
||||
<Note>
|
||||
Rozumienie multimediów wykorzystuje dowolny model z obsługą vision lub audio zarejestrowany w konfiguracji dostawców. Powyższa tabela wyróżnia dostawców z dedykowaną obsługą rozumienia multimediów; większość dostawców LLM z modelami multimodalnymi (Anthropic, Google, OpenAI itd.) również potrafi rozumieć multimedia przychodzące, gdy są skonfigurowani jako aktywny model odpowiedzi.
|
||||
Rozumienie multimediów wykorzystuje dowolny model obsługujący wizję lub dźwięk zarejestrowany w konfiguracji dostawcy. Powyższa tabela wyróżnia dostawców z dedykowaną obsługą rozumienia multimediów; większość dostawców LLM z modelami multimodalnymi (Anthropic, Google, OpenAI itd.) może także rozumieć przychodzące multimedia, gdy są skonfigurowani jako aktywny model odpowiedzi.
|
||||
</Note>
|
||||
|
||||
## Jak działa generowanie asynchroniczne
|
||||
|
||||
Generowanie wideo i muzyki działa jako zadania w tle, ponieważ przetwarzanie po stronie dostawców zwykle trwa od 30 sekund do kilku minut. Gdy agent wywołuje `video_generate` lub `music_generate`, OpenClaw wysyła żądanie do dostawcy, natychmiast zwraca identyfikator zadania i śledzi zadanie w rejestrze zadań. Agent nadal odpowiada na inne wiadomości podczas działania zadania. Gdy dostawca zakończy pracę, OpenClaw wybudza agenta, aby mógł opublikować gotowe multimedia z powrotem w oryginalnym kanale. Generowanie obrazów i TTS są synchroniczne i kończą się inline wraz z odpowiedzią.
|
||||
Generowanie wideo i muzyki działa jako zadania w tle, ponieważ przetwarzanie po stronie dostawcy zwykle trwa od 30 sekund do kilku minut. Gdy agent wywołuje `video_generate` lub `music_generate`, OpenClaw przesyła żądanie do dostawcy, natychmiast zwraca identyfikator zadania i śledzi zadanie w rejestrze zadań. Agent nadal odpowiada na inne wiadomości, podczas gdy zadanie jest wykonywane. Gdy dostawca zakończy przetwarzanie, OpenClaw wybudza agenta, aby mógł opublikować gotowe multimedia z powrotem w oryginalnym kanale. Generowanie obrazów i TTS są synchroniczne i kończą się bezpośrednio w ramach odpowiedzi.
|
||||
|
||||
Deepgram, ElevenLabs, Mistral, OpenAI i xAI mogą transkrybować przychodzące
|
||||
audio przez ścieżkę wsadową `tools.media.audio`, jeśli są skonfigurowane. Deepgram,
|
||||
ElevenLabs, Mistral, OpenAI i xAI rejestrują też dostawców strumieniowego STT dla Voice Call,
|
||||
Deepgram, ElevenLabs, Mistral, OpenAI i xAI mogą transkrybować przychodzący
|
||||
dźwięk przez ścieżkę wsadową `tools.media.audio`, jeśli są skonfigurowane. Deepgram,
|
||||
ElevenLabs, Mistral, OpenAI i xAI rejestrują także dostawców STT strumieniowego dla Połączeń Głosowych,
|
||||
dzięki czemu dźwięk z rozmów telefonicznych na żywo może być przekazywany do wybranego dostawcy
|
||||
bez czekania na ukończenie nagrania.
|
||||
|
||||
OpenAI mapuje się na powierzchnie OpenClaw dla obrazów, wideo, wsadowego TTS, wsadowego STT, strumieniowego STT dla Voice Call, głosu realtime i osadzania pamięci. xAI obecnie
|
||||
mapuje się na powierzchnie OpenClaw dla obrazów, wideo, wyszukiwania, wykonywania kodu, wsadowego TTS, wsadowego STT
|
||||
oraz strumieniowego STT dla Voice Call. Głos xAI Realtime jest możliwością upstream,
|
||||
ale nie jest rejestrowany w OpenClaw, dopóki współdzielony kontrakt
|
||||
głosu realtime nie będzie mógł go reprezentować.
|
||||
Google mapuje się na powierzchnie obrazu, wideo, muzyki, wsadowego TTS, backendowego głosu w czasie rzeczywistym
|
||||
i rozumienia multimediów w OpenClaw. OpenAI mapuje się na powierzchnie obrazu,
|
||||
wideo, wsadowego TTS, wsadowego STT, strumieniowego STT dla Połączeń Głosowych, backendowego głosu w czasie rzeczywistym
|
||||
oraz osadzania pamięci w OpenClaw. xAI obecnie mapuje się na powierzchnie obrazu, wideo,
|
||||
wyszukiwania, wykonywania kodu, wsadowego TTS, wsadowego STT oraz strumieniowego STT dla Połączeń Głosowych
|
||||
w OpenClaw. Głos xAI Realtime jest funkcją dostępną upstreamowo, ale nie jest
|
||||
rejestrowany w OpenClaw, dopóki współdzielony kontrakt głosu w czasie rzeczywistym nie będzie mógł go
|
||||
reprezentować.
|
||||
|
||||
## Szybkie linki
|
||||
|
||||
- [Generowanie obrazów](/pl/tools/image-generation) -- generowanie i edytowanie obrazów
|
||||
- [Generowanie wideo](/pl/tools/video-generation) -- tekst na wideo, obraz na wideo i wideo na wideo
|
||||
- [Generowanie muzyki](/pl/tools/music-generation) -- tworzenie muzyki i ścieżek audio
|
||||
- [Text-to-Speech](/pl/tools/tts) -- zamienianie odpowiedzi na mowę
|
||||
- [Rozumienie multimediów](/pl/nodes/media-understanding) -- rozumienie przychodzących obrazów, audio i wideo
|
||||
- [Synteza mowy](/pl/tools/tts) -- zamienianie odpowiedzi na dźwięk mowy
|
||||
- [Rozumienie multimediów](/pl/nodes/media-understanding) -- rozumienie przychodzących obrazów, dźwięku i wideo
|
||||
|
||||
## Powiązane
|
||||
|
||||
- [Generowanie obrazów](/pl/tools/image-generation)
|
||||
- [Generowanie wideo](/pl/tools/video-generation)
|
||||
- [Generowanie muzyki](/pl/tools/music-generation)
|
||||
- [Text-to-speech](/pl/tools/tts)
|
||||
- [Synteza mowy](/pl/tools/tts)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user