Voximplant
Diffusez les appels Voximplant vers ElevenAgents depuis un scénario VoxEngine via Media Streams.
L’intégration Voximplant est disponible de manière limitée et est activée pour chaque Workspace. Contactez votre représentant ElevenLabs avant d’acheminer le trafic client.
Présentation
L’intégration Voximplant connecte directement un appel dans un scénario VoxEngine à un agent ElevenAgents via un WebSocket, à l’aide de Voximplant Media Streams. Voximplant gère la téléphonie : il compose ou répond à l’appel et décide de la suite. ElevenAgents gère la conversation. Aucun trunk SIP ni middleware n’est requis.
Les appels entrants et sortants fonctionnent de la même manière : une fois l’appel connecté, le scénario ouvre un WebSocket par appel vers ElevenLabs. Lorsque la conversation se termine, ElevenLabs envoie au scénario un unique événement de décision indiquant s’il doit transférer l’appelant vers un intervenant humain, raccrocher ou considérer l’appel comme expiré.
Fonctionnement de l’intégration
- Votre scénario VoxEngine répond à un appel entrant ou en émet un sortant.
- Le scénario ouvre un WebSocket vers l’endpoint ElevenLabs de votre agent et s’authentifie avec une clé API ElevenLabs comme jeton bearer.
- Le scénario démarre le flux média avec
call.sendMediaTo()en transmettant les éventuelscustomParameters. ElevenLabs transforme chaque paramètre en variable dynamique et répond avec son proprestart. - Voximplant et ElevenLabs échangent de l’audio PCM linéaire 16 bits à 8 kHz dans des messages
media. - Lorsque la conversation se termine, ElevenLabs envoie le reste de la dernière phrase de l’agent, un
événement personnalisé
elevenlabs-decisionet un messagestop. Le scénario ferme ensuite le WebSocket et agit selon la décision.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
- Un compte Voximplant avec une application, un numéro de téléphone ou la possibilité d’émettre des appels, ainsi que l’autorisation de modifier des scénarios.
- Un Workspace ElevenLabs avec l’intégration Voximplant activée.
- Un agent ElevenLabs et une clé API dédiée.
Configurer ElevenLabs
Créer ou sélectionner un agent
Concevez l’agent dans ElevenAgents. Donnez-lui un premier message s’il doit parler dès que l’appel se connecte. Les formats audio sont définis par l’intégration, les formats configurés pour l’agent ne sont donc pas utilisés pour les appels Voximplant.
Activer Fin d’appel
Dans Agent → Tools → System tools, activez End call afin que l’agent puisse terminer la conversation. La raison donnée par l’agent lorsqu’il termine l’appel est envoyée à votre scénario avec la décision.
Ajouter une règle de transfert Voximplant (facultatif)
Pour permettre à l’agent de transférer l’appelant vers un intervenant humain, attribuez-lui l’outil système Transfer to number avec une
règle de transfert dont la configuration du fournisseur est voximplant. Cette règle n’a pas de destination : la
conversation se termine par une décision transfer-to-agent et votre scénario achemine l’appelant. Les règles de transfert
se configurent via l’API. Ajoutez l’outil avec une requête PATCH sur l’agent :
Envoyez l’objet built_in_tools complet de l’agent, y compris les outils dont il dispose déjà, tels que end_call.
L’option renvoyée par l’agent est le jeton fixe voximplant, une règle Voximplant par outil
suffit donc. Les numéros de téléphone et URI SIP configurés pour d’autres fournisseurs ne sont pas proposés lors des appels Voximplant.
Les règles de transfert sont gérées via l’API. Configurez et mettez à jour via l’API l’outil Transfer to number d’un agent qui les utilise, comme ci-dessus ; l’éditeur d’outils du Dashboard fonctionne avec la liste de transferts par numéro.
Créer une clé API dédiée
Créez une clé API dans le même Workspace que l’agent et limitez-la à ElevenAgents. Pour n’accepter que les
connexions provenant de Voximplant, restreignez les adresses IP autorisées de la clé aux serveurs média de Voximplant,
que Voximplant répertorie à l’adresse
https://api.voximplant.com/getMediaResources?with_mediaservers.
Noter l’URL WebSocket
Le scénario se connecte à une URL contenant l’identifiant de votre agent :
Pour épingler une branche de l’agent, ajoutez ?branch_id=<branch_id>.
Si votre compte ElevenLabs se trouve dans un environnement de résidence isolé, remplacez <region> par le
code de votre région. Consultez la page sur la résidence des données pour connaître les
régions disponibles.
Configurer Voximplant
Créer une application
Dans le panneau de contrôle Voximplant, ouvrez Applications
et cliquez sur Create application. Donnez-lui un nom, par exemple elevenlabs-agent, puis cliquez sur
Create.

