Asterisk PBX 20.X y el CDR (Call Detail Record)

Desde la versión 20 de Asterisk PBX, el modulo cdr_mysql.so, que se utilizaba para guardar los registros de las llamadas (CDR) en una base de datos, ya no está presente y no se puede utilizar. En su lugar hay que utilizar el modulo cdr_adaptive_odbc.so, modulo que crea una conexión ODBC a la base de datos y la tabla donde se van a guardar los CDR. Aunque su configuración es un poco más complicada, este modulo nos ofrece unas configuraciones interesantes que en el modulo anterior no estaban disponibles. Los pasos a seguir para la configuración son:

 

  • crear la base de datos y la tabla donde se guardarán los CDR

  • crear una conexión ODBC a la base de datos y la tabla creada

  • configurar el archivo de configuración de Asterisk res_odbc.conf

  • configurar el archivo de configuración de Asterisk cdr_adaptive_odbc.conf

 

A lo largo de la instalación de Asterisk PBX 20.X presentada en esta entrada, se han instalado y configurado todos los paquetes y módulos que vamos a utilizar para la configuración. Empezamos con la creación de la base de datos. Si no lo hemos hecho, iniciamos MariaDB y creamos una contraseña para el usuario de root:

 

systemctl start mariadb

 

systemctl enable mariadb

 

mysqladmin -u root password AdzyLAR9jQ5zPe4f

 

entramos con el cliente:

 

mysql -u root -pAdzyLAR9jQ5zPe4f

 

creamos la base de datos dedicada solamente a los CDR:

 

MariaDB [(none)]> create database asteriskcdr;

Query OK, 1 row affected (0.01 sec)

 

creamos un usuario que tenga acceso a la base de datos creada:

 

MariaDB [asteriskcdr]> GRANT ALL PRIVILEGES ON asteriskcdr.* TO 'asterisk'@'localhost' IDENTIFIED BY 'AdzyLAR9jQ5zPe4f';

 

y luego creamos la tabla:

 

MariaDB [(none)]> use asteriskcdr

Database changed

 

MariaDB [asteriskcdr]> CREATE TABLE cdr (

id bigint(20) NOT NULL auto_increment,

accountcode VARCHAR(80),

src VARCHAR(80),

dst VARCHAR(80),

dcontext VARCHAR(80),

clid VARCHAR(80),

channel VARCHAR(80),

dstchannel VARCHAR(80),

lastapp VARCHAR(80),

lastdata VARCHAR(80),

start DATETIME,

answer DATETIME,

end DATETIME,

duration INTEGER,

billsec INTEGER,

disposition VARCHAR(45),

amaflags VARCHAR(45),

userfield VARCHAR(256),

uniqueid VARCHAR(150),

linkedid VARCHAR(150),

peeraccount VARCHAR(80),

sequence INTEGER,

PRIMARY KEY (`id`),

KEY callerid (clid)

);

 

El paso a seguir es crear la conexión ODBC; miramos si el archivo /etc/odbcinst.ini contiene este bloque:

 

[MariaDB]

Description = ODBC for MariaDB

Driver = /usr/lib/libmaodbc.so

Driver64 = /usr/lib64/libmaodbc.so

FileUsage = 1

 

si así fuera seguimos con la configuración de la conexión ODBC:

 

nano /etc/odbc.ini

 

[asteriskcdr]

Driver = MariaDB

Database = asteriskcdr

Server = localhost

User = asterisk

Password = AdzyLAR9jQ5zPe4f

Port = 3306

Option = 3

 

Se pone el nombre de la base de datos y el usuario que tiene acceso a ella. La etiqueta inicial la utilizaremos más adelante. Ahora para tener la certeza que la conexión funcione correctamente:

 

isql asteriskcdr asterisk AdzyLAR9jQ5zPe4f

 

en orden:

 

  • etiqueta que da inicio al bloque configurado en el archivo odbc.ini

  • nombre del usuario que tiene acceso a la base de datos

  • contraseña del usuario indicado en el parámetro anterior

 

Si todo sale bien:

 

+---------------------------------------+

| Connected! |

| |

| sql-statement |

| help [tablename] |

| quit |

| |

+---------------------------------------+

 

para salir:

 

SQL> quit

 

Se continua con la configuración del archivo res_odbc.conf que es donde se crea la conexión entre Asterisk PBX y ODBC:

 

nano /etc/asterisk/res_odbc.conf

 

al final del archivo se añade:

 

[cdr]

enabled => yes

dsn => asteriskcdr

username => asterisk

password => AdzyLAR9jQ5zPe4f

pre-connect => yes

 

la parte importante es la linea dsn => asteriskcdr que es la linea donde se conecta Asterisk al bloque presente en el archivo odbc.ini cuya etiqueta inicial tiene el mismo nombre (asteriskcdr). Se guardan los cambios y se termina la configuración modificando el archivo cdr_adaptive_odbc.conf:

 

nano /etc/asterisk/cdr_adaptive_odbc.conf

 

al final del archivo se añade:

 

[cdr]

connection=cdr

table=cdr

 

  • [cdr]: un nombre que se le asigna a la conexión

  • connection=cdr: en este parámetro hay que poner la etiqueta que define el bloque creado en el archivo res_odbc.conf

  • table=cdr: la tabla MariaDB donde se guardarán los datos

 

Otras configuraciones que se pueden realizar en este archivo:

 

  • filtrar los datos que se guardarán en la tabla. Ejemplo: si se quieren guardar solamente los CDR de la extensión 1000 se añadirá al bloque la siguiente linea: filter src => 1000

  • si se quieren modificar los nombres de las columnas presentes en la tabla CDR, se crean alias y luego se modifican los nombre en la tabla. Ejemplo: alias dst => destinatario

 

¿Interesante verdad?

 

Vota el Articulo: 

Promedio: 5 (1 voto)
Evalúa la calidad del articulo
Suscribirse a Comentarios de "Asterisk PBX 20.X y el CDR (Call Detail Record)" Suscribirse a VozToVoice - Todos los comentarios