Eventos do cliente
Entenda e processe eventos em tempo real recebidos pelo cliente durante aplicações conversacionais.
Eventos do cliente são eventos de nível de sistema enviados do servidor para o cliente que facilitam a comunicação em tempo real. Esses eventos fornecem áudio, transcrição, respostas do agente e outras informações essenciais à aplicação cliente.
Para saber mais sobre os eventos que você pode enviar do cliente para o servidor, consulte a documentação de eventos do cliente para o servidor.
Visão geral
Os eventos do cliente são essenciais para manter o caráter em tempo real das conversas. Eles fornecem desde metadados de inicialização até áudio processado e respostas do agente.
Esses eventos fazem parte do protocolo de comunicação WebSocket e são processados automaticamente pelos nossos SDKs. Compreendê-los é fundamental para implementações avançadas e depuração.
Tipos de eventos do cliente
conversation_initiation_metadata
- Enviado automaticamente ao iniciar uma conversa
- Inicializa as configurações e os parâmetros da conversa
queue_status
- Enviado apenas para pessoas que ligam e estão na fila de chamadas, enquanto o agente está no limite de simultaneidade
waitingé enviado uma vez, apósconversation_initiation_metadatae antes de qualquer áudio de esperaadmittedoutimed_outé enviado uma vez quando a espera termina. Apóstimed_out, o WebSocket é fechado com o código 4300- Sempre enviado para pessoas que estão na fila. Não é necessário ativá-lo na configuração
client_eventsdo agente
Enquanto uma pessoa que liga está na fila, o áudio de espera chega como eventos audio regulares. Use este evento para mostrar um
estado de espera, em vez de tratar o áudio de espera como fala do agente.
ping
- Evento de verificação de integridade que exige resposta imediata
- Gerenciado automaticamente pelo SDK
- Usado para manter a conexão WebSocket
audio
- Contém áudio codificado em base64 para reprodução
- Inclui um ID de evento numérico para rastreamento e sequenciamento
- Processa streaming de saída de voz
- Inclui dados de alinhamento com informações de tempo no nível dos caracteres
Em conexões WebRTC, o evento audio não é enviado, pois o áudio é processado diretamente pelo LiveKit.
user_transcript
- Contém resultados finalizados de conversão de fala em texto
- Representa enunciados completos do usuário
- Usado para o histórico da conversa
agent_response
- Contém a mensagem completa do agente
- É enviado quando a mensagem termina; por isso, em conversas por voz, geralmente chega depois que o áudio da mensagem já começou a ser transmitido.
- Usado para exibição e histórico
Para exibir o texto do agente conforme ele é produzido, use o evento agent_chat_response_part
descrito abaixo, em vez de esperar por este evento.
agent_response_correction
- Contém a resposta truncada após uma interrupção
- Atualiza a mensagem exibida
- Mantém a precisão da conversa
agent_response_metadata
- Contém metadados arbitrários de uma resposta de LLM personalizada
- Enviado apenas ao usar uma LLM personalizada
- Deve ser explicitamente ativado na configuração
client_eventsdo agente
Este evento é específico de integrações com LLMs personalizadas. Ele permite que seu servidor de LLM personalizada transmita metadados adicionais junto com a resposta, que podem ser usados pelo aplicativo cliente.
client_tool_call
- Representa uma chamada de função que o agente quer que o cliente execute
- Contém o nome da ferramenta, o ID da chamada da ferramenta e os parâmetros
- Exige a execução da função no cliente e o envio do resultado de volta ao servidor
Se você estiver usando o SDK, são fornecidos callbacks para processar o envio do resultado de volta ao servidor.
agent_tool_response
- Indica quando o agente executou uma função de ferramenta
- Contém metadados da ferramenta e o status de execução
- Oferece visibilidade sobre o uso de ferramentas pelo agente durante as conversas
agent_tool_response_full_payload
- Replica
agent_tool_responsee também transmite a carga completa do resultado da ferramenta como uma string emfull_tool_result. - Disponibiliza a saída da ferramenta no cliente para exibição ou processamento posterior.
- Deve ser explicitamente ativado na configuração
client_eventsdo agente.
Este evento expõe o resultado completo da ferramenta ao cliente e pode conter dados sensíveis. Ative-o apenas quando o cliente for confiável para processar a carga. Resultados maiores que 64 KB são truncados automaticamente.
React
JavaScript
vad_score
- Evento de pontuação de Detecção de Atividade de Voz
- Indica a probabilidade de o usuário estar falando
- Os valores variam de 0 a 1, e valores mais altos indicam maior confiança de fala
mcp_tool_call
- Indica quando o agente executou uma função de ferramenta MCP
- Contém o nome da ferramenta, o ID da chamada da ferramenta e os parâmetros
- Chamado com um de quatro estados:
loading,awaiting_approval,successefailure.
agent_chat_response_part
- Transmite o texto da resposta do agente conforme ele é gerado, como mensagens
start,deltaestop - Sempre enviado no modo somente texto; em conversas por voz, deve ser explicitamente ativado na configuração
client_eventsdo agente - Não é enviado enquanto o agente ou um procedimento ativo usa uma proteção bloqueadora, que precisa avaliar toda a resposta antes que qualquer parte dela seja liberada
response_ididentifica a mensagem que está sendo transmitida e corresponde aoresponse_iddeagent_response, que a confirma posteriormente
agent_reasoning_response_part
agent_reasoning_response_part transmite o raciocínio fornecido pelo modelo durante conversas somente de texto.
Ative o evento em client_events e habilite o resumo do
raciocínio para o agente. O servidor envia
mensagens start, delta e stop. Ele não envia este evento durante conversas por voz nem
enquanto o agente ou um procedimento ativo usa proteções bloqueadoras.
Este evento e o callback correspondente do SDK são experimentais. Seu comportamento e formato podem mudar em qualquer lançamento.
Eventos de início e parada usam um valor text vazio.
agent_response_complete
- Disparado quando o agente conclui sua resposta, incluindo quaisquer chamadas de ferramenta pendentes. Após este evento, o agente só produzirá mais saída se o usuário fornecer uma nova entrada ou se um tempo limite de turno iniciar um novo turno.
- Deve ser explicitamente ativado na configuração
client_eventsdo agente
guardrail_triggered
- Disparado quando uma violação de proteção encerra a conversa. Não é enviado quando uma proteção dispara uma nova tentativa bem-sucedida.
- O próprio evento é o sinal: ele não carrega nenhuma carga além do campo
type. - Deve ser explicitamente ativado na configuração
client_eventsdo agente.
Fluxo de eventos
Veja uma sequência típica de eventos durante uma conversa:
Quando um agente está no limite de simultaneidade e a fila de chamadas está ativada, o servidor envia eventos queue_status entre conversation_initiation_metadata e o primeiro evento audio. O áudio de espera é enviado como eventos audio até que a chamada seja admitida.
Boas práticas
-
Tratamento de erros
- Implemente o tratamento adequado de erros para cada tipo de evento
- Registre eventos importantes para depuração
- Lide adequadamente com interrupções de conexão
-
Gerenciamento de áudio
- Armazene os blocos de áudio em buffer adequadamente
- Implemente uma limpeza adequada em caso de interrupção
- Gerencie os recursos de áudio
-
Gerenciamento de conexão
- Responda prontamente aos eventos PING
- Implemente a lógica de reconexão
- Monitore a integridade da conexão
Solução de problemas
Problemas de conexão
- Garanta uma conexão WebSocket adequada
- Verifique as respostas PING/PONG
- Confira as credenciais da API
Problemas de áudio
- Verifique o tratamento dos blocos de áudio
- Confira a compatibilidade do formato de áudio
- Monitore o uso de memória
Tratamento de eventos
- Registre todos os eventos para depuração
- Implemente limites de erro
- Verifique o registro dos manipuladores de eventos
Para ver exemplos detalhados de implementação, consulte a documentação do SDK.