[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