SDK para Kotlin
SDK do ElevenAgents: implante agentes de voz interativos e personalizados em minutos para apps Android.
Consulte a visão geral do ElevenAgents para entender como o ElevenAgents funciona.
Instalação
Adicione o SDK da ElevenLabs ao seu projeto Android incluindo a seguinte dependência no arquivo build.gradle do seu app:
Um exemplo de app Android que usa este SDK está disponível aqui
Requisitos
- Nível 21 da API Android (Android 5.0) ou superior
- Permissão de Internet para chamadas de API
- Permissão de microfone para entrada de voz
- Configuração de segurança de rede para chamadas HTTPS
Configuração
Configuração do Manifest
Adicione as permissões necessárias ao seu AndroidManifest.xml:
Permissões em tempo de execução
No Android 6.0 (nível 23 da API) e versões posteriores, você precisa solicitar a permissão de microfone em tempo de execução:
Uso
Inicialize o SDK da ElevenLabs na sua classe Application ou atividade principal:
Inicie uma sessão de conversa com uma destas opções:
- Agente público: informe
agentId - Agente privado: informe o
conversationTokenprovisionado pelo seu backend (nunca exponha sua chave de API ao cliente).
O ElevenAgents requer acesso ao microfone. Considere explicar e solicitar permissões na interface do seu app antes do início da conversa, especialmente no Android 6.0+ , em que permissões em tempo de execução são necessárias.
Se uma ferramenta estiver configurada com expects_response=false no servidor, retorne null de execute
para não enviar o resultado da ferramenta de volta ao agente.
Agentes públicos vs. privados
- Agentes públicos (sem autenticação): inicialize com
agentIdemConversationConfig. O SDK solicita um token de conversa à ElevenLabs sem precisar de uma chave de API no dispositivo. - Agentes privados (com autenticação): inicialize com
conversationTokenemConversationConfig. Seu servidor solicita um token de conversa à ElevenLabs usando sua chave de API da ElevenLabs.
Ferramentas do cliente
Registre ferramentas do cliente para permitir que o agente chame recursos locais no dispositivo.
Quando o agente emite uma client_tool_call, o SDK executa a ferramenta correspondente e responde com um client_tool_result. Se a ferramenta não estiver registrada, onUnhandledClientToolCall será chamado e um resultado de falha será retornado ao agente (caso uma resposta seja esperada).
Visão geral dos callbacks
- onConnect - Chamado quando a conexão WebRTC é estabelecida. Retorna o ID da conversa.
- onMessage - Chamado quando uma nova mensagem é recebida. Podem ser transcrições provisórias ou finais da voz do usuário, respostas produzidas pelo LLM ou mensagens de depuração. Fornece a origem (
"ai"ou"user") e a mensagem JSON bruta. - onModeChange - Chamado quando o modo da conversa muda. É útil para indicar se o agente está falando (
"speaking") ou ouvindo ("listening"). - onStatusChange - Chamado quando o status da conversa muda (
"connected","connecting"ou"disconnected"). - onCanSendFeedbackChange - Chamado quando a possibilidade de enviar feedback muda. Ativa/desativa os botões de feedback.
- onUnhandledClientToolCall - Chamado quando o agente solicita uma ferramenta do cliente que não está registrada no dispositivo.
- onVadScore - Chamado quando a pontuação de detecção de atividade de voz muda. Varia de 0 a 1, e valores mais altos indicam maior confiança de fala.
- onAudioAlignment - Chamado quando dados de alinhamento de áudio são recebidos, fornecendo informações de tempo em nível de 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 da ElevenLabs tem o evento correspondente ativado. Você pode fazer isso na aba “Advanced” das configurações do agente no painel da ElevenLabs.
Métodos
startSession
O método startSession inicia a conexão WebRTC e começa a usar o microfone para se comunicar com o agente do ElevenLabs Agents.
Agentes públicos
Para agentes públicos (ou seja, agentes sem autenticação ativada), apenas o agentId é necessário. O ID do agente pode ser obtido pela interface da ElevenLabs.
Agentes privados
Para agentes privados, você precisa informar um conversationToken obtido pela API da ElevenLabs. Gerar esse token requer uma chave de API da ElevenLabs.
conversationToken é válido por 10 minutos.Em seguida, passe o token ao método startSession. Observe que apenas o conversationToken é necessário para agentes privados.
Opcionalmente, você pode informar um ID de usuário para identificá-lo na conversa. Pode ser seu próprio identificador de cliente. Ele será incluído nos dados de início da conversa enviados ao servidor.
endSession
Um método para encerrar a conversa manualmente. O método desconecta e encerra a conversa.
sendUserMessage
Envie uma mensagem de texto ao agente durante uma conversa ativa. Isso acionará uma resposta do agente.
sendContextualUpdate
Envia informações contextuais ao agente que não acionam uma resposta.
sendFeedback
Forneça feedback sobre a qualidade da conversa. Isso ajuda a melhorar o desempenho do agente. Use onCanSendFeedbackChange para ativar sua interface de botões de gostei/não gostei quando o feedback for permitido.
sendUserActivity
Notifica o agente sobre a atividade do usuário para evitar interrupções. Útil quando o usuário está usando o app ativamente e o agente deve pausar a fala, por exemplo, quando o usuário está digitando em um chat.
O agente pausará a fala por cerca de 2 segundos depois de receber esse sinal.
getId
Obtenha o ID da conversa.
Silenciar/reativar microfone
Observe session.isMuted para atualizar o rótulo da interface entre “Silenciar” e “Reativar microfone”.
Propriedades
status
Obtenha o status atual da conversa.
ProGuard / R8
Se você reduzir/ofuscar o código, garanta que os modelos Gson e o LiveKit sejam mantidos. Exemplo de regras (ajuste conforme necessário):
Solução de problemas
- Verifique se a permissão de microfone foi concedida em tempo de execução
- Se a reconexão travar, verifique se seu app chama
session.endSession()e se você inicia uma nova instância de sessão antes de reconectar - Em emuladores, verifique se as rotas de entrada/saída de áudio estão funcionando; dispositivos físicos tendem a se comportar de forma mais confiável
Exemplo de implementação
Para ver um exemplo de implementação, consulte o app de exemplo no repositório do SDK Android da ElevenLabs. O app demonstra:
- Conexão/desconexão com um toque
- Indicador de fala/escuta
- Botões de feedback com ativação/desativação na interface
- Indicador de digitação por
sendUserActivity() - Mensagens contextuais e do usuário a partir de uma entrada
- Botão para silenciar/reativar o microfone