Asterisk Call Center Stats - статистика колл-центра

Интерфейс статистики очереди - Queue Stats.
Прямой лог в нативную базу данных Asterisk.
Описание, скачать, установка и настройка.

Call Center Stats Demo login: admin pass: queue_stats


Требования

PHP >= 5.4


Описание Asterisk Call Center Stats

  • Хранилище - нативная БД логгера Asterisk.
  • Mysqli, оптимизированые запросы к БД.
  • Отдельные таблицы агентов и очередей с синхронизацией по требованию.
  • Визуализация - Google Charts.
  • Почасовая выборка.
  • Детализация принятых,пропущенных и исходящих вызовов.
  • Поиск по Uniqueid, CallerID и агентам в принятых, пропущенных вызовах.
  • Отображение записей разговоров, custom или FreePBX совместимые.
  • Экспорт в csv и pdf.
  • Авторизация через FreePBX.
  • Русский и английский интерфейсы.
  • Реалтайм панель очередей.
  • Приложение адаптировано для работы с FreePBX установкой.

Отчеты Asterisk Call Center Stats

Realtime

Статистика очередей, статус агентов и вызовов в режиме реального времени.

Сортировка

  • Выборка данных по: очередям, агентам, дате и времени.

Отвеченные вызовы

  • Отвеченные вызовы по очередям и агентам.
  • Среднее время ожидания для очередей и агентов.
  • Среднее время разговора для очередей и агентов.
  • Количество отвеченных вызовов по агентам.
  • Процент отвеченных вызовов для очередей и агентов.
  • Распределение вызовов по периодам ожидания перед ответом оператора.
  • Распределение по продолжительности разговора.
  • Детализация с возможностью прослушать и скачать запись разговора. Поиск и сортировка по агентам и callerid.
  • Сравнение кол-ва принятых/пропущенных вызовов по очередям.

Неотвеченные вызовы. Распределение по периодам. Поиск.

  • Количество неотвеченных вызовов по очередям.
  • Средняя позиция в очереди при выходе.
  • Причина разъединения: повесили трубку или отключены по таймауту.
  • Распределение неотвеченных вызовов по очередям и периодам ожидания перед выходом из очереди.
  • Детализация пропущенных вызовов. Поиск по callerid.
  • Распределение отвеченных/пропущенных вызовов по часам, дням недели и месяцам.
  • Поиск по 'сырой' базе данных.

Исходящие вызовы выбранных агентов

Отчет комбинирует данные из cdr и queue_log и требует чтобы CallerIdName и имена агентов совпадали.
А также чтобы таблица лога очереди находилась в той же БД, что и таблица cdr.

Установка Asterisk Call Center Stats

Для установки Asterisk Call Center Stats вам потребуется:
  1. Включить запись лога очередей в БД MySQL через ODBC.
  2. Задать имя пользователя и пароль базы данных
    в конфиге Asterisk Call Center Stats.

Включим лог очереди Asterisk в БД MySQL

По умолчанию данные статистики очереди сохраняются в текстовый лог var/log/asterisk/queue_log. Назначим для хранения данных таблицу БД MySQL - asteriskcdrdb.queuelog

