Asterisk, CDR en mysql
Call Detail Records
Las centrales telefónicas generan los llamados Call Detail Records (CDR) que son archivos o logs que contienen información detallada acerca de las llamadas tanto de donde fueron originadas, terminadas o que pasa por el intercambio de las mismas. Y claro no es sorprendente que los CDR se utilizan para la facturación. Fuente: http://www.voip-info.org/wiki/view/CDR
Ahora bien Asterisk es una central telefonica en la que podemos variar tipo de informacion y almacenamiento que este sistema va a recolectar para sus CDRs
Asterisk puede trabajar sus CDR de las siguientes formas:
-
Csv – archivos de texto con valores separados coma
-
Cdr SQLite – logs de CDR en la base de datos de SQLite
-
Pgsql – logs de CDR en las bases de datos de PostgreSQL
-
Odbc – logs de CDR a cualquier base de datos con soporte unixODBC
-
Mysql – logs de CDR en las bases de datos de MySQL
-
Cdr FreeTDS – logs CDR en MS SQL o a la base de datos de Sybase a través de los conductores de FreeTDS
-
Yada – logs de CDR registrados en cualquier base de datos con soporte yada.
Pero lo que veremos por el momento es como conectar nuestro mysql para guardar los CDRs
Primero vamos a crear la tabla que guardara nuestros datos en el Mysql
<br /> CREATE DATABASE asterisk;</p> <p>GRANT INSERT<br /> ON asterisk.*<br /> TO asterisk@localhost<br /> IDENTIFIED BY ‘tu_clave’;</p> <p>USE asterisk;<br /> CREATE TABLE cdr (<br /> calldate datetime NOT NULL default ’0000-00-00 00:00:00′,<br /> clid varchar(80) NOT NULL default ”,<br /> src varchar(80) NOT NULL default ”,<br /> dst varchar(80) NOT NULL default ”,<br /> dcontext varchar(80) NOT NULL default ”,<br /> channel varchar(80) NOT NULL default ”,<br /> dstchannel varchar(80) NOT NULL default ”,<br /> lastapp varchar(80) NOT NULL default ”,<br /> lastdata varchar(80) NOT NULL default ”,<br /> duration int(11) NOT NULL default ’0′,<br /> billsec int(11) NOT NULL default ’0′,<br /> disposition varchar(45) NOT NULL default ”,<br /> amaflags int(11) NOT NULL default ’0′,<br /> accountcode varchar(20) NOT NULL default ”,<br /> uniqueid varchar(32) NOT NULL default ”,<br /> userfield varchar(255) NOT NULL default ”<br /> );<br />
Segundo tenemos que contar con soporte cdr_mysql en nuestro sistema asterisk, como verificamos esto:
dentro del CLI de asterisk corremos
show modules
…. y la salida tendria que ser algo asi
<br /> app_addon_sql_mysql.so        Simple Mysql Interface                  0<br /> cdr_addon_mysql.so            MySQL CDR Backend                       0<br /> 134 modules loaded<br />
si por alguna razon no los tenemos cargados, podemos compilar los add-ons de asterisk y luego cargarlos
<br /> load app_addon_sql_mysql.so<br /> load cdr_addon_mysql.so<br />
por ultimo crearemos la conexion entre estos 2 sistemas modificaremos el archivo cdr_mysql.conf
<br /> [root@SRV-ASTERISK asterisk]# nano /etc/asterisk/cdr_mysql.conf<br /> [global]</p> <p>hostname=127.0.0.1<br /> dbname=asterisk<br /> table=cdr<br /> password=usuario<br /> user=password<br /> port=3306<br /> ;sock=/tmp/mysql.sock<br /> ;userfield=1<br />
bueno luego de estos 3 pasos quedara listo nuestros CDRs en Mysql para la central telefonica Asterisk.