Панель оператора

Компания Lynks предлагает сообществу упрощенную версию альтернативной операторской панели управления вызовами для Asterisk в замен штатной во многих дистрибутивах Flash Operator Panel. Основным желанием было избавиться от FOP вообще, так как она сильно нагружает как систему (из-за того, что серверная часть написана на Perl), так и клиентскую машину (из-за медленной Flash технологии), что ограничивало применение телефонными системами максимум на 50 абонентов. Не смотря на красивый внешний вид, обычная FOP крайне не продумана с точки зрения использования и на практике оставалась невостребованной. Новая версия, FOP2 построена на AJAX технологии, но бесплатная версия содержит ряд ограничений.

Функционал

AJAX Operator Panel for AsteriskПанель не отслеживает количество одновременных каналов к какому-либо экстеншену и будет показан самый последний в сформировавшемся списке, что равносильно случайному выбору.

Панель имеет строку поиска и сортировке. Возможна сортировка только по возрастанию номеров либо имен. Строка поиска позволяет производить поиск по номерам и именам одновременно и имеет два режима работы: полнотекстовый, при котором ищутся совпадения с любого места, и поиск строго с начала строки, для чего нужно перед вводимой строкой поиска добавить один пробел.

Поддерживаются базовые функции управления звонками: набора номера и перевода текущего вызова, для чего в специальное поле пользователь может занести номер своего телефона. Для сохранения номера в cookies браузера можно отметить флажок “Save”. Набор номера может осуществляться двумя путями: можно ввести номер в поле для поиска и нажать кнопку Call или Enter (на клавиатуре), либо нажать кнопку Call и выбрать абонента, с которым соединиться. Перевод вызова возможен только при наличии разговорного канала у абонента: кнопка Transfer должна быть подсвечена. Перевод также можно выполнить с помощью текстового поля поиска или выбором абонента.

Технические особенности

Предлагаемая AJAX Panel не содержит никаких ограничений на количество абонентов в системе и разработана для обеспечения максимальной производительности системы и удобства пользователя. Программа понимает конфигурационные файлы FOP, но берет из них только данные о кнопках и их принадлежности к приложениям, транкам или пользователям. Позиция кнопки на экране зависит лишь от варианта отображения по именам или номерам. Так же не воспринимаются цветные области, подписи для них и прочее форматирование.

Подразумевается, что в рамках системы не возможно совпадение номеров каналов даже для разных технологий. Например, если есть SIP/100, то не должно быть, к примеру, ZAP/100. Это связано прежде всего с тем, чтобы упростить анализ реальных межсоединений без учета локальных каналов. Бывает, что вызов на номер SIP/100 происходит через канал LOCAL/100@from-internal, который в реальности соединен с SIP/100. Это накладывает некоторые ограничения, которые легко обходятся. Так например, трехзначные номера каналов ZAP появятся при большом количестве каналов, например при четырех потоках Е1, что само собой предназначено для большой компании, а для такой компании трехзначная нумерация тесновата. С другой стороны такой подход позволяет отслеживать вообще любые соединения к любым, даже виртуальным экстеншенам. При использовании FreePBX проблем, связанных с этой особенностью быть не должно.

Поддерживаются все современные браузеры, но тестирование производилось только с Google Chrome и Mozilla Firefox. Длительная работа с панелью в Google Сhrome может приводить к утечкам памяти на клиентской машине. Решение простое: периодически (например, раз в час) перезагружать страницу.

Установка

