Documentacao de interligacao do Asterisk ao ErixVoice

Guia passo a passo para conectar qualquer servidor Asterisk ao portal ErixVoice e ativar o atendimento telefonico com Inteligencia Artificial (ASR + TTS + LLM).

Inicio › Documentacao

1 Visao geral da integracao

O AgenteIA conecta o seu Asterisk ao portal ErixVoice. O portal concentra as tecnologias de ASR (reconhecimento de voz), TTS (sintese de voz) e LLM (modelo de linguagem) e realiza todo o trabalho de comunicacao entre o Asterisk e a Inteligencia Artificial.

Fluxo da chamada:

  1. Uma chamada entra no contexto agenteia do dialplan do Asterisk.
  2. O Asterisk solicita ao portal ErixVoice uma sessao de conversa usando o AGENT_ID e a API_KEY.
  3. O portal devolve um endereco de sessao e o Asterisk abre um AudioSocket com o portal (padrao, porta 4573).
  4. O ErixVoice escuta (ASR), processa e decide (LLM) e responde por voz (TTS) em tempo real.
  5. A chamada pode ser encerrada ou transferida para atendimento humano via contexto de transferencia.

2 Requisitos minimos

ItemExigencia
AsteriskAsterisk 13+ com modulos curl, func_curl e res_http
AudioSocketO modulo res_audiosocket precisa estar carregado
ProtocoloComunicao com o portal via HTTPS (API REST) e AudioSocket na porta 4573
CredenciaisAGENT_ID e API_KEY fornecidos na ativacao
ExercitoPBX Erix Nuclear, Erix Multitenant ou qualquer distribuicao Asterisk

Verifique os modulos com: asterisk -rx "module show like curl" e asterisk -rx "module show like audiosocket".

3 Parametros de conexao

