SDK JavaScript
SDK do ElevenAgents: implante agentes de voz interativos e personalizados em minutos.
Instalação
Instale o pacote no seu projeto usando um gerenciador de pacotes.
Está atualizando de uma versão anterior? Execute npx skills add elevenlabs/packages para instalar a
habilidade elevenlabs:sdk-migration para seu agente de programação com IA, que automatiza alterações de importação e
atualizações da API.
Uso
Esta biblioteca é voltada principalmente ao desenvolvimento em projetos JavaScript puro ou como base para bibliotecas adaptadas a frameworks específicos. Recomendamos verificar se o seu framework específico tem uma biblioteca própria. No entanto, você pode usar esta biblioteca em qualquer projeto baseado em JavaScript.
Inicializar conversa
Primeiro, crie uma nova sessão de conversa usando Conversation.startSession:
Isso estabelecerá uma conexão e começará a usar o microfone para se comunicar com o agente do ElevenLabs Agents. Considere explicar e solicitar acesso ao microfone na interface do seu app antes de iniciar a conversa:
Configuração da sessão
As opções passadas para startSession especificam como a sessão é estabelecida. As conversas podem ser iniciadas com agentes públicos ou privados.
Agentes públicos
Agentes que não exigem autenticação podem ser usados para iniciar uma conversa usando o ID do agente. O ID do agente pode ser obtido pela interface da ElevenLabs.
Para agentes públicos, você pode usar o ID diretamente:
O tipo de conexão é inferido automaticamente com base no modo de conversa. Conversas por voz
usam WebRTC, e conversas somente por texto usam WebSocket por padrão. Você ainda pode especificar explicitamente
connectionType: 'webrtc' ou connectionType: 'websocket', se necessário.
Agentes privados
Se a conversa exigir autorização, você precisará adicionar um endpoint dedicado ao seu servidor que solicite uma URL assinada (se usar o tipo de conexão WebSockets) ou um token de conversa (se usar WebRTC) usando a API da ElevenLabs e o envie de volta ao cliente.
Veja um exemplo para uma conexão WebSocket:
Veja um exemplo para WebRTC:
Depois que tiver o token, fornecê-lo a startSession iniciará a conversa usando WebRTC.
Callbacks opcionais
As opções passadas para startSession também podem ser usadas para registrar callbacks opcionais:
- onConnect - manipulador chamado quando a conexão WebSocket da conversa é estabelecida.
- onDisconnect - manipulador chamado quando a conexão WebSocket da conversa é encerrada.
- onMessage - manipulador chamado quando uma nova mensagem de texto é recebida. Elas podem ser transcrições provisórias ou finais da voz do usuário, ou respostas produzidas pelo LLM. Usado principalmente para processar a transcrição da conversa.
- onError - manipulador chamado quando ocorre um erro.
- onStatusChange - manipulador chamado sempre que o status da conexão muda. Pode ser
connected,connectingedisconnected(inicial). - onModeChange - manipulador chamado quando um status muda, por exemplo, o agente muda de
speakingparalisteningou vice-versa. - onCanSendFeedbackChange - manipulador chamado quando o envio de feedback fica disponível ou indisponível.
- onAudioAlignment - manipulador chamado quando dados de alinhamento de áudio são recebidos, fornecendo informações de tempo por caractere para a fala do agente.
Nem todos os eventos do cliente são ativados por padrão para um agente. Se você ativou um callback, mas não está recebendo eventos, verifique se o seu agente ElevenLabs tem o evento correspondente ativado. Você pode fazer isso na aba “Advanced” das configurações do agente no painel da ElevenLabs.
Valor de retorno
startSession retorna uma instância de conversa (VoiceConversation ou TextConversation, dependendo do modo) que pode ser usada para controlar a sessão. O método gerará um erro se a sessão não puder ser estabelecida. Isso pode acontecer se o usuário negar o acesso ao microfone ou se a conexão falhar.
endSession
Um método para encerrar manualmente a conversa. O método encerrará a conversa e desconectará do WebSocket. Depois disso, a instância da conversa ficará inutilizável e poderá ser descartada com segurança.
getId
Um método que retorna o ID da conversa.
setVolume
Um método para definir o volume de saída da conversa. Aceita um objeto com o campo de volume entre 0 e 1.
getInputVolume / getOutputVolume
Métodos que retornam o volume atual de entrada/saída em uma escala de 0 a 1, em que 0 é -100 dB e 1 é -30 dB.
sendFeedback
Um método para enviar feedback binário ao agente. O método aceita um valor booleano, em que true representa feedback positivo e false, feedback negativo.
O feedback é sempre associado à resposta mais recente do agente e só pode ser enviado uma vez por resposta.
Você pode escutar onCanSendFeedbackChange para saber se é possível enviar feedback naquele momento.
sendContextualUpdate
Um método para enviar atualizações contextuais ao agente. Isso pode ser usado para informar o agente sobre ações do usuário que não estão diretamente relacionadas à conversa, mas podem influenciar as respostas do agente.
sendUserMessage
Envia uma mensagem de texto ao agente.
Pode ser usado para permitir que o usuário digite a mensagem em vez de usar o microfone. Diferentemente de sendContextualUpdate, isso será tratado como uma mensagem do usuário e fará com que o agente assuma seu turno na conversa.
sendUserActivity
Notifica o agente sobre a atividade do usuário.
O agente não tentará falar por pelo menos 2 segundos após detectar a atividade do usuário.
Isso pode ser usado para evitar que o agente interrompa o usuário enquanto ele está digitando.
setMicMuted
Um método para silenciar/reativar o microfone.
changeInputDevice
Permite alterar o dispositivo de entrada de áudio durante uma conversa por voz ativa. Este método está disponível apenas para conversas por voz.
No modo WebRTC, o formato de entrada e a taxa de amostragem são definidos como pcm e 48000, respectivamente.
Alterar esses valores ao trocar o dispositivo de entrada não tem efeito.
Se o ID do dispositivo for inválido, o dispositivo padrão será usado.
changeOutputDevice
Permite alterar o dispositivo de saída de áudio durante uma conversa por voz ativa. Este método está disponível apenas para conversas por voz.
No modo WebRTC, o formato de saída e a taxa de amostragem são definidos como pcm e 48000, respectivamente.
Alterar esses valores ao trocar o dispositivo de saída não tem efeito.
A troca de dispositivo funciona apenas em conversas por voz. Se nenhum deviceId específico for fornecido, o
navegador usará a seleção de dispositivo padrão. Você pode listar os dispositivos disponíveis usando a
API MediaDevices.enumerateDevices().
getInputByteFrequencyData / getOutputByteFrequencyData
Métodos que retornam Uint8Arrays contendo os dados atuais de frequência de entrada/saída. Consulte AnalyserNode.getByteFrequencyData para mais informações.
Esses métodos estão disponíveis apenas para conversas por voz. No modo WebRTC, o áudio é configurado para
usar pcm_48000, o que significa que qualquer visualização que use os dados retornados pode mostrar padrões diferentes
das conexões WebSocket.