8(499)-709-97-83
Работаем с 8:00 до 19:00

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

  • 03 мая 2015

CDR (Call Data Record) содержит информацию о всех звонках, которые обрабатывала IPPBX(в нашем случае Asterisk) в том числе несостоявшихся. Многим администраторам, которые обслуживает телефонию CDR являются источником информации, с которого следует начинать диагностику проблемы.

В сегодняшней статье мы расскажем как записывать Asterisk CDR в базу данных MySQL и как просматривать эти самые записи с помощью Asterisk CDR Viewer.

Для настройке на сервере уже должны быть установлены MySQL,Asterisk, Apache, PHP. Мы будем производить настройки на сервере CentOS 6.6 с Asterisk 13.

 

Приступим

Первым делом нам нужно создать базу данных и пользователя этой базы данных где будут храниться наши CDR.

Подключаемся к MySQL:

#mysql –uroot –ppassword

Создаем базу данных:

mysql> CREATE DATABASE asteriskcdrdb;

Даем доступ для пользователя asteriskcdr с паролем 'ваш пароль' к базе asteriskcdrdb только с localhost :

mysql> GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO  asteriskcdr@localhost  IDENTIFIED BY 'ваш пароль';
mysql> flush privileges;

Подключаемся к созданной базе asteriskcdrdb:

mysql> 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`)
);

Теперь нам нужно настроить Asterisk, чтобы он знал куда писать CDR. Переходим в файл /etc/asterisk/cdr_mysql.conf расскоментируем и вносим следующие изменения:

[global]
hostname=localhost        - ip адрес где располагается сервер MySQL
dbname=asteriskcdrdb      – название базы данных где будут храниться cdr
table=cdr                 - название таблицы
password= password        -пароль для пользователя asteriskuser
user= asteriskcdr         - имя пользователя для базы данных
;port=3306
;sock=/tmp/mysql.sock
;timezone=UTC ; Previously called usegmtime

Переходим в консоль Asterisk и выполняем команду :

module load cdr_mysql.so

Убедимся, что модуль загружен и работает:

module show like cdr_mysql.so

После этого перезагрузите Asterisk и убедимся, что вызовы записываются в базу: 1.Сделайте любой исходящий вызов, чтобы он прошел через ваш Asterisk. 2. Зайдите в MySQL. 3. Подключитесь к базе asteriskcdrdb :

use asteriskcdrdb;
4. Сделайте общий Select:
select * from cdr;

Если в выводе вы увидите свой вызов, то значит CDR пишутся корректно и все работает.

   

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

Если настройки записи CDR в базу данных были выполнены правильно, то можно приступить к настройке Asterisk CDR Viewer.

Скачиваем asterisk-cdr-viewer-1.0.2.tgz в папку /var/www и разархивируем

wget https://asterisk-cdr-viewer.googlecode.com/files/asterisk-cdr-viewer-1.0.2.tgz
tar -xzvf asterisk-cdr-viewer-*.tgz

Переносим файл алиаса в папку с httpd

cp asterisk-cdr-viewer/contrib/httpd/asterisk-cdr-viewer.conf /etc/httpd/conf.d/

Изменяем настройки подключения к БД для Asterisk-CDR-viewer

nano /var/www/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/

   

Посмотрим результаты вывода:

   

По умолчанию доступ к просмотру статистики имеют все пользователи, исправим это сделав доступ через авторизацию.

В /etc/httpd/conf.d/asterisk-cdr-viewer.conf расскоментируем все строки:

Alias /acdr/ "/var/www/asterisk-cdr-viewer/"


        AuthName "Asterisk-CDR-Stat"
        AuthType Basic
        AuthUserFile /var/www/asterisk-cdr-viewer/.htpasswd
        AuthGroupFile /dev/null
        require valid-user

Создаем пользователя и пароль для подключение к asterisk cdr viewer:

htpasswd -c /var/www/asterisk-cdr-viewer/.htpasswd voipnotes

Добавим созданного нами пользователя в /var/www/asterisk-cdr-viewer/include/config.inc.php

!!! $admin_user_names = '*' – все пользователи имеют доступ к статистике. !!!
$admin_user_names = "voipnotes" - уберем * и добавим нашего пользователя

Рестартуем веб-сервер:

service httpd restart

Теперь при попытке зайти в viewer вы увидите приглашения для ввода логина и пароля:

   

Настроем возможность записи разговоров:

В файле /var/www/asterisk-cdr-viewer/include/config.inc.php указаны настройки по умолчанию:

$system_monitor_dir = '/var/spool/asterisk/monitor'; - директория в которой хранятся записанные вызовы 
$system_audio_format = 'wav'; - формат аудио файла

Если вы хотите можно поменять формат или директорию, если нет, то в ваш диалплан добавляем следующие строки и провряем:

exten => s,1,Set(MONITOR_FILE=/var/spool/asterisk/monitor/${UNIQUEID})
exten => s,n,MixMonitor(${MONITOR_FILE}.wav,b)
   

На этом наша настройка закончена.

Если вы в статье нашли ошибки или несоответствия, мы будем благодарны, если вы напишите нам о них в комментариях.

 
Powered by SEO CMS ver.: 23.1 TOP 2 (opencartadmin.com)
 
Метки: Asterisk