Если вы используете FreePBX, то база данных asteriskcdrdb уже существует. Просто создайте в ней требуемые таблицы и используйте для подключения odbc family созданный FreePBX для cdr.
mysql -u root -p
MariaDB >use asteriskcdrdb;
CREATE TABLE IF NOT EXISTS `queuelog` (
`id` INT NOT NULL AUTO_INCREMENT,
`time` char(32) DEFAULT NULL,
`callid` char(64) DEFAULT NULL,
`queuename` char(64) DEFAULT NULL,
`agent` char(64) DEFAULT NULL,
`event` char(32) DEFAULT NULL,
`data` char(64) DEFAULT NULL,
`data1` char(64) DEFAULT NULL,
`data2` char(64) DEFAULT NULL,
`data3` char(64) DEFAULT NULL,
`data4` char(64) DEFAULT NULL,
`data5` char(64) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;


CREATE TABLE IF NOT EXISTS `agents_new` (
`id` MEDIUMINT NOT NULL AUTO_INCREMENT,
`agent` char(64) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `queues_new` (
`id` MEDIUMINT NOT NULL AUTO_INCREMENT,
`queuename` char(64) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

В файле /etc/asterisk/logger.conf (logger_general_custom.conf для FreePBX) выключим лог в файл, если он больше не нужен, но можно вести оба лога одновременно:

 queue_log_to_file = no

В файле /etc/asterisk/asterisk.conf добавьте в раздел options:

 [options]
 queue_adaptive_realtime = no

В файле настроек реалтайм /etc/asterisk/extconfig.conf определим драйвер, family и таблицу назначения:

 [settings]
 queue_log => odbc,asteriskcdrdb,queuelog

где asterisk - db конфиг, например в /etc/asterisk/res_odbc_custom.conf

Если файл extconfig.conf не существует, создайте его командой:
 touch /etc/asterisk/extconfig.conf

и задайте права:

 chown asterisk. /etc/asterisk/extconfig.conf

/etc/asterisk/res_odbc_custom.conf

Как уже отмечалось выше, asteriskcdrdb создается FreePBX при установке и тогда настройки в /etc/asterisk/res_odbc_custom.conf и /etc/odbc.ini не требуются.
Под катом подробнее.

Нажмите, чтобы отобразить

Нажмите, чтобы скрыть

[asteriskcdrdb]
enabled => yes
dsn => asteriskcdrdb
username => dbuser
password => dbpass
pre-connect => yes

где DSN, настройки из файла

/etc/odbc.ini

[asteriskcdrdb]
Description=MySQL connection to 'asteriskcdrdb' database
driver=MySQL
server=localhost
database=asteriskcdrdb
Port=3306
Socket=/var/lib/mysql/mysql.sock

Примените конфигурацию

 asterisk -rx 'core restart now'
'core restart now' - разорвет все текущие вызовы

Проверьте соединение Asterisk c базой данных через odbc:

# asterisk -rx 'odbc show'

ODBC DSN Settings
-----------------

  Name:   asteriskcdrdb
  DSN:    asteriskcdrdb
    Last connection attempt: 1970-01-01 06:00:00
    Number of active connections: 1 (out of 1)

Скачать Asterisk Call Center Stats

Скачайте, распакуйте и задайте права:

   cd /var/www/html
 
   wget https://asterisk-pbx.ru/wiki/_media/soft/call_center/queue-stats_v_9_8.tar.gz
 
   tar zvxf queue-stats_v_9_8.tar.gz
 
   chown -R asterisk. queue-stats/
 
   cd queue-stats

Конфиг Asterisk Call Cetnter Stats

Отредактируйте файл config.php в соответствии в вашими данными, где

  • $DBServer - хост (localhost)
  • $DBUser - Пользователь БД.
  • $DBPass - Пароль БД.
  • $DBName - Имя БД для queuelog.
  • $DBAstName - Имя БД FreePBX.
  • $DBTable - Имя таблицы БД.
Измените пароль на пароль вашей установки. Пароль можно посмотреть в файле /etc/asterisk/res_odbc_additional.conf (для последних версий freepbx).
$DBServer = 'localhost';
$DBUser   = 'freepbxuser';
$DBPass   = '';
$DBName   = 'asteriskcdrdb';
$DBAstName   = 'asterisk';
$DBTable   = 'queuelog';

Откройте статистику в вашем любимом веб браузере:

http://ip.address/queue-stats

Для добавления агентов и очередей, нажмите соответствующие кнопки:
Синхронизировать:
Очереди Агентов

Запрос сделает выборку уникальных имен agents и queues и поместит их в таблицы agents_new и queues_new.
Для того чтобы сущности проявились, в таблице queuelog должна существовать хотя бы одна запись о вызове поступившем в очередь.

В дальнейшем, если у вас появились новые агенты или очереди, просто синхронизируйте данные для отображения статистики по ним. Данные о вызовах сохраняются независимо от синхронизации, потому что за это отвечает непосредственно логгер очереди Asterisk.

Записи разговоров FreePBX в интерфейсе статистики

В версии 0.9.8 отображение записей работает «из коробки». Путь к файлу берется из значения поля recordingfile asteriskcdrdb.cdr. Чтобы это работало, таблица лога очереди должна находиться в бд asteriskcdrdb.
Под катом описан альтернативный способ.

Нажмите, чтобы отобразить

Нажмите, чтобы скрыть

Для отображения записей разговоров в статистике, скопируйте приведенный ниже контекст в файл /etc/asterisk/extensions_override_freepbx.conf.
В примере приведен контекст [sub-record-check] из FreePBX Distro 14.


extensions_override_freepbx.conf


Или модифицируйте по такой же схеме контекст из вашей системы, добавив туда кастомное событие очереди - REC.

exten => recordcheck,n,Queuelog(recordcheck,${UNIQUEID},NONE,REC,${CALLFILENAME})
Нельзя отредактировать контекст FreePBX прямо в файле extensions_additional.conf , но можно поместить модифицированную версию в extensions_override_freepbx.conf

Если вы используете 'чистый' Asterisk, вы может поступить таким же образом в контексте вызова очереди, добавив вместо переменной ${CALLFILENAME}, имя файла записи разговора в соответствии с используемой вами схемой.
Дополнительная информация о логе очереди и команде QueueLog().

Авторизация через аккаунты FreePBX

Для включения авторизации с паролем FreePBX, расскоментируйте следующий код в файле config.php.

Таким образом, вы сможете авторизоваться при помощи любого аккаунта созданного в FreePBX > Admin > Administrators, например с ограниченными правами доступа к модулям самой FreePBX.

$confpbx = new mysqli($DBServer, $DBUser, $DBPass, $DBAstName);
$confpbx->set_charset('utf8');
 
$user = $_SERVER['PHP_AUTH_USER'];
$pass = $_SERVER['PHP_AUTH_PW'];
 
$valid_passwords2 = $confpbx->query("SELECT password_sha1 FROM ampusers WHERE username = '$user'");
$valid_passwords = $valid_passwords2->fetch_row();
 
$validated = (sha1($pass) == $valid_passwords[0]);
 
if (!$validated) {
	header('WWW-Authenticate: Basic realm="fs-tst"');
	header('HTTP/1.0 401 Unauthorized');
	die("Not authorized");
}
 
$valid_passwords2->free();

Настройка AMI и AJAM для модуля Realtime

Пакет php-curl должен быть установлен.
В корневой директории приложения должен быть создан файл ajam_cookie:

touch ajam_cookie &&
chmod 777 ajam_cookie

Со стороны Asterisk требуется только включить AJAM: /etc/asterisk/manager.conf

[general]
enabled = yes
port = 5038
bindaddr = 0.0.0.0
webenabled = yes
httptimeout = 60

создать пользователя AMI

[ajamuser]
secret = PASSWORD
deny = 0.0.0.0/0.0.0.0
permit = 127.0.0.1/255.255.255.0
read = system,agent,reporting
write = system,agent,reporting

и включить встроенный http сервер в

/etc/asterisk/http.conf

[general]
enabled=yes
enablestatic=yes
bindaddr=0.0.0.0
bindport=8088
prefix=asterisk

или для FreePBX:
Settings > Advanced Settings


Тест AJAM интерфейса

freepbx*CLI> http  show status 
HTTP Server Status:
Prefix: /asterisk
Server: Asterisk/15.5.0
Server Enabled and Bound to 0.0.0.0:8088

HTTPS Server Enabled and Bound to [::]:8089

Enabled URI's:
/asterisk/httpstatus => Asterisk HTTP General Status
/asterisk/amanager => HTML Manager Event Interface w/Digest authentication
/asterisk/arawman => Raw HTTP Manager Event Interface w/Digest authentication
/asterisk/manager => HTML Manager Event Interface
/asterisk/rawman => Raw HTTP Manager Event Interface
/asterisk/static/... => Asterisk HTTP Static Delivery
/asterisk/amxml => XML Manager Event Interface w/Digest authentication
/asterisk/mxml => XML Manager Event Interface
/asterisk/ws => Asterisk HTTP WebSocket

Enabled Redirects:
  None.

И наконец задайте данные для подключения к AMI/AJAM в файле config.php приложения:

$config['urlraw'] = 'http://127.0.0.1:8088/asterisk/rawman';
$config['admin'] = 'ajamuser';
$config['secret'] = 'PASSWORD';
$config['authtype'] = 'plaintext';
$config['cookiefile'] = null;
$config['debug'] = false;
sip.conf
[general]
callcounter => yes

Пример визуализации данных лога очереди Asterisk при помощи Google Charts (добавлено в текущую версию)


Другие страницы с тегом 'queue':

Asterisk app AddQueueMember

Asterisk: PauseQueueMember

Команда Asterisk: Queue

Asterisk app: QueueLog

Asterisk: RemoveQueueMember

Asterisk: UnpauseQueueMember

Asterisk: agents.conf

Asterisk queuerules.conf

Asterisk настройка очереди - queues.conf

Asterisk function 'CURL'

function 'QUEUE_EXISTS'

function 'QUEUE_MEMBER'

function 'QUEUE_MEMBER_LIST'

Функция диалплана Asterisk: QUEUE_VARIABLES

function 'QUEUE_WAITING_COUNT'

Asterisk: queue_log в MySQL через unixODBC

Handlebars Helper LastCall Queue Agent

FreePBX Очереди - Queue

Freeswitch: mod_callcenter

Asterisk Колл Центр

Только авторизованные участники могут оставлять комментарии.
  • soft/call_center/asternic-call-center-stats.txt
  • Последние изменения: 2019/08/09