JavaScript SDK
SDK ElevenAgents: wdrażaj dostosowanych, interaktywnych agentów głosowych w kilka minut.
Instalacja
Zainstaluj pakiet w projekcie za pomocą menedżera pakietów.
Przechodzisz z wcześniejszej wersji? Uruchom npx skills add elevenlabs/packages, aby zainstalować
umiejętność elevenlabs:sdk-migration dla agenta AI do kodowania, która automatyzuje zmiany importów i
aktualizacje API.
Użycie
Ta biblioteka jest przeznaczona głównie do tworzenia projektów w czystym JavaScript lub jako baza dla bibliotek dostosowanych do konkretnych frameworków. Sprawdź, czy twój framework nie ma własnej biblioteki. Możesz jednak używać tej biblioteki w każdym projekcie opartym na JavaScript.
Inicjowanie rozmowy
Najpierw utwórz nową sesję rozmowy za pomocą Conversation.startSession:
Spowoduje to nawiązanie połączenia i rozpoczęcie używania mikrofonu do komunikacji z agentem ElevenLabs Agents. Zanim rozpoczniesz rozmowę, wyjaśnij w interfejsie aplikacji, dlaczego potrzebujesz dostępu do mikrofonu, i poproś o zgodę:
Konfiguracja sesji
Opcje przekazane do startSession określają sposób nawiązania sesji. Rozmowy można rozpoczynać z agentami publicznymi lub prywatnymi.
Agenci publiczni
Agenci, którzy nie wymagają uwierzytelniania, mogą rozpocząć rozmowę za pomocą identyfikatora agenta. Identyfikator agenta znajdziesz w interfejsie ElevenLabs.
W przypadku agentów publicznych możesz użyć identyfikatora bezpośrednio:
Typ połączenia jest automatycznie określany na podstawie trybu rozmowy. Rozmowy głosowe
domyślnie używają WebRTC, a tekstowe — WebSocket. W razie potrzeby możesz nadal wyraźnie określić
connectionType: 'webrtc' lub connectionType: 'websocket'.
Agenci prywatni
Jeśli rozmowa wymaga autoryzacji, musisz dodać na serwerze specjalny endpoint, który zażąda podpisanego URL-a (w przypadku połączenia WebSocket) lub tokenu rozmowy (w przypadku WebRTC) przez API ElevenLabs, a następnie przekaże go klientowi.
Przykład połączenia WebSocket:
Przykład dla WebRTC:
Gdy masz już token, przekazanie go do startSession rozpocznie rozmowę przez WebRTC.
Opcjonalne callbacki
Opcje przekazane do startSession można też wykorzystać do zarejestrowania opcjonalnych callbacków:
- onConnect — funkcja wywoływana po nawiązaniu połączenia WebSocket rozmowy.
- onDisconnect — funkcja wywoływana po zakończeniu połączenia WebSocket rozmowy.
- onMessage — funkcja wywoływana po otrzymaniu nowej wiadomości tekstowej. Mogą to być wstępne lub końcowe transkrypcje głosu użytkownika albo odpowiedzi wygenerowane przez LLM. Służy głównie do obsługi transkrypcji rozmowy.
- onError — funkcja wywoływana po wystąpieniu błędu.
- onStatusChange — funkcja wywoływana przy każdej zmianie stanu połączenia. Może to być
connected,connectinglubdisconnected(początkowy). - onModeChange — funkcja wywoływana przy zmianie stanu, np. gdy agent przełącza się z
speakingnalisteningalbo odwrotnie. - onCanSendFeedbackChange — funkcja wywoływana, gdy możliwość wysłania opinii staje się dostępna lub niedostępna.
- onAudioAlignment — funkcja wywoływana po otrzymaniu danych wyrównania audio, które zawierają informacje o czasie na poziomie znaków dla wypowiedzi agenta.
Nie wszystkie zdarzenia klienta są domyślnie włączone dla agenta. Jeśli włączyłeś callback, ale nie otrzymujesz zdarzeń, upewnij się, że odpowiednie zdarzenie jest włączone dla twojego agenta ElevenLabs. Możesz to zrobić na karcie „Advanced” w ustawieniach agenta w panelu ElevenLabs.
Wartość zwracana
startSession zwraca instancję rozmowy (VoiceConversation lub TextConversation, zależnie od trybu), której możesz użyć do sterowania sesją. Metoda zgłosi błąd, jeśli nie uda się nawiązać sesji. Może się tak stać, gdy użytkownik odmówi dostępu do mikrofonu lub połączenie się nie powiedzie.
endSession
Metoda ręcznego zakończenia rozmowy. Kończy rozmowę i rozłącza WebSocket. Następnie instancja rozmowy będzie bezużyteczna i można ją bezpiecznie odrzucić.
getId
Metoda zwracająca identyfikator rozmowy.
setVolume
Metoda ustawiająca głośność wyjściową rozmowy. Przyjmuje obiekt z polem głośności od 0 do 1.
getInputVolume / getOutputVolume
Metody zwracające bieżącą głośność wejścia/wyjścia w skali od 0 do 1, gdzie 0 to -100 dB, a 1 to -30 dB.
sendFeedback
Metoda do wysyłania binarnej opinii do agenta. Przyjmuje wartość logiczną, gdzie true oznacza pozytywną opinię, a false — negatywną.
Opinia jest zawsze powiązana z najnowszą odpowiedzią agenta i można ją wysłać tylko raz na odpowiedź.
Możesz nasłuchiwać onCanSendFeedbackChange, aby sprawdzić, czy w danym momencie można wysłać opinię.
sendContextualUpdate
Metoda do wysyłania aktualizacji kontekstowych do agenta. Możesz jej użyć, by poinformować agenta o działaniach użytkownika, które nie są bezpośrednio związane z rozmową, ale mogą wpłynąć na odpowiedzi agenta.
sendUserMessage
Wysyła wiadomość tekstową do agenta.
Możesz jej użyć, aby użytkownik wpisał wiadomość zamiast korzystać z mikrofonu. W przeciwieństwie do sendContextualUpdate zostanie ona potraktowana jako wiadomość użytkownika i skłoni agenta do wykonania swojej tury w rozmowie.
sendUserActivity
Powiadamia agenta o aktywności użytkownika.
Agent nie spróbuje mówić przez co najmniej 2 sekundy po wykryciu aktywności użytkownika.
Możesz tego użyć, aby agent nie przerywał użytkownikowi podczas pisania.
setMicMuted
Metoda wyciszająca lub włączająca mikrofon.
changeInputDevice
Pozwala zmienić urządzenie wejściowe audio podczas aktywnej rozmowy głosowej. Ta metoda jest dostępna tylko dla rozmów głosowych.
W trybie WebRTC format wejściowy i częstotliwość próbkowania są na stałe ustawione odpowiednio na pcm i 48000.
Zmiana tych wartości przy zmianie urządzenia wejściowego nie ma efektu.
Jeśli identyfikator urządzenia jest nieprawidłowy, zostanie użyte urządzenie domyślne.
changeOutputDevice
Pozwala zmienić urządzenie wyjściowe audio podczas aktywnej rozmowy głosowej. Ta metoda jest dostępna tylko dla rozmów głosowych.
W trybie WebRTC format wyjściowy i częstotliwość próbkowania są na stałe ustawione odpowiednio na pcm i 48000.
Zmiana tych wartości przy zmianie urządzenia wyjściowego nie ma efektu.
Przełączanie urządzeń działa tylko w rozmowach głosowych. Jeśli nie podasz konkretnego deviceId,
przeglądarka użyje domyślnego urządzenia. Dostępne urządzenia możesz wyświetlić za pomocą
API MediaDevices.enumerateDevices().
getInputByteFrequencyData / getOutputByteFrequencyData
Metody zwracające Uint8Array zawierające bieżące dane częstotliwości wejścia/wyjścia. Więcej informacji znajdziesz w AnalyserNode.getByteFrequencyData.
Te metody są dostępne tylko dla rozmów głosowych. W trybie WebRTC audio jest na stałe ustawione na
pcm_48000, więc wizualizacje korzystające ze zwróconych danych mogą pokazywać inne wzorce niż
połączenia WebSocket.