Está en la página 1de 11

Instalacion Asterisk 1.4.

X - Millenium Phone Center

http://wiki.millenium.com.co/wiki/index.php/Instalacion_Asterisk_1.4.X

Instalacion Asterisk 1.4.X


De Millenium Phone Center
Historial de actualizaciones: 2008-10-9 Ing. Julian Etayo - Creacin Artculo 2008-10-20 Ing. Miguel Molina - Actualizado removiendo la llave primaria de campos combinados en el SQL de creacin de la tab queue_log. 2008-12-15 Ing. Miguel Molina - Actualizados los links para la versin 2.1.0 de DAHDI. 2009-01-14 Ing. Miguel Molina - Actualizada la seccin "Subir el Queue_log a MySQL" con los cambios necesarios para guardar el cuarto parmetro presente en el evento TRANSFER del queue_log, que guarda la duracin actual de la llamada en el momento de ser transferida. 2008-02-04 Ing. Julian Etayo - Actualizacin de paquetes Asterisk, Libpri y dahdi.

Tabla de contenidos
1 Inicio de Instalacin 2 Descarga y extraccin de paquetes 3 Parche del CDR MySQL y del script de inicio 4 Parche para app_queue 5 Compilacin de paquetes 6 Sonidos en espaol 7 Base de datos para el CDR en MySQL 8 Subir el Queue_log a MySQL 9 Base de datos para el CDR en PostgreSQL

Inicio de Instalacin
Para iniciar el proceso de instalacin de Asterisk 1.4.X se debe tener la Instalacion_CentOS_5.1_para_Asterisk_-_GNU

Descarga y extraccin de paquetes


A continuacion se descargan los siguientes paquetes:

1 de 11

25/09/2009 21:38

Instalacion Asterisk 1.4.X - Millenium Phone Center

http://wiki.millenium.com.co/wiki/index.php/Instalacion_Asterisk_1.4.X

# cd /usr/src/ # wget http://downloads.digium.com/pub/asterisk/releases/asterisk-1.4.23.tar.gz # wget http://downloads.digium.com/pub/asterisk/releases/asterisk-addons-1.4.7.tar.gz # wget http://downloads.digium.com/pub/libpri/libpri-1.4.9.tar.gz

# wget http://downloads.digium.com/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-2.1.0.4+2.1.0.2.tar.g # for i in *gz;do tar -zxvf $i;done

Parche del CDR MySQL y del script de inicio


Verificamos que el paquete mysql-devel est, de lo contrario al compilar asterisk-addons no se compilaria el modulo de mysql.
# yum -y install mysql-devel postgresql-devel

Se debe parchar el asterisk addons para que el mdulo cdr_addon_mysql.so almacene el UNIQUEID en la base de datos como se muestra a continuacin:

# cd /usr/src/asterisk-addons-1.4.7/cdr # vim cdr_addon_mysql.c

Ahora agregamos debajo de: #define DATE_FORMAT "%Y-%m-%d %T" la siguiente lnea #define MYSQL_LOGUNIQUEID Ahora se realiza el siguiente parche para que el script de inicio ejecute asterisk con la prioridad real-time:

# cd /usr/src/asterisk-1.4.23/contrib/init.d # vim rc.redhat.asterisk

Ahora agregamos en la funcin start() antes de la lnea: daemon $DAEMON $ASTARGS la siguiente lnea: ASTARGS="$ASTARGS -p"

Parche para app_queue


2 de 11 25/09/2009 21:38

Instalacion Asterisk 1.4.X - Millenium Phone Center

http://wiki.millenium.com.co/wiki/index.php/Instalacion_Asterisk_1.4.X

Nota: Parche Oficial Mike Con el nimo de mejorar la visualizacin de llamadas en cola en el panel, se modific el app_queue de Asterisk para que al ejecutar el comando "show queues" por el CLI o bien por manager como es utilizado en el panel, en la lista de llamadas en cola no apareciera el nombre del canal que no es relevante sino el CallerID numrico de la llamada entrante
# cd /usr/src/asterisk-1.4.23/apps # wget http://www.millenium.com.co/asterisk/app_queue.c.diff # patch < app_queue.c.diff

Compilacin de paquetes
Para realizar la compilacin es importante seguir el siguiente orden: Dahdi, Libpri, Asterisk, AsteriskAddons, como se muestra a continuacin:
# cd /usr/src/dahdi-linux-complete-2.1.0.4+2.1.0.2 # make clean; make all; make install; make config

Apenas est instalado el Dahdi, editamos qu mdulos queremos tener cargados en el sistema de acuerdo al hardware instalado en el archivo
# vim /etc/dahdi/modules

En este ejemplo podemos ver la porcin del archivo en donde desactivamos todos los mdulos, este sera el caso cuando no tenemos hardware instalado.

3 de 11

