Имеется 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
Задан: 2015-06-09 22:34:30 +0400
Просмотрен: 840 раз
Обновлен: Jun 10 '15
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.
Сначала нужно разобраться , что такое bush .
zzuz ( 2015-06-09 23:17:26 +0400 )редактироватьУ меня уже настроен IVR по рабочему времени, боюсь что не получиться использовать приложение "Режим дня и ночи".
ginnic ( 2015-06-09 23:40:42 +0400 )редактироватьОдно другому не мешает. Приложение само по себе простой переключатель. К времени не привязывается.
zzuz ( 2015-06-09 23:45:38 +0400 )редактироватьСпасибо за советы и особенно готовые скрипты. Буду пробовать их реализовать Но всё же, для себя, хочется понять, как можно в Elastix отредактировать conf-файл (не через Web-интерфейс), о чем я писал выше?
ginnic ( 2015-06-10 10:01:12 +0400 )редактироватьОтредактировать чем? Скритом? awk и sed вам в руки .
zzuz ( 2015-06-10 11:03:57 +0400 )редактироватьИзвиняюсь за некорректно заданный вопрос. Какой файл необходимо редактировать в Elastix для изменения файла extensions_additional.conf?
ginnic ( 2015-06-10 12:25:14 +0400 )редактироватьextensions_override_freepbx.conf
zzuz ( 2015-06-10 13:16:23 +0400 )редактироватьКак правильно редактировать extensionsoverridefreepbx.conf? В данный файл я вставлял нужные мне строки (см. шапку), но после перезагрузки астериска они не появлялись в файле extensions_additional.conf. Или они не должны появляться? При этом правило которое я вставлял не работало :(
ginnic ( 2015-06-10 14:17:01 +0400 )редактироватьОни не должны появляться. То что Вы написали какое-то правило - это не значит , что оно должно рабоать . Вы элементарно не соблюдаете синтаксис. Файл extensions_override_freepbx.conf читается первым при перезагрузке , поэтому для экстеншена должен быть задан явный приоритет . Приоритет n при первом заполнении контекста игнорируется.
zzuz ( 2015-06-10 14:33:13 +0400 )редактироватьОк понял. Как тогда проверить синтаксис и если можно где почитать об этом. Покопал интернет, не могу найти информацию. На сайте freepbx.org в описание также написано что прежде чем редактировать extensionsoverridefreepbx.conf read notes before. А где найти эти примечания не сказано.
ginnic ( 2015-06-10 14:53:11 +0400 )редактироватьЧитать про синтаксис тут http://www.voip-info.org/wiki/view/Asterisk+config+extensions.conf . Там же описано про вложения файлов в основной конфигурационный файл.
zzuz ( 2015-06-10 15:17:06 +0400 )редактироватьПриложение "Режим дня и ночи" сейчас называется Call Flow Control. Создал правило в нем, теперь я могу переключать режим посредством звонка набрав специальный номер (*280). Не могу найти в database параметр для переключения его в скрипте.
ginnic ( 2015-06-11 16:21:47 +0400 )редактироватьКто ищет , тот всегда найдет .
zzuz ( 2015-06-11 17:04:30 +0400 )редактироватьВ базе данных данного параметра нет, оставил этот вариант. Попробовал пойти другим путем через команду channel originate extension (набор номера через консоль), но не получается позвонить на сервисный код 280. Есть идеи?
ginnic ( 2015-06-11 21:46:23 +0400 )редактировать"В базе данных данного параметра нет" - не верю. Плохо ищите.
zzuz ( 2015-06-12 01:28:49 +0400 )редактировать