Enregistrer la clé API comme secret
Dans l’application, ouvrez Secrets et cliquez sur Add secret. Nommez-le ELEVENLABS_API_KEY, collez
la clé API créée pour le Workspace de l’agent dans Value, puis cliquez sur Add secret. Le
scénario la lit avec VoxEngine.getSecretValue(), la clé n’apparaît donc jamais dans le code du scénario.

Créer le scénario
Ouvrez Scenarios, cliquez sur Create scenario, nommez-le elevenlabs_agent, collez le code ci-dessous,
remplacez l’identifiant de l’agent dans ELEVENLABS_URL, puis cliquez sur Save. Il répond à un appel entrant, le transmet
à l’agent et agit selon la décision lorsque la conversation se termine. Pour un appel sortant, ouvrez
le WebSocket dans le gestionnaire CallEvents.Connected de l’appel que vous avez émis.

Acheminer les appels vers le scénario
Ouvrez Routing, cliquez sur Create rule, donnez-lui un nom et attribuez-lui le scénario
elevenlabs_agent. Le modèle par défaut .* envoie chaque appel vers l’application par le scénario ;
restreignez-le à un numéro de téléphone si l’application traite également d’autres appels. Pour acheminer un numéro de téléphone,
associez-le à l’application sous Numbers.

Effectuer un appel de test
Vous pouvez appeler l’application depuis le navigateur sans numéro de téléphone :
-
Ouvrez Users, cliquez sur Create user et créez un utilisateur avec un mot de passe.

-
Dans Routing, cliquez sur Test tools, puis sur Softphone. Connectez-vous avec cet utilisateur, autorisez l’accès au microphone, saisissez n’importe quelle destination et appelez. L’agent répond avec son premier message.
-
À la fin de l’appel, ouvrez Call history. Chaque appel répertorie une connexion WebSocket à côté de l’appel lui-même. Cliquez sur View log pour afficher la session.

Le journal affiche la décision envoyée par ElevenLabs, la fermeture du WebSocket et l’action effectuée ensuite par le scénario. Dans cet exemple, l’appelant a demandé à parler à une personne, la décision est donc
transfer-to-agentavec la raison fournie par l’agent.
Agissez sur l’événement elevenlabs-decision, et non sur MEDIA_ENDED. Voximplant déclenche MEDIA_ENDED après
environ une seconde sans audio provenant d’ElevenLabs, ce qui peut se produire au milieu d’une conversation.
Variables dynamiques
Chaque clé de customParameters devient une variable dynamique du même nom. Les valeurs qui ne sont pas des
chaînes sont converties en texte, par exemple true devient "true". customParameters peut être un
objet ou une chaîne encodée en JSON. Les clés commençant par system__ ou integration__ sont réservées et
sont ignorées.
Événements de décision
Lorsque la conversation se termine, ElevenLabs envoie exactement une décision avant son message stop :
Si le scénario envoie stop ou ferme d’abord le WebSocket, par exemple parce que l’appelant a raccroché,
ElevenLabs n’envoie aucune décision.
Audio
Voximplant et ElevenLabs échangent de l’audio PCM linéaire mono 16 bits à 8 kHz dans les deux sens. ElevenLabs cadence l’audio de l’agent presque en temps réel, de sorte que lorsque l’appelant interrompt l’agent, au maximum environ 0,4 seconde de la réponse interrompue est encore diffusée.
Erreurs d’authentification
ElevenLabs ferme le WebSocket avec le code 1008 et la raison bad auth token lorsque l’en-tête
Authorization est absent ou mal formé, que la clé API est invalide ou non autorisée depuis l’adresse IP de
connexion, que la clé appartient à un autre Workspace ou que l’utilisateur de la clé ne peut pas accéder à un
agent dont l’authentification est activée.
Limites et fonctionnalités non prises en charge
- Les outils client et l’outil système Play keypad touch tone ne sont pas pris en charge. Transfer to number fonctionne uniquement via une règle de transfert Voximplant ; le scénario décide où est dirigé l’appelant.
- Les substitutions de configuration, comme un premier message différent, ne peuvent pas être transmises depuis le scénario ; seules les variables dynamiques le peuvent.
- Les résultats de collecte de données ne sont pas envoyés au scénario. Utilisez le webhook post-appel pour les récupérer.