First time here? Check out the FAQ!

Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

Небольшой frontend для оператора

2

Появилась задача написать небольшой фронтэнд для оператора АТСки (Elastix) К примеру, у оператора отображается список внутренних телефонов и напротив галочка. Ставишь ее и можно звонить по городу, снимаешь - нельзя Писать буду на PHP Подскажите что можно почитать по этому вопросу? Первый вопрос, который возник - как Elastix'у подать команду 'Apply Configuration Changes Here' Что происходит (какая команда отрабатывает) после нажатия на кнопку 'Apply Configuration Changes Here'

спросил Mar 12 '12

pvk Gravatar pvk
61 5 7
http://sp-it.ru/

8 Ответов

2

Что-то народ слишком мудреные способы предлагает. Думаю можно сделать все гораздо проще:

  1. Всех абонентов запихиваем в один контекст, который по умолчанию никуда не ведет
  2. При звонке абонента в диалплане из ASTDB извлекается значение, к примеру, из ветки /users/12344322/context
  3. После этого делается GoTo на этот контекст. Причем контексты эти могут быть определены средствами FreePBX, например, модулем custom contexts. Соответственно если контекст, в куда направляется звонок и определит дальнейшую его судьбу: если это какой-нить outbound-routes, то ему повезло. Если, к примеру, restricted, то звонок дропается. Можно кучу контекстов наваять для разных тарифных планов.
  4. Значения в ASTDB можно записать через AMI или из командной строки asterisk -rx "database put..."

Достоинства:

  • Гибкость в применении: можно менять разрешения разными методами
  • Не требуется перезагружать конфиг при изменениях
  • Никакого гимору с реалтайм архитектурой и базами данных
  • 100%-я совместимость с FreePBX
  • ???
  • Profit!
ссылка удалить спам редактировать

ответил Mar 14 '12

switch Gravatar switch
8334 11 7 92
http://lynks.ru/

обновил Mar 14 '12

Comments

недостаток: выполнение достаточно сложного диалпана для номеров ведущих в никуда.

