Страница 1 из 1

Как подменить набранный номер?

Добавлено: 22 апр 2016, 10:15
tonny_bennet
Здравствуйте.

Пишу диалплан на AEL. Логика такая: при звонке на внутренний номер проверяется статус Jabber абонента, если он занят - переводим звонок на мобильный телефон этого абонента.

Вынес проверку занятости абонента в макрос. Но мне не понятно, правильно ли то, что у меня уже несколько строк в которых есть Dial? Если макрос отработает - то звонок уйдёт на мобильный и сработает Dial из макроса, если он не отработает то сработает Dial внутри контекста.

Код: Выделить всё

macro transfer-if-busy (ext) {

    jid=REALTIME_FIELD(info,ipPhone,${ext},mail);

    if ("${jid}"!="") {
        jabb_psi=${JABBER_STATUS(jabber,${jid}/Psi+)};
        jabb_qip=${JABBER_STATUS(jabber,${jid}/QIP)};

        jabb_status=${jabb_psi} + ${jabb_qip} - 7;

        if (${jabb_status}=3 | ${jabb_status}=4) {
               mobile=${REALTIME_FIELD(info,ipPhone,${ext},otherMobile)};
               Dial(IAX2/hut/${mobile});
               HangUp();
        };
    };
return;
};

Код: Выделить всё

_2XX => {
   &transfer-if-busy(${EXTEN});
   Dial(SIP/${EXTEN},25,tT);
   HangUp();
};
Мне казалось, что сначала стоит обработать всю логику и уже потом в одном месте вызывать Dial с определёнными параметрами, но пока не понял как. Подскажите пожалуйста. Может как-то возможно вместо набранного 205 набрать мобильный?

Re: Как подменить набранный номер?

Добавлено: 22 апр 2016, 11:00
ded
Всё уже придумано и улучшено - модуль Follow me во FreePBX. Правда без AEL.

Re: Как подменить набранный номер?

Добавлено: 22 апр 2016, 11:35
tonny_bennet
ded писал(а): Follow me во FreePBX. Правда без AEL.
Спасибо конечно. Удачно пользуюсь этим модулем в своей рабочей версии телефонии, но вот решил сам разобраться и свой диалплан написать.

Re: Как подменить набранный номер?

Добавлено: 22 апр 2016, 11:45
ded
Тогда нужно учесть всю продуманную логику и гибкость: делать этот перенаправлятор в виде ринг-группы, которая, в свою очередь, имеет разные сценарии: ringall, memoryhunt, etc.
Каждый из них должен иметь свои ручки и опции настройки (сколько секунд звонит, какой CLID, что делать если неответ, занято, и пр.)