Blog de Ubuntu en Español Blog [no oficial] de Ubuntu en Español

9Nov/090

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

CREATE DATABASE asterisk;

GRANT INSERT
  ON asterisk.*
  TO asterisk@localhost
  IDENTIFIED BY 'tu_clave';

USE asterisk;
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 '',
  uniqueid varchar(32) NOT NULL default '',
  userfield varchar(255) NOT NULL default ''
);

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

app_addon_sql_mysql.so         Simple Mysql Interface                   0
cdr_addon_mysql.so             MySQL CDR Backend                        0
134 modules loaded

si por alguna razon no los tenemos cargados, podemos compilar los add-ons de asterisk y luego cargarlos

load app_addon_sql_mysql.so
load cdr_addon_mysql.so

por ultimo crearemos la conexion entre estos 2 sistemas modificaremos el archivo cdr_mysql.conf

[root@SRV-ASTERISK asterisk]# nano /etc/asterisk/cdr_mysql.conf
[global]

hostname=127.0.0.1
dbname=asterisk
table=cdr
password=usuario
user=password
port=3306
;sock=/tmp/mysql.sock
;userfield=1

bueno luego de estos 3 pasos quedara listo nuestros CDRs en Mysql para la central telefonica Asterisk.

Post to Twitter Tweet This Post Post to Delicious Delicious

Comments (0) Trackbacks (0)

No comments yet.


Leave a comment


No trackbacks yet.