Voximplant
Przesyłaj rozmowy Voximplant do ElevenAgents ze scenariusza VoxEngine przez Media Streams.
Integracja z Voximplant jest dostępna w ograniczonym zakresie i włączana osobno dla każdego obszaru roboczego. Przed przekierowaniem ruchu klientów skontaktuj się z opiekunem ElevenLabs.
Omówienie
Integracja z Voximplant łączy rozmowę w scenariuszu VoxEngine bezpośrednio z agentem w ElevenAgents przez WebSocket, używając Voximplant Media Streams. Voximplant obsługuje telefonię: wybiera lub odbiera połączenie i decyduje, co dzieje się potem. ElevenAgents prowadzi rozmowę. Nie potrzebujesz trunku SIP ani oprogramowania pośredniego.
Połączenia przychodzące i wychodzące działają tak samo: po połączeniu rozmowy scenariusz otwiera jedno połączenie WebSocket na rozmowę z ElevenLabs. Gdy rozmowa się kończy, ElevenLabs wysyła do scenariusza pojedyncze zdarzenie decyzji, które określa, czy przekazać dzwoniącego człowiekowi, rozłączyć połączenie czy uznać je za przekroczone czasowo.
Jak działa integracja
- Twój scenariusz VoxEngine odbiera połączenie przychodzące lub wykonuje wychodzące.
- Scenariusz otwiera WebSocket do punktu końcowego ElevenLabs dla twojego agenta i uwierzytelnia się kluczem API ElevenLabs jako tokenem bearer.
- Scenariusz uruchamia strumień mediów za pomocą
call.sendMediaTo(), przekazując dowolnecustomParameters. ElevenLabs zamienia każdy parametr w zmienną dynamiczną i odpowiada własnymstart. - Voximplant i ElevenLabs wymieniają 16-bitowy liniowy dźwięk PCM o częstotliwości 8 kHz w komunikatach
media. - Gdy rozmowa się kończy, ElevenLabs wysyła resztę ostatniej wypowiedzi agenta, jedno
niestandardowe zdarzenie
elevenlabs-decisioni komunikatstop. Scenariusz zamyka wtedy WebSocket i wykonuje działanie zgodne z decyzją.
Wymagania
Zanim zaczniesz, upewnij się, że masz:
- Konto Voximplant z aplikacją, numerem telefonu lub możliwością wykonywania połączeń wychodzących oraz uprawnieniami do edycji scenariuszy.
- Obszar roboczy ElevenLabs z włączoną integracją Voximplant.
- Agenta ElevenLabs i osobny klucz API.
Konfiguracja ElevenLabs
Utwórz lub wybierz agenta
Utwórz agenta w ElevenAgents. Ustaw mu pierwszą wiadomość, jeśli ma zacząć mówić od razu po połączeniu. Formaty audio są ustawiane przez integrację, więc skonfigurowane formaty agenta nie są używane w rozmowach Voximplant.
Włącz Zakończ połączenie
W Agent → Tools → System tools włącz End call, aby agent mógł zakończyć rozmowę. Powód podany przez agenta przy kończeniu połączenia jest wysyłany do scenariusza wraz z decyzją.
Dodaj regułę przekazania Voximplant (opcjonalnie)
Aby agent mógł przekazać dzwoniącego człowiekowi, dodaj mu narzędzie systemowe Transfer to number z
regułą przekazania, której konfiguracja dostawcy to voximplant. Reguła nie ma miejsca docelowego:
rozmowa kończy się decyzją transfer-to-agent, a dzwoniącego przekierowuje twój scenariusz. Reguły przekazania
konfiguruje się przez API. Dodaj narzędzie przez PATCH na agencie:
Wyślij pełny obiekt built_in_tools agenta, w tym narzędzia, które już ma, takie jak end_call.
Opcja, którą agent odsyła, to stały token voximplant, więc wystarczy jedna reguła Voximplant na narzędzie.
Numery telefonów i identyfikatory URI SIP skonfigurowane dla innych dostawców nie są dostępne w rozmowach Voximplant.
Reguły przekazania są ustawieniem zarządzanym przez API. Konfiguruj i aktualizuj narzędzie Transfer to number agenta, który z nich korzysta, przez API, jak wyżej; edytor narzędzi w panelu działa z listą przekazań dla poszczególnych numerów.
Utwórz osobny klucz API
Utwórz klucz API w tym samym obszarze roboczym co agent i ogranicz jego zakres do ElevenAgents. Aby akceptować
połączenia tylko z Voximplant, ogranicz dozwolone adresy IP klucza do serwerów mediów Voximplant,
które Voximplant podaje pod adresem
https://api.voximplant.com/getMediaResources?with_mediaservers.
Zanotuj adres URL WebSocket
Scenariusz łączy się z adresem URL zawierającym ID twojego agenta:
Aby przypiąć gałąź agenta, dodaj ?branch_id=<branch_id>.
Jeśli twoje konto ElevenLabs działa w izolowanym środowisku rezydencji, zastąp <region> swoim
kodem regionu. Dostępne regiony znajdziesz w rezydencji danych.
Konfiguracja Voximplant
Utwórz aplikację
W panelu Voximplant otwórz Applications
i kliknij Create application. Nadaj jej nazwę, na przykład elevenlabs-agent, a następnie kliknij
Create.

