SDK JavaScript
SDK ElevenAgents : déployez des agents vocaux interactifs et personnalisés en quelques minutes.
Installation
Installez le package dans votre projet via votre gestionnaire de packages.
Vous effectuez une mise à niveau depuis une version antérieure ? Exécutez npx skills add elevenlabs/packages pour installer la compétence
elevenlabs:sdk-migration pour votre agent de codage IA, qui automatise les modifications d’importation et les
mises à jour de l’API.
Utilisation
Cette bibliothèque est principalement conçue pour le développement de projets JavaScript natifs, ou comme base pour des bibliothèques adaptées à des frameworks spécifiques. Nous vous recommandons de vérifier si votre framework dispose de sa propre bibliothèque. Toutefois, vous pouvez utiliser cette bibliothèque dans tout projet basé sur JavaScript.
Initialiser une conversation
Commencez par créer une session de conversation avec Conversation.startSession :
Cette opération établit une connexion et utilise le microphone pour communiquer avec l’agent ElevenLabs Agents. Pensez à expliquer l’accès au microphone et à l’autoriser dans l’interface de votre application avant de démarrer la conversation :
Configuration de la session
Les options transmises à startSession définissent la manière dont la session est établie. Les conversations peuvent être démarrées avec des agents publics ou privés.
Agents publics
Les agents ne nécessitant aucune authentification peuvent démarrer une conversation à l’aide de l’ID de l’agent. Vous pouvez obtenir cet ID dans l’interface ElevenLabs.
Pour les agents publics, vous pouvez utiliser l’ID directement :
Le type de connexion est déduit automatiquement selon le mode de conversation. Les conversations vocales
utilisent WebRTC et les conversations uniquement textuelles utilisent WebSocket par défaut. Vous pouvez néanmoins spécifier explicitement
connectionType: 'webrtc' ou connectionType: 'websocket' si nécessaire.
Agents privés
Si la conversation nécessite une autorisation, vous devez ajouter à votre serveur un endpoint dédié qui demandera soit une URL signée (en cas d’utilisation du type de connexion WebSockets), soit un jeton de conversation (en cas d’utilisation de WebRTC) via l’API ElevenLabs, puis le transmettra au client.
Voici un exemple pour une connexion WebSocket :
Voici un exemple pour WebRTC :
Une fois le jeton obtenu, le transmettre à startSession lancera la conversation via WebRTC.
Callbacks facultatifs
Les options transmises à startSession peuvent également servir à enregistrer des callbacks facultatifs :
- onConnect : gestionnaire appelé lorsque la connexion WebSocket de la conversation est établie.
- onDisconnect : gestionnaire appelé lorsque la connexion WebSocket de la conversation est terminée.
- onMessage : gestionnaire appelé lorsqu’un nouveau message texte est reçu. Il peut s’agir de transcriptions provisoires ou finales de la voix de l’utilisateur, ou de réponses produites par un LLM. Principalement utilisé pour gérer la transcription de la conversation.
- onError : gestionnaire appelé lorsqu’une erreur se produit.
- onStatusChange : gestionnaire appelé à chaque changement d’état de la connexion. Peut être
connected,connectingoudisconnected(initial). - onModeChange : gestionnaire appelé lorsqu’un état change, par exemple lorsque l’agent passe de
speakingàlistening, ou inversement. - onCanSendFeedbackChange : gestionnaire appelé lorsque l’envoi de commentaires devient disponible ou indisponible.
- onAudioAlignment : gestionnaire 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.
Valeur de retour
startSession renvoie une instance de conversation (VoiceConversation ou TextConversation selon le mode) qui permet de contrôler la session. La méthode génère une erreur si la session ne peut pas être établie. Cela peut se produire si l’utilisateur refuse l’accès au microphone ou si la connexion échoue.
endSession
Méthode permettant de terminer manuellement la conversation. Elle termine la conversation et se déconnecte du WebSocket. L’instance de conversation devient ensuite inutilisable et peut être supprimée en toute sécurité.
getId
Méthode qui renvoie l’ID de la conversation.
setVolume
Méthode permettant de définir le volume de sortie de la conversation. Accepte un objet dont le champ de volume est compris entre 0 et 1.
getInputVolume / getOutputVolume
Méthodes qui renvoient le volume actuel d’entrée ou de sortie sur une échelle de 0 à 1, où 0 correspond à -100 dB et 1 à -30 dB.
sendFeedback
Méthode permettant d’envoyer un commentaire binaire à l’agent. Elle accepte une valeur booléenne, où true représente un commentaire positif et false un commentaire négatif.
Les commentaires sont toujours associés à la réponse la plus récente de l’agent et ne peuvent être envoyés qu’une fois par réponse.
Vous pouvez écouter onCanSendFeedbackChange pour savoir si un commentaire peut être envoyé à un instant donné.
sendContextualUpdate
Méthode permettant d’envoyer des mises à jour contextuelles à l’agent. Elle peut servir à informer l’agent d’actions de l’utilisateur qui ne sont pas directement liées à la conversation, mais peuvent influencer ses réponses.
sendUserMessage
Envoie un message texte à l’agent.
Peut être utilisé pour permettre à l’utilisateur de saisir son message au lieu d’utiliser le microphone. Contrairement à sendContextualUpdate, ce message sera traité comme un message utilisateur et invitera l’agent à prendre son tour dans la conversation.
sendUserActivity
Informe l’agent de l’activité de l’utilisateur.
L’agent ne tentera pas de parler pendant au moins 2 secondes après la détection de l’activité de l’utilisateur.
Cette méthode peut empêcher l’agent d’interrompre l’utilisateur lorsqu’il écrit.
setMicMuted
Méthode permettant d’activer ou de désactiver le son du microphone.
changeInputDevice
Vous permet de changer de périphérique d’entrée audio pendant une conversation vocale active. Cette méthode est disponible uniquement pour les conversations vocales.
En mode WebRTC, le format d’entrée et la fréquence d’échantillonnage sont codés en dur sur pcm et 48000 respectivement.
Modifier ces valeurs lors du changement de périphérique d’entrée n’a aucun effet.
Si l’ID du périphérique n’est pas valide, le périphérique par défaut sera utilisé à la place.
changeOutputDevice
Vous permet de changer de périphérique de sortie audio pendant une conversation vocale active. Cette méthode est disponible uniquement pour les conversations vocales.
En mode WebRTC, le format de sortie et la fréquence d’échantillonnage sont codés en dur sur pcm et 48000 respectivement.
Modifier ces valeurs lors du changement de périphérique de sortie n’a aucun effet.
Le changement de périphérique fonctionne uniquement pour les conversations vocales. Si aucun deviceId spécifique n’est fourni,
le navigateur utilisera sa sélection de périphérique par défaut. Vous pouvez répertorier les périphériques disponibles à l’aide de l’API
MediaDevices.enumerateDevices().
getInputByteFrequencyData / getOutputByteFrequencyData
Méthodes qui renvoient des Uint8Array contenant les données de fréquence actuelles d’entrée ou de sortie. Consultez AnalyserNode.getByteFrequencyData pour plus d’informations.
Ces méthodes sont disponibles uniquement pour les conversations vocales. En mode WebRTC, l’audio est codé en dur pour
utiliser pcm_48000, ce qui signifie que toute visualisation utilisant les données renvoyées peut afficher des motifs différents
de ceux des connexions WebSocket.