Подстановка caller-id и ротация номеров внутри провайдера
Администратор, 12.03.2020Таких провайдеров не так много, например на данный момент мы можем подтвердить, что такую услугу предоставляет Powertelecom, и частично МТТ.
Хотим представить вашему вниманию диалплан на астериск, где предполагается, что система будет спрашивать какой caller-id вы хотите подставить, и в случае, если он 11 символов, отправит его на вызов в провайдера:
exten => _9XXXX.,1,NoOp(Outgoing call from operator ${CALLERID(num)} to company ${EXTEN:1})
same => n,Answer()
same => n,NoOp(lets change callerid)
same => n,Playback(/var/lib/asterisk/sounds/input)
same => n(again),Read(CLIENT-CALLERID,,11)
same => n,GotoIF($["${LEN(${CLIENT-CALLERID})}"="11"]?:again)
same => n,NooP(CHECK CALLERID ${CLIENT-CALLERID:1}"="${EXTEN:2}")
same => n,GotoIF($["${CLIENT-CALLERID:1}"="${EXTEN:2}"]?again:)
same => n,Set(CALLERID(num)=${CLIENT-CALLERID})
same => n,Dial(SIP/powertelecom/${EXTEN:1},60,T)
same => n,Hangup()
Также вам будет интересен другой вариант, где нужно не вводить самому желаемый caller-id, а система сама выбирала из доступных номеров:
Создадим в /etc/asterisk/scripts/callerid.py следующего содержания:
import random
numberslist = ['444', '333', '123', '456', '789', '789', '789', '789', '789', '789', '789', '789', '789', '789', '789', '789', '789', '789', '789', '789' ]
print(numberslist[random.randint(0,(len(numberslist)-1))])
Где вы вместо трехзначных цифр вы сможете подставить свои номера для отправки caller-id в провайдера.
Затем в диалплане asterisk добавим следующую строку при наборе номера:
exten => _XXX.,n,Set(CALLERID(num)=${SHELL(python3 /etc/asterisk/sctripts/callerid.py)})
Все успешно будет работать, благодарим за внимание.