Модуль cdr-mysql для
PBX Asterisk позволяет сохранять CDR (Call Detail Records — Детальная Информация о Звонках) в базе данных MySQL вместо обычных бинарных файлов журнала. Такой способ удобнее тем, что почти любую статистику можно получить без написания сложных парсеров, просто составив SQL-запрос.
Для опытных пользователей этот пример станет практическим занятием, а для новичков могу посоветовать пойти на курсы по Asterisk, например, в Учебный центр «Практикум» в Киеве по ул. Расковой 21. Там есть курс
«IP-телефония на базе Asterisk». Кроме того, первое занятие у них бесплатное. Их сайт:
praktikum.com.ua
Для начала установим всё необходимое:
|| apt-get install mysql-server asterisk-mysql
Зайдём в консоль mysql с правами суперпользователя:
|| mysql -u root -p
Создадим базу данных:
|| CREATE DATABASE `asterisk`;
Создадим пользователя «asterisk» c паролем «p4$$w0rd» и полным доступом к базе «asterisk»:
|| GRANT ALL PRIVILEGES ON `asterisk`.* to 'asterisk'@'localhost' IDENTIFIED BY 'p4$$w0rd';
Создадим таблицу в базе данных:
|| CREATE TABLE `asterisk`.`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 '' );
Теперь приведём файл "/etc/asterisk/cdr_mysql.conf" к виду:
|| [global]
|| hostname=127.0.0.1
|| dbname=asterisk
|| table=cdr
|| password=p4$$w0rd
|| user=asterisk
|| port=3306
|| [columns]
|| alias start => calldate
|| alias callerid => clid
И наконец перезапустим asterisk:
|| asterisk -rx 'reload'
Теперь история звонков будет сохраняться в MySQL и можно её получать с помощью SQL-запросов. Например, информацию о последних десяти звонках можно получить запросом:
SELECT * FROM `cdr` ORDER BY `calldate` DESC LIMIT 10;
Источник
www.ylsoftware.com