Enviado por admin el
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?
Comentarios recientes