1.- Ingresar como root a mysql :
# mysql -u root -p
2.- Crear usuario mysql para el cdr :
# Grant all privileges on asteriskcdr.* to 'userbd'@'%' identified by 'password' with grant option;
3.- Crear la tabla para guardar los datos del cdr.
CREATE SCHEMA IF NOT EXISTS `asteriskcdr` DEFAULT CHARACTER SET utf8;
CREATE TABLE IF NOT EXISTS `asteriskcdr`.`cdr` (
`uniqueid` VARCHAR(32) NOT NULL DEFAULT '' ,
`linkedid` VARCHAR(32) NOT NULL DEFAULT '' ,
`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 '' ,
`start` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' ,
`answer` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' ,
`end` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' ,
`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 '' ,
`sequence` VARCHAR(32) NOT NULL DEFAULT '' ,
`peeraccount` VARCHAR(32) NOT NULL DEFAULT '' ,
PRIMARY KEY (`uniqueid`) ,
INDEX `start` (`start` ASC) ,
INDEX `dst` (`dst` ASC) ,
INDEX `accountcode` (`accountcode` ASC) )
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;
4.- Editamos el archivo /etc/asterisk/cdr_mysql.so , y agregamos las siguientes lineas.
[global]
hostname=ip de la BD
dbname=asteriskCDR
table=cdr
password=de la bd
user=asterisk
port=3306
sock=/tmp/mysql.sock
[columns]
;static "" => ;alias => alias start => calldate
alias callerid => clid
;alias src => src
;alias dst => dst
;alias dcontext => dcontext
;alias channel => channel
;alias dstchannel => dstchannel
;alias lastapp => lastapp
;alias lastdata => lastdata
;alias duration => duration
;alias billsec => billsec
;alias disposition => disposition
;alias amaflags => amaflags
;alias accountcode => accountcode
;alias userfield => userfield
;alias uniqueid => uniqueid
Guardamos el archivo y luego ingresamos a CLI de asterisk .
5.- Verificamos si contamos con el modulo instalado .
5.- Verificamos si contamos con el modulo instalado .
CLI> module show like cdr_mysql.so
Module Description Use Count
cdr_mysql.so MySQL CDR Backend 0
1 modules loaded
6.- Para iniciar la grabación del CDR en la database descargamos y cargamos el módulo:
CLI> module unload cdr_mysql.so
== Unregistered 'mysql' CDR backend
*CLI> module load cdr_mysql.so
Loaded cdr_mysql.so
== Parsing '/etc/asterisk/cdr_mysql.conf': Found
Loaded cdr_mysql.so => (MySQL CDR Backend)
7.- Luego comprobar si todo esta bien:
*CLI> cdr mysql status
Connected to asteriskcdr@localhost, port 3306 using table cdr for 51 seconds.
Wrote 0 records since last restart.
*CLI> cdr show status
Call Detail Record (CDR) settings
----------------------------------
Logging: Enabled
Mode: Simple
Log unanswered calls: No
Log congestion: No
* Registered Backends
-------------------
mysql
Adaptive ODBC
csv
cdr-custom
Saludos!!