Kotlin SDK
ElevenAgents SDK: driftsätt anpassade, interaktiva röstagentar för Android-appar på några minuter.
Se översikten över ElevenAgents för en förklaring av hur ElevenAgents fungerar.
Installation
Lägg till ElevenLabs SDK i ditt Android-projekt genom att inkludera följande beroende i appens build.gradle-fil:
En exempelapp för Android som använder detta SDK finns här
Krav
- Android API-nivå 21 (Android 5.0) eller högre
- Internetbehörighet för API-anrop
- Mikrofonbehörighet för röstinmatning
- Nätverkssäkerhetskonfiguration för HTTPS-anrop
Konfiguration
Manifestkonfiguration
Lägg till nödvändiga behörigheter i din AndroidManifest.xml:
Körningsbehörigheter
För Android 6.0 (API-nivå 23) och senare måste du begära mikrofonbehörighet vid körning:
Användning
Initiera ElevenLabs SDK i din Application-klass eller huvudaktivitet:
Starta en konversationssession med antingen:
- Offentlig agent: skicka
agentId - Privat agent: skicka
conversationTokensom har tillhandahållits från din backend (exponera aldrig din API-nyckel för klienten).
Observera att ElevenAgents kräver mikrofonåtkomst. Överväg att förklara och begära behörigheter i appens gränssnitt innan konversationen börjar, särskilt på Android 6.0+ där körningsbehörigheter krävs.
Om ett verktyg är konfigurerat med expects_response=false på servern ska du returnera null från execute
för att hoppa över att skicka ett verktygsresultat tillbaka till agenten.
Offentliga och privata agenter
- Offentliga agenter (ingen autentisering): Initiera med
agentIdiConversationConfig. SDK:t begär en konversationstoken från ElevenLabs utan att behöva en API-nyckel på enheten. - Privata agenter (autentisering): Initiera med
conversationTokeniConversationConfig. Din server begär en konversationstoken från ElevenLabs med din ElevenLabs API-nyckel.
Klientverktyg
Registrera klientverktyg för att låta agenten anropa lokala funktioner på enheten.
När agenten utfärdar ett client_tool_call kör SDK:t det matchande verktyget och svarar med ett client_tool_result. Om verktyget inte är registrerat anropas onUnhandledClientToolCall och ett felresultat skickas tillbaka till agenten (om ett svar förväntas).
Översikt över callbacks
- onConnect - Anropas när WebRTC-anslutningen har upprättats. Returnerar konversations-ID:t.
- onMessage - Anropas när ett nytt meddelande tas emot. Det kan vara preliminära eller slutliga transkriberingar av användarens röst, svar som producerats av LLM eller felsökningsmeddelanden. Anger källa (
"ai"eller"user") och rått JSON-meddelande. - onModeChange - Anropas när konversationsläget ändras. Detta är användbart för att visa om agenten talar (
"speaking") eller lyssnar ("listening"). - onStatusChange - Anropas när konversationsstatusen ändras (
"connected","connecting"eller"disconnected"). - onCanSendFeedbackChange - Anropas när möjligheten att skicka feedback ändras. Aktiverar eller inaktiverar feedbackknappar.
- onUnhandledClientToolCall - Anropas när agenten begär ett klientverktyg som inte är registrerat på enheten.
- onVadScore - Anropas när poängen för röstaktivitetsdetektering ändras. Omfång från 0 till 1 där högre värden indikerar högre säkerhet för tal.
- onAudioAlignment - Anropas när ljudjusteringsdata tas emot och ger tidsinformation på teckennivå för agentens tal.
Alla klienthändelser är inte aktiverade som standard för en agent. Om du har aktiverat en callback men inte ser att några händelser kommer fram ska du kontrollera att din ElevenLabs-agent har motsvarande händelse aktiverad. Du kan göra detta på fliken “Advanced” i agentinställningarna i ElevenLabs-instrumentpanelen.
Metoder
startSession
Metoden startSession initierar WebRTC-anslutningen och börjar använda mikrofonen för att kommunicera med ElevenLabs Agents-agenten.
Offentliga agenter
För offentliga agenter (det vill säga agenter som inte har autentisering aktiverad) krävs endast agentId. Agent-ID:t kan hämtas via ElevenLabs-gränssnittet.
Privata agenter
För privata agenter måste du skicka med en conversationToken som hämtats från ElevenLabs API. För att skapa denna token krävs en ElevenLabs API-nyckel.
conversationToken är giltig i 10 minuter.Skicka sedan tokenen till metoden startSession. Observera att endast conversationToken krävs för privata agenter.
Du kan valfritt skicka med ett användar-ID för att identifiera användaren i konversationen. Detta kan vara din egen kundidentifierare. Det inkluderas i konversationsstartdata som skickas till servern.
endSession
En metod för att avsluta konversationen manuellt. Metoden kopplar från och avslutar konversationen.
sendUserMessage
Skicka ett textmeddelande till agenten under en aktiv konversation. Detta utlöser ett svar från agenten.
sendContextualUpdate
Skickar kontextuell information till agenten som inte utlöser ett svar.
sendFeedback
Ge feedback om konversationens kvalitet. Detta hjälper till att förbättra agentens prestanda. Använd onCanSendFeedbackChange för att aktivera ditt gränssnitt för tumme upp eller ner när feedback är tillåten.
sendUserActivity
Meddelar agenten om användaraktivitet för att förhindra avbrott. Användbart när användaren aktivt använder appen och agenten bör pausa sitt tal, till exempel när användaren skriver i en chatt.
Agenten pausar talet i cirka 2 sekunder efter att ha tagit emot denna signal.
getId
Hämta konversations-ID:t.
Stäng av/slå på ljudet
Övervaka session.isMuted för att uppdatera gränssnittsetiketten mellan “Stäng av ljud” och “Slå på ljud”.
Egenskaper
status
Hämta konversationens aktuella status.
ProGuard / R8
Om du minskar storlek/förvanskar ska du se till att Gson-modeller och LiveKit behålls. Exempelregler (anpassa efter behov):
Felsökning
- Kontrollera att mikrofonbehörighet beviljas vid körning
- Om återanslutningen hänger sig ska du kontrollera att appen anropar
session.endSession()och att du startar en ny sessionsinstans innan du återansluter - För emulatorer ska du kontrollera att ljudets in- och utmatningsvägar fungerar; fysiska enheter tenderar att fungera mer tillförlitligt
Exempelimplementering
Se exempelappen i ElevenLabs Android SDK-repositoryt för en exempelimplementering. Appen visar:
- Anslut/koppla från med ett tryck
- Indikator för talar/lyssnar
- Feedbackknappar med aktivering/inaktivering i gränssnittet
- Skrivindikator via
sendUserActivity() - Kontextuella meddelanden och användarmeddelanden från ett inmatningsfält
- Knapp för att stänga av/slå på mikrofonen