Необходимо заменить все содержимое каталога /panel файлами из архива, за исключением файлов op_buttons_additional.cfg и op_buttons_custom.cfg (либо после замены перезагрузить конфигурацию FreePBX. Также для нормальной работы необходимо, чтобы в macro-dial после exten => s,n+2(normdial),noop(=normdial=)
были добавлены следующие строки: exten => s,n,Set(DB(CURRCALL/${EXTTOCALL}/NUM)=${CALLERID(num)}) exten => s,n,Set(DB(CURRCALL/${EXTTOCALL}/NAME)=${CALLERID(name)})

Для подключения к системе в файле extensions-realtime.php необходимо прописать параметры подключения

define ("HOST", 'localhost');
define ("PORT", "5432");
define ("USER", 'asteriskuser');
define ("PASS", '4nccnuQcYbD4VZRc');
define ("DBNAME", "asterisk");
define ("DB_TYPE", "mysql");  

После этих действий панель будет доступна по адресу http://SERVER_IP/panel

Условия использования

Исходный код распространяется как есть по лицензии GPLv2. Никаких гарантий не предоставляется, вы используете программу на свой страх и риск. Будьте бдительны: программа не имеет средств аутентификации и может быть привлекательна для атак. Ограничивайте доступ пользователей к программе с помощью http аутентификации. Подпись “Developed by Lynks.ru 2010” в нижней части страницы обязательна при любом использовании программы.

Файлы и ссылки

Скачать исходный код: LynksAJAXpanel.tgz (284 kb)
На Google Code: http://code.google.com/p/lynks-ajax-panel/
Адаптированная версия для Asterisk 1.8: https://github.com/IgorrG/lynks-ajax-panel (спасибо: IgorG)
Обсуждение на форуме asterisk-support.ru
Обсуждение на форуме forum.asterisk.ru

  • 31/12/10
  • 16
  • Оценка: 2.38/5, голосов: 753

Комментарии

Панель оператора 2011-01-11 19:32 / #

define (“PORT”, “5432”);
define (“USER”, ‘asteriskuser’);
define (“PASS”, ‘4nccnuQcYbD4VZRc’);

Порт 5432 это порт чего, Asterisk Call Manager (который в триксбоксе 5038)?
Юзер и пароль откуда брать? Если триксбокс то из amportal.conf AMPDBUSER/PASS или AMPMGRUSER/PASS?

Панель оператора 2011-01-11 19:56 / #

нет, это пароль mysql базы данных. К AMI подключение происходит с localhost и паролем по умолчанию в триксбоксе.

Панель оператора 2011-03-18 16:30 / #

У меня в macro-dial было вот так

exten => s,n+2(normdial),Dial(${ds}M(unset-notify^${EXTTOCALL}))
exten => s,n,Set(DIALSTATUS=${IF($[”${DIALSTATUS_CW}”!=”“ ]?${DIALSTATUS_CW}:${DIALSTATUS})})

а теперь я добавил по инструкции и стало вот так, это правильно?

exten => s,n+2(normdial),noop(=normdial=)
exten => s,n+2(normdial),Dial(${ds}M(unset-notify^${EXTTOCALL})) ; dialparties will set the priority to 10 if $ds is not null
exten => s,n,Set(DIALSTATUS=${IF($[”${DIALSTATUS_CW}”!=”“ ]?${DIALSTATUS_CW}:${DIALSTATUS})})
exten => s,n,Set(DB(CURRCALL/${EXTTOCALL}/NUM)=${CALLERID})
exten => s,n,Set(DB(CURRCALL/${EXTTOCALL}/NAME)=${CALLERID})

или что то лишнее?

AJAX работает, но показывает лиш подключеных и отключеных пользователей и все.
Оно так и должно быть, или в этой версии все же отображается кто куда звонит?

Панель оператора 2011-03-18 18:12 / #

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

Панель оператора 2011-03-20 20:02 / #

Что делать, если установлен FreePBX?
в [macro-dial] имеется следующее:

exten => s,n+2(normdial),Dial(${ds}) ; dialparties will set the priority to 10 if $ds is not null
exten => s,n,Set(DIALSTATUS=${IF($[”${DIALSTATUS_CW}”!=”“ ]?${DIALSTATUS_CW}:${DIALSTATUS})})

а в самом extensions.conf есть такое предупреждение:
; do not edit this file, this is an auto-generated file by freepbx
; all modifications must be done from the web gui

Панель оператора 2011-03-20 20:05 / #

сделайте чтоб было так:

exten => s,n+2(normdial),noop(=normdial=)
exten => s,n,Set(DB(CURRCALL/${EXTTOCALL}/NUM)=${CALLERID
exten => s,n,Set(DB(CURRCALL/${EXTTOCALL}/NAME)=${CALLERID})
exten => s,n,Dial(${ds}) ; dialparties will set the priority to 10 if $ds is not null
exten => s,n,Set(DIALSTATUS=${IF($[”${DIALSTATUS_CW}”!=”“ ]?${DIALSTATUS_CW}:${DIALSTATUS})})

Панель оператора 2011-04-10 22:02 / #

То что нехватает скобок в последнем сообщении, это так и надо?
Если там ошибка выложите пожалуйста эти 5 строк еще раз но с исправлением.

Панель оператора 2011-04-10 22:09 / #

да, может затерлось что-то
exten => s,n+2(normdial),noop(=normdial=)
exten => s,n,Set(DB(CURRCALL/${EXTTOCALL}/NUM)=${CALLERID})
exten => s,n,Set(DB(CURRCALL/${EXTTOCALL}/NAME)=${CALLERID})
exten => s,n,Dial(${ds}) ; dialparties will set the priority to 10 if $ds is not null
exten => s,n,Set(DIALSTATUS=${IF($[”${DIALSTATUS_CW}”!=”“ ]?${DIALSTATUS_CW}:${DIALSTATUS})})

Панель оператора 2011-04-18 13:55 / #

AsteriskNow 1.7.1
Asterisk 1.6.2.11
FreePBX 2.8.1.4
В extensions_additional.conf есть
секции macro-dial-one, macro-dialout-enum, macro-dialout-dundi, macro-dialout-trunk. Куда вставлять?

Панель оператора 2011-04-18 19:52 / #

скорее всего в macro-dial-one.

Панель оператора 2011-04-19 13:08 / #

В сборке TrixBox Embedded в файле extensions_additional.conf
нет такой секции macro-dial-one.
А если нетрудно, скажите в какой файл и куда именно вставлять эти строчки,
а то сколько не пытаюсь неполучается,
подключенных в панели отображает а звонки и активных не показывает.

Панель оператора 2011-04-19 13:37 / #

macro-dial лежит в extensions.conf

Панель оператора 2011-06-23 19:01 / #

чет не работает. В 3-й строке в файле extensions-realtime.php :
require_once(‘DB.php’);. А откуда он (DB.php) должен взяться?

Панель оператора 2011-06-23 19:24 / #

Этот файл из набора PEAR/ Уберите эту строчку и все.

Панель оператора 2012-11-28 19:45 / #

Пробовал прикрутить, сделал все как указано в мануале, но в ответ, к сожалению, получил панель без кнопок. Импорт файлов op_buttons_additional.cfg и op_buttons_custom.cfg из FOP не решает. Дистрибутив Elastix 2.3

Панель оператора 2012-11-28 19:50 / #

Нужно смотреть конкретно, подробнее не смогу сказать. Проект отдали в свободное плавание, кто хочет, тот пусть использует. К сожалению у меня нет времени адаптировать это ПО на все возможные системы. В эластике другой астериск, вероятно изменился вывод команды core show channels, нужно адаптировать код. Ну и не забываем про пароли.

Оставить комментарий

Статьи

Корзина (0)

Корзина

Корзина пуста

Последние новости