Kotlin SDK
ElevenAgents SDK: implementeer binnen enkele minuten aangepaste, interactieve spraakagents in Android-apps.
Raadpleeg het ElevenAgents-overzicht voor een uitleg over hoe ElevenAgents werkt.
Installatie
Voeg de ElevenLabs SDK toe aan je Android-project door de volgende dependency op te nemen in het build.gradle-bestand op appniveau:
Een voorbeeld-Android-app die deze SDK gebruikt, vind je hier
Vereisten
- Android API-niveau 21 (Android 5.0) of hoger
- Internettoestemming voor API-calls
- Microfoontoestemming voor spraakinvoer
- Netwerkbeveiligingsconfiguratie voor HTTPS-calls
Configuratie
Manifestconfiguratie
Voeg de benodigde toestemmingen toe aan je AndroidManifest.xml:
Runtime-toestemmingen
Voor Android 6.0 (API-niveau 23) en hoger moet je microfoontoestemming tijdens runtime aanvragen:
Gebruik
Initialiseer de ElevenLabs SDK in je Application-klasse of hoofdactiviteit:
Start een conversatiesessie met een van de volgende opties:
- Openbare agent: geef
agentIddoor - Private agent: geef
conversationTokendoor dat door je backend is verstrekt (stel je API-sleutel nooit bloot aan de client).
Houd er rekening mee dat ElevenAgents microfoontoegang vereist. Overweeg om in de UI van je app uit te leggen waarom toestemming nodig is en deze aan te vragen voordat de conversatie begint, vooral op Android 6.0+ waar runtime-toestemmingen vereist zijn.
Als een tool op de server is geconfigureerd met expects_response=false, retourneer dan null vanuit execute
om het terugsturen van een toolresultaat naar de agent over te slaan.
Openbare versus private agents
- Openbare agents (geen authenticatie): Initialiseer met
agentIdinConversationConfig. De SDK vraagt een conversatietoken aan bij ElevenLabs zonder dat een API-sleutel op het apparaat nodig is. - Private agents (authenticatie): Initialiseer met
conversationTokeninConversationConfig. Je server vraagt een conversatietoken aan bij ElevenLabs met je ElevenLabs API-sleutel.
Clienttools
Registreer clienttools zodat de agent lokale mogelijkheden op het apparaat kan aanroepen.
Wanneer de agent een client_tool_call uitvoert, voert de SDK de overeenkomende tool uit en antwoordt deze met een client_tool_result. Als de tool niet is geregistreerd, wordt onUnhandledClientToolCall aangeroepen en wordt een foutresultaat naar de agent teruggestuurd (als een antwoord wordt verwacht).
Overzicht van callbacks
- onConnect - Wordt aangeroepen wanneer de WebRTC-verbinding tot stand is gebracht. Retourneert de conversatie-ID.
- onMessage - Wordt aangeroepen wanneer een nieuw bericht wordt ontvangen. Dit kunnen voorlopige of definitieve transcripties van de stem van de gebruiker zijn, antwoorden die door een LLM zijn geproduceerd, of debugberichten. Geeft de bron (
"ai"of"user") en het onbewerkte JSON-bericht. - onModeChange - Wordt aangeroepen wanneer de conversatiemodus verandert. Dit is nuttig om aan te geven of de agent spreekt (
"speaking") of luistert ("listening"). - onStatusChange - Wordt aangeroepen wanneer de conversatiestatus verandert (
"connected","connecting"of"disconnected"). - onCanSendFeedbackChange - Wordt aangeroepen wanneer de mogelijkheid om feedback te versturen verandert. Schakelt feedbackknoppen in of uit.
- onUnhandledClientToolCall - Wordt aangeroepen wanneer de agent een clienttool aanvraagt die niet op het apparaat is geregistreerd.
- onVadScore - Wordt aangeroepen wanneer de score voor spraakactiviteitsdetectie verandert. Bereik van 0 tot 1, waarbij hogere waarden een grotere zekerheid van spraak aangeven.
- onAudioAlignment - Wordt aangeroepen wanneer audio-uitlijningsgegevens worden ontvangen en timinginformatie op tekenniveau voor spraak van de agent biedt.
Niet alle clientevents zijn standaard ingeschakeld voor een agent. Als je een callback hebt ingeschakeld maar geen events ontvangt, controleer dan of voor je ElevenLabs-agent het bijbehorende event is ingeschakeld. Dit kun je doen op het tabblad “Advanced” in de agentinstellingen in het ElevenLabs-dashboard.
Methoden
startSession
De methode startSession start de WebRTC-verbinding en gebruikt de microfoon om met de ElevenLabs Agents-agent te communiceren.
Openbare agents
Voor openbare agents (dat wil zeggen: agents waarvoor authenticatie niet is ingeschakeld) is alleen de agentId vereist. Je kunt de agent-ID ophalen via de ElevenLabs-UI.
Private agents
Voor private agents moet je een conversationToken doorgeven dat je via de ElevenLabs API hebt verkregen. Voor het genereren van dit token is een ElevenLabs API-sleutel vereist.
conversationToken is 10 minuten geldig.Geef het token vervolgens door aan de methode startSession. Houd er rekening mee dat voor private agents alleen de conversationToken vereist is.
Je kunt optioneel een gebruikers-ID doorgeven om de gebruiker in de conversatie te identificeren. Dit kan je eigen klant-ID zijn. Deze wordt opgenomen in de gegevens voor het starten van de conversatie die naar de server worden gestuurd.
endSession
Een methode om de conversatie handmatig te beëindigen. De methode verbreekt de verbinding en beëindigt de conversatie.
sendUserMessage
Stuur een tekstbericht naar de agent tijdens een actieve conversatie. Hiermee wordt een antwoord van de agent geactiveerd.
sendContextualUpdate
Stuurt contextuele informatie naar de agent die geen antwoord activeert.
sendFeedback
Geef feedback over de kwaliteit van de conversatie. Dit helpt de prestaties van de agent te verbeteren. Gebruik onCanSendFeedbackChange om je UI voor duim omhoog/omlaag in te schakelen wanneer feedback is toegestaan.
sendUserActivity
Meldt gebruikersactiviteit aan de agent om onderbrekingen te voorkomen. Handig wanneer de gebruiker de app actief gebruikt en de agent moet pauzeren met spreken, bijvoorbeeld wanneer de gebruiker in een chat typt.
De agent pauzeert ongeveer 2 seconden met spreken nadat dit signaal is ontvangen.
getId
Haal de conversatie-ID op.
Dempen/dempen opheffen
Controleer session.isMuted om het UI-label bij te werken tussen “Dempen” en “Dempen opheffen”.
Eigenschappen
status
Haal de huidige status van de conversatie op.
ProGuard / R8
Als je verkleint/obfusceert, zorg er dan voor dat Gson-modellen en LiveKit behouden blijven. Voorbeeldregels (pas ze waar nodig aan):
Problemen oplossen
- Zorg dat tijdens runtime microfoontoestemming is verleend
- Als opnieuw verbinden vastloopt, controleer dan of je app
session.endSession()aanroept en of je een nieuwe sessie-instantie start voordat je opnieuw verbinding maakt - Controleer bij emulators of audio-invoer-/uitvoerroutes werken; fysieke apparaten werken doorgaans betrouwbaarder
Voorbeeldimplementatie
Bekijk voor een voorbeeldimplementatie de voorbeeldapp in de ElevenLabs Android SDK-repository. De app toont:
- Verbinden/verbreken met één tik
- Indicator voor spreken/luisteren
- Feedbackknoppen met UI in-/uitschakelen
- Typindicator via
sendUserActivity() - Contextuele berichten en gebruikersberichten vanuit een invoerveld
- Knop voor microfoon dempen/dempen opheffen