База знаний
База знаний:
FusionPBX - исправления LUA-скрипта переключения Call Forward
Автор [ADMINGROUP] Oleksandr Usov,
Notice
Undefined index: lastmodifiedby (./__swift/cache/91a994f85f9b0c3e5bee9515d3a61aa7.php:44)
Copy to clipboard:
[ADMINGROUP] Oleksandr Usov на 30 September 2014 03:43 PM

Стандартное размещение скриптов FusionPBX для FreeSWITCH:

/usr/local/freeswitch/scripts  - у вас может быть другое размещение (параметры могут задаваться через интерфейс FusionPBX -> Advanced -> Default settings раздел Switch).

Исправления относятся к версии скрипта call_forward.lua из ветки FPBXBRANCH="http://fusionpbx.googlecode.com/svn/branches/dev/fusionpbx"

Какую ветку будем ставить, задаете в скрипте install_fusionpbx.sh любым редактором до начала запуска установки - подробнее установка (настройка) FusionPBX.

 

Находим блок кода в call_forward.lua:

        --set the dial string
            if (session:ready() and enabled == "true") then
                dial_string = "{presence_id="..forward_all_destination.."@"..domain_name;
                dial_string = dial_string .. ",instant_ringback=true";
                dial_string = dial_string .. ",domain_uuid="..domain_uuid;
                dial_string = dial_string .. ",sip_invite_domain="..domain_name;
                dial_string = dial_string .. ",domain_name="..domain_name;
                dial_string = dial_string .. ",domain="..domain_name;
                if (accountcode ~= nil) then
                    dial_string = dial_string .. ",accountcode="..accountcode;
                end
                dial_string = dial_string .. "}";

                cmd = "user_exists id ".. forward_all_destination .." "..domain_name;
                user_exists = trim(api:executeString(cmd));
                if (user_exists) then
                    dial_string = dial_string .. "user/"..forward_all_destination.."@"..domain_name;
                else
                    dial_string = dial_string .. "loopback/"..forward_all_destination;
                end
            end

 

 

Меняем: if (user_exists) then

на: if (user_exists == "true") then

 

Данные дейсвтия необходимы для того, чтобы правильно определялись скриптом параметры вызова внешнего номера (мобильного, например) через интерфейс loopback. В оригинале скрипта проверка всегда заканчивается истиной.

Делаем для себя бекап исправленного скрипта - обновление FusionPBX в будущем могут и перезаписать скрипты с прежними ошибками. А можно просто сохранить его в папку, не затрагиваемую обновлением FusionPBX и указать полный путь к нему в диалплане (Dialplan Manager) для экстеншина call-forward.

 

 

ВАЖНО! Также для работы данного скрипта нужно настроить FreeSWITCH и FusionPBX на использование xml_handler вместо генерации и считывания статических файлов в directory / dialplan / sip_profiles - как это сделать читаем на официальной wiki. В противном случае, скрипт все четко будет сохранять в БД (особенно важен параметр dial_string в таблице v_extensions), но не станет генерировать файлы с новыми параметрами экстеншином в directory - в отличие от поведения веб-интерфейса, с помощью которого новые настройки обновляются и в базе данных, и в виде новых версий файлов.

В роли БД я выбрал sqlite3, поскольку с PosgreSQL обнаружились проблемы с сохранением настроек из GUI на более ранних поиска ошибок в других приложениях FusionPBX. MySQL не проверял.

Возможно, я еще какие-то синтаксические ошибки исправлял, о которых забыл - поэтому прикрепляю на память рабочий скрипт.

 



Вложения 
 
 call_forward.lua (9.03 кБ)

Комментарии (0)
Добавить новый комментарий
 
 
Полное имя:
Email:
Комментарии: