[AsteriskBrasil] CallerID não detectado - TDM410P

Bruno Correia brunogomescorreia em gmail.com
Segunda Maio 18 14:39:21 BRT 2015


Seguinte pessoal, estou com um problema que vi ser bastante comum uns 3 
anos atrás (pelo menos em meados de 2011~2013) pela data dos comentários 
na lista. Já li de tudo e não consegui resolver a questão de recebimento 
do callerid.

Tenho uma placa TDM410P com 4 FXO e uma linha analógica da GVT. 
Pesquisando sobre os tipos de sinalização, vi que aqui no Brasil as 
operadoras utilizam quase que na totalidade DTMF e somente a GVT 
utilizaria FSK, então em tese o Asterisk não deveria ter problemas em me 
exibir o valor do parâmetro ${CALLERID(num)} já que o dahdi não teria 
problemas em identificar o mesmo (Utilizo a versão 2.10.0.1 do Dahdi com 
Asterisk 11.17.1).

Connected to Asterisk 11.17.1 currently running on asterisk (pid = 2686)
asterisk*CLI> dahdi show version
DAHDI Version: 2.10.0.1 Echo Canceller: MG2

Então encontrei esse Troubleshooting no site da Digium -> 
http://kb.digium.com/articles/Configuration/Troubleshooting-missing-caller-ID-on-Analog-calls 
. Capturei a entrada no canal correspondente e ao escutar percebe-se 
nitidamente que o CALLERID é enviado (tinha confirmado com a operadora 
mas mesmo assim não estava confiando) e que é enviando imediatamente 
antes do primeiro ring, aparentemente sem nenhuma sinalização prévia 
(audível para nós).

