CDR (Call Data Record), позволяет в MySQL базе данных вести статистику активности звонков.
На тесте настрою Asterisk CDR и Asterisk CDR Viewer в Ubuntu Server.
Предположим что Asterisk уже установлен.
sudo apt-get install mysql-server php5-mysql apache2 git sudo service apache2 restart
Приступим к созданию базы данных в которую будут сохранятся записи о звонках.
Подключимся к MySQL:
mysql -u root -p
Создадим базу данных:
CREATE DATABASE asteriskcdrdb;
Создадим пользователя asteriskcdr:
GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asteriskcdr@localhost IDENTIFIED BY 'ПАРОЛЬ'; flush privileges;
Переключимся на базу asteriskcdrdb:
use asteriskcdrdb;
И создадим таблицу:
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`) );
На этом создание базы завершено, теперь перейдем к настройке конфигурационного файла /etc/asterisk/cdr_mysql.conf, стандартно все строки в нем закомментированы.
Раскомментируем и укажем параметры для подключения к mysql базе в секции [global]:
[global] hostname=localhost dbname=asteriskcdrdb table=cdr password=ПАРОЛЬ user=asteriskcdr
В файле конфигурации модулей /etc/asterisk/modules.conf должен быть прописан на загрузку модуль cdr_mysql.so:
load => cdr_mysql.so
Вручную из консоли asterisk его можно загрузить так:
sudo asterisk -rvv module load cdr_mysql.so module show like cdr_mysql.so
После загрузки модуля при поступлении звонков должны заносится данные в базу, посмотрим есть ли что-то:
mysql -u root -p use asteriskcdrdb; select * from cdr;
По сути теперь можно использовать данные из базы любым удобным способом, например дописать к какому нибудь биллингу скрипты статистики и графиков.
Мы же настроим готовый Asterisk CDR Viewer.
Скачаем файлы и переместим в директорию веб-сервера:
cd /tmp/ git clone https://github.com/g613/asterisk-cdr-viewer/ cd asterisk-cdr-viewer tar -xzvf asterisk-cdr-viewer-latest.tgz mv asterisk-cdr-viewer /var/www/asterisk-cdr-viewer chown -R www-data:www-data /var/www/
Русскую версию можно найти тут https://github.com/prog-it/Asterisk-CDR-Viewer-Mod
Скопируем файл с веб-конфигурацией в директорию с веб-сервером apache2:
cp /var/www/asterisk-cdr-viewer/contrib/httpd/asterisk-cdr-viewer.conf /etc/apache2/conf-enabled/asterisk-cdr-viewer.conf service apache2 restart
Укажем настройки подключения к базе данных для Asterisk-CDR-viewer в файле /var/www/asterisk-cdr-viewer/include/config.inc.php
После чего уже можно будет просматривать статистику открыв в браузере http://СЕРВЕР/acdr
В версии 1.0.9 заметил опечатку в коде, из-за которой отображался белый экран а в логах была ошибка:
PHP Parse error: syntax error, unexpected ‘[‘ in /var/www/asterisk-cdr-viewer/index.php on line 23
Для исправления откроем файл index.php и в конце 23 строки увидим пропущенный символ $:
$startmonth = is_blank($_REQUEST['startmonth']) ? date('m') : printf('%02d',_REQUEST['startmonth']);
Должно быть так:
$startmonth = is_blank($_REQUEST['startmonth']) ? date('m') : printf('%02d',$_REQUEST['startmonth']);
Все.