Чтобы определялся номер, с аналоговых линий, нужно в контексте для каждого Trunk канала Dahdi указать:
usecallerid = yes
hidecallerid=no
cidstart = ring
cidsignalling = bell
callerid = asreceived
asreceived — означает что номер нужно передавать в виде, в каком он есть.
Я использовал китайскую плату TDM410P.
Также необходимо подать заявку оператору телефонной связи чтобы они включили не старый АОН, а CallerID, то есть FSK (Bellcore).
Я написал сообщение в техническую поддержку на сайта Укртелеком, и на следующий день на стационарный телефон перезвонил местный инженер.
Мы были подключены к АТС SI 3000, спустя еще день с нескольких попыток нам все же включили FSK и номера начали определяться еще до снятия трубки, мобильные, стационарные и т.д., хотя иногда бывали случаи что номер был не определен.
Если у провайдера телефонной связи не включен FSK, то в консоли Asterisk при звонках можно увидеть ошибки:
WARNING[21790][C-00000000]: chan_dahdi.c:1842 my_get_callerid: Failed to decode CallerID
ERROR[21790][C-00000000]: callerid.c:566 callerid_feed: No start bit found in fsk data.
Записать для анализа звук с канала телефонной линии можно командой:
dahdi_monitor 1 -v -r streamrx.wav
Также можно включить(on)/отключить(off) режим отладки звонков открыв консоль Asterisk и набрав команду:
sudo asterisk -rvvvvvv
sip set debug on
sip set debug off
Сгенерированный /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
;;; line="2 WCTDM/0/1 FXSKS"
signalling=fxs_ks
callerid=asreceived
group=0
context=from-pstn
channel => 2
callerid=
group=
context=default
;;; line="3 WCTDM/0/2 FXSKS"
signalling=fxs_ks
callerid=asreceived
group=0
context=from-pstn
channel => 3
callerid=
group=
context=default
;;; line="4 WCTDM/0/3 FXSKS"
signalling=fxs_ks
callerid=asreceived
group=0
context=from-pstn
channel => 4
callerid=
group=
context=default