ParametroDescricao
PBXERIX_URLEndereco do portal ErixVoice (ex.: https://erixvoice.pbxerix.com.br)
API_KEYChave de acesso do portal. Identifica e autoriza o seu PABX.
AGENT_IDNumero identificador do agente criado no portal.
NOMENome exibido pelo agente (parametrizado no portal).
EXTRA1..6Variaveis de contexto enviadas ao agente (contrato, convenio, origem...).
Porta 4573Porta do AudioSocket para transporte do audio da conversa.

4 extensions.conf

Adicione o bloco abaixo ao seu /etc/asterisk/extensions.conf. Substitua os valores vazios pelas suas credenciais.

/etc/asterisk/extensions.conf
; ==========================================================
; AGENTEIA — Atendimento telefonico com Inteligencia Artificial
; ==========================================================

[general]
PBXERIX_URL=                                ; ex: https://erixvoice.pbxerix.com.br
API_KEY=                                    ; sua chave de acesso do portal ErixVoice
AGENT_ID=                                   ; id do agente (ex: 12)


; Contexto que recebe as chamadas do agente IA
[agenteia]
exten => _X.,1,Answer()
same => n,Set(NOME=jroberto carlos)          ; nome do atendente / assistente
same => n,Set(EXTRA1=variavel 1)            ; variaveis extras (contrato, convenio...)
same => n,Set(EXTRA2=${EXTRA2})
same => n,Set(EXTRA3=${EXTRA3})
same => n,Set(EXTRA4=${EXTRA4})
same => n,Set(EXTRA5=${EXTRA5})
same => n,Set(EXTRA6=${EXTRA6})
same => n,Set(NOME=${URIENCODE(${NOME})})
same => n,Set(EXTRA1=${URIENCODE(${EXTRA1})})
same => n,Noop(${PBXERIX_URL}.....${AGENT_ID}.......${API_KEY})
same => n,Set(CTX=${CURL(${PBXERIX_URL}/v1/talk/asterisk/call/${AGENT_ID}?from=${CALLERID(num)}&NOME=${NOME}&EXTRA1=${EXTRA1}&EXTRA2=${EXTRA2}&EXTRA3=${EXTRA3}&EXTRA4=${EXTRA4}&EXTRA5=${EXTRA5}&EXTRA6=${EXTRA6}&x-api-key=${API_KEY})})
same => n,Set(PBXERIX_HOST=${CUT(PBXERIX_URL,/,3)})
same => n,Noop(${PBXERIX_HOST})
same => n,AudioSocket(${CTX},${PBXERIX_HOST}:4573)
same => n,Hangup()

; Transferencia para atendimento humano (exemplo)
[transfer-agente-voice]
exten => _.,1,Noop(######## TRANSFER AGENTE VOICE ########)
same => n,Dial(SIP/6000,30,tT)
same => n,Hangup()

Como direcionar uma chamada para o agente: no seu contexto de entrada, use algo como exten => s,1,Goto(agenteia,s,1) ou Goto(agenteia,123,1) para aplicar o agente em um ramal ou DDI especifico.

5 manager.conf

O portal ErixVoice utiliza a interface AMI para gerenciamento e eventos da chamada.

/etc/asterisk/manager.conf
; Usuario da interface de gerenciamento (AMI)
[aiagent]
secret = sua-senha
read = all
write = all

; Boa pratica: restrinja o acesso somente ao IP do portal
permit = 10.0.0.1   ; EXEMPLO — substitua pelo IP real do portal ErixVoice
deny   = 0.0.0.0/0.0.0.0

6 ari.conf

A API Rest (ARI) permite ao portal controlar e monitorar a sessao em tempo real.

/etc/asterisk/ari.conf
; Usuario da API Rest (ARI) para controle de chamadas
[aiagent]
type = user
read_only = no
password = sua-senha

7 http.conf

Habilite o servidor HTTP interno do Asterisk (usado pelo ARI).

/etc/asterisk/http.conf
; Habilita o servidor HTTP interno do Asterisk
; (precisa apenas se ainda nao estiver ativo)
[general]
enabled = yes
bindaddr = 0.0.0.0
bindport = 8088

Em producao, recomendamos restringir o bindaddr ou proteger a porta 8088 no firewall para que somente o portal ErixVoice acesse.

8 Reiniciando o Asterisk

Apos salvar os arquivos, aplique as alteracoes:

Terminal (SSH)
# Aplicar sem derrubar chamadas ativas
asterisk -rx "core reload"

# Ou reinicio completo (se preferir)
asterisk -rx "core restart now"

# Verificar se os modulos carregaram
asterisk -rx "module show like curl"
asterisk -rx "module show like audiosocket"

9 Boas praticas de seguranca

  • Use senhas fortes e unicas para manager.conf e ari.conf (nunca reutilize).
  • Restrinja o acesso AMI e ARI com permit/deny para o IP do portal ErixVoice.
  • No firewall, libere as portas 4573 (AudioSocket) e 8088 (HTTP) somente para o endereco do portal.
  • Nunca exponha API_KEY, AGENT_ID ou senhas em repositorios publicos, logs ou arquivos web.
  • Utilize HTTPS no portal (PBXERIX_URL com https://).
  • Revise periodicamente as credenciais e revogue chaves nao utilizadas no portal ErixVoice.
  • Monitore o log do Asterisk: tail -f /var/log/asterisk/messages durante os primeiros testes.
  • Esteja conforme a LGPD em relacao a gravacao e ao tratamento de dados de voz dos chamadores.

10 Solucao de problemas

SintomaCausa provavel / acao
Chamada cai imediatamenteVerifique PBXERIX_URL, API_KEY e AGENT_ID no [general].
AudioSocket nao conectaConfirme que res_audiosocket esta carregado e que a porta 4573 esta liberada.
Erro de HTTP no dialplanCheque se func_curl esta ativo e se o URL do portal responde em HTTPS.
AMI/ARI sem respostaConfirme http.conf (porta 8088) e o usuario/senha em ari.conf.
Silencio na chamadaTeste o caminho de audio, codecs G.711/Opus e o NAT/portas de RTP do servidor.
Transferencia nao funcionaAjuste o contexto transfer-agente-voice para o ramal/fila corretos.

Ainda com problemas? Fale conosco no WhatsApp (11) 3135-7414 ou envie um e-mail para contato@pbxerix.com.br.