Я настраиваю VoIP-сервер Asterisk (с помощью FreePBX), и мне нужно определить все числа, которые заканчиваются определенным шаблоном.
Это необходимо для целей маршрутизации, то есть для определения, исходят ли они из исходящей магистрали или внутреннего телефона.
Например, местный номер 777777 может отображаться как 777777, 01222777777, 441222777777, 00441222777777 или +441222777777.
Несколько поисков не помогли мне разобраться. Как это сделать?
Если вы работаете с FreePBX, вам, скорее всего, придется пойти под капот и добавить контекст, как показано ниже, в /etc/asterisk/extensions_custom.conf
[check-ending]
exten => _!,1,GotoIf($[${EXTEN:-6} = 777777]?gotcha)
exten => _!,n,Goto(inbound)
exten => _!,n,Hangup()
exten => _!,n(gotcha),Goto(inbound-from-777777)
exten => _!,n,Hangup()
exten => h,1,Hangup()
Теперь, если в итоге осталось 6 семерок, колл перейдет в Попался ярлык и будет перенаправлен на inbound-from-777777, иначе он пойдет дальше по диалплану и будет перенаправлен на входящий.
Тогда беги asterisk -x "dialplan reload"
чтобы загрузить новый конфиг в звездочку. После этого в UI вам нужно будет установить окончание чека контекст в качестве получателя вызова для магистрали (как вы обычно это делаете).