Имеется Elastix 2.5.0 (FreePBX 2.11.0 Asterisk 11.15.0) Два удаленных офиса, связанных между собой посредством VPN. В офисе №1 установлен Elastix.
Задача: при пропадании связи между офисами переключать приветствие в IVR на сообщение о том что имеются проблемы со связью (сейчас это делается руками через веб-интерфейс) Я вижу решение этой задачи в написании скрипта на bash, который будет пинговать (с сервера Elastix) офис №2 и в случае пропадания связи будет исправлять конфиг Elastix.
Файл extensions_additional.conf содержит одну из строй которую мне надо поменять
как есть:
[timeconditions]
exten => 1,n(falsegoto),GotoIf($["${TCMAINT}"!="RETURN"]?ivr-5,s,1)
как надо:
exten => 1,n(falsegoto),GotoIf($["${TCMAINT}"!="RETURN"]?ivr-6,s,1)
Учитывая что файл менять нельзя, работаю с файлом extensions_override_freepbx.conf Прописываю в данный файл:
[timeconditions]
exten => 1,n(falsegoto),GotoIf($["${TCMAINT}"!="RETURN"]?ivr-6,s,1)
Далее перезапускаю астериск командой:
/var/lib/asterisk/bin/module_admin reload
И в результате строка в файле extensions_additional.conf не меняется и как следствие нужное сообщение о проблемах со связью не проговаривается.
Куда копать не знаю, пните в нужном направлении.
Используйте приложение "Режим дня и ночи" . Выставляете разные звуковые файлы для дня и ночи и соответствующие направления. В IVR сообщение убираете , если конечно в обоих случаях схема распределения одинаковая. Запоминаете , какой индекс присваивается направлению и используйте его в скрипте. Например , Вы создали направление с индексом 0. Скрипт будет выглядет так :
#!/bin/bash
ASTPATH=/usr/sbin/
INDEX=0
IPADRR=127.0.0.1
function ping_test()
{
ping -c 1 -q -w 1 $IPADRR | grep '1 received' > /dev/null && echo 1 || echo 0;
}
if [ $(ping_test) = 0 ]; then
$ASTPATH/asterisk -rx "database put DAYNIGHT C$INDEX NIGHT"
else
$ASTPATH/asterisk -rx "database put DAYNIGHT C$INDEX DAY"
fi
Также можно использовать приложение Misc App (дополнительные приложения) . Так можно перехватывать звонки из входящей маршрутизации и направлять на нужное направление. Рисуете в extensions_custom.conf что-то типа
[from-pstn-custom]
exten => _X.,1,Noop()
exten => _X.,n,GotoIF($["${DB(CUSTOM/ALARM)}" = "1"]?from-internal,12345,1) ; 12345 - сервисный код направления.
exten => _X.,n,Goto(ext-did,${EXTEN},1)
а в скрипте меняете блок if на
if [ $(ping_test) = 0 ]; then
$ASTPATH/asterisk -rx "database put CUSTOM ALARM 1"
else
$ASTPATH/asterisk -rx "database put CUSTOM ALARM 0"
fi
Задан: Jun 9 '15
Просмотрен: 842 раз
Обновлен: Jun 10 '15
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.
Сначала нужно разобраться , что такое bush .
zzuz (Jun 9 '15)editУ меня уже настроен IVR по рабочему времени, боюсь что не получиться использовать приложение "Режим дня и ночи".
ginnic (Jun 9 '15)editОдно другому не мешает. Приложение само по себе простой переключатель. К времени не привязывается.
zzuz (Jun 9 '15)editСпасибо за советы и особенно готовые скрипты. Буду пробовать их реализовать Но всё же, для себя, хочется понять, как можно в Elastix отредактировать conf-файл (не через Web-интерфейс), о чем я писал выше?
ginnic (Jun 10 '15)editОтредактировать чем? Скритом? awk и sed вам в руки .
zzuz (Jun 10 '15)editИзвиняюсь за некорректно заданный вопрос. Какой файл необходимо редактировать в Elastix для изменения файла extensions_additional.conf?
ginnic (Jun 10 '15)editextensions_override_freepbx.conf
zzuz (Jun 10 '15)editКак правильно редактировать extensionsoverridefreepbx.conf? В данный файл я вставлял нужные мне строки (см. шапку), но после перезагрузки астериска они не появлялись в файле extensions_additional.conf. Или они не должны появляться? При этом правило которое я вставлял не работало :(
ginnic (Jun 10 '15)editОни не должны появляться. То что Вы написали какое-то правило - это не значит , что оно должно рабоать . Вы элементарно не соблюдаете синтаксис. Файл extensions_override_freepbx.conf читается первым при перезагрузке , поэтому для экстеншена должен быть задан явный приоритет . Приоритет n при первом заполнении контекста игнорируется.
zzuz (Jun 10 '15)editОк понял. Как тогда проверить синтаксис и если можно где почитать об этом. Покопал интернет, не могу найти информацию. На сайте freepbx.org в описание также написано что прежде чем редактировать extensionsoverridefreepbx.conf read notes before. А где найти эти примечания не сказано.
ginnic (Jun 10 '15)editЧитать про синтаксис тут http://www.voip-info.org/wiki/view/Asterisk+config+extensions.conf . Там же описано про вложения файлов в основной конфигурационный файл.
zzuz (Jun 10 '15)editПриложение "Режим дня и ночи" сейчас называется Call Flow Control. Создал правило в нем, теперь я могу переключать режим посредством звонка набрав специальный номер (*280). Не могу найти в database параметр для переключения его в скрипте.
ginnic (Jun 11 '15)editКто ищет , тот всегда найдет .
zzuz (Jun 11 '15)editВ базе данных данного параметра нет, оставил этот вариант. Попробовал пойти другим путем через команду channel originate extension (набор номера через консоль), но не получается позвонить на сервисный код 280. Есть идеи?
ginnic (Jun 11 '15)edit"В базе данных данного параметра нет" - не верю. Плохо ищите.
zzuz (Jun 11 '15)edit