Lendo em alguns lugares vi que esse padrão faz parte da sinalização 
DTMF, o que fiz? Para resolver de uma vez por todas meus problemas 
comprei um conversor DTMF -> FSK (sendo mais específico, este -> 
http://www.lojamatel.com.br/produto/conversor-dtmf-operadora-amp-gt-fsk-equipamento/554) 
e para minha surpresa comecei a capturar o CALLERID "esporadicamente", o 
intrigante é que ao capturar o áudio do canal de comunicação, o padrão 
continua da mesma maneira, o CALLERID sendo recebido imediatamente antes 
do primeiro ring e sem nenhuma "aviso prévio" (não sei se escutaria 
alguma coisa com relação a inversão de polaridade).

Minha configuração no chan_dahdi.conf está:

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

OBS.: Essa é a única configuração que consigo enxergar o CALLERID 
algumas vezes, já percebi que ele só é mostrado quando a URA atende a 
ligação no segundo ring (do ponto de vista do chamador), antes disso 
(quando uso bell/pollatiry por exemplo) ele atende após o primeiro ring 
(do ponto de vista do chamador) e simplesmente não exibe, as vezes no 
terceiro ring e também não exibe. E ainda por vezes no segundo ring, mas 
ocorre o seguinte erro:

-- Starting simple switch on 'DAHDI/1-1'
[May 18 12:57:56] ERROR[3302][C-00000028]: callerid.c:566 callerid_feed: 
No start bit found in fsk data.
[May 18 12:57:56] WARNING[3302][C-00000028]: chan_dahdi.c:1833 
my_get_callerid: Failed to decode CallerID
[May 18 12:57:56] WARNING[3302][C-00000028]: sig_analog.c:2575 
__analog_ss_thread: CallerID returned with error on channel 'DAHDI/1-1'

Mesmo praticamente em toda informação da GVT sobre sinalização afirmando 
que ela utiliza FSK (a maioria antiga, como essa -> 
http://jefferson-ryan.blogspot.com.br/2009/12/o-servico-identificador-de-chamadas-da.html) 
estou balançado sobre estarem utilizando DTMF. Digo isso, porque peguei 
o fluxo capturado no dahdi_monitor, converti em WAV e o rodar no 
multimon 
(http://skoroneos.blogspot.com.br/2009/12/solving-asterisk-dtmf-callerid-issues.html) 
para extrair as informações do áudio, utilizei os parâmetros para 
sinalização DTMF e consegui ver o CALLERID em texto plano corretamente.

Muito se fala sobre o problema em detectar CALLERID em DTMF no Asterisk 
desde a época do Zaptel, o Dahdi ainda tem esse problema? Lendo 
encontrei o link abaixo, mas as informações são antigas.
https://issues.asterisk.org/jira/browse/DAHLIN-4

Ainda sem me conformar comprei um identificador de chamada para testar 
se a origem é sempre reconhecida já que poderia ser algum problema na 
minha operadora, (sendo mais específico, este -> 
http://www.lojamatel.com.br/produto/identificador-de-chamadas-maxtel-zk20/335) 
mas para minha não surpresa, a resposta foi afirmativa para o 
recebimento, em todas as chamadas aparece o CALLERID corretamente, ou 
seja, de alguma maneira deve ter como idenficá-lo sem erros no Asterisk, 
agradeceria muito se alguém que conhece a solução ou que já passou por 
isso pudesse me ajudar.

Resumindo:

Asterisk -> 11.17.1
DAHDI -> 2.10.0.1
Placa -> TDM410P 4FXO Similar 
(http://www.lojamundi.com.br/tdm410p-fxo-placa-asterisk.html)
Módulo -> wctdm24xxp

Captura do Canal, CALLERID aparece na variável ${CALLERID(num)}

https://colaborar.us/FUNCIONOU.wav

Captura do Canal, CALLERID NÃO aparece na variável ${CALLERID(num)}

https://colaborar.us/NAO_FUNCIONOU.wav

OBS.: No áudio que funcionou, você nota um ruído após o segundo ring e 
logo antes do atendimento pela URA, SEMPRE que o CALLERID aparece, o 
perfil do áudio é desta maneira, segue parte com "visual" de ambos no 
Audacity e destaque da parte que comentei:

https://colaborar.us/comparacao_func_nfunc.png


--- Arquivos de configuração

--/etc/modprobe.d/dahdi.conf--
# You should place any module parameters for your DAHDI modules here
# Example:
#
# options wctdm24xxp latency=6
options wctdm24xxp opermode=BRAZIL
--/etc/modprobe.d/dahdi.conf--

--/etc/asterisk/chan_dahdi.conf--
[channels]
language=pt_BR
usecallerid=yes
usercallingpress=yes
cancallforward=yes
hidecallerid=no
callreturn=yes
echocancel=yes
callwaiting=yes
transfer=yes
canpark=yes

rxgain=0.0
txgain=0.0

cidsignalling=bell
cidstart=ring

#include /etc/asterisk/dahdi-channels.conf
--/etc/asterisk/chan_dahdi.conf--

--/etc/asterisk/dahdi-channels.conf--
; Span 1: WCTDM/0 "Wildcard TDM410P" (MASTER)
;;; line="1 WCTDM/0/0 FXSKS"
signalling=fxs_ks
callerid=asreceived
group=0
context=from-pstn
channel => 1
;callerid=
;group=
context=default
...
--/etc/asterisk/dahdi-channels.conf--

--/etc/dahdi/system.conf--
# Autogenerated by /usr/sbin/dahdi_genconf on Fri Jan  9 03:51:31 2009
# If you edit this file and execute /usr/sbin/dahdi_genconf again,
# your manual changes will be LOST.
# Dahdi Configuration File
#
# This file is parsed by the Dahdi Configurator, dahdi_cfg
#
# Span 1: WCTDM/0 "Wildcard TDM410P" (MASTER)
fxsks=1
echocanceller=mg2,1
fxsks=2
echocanceller=mg2,2
fxsks=3
echocanceller=mg2,3
fxsks=4
echocanceller=mg2,4

# Global data

loadzone        = br
defaultzone     = br
--/etc/dahdi/system.conf--


Mais detalhes sobre a lista de discussão AsteriskBrasil