25/09/2009 21:38

Instalacion Asterisk 1.4.X - Millenium Phone Center

http://wiki.millenium.com.co/wiki/index.php/Instalacion_Asterisk_1.4.X

# # # # # # # #

Contains the list of modules to be loaded / unloaded by /etc/init.d/dahdi. NOTE: Please add/edit /etc/modprobe.d/dahdi or /etc/modprobe.conf if you would like to add any module parameters.

Format of this file: list of modules, each in its own line. Anything after a '#' is ignore, likewise trailing and leading whitespaces and empty lines. TE205P/TE207P/TE210P/TE212P: TE405P/TE407P/TE410P/TE412P: TE220: PCI-Express dual-port TE420: PCI-Express quad-port PCI dual-port T1/E1/J1 PCI quad-port T1/E1/J1 T1/E1/J1 T1/E1/J1

# Digium # Digium # Digium # Digium #wct4xxp

# Digium TE120P: PCI single-port T1/E1/J1 # Digium TE121: PCI-Express single-port T1/E1/J1 # Digium TE122: PCI single-port T1/E1/J1 #wcte12xp # Digium T100P: PCI single-port T1 # Digium E100P: PCI single-port E1 #wct1xxp # Digium TE110P: PCI single-port T1/E1/J1 #wcte11xp # Digium TDM2400P/AEX2400: up to 24 analog ports # Digium TDM800P/AEX800: up to 8 analog ports # Digium TDM410P/AEX410: up to 4 analog ports #wctdm24xxp # X100P - Single port FXO interface # X101P - Single port FXO interface #wcfxo # Digium TDM400P: up to 4 analog ports #wctdm # Xorcom Astribank Devices #xpp_usb

Continuamos con la instalacin de libpri y el resto de asterisk:


# cd /usr/src/libpri-1.4.9 # make clean; make; make install # cd /usr/src/asterisk-1.4.23 # make clean; ./configure; make menuselect

En este men se deben seleccionar los componentes que se requieren para la instalacin. Los requeridos ya vienen por defecto. Para salir sin guardar '<esc>' para salir guardando 'x'
# make; make install; make config; make samples # cd /usr/src/asterisk-addons-1.4.7 # make clean; ./configure; make menuselect

En este men se deben seleccionar los componentes que se requieren para la instalacin. Los requeridos ya vienen por defecto. Para salir sin guardar '<esc>' para salir guardando 'x' Si en algn momento se genera un error por falta de alguna libreria, es necesario digitar # make distclean; antes de make clean. Esto asegura que el configure vuelva a evaluar las librerias recin instaladas.
# make; make install; make samples

4 de 11

25/09/2009 21:38

Instalacion Asterisk 1.4.X - Millenium Phone Center

http://wiki.millenium.com.co/wiki/index.php/Instalacion_Asterisk_1.4.X

Sonidos en espaol
Gracias a Voip para novatos se dispone de un set de sonidos, para instalarlos se debe realizar lo siguiente:
# cd /var/lib/asterisk/sounds # wget http://www.voipnovatos.es/voces/voipnovatos-core-sounds-es-gsm-1.4.tar.gz # wget http://www.voipnovatos.es/voces/voipnovatos-extra-sounds-es-gsm-1.4.tar.gz # tar -zxvf voipnovatos-core-sounds-es-gsm-1.4.tar.gz # tar -zxvf voipnovatos-extra-sounds-es-gsm-1.4.tar.gz

El sonido 1M es importante para el buzn de voz, por tanto se debe hacer el siguiente truco:
# cd /var/lib/asterisk/sounds/digits/es # cp 1.gsm 1M.gsm # cp 1M.gsm ../

Base de datos para el CDR en MySQL


Para que el CDR escriba correctamente se debe crear una base de datos y garantizar el acceso a la misma de la siguiente manera:
# mysql

Ahora dentro de mysql


mysql> CREATE DATABASE asterisk; mysql> USE asterisk; 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 '', `userfield` varchar(255) NOT NULL default '', `uniqueid` VARCHAR(32) NOT NULL default '' ); mysql> ALTER TABLE `cdr` ADD INDEX ( `calldate` ); mysql> ALTER TABLE `cdr` ADD INDEX ( `dst` ); mysql> ALTER TABLE `cdr` ADD INDEX ( `accountcode` ); mysql> grant all privileges on asterisk.* to cdr@localhost identified by 'bdcdr'; mysql> exit;

Y lo editamos como se muestra a continuacin. Si el MySQL es local, dejamos la opcin "port" comentada,

5 de 11

25/09/2009 21:38

Instalacion Asterisk 1.4.X - Millenium Phone Center

http://wiki.millenium.com.co/wiki/index.php/Instalacion_Asterisk_1.4.X

