Хранение CDR (Call Detail Records) Asterisk в MySQL

()

Модуль cdr-mysql для PBX Asterisk позволяет сохранять CDR (Call Detail Records - Детальная Информация о Звонках) в базе данных MySQL вместо обычных бинарных файлов журнала. Такой способ удобнее тем, что почти любую статистику можно получить без написания сложных парсеров просто составив SQL-запрос. Далее будет показано как добавить модуль mysql-cdr к описаной ранее домашней АТС.

Для начала установим всё необходимое:

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;

На этом всё. Приятной работы!

Ключевые слова: asterisk, cdr, mysql, cdr_mysql.

Комментарии:

Ladm 2011-10-15 21:19:58 (#)

Лось, ты маньяк))

MooSE 2011-10-15 23:10:13 (#)

Цитата:

Лось, ты маньяк))


Почему маньяк?:)

Ladm 2011-10-16 00:07:28 (#)

умный дом своими руками) на самом деле хорошая вещь) еще прикрути стоимость звонков и слежение за балансом) но думаю это будет следующая статья)

MooSE 2011-10-17 03:02:51 (#)

Цитата:

умный дом своими руками) на самом деле хорошая вещь) еще прикрути стоимость звонков и слежение за балансом) но думаю это будет следующая статья)


Тему слежения за балансом я раскрывал чуть ранее. Сейчас оно у меня выглядит примерно вот так:



Стоимость пока прикручивать особо смысла нет - из дома мало разговариваю.

Ещё планирую про голосовую почту написать. Прикольно что записи пропущенных звонков шлются на мыло:)

Anonymous 2013-05-28 15:34:13 (#)

Приветствую.
Настроена данная связка, работает нормально.
Только вот в столбец disposition пишутся коды(0,1,4,8), а не слова NO ANSWER, FAILED, BUSY, ANSWERED, or UNKNOWN.

Есть идеии ? Сапсибо.

MooSE 2013-05-28 23:30:53 (#)

Цитата:

Приветствую.
Настроена данная связка, работает нормально.
Только вот в столбец disposition пишутся коды(0,1,4,8), а не слова NO ANSWER, FAILED, BUSY, ANSWERED, or UNKNOWN.

Есть идеии ? Сапсибо.

А это критично?:)
Новый комментарий



© 2006-2016 Вадим Калинников aka MooSE