• Использование режима DND с возможностью переадресации на Asterisk 16 + FreePBX 14

    Многие пользователи просили сделать возможность переадресации вызовов на мобильный при установке DND (do not disturb) режима на рабочем телефоне. Так как DND режим не предполагает переадресации, то пришлось свою обработку для этого режима.

     

    Все ниже описанные действия производились на Asterisk 16 + FreePBX 14.

     

    В итоге добавлена возможность активации\де-активации DND режима по звонку самому себе (на всякий слушай, вдруг кому будет так удобней), возможность задание переадресации для конкретных внутренних номеров (не всем пользователям нужно такое поведение DND режима).

     

    В файл /etc/asterisk/extentions_custom.conf добавляем (постарался подробно описать что делает и как работают секции):

    [from-internal-custom]
    include => dnd-on-off
    include => dnd-transfer-check
    
    exten => _XXXX,1,GoSub(dnd-on-off,s,1,(${EXTEN}))
    exten => _XXXX,n,GoSub(dnd-transfer-check,s,1,(${EXTEN}))
    exten => _XXXX,n,Goto(from-internal-additional,${EXTEN},1)
    
    
    [dnd-on-off]
    ; --------------------------------------------------------------------------
    ; Включение\Отключение режима DND по звонку самому себе
    ;
    ; -- Инструкция:
    ; При звонке на свой внутренний номер, включается или отключается режим DND.
    ; --------------------------------------------------------------------------
    ;
    exten => s,1,NoOp(DND - Activate\Deactivate)
    exten => s,n,ExecIf($["${CALLERID(number)}" = "${ARG1}"]?Goto(app-dnd-toggle,*76,1))
    exten => s,n,Return()
    
    
    [dnd-transfer-check]
    ; --------------------------------------------------------------------------------------------
    ; Задание необходимой переадресации на мобильный телефон в DND режиме.
    ;
    ; -- Инструкция:
    ; В условии REGEX("^()" в () указываем внутренние номера для которых необходимо перенаправлять
    ; входящие на мобильные при активном режиме DND. Прим. - REGEX("^(1100|1101)"
    ; --------------------------------------------------------------------------------------------
    ;
    exten => s,1,NoOp(DND transfer call)
    exten => s,n,ExecIf($[${REGEX("^(1100)" ${ARG1})}]?GoSub(dnd-transfer-call,s,1(${ARG1})))
    exten => s,n,Return()
    
    
    [dnd-transfer-call]
    ; ------------------------------------------------------------------------------------------------
    ; Проверка на включенный режим DND и указание номера для переадресации.
    ;
    ; -- Инструкция:
    ; Под указателем "insert DND transfer rule below" добавляем строку вида:
    ; exten => s-XXXX,1,Goto(outbound-allroutes,8XXXXXXXXXX,1), где вместо s-XXXX указываем внутренний 
    ; номер абонента, а вместо 8XXXXXXXXXX номер мобильного для переадресации.
    ;
    ; Прим. - exten => s-1100,1,Goto(outbound-allroutes,8800000000,1)
    ; ------------------------------------------------------------------------------------------------
    ;
    exten => s,1,NoOp(Transfer Call on DND activate)
    exten => s,n,GotoIf($["${DB(DND/${ARG1})}" != ""]?s-${ARG1},1)
    exten => s,n,Return()
    
    ; insert DND transfer rule below
    ;exten => s-XXXX,1,Goto(outbound-allroutes,8XXXXXXXXXX,1)

    Читать далее…

    БесполезноСлабоватоПриемлемоОтличноПревосходно (Еще нет оценок)
    Загрузка...
© IT-блог Жаконды All Rights Reserved.
Яндекс.Метрика