Переадресация вызовов в 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 - тел. номер переадресации

Метки: , ,
Copyright © 2022

Опубликовано 01.12.2022 от admin в категории "HowTo