Переадресация вызовов в Asterisk v1.8
Макрос обработки вызова внутренего номера с переадресацией через 10 сек.
[macro-local-redirect]
exten => s,1,Set(REDIRNUM=${DB(redirect/${ARG1})})
exten => s,n,GotoIf($[${LEN(${REDIRNUM}) > 0]?DIALTIME)
exten => s,n,Dial(${ARG2},60,tTr)
exten => s,n(DIALTIME),Dial(${ARG2},10,tTr)
exten => s,n,GotoIf($[${LEN(${REDIRNUM}) > 0]?CALLMOBILE)
exten => s,n,GotoIf($["${DIALSTATUS}" = "NOANSWER"]?NOANSWER)
exten => s,n(CALLMOBILE),Goto(rocket-blvd,${REDIRNUM},1)
exten => s,n(NOANSWER),Playback(vm-nobodyavail)
exten => s,n,Hangup()
Добавляем макрос local-redirect к номеру абонента 123
[local-users]
exten => 123,1, Macro(local-redirect,123,SIP/123)
Для управления переадресацией с телефона создаём следующий диалплан:
; Вводим на телефоне код "*00" для снятия переадресации
exten => *00,1,Answer()
exten => *00,n,Playback(beep)
exten => *00,n,NoOp(${DB_DELETE(redirect/${CALLERID(num)})})
exten => *00,n,Hangup()
; Вводим на телефоне код "*01" для установки переадресации
exten => *01,1,Answer()
exten => *01,n,Goto(redirect-mob,s,1)
[redirect-mob]
exten => s,1,Playback(privacy-prompt)
exten => s,2,Playback(beep)
exten => s,n,WaitExten()
exten => _X.,1,Set(DB(redirect/${CALLERID(num)})=${EXTEN})
exten => _X.,n,Playback(beep)
exten => _X.,n,SayDigits(${EXTEN})
exten => _X.,n,Playback(beep)
exten => _X.,n,Hangup()
Консоль CLI:
Посмотреть на какие внутренние номера установлена
переадресация, можно с помощью команды в консоли CLI:
database show redirect
Чтобы установить переадресацию, в консоли CLI вводим команду:
database put redirect 123 84951234567
Чтобы убрать переадресацию, в консоли CLI вводим команду:
database del redirect 123
Где:
redirect - название БД для переадресации
123 - внутренний номер абонента
84951234567 - тел. номер переадресации