Creación de un agente de voz saliente con Twilio y Deepgram
Time to read:
Creación de un agente de voz saliente con Twilio y Deepgram
Crear un agente de voz saliente en Twilio significa resolver problemas que un agente de voz entrante no tiene. Tienes que originar la llamada, detectar si la contestó un humano o un correo de voz, inyectar contexto para que el agente sepa con quién está hablando y por qué, y dirigir el resultado de vuelta a tu sistema de registro cuando finalice la llamada.
Mi equipo en Deepgram envió una implementación de referencia para agentes de voz de telefonía saliente en Twilio que se encarga de todo esto. Tu sistema activa una llamada a través de una API REST, un agente de IA ejecuta una conversación programada con el destinatario y, cuando la llamada termina, un resultado de llamada estructurado llega a tu software para la gestión de la relación con clientes. En vez de esto, el correo de voz recibe un mensaje personalizado.
Las implementaciones más simples omiten esta arquitectura y de lo que se hace cargo.
Cómo funciona la arquitectura de agente de voz saliente
Si has leído la publicación complementaria sobre agentes de voz entrantes, el puente de audio central aquí es el mismo: una aplicación Python creada en Starlette con una clase VoiceAgentSession que tiene dos conexiones de WebSocket (una a Twilio y otra a la API de agente de voz de Deepgram) y transporta el audio entre ellas. La API de agente de voz de Deepgram combina razonamiento de LLM de voz a texto, y de texto a voz en un bucle en tiempo real. Envías audio y obtienes audio de vuelta, en lugar de unir servicios separados.
Flux, el modelo de voz a texto de Deepgram para agentes de voz, se hace cargo de la alternancia de turnos de forma nativa para que el agente sepa cuándo la persona que llama ha terminado de hablar. La intervención (interrupción de la persona que llama) se conecta al evento clear de Twilio para que quienes llaman puedan intervenir en cualquier momento.
Lo que es diferente de la entrada es todo lo que sucede antes de que se active el puente de audio.
Una situación de ejemplo es una llamada de seguimiento al cliente potencial del seguro de vivienda. Un cliente envía una solicitud de cotización en tu sitio web. Más tarde, tu sistema activa una llamada saliente para verificar sus detalles, recopilar algunos puntos de datos más (antigüedad del techo, reclamaciones recientes) y agendar una consulta con un agente autorizado. Si la llamada se dirige al correo de voz, el agente deja un mensaje personalizado en su lugar.
Para iniciar esa llamada, un sistema externo (tu software para la gestión de la relación con clientes, un script de CLI, un webhook) llega al punto final POST /make-call del servidor con el número de teléfono del destinatario y el contexto del cliente potencial:
A partir de ese punto, el servidor se hace cargo: llama a la API REST de Twilio con TwiML en línea que contiene <Connect><Stream> y apunta de vuelta a su propio WebSocket, Twilio marca al destinatario y, una vez que la llamada se conecta, el puente VoiceAgentSession toma el control. Es un patrón que los clientes de Twilio crean todo el tiempo: Voz saliente activada por software para la gestión de la relación con clientes con datos estructurados que regresan al sistema de registro.
Detección de contestador automático, integración de CRM y otras inquietudes salientes que maneja el repositorio
Detección de contestador automático (AMD) con la API asíncrona de Twilio. Cuando la llamada se conecta, el servidor no sabe si la contestó un humano o un correo de voz. Almacena el audio entrante en un búfer mientras se ejecuta la detección de contestador automático asincrónica de Twilio (aproximadamente de 2 a 4 segundos) y cuando el resultado se vuelve a publicar /amd-result, la sesión se ramifica:
- Se detecta un humano: se conecta a la API de agente de voz de Deepgram, descarga el audio almacenado en el búfer y comienza la conversación.
- Se detecta correo de voz: envía un mensaje personalizado mediante el modelo de texto a voz Aura-2 de Deepgram y cuelga.
El repositorio también se encarga de la detección tardía. Si AMD señala que se trata de un correo de voz después de que el agente ya ha comenzado a hablar a quien pensaba que era un humano, la sesión elimina la conexión de Deepgram a mitad de la llamada y cambia a la entrega de correo de voz. Ese caso extremo es el tipo de cosa que solo aparece cuando haces llamadas salientes a gran escala y ya está resuelto aquí.
Se incluye el contexto del cliente potencial en la indicación al agente de voz. La indicación del sistema del agente se crea dinámicamente a partir de los datos del cliente potencial en la solicitud POST/make-call. El agente conoce el nombre del destinatario, los detalles de la propiedad y lo que solicitó antes de que comience la conversación. Eso es lo que permite que la línea de apertura sea "Estoy haciendo un seguimiento de tu cotización de seguro de vivienda para 742 Evergreen Terrace" en lugar de "Hola, esta es una llamada automatizada".
Los resultados de la llamadas estructuradas se vuelven a publicar en el software para la gestión de la relación con clientes. Este es el detalle que convierte a un agente de voz, de una demostración en un flujo de trabajo. La API de agente de voz de Deepgram admite llamadas de funciones, lo que significa que el LLM que alimenta al agente puede activar acciones específicas durante la conversación (verificar la disponibilidad de citas, reservar un espacio, etc.). Una función update_lead se ejecuta al final de cada llamada, y captura la disposición, la información verificada, la nueva información recopilada y un resumen en lenguaje natural como JSON estructurado. En la implementación de referencia, se registra en la consola. En producción, se publica en tu software para la gestión de la relación con clientes, webhook o base de datos. El LLM decide cuándo se realiza la llamada y qué informar, y el servidor la enruta a tu back-end.
Monitoreo silencioso con InjectAgentMessage de Deepgram. Un monitor de silencio monitorea si el destinatario está respondiendo. Después de un lapso de silencio, el agente le pregunta a la persona que llama: "¿Aún estás allí?" mediante la API de InjectAgentMessage de Deepgram. Este es un comando del lado del servidor que le indica al agente de voz que diga una línea específica que tú proporcionas, en lugar de que el LLM genere algo por su cuenta. El servidor finalmente finaliza la llamada si aún no hay respuesta. Es un pequeño detalle, pero importa cuando haces llamadas salientes a gran escala y pagas por lapsos de silencio.
Introducción al agente de voz saliente
El repositorio incluye un asistente de configuración que configura Twilio e implementa Fly.io (una plataforma para ejecutar servidores de apps cerca de tus usuarios). Necesitarás Python 3.12+, una cuenta de Twilio y una clave de API de Deepgram (gratuita, 200 USD en créditos, no se requiere tarjeta de crédito).
El asistente te guía a través de la selección de un número de Twilio, la generación de un secreto para el punto final /make-call y la implementación en Fly.io. Una vez que está listo, activa una llamada de prueba:
Tu teléfono suena. El agente de voz ejecuta la conversación de seguimiento del cliente potencial de seguros. Revisa los registros del servidor para ver la transcripción completa y el JSON estructurado del resultado de la llamada.
Hazlo, elimina el escenario del seguro y agrega tus propias indicaciones, funciones e integración de software para la gestión de la relación con clientes. Con licencia de MIT.
Si buscas la contraparte entrante, donde la persona que llama marca tu número y habla con un recepcionista de IA, consulta Creación de un agente de voz entrante con Twilio y Deepgram.
- El modelo de referencia de Deepgram se integra con Twilio, y se encarga de llamadas salientes, detección de correo de voz y registro de software para la gestión de la relación con clientes (CRM).
- Los agentes utilizan datos de clientes potenciales para personalizar las llamadas, integrando sin problemas las respuestas en software para la gestión de la relación con clientes para el seguimiento.
- El sistema detecta el correo de voz, entrega mensajes personalizados y cambia de modo si se retrasa la detección de contestación.
Este resumen fue generado por IA.
Publicaciones relacionadas
Recursos relacionados
Twilio Docs
Desde API hasta SDK y aplicaciones de muestra
Documentación de referencia de API, SDK, bibliotecas auxiliares, inicios rápidos y tutoriales para su idioma y plataforma.
Centro de Recursos
Los últimos libros electrónicos, informes de la industria y seminarios web
Aprenda de los expertos en participación del cliente para mejorar su propia comunicación.
Ahoy
Centro de la comunidad de desarrolladores de Twilio
Mejores prácticas, ejemplos de códigos e inspiración para crear comunicaciones y experiencias de participación digital.