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