SDK Kotlin
SDK ElevenAgents : déployez en quelques minutes des agents vocaux interactifs et personnalisés pour vos applications Android.
Consultez la présentation d’ElevenAgents pour comprendre le fonctionnement d’ElevenAgents.
Installation
Ajoutez le SDK ElevenLabs à votre projet Android en incluant la dépendance suivante dans le fichier build.gradle de votre application :
Vous trouverez une application Android d’exemple utilisant ce SDK ici
Prérequis
- Niveau d’API Android 21 (Android 5.0) ou version ultérieure
- Autorisation Internet pour les appels d’API
- Autorisation d’accès au microphone pour l’entrée vocale
- Configuration de sécurité réseau pour les appels HTTPS
Configuration
Configuration du manifeste
Ajoutez les autorisations nécessaires à votre AndroidManifest.xml :
Autorisations d’exécution
Pour Android 6.0 (niveau d’API 23) et versions ultérieures, vous devez demander l’autorisation d’accès au microphone lors de l’exécution :
Utilisation
Initialisez le SDK ElevenLabs dans votre classe Application ou votre activité principale :
Démarrez une session de conversation avec l’un des éléments suivants :
- Agent public : transmettez
agentId - Agent privé : transmettez le
conversationTokenfourni par votre backend (n’exposez jamais votre clé API au client).
Notez qu’ElevenAgents nécessite l’accès au microphone. Pensez à expliquer les autorisations et à les demander dans l’interface de votre application avant le début de la conversation, particulièrement sur Android 6.0+ où les autorisations d’exécution sont requises.
Si un outil est configuré avec expects_response=false sur le serveur, renvoyez null depuis execute
pour ne pas envoyer de résultat d’outil à l’agent.
Agents publics et privés
- Agents publics (sans authentification) : initialisez avec
agentIddansConversationConfig. Le SDK demande un jeton de conversation à ElevenLabs sans nécessiter de clé API sur l’appareil. - Agents privés (avec authentification) : initialisez avec
conversationTokendansConversationConfig. Votre serveur demande un jeton de conversation à ElevenLabs à l’aide de votre clé API ElevenLabs.
Outils client
Enregistrez des outils client pour permettre à l’agent d’appeler des capacités locales sur l’appareil.
Lorsque l’agent émet un client_tool_call, le SDK exécute l’outil correspondant et répond avec un client_tool_result. Si l’outil n’est pas enregistré, onUnhandledClientToolCall est appelé et un résultat d’échec est renvoyé à l’agent (si une réponse est attendue).
Présentation des callbacks
- onConnect : appelé lorsque la connexion WebRTC est établie. Renvoie l’ID de la conversation.
- onMessage : appelé lorsqu’un nouveau message est reçu. Il peut s’agir de transcriptions provisoires ou finales de la voix de l’utilisateur, de réponses produites par un LLM ou de messages de débogage. Fournit la source (
"ai"ou"user") et le message JSON brut. - onModeChange : appelé lorsque le mode de conversation change. Utile pour indiquer si l’agent parle (
"speaking") ou écoute ("listening"). - onStatusChange : appelé lorsque l’état de la conversation change (
"connected","connecting"ou"disconnected"). - onCanSendFeedbackChange : appelé lorsque la possibilité d’envoyer des commentaires change. Active ou désactive les boutons de commentaires.
- onUnhandledClientToolCall : appelé lorsque l’agent demande un outil client qui n’est pas enregistré sur l’appareil.
- onVadScore : appelé lorsque le score de détection de l’activité vocale change. Plage de 0 à 1, les valeurs élevées indiquant une plus grande confiance dans la détection de parole.
- onAudioAlignment : appelé lorsque des données d’alignement audio sont reçues, fournissant des informations de timing au niveau des caractères pour la parole de l’agent.
Tous les événements client ne sont pas activés par défaut pour un agent. Si vous avez activé un callback mais ne recevez aucun événement, assurez-vous que l’événement correspondant est activé pour votre agent ElevenLabs. Vous pouvez le faire dans l’onglet « Advanced » des paramètres de l’agent dans le Dashboard ElevenLabs.
Méthodes
startSession
La méthode startSession initialise la connexion WebRTC et commence à utiliser le microphone pour communiquer avec l’agent ElevenLabs Agents.
Agents publics
Pour les agents publics, c’est-à-dire les agents sans authentification activée, seul agentId est requis. Vous pouvez obtenir l’ID de l’agent dans l’interface ElevenLabs.
Agents privés
Pour les agents privés, vous devez transmettre un conversationToken obtenu via l’API ElevenLabs. La génération de ce jeton nécessite une clé API ElevenLabs.
conversationToken est valide pendant 10 minutes.Transmettez ensuite le jeton à la méthode startSession. Notez que seul le conversationToken est requis pour les agents privés.
Vous pouvez éventuellement transmettre un ID utilisateur afin d’identifier l’utilisateur dans la conversation. Il peut s’agir de votre propre identifiant client. Il sera inclus dans les données d’initialisation de la conversation envoyées au serveur.
endSession
Méthode permettant de terminer manuellement la conversation. Elle se déconnecte et met fin à la conversation.
sendUserMessage
Envoyez un message texte à l’agent pendant une conversation active. Cela déclenchera une réponse de l’agent.
sendContextualUpdate
Envoie à l’agent des informations contextuelles qui ne déclencheront pas de réponse.
sendFeedback
Fournissez un commentaire sur la qualité de la conversation. Cela contribue à améliorer les performances de l’agent. Utilisez onCanSendFeedbackChange pour activer l’interface de boutons pouce levé ou baissé lorsque les commentaires sont autorisés.
sendUserActivity
Informe l’agent de l’activité de l’utilisateur afin d’éviter les interruptions. Utile lorsque l’utilisateur utilise activement l’application et que l’agent doit interrompre sa parole, par exemple lorsque l’utilisateur écrit dans un chat.
L’agent interrompra sa parole pendant environ 2 secondes après réception de ce signal.
getId
Obtenez l’ID de la conversation.
Couper ou réactiver le microphone
Observez session.isMuted pour mettre à jour le libellé de l’interface entre « Couper le son » et « Réactiver le son ».
Propriétés
status
Obtenez l’état actuel de la conversation.
ProGuard / R8
Si vous réduisez ou obscurcissez le code, assurez-vous de conserver les modèles Gson et LiveKit. Exemple de règles, à adapter selon vos besoins :
Résolution des problèmes
- Assurez-vous que l’autorisation d’accès au microphone est accordée à l’exécution
- Si la reconnexion se bloque, vérifiez que votre application appelle
session.endSession()et que vous démarrez une nouvelle instance de session avant de vous reconnecter - Pour les émulateurs, vérifiez que les routes d’entrée et de sortie audio fonctionnent ; les appareils physiques ont généralement un comportement plus fiable
Exemple d’implémentation
Pour un exemple d’implémentation, consultez l’application d’exemple dans le dépôt du SDK Android ElevenLabs. L’application présente :
- Connexion et déconnexion en une pression
- Indicateur de parole et d’écoute
- Boutons de commentaires avec activation ou désactivation dans l’interface
- Indicateur de saisie via
sendUserActivity() - Messages contextuels et utilisateur depuis un champ de saisie
- Bouton pour couper ou réactiver le microphone