Já falamos muitas vezes em nosso blog sobre como é fácil integrar o serviço de consulta a portabilidade (ATI) em servidores PABX Asterisk, porém, ainda não haviamos escrito um artigo especificamente para servidores puramente Asterisk, portanto, neste post você verá as configurações necessárias para os dois arquivos (sip.conf e extensions.conf). Em apenas 4 passos seu asterisk já poderá contar com a consulta a portabilidade numérica (ATI).
Primeiro vamos criar o tronco SIP apontando para o servidor de consulta a portabilidade (ATI) utilizando o usuário e senha previamente criados, caso você ainda não possua uma conta no serviço ATI, acesse sippulse.com/ati, na aba Sua Conta, e preencha o formulário de cadastro agora mesmo e ganhe 500 consultas gratuitas para realizar testes e homologação no seu PABX.
1) Criando o tronco SIP
Para configurar o tronco SIP para utilizar o ATI é necessário informar os dados de conexão em sip.conf. Portanto, abra o arquivo sip.conf para edição (vim /etc/asterisk/sip.conf) e adicione as seguintes informações:
[general]
promiscredir=no
[portabilidade]
type=peer
fromdomain=port.sippulse.com
host=port.sippulse.com
port=5060 ;OU 5080
defaultuser=SEU USUÁRIO ATI ;PARA ASTERISK 1.6 OU SUPERIOR
username=SEU USUÁRIO ATI ;PARA ASTERISK 1.4
fromuser=SEU USUÁRIO ATI
secret=SUA SENHA ATI
context=fromredirect ; CONTEXTO ONDE ESTARÃO AS REGRAS TRATANDO O RETORNO DO ATI
insecure=invite,port
qualify=no
Após inserir os dados da sua conta, salve as alterações (:wq)
2) Criando rotas para o ATI
Agora iremos editar o plano de discagem em extensions.conf, para que seu Asterisk encaminhe as chamadas de celular primeiro para o ATI.
Os números a serem consultados no ATI devem ser enviados no padrão TN (DDD+NÚMERO), portanto caso os usuários efetuem chamadas discando em outro padrão, o plano de discagem deve fazer o tratamento do número antes de encaminhá-lo ao ATI.
Abra em modo de edição o arquivo extensions.conf (vim /etc/asterisk/extensions.conf) e adicione as seguintes informações:
[from-internal]
;para chamadas locais deve-se adicionar seu código de área (DDD)
exten => _[6-9]XXXXXXX,1,Dial(SIP/portabilidade/48${EXTEN}) ;alterar 48 pelo seu DDD
;Consultas ATI
exten => _ZZ[6-9]XXXXXXX,1,Dial(SIP/portabilidade/${EXTEN})
;Ligações para localidades com o nono dígito
exten => _ZZ9[6-9]XXXXXXX,1,Dial(SIP/portabilidade/${EXTEN})
3) Tratando o retorno do ATI
Neste exemplo estamos utilizando uma placa Khomp, verifique com seu fornecedor como configurar sua terminação GSM em uma central Asterisk.
Agora criaremos o contexto [from-redirect] para tratar o retorno do ATI. Como pode ser observado abaixo estamos utilizando a aplicação NoCDR() para evitar o bilhete duplicado. Adicione as seguintes regras:
Primeiramente iremos definir o código CSP das operadoras. Altere os valores de acordo com o código utilizado em sua região:
TIM=041
CLARO=021
VIVO=015
OI=031
NEXTEL=041
;Obs.: Muitos utilizam a Tim para terminar ligações para Nextel.
[from-redirect]
;TIM (55341)
exten => _55341ZZ9[6-9]XXXXXXX,1,NoCDR()
exten => _55341ZZ9[6-9]XXXXXXX,n,Dial(Khomp/B1C0/${TIM}${EXTEN:5})
exten => _55341ZZ[6-9]XXXXXXX,1,NoCDR()
exten => _55341ZZ[6-9]XXXXXXX,n,Dial(Khomp/B1C0/${TIM}${EXTEN:5})
;CLARO (55321)
exten => _55321ZZ[6-9]XXXXXXX,1,NoCDR()
exten => _55321ZZ[6-9]XXXXXXX,n,Dial(Khomp/B1C1/${CLARO}${EXTEN:5})
exten => _55321ZZ9[6-9]XXXXXXX,1,NoCDR()
exten => _55321ZZ9[6-9]XXXXXXX,n,Dial(Khomp/B1C1/${CLARO}${EXTEN:5})
;VIVO (55315 | 55320 | 55323)
exten => _55315ZZ[6-9]XXXXXXX,1,NoCDR()
exten => _55315ZZ[6-9]XXXXXXX,n,Dial(Khomp/B1C2/${VIVO}${EXTEN:5})
exten => _55315ZZ9[6-9]XXXXXXX,1,NoCDR()
exten => _55315ZZ9[6-9]XXXXXXX,n,Dial(Khomp/B1C2/${VIVO}${EXTEN:5})
exten => _55320ZZ[6-9]XXXXXXX,1,NoCDR()
exten => _55320ZZ[6-9]XXXXXXX,n,Dial(Khomp/B1C2/${VIVO}${EXTEN:5})
exten => _55320ZZ9[6-9]XXXXXXX,1,NoCDR()
exten => _55320ZZ9[6-9]XXXXXXX,n,Dial(Khomp/B1C2/${VIVO}${EXTEN:5})
exten => _55323ZZ[6-9]XXXXXXX,1,NoCDR()
exten => _55323ZZ[6-9]XXXXXXX,n,Dial(Khomp/B1C2/${VIVO}${EXTEN:5})
exten => _55323ZZ9[6-9]XXXXXXX,1,NoCDR()
exten => _55323ZZ9[6-9]XXXXXXX,n,Dial(Khomp/B1C2/${VIVO}${EXTEN:5})
;OI (55331 | 55335 | 55314)
exten => _55331ZZ[6-9]XXXXXXX,1,NoCDR()
exten => _55331ZZ[6-9]XXXXXXX,n,Dial(Khomp/B1C3/${OI}${EXTEN:5})
exten => _55331ZZ9[6-9]XXXXXXX,1,NoCDR()
exten => _55331ZZ9[6-9]XXXXXXX,n,Dial(Khomp/B1C3/${OI}${EXTEN:5})
exten => _55335ZZ[6-9]XXXXXXX,1,NoCDR()
exten => _55335ZZ[6-9]XXXXXXX,n,Dial(Khomp/B1C3/${OI}${EXTEN:5})
exten => _55335ZZ9[6-9]XXXXXXX,1,NoCDR()
exten => _55335ZZ9[6-9]XXXXXXX,n,Dial(Khomp/B1C3/${OI}${EXTEN:5})
exten => _55314ZZ[6-9]XXXXXXX,1,NoCDR()
exten => _55314ZZ[6-9]XXXXXXX,n,Dial(Khomp/B1C3/${OI}${EXTEN:5})
exten => _55314ZZ9[6-9]XXXXXXX,1,NoCDR()
exten => _55314ZZ9[6-9]XXXXXXX,n,Dial(Khomp/B1C3/${OI}${EXTEN:5})
;NEXTEL (55377 | 55351)
exten => _55377ZZ9[6-9]XXXXXXX,1,NoCDR()
exten => _55377ZZ9[6-9]XXXXXXX,n,Dial(Khomp/B1C0/${NEXTEL}${EXTEN:5})
exten => _55351ZZ[6-9]XXXXXXX,1,NoCDR()
exten => _55351ZZ[6-9]XXXXXXX,n,Dial(Khomp/B1C0/${VIVO}${EXTEN:5})
exten => _55351ZZ9[6-9]XXXXXXX,1,NoCDR()
exten => _55351ZZ9[6-9]XXXXXXX,n,Dial(Khomp/B1C0/${VIVO}${EXTEN:5})
;NUMERO NÃO ENCONTRADO
exten => _55000.,1,Progress()
exten => _55000.,n,Playback(invalid)
exten => _55000.,n,Hangup()
4) Carregando as configurações
Pare carregar as configurações que acabamos de fazer entre na CLI> do Asterisk (# rasterisk) e recarregue as seguintes configurações:
# rasterisk
CLI> sip reload
CLI> dialplan reload
Pronto, agora seu Asterisk já deve estar encaminhando as chamadas para telefones móveis pelo tronco SIP do ATI.
Caso a consulta não esteja sendo efetuada verifique seu plano de discagem, observando se não há alguma outra regra que possa corresponder ao número discado.