Инструменты пользователя

Инструменты сайта


faq:mango-redirect

Манго офис и переадресация вызовов

Резервный маршрут

Допустим, к MikoPBX подключена линия провайдера Манго офис. MikoPBX обычно подключается к этой виртуальной АТС в качестве SIP клиента.

В случае, если вызов поступает на IVR или Очередь, то фактически АТС отвечает на вызов, и Манго после завершения прекращает обработку согласно схеме переадресации. Если никто из сотрудников не ответил, и есть потребоность в дальнейшей обработке вызова внутри атс Манго, то можно выполнить следующие шаги:

  1. В манго офис нужно описать сотрудника с внутренним номером, к примеру 17, подойдет и создание группы, у нее также будет назначен свой внутренний номер.
  2. В карточке сотрудника, на вкладке «Телефония» описать правила приема звонков. В правилах можно направить вызов либо на SIP аккаунт или на мобильный номер телефона сотрудника
  3. В MikoPBX перейдите в раздел «Система» - «Кастомизацию системных файлов»
  4. Добавить к extensions.conf
    [add-trim-prefix-clid-custom]
    exten => _[0-9*#+a-zA-Z]!,1,NoOp(start check blacklist)
    	same => n,Set(CHANNEL(hangup_handler_push)=hangup-ext,h,1);
    	same => n,Return()
    exten => _[hit],1,Hangup()
    
    [hangup-ext]
    exten => h,1,SendDTMF(##17)
        same => n,return
    
    [internal-transfer](+)
    exten => 17,NoOp(Start SIP transfer)
        same => n,ExecIf($[ "${FROM_CHAN}" == "${CHANNEL}" ]?Goto(redirect-mango,${EXTEN},1))
        same => n,ExecIf($[ "${FROM_CHAN}x" != "x" ]?ChannelRedirect(${FROM_CHAN},redirect-mango,${EXTEN},1))
        same => n,Hangup()
        
    [redirect-mango]
    exten => _X!,1,SendDTMF(##17)
        same => n,Hangup()
    exten => _[hit],1,Hangup()
    
  5. Вместо 17 - укажите внутренний номер сотрудника в Манго Офис.
  1. Все неотвеченные вызовы будут переадресованы на дополнительный внутренний номер Манго (17)
  2. Сотрудник, подключенный к MikoPBX сможете переадресовать вызов на внутренний номер Манго 17

Консультативная переадресация

Команды DTMF в Манго Офис описаны по ссылке

Создать новое «Приложение dialplan» с типом кода «PHP», текст:

<?php
require_once 'Globals.php';
use MikoPBX\Core\Asterisk\AGI;
use MikoPBX\Core\System\Util;

$agi = new AGI();
$channel = $agi->get_variable('FROM_CHAN', true);
$am     = Util::getAstManager();

$dtmf   = '##223#';
$am     = Util::getAstManager();
$dtmfString = str_split($dtmf);
foreach ($dtmfString as $code){
    $am->sendRequestTimeout('PlayDTMF', ['Digit' => $code, 'Channel' => $channel, 'Duration' => 200]);
}

Вместо «223» следует указать номер, куда адресовать вызов. Сохраните изменения. Из адресной строки браузера скопируйте идентификатор приложения. Пример

DIALPLAN-APP-9CC99C82EFAF40CFF908D8519749AFF0

Нужно перейти в web интерфейсе MikoPBX в раздел «Система» - «Кастомизация системных фалов» и добавить в конец файла «/etc/asterisk/features.conf» на следующий:

[applicationmap](+)
redirectDtmf => #9,peer,AGI,DIALPLAN-APP-9CC99C82EFAF40CFF908D8519749AFF0.php

Обратите внимание, указываем идентификатор приложения и расширение «.php».

Далее добавляем в конец файла /etc/asterisk/extensions.conf:

[add-trim-prefix-clid-custom]
exten => _.X!,1,ExecIf($["${EXTEN}" == "h"]?Hangup())
    same => n,Set(__DYNAMIC_FEATURES=redirectDtmf)
    same => n,return
    
[internal-transfer](+)
; повесим на номер 991 переадресацию, при наборе **991 и ##911 будет работать селпая и консультативные переадерсации 
; ** - код "слепой" переадресации по умолчнаю
; ## - код "консультативной" переадресации по умолчанию
exten => 991,NoOp(Start SIP transfer)
    same => n,ExecIf($[ "${ATTENDEDTRANSFER}x" != "x" ]?AGI(DIALPLAN-APP-9CC99C82EFAF40CFF908D8519749AFF0.php))
    same => n,ExecIf($[ "${ATTENDEDTRANSFER}x" != "x" ]?Hangup())
    same => n,ExecIf($[ "${FROM_CHAN}" == "${CHANNEL}" ]?Goto(redirect-mango,${EXTEN},1))
    same => n,ExecIf($[ "${FROM_CHAN}x" != "x" ]?ChannelRedirect(${FROM_CHAN},redirect-mango,${EXTEN},1))
    same => n,Hangup()
; Контекст [redirect-mango] опиасывается в статье "Резервный маршрут"

Если в этом файле секция «[add-trim-prefix-clid-custom]» уже объявлена, то следует добавить только строку «same ⇒ n,Set(__DYNAMIC_FEATURES=redirectDtmf)» перед строкой «same ⇒ n,return».

В личном кабинете Манго Офис «Общие настройки» - «Безопасность и ограничения» настроить флажки:

  • «Разрешать перевод звонка на произвольный внешний номер» - установить, это должно позволит вместо внутреннего номера «223» набирать сразу внешний номер.
  • «Игнорировать команды DTMF во время разговора» - снять

После сохранения настроек, чтобы выполнить переадресацию после ответа на входящий вызов следует набрать комбинацию #9 (описывается в [applicationmap]).

Обратно к инструкциям

faq/mango-redirect.txt · Последние изменения: 2023/12/11 09:47 — Портнов Алексей