WebSocket
Esta documentação é destinada a desenvolvedores que integram diretamente com a API WebSocket da ElevenLabs. Para maior conveniência, considere usar os SDKs oficiais fornecidos pela ElevenLabs.
A API WebSocket do ElevenAgents permite conversas de voz interativas em tempo real com agentes de IA. Ao estabelecer uma conexão WebSocket, você pode enviar áudio de entrada e receber respostas em áudio em tempo real, criando experiências de conversa naturais.
wss://api.elevenlabs.io/v1/convai/conversation?agent_id={agent_id}Autenticação
Usando o ID do agente
Para agentes públicos, você pode usar diretamente o agent_id na URL do WebSocket sem autenticação adicional:
Usando uma URL assinada
Para agentes privados ou conversas que exigem autorização, obtenha uma URL assinada do seu servidor, que se comunica com segurança com a API da ElevenLabs usando sua chave de API.
Exemplo com cURL
Solicitação:
Resposta:
Eventos do WebSocket
Eventos do cliente para o servidor
Os eventos a seguir podem ser enviados do cliente para o servidor:
Atualizações contextuais
Envie informações contextuais sem interrupções para atualizar o estado da conversa. Isso permite fornecer contexto adicional sem interromper o fluxo da conversa em andamento.
Casos de uso:
- Atualizar o status ou as preferências do usuário
- Fornecer contexto do ambiente
- Adicionar informações de apoio
- Acompanhar interações na interface do usuário
Pontos principais:
- Não interrompe o fluxo atual da conversa
- As atualizações são incorporadas como chamadas de ferramenta no histórico da conversa
- Ajuda a manter o contexto sem interromper o diálogo natural
As atualizações contextuais são processadas de forma assíncrona e não exigem uma resposta direta do servidor.
Exemplo de implementação no Next.js
Este exemplo demonstra como implementar um cliente de agente conversacional baseado em WebSocket no Next.js usando a API WebSocket da ElevenLabs.
Embora este exemplo use o pacote voice-stream para gerenciar a entrada do microfone, você pode
implementar sua própria solução para capturar e codificar áudio. O foco aqui é demonstrar
a conexão WebSocket e o tratamento de eventos com a API da ElevenLabs.
Instale as dependências necessárias
Primeiro, instale os pacotes necessários:
O pacote voice-stream gerencia o acesso ao microfone e a transmissão de áudio, codificando automaticamente o áudio no formato base64, conforme exigido pela API da ElevenLabs.
Este exemplo usa Tailwind CSS para estilização. Para adicionar o Tailwind ao seu projeto Next.js:
Em seguida, siga o guia oficial de configuração do Tailwind CSS para Next.js.
Como alternativa, você pode substituir os atributos className pelos seus próprios estilos CSS.
Próximas etapas
- Reprodução de áudio: Implemente seu próprio sistema de reprodução de áudio usando a Web Audio API ou uma biblioteca. Lembre-se de gerenciar a fila de áudio para evitar sobreposições, pois o WebSocket envia eventos de áudio em blocos.
- Tratamento de erros: Adicione lógica de novas tentativas e mecanismos de recuperação de erros
- Feedback da interface: Adicione indicadores visuais de atividade de voz e status da conexão
Gerenciamento de latência
Para garantir conversas fluidas, implemente estas estratégias:
- Buffer adaptativo: Ajuste o buffer de áudio com base nas condições da rede.
- Buffer de jitter: Implemente um buffer de jitter para suavizar variações nos tempos de chegada dos pacotes.
- Monitoramento de ping-pong: Use eventos de ping e pong para medir o tempo de ida e volta e fazer os ajustes necessários.
Práticas recomendadas de segurança
- Altere as chaves de API regularmente e use variáveis de ambiente para armazená-las.
- Implemente limitação de taxa para evitar abusos.
- Explique claramente a finalidade ao solicitar acesso ao microfone dos usuários.
- Segmentação otimizada: ajuste a duração dos blocos de áudio para equilibrar latência e eficiência.