Voximplant
Transmite llamadas de Voximplant a ElevenAgents desde un escenario de VoxEngine a través de Media Streams.
La integración con Voximplant tiene disponibilidad limitada y se habilita por espacio de trabajo. Contacta con tu representante de ElevenLabs antes de enrutar tráfico de clientes.
Resumen
La integración con Voximplant conecta una llamada en un escenario de VoxEngine directamente con un agente de ElevenAgents a través de un WebSocket, mediante Voximplant Media Streams. Voximplant se encarga de la telefonía: marca o responde la llamada y decide qué sucede después. ElevenAgents se encarga de la conversación. No se necesita ningún troncal SIP ni middleware.
Las llamadas entrantes y salientes funcionan del mismo modo: cuando se conecta la llamada, el escenario abre un WebSocket por llamada a ElevenLabs. Cuando termina la conversación, ElevenLabs envía al escenario un único evento de decisión que indica si debe transferir a quien llama a una persona, colgar o tratar la llamada como un tiempo de espera agotado.
Cómo funciona la integración
- Tu escenario de VoxEngine responde una llamada entrante o realiza una saliente.
- El escenario abre un WebSocket al endpoint de ElevenLabs de tu agente y se autentica con una clave de API de ElevenLabs como token bearer.
- El escenario inicia el flujo de medios con
call.sendMediaTo()y pasa loscustomParameters. ElevenLabs convierte cada parámetro en una variable dinámica y responde con su propiostart. - Voximplant y ElevenLabs intercambian audio PCM lineal de 16 bits a 8 kHz en mensajes
media. - Cuando termina la conversación, ElevenLabs envía el resto de la última frase del agente, un
evento personalizado
elevenlabs-decisiony un mensajestop. A continuación, el escenario cierra el WebSocket y actúa según la decisión.
Requisitos
Antes de empezar, asegúrate de tener:
- Una cuenta de Voximplant con una aplicación, un número de teléfono o llamadas salientes, y permisos para editar escenarios.
- Un espacio de trabajo de ElevenLabs con la integración de Voximplant habilitada.
- Un agente de ElevenLabs y una clave de API específica.
Configura ElevenLabs
Crea o selecciona un agente
Crea el agente en ElevenAgents. Dale un primer mensaje si debe hablar en cuanto se conecte la llamada. Los formatos de audio los establece la integración, por lo que los formatos configurados del agente no se usan para las llamadas de Voximplant.
Activa Finalizar llamada
En Agente → Herramientas → Herramientas del sistema, activa Finalizar llamada para que el agente pueda terminar la conversación. El motivo que indique el agente al finalizar la llamada se envía a tu escenario junto con la decisión.
Añade una regla de transferencia de Voximplant (opcional)
Para que el agente pueda transferir a quien llama a una persona, asígnale la herramienta del sistema Transferir a número con una
regla de transferencia cuya configuración de proveedor sea voximplant. La regla no tiene destino: la
conversación termina con una decisión transfer-to-agent y tu escenario enruta a quien llama. Las reglas de transferencia
se configuran mediante la API. Añade la herramienta mediante un PATCH en el agente:
Envía el objeto built_in_tools completo del agente, incluidas las herramientas que ya tenga, como end_call.
La opción que el agente devuelve es el token fijo voximplant, por lo que basta con una regla de Voximplant por herramienta.
Los números de teléfono y URI SIP configurados para otros proveedores no se ofrecen en llamadas de Voximplant.
Las reglas de transferencia son una configuración gestionada mediante API. Configura y actualiza mediante la API la herramienta Transferir a número de un agente que las use, como se indicó antes; el editor de herramientas del panel funciona con la lista de transferencias por número.
Crea una clave de API específica
Crea una clave de API en el mismo espacio de trabajo que el agente y limita su alcance a ElevenAgents. Para aceptar
conexiones solo de Voximplant, restringe las direcciones IP permitidas de la clave a los servidores de medios de Voximplant,
que Voximplant enumera en
https://api.voximplant.com/getMediaResources?with_mediaservers.
Anota la URL de WebSocket
El escenario se conecta a una URL que contiene el ID de tu agente:
Para fijar una rama del agente, añade ?branch_id=<branch_id>.
Si tu cuenta de ElevenLabs está en un entorno de residencia aislado, sustituye <region> por el
código de tu región. Consulta residencia de datos para ver las regiones
disponibles.
Configura Voximplant
Crea una aplicación
En el panel de control de Voximplant, abre Applications
y haz clic en Create application. Ponle un nombre, por ejemplo elevenlabs-agent, y haz clic en
Create.

