Kotlin SDK
ElevenAgents SDK: wdrażaj w kilka minut dostosowanych, interaktywnych agentów głosowych w aplikacjach na Androida.
Zobacz opis ElevenAgents, aby dowiedzieć się, jak działa ElevenAgents.
Instalacja
Dodaj SDK ElevenLabs do projektu Androida, umieszczając poniższą zależność w pliku build.gradle na poziomie aplikacji:
Przykładową aplikację na Androida korzystającą z tego SDK znajdziesz tutaj
Wymagania
- Android API na poziomie 21 (Android 5.0) lub wyższym
- Uprawnienie do internetu dla wywołań API
- Uprawnienie do mikrofonu dla wejścia głosowego
- Konfiguracja zabezpieczeń sieciowych dla wywołań HTTPS
Konfiguracja
Konfiguracja manifestu
Dodaj wymagane uprawnienia do AndroidManifest.xml:
Uprawnienia w czasie działania
W Androidzie 6.0 (API na poziomie 23) i nowszym musisz poprosić o uprawnienie do mikrofonu w czasie działania:
Użycie
Zainicjuj SDK ElevenLabs w klasie Application lub głównej aktywności:
Rozpocznij sesję rozmowy, przekazując:
- Agenta publicznego: przekaż
agentId - Agenta prywatnego: przekaż
conversationTokenudostępniony przez backend (nigdy nie ujawniaj klucza API klientowi).
Pamiętaj, że ElevenAgents wymaga dostępu do mikrofonu. Rozważ wyjaśnienie tego i poproszenie o uprawnienia w interfejsie aplikacji przed rozpoczęciem rozmowy, szczególnie w Androidzie 6.0+, gdzie wymagane są uprawnienia w czasie działania.
Jeśli narzędzie ma na serwerze ustawione expects_response=false, zwróć null z execute,
aby nie wysyłać wyniku narzędzia z powrotem do agenta.
Agenci publiczni i prywatni
- Agenci publiczni (bez uwierzytelniania): Zainicjuj za pomocą
agentIdwConversationConfig. SDK prosi ElevenLabs o token rozmowy bez potrzeby używania klucza API na urządzeniu. - Agenci prywatni (z uwierzytelnianiem): Zainicjuj za pomocą
conversationTokenwConversationConfig. Twój serwer prosi ElevenLabs o token rozmowy, używając klucza API ElevenLabs.
Narzędzia klienta
Zarejestruj narzędzia klienta, aby agent mógł wywoływać lokalne funkcje urządzenia.
Gdy agent wywoła client_tool_call, SDK uruchomi pasujące narzędzie i odpowie za pomocą client_tool_result. Jeśli narzędzie nie jest zarejestrowane, wywoływane jest onUnhandledClientToolCall, a agent otrzymuje wynik błędu (jeśli oczekiwana jest odpowiedź).
Przegląd callbacków
- onConnect - Wywoływany po ustanowieniu połączenia WebRTC. Zwraca identyfikator rozmowy.
- onMessage - Wywoływany po odebraniu nowej wiadomości. Mogą to być wstępne lub końcowe transkrypcje głosu użytkownika, odpowiedzi wygenerowane przez LLM albo komunikaty debugowania. Udostępnia źródło (
"ai"lub"user") oraz surową wiadomość JSON. - onModeChange - Wywoływany przy zmianie trybu rozmowy. Przydaje się do wskazania, czy agent mówi (
"speaking"), czy słucha ("listening"). - onStatusChange - Wywoływany przy zmianie statusu rozmowy (
"connected","connecting"lub"disconnected"). - onCanSendFeedbackChange - Wywoływany przy zmianie możliwości wysłania opinii. Włącza/wyłącza przyciski opinii.
- onUnhandledClientToolCall - Wywoływany, gdy agent prosi o narzędzie klienta, które nie jest zarejestrowane na urządzeniu.
- onVadScore - Wywoływany przy zmianie wyniku wykrywania aktywności głosowej. Zakres od 0 do 1, gdzie wyższe wartości oznaczają większą pewność wykrycia mowy.
- onAudioAlignment - Wywoływany po otrzymaniu danych synchronizacji audio, które zawierają informacje o czasie na poziomie znaków dla mowy agenta.
Nie wszystkie zdarzenia klienta są domyślnie włączone dla agenta. Jeśli masz włączony callback, ale nie otrzymujesz zdarzeń, sprawdź, czy odpowiednie zdarzenie jest włączone dla agenta ElevenLabs. Możesz to zrobić na karcie „Advanced” w ustawieniach agenta w panelu ElevenLabs.
Metody
startSession
Metoda startSession inicjuje połączenie WebRTC i zaczyna korzystać z mikrofonu, aby komunikować się z agentem ElevenLabs Agents.
Agenci publiczni
W przypadku agentów publicznych (czyli agentów bez włączonego uwierzytelniania) wymagany jest tylko agentId. ID agenta znajdziesz w interfejsie ElevenLabs.
Agenci prywatni
W przypadku agentów prywatnych musisz przekazać conversationToken uzyskany z API ElevenLabs. Wygenerowanie tego tokenu wymaga klucza API ElevenLabs.
conversationToken jest ważny przez 10 minut.Następnie przekaż token do metody startSession. Pamiętaj, że w przypadku agentów prywatnych wymagany jest tylko conversationToken.
Opcjonalnie możesz przekazać ID użytkownika, aby zidentyfikować go w rozmowie. Może to być twój własny identyfikator klienta. Zostanie on dołączony do danych inicjujących rozmowę wysyłanych na serwer.
endSession
Metoda ręcznego zakończenia rozmowy. Rozłącza i kończy rozmowę.
sendUserMessage
Wyślij wiadomość tekstową do agenta podczas aktywnej rozmowy. Agent na nią odpowie.
sendContextualUpdate
Wysyła agentowi informacje kontekstowe, które nie wywołają odpowiedzi.
sendFeedback
Przekaż opinię o jakości rozmowy. Pomaga to poprawiać działanie agenta. Użyj onCanSendFeedbackChange, aby włączyć interfejs z kciukiem w górę/dół, gdy opinie są dozwolone.
sendUserActivity
Informuje agenta o aktywności użytkownika, by zapobiec przerwaniu. Przydaje się, gdy użytkownik aktywnie korzysta z aplikacji, a agent powinien przestać mówić, np. gdy użytkownik pisze na czacie.
Agent przestanie mówić na około 2 sekundy po otrzymaniu tego sygnału.
getId
Pobierz ID rozmowy.
Wyciszanie / włączanie mikrofonu
Obserwuj session.isMuted, aby zaktualizować etykietę interfejsu między „Wycisz” a „Włącz mikrofon”.
Właściwości
status
Pobierz aktualny status rozmowy.
ProGuard / R8
Jeśli zmniejszasz lub zaciemniasz kod, upewnij się, że modele Gson i LiveKit zostają zachowane. Przykładowe reguły (dostosuj w razie potrzeby):
Rozwiązywanie problemów
- Upewnij się, że uprawnienie do mikrofonu zostało przyznane w czasie działania
- Jeśli ponowne połączenie się zawiesza, sprawdź, czy aplikacja wywołuje
session.endSession()i czy przed ponownym połączeniem uruchamiasz nową instancję sesji - W emulatorach sprawdź, czy działają ścieżki wejścia/wyjścia audio; urządzenia fizyczne są zwykle bardziej niezawodne
Przykładowa implementacja
Przykładową implementację znajdziesz w przykładowej aplikacji w repozytorium ElevenLabs Android SDK. Aplikacja pokazuje:
- Łączenie/rozłączanie jednym stuknięciem
- Wskaźnik mówienia/słuchania
- Przyciski opinii z włączaniem/wyłączaniem w interfejsie
- Wskaźnik pisania przez
sendUserActivity() - Wiadomości kontekstowe i wiadomości użytkownika z pola wejściowego
- Przycisk wyciszania/włączania mikrofonu