Asterisk – CallerID

Este post tem por objetivo demonstrar como realizar a identificação de chamadas através do Asterisk usando uma placa analógica FXO.

A maioria das operadoras no Brasil utiliza sinalização Padrão do Asterisk, porem a Net, VIVO e a OI utilizam outro tipo de sinalização. A boa notícia é que podemos realizar essa identificação sem a necessidade de conversor DTMF para FXS como muitos fóruns sugerem.

Ambiente

  • Asterisk  1.8.26;
  • DAHDI 2.9.2;
  • Placa FXO X100P;
  • NetFone Arris TG862

 Troubleshooting

No Asterisk o módulo responsável pela identificação do CALLERID é o chan_dahdi e normalmente o seu arquivo de configuração está localizado em /etc/asterisk/chan_dahdi.conf e detém 3 variáveis que controlam o funcionamento dessa identificação:

  • usecallerid: Define se o Asterisk deve ou não o caller ID, “yes” ou “no” são as unicas opções disponíveis
  • cidsignalling: Determina o tipo de sinalização usada para o caller ID. As sinalizações suportadas pelo Asterisk são:
    bell: bell202 usada nos Estados Unidos (padrão do Asterisk)
    v23: v23 usada no Reino Unido
    v23_jp: v23 usado no Japão
    dtmf: DTMF usado por Dinamarca, Suécia, Holanda e por algumas operadoras aqui no Brasil (NET, VIVO e OI)
  • cidstart: Determina o sinal de início do caller ID. As opções suportadas pelo Asterisk São:
    ring: O início é ao início sinal ring (padrão do Asterisk)
    polarity: A inversão de polaridade sinaliza o início
    polarity_IN: A inversão de polaridade sinaliza o início, a detecção de tom de discagem DTMF na Índia
    dtmf: O caller ID é recebido através de tons dtml que ocorrem antes do sinal ring.

Se o cidstart for configurado como dtmf, o nível do sinal da linha precisa ser ajustado para a correta identificação dos tons DTMF. Este ajuste ocorre através do parâmetro dtmfcidlevel. O padrão deste padâmetro é 256, porém pode ser ajustado conforme sua necessidade, quanto maior o valor menor será a detecção de falsos tons DTMF.

Segue abaixo um exemplo dessa configuração no arquivo /etc/asterisk/chan_dahdi.conf.

[channels]
...
usecallerid=yes
cidsignalling=bell
cidstart=ring
...

Nota: “…” indica outras configurações não relacionadas a identificação do caller ID.

Identificando o caller ID em NetFone, VIVO e OI

Segue abaixo o trecho de parâmetros do arquivo o /etc/asterisk/chan_dahdi.conf para que ocorra a identificação correta do caller ID

[channels]
...
usecallerid=yes
cidsignalling=dtmf
cidstart=dtmf
dtmfcidlevel=7640
...

Exemplo de configuração, e log na console do Asterisk

Segue abaixo um trecho do arquivo extensions.conf

exten = s,1,NoOP(Chamada entrando ${CALLERID(num)})
exten = s,n,Dial(SIP/2000,15,r)

Saída em tela ao entrar a ligação. Nível verbose do asterisk definido como 4.

 == Starting DTMF CID detection on channel 1
 -- Starting simple switch on 'DAHDI/1-1'
 -- Executing [s@default:1] NoOp("DAHDI/1-1", "Chamada entrando 04198xxxxxx") in new stack
 -- Executing [s@default:2] Dial("DAHDI/1-1", "SIP/2000,15,r") in new stack

Fonte para Troubleshooting

http://kb.digium.com/articles/Configuration/Troubleshooting-missing-caller-ID-on-Analog-calls

Helvio Junior

Helvio Junior

Gerente de Infraestrutura de TI e Telecomunicações em Fael, uma empresa do grupo Apollo Global
Especialista em redes e segurança de sistemas pela PUC-PR, consultor de redes e segurança da informação. CEO e CTO da SafeTrend, com um produto de single sign-on e gestão de identidades e acessos. Especialista em Segurança da Informação, Controle de Acesso, ambientes e ferramentas de segurança, telefonia VoIP com Asterisk, administração de redes em ambientes híbridos e realização de penetration test (pentest).
Helvio Junior

Últimos posts por Helvio Junior (exibir todos)

7 respostas
  1. felipe
    felipe says:

    Olá Helvio,

    Antes de mais nada, obrigado pela gentileza de compartilhar conhecimento. Estou entrando agora no mundo Asterisk e estou pesquisando como conectar uma linha que já tenho do NET Fone da operadora NET. Está um pouco confuso entender. Não tenho claro se preciso comprar uma placa FXO ou se é preciso fazer alguma outra coisa.

    Agradecerei muito a gentileza de compartilhar algumas orientações.

    Grande abraço,

    Felipe.

    Responder
  2. Alexsander Simão do Bomfim
    Alexsander Simão do Bomfim says:

    Olá amigo,

    Desde já quero expressar minha gratidao por sua contribuicao pois foi de grande ajuda, finalmente consegui fazer funcionar as identificacoes de chamadas pelo o DAHDI FXO, mais uma vez obrigado!

    Responder
  3. Luiz Balbino
    Luiz Balbino says:

    Bom dia! Helvio.

    Obrigado pelo seus posts.
    Tenho uma linha GVT no SPA400 da Linksys. As chamadas recebidas por ele, não são identificadas pelo Elastix.
    Tenho algumas perguntas, estas configurações que descreve acima, são validas para ele também?
    O que mudar na configuração do sip.conf, extensions_custon.conf e chan_dahdi.conf?
    Terei que comprar o conversor?

    Muito Obrigado pela sua atenção…..

    Responder
  4. Diego Bernardo
    Diego Bernardo says:

    Boa tarde Helvio Junior,

    Tenho uma situação idêntica a esta, no entanto, todas tentativas que fiz não obtive sucesso. Minha placa é um Digium TDM410 4 Portas, com modulo FXO. Estou usando a versão 2.5 do Elastix. Minha linha é da NET.
    Utilizando a linha diretamente no aparelho de telefone a bina funciona normalmente, no elastix ele só me mostra desconhecido.
    Com estas funções que você postou, a minha ura não funciona, tive que mudar o cidstart=dtmf para cidstart=polarity, mas continuei sem identificar as chamadas
    Você tem alguma ideia do que possa ser ?

    Responder
  5. Luis Felipe
    Luis Felipe says:

    Caro Helvio, antes de mais nada, parabéns pelo post esclarecedor. Um dos únicos na internet a respeito do tema. Eu estou tentando usar o asterisk 11 com uma linha do Net (NetFone), porém não consigo contornar a questão do eco. A minha placa é uma original Digium TDM410P e toda ligação que eu faço fica com muito eco. Antigamente eu usava uma linha analógica da Vivo e a mera habilitação do cancelador de eco OSLEC era suficiente. Não se ouvia praticamente eco algum. Agora, com a linha da Net, o eco ficou absurdo. Você já configurou o PBX com a linha da Net e teve sucesso apenas com o cancelador de eco via software ou só resolve mesmo com o cancelador via hardware? Se tiver alguma dica, agradeço! Abs.

    Responder
  6. Julio
    Julio says:

    Agradeço pelo post, me foi de excelente ajuda, a alguns dias estava quebrando a cabeça e o asterisk não identificava a chamada, de uma linha da OI.

    Responder

Deixe uma resposta

Want to join the discussion?
Feel free to contribute!

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios são marcados com *