Установка веб интерфейсов Asternic Lite, FOP2, RTAG, Wallboard Admin, Asterisk CDR Viewer и MonAST

8205
0
0
13

Записка про установку разных веб интерфейсов для IP АТС Asterisk. С помощью веб интерфейсов легко мониторить активных абонентов, собирать статистику, смотреть разные графики загруженности и журнал зво

Записка про установку разных веб интерфейсов для IP АТС Asterisk. С помощью веб интерфейсов легко мониторить активных абонентов, собирать статистику, смотреть разные графики загруженности и журнал звонков, прослушивать записи разговоров и т.д. Если у вас центр обслуживания звонков (колл центр) или простой офис, то Вам обязательно понадобятся эти веб интерфейсы. Большое количество веб интерфейсов для Asterisk - это одно из больших преимуществ этой программной станции над традиционными железными цифро-аналоговыми АТС. Аппаратные (железные) станции ограничены в функционале, закрыты в плане доработки, имеют строго определенные возможности. С приходом Asterisk в мир телефонии, стало возможно делать любые прихоти пользователей. Например мы можем доработать веб интерфейсы, с учетом новых требований. А также сделать что-то очень интересное, в Интернете можно найти много примеров настройки Asterisk для улучшения функционала.
Что нужно для работы веб интерфейсов
Почти все веб интерфейсы используют PHP (ПоХаПэ) и MySQL, поэтому обязательно надо ставить как основу Apache, PHP и зависимости для MySQL (php-mysql). Чтобы поставит пакеты, понадобиться репозиторий Epel. А вот и примерные зависимости:
# yum install mariadb-devel mariadb-server mariadb php php-mysql php-pear php-mbstring php-gd gd httpd -y
Некоторым сайтам необходимо чтобы был залогинин хотя бы один абонент, в противном случае они ничего не показывают, например сайт "Admin Wallboard" страдает такой вот болезнью. Поэтому не пугайтесь, если все идет не так как хотелось.
На что ставилось - ОС CentOS 7 x64, Asterisk 13.
Какие веб морды ставились
В записке ставились следующие веб интерфейсы:
  • Asterisk CDR Viewer
  • Asternic Lite
  • FOP2
  • RTAG
  • Wallboard Admin
  • MonAST