ya que es ms eficiente conectarse por socket UNIX que por conexin TCP/IP dentro de la misma mquina. El cdigo detecta que al colocar "localhost" en el hostname, no tener puerto asignado y un socket especificado, se conectar por el socket.
vim /etc/asterisk/cdr_mysql.conf

[global] hostname=localhost dbname=asterisk table=cdr password=bdcdr user=cdr ;port=3306 sock=/var/lib/mysql/mysql.sock userfield=1

Ahora cambiamos el cdr para que almacene las llamadas no contestadas tambien
vim /etc/asterisk/cdr.conf

cambiamos ;unanswered = no por unanswered = yes Subimos el dahdi y el asterisk recin instalados
# service dahdi restart # service asterisk restart

Confirmamos que este operando


# asterisk -r

CLI> cdr mysql status

Subir el Queue_log a MySQL


Primero se debe crear la tabla queue_log dentro de la base de datos por defecto asterisk como se muestra a continuacin:

6 de 11

25/09/2009 21:38

Instalacion Asterisk 1.4.X - Millenium Phone Center

http://wiki.millenium.com.co/wiki/index.php/Instalacion_Asterisk_1.4.X

# mysql mysql> use asterisk mysql> CREATE TABLE `queue_log` ( `fecha` datetime NOT NULL default '0000-00-00 00:00:00', `cdr_uniqueid` varchar(32) NOT NULL default '', `dcontext` varchar(80) default NULL, `agente` varchar(30) default NULL, `evento` varchar(30) NOT NULL default '', `parametro_1` varchar(30) default NULL, `parametro_2` varchar(30) default NULL, `parametro_3` varchar(30) default NULL, `parametro_4` varchar(30) default NULL, `ip_pbx` varchar(15) default NULL); mysql> exit;

Ahora se debe crear el archivo cron_queue_log.php en la carpeta por defecto:


# mkdir /var/cron/ # cd /var/cron # vim cron_queue_log.php

7 de 11

25/09/2009 21:38

Instalacion Asterisk 1.4.X - Millenium Phone Center

http://wiki.millenium.com.co/wiki/index.php/Instalacion_Asterisk_1.4.X

<? # =================== ARCHIVO DE CONFIGURACION ============ include("variables.php"); # ==================== CONEXION AL SERVIDOR ================ include("conexion.php"); # ========================================================= # SE VERIFICA QUE EXISTA EL ARCHIVO file_exists($filename) or die("El archivo $filename no fue encontrado"); # SE GUARDA LA FECHA DE INICIO DEL PROCESO $fecha=date("Y-m-d H:i:s"); #$fecha="2006-08-01 07:00:00"; #echo "Inicio del proceso $fecha\n"; $newfile = "$filename $fecha"; copy($filename, $newfile) or die ("No se pudo copiar $filename a $newfile"); $fp = fopen($filename,"w") or die ("No se pudo crear el archivo $filename"); fclose($fp); # APERTURA DEL ARCHIVO #echo "$filename\n"; $fp = fopen($newfile,"r") or die ("No se pudo abrir el archivo"); while ($linea= fgets($fp)) { #echo "$linea<br>"; $arreglo=explode('|',$linea); $arreglo[0]=trim($arreglo[0]); $arreglo[1]=trim($arreglo[1]); $arreglo[2]=trim($arreglo[2]); $arreglo[3]=trim($arreglo[3]); $arreglo[4]=trim($arreglo[4]); $arreglo[5]=trim($arreglo[5]); $arreglo[6]=trim($arreglo[6]); $arreglo[7]=trim($arreglo[7]); $arreglo[8]=trim($arreglo[8]); $fecha=date('Y-m-d H:i:s',$arreglo[0]);

#Consulta sin insercion de fecha $query = "INSERT INTO queue_log VALUES ('$fecha','$arreglo[1]','$arreglo[2]','$arreglo[3]','$arreglo #echo "$query\n";

# EJECUTA CONSULTA POSTGRES #pg_exec($dbp,$query); # EJECUTA CONSULTA MYSQL mysql_query($query,$dbp); // DEBUG: or die("Error insertando registros en la consulta $query con err } # CIERRA CONEXION POSTGRES #pg_close($dbp); # CIERRA CONEXION MYSQL mysql_close($dbp); # CIERRA ARCHIVO fclose($fp); $fecha=date("Y-m-d H:i:s"); echo "Fin del proceso $fecha\n"; ?> <META HTTP-EQUIV=Refresh CONTENT="1; URL=rep_queue_log.php">

Ahora de debe hacer ejecutable:


chmod 770 cron_queue_log.php

Tambin se deben crear los siguientes archivos editando segn cada campaa:

8 de 11

25/09/2009 21:38

Instalacion Asterisk 1.4.X - Millenium Phone Center

http://wiki.millenium.com.co/wiki/index.php/Instalacion_Asterisk_1.4.X

vim variables.php

