CDR, Mysql и Asterisk
Просматривать статистику звонков через Asterisk с помощью штатного csv файла, конечно, по-джедайски. Но все же хотелось бы возможности более гибкого манипулирования данными и более наглядного представления. Посему будем писать отчеты о звонках в MySQL.
Как говорят физики: «условно предположим», что связка LAMP у нас уже установлена и настроена. Дополнительно нам понадобится расширение PHP GD для построения графиков.
Ставим пакет asterisk-mysql.
Почему-то не создается файл конфигурации, поэтому вручную создаем файл /etc/asterisk/cdr_mysql.conf следующего содержания:
[global]
hostname=localhost
dbname=db_asterisk
table=cdr
password=password
user=root
port=3306
sock=/var/run/mysqld/mysqld.sock
userfield=1
Создадим базу данных db_asterisk и таблицу в ней, воспользовавшись следующим SQL:
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 '',
`userfield` varchar(255) NOT NULL default ''
);
ALTER TABLE `cdr` ADD `uniqueid` VARCHAR(32) NOT NULL default '';
ALTER TABLE `cdr` ADD INDEX ( `calldate` );
ALTER TABLE `cdr` ADD INDEX ( `dst` );
ALTER TABLE `cdr` ADD INDEX ( `accountcode` );
Перегружаем asterisk.
Качаем отсюда простенькую оболочку для просмотра статистики. Русский язык, правда, отсутствует, но когда нас это останавливало
Распаковываем ее в предварительно созданную директорию виртуального хоста и настраиваем файл /lib/defines.php.
Для корректного открытия главной страницы в корне www директории хоста создать .htaccess и прописать, что индексным файлом является cdr.php.
UPD: 27.01.2012
Вышеуказанная утилита устарела. Отказывается работать с PHP 5.3. Найдена более новая и интересная. Пока в стадии Beta, но вполне работоспособна. Проект находится здесь. Таблица используется эта же.