Instalacion Asterisk 1.4.X
-
Upload
alejandro-beltran -
Category
Documents
-
view
14 -
download
0
Transcript of Instalacion Asterisk 1.4.X
Instalacion Asterisk 1.4.X
De Millenium Phone Center
Historial de actualizaciones:
2008-10-9 Ing. Julian Etayo - Creación Artículo
2008-10-20 Ing. Miguel Molina - Actualizado removiendo la llave primaria de campos combinados en el
SQL de creación de la tab queue_log.
2008-12-15 Ing. Miguel Molina - Actualizados los links para la versión 2.1.0 de DAHDI.
2009-01-14 Ing. Miguel Molina - Actualizada la sección "Subir el Queue_log a MySQL" con los cambios
necesarios para guardar el cuarto parámetro presente en el evento TRANSFER del queue_log, que guarda la
duración actual de la llamada en el momento de ser transferida.
2008-02-04 Ing. Julian Etayo - Actualización de paquetes Asterisk, Libpri y dahdi.
Tabla de contenidos
1 Inicio de Instalación
2 Descarga y extracción de paquetes
3 Parche del CDR MySQL y del script de inicio
4 Parche para app_queue
5 Compilación de paquetes
6 Sonidos en español
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 Instalación
Para iniciar el proceso de instalación de Asterisk 1.4.X se debe tener la
Instalacion_CentOS_5.1_para_Asterisk_-_GNU
Descarga y extracción de paquetes
A continuacion se descargan los siguientes paquetes:
Instalacion Asterisk 1.4.X - Millenium Phone Center http://wiki.millenium.com.co/wiki/index.php/Instalacion_Asterisk_1.4.X
1 de 11 25/09/2009 21:38
# 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.gz
# 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 módulo cdr_addon_mysql.so almacene el UNIQUEID en la
base de datos como se muestra a continuación:
# 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 línea
#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 función start() antes de la línea:
daemon $DAEMON $ASTARGS
la siguiente línea:
ASTARGS="$ASTARGS -p"
Parche para app_queue
Instalacion Asterisk 1.4.X - Millenium Phone Center http://wiki.millenium.com.co/wiki/index.php/Instalacion_Asterisk_1.4.X
2 de 11 25/09/2009 21:38
Nota: Parche Oficial Mike
Con el ánimo de mejorar la visualización 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 numérico 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
Compilación de paquetes
Para realizar la compilación es importante seguir el siguiente orden: Dahdi, Libpri, Asterisk, Asterisk-
Addons, como se muestra a continuación:
# 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é módulos queremos tener cargados en el sistema de acuerdo al
hardware instalado en el archivo
# vim /etc/dahdi/modules
En este ejemplo podemos ver la porción del archivo en donde desactivamos todos los módulos, este sería el
caso cuando no tenemos hardware instalado.
Instalacion Asterisk 1.4.X - Millenium Phone Center http://wiki.millenium.com.co/wiki/index.php/Instalacion_Asterisk_1.4.X
3 de 11 25/09/2009 21:38
# 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.
# Digium TE205P/TE207P/TE210P/TE212P: PCI dual-port T1/E1/J1# Digium TE405P/TE407P/TE410P/TE412P: PCI quad-port T1/E1/J1# Digium TE220: PCI-Express dual-port T1/E1/J1# Digium TE420: PCI-Express quad-port T1/E1/J1#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 instalación 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 instalación. 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 instalación. Los requeridos ya
vienen por defecto. Para salir sin guardar '<esc>' para salir guardando 'x'
Si en algún 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 recién instaladas.
# make; make install; make samples
Instalacion Asterisk 1.4.X - Millenium Phone Center http://wiki.millenium.com.co/wiki/index.php/Instalacion_Asterisk_1.4.X
4 de 11 25/09/2009 21:38
Sonidos en español
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 buzón 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 continuación. Si el MySQL es local, dejamos la opción "port" comentada,
Instalacion Asterisk 1.4.X - Millenium Phone Center http://wiki.millenium.com.co/wiki/index.php/Instalacion_Asterisk_1.4.X
5 de 11 25/09/2009 21:38
ya que es más eficiente conectarse por socket UNIX que por conexión TCP/IP dentro de la misma máquina.
El código 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=localhostdbname=asterisktable=cdrpassword=bdcdruser=cdr;port=3306sock=/var/lib/mysql/mysql.sockuserfield=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 recién 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
continuación:
Instalacion Asterisk 1.4.X - Millenium Phone Center http://wiki.millenium.com.co/wiki/index.php/Instalacion_Asterisk_1.4.X
6 de 11 25/09/2009 21:38
# 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
Instalacion Asterisk 1.4.X - Millenium Phone Center http://wiki.millenium.com.co/wiki/index.php/Instalacion_Asterisk_1.4.X
7 de 11 25/09/2009 21:38
<?
# =================== ARCHIVO DE CONFIGURACION ============include("variables.php");# ==================== CONEXION AL SERVIDOR ================include("conexion.php");# =========================================================
# SE VERIFICA QUE EXISTA EL ARCHIVOfile_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[4]','$ar
#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 error ".mysq }
# CIERRA CONEXION POSTGRES#pg_close($dbp);# CIERRA CONEXION MYSQL mysql_close($dbp);# CIERRA ARCHIVOfclose($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
También se deben crear los siguientes archivos editando según cada campaña:
Instalacion Asterisk 1.4.X - Millenium Phone Center http://wiki.millenium.com.co/wiki/index.php/Instalacion_Asterisk_1.4.X
8 de 11 25/09/2009 21:38
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 libreriascd libreriasvi 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
Instalacion Asterisk 1.4.X - Millenium Phone Center http://wiki.millenium.com.co/wiki/index.php/Instalacion_Asterisk_1.4.X
9 de 11 25/09/2009 21:38
Ahora insertamos la siguiente línea:
# MODULO DE ESTADISTICAS# ============================================================================0 * * * * /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 codificación 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 asteriskAhora 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
Instalacion Asterisk 1.4.X - Millenium Phone Center http://wiki.millenium.com.co/wiki/index.php/Instalacion_Asterisk_1.4.X
10 de 11 25/09/2009 21:38
[global]hostname=192.168.54.30port=5432dbname=asteriskpassword=user=postgrestable=cdr
Obtenido de "http://wiki.millenium.com.co/wiki/index.php/Instalacion_Asterisk_1.4.X"
Esta página fue modificada por última vez el 00:07, 29 ago 2009.
El contenido está disponible bajo los términos de la GNU Free Documentation License 1.2
Instalacion Asterisk 1.4.X - Millenium Phone Center http://wiki.millenium.com.co/wiki/index.php/Instalacion_Asterisk_1.4.X
11 de 11 25/09/2009 21:38