NexaChat AjudaAbrir o painel

Ajuda › Identificação de clientes na URA

Identificação de clientes na URA

Seu PABX pode usar o NexaChat como autenticador: ao atender, a URA consulta quem está ligando e decide o caminho (por exemplo, mandar o cliente inadimplente para o Financeiro ou avisar de uma manutenção na região).

1. Crie um token com escopo próprio#

Em Integrações › API, crie um token com a permissão Somente telefonia (URA). Esse token só consulta a identificação: não lê contatos, nem atendimentos, nem nada além disso. Guarde o token no PABX, não em páginas da internet.

2. Consulte#

GET /api/v1/telephony/identify?phone=11988887777
GET /api/v1/telephony/identify?document=12345678909      (CPF digitado na URA, só números)
Authorization: Bearer nxk_...

Resposta (enxuta de propósito):

{"data":{"found":true,"first_name":"Maria","contract_status":"Ativo",
 "blocked":false,"overdue":true,"maintenance":false,
 "suggested_queue":{"id":"…","name":"Financeiro"}}}

Exemplo para Asterisk (dialplan)#

Requer curl e jq no servidor do PABX. Ajuste o domínio e o token.

[nexachat-identifica]
exten => s,1,NoOp(Identificando ${CALLERID(num)})
 same => n,Set(NEXA=https://SEU-DOMINIO/api/v1/telephony/identify)
 same => n,Set(RESP=${SHELL(curl -s -m 3 -H "Authorization: Bearer SEU_TOKEN" "${NEXA}?phone=${CALLERID(num)}")})
 same => n,Set(FOUND=${SHELL(echo '${RESP}' | jq -r '.data.found // false')})
 same => n,GotoIf($["${FOUND}" = "true"]?achou:naoachou)
 same => n(achou),Set(NOME=${SHELL(echo '${RESP}' | jq -r '.data.first_name')})
 same => n,Set(DEVE=${SHELL(echo '${RESP}' | jq -r '.data.overdue')})
 same => n,Set(MANUT=${SHELL(echo '${RESP}' | jq -r '.data.maintenance')})
 same => n,GotoIf($["${MANUT}" = "true"]?manut)
 same => n,GotoIf($["${DEVE}" = "true"]?financeiro)
 same => n,Goto(from-internal,600,1)          ; fila padrão
 same => n(manut),Playback(custom/aviso-manutencao)
 same => n,Goto(from-internal,600,1)
 same => n(financeiro),Goto(from-internal,601,1)   ; fila do financeiro
 same => n(naoachou),Read(CPF,custom/digite-cpf,11,,2,10)
 same => n,Set(RESP=${SHELL(curl -s -m 3 -H "Authorization: Bearer SEU_TOKEN" "${NEXA}?document=${CPF}")})
 same => n,GotoIf($["${SHELL(echo '${RESP}' | jq -r '.data.found // false')}" = "true"]?achou)
 same => n,Goto(from-internal,600,1)
Sempre trate falha da consulta (sem internet, tempo esgotado) mandando o cliente para a fila padrão: a URA não deve travar se o NexaChat estiver indisponível.

Issabel e FreePBX#

Coloque o contexto acima em extensions_custom.conf (FreePBX/Issabel) e aponte uma Custom Destination (nexachat-identifica,s,1) a partir da sua URA/IVR ou da rota de entrada. Crie as filas de destino (600, 601…) conforme o seu PABX e ajuste os números no exemplo.

Segurança#