WebSocket
Esta documentación está dirigida a desarrolladores que integran directamente la API WebSocket de ElevenLabs. Para mayor comodidad, te recomendamos usar los SDK oficiales de ElevenLabs.
La API WebSocket de ElevenAgents permite mantener conversaciones de voz interactivas en tiempo real con agentes de IA. Al establecer una conexión WebSocket, puedes enviar audio de entrada y recibir respuestas de audio en tiempo real, creando experiencias conversacionales realistas.
wss://api.elevenlabs.io/v1/convai/conversation?agent_id={agent_id}Autenticación
Usar el ID del agente
Para agentes públicos, puedes usar directamente el agent_id en la URL de WebSocket sin autenticación adicional:
Usar una URL firmada
Para agentes privados o conversaciones que requieran autorización, obtén una URL firmada desde tu servidor, que se comunica de forma segura con la API de ElevenLabs mediante tu clave de API.
Ejemplo con cURL
Solicitud:
Respuesta:
Eventos de WebSocket
Eventos del cliente al servidor
Puedes enviar los siguientes eventos desde el cliente al servidor:
Actualizaciones contextuales
Envía información contextual que no interrumpa la conversación para actualizar su estado. Esto te permite aportar contexto adicional sin alterar el flujo de la conversación en curso.
Casos de uso:
- Actualizar el estado o las preferencias del usuario
- Proporcionar contexto del entorno
- Añadir información de contexto
- Hacer seguimiento de las interacciones en la interfaz de usuario
Puntos clave:
- No interrumpe el flujo actual de la conversación
- Las actualizaciones se incorporan como llamadas a herramientas en el historial de la conversación
- Ayuda a mantener el contexto sin romper el diálogo natural
Las actualizaciones contextuales se procesan de forma asíncrona y no requieren una respuesta directa del servidor.
Ejemplo de implementación en Next.js
Este ejemplo muestra cómo implementar un cliente de agente conversacional basado en WebSocket en Next.js mediante la API WebSocket de ElevenLabs.
Aunque este ejemplo utiliza el paquete voice-stream para gestionar la entrada del micrófono, puedes
implementar tu propia solución para capturar y codificar audio. El objetivo es mostrar
la conexión WebSocket y la gestión de eventos con la API de ElevenLabs.
Instala las dependencias necesarias
Primero, instala los paquetes necesarios:
El paquete voice-stream gestiona el acceso al micrófono y el streaming de audio, y codifica automáticamente el audio en formato base64, tal como requiere la API de ElevenLabs.
Este ejemplo utiliza Tailwind CSS para los estilos. Para añadir Tailwind a tu proyecto de Next.js:
Después, sigue la guía oficial de configuración de Tailwind CSS para Next.js.
También puedes sustituir los atributos className por tus propios estilos CSS.
Siguientes pasos
- Reproducción de audio: Implementa tu propio sistema de reproducción de audio con Web Audio API o una biblioteca. Recuerda gestionar la cola de audio para evitar superposiciones, ya que WebSocket envía los eventos de audio por fragmentos.
- Gestión de errores: Añade lógica de reintento y mecanismos de recuperación ante errores.
- Información en la interfaz: Añade indicadores visuales de actividad de voz y estado de conexión.
Gestión de la latencia
Para garantizar conversaciones fluidas, implementa estas estrategias:
- Búfer adaptativo: Ajusta el búfer de audio según las condiciones de red.
- Búfer de fluctuación: Implementa un búfer de fluctuación para suavizar las variaciones en los tiempos de llegada de los paquetes.
- Supervisión de ping-pong: Usa eventos ping y pong para medir el tiempo de ida y vuelta y ajustar según corresponda.
Buenas prácticas de seguridad
- Rota las claves de API periódicamente y usa variables de entorno para almacenarlas.
- Implementa límites de velocidad para evitar usos indebidos.
- Explica claramente el motivo cuando pidas a usuarios acceso al micrófono.
- Fragmentación optimizada: ajusta la duración de los fragmentos de audio para equilibrar latencia y eficiencia.