Algunas distros de Asterisk, como FreePBX, Issabel, Elastix, tienen integrado el CDR con Mysql. Sin embargo, si estás creando tu propio Asterisk desde Cero, Necesitarás guardar los datos del CDR en un motor de Base de DATOS. Te comparto la guía para usar MariaDB en Asterisk como motor de base de datos para guardar tus CDRs.
Primero creamos la base de datos desde MariaDB
Ingresamos a nuestro MariaDB con el siguiente comando.
mysql -u root -p
Creamos nuestra base de datos, de nombre asteriskcdrdb, y le creamos un usuario.
mysql> CREATE DATABASE asteriskcdrdb;
mysql> GRANT INSERT ON asteriskcdrdb.* TO asterisk@localhost IDENTIFIED BY 'pass_segurisimo'
Ahora, ingresamos a nuestra base y creamos la tabla.
mysql> USE asteriskcdrdb;
mysql> 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 ''
);
Creamos los campos faltantes
mysql> ALTER TABLE cdr ADD uniqueid VARCHAR(32) NOT NULL default '';
mysql> ALTER TABLE cdr ADD INDEX ( calldate );
mysql> ALTER TABLE cdr ADD INDEX ( dst );
mysql> ALTER TABLE cdr ADD INDEX ( accountcode );
Segundo, Preparamos Asterisk para el CDR con MariaDB
Editamos el archivo, /etc/asterisk/cdr.conf, y nos aseguramos de que esté habilitado el CDR. Debajo de general debe estar la instrucción de enabled=yes.
[ general ]
enabled=yes
Preparamos ahora la parte de MariaDatabase, esto es en el archivo. /etc/asterisk/cdr_mysql.conf
[ global ]
hostname=localhost
dbname=asteriskcdrdb
table=cdr
password=pass_segurisimo
user=asterisk
port=3306
;sock=/tmp/mysql.sock
;userfield=1
Por último, agregamos el módulo de Asterisk para que inicie el proceso de guardar los CRD dentro de Maria Database, esto se hace en el archivo /etc/asterisk/modules.conf de Asterisk. Puedes agregarlo al final del mismo. Solo asegurarte que no quede en un área comentada.
load => cdr_addon_mysql.so
Por último, solo será necesario reiniciar el asterisk. Eso es sencillo.
asterisk -r
CLI> restart when convenient
CLI > asterisk -r
CLI > cdr mysql status
Probamos que todo esté correcto y funcional para MariaDB en Asterisk
Podemos ingresar a la base de datos de MAriaDB utilizando alguna interfaz, o podemos hacer consultas desde la consola.
Del lado de Asterisk, podemos ejecutar el siguiente comando, el cual nos desplegara la configuración del CDR. cdr show status.
asterisk -rx "cdr show status"
Con estos comandos sera facil administrar Maria DB o MYSQL en Asterisk. Es importante mencionar que herramientas como issabel, FreePBX o elastix (descontinuado) ya cuentan con el conector pre instalado. En el caso de un asterisk puro, se debe agregar en la instalación o implementar y configurar despues de ella.