Asterisk Realtime CDR
Asterisk Realtime CDRpor: Pablo Umanzor A.
Si necesitamos analizar el detalle de las llamadas que ha realizado nuestro Asterisk y asi controlar nuestros recursos es posible hacerlo enviando el CDR (Call Detail Record) a una base de datos como Mysql o Postgresql.
Para ello es necesario
a)Instalar MySQL-Server o Postgresql en la misma maquina b)usar un servidor mysql existente en otra maquina.
Para el primer caso en Debian Etch instalar mysql-server y las librerias libmysqlclient15-dev y libmysqlclient15off
apt-get install mysql-server libmysqlclient15off libmysqlclient15-dev
Luego dentro del directorio /usr/src/asterisk-addons-1.4.7 y ejecutar
make clean make menuconfigSeleccionar la opcion "Call Detail Recording
y checkear si la opcion [*] 1. cdr_addon_mysql
se encuentra activa (con *) , si no se encuentra activa - es decir con una X en vez de * es por que no se ha instalado las dependencias necesarias para salir presionar la letra X luego recompilar con make y make install
Posteriormente ir al directorio de archivos de configuracion de Asterisk /etc/asterisk y editar los archivos cdr_mysql.conf y res_mysql.conf
archivo cdr_mysql.conf
[global] hostname=localhost dbname=asterisk table=cdr password=clave user=usuario port=3306 ;sock=/tmp/mysql.sock ;userfield=1
archivo res_config_mysql.conf
[general] dbhost = 127.0.0.1 dbname = asterisk dbuser = usuario dbpass = clave dbport = 3306 ;dbsock = /tmp/mysql.sockSi nuestra base de datos mysql se encuentra en otra maquina cambiar hostname y dbhost con la ip que corresponda
creamos la base de dato
iniciamos sesión en el servidor
root@ubuntu:~# mysql -u root -p
mysql> create database asterisk;
luego se debe crear la tabla "cdr" en nuestra DB
use asterisk /selecionar la base de dato
# estructura de la tabla CDRs (en script para 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 ' ', uniqueid varchar(32) NOT NULL default ' ', userfield varchar(255) NOT NULL default ' ', KEY `calldate` (`calldate`), KEY `dst` (`dst`), KEY `accountcode` (`accountcode`) ) ENGINE=MyISAM ;
ALTER TABLE `cdr` ADD `uniqueid` VARCHAR(32) NOT NULL default ; ALTER TABLE `cdr` ADD INDEX ( `calldate` ); ALTER TABLE `cdr` ADD INDEX ( `dst` ); ALTER TABLE `cdr` ADD INDEX ( `accountcode` );
por ultimo reiniciar Asterisk e ingresar a la consola para verificar si los cambios y la tabla ha sido reconocida con el comando
Asterisk*CLI> realtime mysql status
Teniendo ya nuestro CDR en la DB podemos hacer consultas directamente en mysql o usar la aplicacion CDR tool, la cual puede bajar directamente desde
* http://areski.net/asterisk-stat-v2/Luego simplemente en el archivo lib/defines.php cambiar los datos de conexion a la DB
define ("HOST", "localhost"); define ("PORT", "3306"); define ("USER", "usuario"); define ("PASS", "clave"); define ("DBNAME", "nombre_db"); define ("DB_TYPE", "mysql"); // mysql or postgres
define ("DB_TABLENAME", "tabla");
Tambien puede ver los siguientes links :
Como realizar llamadas ocultas del CDR en Asterisk.
http://www.757.org/~joat/wiki/index.php?n=Main.InstallingCDRCallDetailRecordsUsingMySQL
http://www.asterisk.org/docs/asterisk/trunk/functions/cdr http://www.voip-info.org/wiki/view/Asterisk+cdr+mysql http://code.google.com/p/asterisk-cdr-viewer/ https://wiki.asterisk.org/wiki/display/AST/CDR+Fields https://wiki.asterisk.org/wiki/display/AST/MySQL+CDR+Backend https://wiki.asterisk.org/wiki/display/AST/CDR+Variables http://info.linuxmall.cl/wiki/index.php/Asterisk_Realtime_CDR
No hay comentarios:
Publicar un comentario