Конечно же это некий короткий список который ставил именно я, в сети интернет имеются обзоры для других веб интерфейсов. Которые не вошли в этот маленький список, если вас не устроит что-то в текущих интерфейсах, вы можете поискать подходящую на просторах интернета или если вы любите кодить, можете доработать один из имеющихся или даже создать что-то свое, благо Asterisk открытый проект и документации по нему хватает. Включение CDR - детализированного отчета о звонках
Телефонная станция Asterisk имеет врожденные функции записи информации о звонках. Но по умолчанию эта возможность как и многие другие - выключена. Для того чтобы включить ее, потребуется сделать некоторое движение - настройку, которую мы произведем ниже.
Включение хранения CDR (данных о звонках) в базе данных MySQL и удобный просмотр этой информации через веб сайт.
Создаем базу "asteriskcdrdb":
# mysql -uroot -ppassword
mysql> CREATE DATABASE asteriskcdrdb;
Теперь дадим доступ к базе пользователю "asteriskcdr"
mysql> GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO  asteriskcdr@localhost  IDENTIFIED BY 'password'; mysql> flush privileges;
Далее создадим таблицу "cdr" в базе "asteriskcdrdb":
mysql> use asteriskcdrdb;
Создаем таблицу "cdr":
CREATE TABLE cdr ( calldate datetime NOT NULL default '0000-00-00 00:00:00', clid varchar(80) NOT NULL default '', src varchar(80) NOT NULL default '', dst varchar(80) NOT NULL default '', dcontext varchar(80) NOT NULL default '', channel varchar(80) NOT NULL default '', dstchannel varchar(80) NOT NULL default '', lastapp varchar(80) NOT NULL default '', lastdata varchar(80) NOT NULL default '', duration int(11) NOT NULL default '0', billsec int(11) NOT NULL default '0', disposition varchar(45) NOT NULL default '', amaflags int(11) NOT NULL default '0', accountcode varchar(20) NOT NULL default '', uniqueid varchar(32) NOT NULL default '', userfield varchar(255) NOT NULL default '', did varchar(50) NOT NULL default '', recordingfile varchar(255) NOT NULL default '', KEY `calldate` (`calldate`), KEY `dst` (`dst`), KEY `accountcode` (`accountcode`), KEY `uniqueid` (`uniqueid`) );
После, чтобы Asterisk знал куда писать данные о звонках отредактируем файл /etc/asterisk/cdr_mysql.conf
# vim /etc/asterisk/cdr_mysql.conf
В этом файле есть блок в комментариях, снимите комментарии:
[global] hostname=localhost        - ip адрес где располагается сервер MySQL dbname=asteriskcdrdb      – название базы данных где будут храниться cdr table=cdr                 - название таблицы password= password        -пароль для пользователя asteriskcdr user= asteriskcdr         - имя пользователя для базы данных ;port=3306 ;sock=/tmp/mysql.sock ;timezone=UTC ; Previously called usegmtime
Запускаем консоль asterisk:
# asterisk -r
*CLI> module load cdr_mysql.so
Мы указали Asterisk'у писать данные о звонках в таблицу "cdr" базы "asteriskcdrdb". Можно проверить, поступают ли данные в таблицу "cdr" базы "asteriskcdrdb":
# mysql -p
mysql> use asteriskcdrdb; mysql> SELECT * FROM cdr; mysql> SELECT * FROM cdr ORDER BY id DESC LIMIT 10; mysql> exit
Включение хранение CDR в MySQL это хорошо, но чтобы наглядно и удобно работать с такими данными нужен веб интерфейс. Установим веб интерфейс "Asterisk CDR Viewer" который будет работать с базой CDR.
Asterisk CDR Viewer
Этот веб интерфейс может понадобится вам для поиска информации о входящем или исходящем звонке. Здесь вы можете узнать номер клиента который позвонил на ваш городской телефон или просмотреть запись о исходящем звонке ваших операторов или любых других коллег. Можно искать по разным критериям, например дата и время звонка, длительность разговора, количество звонков по заданному номеру и т.д. Если включена функция записи аудио вызова, имеется возможность сразу же послушать разговор. Удобная штука поиска информации, грех не пользоваться этой веб мордой.
Примечание: Разработчики переехали на новый хостинг, и каким-то образом у них поломался веб интерфейс. Можете пропустить установку CDR Viewer, вместо него поставив его модифицированную версию Asterisk CDR Mod.
Зайдем в каталог /var/www
# cd /var/www/html/
Cкачаем "Asterisk CDR Viewer":
# wget https://github.com/g613/asterisk-cdr-viewer/raw/master/asterisk-cdr-viewer-latest.tgz
# tar -xzvf asterisk-cdr-viewer-latest.tgz
Далее перенесем файл алиаса "Asterisk CDR Viewer" в каталог веб сервера Apache /etc/httpd/conf.d/:
# cp asterisk-cdr-viewer/contrib/httpd/asterisk-cdr-viewer.conf /etc/httpd/conf.d/
Осталось поменять настройки доступа к базе данных CDR в файле "/var/www/asterisk-cdr-viewer/include/config.inc.php" веб интерфейса:
# vim /var/www/html/asterisk-cdr-viewer/include/config.inc.php
Меняем реквизиты доступа:
$db_type = 'mysql'; $db_host = 'localhost'; $db_port = '3306'; $db_user = ' asteriskcdr ';          - название базы где хранятся наши CDR $db_pass = 'password';              -пароль для пользователя asteriskuser $db_name = ' asteriskcdrdb ';   - имя пользователя для базы данных $db_table_name = 'cdr';            - название таблицы $db_options = array();
# service httpd restart
Заходим на веб страницу через бразуер - http://your_ip/acdr/ или "http://you_ip/asterisk-cdr-viewer/"
Большая картинка
В этом веб интерфейсе можно выводить статистику по звонкам, сортировать ее. Удобная штука. В интернете кстати имеются доработанные версии (ACDRV), которые превосходят по функционалу своего родителя, например в них есть полезная возможность по воспроизведению разговора, хотя вру, в нем тоже есть возможность воспроизведения аудио разговоров.
Asterisk CDR Viewer MOD
Установим доработанную версию ACDRV:
# cd /var/www/html/
# wget https://codeload.github.com/prog-it/Asterisk-CDR-Viewer-Mod/legacy.tar.gz/master -O asterisk-cdr.tar.gz
# tar -xzvf asterisk-cdr.tar.gz
# mv prog-it-Asterisk-CDR-Viewer-Mod-e386be4 asterisk-cdr
Для того чтобы новый интерфейс мог воспроизводить записанные разговоры, ему необходимо знать где лежать файлы с записями. Эти данные он должен брать с столбца "filename" таблицы CDR базы asteriskcdrdb. Давайте создадим эту колонку:
# mysql -p
mysql> use asteriskcdrdb; mysql> ALTER TABLE cdr ADD COLUMN filename VARCHAR(255); mysql> alter table cdr alter filename set default 'none'; mysql> mysql> exit
Также необходимо подпправить файл /etc/asterisk/cdr_mysql.conf, добавив туда алиасы:
# vim /etc/asterisk/cdr_mysql.conf
[columns] alias realdst => realdst alias filename => filename
Далее настраиваем сам веб интерфейс:
# cd /var/www/html/asterisk-cdr/inc/
# vim config.inc.php
### Mysql $db_type = 'mysql'; $db_host = 'localhost'; $db_port = '3306'; $db_user = 'asteriskcdr'; $db_pass = 'password'; $db_name = 'asteriskcdrdb'; $db_table_name = 'cdr'; $db_options = array(); // $db_options = array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"); ## Если др. значение, то все записи хранятся в одной папке (/var/calls) $system_storage_format = '1'; ## Папка, где находятся записи Asterisk $system_monitor_dir = '/var/spool/asterisk/monitor'; // без слеша на конце ### Формат аудио, в котором записываются записи звонков # Плеер не воспроизводит WAV формат! $system_audio_format = 'mp3';
Здесь вносим данные для доступа к БД со звонками, далее указываем что файлы у нас хранятся в каталоге /var/spool/asterisk/monitor с расширением mp3.
Теперь необходимо добавить макрос для записи звонков.
[macro-app-mp3] exten => s,1,Set(monopt=nice -n 19 /usr/bin/lame -b 32 "${ARG1}${ARG2}.wav" "${ARG1}${ARG2}.mp3" && rm -f "${ARG1}${ARG2}.wav" && chmod 777 "${ARG1}${ARG2}.mp3" && rm -f "${ARG1}${UNIQUEID}.wav") exten => s,n,NoOp(Call Unique ID is - ${UNIQUEID}) exten => s,n,Set(AUDIOHOOK_INHERIT(MixMonitor)=yes) exten => s,n,Set(CDR(filename)=${STRFTIME(${EPOCH},,%Y%m%d)}/${UNIQUEID}.mp3) exten => s,n,Set(CDR(realdst)=${CALLERID(num)}) exten => s,n,MixMonitor(${ARG1}${ARG2}.wav,i(MIXMONITORID),${monopt}) ;--== end of [app-mp3] ==--;
В макросе срабатывают три основных команды, первая инициирует запись разговора в файл wav, вторая конвертирует wav файл в mp3, и третья записывает в поле "filename" таблицы "cdr" полный путь к файлу разговора, например "/var/spool/asterisk/monitor/тек. дата/уникальный номер записи.mp3".
Чтобы макрос срабатывал, его необходимо прописать в контексте в котором происходит исходящий и входящий вызов, например так (хотя для вызова создают тоже макрос):
[internal] exten => _X.,1,Macro(app-mp3,/var/spool/asterisk/monitor/,${STRFTIME(${EPOCH},,%Y%m%d)}/${UNIQUEID}) exten => _X.,n,Dial(SIP/${EXTEN},60) exten => _X.,n,Hangup()
И скрин "asterisk cdr mod":
Большая картинка.
Бывает колонка "Файл" пуста и соответственно аудио записи не проигрываются.  Поэтому необходимо проверить правильность записи путей в базе данных MySQL.  Записи должны отображать корректный путь к звуковому файлу. Проверить пути можно следующим образом используя нехитрый запрос:
# mysql -p
mysql> use asteriskcdrdb mysql> select filename from cdr ORDER BY ID DESC LIMIT 10; +----------------------------------------+ | filename                                       | +----------------------------------------+ | "20161121/1479707105.86845.mp3" | | 20161121/1479707372.86954.mp3   | | "20161121/1479707191.86904.mp3" | |                                                   | | "20161121/1479707062.86822.mp3" | | 20161121/1479707262.86925.mp3   | |                                                   | | 20161121/1479707329.86939.mp3   | | 20161121/1479707327.86937.mp3   | | "20161121/1479707163.86892.mp3" | +----------------------------------------+ 10 rows in set (0.00 sec) mysql> exit
Видим файлы, проверьте есть ли файлы в указанной директории.
Установка Asternic Lite
Веб интерфейс Asternic Lite очень хорошо помогает собирать статистику по звонкам которые попадают в очередь - отвеченные, не отвеченные, потерянные, среднее время разговора, среднее время ожидания и т.д. А также строить наглядные графики которые так нравятся руководству. Обычно количество отвеченных звонков оператором подсчитывается на Asternic и далее считается KPI, по итогу которого выплачиваются бонусы в виде прибавки к зарплате. Это основной инструмент для подсчета звонков и другой статистики.
Есть конечно некоторые нюансы при подсчете звонков:
1. У операторов в подписи письма есть внутренний номер который видят клиенты, и получается клиент дозвонившись в кол центр во время ожидания в очереди, может набрать внутренний номер оператора, тем самым сделав звонок в обход статистики которую выдает Asternic.
2. Иногда клиенту нужен определенный оператор, так как до этого работа производилась с ним. И оба знают тему разговора. Итого клиент дозванивается на общий номер кол центра и попадает к случайному оператору, который не в теме. Чтобы не объяснять всю суть прошлого звонка, он  требует соединить его с оператором который обрабатывал его первый звонок. И тут случайный оператор начинает переводить звонок на требуемого оператора. Делая перевод на другого оператора, статистика в Asternic может не учитываться.
3. Каждый оператор может в ручную подсчитывать свои звонки за день и проверять их созвучность в веб интерфейсе CDR Viewer. Здесь всего скорей будет все один в один. Но в один прекрасный момент статистика между Asternic и CDR Viewer из за двух пунктов выше, может не совпадать. Тем самым создав разногласия между супервайзером и оператором.
Примечание: Для правильной статистики необходимо каждую ночь обнулять внутренний счетчик по очередям в Asterisk командой asterisk -rx "queue reload all" или asterisk -rx "queue reset stats". Запись должна быть в кроне на 23:59
Включаем AMI
Почти все веб интерфейсы используют специальный интерфейс управления Asterisk по имени AMI. То есть AMI позволяет клиентским программам (веб интерфейсам) соединяться с серверным Asterisk, отправлять ему команды и/или считывать события, происходящие в АТС, используя TCP/IP протокол.
Открываем файл /etc/asterisk/manager.conf
# vi /etc/asterisk/manager.conf
[general] enabled = yes webenabled = yes port = 5038 bindaddr = 0.0.0.0 ;Добавляем юзера [admin] secret = amp111 deny=0.0.0.0/0.0.0.0 permit=127.0.0.1/255.255.255.0 read = system,call,command,agent,user,originate write = system,call,command,agent,user,originate writetimeout = 500
Не забывайте после редактирования файла manager.conf делать команду:
# asterisk -rx "manager reload"
Здесь включен интерфейс AMI и добавлен пользователь admin с паролем adm111. Используя этого юзера Asternic будет взаимодействовать с Asterisk.
Установка Asternic Lite
# cd /usr/src
# wget http://download.asternic.net/asternic-stats-1.5.tgz
# tar zvxf asternic-stats-1.5.tgz
# cd asternic-stats
# mysqladmin -u root -p create qstatslite
# mysql -u root -p qstatslite < sql/qstats.sql
Примечание: По сути можно даже не создавать заранее базу, если базы нет, она автоматически будет создана, это прописано в файле "qstats.sql".
Теперь проверяем имя базы и другие параметры соединения с базой в файлах веб интерфейса:
# vi /usr/src/asternic-stats/html/config.php
$dbhost = 'localhost'; $dbname = 'qstatslite'; $dbuser = 'root'; // пользователь  "qstatsuser" $dbpass = ''; // пароль "qstatsPass" $manager_host = “127.0.0.1″; $manager_user = “admin”; $manager_secret = “amp111”; $language = “ru”;
Здесь главное изменить имя базы, пароль и поставить русский язык интерфейса.
# vi /usr/src/asternic-stats/parselog/config.php
$queue_log_dir  = '/var/log/asterisk/'; $queue_log_file = 'queue_log'; $dbhost = 'localhost'; $dbname = 'qstatslite'; // пароль "qstatsPass" $dbuser = 'root'; $dbpass = '';
Здесь главное изменить имя базы.
Теперь осталось настроить планировщик, чтобы данные из лог файлов поступали в базу MySQL:
# mv /usr/src/asternic-stats/html /var/www/html/queue-stats
# mv /usr/src/asternic-stats/parselog /usr/local
Каждый час будем забирать данные логов:
# cd /etc/cron.hourly
# vim queuestats
#!/bin/bash cd /usr/local/parselog ./parselog.php convertlocal
# chmod a+x queuestats
За час может многое изменится, и нас это не устраивает, давайте считывать каждую минуту, так информация в отчетах будет по актуальней.
Открываем планировщик:
# crontab -e
И добавляем туда строчку:
* * * * * /usr/bin/php -q /usr/local/parselog/parselog.php convertlocal
Запускаем для теста скрипт:
# ./queuestats
Если ничего не выводится то норма, если ошибка:
Error en la Base de Datos Error en la Base de Datos
Значить проблема - неправильно указана база данных, веден неверный пользователь или пароль к БД в файлах:
/var/www/html/queue-stats/config.php /usr/local/parselog/config.php
Такую ошибку также можно получит если установить свежею версию PHP или не до установить зависимости.
Заходим через браузер на : http://ip address asterisk/queue-stats
Большая картинка
Здесь мы можем выбрать очередь или очереди, а также учетные записи с номерами. Стоить отметить, что статистика собирается путем чтения лог файла очередей (queues_log). Данные с базы CDR DB туда не попадают!
Чтобы отчет от Asternic не показывал старые не актуальные данные по агенту (номеру), удалите этого агента из его базы.
#> mysql -u root -p qstats -e "DELETE FROM qagent WHERE agent='John Doe'"
Здесь в примере удален агент John Doe
Также вы можете удалить не нужные очереди.
#> mysql -u root -p qstats -e "DELETE FROM qname WHERE queue='Default'"
В примере удалена очередь Default
Установка панели FOP2
А этот веб интерфейс помогает мониторить активных и не активных внутренних абонентов. В общем эта панель управления операторами для супервайзера (начальник отдела кол центра). Полезный инструмент при работе кол центра с ограничением мониторинга только до 15 пользователей. То есть есть "насяльника" кол центра, которому необходимо видеть какое количество операторов на данный момент работает - сидит на телефоне и отвечает клиентам. Когда какой нибудь оператор уходить на обед ставя режим "Не беспокоить" он же DND на своем телефоне, супервайзер видит это мониторя панель FOP2. Обычно операторы и супервайзер сидят в одном кабинете типа "Open Space", когда видно всех операторов с одной места кабинета. И вот супервайзер видит самих операторов в живую и смотрит панель FOP2 где видно активные телефоны. Таким способом достигается контроль над операторами. У FOP2 также есть плагин для популярных браузеров таких как Chrome и Firefox.
Генератор лицензий: http://www.ansealk.ru/wiki/doku.php?id=fop2_s_licenziej
Качаем FOP2 панель:
# cd /usr/src
# wget http://download2.fop2.com/fop2-2.30.06-centos-x86_64.tgz
# tar -xf fop2-2.30.06-centos-x86_64.tgz
# cd fop2 && make install
Добавляем нового пользователя fop2 с паролем fop222:
# vim /etc/asterisk/manager.conf
[fop2] secret = fop222 deny = 0.0.0.0/0.0.0.0 permit = 127.0.0.1/255.255.255.0 read = all write = all writetimeout = 1000 eventfilter=!Event: RTCP* eventfilter=!Event: VarSet eventfilter=!Event: Cdr eventfilter=!Event: DTMF eventfilter=!Event: AGIExec eventfilter=!Event: ExtensionStatus eventfilter=!Event: ChannelUpdate eventfilter=!Event: ChallengeSent eventfilter=!Event: SuccessfulAuth
# asterisk -rx "manager reload"
Добавляем только что созданного пользователя AMI в настройки fop2 панели:
# vim /usr/local/fop2/fop2.cfg
[general] ; AMI definitions manager_host=localhost manager_port=5038 manager_user=fop2 manager_secret=fop222
Проверяем что все нормально:
# /usr/local/fop2/fop2_server --test
Flash Operator Panel 2 - License file fop2.lic not found. Running in Demo Mode Connection to manager OK!
И запускаем fop2 панель:
# service fop2 start
Чтобы зайти в нее, пройдите по ссылке http://ваш_ип/fop2
Но прежде, требуется создать юзера под которым можно заходить, для этого нужен fop2 manager, установка которого описана чуть ниже.
Большая картинка
Установка FOP2 менеджера
Качаем менеджер FOP2:
# wget http://download2.fop2.com/plugins/fop2manager-1.1.5.tgz
Распаковываем его в каталог веб сервера Apache:
# tar -xf fop2manager-1.1.5.tgz -C /var/www/html/fop2/
Создаем базу для fop2 manager:
# mysqladmin -u root -p create fop2
# cd /var/www/html/fop2/admin
# mysql -u root -p fop2  < install.sql
# mysql -p
> GRANT ALL PRIVILEGES ON fop2.* TO  fop2@localhost  IDENTIFIED BY ''; > exit
Заходим на адрес: http://ваш_IP/fop2/admin/
Вводим логин и пароль "fop2admin"
Большая картинка
Добавляем номер 800:
Большая картинка
Разрешаем номеру 800 (он должен существовать в sip.conf)  все и нажимаем кнопку "Submit Changes", после 10 секунд можно залогинится в панели по адресу http://ваш_ип/fop2
Теперь идем в FOP2 Панель по адресу http://ваш_IP/fop2/ и вводим номер 800 с паролем 1234 и видим зелень:
Большая картинка
Так как панель с ограничениями на 15 номеров, то из за этого, нам необходимо выборочно контролировать какие номера больше всего нужно мониторить, в меню Buttons это можно провернуть, на картинке я убрал номер 850 из панели:
Большая картинка
Также вы можете убрать не нужные очереди, отключив их.
Если FOP2 некоректно отображает статусы, включите отладочный режим:
# /usr/local/fop2/fop2_server -X 511 -l /var/log
# tail -f fop2_debug.log  |xargs -IX printf "$(date -u)\t%s\n" X > /var/log/fop2_debug_timestamps.log &
Примечание: FOP2 менеджер работает плохо, рекомендуется не устанавливать его. При этом добавить пользователей можно через правку двух файлов /usr/local/fop2/fop2.cfg и /usr/local/fop2/buttons.cfg, смотрит пример внизу.  Если надо поменять отображение, отредактируйте файл /var/www/html/fop2/css/operator.css
Примерно это выглядит так:
fop2.cfg - разрешаем админский номер:
user=800:1234:all:queues:all ; user=621:1234:dial,transfer,pickup:deptA ; user=622:1234:all ; user=623:1234:meetme,pickup buttonfile=buttons.cfg
buttons.cfg - настраиваем окошки:
[SIP/800] type=extension extension=800 context=outcoming-sip label=800 Felicia [SIP/801] type=extension extension=801 context=outcoming-sip label=801 Nutra [SIP/802] type=extension extension=802 context=outcoming-sip label=802 PIpec
Проблема с веб интерфейсами
Иногда если поднять из бекапа веб интерфейс или обновить некоторые PHP пакеты, сайт перестает нормально функционировать, например не открывается страница или ваш введенный логин не воспринимается. Чтобы решить такой глюк, попробуйте поиграться с правами и каталогом который хранит сессии PHP:
# сhown asterisk:asterisk /var/lib/php/sessions
или
# vim /etc/php.ini
;session.save_path = "/var/lib/php/session" session.save_path = "/tmp"
Установка Real Time Asterisk GUI (RTAG) менеджера
Этот интерфейс помогает удобно прослушивать аудио записи звонков, когда проблемный клиент орет, можно доказать что он был не прав. К сожалению все ссылки на файл rtag.zip сдохли. Поэтому пришлось искать альтернативный источник. Кстати о минусе, этот веб интерфейс не ищет номер в базе по шаблону, то есть если ввести номер 2755343, он не найдет номера с дополнительной цифрой впереди или в конце, например 82755343 или 27553438. Поэтому на роль работы с базой звонков, подходит лучше CDR Viewer и его клоны. Можно конечно доработать этот момент в самом коде RTAG, но зачем оно нужно, когда есть альтернативы. Также через RTAG можно управлять станицей через AGI, этот момент я не тестировал, так как нет надобности.
Качаем файл rtag.tgz http://ifolder.su/45199538 в каталог /usr/src/
# tar zvxf rtag.tgz
# mv rtag /var/www/html
# cd /var/www/html/rtag
Меняем настройки доступа к БД CDR Asterisk:
# vim conf.php
$dcdr = 'asteriskcdrdb.cdr'; //База.таблица //Соединение с базой RTAG function mysql_link(){ $rtag['host']='localhost'; //Сервер $rtag['user']='asteriskcdr'; //Пользователь $rtag['passwd']='password'; //Пароль $rtag['name']='asteriskcdrdb'; //База данных $rtag_connect=mysql_connect($rtag['host'],$rtag['user'],$rtag['passwd']) or die('Could not connect to database RTAG!'); mysql_select_db($rtag['name'],$rtag_connect); mysql_query("SET NAMES utf8"); } //Соединение с базой Asterisk CDR function mysql_link_cdr(){ global $billing_cdr; $cdr['host']='localhost'; //Сервер $cdr['user']='asteriskcdr'; //Пользователь $cdr['passwd']='password'; //Пароль $cdr['name']='asteriskcdrdb'; //База данных $cdr['table']='cdr'; //Таблица $cdr_connect=mysql_connect($cdr['host'],$cdr['user'],$cdr['passwd']) or die('Could not connect to database CDR!'); mysql_select_db($rtag['name'],$cdr_connect);
Заходим по адресу http://ip_адрес/rtag/
Большая картинка
Здесь видно кто кому звонил. Если вы настроили запись звонков через команду MixMonitor, и хотите чтобы воспроизведения записей было через RTAG, сделайте следующее - создайте символьную ссылку в каталоге RTAG на папку с записями, например:
# cd /var/www/html/rtag/ # ln -s /var/spool/asterisk/monitor/ monitor
Wallboard Admin
В кол центре для мониторинга очередей удобно юзать Wallboard Admin. Вся эта инфа по очередям выводится на большой экран ЖК телевизора, через него хорошо просматривать количество абонентов онлайн, дозвонившихся, недозвонившихся, среднее время разговора и удержания в очередях. Для этого интерфейса нужен PHPAGI.
Чтобы интерфейс показал статистику, необходимо:
  • Иметь в очереди принимающих звонки абонентов, узнать можно по команде: asterisk -rx "queue show <queue name>" со статусом "Not in use"
  • В браузерах разрешить выполнение JavaScript и т.д., в противном случае можно увидеть пустой экран