Zapisz klucz API jako sekret
W aplikacji otwórz Secrets i kliknij Add secret. Nazwij go ELEVENLABS_API_KEY, wklej
klucz API utworzony dla obszaru roboczego agenta w polu Value i kliknij Add secret.
Scenariusz odczytuje go przez VoxEngine.getSecretValue(), więc klucz nigdy nie pojawia się w kodzie scenariusza.

Utwórz scenariusz
Otwórz Scenarios, kliknij Create scenario, nazwij go elevenlabs_agent, wklej kod poniżej,
zastąp ID agenta w ELEVENLABS_URL i kliknij Save. Odbiera on połączenie przychodzące, przesyła je
strumieniowo do agenta i wykonuje działanie zgodne z decyzją po zakończeniu rozmowy. W przypadku połączenia wychodzącego otwórz
WebSocket w procedurze obsługi CallEvents.Connected wykonanego połączenia.

Przekieruj połączenia do scenariusza
Otwórz Routing, kliknij Create rule, nadaj jej nazwę i przypisz scenariusz elevenlabs_agent.
Domyślny wzorzec .* wysyła każde połączenie do aplikacji przez scenariusz;
zawęź go do numeru telefonu, jeśli aplikacja obsługuje także inne połączenia. Aby przekierować numer telefonu,
przypisz go do aplikacji w sekcji Numbers.

Wykonaj połączenie testowe
Możesz zadzwonić do aplikacji z przeglądarki bez numeru telefonu:
-
Otwórz Users, kliknij Create user i utwórz użytkownika z hasłem.

-
W Routing kliknij Test tools, a potem Softphone. Zaloguj się jako ten użytkownik, zezwól na dostęp do mikrofonu, wpisz dowolny cel i zadzwoń. Agent odbierze połączenie swoją pierwszą wiadomością.
-
Po zakończeniu połączenia otwórz Call history. Przy każdym połączeniu widnieje odcinek WebSocket obok samego połączenia. Kliknij View log, aby zobaczyć sesję.

Dziennik pokazuje decyzję wysłaną przez ElevenLabs, zamknięcie WebSocket i kolejne działanie scenariusza. W tym przykładzie dzwoniący poprosił o rozmowę z człowiekiem, więc decyzja to
transfer-to-agentz powodem podanym przez agenta.
Działaj na podstawie zdarzenia elevenlabs-decision, a nie MEDIA_ENDED. Voximplant wywołuje MEDIA_ENDED po
około sekundzie bez audio z ElevenLabs, co może zdarzyć się w trakcie rozmowy.
Zmienne dynamiczne
Każdy klucz w customParameters staje się zmienną dynamiczną o tej samej nazwie. Wartości, które nie są
ciągami znaków, są zamieniane na tekst, na przykład true staje się "true". customParameters może być
obiektem lub ciągiem zakodowanym w JSON. Klucze zaczynające się od system__ lub integration__ są zastrzeżone i
są pomijane.
Zdarzenia decyzji
Gdy rozmowa się kończy, ElevenLabs wysyła dokładnie jedną decyzję przed komunikatem stop:
Jeśli scenariusz najpierw wyśle stop lub zamknie WebSocket, na przykład ponieważ dzwoniący się rozłączył,
ElevenLabs nie wyśle decyzji.
Audio
Voximplant i ElevenLabs wymieniają w obu kierunkach 16-bitowy monofoniczny liniowy dźwięk PCM o częstotliwości 8 kHz. ElevenLabs nadaje dźwięk agenta niemal w czasie rzeczywistym, więc gdy dzwoniący przerwie agentowi, odtworzy się jeszcze najwyżej około 0,4 sekundy przerwanej odpowiedzi.
Błędy uwierzytelniania
ElevenLabs zamyka WebSocket kodem 1008 i powodem bad auth token, gdy
brakuje nagłówka Authorization lub jest nieprawidłowy, klucz API jest nieważny albo niedozwolony z adresu IP
nawiązującego połączenie, klucz należy do innego obszaru roboczego albo użytkownik klucza nie ma dostępu do
agenta z włączonym uwierzytelnianiem.
Ograniczenia i nieobsługiwane funkcje
- Narzędzia klienta i narzędzie systemowe Play keypad touch tone nie są obsługiwane. Transfer to number działa tylko przez regułę przekazania Voximplant; to scenariusz decyduje, dokąd trafia dzwoniący.
- Nadpisania konfiguracji, takie jak inna pierwsza wiadomość, nie mogą być przekazywane ze scenariusza; można przekazywać tylko zmienne dynamiczne.
- Wyniki zbierania danych nie są wysyłane do scenariusza. Użyj do tego webhooka po rozmowie.