Настройка Asterisk CDR и Asterisk CDR Viewer

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']);

Все.

Сейчас на сайте

Сейчас на сайте 0 пользователей и 7 гостей.