Часто ли вам звонят со скрытых номеров?
Вас это бесит? Тогда текст ниже как раз для вас)
На помощь приходит замечательное приложение в самом Asterisk, а именно:
PrivacyManager([maxretries][,minlength[,options[,context]]])
maxretries – К-во попыток ввести правильный номер(по умолчанию 3)
minlength – Минимальное к-во цифр в номере(по умолчанию 10)
options – Позиция зарезервирована под опции.
context – Контекст в котором проверят данный callerid по шаблонам.
Если не пришел CallerID, то запрашивает, если же Callerid присутствует, то приложение безмолвствует). Во время выполнения приложения выставляется переменная ${PRIVACYMGRSTATUS}, если пользователь ввел CID который удовлетворил систему – то выставляется статус выполнения SUCCESS, если же нет – то FAILED.
Сразу хочу отметить ложку дегтя в виде anonymous, потому что по факту номер установлен, нам нужно обрабатывать и эту ситуацию:
exten => 000,1,progress()
same => n,Gotoif($[${CALLERID(num)}=anonymous]?:work)
same => n,Set(CALLERID(num)=)
same => n,PrivacyManager(1,3)
same => n,GotoIf($["${PRIVACYMGRSTATUS}" = "FAILED"]?failed)
same => n(work),Dial(SIP/u000,40,xXtT)
same => n,NoOp(${HANGUPCAUSE})
same => n(failed),Hangup()
https://wiki.asterisk.org/wiki/display/AST/Fighting+Empty+Caller+ID
http://the-asterisk-book.com/1.6/applikationen-privacymanager.html