Настройка 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:

CREATE USER 'asteriskcdr'@'localhost' IDENTIFIED BY 'ixnfo.com';
GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO  asteriskcdr@localhost;
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
noload => cdr_radius.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/

Русскую версию можно найти тут (поддерживает HTML5 вместо устаревшего Flash Player):
https://github.com/prog-it/Asterisk-CDR-Viewer-Mod
https://files.ixnfo.com/Soft/Asterisk-CDR-Viewer-Mod-master.zip

Скопируем файл с веб-конфигурацией в директорию с веб-сервером 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']);

Готово.

Смотрите также мои статьи:
Настройка ODBC для Asterisk
Решение ошибки «rc_avpair_new: unknown attribute 1490026597»

Вливайтесь в общение

3 комментария

Добавить комментарий

  1. Доброго,
    подскажите пожалуйста — есть ли возможность разграничить пользователям CDR Viewer права доступа на просмотр статистики и прослушивания разговоров на те или иные транки или пиры?
    То есть пользователь user01 может слушать только звонки прошедшие через транк — from_siptel, но не может слушать from_5060, а пользователь su может слушать вообще всё что угодно.

  2. Добрый день!
    Помогите пожалуйста!
    Есть:
    Установленный и рабочий asterisk Asterisk 11.11.0 на CentOS release 6.7 (Final) без графической оболочки.
    Информация о разговорах пишется в mysql.
    Apache/2.2.15 (Unix)
    PHP 5.3.3 (cli)
    mysql-libs-5.5.45-1.el6.remi.x86_64
    compat-mysql51-5.1.54-1.el6.remi.x86_64
    mysql-server-5.5.45-1.el6.remi.x86_64
    mysql-devel-5.5.45-1.el6.remi.x86_64
    mysql-5.5.45-1.el6.remi.x86_64
    php-mysql-5.3.3-49.el6.x86_64

    Делаю все по вашей статье https://ixnfo.com/asterisk-cdr.html
    до:
    Скопируем файл с веб-конфигурацией в директорию с веб-сервером apache2:
    cp /var/www/asterisk-cdr-viewer/contrib/httpd/asterisk-cdr-viewer.conf /etc/apache2/conf-enabled/asterisk-cdr-viewer.conf
    service apache2 restart

    нет у меня папки /etc/apache2
    создать вручную ничего не решает.
    что в ней должно лежать?
    что установить чтобы она появилась?

    iptables — отключал.
    если открыть http://СЕРВЕР/ — отображается тестовая страница apache
    если открыть http://СЕРВЕР/acdr — The requested URL /acdr was not found on this server.

    1. У вас наверно какая-то панель управления сервером установлена, и конфигурации Apache2 в другом месте, смотрите документацию к панели. Если cPanel, то я писал в этой статье пути к конфигурациям https://ixnfo.com/raspolozhenie-faylov-konfiguratsii-cpanel-whm.html