<? # ===================== IMAGEN DE LA CAMPANA ==================== $imagen= "<img src=imagenes/millenium.jpg width=470 height=95>"; # =================== Variables de base de datos =============== # =================== Variables del programa =================== # Ubicacion del archivo queues_log $filename = "/var/log/asterisk/queue_log"; # Segundos para medir el nivel de servicio $segundos_nivel_servicio=20; # Cadena de caracteres con ip del pbx $ip_pbx="127.0.0.1"; # =============================================================== ?>

vim conexion.php

<?php # CONEXION AL SERVIDOR # =============================================== require_once('librerias/libreria.mysql.php'); $dbp=crear_conexion_servidor(); # =============================================== ?>

mkdir librerias cd librerias vi libreria.mysql.php

<?PHP /* function crear_conexion_reportes() { return myconectar('127.0.0.1','5432' ,'reportes' ,'root' ,''); } */ function crear_conexion_servidor() { return myconectar('127.0.0.1','3306' ,'asterisk' ,'cdr' ,'bdcdr'); } function myconectar($host,$port,$bd,$usuario,$clave) { $conn = mysql_connect($host, $usuario ,$clave); mysql_select_db($bd,$conn); if (!$conn) die ("No me pude conectar con la Base de Datos.\n"); return($conn); } function desconectar1($conn) { mysql_close($conn); } ?>

Finalmente creamos el cron de siguiente manera:


crontab -e

9 de 11

25/09/2009 21:38

Instalacion Asterisk 1.4.X - Millenium Phone Center

http://wiki.millenium.com.co/wiki/index.php/Instalacion_Asterisk_1.4.X

Ahora insertamos la siguiente lnea:


# # 0 # MODULO DE ESTADISTICAS ============================================================================ * * * * /usr/bin/php -q /var/cron/cron_queue_log.php ============================================================================

Base de datos para el CDR en PostgreSQL


Estando conectados con el usuario postgres, se crea la base de datos (Recuerde que la codificacin por defecto en PostgreSQL es UTF8):
# su postgres $ psql postgres=# CREATE DATABASE asterisk OWNER postgres;

Ahora nos conectamos a la base de datos asterisk

postgres=# \c asterisk Ahora est conectado a la base de datos asterisk. asterisk=# CREATE TABLE "public"."cdr" ( "calldate" TIMESTAMP WITHOUT TIME ZONE NOT NULL, "clid" VARCHAR(80) DEFAULT ''::character varying NOT NULL, "src" VARCHAR(80) DEFAULT ''::character varying NOT NULL, "dst" VARCHAR(80) DEFAULT ''::character varying NOT NULL, "dcontext" VARCHAR(80) DEFAULT ''::character varying NOT NULL, "channel" VARCHAR(80) DEFAULT ''::character varying NOT NULL, "dstchannel" VARCHAR(80) DEFAULT ''::character varying NOT NULL, "lastapp" VARCHAR(80) DEFAULT ''::character varying NOT NULL, "lastdata" VARCHAR(80) DEFAULT ''::character varying NOT NULL, "duration" BIGINT DEFAULT 0 NOT NULL, "billsec" BIGINT DEFAULT 0 NOT NULL, "disposition" VARCHAR(45) DEFAULT ''::character varying NOT NULL, "amaflags" BIGINT DEFAULT 0 NOT NULL, "accountcode" VARCHAR(20), "uniqueid" VARCHAR(40) DEFAULT ''::character varying NOT NULL, "userfield" VARCHAR(255) DEFAULT ''::character varying NOT NULL ) WITHOUT OIDS; CREATE INDEX "cdr_idx" ON "public"."cdr" USING btree ("clid"); CREATE INDEX "cdr_idx1" ON "public"."cdr" USING btree ("dstchannel"); CREATE INDEX "cdr_idx2" ON "public"."cdr" USING btree ("calldate"); CREATE INDEX "cdr_idx3" ON "public"."cdr" USING btree ("accountcode"); CREATE INDEX "cdr_idx4" ON "public"."cdr" USING btree ("uniqueid");

Se modifica el archivo cdr_pgsql.conf


vim /etc/asterisk/cdr_pgsql.conf

10 de 11

25/09/2009 21:38

Instalacion Asterisk 1.4.X - Millenium Phone Center

http://wiki.millenium.com.co/wiki/index.php/Instalacion_Asterisk_1.4.X

[global] hostname=192.168.54.30 port=5432 dbname=asterisk password= user=postgres table=cdr

Obtenido de "http://wiki.millenium.com.co/wiki/index.php/Instalacion_Asterisk_1.4.X" Esta pgina fue modificada por ltima vez el 00:07, 29 ago 2009. El contenido est disponible bajo los trminos de la GNU Free Documentation License 1.2

11 de 11

25/09/2009 21:38

También podría gustarte