Guarda la clave de API como secreto
En la aplicación, abre Secrets y haz clic en Add secret. Llámalo ELEVENLABS_API_KEY, pega
la clave de API que creaste para el espacio de trabajo del agente en Value y haz clic en Add secret. El
escenario la lee con VoxEngine.getSecretValue(), por lo que la clave nunca aparece en el código del escenario.

Crea el escenario
Abre Scenarios, haz clic en Create scenario, llámalo elevenlabs_agent, pega el código siguiente,
sustituye el ID del agente en ELEVENLABS_URL y haz clic en Save. Responde una llamada entrante, la transmite
al agente y actúa según la decisión cuando termina la conversación. Para una llamada saliente, abre
el WebSocket en el controlador CallEvents.Connected de la llamada que realizaste.

Enruta llamadas al escenario
Abre Routing, haz clic en Create rule, ponle un nombre y asigna el escenario
elevenlabs_agent. El patrón predeterminado .* envía todas las llamadas a la aplicación a través del escenario;
limítalo a un número de teléfono si la aplicación también gestiona otras llamadas. Para enrutar un número de teléfono,
asócialo a la aplicación en Numbers.

Haz una llamada de prueba
Puedes llamar a la aplicación desde el navegador sin un número de teléfono:
-
Abre Users, haz clic en Create user y crea un usuario con contraseña.

-
En Routing, haz clic en Test tools y luego en Softphone. Inicia sesión como ese usuario, permite el acceso al micrófono, introduce cualquier destino y llama. El agente responde con su primer mensaje.
-
Cuando termine la llamada, abre Call history. Cada llamada muestra una conexión WebSocket junto a la llamada propiamente dicha. Haz clic en View log para ver la sesión.

El registro muestra la decisión que envió ElevenLabs, el cierre del WebSocket y lo que hizo el escenario después. En este ejemplo, quien llamó pidió hablar con una persona, por lo que la decisión es
transfer-to-agentcon el motivo indicado por el agente.
Actúa según el evento elevenlabs-decision, no según MEDIA_ENDED. Voximplant activa MEDIA_ENDED tras
aproximadamente un segundo sin audio de ElevenLabs, lo que puede ocurrir en mitad de una conversación.
Variables dinámicas
Cada clave de customParameters se convierte en una variable dinámica con el mismo nombre. Los valores que no son
cadenas se convierten en texto; por ejemplo, true se convierte en "true". customParameters puede ser un
objeto o una cadena codificada en JSON. Las claves que empiezan por system__ o integration__ están reservadas y
se descartan.
Eventos de decisión
Cuando termina la conversación, ElevenLabs envía exactamente una decisión antes de su mensaje stop:
Si el escenario envía stop o cierra primero el WebSocket, por ejemplo porque quien llamó colgó,
ElevenLabs no envía ninguna decisión.
Audio
Voximplant y ElevenLabs intercambian PCM lineal mono de 16 bits a 8 kHz en ambas direcciones. ElevenLabs reproduce el audio del agente casi en tiempo real, por lo que, cuando quien llama interrumpe al agente, se reproduce como mucho unos 0,4 segundos de la respuesta interrumpida.
Errores de autenticación
ElevenLabs cierra el WebSocket con el código 1008 y el motivo bad auth token cuando falta el encabezado
Authorization o tiene un formato incorrecto, la clave de API no es válida o no está permitida desde la dirección IP
que se conecta, la clave pertenece a otro espacio de trabajo o el usuario de la clave no puede acceder a un
agente que tiene la autenticación habilitada.
Limitaciones y funciones no compatibles
- Las herramientas de cliente y la herramienta del sistema Reproducir tono de teclado no son compatibles. Transferir a número solo funciona mediante una regla de transferencia de Voximplant; el escenario decide adónde va quien llama.
- No se pueden pasar anulaciones de configuración desde el escenario, como un primer mensaje diferente; solo variables dinámicas.
- Los resultados de recopilación de datos no se envían al escenario. Usa el webhook posterior a la llamada para obtenerlos.