Eventos del cliente
Los eventos del cliente son eventos de nivel de sistema enviados del servidor al cliente que facilitan la comunicación en tiempo real. Estos eventos entregan audio, transcripciones, respuestas del agente y otra información crítica a la aplicación cliente.
Para obtener información sobre los eventos que puedes enviar del cliente al servidor, consulta la documentación de eventos del cliente al servidor.
Descripción general
Los eventos del cliente son esenciales para mantener la naturaleza en tiempo real de las conversaciones. Proporcionan desde metadatos de inicialización hasta audio procesado y respuestas del agente.
Estos eventos forman parte del protocolo de comunicación WebSocket y nuestros SDK los gestionan automáticamente. Comprenderlos es fundamental para implementaciones avanzadas y depuración.
Tipos de eventos de cliente
conversation_initiation_metadata
- Se envía automáticamente al iniciar una conversación
- Inicializa la configuración y los parámetros de la conversación
queue_status
- Se envía solo a quienes llaman y permanecen en la cola de llamadas mientras el agente está en su límite de simultaneidad
waitingse envía una vez, después deconversation_initiation_metadatay antes de cualquier audio de esperaadmittedotimed_outse envía una vez cuando termina la espera. Después detimed_out, se cierra el WebSocket con el código 4300- Siempre se envía a quienes llaman y están en cola. No es necesario activarlo en la configuración
client_eventsdel agente
Mientras quien llama está en cola, el audio de espera llega como eventos audio normales. Usa este evento para mostrar un
estado de espera en lugar de tratar el audio de espera como habla del agente.
ping
- Evento de comprobación de estado que requiere una respuesta inmediata
- El SDK lo gestiona automáticamente
- Se utiliza para mantener la conexión WebSocket
audio
- Contiene audio codificado en base64 para su reproducción
- Incluye un ID de evento numérico para seguimiento y secuenciación
- Gestiona el streaming de la salida de voz
- Incluye datos de alineación con información de tiempo a nivel de carácter
En conexiones WebRTC, el evento audio no se envía, ya que LiveKit gestiona el audio directamente.
user_transcript
- Contiene resultados finalizados de voz a texto
- Representa intervenciones completas del usuario
- Se utiliza para el historial de la conversación
agent_response
- Contiene el mensaje completo del agente
- Se envía cuando el mensaje ha terminado, por lo que en las conversaciones de voz suele llegar después de que el audio del mensaje haya empezado a transmitirse.
- Se utiliza para mostrar información y para el historial
Para mostrar el texto del agente a medida que se genera, usa el evento agent_chat_response_part
descrito a continuación en lugar de esperar a este evento.
agent_response_correction
- Contiene la respuesta truncada tras una interrupción
- Actualiza el mensaje mostrado
- Mantiene la precisión de la conversación
agent_response_metadata
- Contiene metadatos arbitrarios de una respuesta de LLM personalizada
- Solo se envía al usar una LLM personalizada
- Debe activarse explícitamente en la configuración
client_eventsdel agente
Este evento es específico de las integraciones de LLM personalizadas. Permite que tu servidor de LLM personalizada transfiera metadatos adicionales junto con la respuesta que puede utilizar la aplicación cliente.
client_tool_call
- Representa una llamada de función que el agente quiere que ejecute el cliente
- Contiene el nombre de la herramienta, el ID de llamada de herramienta y los parámetros
- Requiere ejecutar la función en el lado cliente y enviar el resultado de vuelta al servidor
Si usas el SDK, se proporcionan callbacks para gestionar el envío del resultado de vuelta al servidor.
agent_tool_response
- Indica cuándo el agente ha ejecutado una función de herramienta
- Contiene metadatos de la herramienta y el estado de ejecución
- Ofrece visibilidad sobre el uso de herramientas del agente durante las conversaciones
agent_tool_response_full_payload
- Replica
agent_tool_responsey, además, transmite la carga útil completa del resultado de la herramienta como una cadena enfull_tool_result. - Expone la salida de la herramienta en el cliente para mostrarla o procesarla posteriormente.
- Debe activarse explícitamente en la configuración
client_eventsdel agente.
Este evento expone el resultado completo de la herramienta al cliente y puede contener datos sensibles. Actívalo solo si el cliente es de confianza para gestionar la carga útil. Los resultados de más de 64 KB se truncan automáticamente.
React
JavaScript
vad_score
- Evento de puntuación de detección de actividad de voz
- Indica la probabilidad de que el usuario esté hablando
- Los valores van de 0 a 1; los valores más altos indican una mayor certeza de habla
mcp_tool_call
- Indica cuándo el agente ha ejecutado una función de herramienta MCP
- Contiene el nombre de la herramienta, el ID de llamada de herramienta y los parámetros
- Se llama con uno de cuatro estados:
loading,awaiting_approval,successyfailure.
agent_chat_response_part
- Transmite el texto de la respuesta del agente a medida que se genera, como mensajes
start,deltaystop - Siempre se envía en modo de solo texto; en las conversaciones de voz debe activarse explícitamente en la configuración
client_eventsdel agente - No se envía mientras el agente o un procedimiento activo usan una barrera de protección bloqueante, que debe evaluar toda la respuesta antes de publicar cualquier parte
response_ididentifica el mensaje que se transmite y coincide con elresponse_iddeagent_responseque posteriormente lo confirma
agent_reasoning_response_part
agent_reasoning_response_part transmite el razonamiento proporcionado por el modelo durante conversaciones de solo texto.
Activa el evento en client_events y la resumen de
razonamiento para el agente. El servidor envía
mensajes start, delta y stop. No envía este evento durante conversaciones de voz ni
mientras el agente o un procedimiento activo usan barreras de protección bloqueantes.
Este evento y el callback de SDK correspondiente son experimentales. Su comportamiento y estructura pueden cambiar en cualquier versión.
Los eventos de inicio y parada usan un valor text vacío.
agent_response_complete
- Se activa cuando el agente ha terminado su respuesta, incluidas las llamadas de herramientas pendientes. Tras este evento, el agente solo generará más salida si el usuario proporciona una nueva entrada o si un tiempo de espera de turno activa un nuevo turno.
- Debe activarse explícitamente en la configuración
client_eventsdel agente
guardrail_triggered
- Se activa cuando una infracción de una barrera de protección termina la conversación. No se envía cuando una barrera de protección activa un reintento que tiene éxito.
- El evento en sí es la señal: no contiene ninguna carga útil más allá del campo
type. - Debe activarse explícitamente en la configuración
client_eventsdel agente.
Flujo de eventos
Esta es una secuencia típica de eventos durante una conversación:
Cuando un agente alcanza su límite de concurrencia y está activada la cola de llamadas, el servidor envía eventos queue_status entre conversation_initiation_metadata y el primer evento audio. El audio de espera se envía como eventos audio hasta que se admite a la persona que llama.
Buenas prácticas
-
Gestión de errores
- Implementa una gestión de errores adecuada para cada tipo de evento.
- Registra los eventos importantes para facilitar la depuración.
- Gestiona las interrupciones de conexión correctamente.
-
Gestión de audio
- Almacena en búfer los fragmentos de audio de forma adecuada.
- Implementa una limpieza adecuada cuando haya una interrupción.
- Gestiona los recursos de audio.
-
Gestión de conexiones
- Responde rápidamente a los eventos PING.
- Implementa una lógica de reconexión.
- Supervisa el estado de la conexión.
Resolución de problemas
Problemas de conexión
- Asegúrate de que la conexión WebSocket sea correcta.
- Comprueba las respuestas PING/PONG.
- Verifica las credenciales de la API.
Problemas de audio
- Comprueba la gestión de los fragmentos de audio.
- Verifica la compatibilidad del formato de audio.
- Supervisa el uso de memoria.
Gestión de eventos
- Registra todos los eventos para facilitar la depuración.
- Implementa límites de error.
- Comprueba el registro de los gestores de eventos.
Para ver ejemplos detallados de implementación, consulta la documentación del SDK.