SDK de JavaScript
SDK de ElevenAgents: despliega agentes de voz interactivos y personalizados en minutos.
Instalación
Instala el paquete en tu proyecto mediante un gestor de paquetes.
¿Actualizas desde una versión anterior? Ejecuta npx skills add elevenlabs/packages para instalar la habilidad
elevenlabs:sdk-migration para tu agente de programación con IA, que automatiza los cambios de importación y las
actualizaciones de la API.
Uso
Esta biblioteca está pensada principalmente para el desarrollo de proyectos con JavaScript sin frameworks, o como base para bibliotecas adaptadas a frameworks específicos. Te recomendamos comprobar si tu framework concreto tiene su propia biblioteca. No obstante, puedes usar esta biblioteca en cualquier proyecto basado en JavaScript.
Inicializar una conversación
Primero, crea una nueva sesión de conversación con Conversation.startSession:
Esto establecerá una conexión y empezará a usar el micrófono para comunicarse con el agente de ElevenLabs Agents. Antes de iniciar la conversación, plantéate explicar en la interfaz de tu aplicación por qué necesitas acceder al micrófono y solicitar permiso:
Configuración de la sesión
Las opciones que se pasan a startSession especifican cómo se establece la sesión. Las conversaciones pueden iniciarse con agentes públicos o privados.
Agentes públicos
Los agentes que no requieren autenticación pueden utilizarse para iniciar una conversación mediante el ID del agente. Puedes obtener el ID del agente a través de la interfaz de ElevenLabs.
Para los agentes públicos, puedes usar el ID directamente:
El tipo de conexión se deduce automáticamente según el modo de conversación. Las conversaciones
de voz usan WebRTC y las conversaciones de solo texto usan WebSocket de forma predeterminada. Aun así, puedes especificar
explícitamente connectionType: 'webrtc' o connectionType: 'websocket' si lo necesitas.
Agentes privados
Si la conversación requiere autorización, tendrás que añadir a tu servidor una ruta de API específica que solicite una URL firmada (si utilizas el tipo de conexión WebSockets) o un token de conversación (si utilizas WebRTC) mediante la API de ElevenLabs y lo devuelva al cliente.
Aquí tienes un ejemplo para una conexión WebSocket:
Aquí tienes un ejemplo para WebRTC:
Cuando tengas el token, proporcionarlo a startSession iniciará la conversación mediante WebRTC.
Callbacks opcionales
Las opciones que se pasan a startSession también pueden usarse para registrar callbacks opcionales:
- onConnect - controlador que se llama cuando se establece la conexión WebSocket de la conversación.
- onDisconnect - controlador que se llama cuando finaliza la conexión WebSocket de la conversación.
- onMessage - controlador que se llama cuando se recibe un nuevo mensaje de texto. Puede tratarse de transcripciones provisionales o definitivas de la voz del usuario, o de respuestas generadas por un LLM. Se utiliza principalmente para gestionar la transcripción de la conversación.
- onError - controlador que se llama cuando se produce un error.
- onStatusChange - controlador que se llama cada vez que cambia el estado de la conexión. Puede ser
connected,connectingydisconnected(inicial). - onModeChange - controlador que se llama cuando cambia un estado; por ejemplo, cuando el agente pasa de
speakingalistening, o viceversa. - onCanSendFeedbackChange - controlador que se llama cuando el envío de comentarios pasa a estar disponible o no disponible.
- onAudioAlignment - controlador que se llama al recibir datos de alineación de audio y proporciona información de tiempos a nivel de carácter para el habla del agente.
No todos los eventos de cliente están habilitados de forma predeterminada para un agente. Si has habilitado un callback, pero no recibes eventos, asegúrate de que tu agente de ElevenLabs tenga habilitado el evento correspondiente. Puedes hacerlo en la pestaña “Advanced” de la configuración del agente en el panel de control de ElevenLabs.
Valor de retorno
startSession devuelve una instancia de conversación (VoiceConversation o TextConversation, según el modo) que puedes usar para controlar la sesión. El método generará un error si no se puede establecer la sesión. Esto puede ocurrir si el usuario deniega el acceso al micrófono o si falla la conexión.
endSession
Un método para finalizar manualmente la conversación. El método finalizará la conversación y se desconectará del WebSocket. Después, la instancia de conversación dejará de poder usarse y puedes descartarla con seguridad.
getId
Un método que devuelve el ID de la conversación.
setVolume
Un método para establecer el volumen de salida de la conversación. Acepta un objeto con un campo de volumen entre 0 y 1.
getInputVolume / getOutputVolume
Métodos que devuelven el volumen de entrada/salida actual en una escala de 0 a 1, donde 0 equivale a -100 dB y 1 a -30 dB.
sendFeedback
Un método para enviar comentarios binarios al agente. El método acepta un valor booleano, donde true representa comentarios positivos y false, comentarios negativos.
Los comentarios siempre se asocian a la respuesta más reciente del agente y solo pueden enviarse una vez por respuesta.
Puedes escuchar onCanSendFeedbackChange para saber si se pueden enviar comentarios en ese momento.
sendContextualUpdate
Un método para enviar actualizaciones contextuales al agente. Puede utilizarse para informar al agente sobre acciones del usuario que no están directamente relacionadas con la conversación, pero que pueden influir en las respuestas del agente.
sendUserMessage
Envía un mensaje de texto al agente.
Puedes usarlo para que el usuario escriba el mensaje en lugar de usar el micrófono. A diferencia de sendContextualUpdate, se tratará como un mensaje del usuario y hará que el agente intervenga en la conversación.
sendUserActivity
Notifica al agente sobre la actividad del usuario.
El agente no intentará hablar durante al menos 2 segundos después de detectar la actividad del usuario.
Puedes usarlo para evitar que el agente interrumpa al usuario mientras escribe.
setMicMuted
Un método para silenciar o reactivar el micrófono.
changeInputDevice
Te permite cambiar el dispositivo de entrada de audio durante una conversación de voz activa. Este método solo está disponible para conversaciones de voz.
En el modo WebRTC, el formato de entrada y la frecuencia de muestreo están configurados de forma fija como pcm y 48000, respectivamente.
Cambiar esos valores al cambiar el dispositivo de entrada no tendrá efecto.
Si el ID del dispositivo no es válido, se usará el dispositivo predeterminado.
changeOutputDevice
Te permite cambiar el dispositivo de salida de audio durante una conversación de voz activa. Este método solo está disponible para conversaciones de voz.
En el modo WebRTC, el formato de salida y la frecuencia de muestreo están configurados de forma fija como pcm y 48000, respectivamente.
Cambiar esos valores al cambiar el dispositivo de salida no tendrá efecto.
El cambio de dispositivo solo funciona en conversaciones de voz. Si no se proporciona un deviceId específico,
el navegador usará su selección de dispositivo predeterminada. Puedes enumerar los dispositivos disponibles mediante la
API MediaDevices.enumerateDevices().
getInputByteFrequencyData / getOutputByteFrequencyData
Métodos que devuelven Uint8Arrays con los datos de frecuencia de entrada/salida actuales. Consulta AnalyserNode.getByteFrequencyData para obtener más información.
Estos métodos solo están disponibles para conversaciones de voz. En el modo WebRTC, el audio está configurado de forma fija para
usar pcm_48000, por lo que cualquier visualización que use los datos devueltos podría mostrar patrones distintos
a los de las conexiones WebSocket.