meral (Mar 14 '12)edit

вот эти две строчки:

exten => _X,1,Set(context=DB(users/${CDR(accountcode)})/context)

exten => _X,1,GoTo(${context},${EXTEN},1)

Это типа сильно сложный диалплан???

switch (Mar 14 '12)edit

ага.есть обращение к диску. неубираемое.

meral (Mar 15 '12)edit

И это типа медленнее, чем держать юзерей в БД и ломится через сеть каждый раз с запросом? Хорошо. можно переделать и не использовать astdb, а глобальные переменные. Тоже медленно? а что тогда быстрее? Особенно если учесть, что во freepbx и без этого в процессе звонка будет запущено три AGI скрипта и полсотни обращений к astdb.

switch (Mar 15 '12)edit

как ни странно, mysql быстрее. он просто закеширует. вот. зачем пложить 50+1-й?

meral (Mar 15 '12)edit

я знаю что быстрее. Но так же знаю принцип KISS, а так же то, что использование mysql не даст в этом случае абсолютно никакого выигрыша

switch (Mar 15 '12)edit
0

Я так думаю, нужно для начала написать несколько контекстов, хотя бы два: с нужными разрешениями и без них. Можно все это облегчить существенно установив себе модуль custom-context.

А в базе все лежит в таблице asterisk.sip. Контекст для пользователя меняется командой:

update sip set data = '<context>' where id = <sip_id> and flags = 5;

После смены контекста в базе, для применения настроек можно сделать:

/var/lib/asterisk/bin/module_admin reload

Проверить все ли правильно выполняется можно командой:

sip show user <sip_id>

Но эт наверное костыли. Через AMI как-то круче наверное можно сделать..

ссылка удалить спам редактировать

ответил Mar 14 '12

matperez Gravatar matperez
255 18 6 19

Comments

ваша команда убьет весь sip.conf. есл что, там больше одного поля с флагом 5 для каждого ид.

meral (Mar 14 '12)edit

может быть, но мне как-то не встречалось. приведите пожалуйста пример двух строчек с флагом 5 для одного sip_id.

matperez (Mar 14 '12)edit
0

а если в теории так пока без примера, галочка просто пишется в таблицу Mysql а в диалплане перед каждым набором делается запрос в бд вн. номер и статус 0 или 1 и GotoIF.....

ссылка удалить спам редактировать

ответил Mar 12 '12

Bracus Gravatar Bracus
110 4 3 7

обновил Mar 12 '12

Comments

это очень плохой метод. правильный метод - менять контекст на другой,с только внутренней адресацией.

meral (Mar 12 '12)edit

А как же использование режима день ночь с подобной реализацией? http://www.voip-info.org/wiki/view/Asterisk+day+night+mode+example когда перед звонком определяется время и/или переменная из asterisk DB, MySQL Я конечно понимаю что именно в данном случае для снижение нагрузки рекомендация использовать статический вариант смены контекстов. Но уж точно это не настолько плохой вариант

Bracus (Mar 13 '12)edit

ну так там же поддержка со стороны диалпана ПРИСТВУЕТ. да и написано это было 5 лет назад.

meral (Mar 13 '12)edit

и все же настаиваю, динамическое решение имеет место быть )))

Bracus (Mar 13 '12)edit
1

ну так в чем проблема? засуньте sip peers в базу и меняйте контексты.

meral (Mar 13 '12)edit

Это уже решение, спасибо, только вот у постующего Elastix. получается он в таком случае потеряет функционал FreePBX?

Bracus (Mar 14 '12)edit
1

почемуэто. еслиправильно пропишет то не потеряет.

meral (Mar 14 '12)edit

Спасибо, вопросов нет )) только вот так и не нашел как можно совместить sip realtime + FreePBX ((

Bracus (Mar 14 '12)edit
1

убираете инклуд sip_additional.conf. запускаете реалтайм (extconfig.conf), создаете view или табличку на основе данных из таблички sip. все.

meral (Mar 14 '12)edit
0

Случайно продублировал пост, прошу прощения.

ссылка удалить спам редактировать

ответил Mar 14 '12

mik Gravatar mik
31 3 1 7

обновил Mar 14 '12

0

Почему бы не вынести диалплан в mysql и при помощи php скрипта не переносить необходимые телефоны из одного контектста (где вызовы в город запрещены) в другой (где они соответственно разрешены)?

ссылка удалить спам редактировать

ответил Mar 14 '12

mik Gravatar mik
31 3 1 7

Comments

это неефективно. проще вынести в mysql сами пиры(sip).

meral (Mar 14 '12)edit
0

это надо писать В КОМЕНТАРИИ

ссылка удалить спам редактировать

ответил Mar 12 '12

pvk Gravatar pvk
61 5 7
http://sp-it.ru/

обновил Mar 12 '12

meral Gravatar meral flag of Ukraine
23347 24 20 177
http://pro-sip.net/

Comments

хорошо. Вот для начала нашел: http://voip.rus.net/tiki-index.php?page=Asterisk+Manager+API спасибо за наводку

pvk (Mar 12 '12)edit
0

а вы уверены что стоит без понимания внутреностей писать?

apply changes вызывает /var/lib/asterisk/bin/retrieveconfigmysql

потом делает через ami asterisk reload.

почитать по этому поводу можно freepbx.org вики, и исходники freepbx.

просто есть болшой шанс что то что вы напишите будет глючить.

ссылка удалить спам редактировать

ответил Mar 12 '12

meral Gravatar meral flag of Ukraine
23347 24 20 177
http://pro-sip.net/

Comments

"apply changes вызывает /var/lib/asterisk/bin/retrieveconfigmysql"

вызывает он на самом деле /var/lib/asterisk/bin/module_admin reload

zzuz (Mar 12 '12)edit

раньше точно вызывал что я написал. и до сих пор вызовка retriveconfgmysql вполне достаточно

meral (Mar 12 '12)edit
0

Вот что за сутки удалось наковырять с AMI. Вот такой скрипт подключается AMI и ... и все :-)

<? 
  $ami_login
= 'admin';
  $ami_secret
= 'hidepass';
  $socket
= fsockopen ("10.0.1.162", 5038, $errno, $errstr);
 
if (!$socket)
 
{
    echo
("$errno($errstr)");
   
return;
 
}
 
else
 
{
    fputs
($socket, "Action: Login\r\n");
    fputs
($socket, "UserName: $ami_login\r\n");
    fputs
($socket, "Secret: $ami_secret\r\n\r\n");
    fputs
($socket, "Action: Logoff\r\n\r\n");

   
while (!feof($socket))
   
{
      echo fgets
($socket,200)."<br>";
   
}
 
}
  fclose
($socket);
?>

Можно ли развить этот скрипт, чтоб он запретил номеру 151 звонок в город (у меня город это 7 знаков)

ссылка удалить спам редактировать

ответил Mar 13 '12

pvk Gravatar pvk
61 5 7
http://sp-it.ru/

обновил Mar 13 '12

Comments

мужик. ты серйозно или издеваешься? во первых не получится ТОЛЬКО через ами чтото запретить. надо поддержка со стороны диалплана. во вторых скриптов для ами полно, и вообещ все прекрасно описана в куче источников. это ж не какйото закрытый интерфейс. еще раз говорю. тебе еще рано чтото пистаь.сначала почитай. исходники freepbx например.

meral (Mar 13 '12)edit

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку
1 закладка

подписаться на rss ленту новостей

Статистика

Задан: Mar 12 '12

Просмотрен: 882 раз

Обновлен: Mar 14 '12

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.