Качаем PHPAGI:
# cd /usr/src
# wget https://sourceforge.net/projects/phpagi/files/phpagi/2.20/phpagi-2.20.tgz/download -O phpagi-2.20.tgz
# tar zvxf phpagi-2.20.tgz
# cd phpagi-2.20
# cp php*.php /etc/asterisk
Отредактируем файл AMI и добавляем туда нового пользователя asmanager с паролем password:
# vim /etc/asterisk/manager.conf
Добавим пользователя phpagi:
[asmanager] secret = password ; пароль для доступа deny=0.0.0.0/0.0.0.0 ; запрет для ip или подсети permit=127.0.0.1/255.255.255.0 ; разрешение для ip или подсети read = system,call,log,verbose,command,agent,user,originate ; какие команды имеем право выполнять write = system,call,log,verbose,command,agent,user,originate "/etc/asterisk/manager.conf" 184L, 7605C
Редактируем файл phpagi и проверяем чтобы был наш созданный пользователь asmanager
# vim /etc/asterisk/phpagi.conf
[phpagi] tempdir=/tmp [asmanager] server=localhost port=5038 username=asmanager secret=password
# mkdir -p /var/www/html/admin/wallboard
# cd /var/www/html/admin/wallboard
# wget http://getbootstrap.com/2.3.2/assets/bootstrap.zip
# yum install unzip -y
# unzip bootstrap.zip
# wget http://sysadminman.net/misc/phpagi-2.20.tgz
# tar xvfz phpagi-2.20.tgz
# ln -s phpagi-2.20 phpagi
# wget http://sysadminman.net/misc/astwb-1.0.tar.gz
# tar xvfz astwb-1.0.tar.gz
Теперь требуется поменять настройки соединения с базой данных:
# vi cdr.php
$db = 'asteriskcdrdb'; $db_admin = 'asteriskcdrdb'; $db_password = 'password'; $tablename = 'cdr';
Если зайти по ссылке http://ip/admin/wallboard, должна выйти панель:
Большая картинка
MonAST
Данная панель похожа на Fop2, только она Open Source, и поэтому в нем нет пресловутых ограничений в 15 юзеров как в FOP2!
Устанавливаем зависимости:
# yum install python-devel python-crypto pyOpenSSL python-zope-interface python-twisted* -y
Устанавливаем starpy:
# cd /usr/src
# wget http://downloads.sourceforge.net/project/starpy/starpy/1.0.0a13/starpy-1.0.0a13.tar.gz
# tar zvxf  starpy-1.0.0a13.tar.gz
# cd starpy-1.0.0a13
# python setup.py install
Устанавливаем Pear модули:
# pear install DB HTTP_Request2 HTTP_Client
Установим MonAst:
# cd /usr/src
# wget https://sourceforge.net/projects/monast/files/Monast%20for%20Asterisk%201.4%2C%201.6%20and%201.8/3.0b4/monast-3.0b4.tar.gz/download -O monast-3.0b4.tar.gz
# tar zvxf   monast-3.0b4.tar.gz
# cd monast-3.0b4
# ./install.sh
Открываем manager.conf и добавляем туда пользователя MonAst:
# vi /etc/asterisk/manager.conf
[monast] secret=monast writetimeout=100 deny=0.0.0.0/0.0.0.0 permit=127.0.0.1/255.255.255.0 read=system,call,log,verbose,command,agent,user,config,originate,reporting write=system,call,log,verbose,command,agent,user,config,originate,reporting
Не забывайте после редактирования файла manager.conf делать команду:
# asterisk -rx "manager reload"
Настраиваем MonAST:
# vim /etc/monast.conf
[global] # Bind client connetions on host:port bind_host = 127.0.0.1 bind_port = 5039 # Use client autentication on browser auth_required = false ## ## Servers Definitions ## [server: Server_1] # Server name can not contains space hostname = 127.0.0.1 hostport = 5038 username = monast password = monast # Default user context default_context = default # Context to use in transfer calls transfer_context = default # Context and prefix for meetme meetme_context = default meetme_prefix  = ***************** *************** *************** *************
Запускаем MonAST:
# /etc/init.d/monast start
И ставим его в автозагрузку:
# systemctl enable monast
И заходим в веб интерфейс по адресу http://your_ip/monast/index.php
Большая картинка
На экране криво отображаются Caller ID информация двух внутренних телефонов менеджеров, поэтому лучше не используйте русский CallerID.
Если у вас много номеров и вам надо мониторить только выборочно, в таком случае можно исключить номера и очереди через файл /etc/monast.conf, например:
[peers] # hide peer when default = show ;<Server Name>/SIP/user-1 = hide Server_1/SIP/209 = hide Server_1/SIP/201 = hide Server_1/SIP/207 = hide Server_1/SIP/228 = hide
Здесь в примере я убрал номера 209, 201, 207 и 228 из вида в панели.
Аналогичным образом снимаются с мониторинга очереди, надо зайти в секцию [queues]:
[queues] # defualt show/hide # hide queue queue03 ;<Server Name>/queue03 = hide hide queue managers;
В примере скрыт показ мониторинга очереди "managers".
Обязательно после изменений файлов перезагружайте демон Monast:
# service monast restart
Ручные запросы к базе
Искать информацию с помощью веб интерфейсов временами бывает проблематично, поэтому проще напрямую брать данные с БД со звонками. В этом разделе показаны примеры некоторых простых запросов.
Например давайте найдем все входящие звонки по городскому номеру 2755222, в разрезе очереди "company-railways" по период с 2016-11-14 от 2016-11-25,  и поместим полученные данные в файл /tmp/order_city.csv:
SELECT 'id','calldate','clid','src','dst','direction','dcontext','channel','dstchannel','lastapp','lastdata','duration','billsec','disposition','amaflags','accountcode','uniqueid','userfield','linkedid','sequence' UNION ALL SELECT id,calldate,clid,src,dst,direction,dcontext,channel,dstchannel,lastapp,lastdata,duration,billsec,disposition,amaflags,accountcode,uniqueid,userfield,linkedid,sequence  FROM cdr WHERE channel LIKE "%2755222%" and lastdata like "%company-railways%" and DATE(calldate) between '2016-11-14' and '2016-11-25' INTO OUTFILE '/tmp/orders_city.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';
Это уже другой запрос, который просто выводит из таблицы "cdr" поля "calldate,src,clid,dst,filename" с ограничением в 100 строк:
select calldate,src,clid,dst,filename from cdr ORDER BY ID DESC LIMIT 100;
Редактирование веб интерфейсов
Используемые веб интерфейсы кроме FOP2 поставляются по лицензии GPL, а это значить, что исходный код открыт и мы можем редактировать его, дополняя своими новыми возможностями. Разумеется понадобятся знания в PHP, возможно MySQL, CSS и HTML. В интернете много обучающих материалов, изучив которые, вы сможете вносить свои изменения в популярные веб морды для Asterisk.
Ссылки:
1. Links - замена fop2
2. http://videooko.net/asterisk-%D0%BF%D1%80%D0%BE%D1%81%D1%82%D0%BE%D0%B9-%D0%BC%D0%BE%D0%BD%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%BD%D0%B3-sip-%D0%BE%D0%BF/
Ad

Rate post

13

Comments

Login to comment