You are on page 1of 476

Libro Asterisk 1.6.2.X v. 2.

1
Marzo 2011
By VozToVoice
www.voztovoice.org
Convenciones tipogrficas.
egrita = comandos que el usuario tiene que teclear en la consola de Linux
NegritaCursiva: Lineas que hay que aadir/modificar en los archivos de configuracin
Nombreprograma = Indica el nombre de un programa o librera
Cursiva: respuesta del servidor Linux a los comandos
!LI" indica que estamos traba#ando en la consola de $steris%
mysql" indica que estamos traba#ando en el cliente &y'(L
!i enc"entran a#g"na incorrecci$n o errata p"e%en escribir a# a"tor&
#ibro'voztovoice.org
i
)ste documento se publica ba#o la *+, -ree .ocumentation License/ versin 012 o sucesivas/
publicadas por la -ree 'oft3are -oundation1 )st4 permitido copiar/ distribuir y/o modificar este
documento ba#o los t5rminos indicados en la licencia1 ,na copia integral de la licencia es presente en la
ap5ndice 6 de este libro1
Copyright (C) 2010-2015 Andrea Sannucci
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.
or any !ater "ersion pub!ished by the Free #oft$are Foundation%
$ith no &n"ariant #ections, no Front'(o"er )e*ts, and no +ac,'(o"er )e*ts.

ii
()(C*
Capit"#o ( + (nsta#aci$n %e Asterisk 7111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 0
010 8reparacin del 98' Linode 0
01: *;,B/ <ernel=>)+ y clave ;'$ ?
012 ,tilidades/ libreras/ dependencias 0@
01A Libpri 0B
01C .$6.I 0B
01@ $ppDfax/ *oogleEal% y otros :0
01? Instalacin de $steris% :C
Capit"#o (( + Config"raci$n inicia# %e Asterisk 1111111111111111111111111111111111111111111111111111111111111111111111111 2C
:10 Instalar y configurar un cortafuego 2C
:1: !arpetas y archivos 2F
:12 asteris%1conf AG
:1A modules1conf A:
:1C &Hsica en espera y &82 AA
:1@ 8reparacin del dialplan I extensions1conf A?
Capit"#o ((( , -rotoco#o !(- . arc/ivo sip.conf11111111111111111111111111111111111111111111111111111111111111111111111111 C2
210 sip1conf CC
21: .irectmedia @?
212 !ontraseas seguras @F
21A +grep @B
21C !onfiguracin >=Lite y ;)*I'E); @B
21@ !onfiguracin 2!> ?A
21? Llamadas entre extensiones ?@
21F 'I8 I+9IE) y !$+!)L ??
Capit"#o (V , -rotoco#o (AX2 , ia0.conf 111111111111111111111111111111111111111111111111111111111111111111111111111111111 F0
A10 iax1conf F0
A1: !onfiguracin Joiper F@
Capit"#o V + 1oog#eTa#k , gta#k.conf 2abber.conf1111111111111111111111111111111111111111111111111111111111111111111 B0
C10 #abber1conf B:
C1: gtal%1conf B2
iii
C12 $plicacin Kabber'end B?
Capit"#o V( + Asterisk . #a re% -!T1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 0GG
@10 Ear#eta .igium E.&A0G 0G0
@1: L'L)! 0G2
@12 Ear#eta .igium E)0:G8 0GF
@1210 &-*/;: I Lpenr: 0GB
@1A Manpipe 002
@1C Lin%sys '8$20G: I *ate3ay ->L/->' 00C
Capit"#o V(( + )ia#p#an , Config"raci$n avanza%a111111111111111111111111111111111111111111111111111111111111111111 0:@
?10 Las 9ariables 0:@
?1: 8attern &atching 0:B
?12 La aplicacin )cho 02G
?1A )l contexto 'ubscribe 020
?1C Las &acro 02C
?1@ La aplicacin $uthenticate 02F
Capit"#o V((( + (V3 711111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 0A2
F10 *rabacin de las locuciones 0A2
F1: !onfiguracin numero geogr4fico 0AC
F12 !reacin del I9; 0A@
Capit"#o (X + 4"nciona#i%a%es avanza%as %e Asterisk , feat"res.conf 11111111111111111111111111111111111 0C0
B10 features1conf 0C0
B1: !allgroup y 8ic%upgroup 0CB
B12 $plicacin .ial y features1conf 0@0
Capit"#o X , Asterisk 3ea#ti5e111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 0@?
0G10 ;ealtime estatico 0@?
0G1: ;ealtime dinamico 0?A
0G1:10 )xtensiones 'I8 en ;ealtime 0?A
0G1:1: )xtensiones I$> en ;ealtime 0F:
0G1:12 .ialplan en ;ealtime din4mico 0F?
iv
Capit"#o X1 , (V3 avanza%os , f"nc6o%bc.conf 111111111111111111111111111111111111111111111111111111111111111111111 0B0
0010 )mpleados 0B0
001: )ncuesta 0B@
Capit"#o X(( + 7"z$n %e voz , voice5ai#.conf111111111111111111111111111111111111111111111111111111111111111111111111 :GG
0:10 voicemail1conf :GG
0:1: &ensa#es de voN en una base de datos :0:
0:12 BuNones de voN en una base de datos :0A
Capit"#o X((( + Las conferencias a"%io 11111111111111111111111111111111111111111111111111111111111111111111111111111111111 :0F
0210 meetme1conf :0F
021: !onfBridge :::
0212 &eetme en ;ealtime .in4mico ::A
021A La aplicacin 8age ::?
Capit"#o X(V + )istrib"ci$n a"to5tica %e ##a5a%as , Co#as %e espera 7111111111111111111111111111 :20
0A10 Los agentes :20
0A1: Las colas de espera I queue1conf :22
0A12 $gentes din4micos :AA
0A1A )stadsticas de las colas :A@
Capit"#o XV + Asterisk . #os 4AX 71111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 :C0
0C10 I$>modem :C:
0C1: 6ylafax :CC
0C12 8rueba envo :@@
0C1A 8rotocolo E2F :?G
0C1C $pplicacin 'end-ax :?C
Capit"#o XV( , AM( . A1( 711111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 :?B
0@10 $&I :?B
0@1: $*I :FA
Capit"#o XV(( + 3egistros en Asterisk 71111111111111111111111111111111111111111111111111111111111111111111111111111111111 :FF
0?10 logger1conf :FF
v
0?1: .ebug :B0
0?12 !.; $daptive :B:
0?1A &onitoreo de la calidad de las llamadas :BC
Capit"#o XV((( , Conne0iones entre servi%ores Asterisk 71111111111111111111111111111111111111111111111111111 2G0
0F10 !onectar dos servidores $steris% con el protocolo 'I8 2G0
0F1: !onectar dos servidores $steris% con el protocolo I$>: 2GC
0F12 )l protocolo .,+.i 2G?
0F1A !onectar dos servidores $steris% con Lpen98+ 20F
Capit"#o X(X , !eg"ri%a% en Asterisk 7111111111111111111111111111111111111111111111111111111111111111111111111111111111 22?
0B10 Las cinco reglas b4sicas 22?
0B1: -ail:ban 22?
Capit"#o XX , Monitorear Asterisk 71111111111111111111111111111111111111111111111111111111111111111111111111111111111111 2A:
:G10 &onit 2A:
:G1: '+&8 2A@
:G12 +agios 2AB
:G1A +.Lutils 2@0
Capit"#o XX( + 8penfire . Asterisk 711111111111111111111111111111111111111111111111111111111111111111111111111111111111111 2@C
:010 Instalacin de Lpenfire 2@C
:01: Instalar el 8lugin 'I88hone en Lpenfire 2?2
:012 )l 8lugin $steris%=I& 2??
:01A $steris% como cliente en Lpenfire 2F0
:01C !onectar dos servidores Lpenfire 2F@
:01@ Lpenfire !onnection &anager 2FF
Capit"#o XX(( + Asterisk . a#ta %isponibi#i%a% 711111111111111111111111111111111111111111111111111111111111111111111 2B2
::10 ;eplicacin &y'(L &aster='lave 2B2
::1: ;eplicacin &y'(L &aster=&aster AGG
::12 .;B. = ;aid0 va E!8 A0G
::1A 6eartbeat A0?
Capit"#o XX((( + Asterisk 19( 7111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 A:C
vi
Capit"#o XX(V , 4ree-7X 7111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 A2G
Ap:n%ice A I sip1conf A2?
Ap:n%ice 7 I iax1conf AA:
Ap:n%ice C I extensiones1conf AAC
Ap:n%ice ) I Ltros $rchivos ACC
Ap:n%ice * I *+, -ree .ocumentation License ACB
vii
Capit"#o (
(nsta#aci$n %e Asterisk
Asterisk es el programa Lpen 'ource m4s reconocido para implementar una 8B>1 8ara una lista
completa de las funcionalidades brindadas/ visiten la p4gina de los desarrolladores1 )ntre ellas:
;egistro OLogP de llamadas
*rabacin de llamadas
.esvo de llamadas
Erasferencia de llamadas
!onferencias audio
&Hsica en espera
*estin de colas Ocall centerP
'oporte para tar#etas y *ate3ay ->L/ ->'/ digitales y celulares
)ste curso abarca la instalacin de $steris% en un 98' O'ervidor 9irtual 8rivadoP y es valida para
cualquier 'ervidor Linux !entL'1 !on el 98' la venta#a es tener una 8B> siempre activa/
independiente de la banda ancha disponible en la casa/oficina y evita tener una computadora dedicada y
siempre encendida1 8ara una instalacin en un servidor local o un servidor remoto dedicado Ono
virtualiNadoP/ omitir los pasos relacionados con el 98'1
1.1 -reparaci$n %e# V-!
.esde la versin C1@ de !entL' disponible para la instalacin en Linode/ para instalar .$6.I el
procedimiento ha cambiado1 $hora hay iniciar el servidor con *;,B y la ultima versin del <ernel=
xen1 >en es el sistema de virtualiNacin que utiliNan los servidores de Linode1 $ pesar que en los
servidores Linode est5 disponible la versin @1G de !entL'/ esta versin no se puede utiliNar ya que no
trae el <ernel=>en1
,na veN adquirido el servidor Linode/ desde la pagina de administracin/ se selecciona el enlace que
aparece en la imagen que sigue:
'e escoge el centro de datos donde se quiere tener el servidor virtual remoto Oen este caso .allasP:
)n la nueva ventana que aparecer4 se configurar4n algunos par4metros Odistribucin Linux/ &emoria
disco/ s3ap y contrasea del usuario root1 'e de#a una parte de la memoria del disco para crear dos
particiones que se utiliNar4n para la configuracin de alta disponibilidad1
Eerminada la configuracin se presiona el botn Q;ebuildR1 )mpeNar4 el proceso de instalacin y
configuracin del sistema operativo1 )n la seccin Q.is% ImagesR/ se crear4n dos nuevas particiones
seleccionando el enlace Q!reate a ne3 dis% imageR:
:
La primera:
La segunda:
8ara aadir las dos particiones al perfil del 98' se selecciona el enlace que aparece en la siguiente
imagen:
2
y en la seccin QBloc% device $ssignmentR/ se aaden las dos particiones como mostrado en la imagen:
'e va al final de la pagina y se presiona el botn Q'ave !hangesR1Sa se puede iniciar el servidor
presionando el botn QBootR1
!omo se puede ver en la imagen/ el <ernel que se instala es la versin QLatest 21G O21G1A=linode2FP1 .e
esta versin no hay las fuentes disponibles y eso imposibilita la instalacin de .$6.I1 8or eso en los
prximos p4rrafos se ver4 como instalar en el servidor la ultima versin disponible del <ernel=>)+1
,na veN que el servidor est5 corriendo/ como indicado en la imagen que sigue/ que aparece en el lado
derecho de la pagina de administracin de Linode/ se puede acceder al servidor con el programa 8uEEy
Oun cliente ''6P:
A
8ara conocer la direccin I8 del servidor Linode/ se entra en la siguiente pagina/ donde aparecen todos
los datos de configuracin de la red:
'e descarga el programa 8uEEy para Mindo3s desde esta pagina:
/ttp&;;t/e.eart/.#i;<sgtat/a5;p"tt.;#atest;0=6;p"tt..e0e
,na veN descargado se e#ecuta1 $parecer4 la siguiente ventana:
C
)n Q6ost +ame Oor I8 addressP se pone la direccin I8 del servidor Linode/ en Q8ortR :: y en Q'aved
'essionsR un nombre que identifique la conexin al 98'1 Eerminada la configuracin se presiona el
botn Q'aveR y luego el botn QLpenR que aparece m4s aba#o1 'e abrir4 una nueva ventana donde en
Qlogin asR hay que poner root y en Qpass3ordR la contrasea que se ha escogido al momento de la
instalacin del sistema operativo1
'i se est4 utiliNando Linux se abre una ventana terminal y para conectarse al servidor remoto se e#ecuta
el siguiente comando:
ss/ root'(-#ino%e
en lugar de I8linode se pone la direccin I8 publica del servidor remoto1
)l resultado ser4:
La primera cosa que hay que hacer es actualiNar el sistema:
."5 +. "p%ate
y luego reiniciarlo:
reboot
'e esperan un par de minutos y se vuelve a entrar con el cliente 8uEEy1
@
1.2 1397> ?erne#+X* . c#ave 3!A
)n este p4rrafo se ver4 como instalar el sistema de arranque *;,B con la ultima versin disponible del
<ernel=>)+ y como volver m4s seguro el acceso al servidor remoto a trav5s de la creacin y
configuracin de ''6 utiliNando una clave ;'$1 8rimero se descarga y se e#ecuta el script que sigue
que se ocupar4 de la configuracin de *;,B y de la instalacin de 'elinux:
c% ;"sr;src
wget /ttp&;;www.voztovoice.org;t5p;se#in"0+gr"b
!omo la version del <ernel=>)+ puede cambiar/ antes de e#ecutar el script/ se averigua cual es la
ultima versin disponible del %ernel=xen
."5 info kerne#+0en
y se compara con la que aparece en estas lineas del archivo selinux=grub:
tit#e Cent8! @2.6.1=+2AB.12.1.e#C0enD
kerne# ;boot;v5#in"z+2.6.1=+2AB.12.1.e#C0en rootE;%ev;0v%a
initr% ;boot;initr%+2.6.1=+2AB.12.1.e#C0en.i5g
'i las versiones son diferentes se modifican las lineas indicando la versin corriente1 'i son iguales/ se
cierra el archivo y se vuelve e#ecutable:
c/5o% F0 se#in"0+gr"b
y se inicia:
.;se#in"0+gr"b
'e puede averiguar que efectivamente se ha instalado el sistema de arranque *;,B con este comando:
?
#s ;boot;gr"b;
!omo el script instala dos servicios relacionados con el protocolo i'!'I que no se necesitan/ se
desabilitan:
c/kconfig iscsi off
c/kconfig iscsi% off
)l paso a seguir es modificar la configuracin del servidor Linode1 .esde la pagina de administracin
se selecciona el enlace que aparece en la imagen:
)n la nueva pagina se modifican los par4metros como indicado en las dos siguientes im4genes:
)n Botton 'ettings I <ernel escogemos Qpv=grub=xF@D2:
F
!asi al final de la pagina se modifican los dos par4metros indicados cambiado la opcin de Ses a +o1
8ara terminar se guardan los cambios presionando el botn Q'ave !hangesR1 'e regresar4 a la pagina
principal del servidor Linode y de ah se reinicia:
8ara averiguar que efectivamente el sistema se reinicia utiliNando el <ernel=>)+ y el gestor de
arranque *;,B/ en la pagina de Linode se entra en el menH Q;emote accessR y luego se sigue el
enlace QLaunch Lish $#ax !onsoleR che permite acceder al servidor desde una consola local1 'e abrir4
una nueva ventana y despu5s de unos segundos aparecer4 esta imagen:
8ara crear la clave ;'$ se descarga el programa 8uEEygen:
/ttp&;;t/e.eart/.#i;<sgtat/a5;p"tt.;#atest;0=6;p"tt.gen.e0e
'e e#ecuta:
B
)n Q+umber of bits in a generated %eyR se pone :GAF Ose crea una clave de :GAF ByteP y luego se
presiona el botn Q*enerateR1 8ara la creacin de la clave se necesita generar una serie aleatoria de
nHmeros y se hace moviendo el ratn en el cuadro que aparece ba#o la linea Q<eyR:
6ay que seguir moviendolo hasta que la barra que aparece no llegue al final de la linea1 Eerminada la
0G
operacin se tendr4 disponible la clave ;'$ Opublica y privadaP:
'e guarda la clave privada en una carpeta del ordenador local presionando el botn Q'ave private
%eyROen este caso se nombra claveprivadaP:
8ara continuar se selecciona todo el texto que aparece en la imagen que sigue/ se presiona el botn
derecho del ratn y se escoge en el menH QcopiarR:
00
)l texto copiado es la clave publica1 'e accede nuevamente con 8uEEy al servidor remoto y se sigue
este procedimiento para utiliNar la clave publicaT se crea la carpeta ssh:
5k%ir .ss/
se permite el acceso a la carpeta creada solamente al usuario root:
c/5o% A00 .ss/
se entra en la carpeta:
c% .ss/
se crea el archivo authoriNedD%eys que es donde el sistema operativo buscar4 las claves ;'$ publicas
del sistema Oen este caso para el usuario rootP:
nano a"t/orize%6ke.s
se pega el contenido copiado desde 8uEEygen que debe quedar todo en la misma linea:
0:
'e guarda el archivo hundiendo la teclas !E;L=>1 'e asigna al archivo reci5n creado los permisos de
lectura y escritura solamente al usuario root:
c/5o% 600 ;root;.ss/;a"t/orize%6ke.s
Eerminada esta operacin se modifican algunos par4metros del servidor ''6 para permitir el acceso al
98' solamente al usuario root si se autentica con la clave ;'$/ adem4s/ para aumentar la seguridad/ se
cambia el puerto predefinido para el acceso ''6 O:: E!8P/ escogiendo otro O0CGGG E!8P1 )sto se hace
modificando el archivo de configuracin del servidor ''6:
nano ;etc;ss/;ss/%6config
'e buscan estas lineas Opara buscar un texto con el editor nano hay que hundir la tecla !E;L #unto a la
tecla MP:
#Port 22
#RSAAuthentication yes
PasswordAuthentication yes
y se modifican para que queden:
Port 15000
RSAAuthentication yes
PasswordAuthentication no
.e esta forma se cambia el puerto predefinido para acceder al servidor remoto Ode :: a 0CGGGP/ se
activa el acceso con claves ;'$ y se desactiva la autenticacin con nombre de usuario y contrasea1 'e
guardan los cambios y se reinicia el servidor ''6:
;etc;init.%;ss/% restart
'e abre otra instancia del cliente ''6:
02
'e pone la I8 del servidor Linode/ come puerto el 0CGGG y se asigna un nuevo nombre a esta nueva
conexin1
)n la barra de la iNquierda se busca el menH Q''6R/ luego Q$uthR y se presiona el botn QBro3seR1 'e
busca la clave privada en la carpeta donde se ha guardado anteriormente y se selecciona1 'e vuelve al
menH 'ession Oen la iNquierdaP y se guarda esta nueva configuracin hundiendo el botn Q'aveR1 $hora
hay dos sesiones disponibles en el cliente ''6: Linode y Linode:1 8ara acceder al servidor Linux se
escoge la sesin Linode:/ botn QLoadR y luego botn QLpenR1 .ebe aparecer esta ventana:
0A
,na veN que se haya escrito el nombre de usuario root en Qlogin as:R/ autom4ticamente el cliente se
conectar4 al servidor autentic4ndose con la clave ;'$ creada1
8ara terminar la configuracin del 98'/ se modifica la hora predefinida del servidor y/si se quieres/ el
idioma del terminal:
r5 ;etc;#oca#ti5e
rm: remove regular file `/etc/localtime'? Y
'e crea un enlace simblico a la hora de !olombia:
#n +s ;"sr;s/are;zoneinfo;A5erica;7ogota ;etc;#oca#ti5e
se averigua que la hora sea exacta con el comando:
%ate
8ara que la hora se actualice de manera autom4tica se instala el servidor +E8 O+et3or% Eime
8rotocolP:
."5 insta## ntp
'e configura para que se inicie autom4ticamente al arrancar el servidor Linux:
c/kconfig ntp% on
y se inicia:
service ntp% start
Starting ntpd:
8ara modificar el idioma predefinido OinglesP y ponerlo en espaol:
nano ;etc;s.sconfig;i1=n
se modifica esta linea:
LANG!en"#S$#%&'(!
para que quede:
0C
LANG!es"C)$iso((5*1!
8ara activar el nuevo idioma basta salir y volver a entrar al servidor con 8uEEy1
1.G 9ti#i%a%es> #ibrerHas> %epen%encias
$ntes de la compilacin de $steris%/ se instalar4n una serie de libreras y dependencias que permitir4n
obtener una instalacin de casi todos los mdulos de la 8B>1 'e empieNa con Vorbis que es una librera
para la compresin/decompresin audio:
."5 insta## #ibvorbis #ibvorbis+%eve# vorbis+too#s #ibogg #ibogg+%eve#
se sigue con CURL que es un cliente que permite recibir o enviar archivos utiliNando los protocolos
6EE8/ 6EE8'/ -E8/ *L86);/ .I!E/ E)L+)E:
."5 insta## c"r# c"r#+%eve# #ibi%n+%eve#
se instalan todas las libreras y dependencias que se necesitan para compilar las fuentes:
."5 insta## gcc nc"rses nc"rses+%eve# 5ake gcc+cFF #ibter5cap #ibter5cap+%eve# z#ib z#ib+%eve#
#ibtoo# bison bison+%eve# openss#+%eve# bzip2 bzip2+%eve# wget newt newt+%eve# s"bversion f#e0
gtk2+%eve#
a seguir para crear y gestionar las bases de datos/ MySQL:
."5 insta## 5.sI# 5.sI#+server 5.sI#+%eve#
UNIXODBC que es la implementacin Linux de los $8I L.B! que permiten conectarse a muchos
sistemas de gestin de base de datos Oe#: &y'(LP:
."5 insta## "ni08)7C "ni08)7C+%eve# 5.sI#+connector+o%bc #ibtoo#+#t%#+%eve#
'e instala FESIVAL/ que es un sistema de text to speech Odisponible en espaolP:
."5 insta## festiva# festiva#+%eve#
,na veN terminada esta parte se empieNa a instalar una serie de programas desde las fuentesT el primero
es S!EEX que es un programa para la compresin audio especficamente diseado para la voN1
(M-83TAT*& -ara to%os #os progra5as I"e se insta#an %es%e #as f"entes> antes %e
%escargar#os> averig"ar si /a. "na versi$n 5s reciente %isponib#e.
c% ;"sr;src
wget /ttp&;;%own#oa%s.0ip/.org;re#eases;spee0;spee0+1.2rc1.tar.gz
0@
'e descomprime:
tar +0f spee0+1.2rc1.tar.gz
'e entra en la carpeta creada:
c% spee0+1.2rc1
'e compila:
.;config"re ++prefi0E;"sr
5ake
5ake insta##
'e continua con LAME que es utiliNa para codificar archivos audio en formato &82:
c% ;"sr;src
wget /ttp&;;"fpr.%#.so"rceforge.net;so"rceforge;#a5e;#a5e+G.JJ.2.tar.gz
tar +0f #a5e+G.JJ.2.tar.gz
c% #a5e+G.JJ.2
.;config"re ++prefi0E;"sr
5ake
5ake insta##
LIBMAD que es un &8)* audio decodificador de alta calidad:
c% ;"sr;src
wget /ttp&;;pr%own#oa%s.so"rceforge.net;5a%;#ib5a%+0.1C.1b.tar.gz
tar +0f #ib5a%+0.1C.1b.tar.gz
c% #ib5a%+0.1C.1b
.;config"re ++prefi0E;"sr
5ake
5ake insta##
"AV!AC# es un compresor audio de alto rendimiento sin perdida de calidad:
c% ;"sr;src
wget /ttp&;;www.wavpack.co5;wavpack+B.60.1.tar.bz2
0?
tar +0f wavpack+B.60.1.tar.bz2
c% wavpack+B.60.1
.;config"re ++prefi0E;"sr
5ake
5ake insta##
'e termina con SOX que es un programa que permite la manipulacin de archivos audio y la
posibilidad de pasarlos de un formato a otro:
c% ;"sr;src
wget /ttp&;;%own#oa%s.so"rceforge.net;pro2ect;so0;so0;1B.G.2;so0+1B.G.2.tar.gz
tar +0f so0+1B.G.2.tar.gz
c% so0+1B.G.2
.;config"re +prefi0E;"sr
$l finaliNar el configure aparecer4 esta tabla donde se encontrar4n todos los formatos audio que se
podr4n manipular con 'L>:
0F
'e termina con la compilacin e instalacin:
5ake
5ake insta##
1.B Lib-3(
)n el caso que se quiera instalar tar#etas digitales en el servidor $steris% O)0/ E0/ I'.+P/ antes de
instalar .$6.I/ hay que instalar la librera libpri
c% ;"sr;src
wget /ttp&;;%own#oa%s.asterisk.org;p"b;te#ep/on.;#ibpri;#ibpri+1.B.12.tar.gz
se decomprime:
tar +0f #ibpri+1.B.12.tar.gz
se entra en la carpeta:
c% #ibpri+1.B.12
se compila y se instala:
5ake
5ake insta##
1.C )AK)(
)l paquete DAD$I O.igium $steris% 6ard3are .evice InterfaceP permite cargar los drivers y configurar
distintos tipos de tar#etas en $steris% Oanalgicas/ digitales/ ;.'I/I'.+/ cancelador de )!6LP1
$steris%/ adem4s/ se apoya en .$6.I para la generacin del QtimingR indispensable para las
conferencias audio y el trun%ing I$>: Otema tratado en la configuracin del archivo iax1confP1 'e
instala el paquete de desarrollo del <ernel=>en:
."5 insta## kerne#+0en+%eve#
(M-83TAT*& La Lnica %iferencia con "n siste5a Cent8! #oca# o "n servi%or
%e%ica%o es I"e se insta#a e# paI"ete estn%ar %e# ?erne#& ."5 insta## kerne#+%eve#
'e continua con la ultima versin disponible de .$6.I=Linux:
c% ;"sr;src
0B
wget /ttp&;;%own#oa%s.asterisk.org;p"b;te#ep/on.;%a/%i+#in"0;re#eases;%a/%i+#in"0+2.C.0.2.tar.gz
tar +0f %a/%i+#in"0+2.C.0.2.tar.gz
c% %a/%i+#in"0+2.C.0.2
5ake
5ake insta##
'e termina con la ultima versin disponible de .$6.I=Eools:
c% ;"sr;src
wget /ttp&;;%own#oa%s.asterisk.org;p"b;te#ep/on.;%a/%i+too#s;re#eases;%a/%i+too#s+2.C.0.2.tar.gz
tar +0f %a/%i+too#s+2.C.0.2.tar.gz
c% %a/%i+too#s+2.C.0.2
.;config"re
5ake 5en"se#ect
en la ventana que aparece se seleccionan todos los mdulos disponibles como indicado en la imagen
que sigue:
'e guarda la configuracin presionando la tecla tabulador hasta posicionarse sobre Q'ave U )xitR1 'e
termina con la compilacin e instalacin:
5ake
5ake insta##
5ake config
Sa se puede iniciar .$6.I:
:G
;etc;init.%;%a/%i start
Loading DAHDI ard!are modules:
!ct"##p: $ %& '
!cte()#p: $ %& '
!ct(##p: $ %& '
!cte((#p: $ %& '
!ctdm)"##p: $ %& '
!cf#o: $ %& '
!ctdm: $ %& '
!c*"##p: $ %& '
!ctc"##p: $ %& '
#pp+us*: $ %& '
,o ard!are timing source found in /proc/dadi- loading dadi+dumm.
/unning dadi+cfg: $ %& '
1.6 App6fa0> 1oog#eTa#k . otros
)n este p4rrafo se ver4 como instalar 'pan.'8/ un procesador de seales digitales que en $steris%
permite la instalacin del modulo appDfax para la recepcin y envo de faxes/ y I<')&)L que permite
implementar el protocolo >&88 en $steris% y de esta forma conectarse a *oogleEal% y/o a cualquier
servidor de tipo >&88 Ootro e#emplo es LpenfireP:
8ara Spa%DS! se necesita instalar primero las libreras libtiff:
."5 insta## #ibtiff #ibtiff+%eve# #ib05#2 #ib05#2+%eve#
se continua con 'pan.'8:
c% ;"sr;src
wget /ttp&;;www.soft+switc/.org;%own#oa%s;span%sp;span%sp+0.0.6pre1=.tgz
tar +0f span%sp+0.0.6pre1=.tgz
c% span%sp+0.0.6
.;config"re ++prefi0E;"sr
5ake
5ake insta##
)l protocolo >&88 permite conexione seguras entre cliente y servidor utiliNando el protocolo EL'T
para ese efecto se instala/ antes de I#SEMEL las relativas libreras:
."5 insta## gn"t#s gn"t#s+%eve# gn"t#s+"ti#s
:0
se continua con I<')&)L:
c% ;"sr;src
wget /ttp&;;ikse5e#.goog#eco%e.co5;fi#es;ikse5e#+1.B.tar.gz
tar +0f ikse5e#+1.B.tar.gz
c% ikse5e#+1.B
.;config"re ++prefi0E;"sr
5ake
antes de la instalacin se e#ecuta un test para tener la certeNa que la compilacin haya tenido 5xito:
5ake c/eck
0ASS: tst1i2stac2
0ASS: tst1i2s
0ASS: tst1sa#
0ASS: tst1dom
0ASS: tst1sa
0ASS: tst1md3
0ASS: tst1filter
0ASS: tst14id
555555555555555555
All 6 tests passed
555555555555555555
Sa que todo est4 bien/ se puede instalar:
5ake insta##
$ntes de la instalacin de $steris%/ se termina la preparacin del sistema con unos programas m4s1
8rimero un servidor de correo electrnico/ SENDMAIL:
."5 insta## sen%5ai# sen%5ai#+%eve# sen%5ai#+cf
'e configura para que arranque en autom4tico:
c/kconfig sen%5ai# on
$l alquilar el servidor Linode/ cada 98' tiene asignado un sub=dominio que se puede utiliNar para la
configuracin del sistema1 )ste dato aparece en la pagina de administracin de Linode/ ba#o el menH
Q;emote $ccessR
::
)n este caso el sub=dominio asignado es #i206+C1.5e5bers.#ino%e.co51 )se nombre se pone en la
configuracin de red del servidor de la siguiente forma:
nano ;etc;s.sconfig;network
al final del archivo se aade la siguiente linea:
K8!TAM*E#i206+C1.5e5bers.#ino%e.co5
'e guardan los cambios y se reinicia el servicio de red:
service network restart
)l sub=dominio se utiliNar4 para el envo y recepcin de los correos electrnicos1 8or defecto el
servidor de correo electrnico escucha solamente en la puerto E!8 :C local1 8ara que sea alcanNable
tambi5n desde remoto hay que abrir el archivo de configuracin de 'endmail:
nano ;etc;5ai#;sen%5ai#.5c
buscar esta linea Opara buscar un texto con el editor nano hay que presionar la combinacin de teclas
!E;L=MP:
+A,-)N")P%.)NS/0Ports1t23Addr124$0$0$13 Na1e-%A56dn7
y modificarla como sigue:
+A,-)N")P%.)NS/0Ports1t233 Na1e-%A56dn7
se guardan los cambios y se vuelve a compilar la configuracin de 'endmail:
5ake +C ;etc;5ai#
:2
se reinicia el servidor de correo:
;etc;init.%;sen%5ai# restart
para hacer la prueba que si es posible conectarse al servidor de correo electrnico desde remoto/ se abre
una ventana terminal en Mindo3s y se escribe:
!:V" te#net +a ip#ino%e 2C
)n lugar de iplinode se pone la I8 del servidor Linode1 )l resultado:
OpenLDAP es la versin open source del protocolo Light3eight .irectory $ccess1 +ormalmente se
utiliNa para crear un directorio de usuarios que puede ser consultado y/o modificado desde remoto1
&uchos programas implementan la posibilidad de conectarse a un servidor LpenL.$8 y $steris%/
desde la versin 01@1>/ presenta esta posibilidad:
."5 insta## co5pat+open#%ap open#%ap open#%ap+c#ients open#%ap+%eve# open#%ap+servers
SNMP es el 8rotocolo 'imple de $dministracin de ;ed y sirve para controlar y monitorear el
desempeo del servidor Linux1 )n $steris% permite monitorear/ entre otras cosas/ los canales y las
llamadas1 'e utiliNar4 #unto a +$*IL' para controlar el servidor $steris% y enviar avisos cuando se
verifique algHn tipo de problema:
."5 insta## net+sn5p net+sn5p+%eve# net+sn5p+#ibs net+sn5p+"ti#s
)n $steris% existe la posibilidad de guardar los registros de las llamadas en un servidor ;$.I,' a
trav5s de un cliente ;$.I,' que hay que instalar1 )n este caso se instala desde las fuentes:
c% ;"sr;src
wget /ttp&;;%own#oa%.ber#ios.%e;ra%i"sc#ient+ng;ra%i"sc#ient+ng+0.C.6.tar.gz
tar +0f ra%i"sc#ient+ng+0.C.6.tar.gz
c% ra%i"sc#ient+ng+0.C.6
.;config"re ++prefi0E;"sr
5ake
5ake insta##
:A
'e termina la preparacin del servidor con la instalacin del lengua#e de programacin L,$ que
permite escribir el dialplan Oo plan de llamadasP utiliNando este lengua#e1 $l terminar la instalacin de
$steris% se encontrar4 un archivo de e#emplo en la carpeta /etc/asteris%1 )n este caso se instala desde
las fuentes1 8rimero unas dependencias:
."5 insta## rea%#ine+%eve#
luego el programa:
c% ;"sr;src
wget /ttp&;;www.#"a.org;ftp;#"a+C.1.B.tar.gz
tar +0f #"a+C.1.B.tar.gz
c% #"a+C.1.B
'e modifica el archivo &a%efile para que el programa se instale por defecto en la carpeta /usr:
nano Makefi#e
se modifica esta linea:
.NS%ALL"%)P 8usr87oca7
para que quede:
.NS%ALL"%)P 8usr
se compila e instala:
5ake #in"0
5ake insta##
1.A (nsta#aci$n %e Asterisk
Eerminada la preparacin del servidor/ se inicia con la instalacin de $steris%1 'e descarga la ultima
versin 01@1:1> disponible:
c% ;"sr;src
wget /ttp&;;%own#oa%s.asterisk.org;p"b;te#ep/on.;asterisk;o#%+re#eases;asterisk+1.6.2.22.tar.gz
tar +0f asterisk+1.6.2.22.tar.gz
:C
c% asterisk+1.6.2.22
.;config"re
5ake 5en"se#ect
)n la ventana que aparece se puede QnavegarR entre los varios menH presentes para mirar los mdulos y
las aplicaciones que se instalar4n1 ,n e#emplo es las distintas formas de guardar los registros de las
llamadas:
Los tipos de canales disponibles entre los cuales chanDgtal%:
:@
)n Q!ore 'ound 8ac%agesR se seleccionan todos los paquetes disponibles:
:?
)n Q&usic Ln 6old -ile 8ac%agesR se hace lo mismo:
!omo se hace lo mismo en Q)xtra 'ound 8ac%agesR:
'e guarda la configuracin presionando la tecla tabulador hasta posicionarse sobre Q'ave U )xitR1 'e
termina con la compilacin e instalacin:
:F
5ake
se instala $steris%:
5ake insta##
se instalan los archivos de configuracin predefinidos:
5ake sa5p#es
se configura el script de arranque de $steris%:
5ake config
$ntes de pasar a la instalacin de asteris%=addons/ se inicia el servidor &y'(L:
;etc;init.%;5.sI#% start
se configura para que arranque en autom4tico:
c/kconfig 5.sI#% on
y se crea una contrasea para el usuario root de &y'(L OsesamoP:
5.sI#a%5in +" root passwor% sesa5o
8ara asegurar el servidor &y'(L se e#ecuta el programa:
5.sI#6sec"re6insta##ation
'e contestan las preguntas somo sigue:
7nter current pass!ord for root 8enter for none9: sesa1o
%&- successfull. used pass!ord- moving on:::
Cange te root pass!ord? $;/n' n
::: s2ipping:
/emove anon.mous users? $;/n' y
::: Success<
Disallo! root login remotel.? $;/n' y
::: Success<
/emove test data*ase and access to it? $;/n' y
1 Dropping test data*ase:::
:B
/eload privilege ta*les no!? $;/n' y
::: Success<
Cleaning up:::
All done< If .ou've completed all of te a*ove steps- .our =.S>L
installation sould no! *e secure:
?an2s for using =.S>L<
'e reinicia el servidor &y'(L:
service 5.sI#% restart
'e continua con la instalacin de $steris%=addons:
c% ;"sr;src
wget /ttp&;;%own#oa%s.asterisk.org;p"b;te#ep/on.;asterisk;o#%+re#eases;asterisk+a%%ons+
1.6.2.B.tar.gz
tar +0f asterisk+a%%ons+1.6.2.B.tar.gz
c% asterisk+a%%ons+1.6.2.B
.;config"re
5ake 5en"se#ect
)n el menH se desactiva el modulo chanDooh2:2 ya que este protocolo no se va a utiliNar1 'e guarda la
configuracin presionando la tecla tabulador hasta posicionarse sobre Q'ave U )xitR1 'e termina con la
compilacin e instalacin:
5ake
5ake insta##
5ake sa5p#es
$hora se crea la base de datos y la tabla !.; para guardar los registros de las llamadas1 'e entra en el
cliente de &y'(L:
2G
5.sI# +" root +psesa5o
se crea la base de datos asteris%cdr:
mysql" create %atabase asteriskc%rM
se selecciona la base de datos creada:
mysql" "se asteriskc%r
se crea la tabla cdr donde se guardar4n todos los registros de las llamadas1 )l archivo de la tabla se
encuentra en la carpeta dos de la fuentes de asteris%=addons y el nombre es cdrDmysql1txt Ocopiando y
pegando las lineas que siguenP:
mysql" CR,A%, %A9L, cdr /
ca77date dateti1e N)% N#LL de:au7t 50000'00'00 00;00;0053
c7id varchar/(06 N)% N#LL de:au7t 553
src varchar/(06 N)% N#LL de:au7t 553
dst varchar/(06 N)% N#LL de:au7t 553
dconte<t varchar/(06 N)% N#LL de:au7t 553
channe7 varchar/(06 N)% N#LL de:au7t 553
dstchanne7 varchar/(06 N)% N#LL de:au7t 553
7asta22 varchar/(06 N)% N#LL de:au7t 553
7astdata varchar/(06 N)% N#LL de:au7t 553
duration int/116 N)% N#LL de:au7t 5053
=i77sec int/116 N)% N#LL de:au7t 5053
dis2osition varchar/>56 N)% N#LL de:au7t 553
a1a:7ags int/116 N)% N#LL de:au7t 5053
accountcode varchar/206 N)% N#LL de:au7t 553
uni?ueid varchar/@26 N)% N#LL de:au7t 553
user:ie7d varchar/2556 N)% N#LL de:au7t 55
6A
'e otorgan los permisos de acceso a la base de datos creada al usuario asteris%/ desde local
mysql" 13AT ALL -3(V(L*1*! 8 asteriskc%r.N T8 OasteriskO'O#oca#/ostO ()*T(4(*)
7P Osesa5oOM
desde remoto:
mysql" 13AT ALL -3(V(L*1*! 8 asteriskc%r.N T8 OasteriskO'OQO ()*T(4(*) 7P
Osesa5oOM
se actualiNan los permisos:
mysql" f#"s/ privi#egesM
20
se sale del cliente:
mysql" I"it
)n $steris% la conexin a la base de datos y la tabla de los registros de las llamadas/ se configura en el
archivo cdrDmysql1conf1 'e renombra el predefinido:
5v ;etc;asterisk;c%r65.sI#.conf ;etc;asterisk;c%r65.sI#.conf.o#%
se crea uno nuevo:
nano ;etc;asterisk;c%r65.sI#.conf
se aaden las siguientes lineas:
Bg7o=a7C
hostna1e7oca7host
d=na1easterisDcdr
ta=7ecdr
2asswordsesa1o
userasterisD
2ort@@0E
socD8var87i=81ys?781ys?7$socD
/ostna5e: nombre de dominio o direccin I8 donde se enceuntra &y'(L
%bna5e: nombre de la base de datos
tab#e& nombre de la tabla
passwor%& contrasea del usuario que tiene acceso a la base datos
"ser& nombre del usuario que tiene acceso a la base de datos
port& puerto donde &y'(L espera las conexines Opredefinido 22G@P
sock& carpeta y nombre del soc%et de &y'(L
'e guardan los cambios y se inicia $steris%:
;etc;init.%;asterisk start
se averigua que est5 corriendo:
;etc;init.%;asterisk stat"s
asteris2 8pid )"@A9 is running:::
se entra en la consola:
asterisk +rvvvvvvvvvvvvvvvv
se controla que la conexin a la base de datos est5 activa:
2:
!LI" c%r 5.sI# stat"s
Connected to asteris2cdrBlocalost- port AA@C using ta*le cdr for 3D seconds:
Erote @ records since last restart:
'e sale de la consola:
!LI" I"it
7#ecuting last minute cleanups
22
Capit"#o ((
Config"raci$n inicia# %e Asterisk
2.1 (nsta#ar . config"rar "n cortaf"egos
8ara proteger el servidor Linux de accesos no autoriNados hay que instalar un fire3all OcortafuegosP y
abrir los puertos que $steris% necesita para aceptar conexiones externas1 )sta es la parte m4s delicada
de la configuracin del servidor porque es donde se definen los puertos y los servicios que son
accesibles desde Internet1 )n el caso del 98' Linode se instalar4 y !onfigurar4 I8tables1
'i $steris% se encuentra instalado en un computador local conectado a Internet a trav5s de un router
hay dos opciones:
$brir los puertos desde la pagina de administracin del router1
!onfigurar una .&J en el router para la I8 del servidor donde se ha instalado $steris% y luego
gestionar los puertos directamente con Iptables en el servidor Linux
8ara instalar iptables:
."5 insta## iptab#es
Iptables se encarga de gestionar todos los paquetes que entren y salgan del servidor Linux1 8ara eso se
utiliNan tres tipos de tablas:
la tabla fi#ter donde pasan todos los paquetes en entrada y salida1 La tabla filter acepta tres tipos
de opciones OcadenasP
I+8,E para los paquetes en entrada
L,E8,E para los paquetes en salida
-L;M$;. para redireccionar los paquetes
la tabla AT se utiliNa para rescribir las direcciones o los puertos de los paquetes
la tabla MA1L* se utiliNa para modificar algunos par4metros de los paquetes Oun e#emplo es
marcar los paquetes para que vengan procesados y enviados con una prioridad m4s altaP
Las reglas se definen una por linea y ser4n procesadas por iptables siguiendo la misma secuencia1
!uando no se especifica diversamente/ todas las reglas se aplicar4n a la tabla filter:
'e acepta todo el trafico en entrada destinado a la interfaN loo%pac%
iptab#es +A (-9T +i #o +2 ACC*-T
'e rechaNa O;)K)!EP todo el trafico entrante direccionado a las I8 0:?1G1G1G/0:?1:CC1:CC1:CC menos
los paquetes para la interfaN =lo
iptab#es +A (-9T +i R #o +% 12A.0.0.0;= +2 3*S*CT
'e aceptan todos los paquetes en entrada de conexiones ya establecidas/ o relacionados con conexiones
establecidas1 95ase protocolo E!8
iptab#es +A (-9T +5 state ++state *!TA7L(!K*)>3*LAT*) +2 ACC*-T
'e de#a pasar todos los paquetes salientes1
iptab#es +A 89T-9T +2 ACC*-T
'e de#a pasar todo el trafico en entrada para el protocolo ''6 Opuerto 0CGGG tcpP
iptab#es +A (-9T +p tcp +5 state ++state *T +5 tcp ++%port 1C000 +2 ACC*-T
'e de#a pasar todo el trafico en entrada destinado al puerto udp AC@B Oprotocolo I$>:P
iptab#es +A (-9T +p "%p ++%port BC6J +2 ACC*-T
'e de#a pasar todo el trafico en entrada destinado al puerto udp CG@G Oprotocolo 'I8P
iptab#es +A (-9T +p "%p ++%port C060 +2 ACC*-T
'e de#a pasar todo el trafico en entrada destinado al puerto tcp CG@G Oprotocolo 'I8 sobre E!8P
iptab#es +A (-9T +p tcp +5 state ++state *T +5 tcp ++%port C060 +2 ACC*-T
'e de#a pasar todo el trafico en entrada destinado a los puertos udp que van de 0GGGG a :GGGG
Oprotocolo ;E8P
iptab#es +A (-9T +p "%p ++%port 10000&20000 +2 ACC*-T
'e de#an pasar las solicitudes de ping
iptab#es +A (-9T +p ic5p +5 ic5p ++ic5p+t.pe = +2 ACC*-T
$ este punto/ que se han definido los puertos base que se necesitan abiertos/ se bloquea todo el trafico
restante1
iptab#es +A (-9T +2 3*S*CT
iptab#es +A 483TA3) +2 3*S*CT
'e averigua el estado de las reglas definidas con el comando:
iptab#es +L
$parecer4:
2@
Cain I,0F? 8polic. ACC70?9
target prot opt source destination
ACC70? all 11 an.!ere an.!ere
/7G7C? all 11 an.!ere ()H:@:@:@/6 re4ect1!it icmp1port1unreaca*le
ACC70? all 11 an.!ere an.!ere state /7LA?7D-7S?AILISH7D
ACC70? tcp 11 an.!ere an.!ere state ,7E tcp dpt:.dap
ACC70? udp 11 an.!ere an.!ere udp dpt:ia#
ACC70? udp 11 an.!ere an.!ere udp dpt:sip
ACC70? tcp 11 an.!ere an.!ere state ,7E tcp dpt:sip
ACC70? udp 11 an.!ere an.!ere udp dpts:ndmp:dnp
ACC70? icmp 11 an.!ere an.!ere icmp eco1request
/7G7C? all 11 an.!ere an.!ere re4ect1!it icmp1port1unreaca*le
Cain J%/EA/D 8polic. ACC70?9
target prot opt source destination
/7G7C? all 11 an.!ere an.!ere re4ect1!it icmp1port1unreaca*le
Cain %F?0F? 8polic. ACC70?9
target prot opt source destination
ACC70? all 11 an.!ere an.!ere
8ara guardar los cambios:
service iptab#es save
Saving fire!all rules to /etc/s.sconfig/ipta*les: $ %& '
'e arranca el servicio:
service iptab#es start
8ara arrancar iptables autom4ticamente:
c/kconfig iptab#es on
8ara terminar hay que configurar $steris% para que use los puertos ,.8 desde 0GGGG hasta :GGGG para
el protocolo ;E8 Oes el que se encarga/ una veN establecida la conexin entre dos canales/ del flu#o
audio/videoP
'e edita el archivo:
nano ;etc;asterisk;rtp.conf
)n los archivos de configuracin de $steris%/ los par4metros pueden estar comentados con un punto y
coma por delante1 'i se quiere utiliNarlos hay que quitar el punto y coma1
'e quita el punto y coma antes de Ugenera#V Osi lo hayP&
2?
)n rtpstart se pone 0GGGG y en rtpend :GGGG:
rt2start10000
rt2end20000
'e guardan los cambios efectuados y se recarga la configuracin de $steris%:
;etc;init.%;asterisk restart
2.2 Carpetas> arc/ivos
$l terminar la instalacin de $steris% unas cuantas carpetas nuevas ser4n creadas1
;etc;asterisk
!ontiene todos los archivos de configuracin de $steris%1
;"sr;#ib;asterisk;5o%"#es
!ontiene todos los mdulos compilados y utiliNables en $steris%1
;var;#ib;asterisk
(ue a su veN contiene las siguientes carpetas:
agi+bin;
donde poner los script $*I1
fir5ware;
.onde se guardan los firm3are de los dispositivos compatibles con $steris%1
i5ages;
.onde las aplicaciones ir4n a buscar las im4genes cuando se comuniquen con tel5fonos que soportan
esta funcin1
ke.s;
!laves publicas y privadas que $steris% necesita para autenticarse con otros servidores o servicios O)#:
.,+.iP1
so"n%s;
2F
!ontiene todas las locuciones que se pueden utiliNar en el plan de llamadas 8dialplan91
5o/;
La mHsica en espera que viene con la instalacin de $steris% 8no mpA9:
#icences;
Las licencias de uso que se han adquirido 874: para el codec audio gH)D91
;var;spoo#;asterisk
(ue contiene:
%ictate;
.onde se guardar4n los archivos audio creados con la aplicacin .ictateOP1
5eet5e;
.onde se guardar4n las grabaciones de las conferencias1
5onitor;
'i se graba una llamada/ esta es la carpeta donde se guardar4n los archivos audio1
o"tgoing;
.onde hay que mover los archivo de llamadas 8call files91 95ase el archivo callfiles1txt en la carpeta
doc de las fuentes de $steris% para una explicacin del funcionamiento de estos archivos1
s.ste5;
!arpeta para archivos temporales creados por la aplicacin 'ystemOP1
t5p;
!arpeta donde se guardan los archivos temporales creados por algunas aplicaciones O)#1 buNn del
voNP1
voice5ai#;
.onde se guardar4n los archivos audio de los mensa#es de voN de#ados en el buNn de voN y los
mensa#es audio personaliNados de cada usuario1
;var;r"n;asterisk
2B
!ontiene la I. del proceso de $steris% cuando est5 corriendo1
;var;#og;asterisk
.onde se guardar4n todos los registros de $steris% 8errores- mensa4es . eventos9: .e revisar cuando se
tengan problemas con $steris%1
;etc;%a/%i
!ontiene los archivos de configuracin de .$6.I
2.G asterisk.conf
)n el archivo asteris%1conf/ que se encuentra en la carpeta /etc/asteris%/ se puede modificar la
configuracin general de $steris%1 'e divide en cuatro bloques:
un bloque donde se definen las carpetas de traba#o de $steris%
un bloque donde se definen distintas opciones
un bloque donde se definen los permisos para el soc%et de $steris%
un bloque donde se define el tipo de comportamiento que debe tener $steris% para determinadas
aplicaciones Odialplan/ $*I/ ;ealtimeP1
BdirectoriesC/F6
astetcdir G 8etc8asterisD
ast1oddir G 8usr87i=8asterisD81odu7es
astvar7i=dir G 8var87i=8asterisD
astd=dir G 8var87i=8asterisD
astDeydir G 8var87i=8asterisD
astdatadir G 8var87i=8asterisD
astagidir G 8var87i=8asterisD8agi'=in
asts2oo7dir G 8var8s2oo78asterisD
astrundir G 8var8run8asterisD
ast7ogdir G 8var87og8asterisD
)l Bloque WdirectoriesX es donde se pueden cambiar las carpetas de configuracin de $steris%1 )l valor
OYP despu5s de la etiqueta WdirectoriesX indica que el bloque esta comentado Ono ser4 ledo por $steris%P1
Bo2tionsC
Aver=ose @
Ade=ug @
Aa7ways:orD yes
Ano:orD yes
A?uiet yes
Ati1esta12 yes
Ae<ecinc7udes yes
AG
Aconso7e yes
Ahigh2riority ye
Ainitcry2to yes
Anoco7or yes
Adontwarn yes
Adu12core yes
A7anguage2re:i< yes
Ainterna7"ti1ing yes
Asyste1na1e 1y"syste1"na1e
Aautosyste1na1e yes
A1a<ca77s 10
A1a<7oad 0$*
A1a<:i7es 1000
A1in1e1:ree 1
Acache"record":i7es yes
Arecord"cache"dir 8t12
Atrans1it"si7ence"during"record yes
Atrans1it"si7ence yes
Atranscode"via"s7n yes
Asend:u77y=ooted yes
Arunuser asterisD
Arungrou2 asterisD
A7ight=acDground yes
Adocu1entation"7anguage en"#S
Ahideconnect yes
)l Bloque WoptionsX permite modificar algunas opciones de $steris%1 8or defecto todas las opciones
est4n comentadas Ono se e#ecutanP1 $lgunos e#emplos:
si se quiere quitar los colores en la consola de $steris%/ se quita el punto y coma de la linea
nocolors=yes
'i el sistema donde est4 instalado $steris% no puede cursar m4s de 2G llamadas/ se pone
maxcalls = 2G y se quita el punto y coma
si se quiere que al alcanNar un consumo del G/B de la !8, del servidor/ no se curse m4s
llamadas/ se quita el punto y coma delante de maxload = G1B
si en lugar del usuario y grupo root/ se quiere que el sistema arranque con usuario y grupo
asteris% Oque hay que crearP se quita el punto y coma delante de runuser = asteris% y rungroup =
asteris%
si se utiliNa un servidor dedicado para la base de datos y todos los registros de llamadas de
distintos servidores $steris% se guardan en ese servidor/ no hay forma de saber de cual servidor
es un determinado registro1 8ara que esto sea posible/ en cada servidor $steris% hay que
configurar el par4metro systemname con un valor que identifique el servidor $steris%1 .e esta
forma en los registros de llamadas se podr4 saber en cual 8B> se origin la llamada1
AB:i7esC
Aastct72er1issions 0EE0
A0
Aastct7owner root
Aastct7grou2 a2ache
Aastct7 asterisD$ct7
)l Bloque WfilesX es donde se definen permisos/ usuarios y nombre del soc%et de $steris%1
Bco12atC
2=<"rea7ti1e1$E
res"agi1$E
a22"set1$E
)l Bloque WcompatX es donde se puede cambiar el comportamiento de $steris% para el dialplan/ el $*I
y el ;ealtime Otemas que ser4n profundiNados en lo prximos captulosP1 )n las versiones anteriores a
la 01@ cuando se definan las opciones de una aplicacin/ se separaban con un pipe Z .esde la versin
01@ hay que sostituir el pipe con una coma1 'i se quiere que $steris% interprete correctamente los pipe
hay que modificar las tres lineas de la siguiente forma:
Bco12atC
2=<"rea7ti1e1$>
res"agi1$>
a22"set1$>
2.B 5o%"#es.conf
!uando se compila $steris%/ todos los mdulos se guardan en la carpeta /usr/lib/asteris%/modules1 8or
defecto cuando se inicia $steris%/ todos los mdulos ser4n cargados1 )ste comportamiento se debe a la
configuracin por defecto del archivo modules1conf1 'i se abre este archivo/ despu5s de la etiqueta
WmodulesX se encontrar4 el parametro:
a"to#oa%E.es
que significa que todos los mdulos compilados se cargar4n al iniciar $steris%1 Ltra forma de cargar los
mdulos podra ser poner ese par4metro en no y luego en el mismo archivo utiliNar el par4metro load
para cargar los mdulos uno a uno1
)n el mismo archivo encontramos el par4metro preload1 )ste par4metro se utiliNa para cargar un
modulo antes de todos los dem4s1 !omo se ver4 m4s adelante/ en el caso de los mdulos relacionados
con L.B!/ hay que utiliNar este par4metro para cargarlos antes de todos los dem4s1
)s muy probable que a lo largo de la configuracin de $steris%/ no se necesitar4 utiliNar algunos
mdulos y es una buena practica desactivar estos modulos de forma que no se carguen al iniciar
$steris%1 .e esta forma se reduce la memoria y los recursos utiliNados por la 8B>1
,n e#emplo puede ser el canal '%inny que se utiliNa en los tel5fonos de marca !I'!L1 'i no se va a
utiliNar este protocolo/ es me#or desactivarlo en el archivo modules1conf1 )sto se hace utiliNando el
par4metro noload1 'e abre el archivo modules1conf:
A:
nano ;etc;asterisk;5o%"#es.conf
y al final se aade la siguiente linea:
no#oa% EW c/an6skinn..so
'e guardan los cambios y se reinicia $steris%:
service asterisk restart
'e entra en la consola de $steris%:
asterisk +rvvvvvvvvvvvvvv
y con el comando:
!LI" 5o%"#e s/ow #ike c/an
se ver4n todos los canales disponibles:
=odule Description Fse Count
can+local:so Local 0ro#. Cannel 8,ote: used internal @
can+ia#):so Inter Asteris2 eKcange 8Ler )9 @
can+sip:so Session Initiation 0rotocol 8SI09 @
can+dadi:so DAHDI ?elepon. Driver !/0/I @
can+oss:so %SS Console Cannel Driver @
app+cansp.:so Listen to te audio of an active cannel @
can+*ridge:so Iridge Interaction Cannel @
app+dumpcan:so Dump Info A*out ?e Calling Cannel @
can+mgcp:so =edia Mate!a. Control 0rotocol 8=MC09 @
can+gtal2:so Mtal2 Cannel Driver @
can+unistim:so F,IS?I= 0rotocol 8FS?=9 @
can+agent:so Agent 0ro#. Cannel @
func+cannel:so Cannel information dialplan functions @
can+4ingle:so Gingle Cannel Driver @
app+cannelredirect:so /edirects a given cannel to a dialplan @
app+canisavail:so Cec2 cannel availa*ilit. @
can+pone:so Linu# ?elepon. A0I Support @
(H modules loaded
)l canal chanDs%inny no aparece porque se ha configurado para que no se cargue1 'i en un determinado
momento se quiere cargar un modulo que ha sido configurado para no cargarse al iniciar $steris%/ se
utiliNa el comando:
!LI" 5o%"#e #oa% c/an6skinn..so
$Dec D ((:@D:(6' ,%?IC7$A@3"': can+s2inn.:c:H("" config+load: Configuring s2inn. from
A2
s2inn.:conf
55 0arsing '/etc/asteris2/s2inn.:conf': 55 Jound
55 S2inn. listening on @:@:@:@:)@@@
55 /egistered cannel t.pe 'S2inn.' 8S2inn. Client Control 0rotocol 8S2inn.99
55 =anager registered action S&I,,;devices
55 =anager registered action S&I,,;so!device
55 =anager registered action S&I,,;lines
55 =anager registered action S&I,,;so!line
Loaded can+s2inn.:so 5N 8S2inn. Client Control 0rotocol 8S2inn.99
)l modulo cargado de esta forma quedar4 activo hasta el siguiente reinicio de $steris%1
2.C MLsica en espera . M-G
,na de las funcionalidades de $steris% es la mHsica en espera1 )n muchos servicios de asistencia al
cliente es tpico escucharla mientras se espera que algHn operador nos atienda1 )n este p4rrafo se
mostrar4 la configuracin de la mHsica en espera con archivos &821 $l usar archivos &82 hay que
tener en cuenta los problemas relacionados con el derecho de autor1
8rimero se crea la carpeta donde guardar los archivos &82:
5k%ir ;var;#ib;asterisk;5o/5pG
$hora se descarga un archivo mp2 en la carpeta creada1
c% ;var;#ib;asterisk;5o/5pG
wget /ttp&;;www.voztovoice.org;t5p;fresas.5pG
Informaciones sobre el archivo:
so0 ++i fresas.5pG
Eerminada la descarga del fichero &82/ el paso que sigue es configurar el archivo musiconhold1conf1
'e modifica de la siguiente manera:
AA
nano ;etc;asterisk;5"sicon/o#%.conf
'e aaden las siguientes lneas al final del archivo:
B12@C
1ode:i7es
directory8var87i=8asterisD81oh12@
rando1yes
Wmp2X I +ombre de la nueva clase de mHsica en espera
mode= files I la nueva clase utiliNar4 archivos audio
directory=/var/lib/asteris%/mohmp2 I los archivos se encontrar4n en la carpeta indicada en el
parametro directory
random=yes I los archivos audio se utiliNar4n de forma aleatoria
'e accede a la consola de $steris%:
asterisk +rvvvvvvvvvvvvv
'e escribe:
!LI" 5o/ re#oa%
para recargar la configuracin de la mHsica en espera1
!LI" 5o/ s/ow c#asses
8ara ver las clases de mHsica en espera configuradas1 $parecer4:
Class: default
localos=ode: files
localosDirector.: /var/li*/asteris2/mo
Class: mpA
=ode: files
Director.: /var/li*/asteris2/mompA
!LI" I"it
,sando archivos &82 para la mHsica de espera hay que tener en cuenta que el sistema necesitar4
utiliNar bastante recursos de la !8,1 )sto porque los archivo &82 tendr4n que ser convertidos en el
formato audio requerido por el canal que est4 accediendo al servicio1
!onsiderando que los tel5fonos I8 no tienen un sistema de audio de alta calidad se puede ba#ar la
frecuencia de sampling de los archivos &82 sin perder en calidad del audio escuchado1 )l programa
AC
que permite este tipo de operacin es 'L>1
so0 fresas.5pG +V +r 220C0 +c 1 fresas1.5pG
=c 0 pasamos el archivo de est5reo a mono 8un canal9:
=r ::GCG frecuencia de sampling de AA0GG 6/N a ::GCG 6N1
archivo01mp2 = el resultado del sampling1
,sando la opcin =9 aparecer4 en la pantalla todo el proceso:
'e borra el archivo original:
r5 fresas.5pG
8ara probar la nueva configuracin se necesita crear una extensin en el archivo extensions1conf 8el
dialplan o plan de llamadas9 que se ver4 m4s adelante1
(M-83TAT*& ca%a vez I"e se 5o%ifican o aXa%en n"evos arc/ivos en #a carpeta /a.
I"e recargar #a config"raci$n %e #a 5Lsica en espera o reiniciar Asterisk&
;etc;init.%;asterisk restart
8ara luego averiguar que efectivamente el archivo mp2 est5 presente en la lista de archivos para la
A@
musica en espera Wmp2X
asterisk +rvvvvvvvvvvvvvvv
!LI" 5o/ s/ow fi#es
Class: default
Jile: /var/li*/asteris2/mo/macroform1te+simplicit.
Jile: /var/li*/asteris2/mo/manolo+camp1morning+coffee
Jile: /var/li*/asteris2/mo/macroform1ro*ot+dit.
Jile: /var/li*/asteris2/mo/reno+pro4ect1s.stem
Jile: /var/li*/asteris2/mo/macroform1cold+da.
Class: mpA
Jile: /var/li*/asteris2/mompA/fresas(
2.6 -reparaci$n %e# %ia#p#an , e0tensions.conf
)l archivo de configuracin de $steris% extensions1conf es donde se define el dialplan de la centralita1
Eodas las llamadas entrantes y salientes se procesan en este archivo1 8ara que $steris% sepa come
enrutarlas se definen contextos/ extensiones y prioridades1 &4s adelante se ver4 como se crea un
contexto y dentro del contexto las extensiones y las prioridades1 ,na pequea par5ntesis1 )n el lengua#e
comHn/ la extensin es el numero de tel5fono interno de una oficina o de un determinado servicio con
el que se quiere comunicar1 )n el caso de $steris%/ la extensin es una serie de nHmeros o letras que
define un bloque del dialplan dentro del cual se e#ecutan aplicaciones o funciones de la 8B>1
)n este modulo se presentar4 la configuracin base del archivo para luego enriquecerlo a lo largo del
libro1 )ste archivo se divide en tres bloques:
8arte general
8arte dedicada a las variables globales
el dialplan
)n la columna descripcin/ en negrita/ el valor asociado al par4metro1 $l final del modulo/ la
configuracin completa del archivo1
-ar5etro )escripci$n
WgeneralX etiqueta que da inicio a la parte general
static no=cuando se modifica una extensin en el
dialplan el modulo pbxDconfig reescribir4 este
archivo y se perder4n todos los comentarios
presentes1
.es=el modulo pbxDconfig no actualiNa
autom4ticamente el dialplan
3riteprotect no= si static=yes y se guarda la configuracin del
dialplan con el comando Qdialplan saveR se
A?
-ar5etro )escripci$n
perder4n todos los comentarios presentes en el
archivo1
.es= no se perder4n los comentarios y se
desactiva el comando Qdialplan saveR
autofallthrough .es=si una llamada/ por cualquier motivo/ se sale
del dialplan/ la llamada ser4 terminada
extenpatternmatchne3 .es=me#ora la velocidad de elaboracin del
dialplan para contextos con un numero elevado de
extensiones1
clearglobalvars no=si se recarga el dialplan/ las variables globales
mantendr4n su valor definido
yes=si se recarga el dialplan/ las variables globales
ser4n rea#ustadas y asociadas nuevamente
WglobalsX desde esta etiqueta empieNa la definicin de las
variables globales1
0GGG se asocia a la variable 0GGG un valor1 )n este caso
!(-;1000
K,'E se asocia a la variable K,'E el valor !(-;2"stvoip
mar%o se asocia a la variable mar%o el valor
(AX2;5arko
Eerminada la configuracin general y globals se empieNa a construir el dialplan1 8ara iniciar se crearan
dos contexto: internas y externas1 )n uno se definir4 la parte accesible a todas las extensiones y en el
otro la parte dedicada a las llamadas salientes1 .e esta forma se podr4 controlar quienes tienen acceso y
a que1 !ada contexto se compone de extensiones y cada extensin de prioridades1 ,n primero e#emplo:
BinternasC
se define el contexto internas
e<ten G 12@313Answer
el comando exten =" es para definir una extensin1 0:2 es la extensin/ 0 es la prioridad y $ns3er es la
aplicacin que se utiliNar41 )n este caso $ns3er contesta la llamada
La segunda linea:
e<ten G 12@323P7ay=acD/he77o'wor7d6
la extensin es la misma/ la prioridad es la numero : y en este caso la aplicacin es 8laybac% cuya
funcin es enviar el audio de una locucin al canal que est4 llamando
AF
La tercera linea:
e<ten G 12@3@3Hangu2
la extensin es siempre la misma/ la prioridad es la numero 2 y la aplicacin es 6angup que lo que hace
es terminar la llamada1
!on este primer e#emplo ya se puede empeNar a entender como funciona el dialplan1 .esde una
extensin conectada a $steris% se marca 0:2 y si esa extensin tiene acceso al contexto internas/ se
e#ecutar4 la primera linea/ luego la segunda y por ultimo la tercera1 Las prioridades indican el orden en
que se procesa el dialplan para una determinada extensin1
Ltra forma de escribir esta parte del dialplan es:
e<ten G 12@313Answer
e<ten G 12@3n3P7ay=acD/he77o'wor7d6
e<ten G 12@3n3Hangu2
La n de la segunda y tercera linea est4 por QnextR y aade una prioridad a la que la precede1
.esde la versin 01@1:1> de $steris% hay una forma mucho m4s sencilla de escribir el dialplan y es la
que se utiliNar4 en este manual:
e<ten G 12@313Answer
sa1e G n3P7ay=acD/he77o'wor7d6
sa1e G n3Hangu2
$hora se configura otra extensin que permite escuchar la mHsica de espera &82 creada en el p4rrafo
:1C:
e<ten G 200313Answer
sa1e G n3-usic)nHo7d/12@3E06
sa1e G n3Hangup
&arcando la extensin :GG/ $steris% contestar4 la llamada O$ns3erP e#ecutar4 la aplicacin
&usicLn6old que permite escuchar la musica de espera de una clase configurada en el archivo
musiconhold1conf Oes este caso la clase mp2P1 La segunda opcin O@GP define el tiempo/ en segundos/
que se escuchar4 la mHsica1 8asados los @G segundos/ la llamada terminar4 O6angupP1
)n el dialplan se pueden definir contextos que incluyen otros contextos1 .e esta forma si un
determinado contexto incluye a otro/ ese contexto tendr4 acceso a las extensiones presentes en el
contexto incluido1 8or ahora se definen dos de esta forma:
Be<ternasC
inc7ude G internas
B7oca7esC
AB
inc7ude G internas
!on estos primeros datos se construye el dialplan1 'e renombra el archivo predefinido:
5v ;etc;asterisk;e0tensions.conf ;etc;asterisk;e0tensions.conf.o#%
se crea uno nuevo:
nano ;etc;asterisk;e0tensions.conf
y se copian las siguientes lineas:
Bgenera7C
staticyes
write2rotectyse
auto:a77throughyse
e<ten2attern1atchnewyse
c7earg7o=a7varsno
Bg7o=a7sC
1000S.P81000
I#S%S.P8Justvoi2
1arDo.AK281arDo
BinternasC
e<ten G 12@313Answer
sa1e G n3P7ay=acD/he77o'wor7d6
sa1e G n3Hangu2
e<ten G 200313Answer
sa1e G n3-usic)nHo7d/12@3E06
sa1e G n3Hangu2
Be<ternasC
inc7ude G internas
B7oca7esC
inc7ude G internas
'e guarda la configuracin y se recarga el dialplan desde la consola de $steris%:
asterisk +rvvvvvvvvvvvvv
!LI" %ia#p#an re#oa%
8ara ver el dialplan externas:
CG
!LI" %ia#p#an s/ow e0ternas
$ Conte#t 'e#ternas' created *. 'p*#+config' '
Include 5N 'internas' $p*#+config'
15 @ e#tensions 8@ priorities9 in ( conte#t: 51
8ara ver el contexto internas:
!LI" %ia#p#an s/ow internas
$ Conte#t 'internas' created *. 'p*#+config' '
'()A' 5N (: Ans!er89 $p*#+config'
): 0la.*ac28ello!orld9 $p*#+config'
A: Hangup89 $p*#+config'
')@@' 5N (: Ans!er89 $p*#+config'
): =usic%nHold8mpA-C@9 $p*#+config'
A: Hangup89 $p*#+config'
15 ) e#tensions 8C priorities9 in ( conte#t: 51
8ara una lista de comandos disponibles:
!LI" /e#p %ia#p#an
dialplan add e#tension Add ne! e#tension into conte#t
dialplan add ignorepat Add ne! ignore pattern
dialplan add include Include conte#t in oter conte#t
dialplan de*ug So! fast e#tension pattern matcing data structures
dialplan reload /eload e#tensions and Oonl.O e#tensions
dialplan remove e#tension /emove a specified e#tension
dialplan remove ignorepat /emove ignore pattern from conte#t
dialplan remove include /emove a specified include from conte#t
dialplan save Save current dialplan into a file
dialplan set canvar Set a cannel varia*le
dialplan set e#tenpatternmatc Fse te %ld e#tension pattern matcing algoritm:
dialplan set e#tenpatternmatc Fse te ,e! e#tension pattern matcing algoritm:
dialplan set glo*al Set glo*al dialplan varia*le
dialplan so! canvar So! cannel varia*les
dialplan so! glo*als So! glo*al dialplan varia*les
dialplan so! So! dialplan
C0
Capit"#o (((
-rotoco#o !(- . e# arc/ivo sip.conf
)l protocolo 'I8 es un protocolo de sealiNacin que permite:
localiNar un usuario
contactar un usuario para determinar su voluntad de establecer una sesin Oaudio/videoP
+egociacin de los media Oaudio/videoP que se utiliNar4n a lo largo de la sesin
&odificar una sesin establecida
Eerminar una sesin establecida
)ste protocolo ha sido definido por la I)E- OEhe Internet )ngineering Eas% -orceP que es la entidad
que se encarga de construir los est4ndar para la red Internet1 )n este caso el documento que define el
protocolo 'I8 es el ;-! O;equest for !ommentsP 2:@01 )n ese documento se explica como deben
funcionar programas y/o dispositivos que quieran implementar el protocolo 'I81 .esde un punto de
vista del funcionamiento/ los mensa#es que se envan son una meNcla entre el protocolo 6EE8
O6ypertext Eransfer 8rotocolP y el protocolo '&E8 O'imple &ail Eransfer 8rotocolP1 .entro del
protocolo 'I8 existen los m5todos/ que representan las distintas solicitudes que un usuario puede enviar
a otro1 Los seis m5todos principales del protocolo 'I8 son:
;)*I'E);
I+9IE)
BS)
$!<
!$+!)L
L8EIL+'
$steris% 8B> es un B:B,$ Obac%=to=bac% user agentP y su funcin es la de hacer de intermediario
entre los usuarios1 ,n usuario Oo ,ser $gent como definido en el protocolo 'I8P enviar4 todas sus
peticiones a $steris% que se encargar4 de procesarlas y de esta forma permitir establecer sesiones
media1 !omo $steris% implementa distintos tipos de protocolos O'I8/ I$>:/ 62:2P/ 5l mismo se
encargar4 de establecer llamadas entre usuarios que est4n utiliNando diferentes protocolos1
)n $steris%/ el archivo sip1conf es donde se definen las extensiones 'I8/ los proveedores 'I8 y/ en
general/ todo lo relacionado con el protocolo 'I81 )l archivo sip1conf est4 estructurado en tres bloques:
,na parte general donde se define la configuracin global del protocolo 'I81 $l momento de
configurar una extensin o una troncal/ si no se definen algunos par4metros/ esto ser4n tomados
desde la parte general del archivo1 ,n e#emplo son los codecs audio1
,n bloque central donde se configura el registro a los proveedores 9oI8 y/o otros servidores
$steris%
,na parte final donde se configuran las extensiones internas/ las troncales y la conexiones a
otros servidores $steris%1
6ay que pensar en $steris% como un conmutador que quiN4s algHn da hemos visto en la recepcin de
un 6otel o una empresa1 $steris% tiene las mismas funcionalidades y muchas m4s1 !on las extensiones
configuradas se podr4n llamar una con otra/ se podr4n enrutar las llamadas a tel5fonos fi#os y/o
celulares/ utiliNar proveedores 'I8/ *ate3ay 8'E+/ y aprovechar los tpicos servicios de una 8B>
como llamada en espera/ desvo de llamadas/ llamada a tres/ contestador autom4tico/ buNn de voN1
)n los 98' Linode hay la posibilidad de activar una direccin I8 local1 +ormalmente se utiliNa para la
creacin de una red local entre distintos 98' que est5n en el mismo .atacenter1 8ara volver la
configuracin del sip1conf lo m4s real posible/ se activar4 esta I8 local1 8ara hacerlo se entra en la
pagina de administracin del 98' y en la pestaa Q;emote $ccessR se escoge el enlace evidenciado en
la imagen que sigue:
$parecer4 la direccin I8 local:
'e anota el valor y se configura una nueva tar#eta de red virtual:
nano ;etc;s.sconfig;network+scripts;ifcfg+et/0&1
'e aaden estas lineas:
+,L.C,eth0;1
9))%PR)%)none
)N9))%yes
.PA++R1*2$1E($1(1$15
N,%-ASM255$255$12($0
)n I8$..; hay que poner la I8 local creada en su 98' Linode1 'e guardan las modificaciones y se
reinicia la red del servidor:
service network restart
!on el comando:
ifconfig
CA
veremos la nueva tar#eta de red configurada:
G.1 sip.conf
La configuracin que sigue abarca los par4metros m4s importantes del sip1confT cada lnea de la tabla
viene acompaada de una breve explicacin )n negrita la opcin que se utiliNar4 para cada par4metro1
$l final de este modulo/ la configuracin completa del archivo1
-ar5etro )escripci$n
WgeneralX etiqueta que introduce la parte general de la configuracin
allo3guest o = no se permiten llamadas entrantes OI+9IE)P de usuarios
no autenticados Oaumenta la seguridad de $steris%P
Ses = se permiten llamadas entrantes OI+9IE) de usuarios no
autenticados
context %efa"#t = el contexto donde llegar4n las llamadas no
autenticadas si allo3guest=yes
allo3transfer )n casi todos los tel5fonos 'I8/ a lo largo de una llamada/ es
posible hundir un botn para transferirla a otra extensin1 )ste
par4metro define si es posible utiliNar esa funcionalidad1
8osibles opciones: +o y Pes
realm si tenemos un dominio registrado podemos definir este
par4metro para que la autenticacin se haga utiliNando ese
nombre de dominio Odigest authentication ;-!:@0?P1 'e de#a
comentado
udpbindaddr )s la direccin I8 y el puerto donde $steris% se pondr4 a la
escucha para las sealiNacin 'I8 utiliNando el protocolo de
transporte ,.81 'i se indica G1G1G1G $steris% escuchar4 en todas
la direcciones I8 presentes en el servidor Linux1 9alor:
0.0.0.0&C060
tcpenable .esde la versin 01@ es posible configurar $steris% para que
permita la sealiNacin 'I8 sobre el protocolo de transporte E!8
9alor .es
tcpbindaddr )s la direccin I8 y el puerto donde $steris% se pondr4 a la
escucha para las sealiNacin 'I8 utiliNando el protocolo E!81 'i
se indica G1G1G1G $steris% escuchar4 en todas la direcciones I8
presentes en el servidor Linux1 9alor: 0.0.0.0&C060
tcpauthtimeout ;epresenta el nHmeros de segundos que tiene a disposicin un
CC
-ar5etro )escripci$n
cliente para registrarse utiliNando el protocolo E!81 'i no lo hace
antes del tiempo indicado/ sera desconectado1 9alor: G0
tcpauthlimit +umero m4ximo de conexiones no autenticadas permitidas
utiliNando el protocolo E!81 9alor:100
srvloo%up 8ermite hacer bHsquedas de registros .+' ';9 O;-! :?F:P
basadas en los nombres de dominio para llamadas 'I8 salientes
del tipo: 'I8/usuario[dominio1 La bHsqueda se har4 solamente
para el primer registro presente en el dominio1 9alor: Pes
maxexpiry Eiempo m4ximo/ en segundos/ permitido para ;)*I'E); y
',B'!;IB) entrantes1 9alor G600
minexpiry Eiempo mnimo/ en segundos/ permitido para ;)*I'E); y
',B'!;IB) entrantes1 9alor: 60
defaultexpiry !uando un cliente se registra a $steris% enva el tiempo de
duracin de su registro1 )n el caso que no lo haga/ $steris%
considerar4 que el registro durar4 el tiempo indicado en este
par4metro expreso en segundos1 9alor: 120
m3iexpiry La mayora de los tel5fonos 'I8/ cuando la extensin registrada
recibe un nuevo mensa#e en el buNn de voN/ lo sealan a trav5s
de un icono en la pantalla o un indicador luminoso1 )sto porque
se QsuscribeR a este tipo de servicio en el servidor $steris%1 )ste
par4metro indica cada cuantos segundos las suscripcin tendr4
que ser renovada1 9alor G600
qualifyfreq !ada cuantos segundos enviar un paquete L8EIL+' a la
extensin registrada en $steris%1 )sto permite saber si la
extensin misma es alcanNable1 )l m5todo L8EIL+' del
protocolo 'I8 se utiliNa tambi5n para conocer los m5todos
disponible en un determinado cliente1 9alor 60
disallo3 a## I 'e desactivan todos los codec audio y video
allo3 'e indican los codec audio y video utiliNables1 8ueden ser
indicados uno por linea o en la misma linea separados por una
coma:
a##owEa#aw
a##owE"#aw
o
allo3=ala3/ula3
mohinterpret clase de mHsica de espera predefinida I %efa"#t
mohsuggest !lase de mHsica de espera cuando un canal de tipo peer se pone
en espera I %efa"#t
par%inglot $steris%/ entre sus funcionalidades/ permite parquear una
llamada1 !omo desde la versin 01@1> es posible configurar m4s
C@
-ar5etro )escripci$n
de un QcontextoR de parqueo/ en este par4metro se indica el
predefinido1 9alor: %efa"#t
language el idioma predefinido para las locuciones 1 9alor es O)spaolP
sendrpid !omo se ver4 m4s adelante cada Qmensa#eR 'I8 se compone de
diferentes lineas1 !ada linea se llama 6)$.); o cabecera1 )ste
par4metro define se entre los distintos 6)$.); se enva
tambi5n el ;emote=8arty=I.1 )ste par4metro es muy Htil para las
transferencias de las llamadas entre extensiones 9alor: .es
prematuremedia )n $steris% es posible enviar audio aunque la llamada no ha sido
contestada1 ,n e#emplo es cuando llamamos un numero celular
Oen !olombiaP y si nadie contesta escuchamos la voN que dice
\'istema correo de voN1 Eendr4 cobro a partir de este momento\1
'i colgamos/ no pagamos nada porque la llamada realmente no
ha sido contestada1 )sta funcionalidad se llama \)arly &edia\1
.urante el )arly &edia/ los tonos .E&- no funcionan y no se
pueden utiliNar1 )ste comportamiento se obtiene poniendo como
valor no
useragent $steris% se presentar4 con este nombre al momento de
comunicarse con otros $gentes 'I81 9alor: VozToVoice v. 1.0 'e
puede personaliNar
sdpsession asterisk
sdpo3ner asterisk
dtmfmode protocolo para el envo de los .E&- O.ual=Eone &ulti=
-requencyP1 'eran los tonos que se generan cuando hundimos
las teclas del tel5fono1 9alor: rfc2=GG Ltro valor bastante comHn
es inband1 !on inband los tonos se envan en el flu#o audio
Oprotocolo ;E8P1 Inband no funciona con el codec audio *?:B
videosupport no=no se activa el soporte para video llamadas
.es=se activa el soporte para video llamadas
maxcallbitrate Banda m4xima utiliNable para video llamadas Opredefinida G=B
%b/sP
callevents .es=cuando el estado de una extensin cambia/ el $steris%
&anager Interface O$&IP genera el correspondiente evento
authfailureevents .es=el $&I generar4 un evento cuando una peer no se puede
autenticar con la 8B>
al3aysauthre#ect .es=cuando un I+9IE) o un ;)*I'E); es rechaNado por
$steris%/ en lugar de enviar el verdadero motivo del rechaNo
contestar4 siempre con un AG0 ,nauthoriNed no permitiendo dar
pistas a los que est4n intentando acceder al sistema
C?
-ar5etro )escripci$n
rtptimeout 60=si en una llamada establecida no hay flu#o audio por @G
segundos la llamada ser4 terminada
rtpholdtimeout G00=si en una llamada en espera no hay flu#o audio por 2GG
segundos/ la llamada ser4 terminada
rtp%eepalive 0=no enva un paquete ,.8 utiliNando el protocolo ;8E para
mantener abierto el +$E
allo3subscribe .es=permite suscribirse al estado de una extensin
subscribecontext s"bscribe=)ste par4metro define el contexto que se utiliNar4
para permitir a las extensiones acceder al estado de otras1
notifyringing .es=+otifica si la extensin est4 timbrando
notifyhold .es= +otifica si la extensin est4 en espera
callcounter .es=cuenta el numero de canales utiliNados por una extensin1
)ste par4metro #unto a las funciones *;L,8 y
*;L,8D!L,+E permite limitar el numero de llamadas
simultaneas que una extensin puede hacer1
t2FptDudptl 8ermite el uso del protocolo E2F 8fa# so*re I091 .esde la
versin 01@1>/ $steris% QnegociaR directamente los par4metros
para la recepcin de los faxes y ya no actHa solamente como
pasarela1 $demas/ desde la misma versin es posible indicar
directamente en la linea del par4metro el tipo de correccin de
error utiliNado y el tamao de los paquetes que contienen el fax1
9alor: yes3:ec31a<datagra1>00
faxdetect .es=permite la deteccin de faxes en canales 'I81 8ermite
diferenciar el tratamiento de las llamadas entrantes segHn sea un
fax o una llamada de voN
localnet )n el caso que $steris% est5 instalado en una red local que se
encuentra detr4s de un +$E/ hay que indicar el rango de
direcciones I8 de la red local1 )n el caso del 98' Linode se
pone la direccin I8 local creada OpersonaliNar con la I8 local de
su 98'P )#emplo: 1J2.16=.12=.0;2CC.2CC.12=.0
externip 'i $steris% est4 instalado detr4s de un +$E/ con este par4metro
se indica la direccin I8 publica de la red1 )n el 98' Linode se
pone la I8 del servidor1 )#emplo J6.126.121.1GC 8ersonaliNar
externhost 'i la direccin I8 publica es din4mica/ en lugar de externip se
utiliNa este par4metro indicando un nombre de dominio1 'i no se
posee uno se puede utiliNar el servicio de dyndns1 )n el 98'
Linode se de#a comentado
externrefresh !ada cuantos segundos actualiNar la asociacin direccin I8 I
nombre de dominio1 )n el 98' Linode se de#a comentado
CF
-ar5etro )escripci$n
nat .es=de forma predefinida todas las extensiones se conectar4n
desde remoto O98' LinodeP1 )ste valor es el predefinido si no se
indica diversamente en la configuracin de cada extensin
directmedia no=no se permite el flu#o media directo Oprotocolo ;8EP entre
las extensiones1 'olo es posible cuando las extensiones no se
encuentran detr4s de un +$E
rtcachefriends )ste par4metro aplica cuando las extensiones est4n configuradas
en una base de datos Ose ver4 m4s adelanteP1 9alor no
rtupdate este par4metro tambi5n aplica cuando las extensiones est4n
configuradas en una base de datos1 !uando una de estas
extensiones se registre a $steirs%/ en la base de datos se
guardar4 la direccin I8/ el puerto/ el tiempo de registro y el
nombre de usuario1 9alor .es
register =" !on esta linea empieNa el segundo bloque del archivo sip1conf y
se utiliNa para registrarse a servidores externosT normalmente
proveedores 'I8 o otro servidores $steris%1 )l par4metro se de#a
comentado y a seguir se presentan algunos e#emplos:
register G :u7ano;sesa1oNsi2$2rovider1$co1
8ara el registro con el proveedor el username ser4 fulano/ la
contrasea sesamo y el dominio sip1provider01com1 'i el
proveedor usa un puerto que no es el CG@G hay que especificarlo
al final de la lnea de esta forma:
register G :u7ano;sesa1oNsi2$2rovider1$co1;50E1
)n los dos casos las llamadas entrantes llegaran a la extensin s
y al contexto que se define en la configuracin de la extensin1
'i queremos que las llamadas entre a una extensin definida/
tenemos que aadir al final de la linea el numero1 )ste numero
puede ser arbitrario siempre y cuando los proveedores 'I8 no
especifiquen diversamente:
register G :u7ano;contraseOaNsi2$2rovider1$co1812@>
registertimeout 'i $steris% pierde el registro/ este par4metro representa el
numero de segundos que $steris% esperar4 antes de volver a
intentar registrarse1 9alor 20
registerattempts este par4metro representa el numero de intentos que $steris%
har4 para registrarse1 'i ponemos G/ los intentos ser4n infinitos1
9alor 10
m3i =" .esde la versin 01@1:1> se puede subscribir el estado de un
buNn de voN de un servidor remoto1 )n este e#emplo el buNn
0:2A y contexto 'I8Dremote1 8ara subscribirse en la
configuracin de la extensin se indicar4:
mailbox=0:2A['I8D;emote1 9alor:
12@>;2asswordN1ysi22rovider$co1812@>
CB
La ultima parte es dedicada a la configuracin de las extensiones1 )n el caso del 98' Linode todas las
extensiones se conectar4n detr4s de un +$E Orouter banda ancha y/o otro tipo de conexin InternetP1
-ar5etro )escripci$n
W0GGGX +umero de la extensin
accountcode !digo que aparecer4 en el registro de llamadas
para esta extensin1 9alor 1000
language es=esta extensin utiliNar4 las locuciones en
espaol
type frien%=es un user y peer al mismo tiempo
user: una extensin que se autentica al
servidor $steris% usando el campo -rom
para hacer llamadas1
peer una extensin que se autentica para
las llamadas entrantes utiliNando la
direccin I8 y el puerto
secret La contrasea para la extensin1 8ersonaliNar
9alor predefinido: pb0J0J0J0
qualify )ste par4metro se utiliNa para mantener activa la
conexin de una extensin que se conecta al
servidor $steris% detr4s de una +$E1 9alor Pes
mailbox 'i este par4metro es configurado/ cuando la
extensin se conecte al servidor $steris%/ 5ste
controlar4 si hay mensa#es de voN pendientes y en
caso positivo se lo comunicar4 usando &MI =
&essage Maiting Indicator1 que es una seal audio
o vdeo que puede ser recibida por la mayora de
los tel5fonos I8 o 'oftphone 9alor 1000'%efa"#t
host 'i la extensin se conecta remotamente con un I8
din4mico se pone %.na5ic1 )n caso contrario se
pone la direccin I8
dtmfmode 8rotocolo para los tonos .E&- 9alor rfc2=GG
context )l contexto a que tendr4 acceso la extensin1
9alor e0ternas como se ha creado en el dialplan
directmedia 'i las extensiones/ como es el caso de una 98'
Linode/ est4n detr4s de un +$E/ el valor es no
nat )n el caso del 98' Linode para las extensiones el
valor es siempre .es
callerid el nombre y el numero que identifica la extensin
cuando llama1 valor 4"#ano Y1000W 8ersonaliNar
@G
callgroup
pic%upgroup
estos dos par4metros definen una de las
funcionalidades avanNadas de $steris%/ es decir la
posibilidad de contestar una llamada de una
extensin que est4 timbrando desde otra
extensin1 9alor 1 para ambos
disallo3 a##=se deshabilita todos los codec Oaudio/videoP
allo3 a#aw=se habilita el codec audio ala3
allo3 "#aw=se habilita el codec audio ula3
allo3 gA2J=se habilita el codec audio g?:B
allo3 /26G=se habilita el codec video 6:@2
!onfiguramos una segunda extensin:
B1001C
ty2e:riend
accountcode1001
7anguagees
secret2=<*0*1
?ua7i:yyes
1ai7=o<1001Nde:au7t
hostdyna1ic
dt1:1oder:c2(@@
conte<te<ternas
direct1ediano
natyes
ca77eridPutano Q1001G
ca77grou21
2icDu2grou21
disa77owa77
a77owu7aw
a77owa7aw
a77owg42*
a77owh2E@
!uando se deben configurar muchas extensiones/ se pueden crear templates OplantillasP donde se
definen todos los par4metros compartidos por todas las extensiones1 Luego por cada una de ellas/ se
configuran solamente los par4metros que la diferencian de las dem4s1 8ara crear un template la primera
linea debe tener esta sintaxis:
Uint+#oca#esV@RD
Wint=localesX es la descripcin del template Oen este e#emplo se utiliNar4 para configurar todas las
extensiones que tienen acceso solo a llamadas localesP1 OYP es las sintaxis que indica que se trata de un
template1 Luego se aaden todas las lineas comunes a todas las extensiones:
@0
ty2e:riend
7anguagees
?ua7i:yyes
hostdyna1ic
dt1:1oder:c2(@@
conte<t7oca7es
direct1ediano
natyes
ca77grou21
2icDu2grou21
disa77owa77
a77owu7aw
a77owa7aw
a77owg42*
a77owh2E@
$hora para configurar una nueva extensin se puede utiliNar ese template de la siguiente forma:
B1002C/int'7oca7es6
accountcode1002
secret2=<*0*2
1ai7=o<1002Nde:au7t
ca77erid-engano Q1002G
Eerminada la configuracin de las extensiones/ se pasa a la troncal 'I8 utiliNando el proveedor
Kust9oI8:
-ar5etro )escripci$n
W#ustvoipX nombre que se le asigna a la troncal
type la troncal es de tipo peer
host sip.2"stvoip.co5=dominio del proveedor 'I8
fromdomain sip.2"stvoip.co5=)ste par4metro permite definir
el nombre de dominio que aparecer4 en la campo
-rom: de la cabecera 'I81 &ucho proveedores lo
exigen para autenticar las llamadas
fromuser nombre de usuario1 )ste par4metro permite definir
el nombre de usuario que aparecer4 en el campo
-rom de la cabecera 'I81 &uchos proveedores lo
exigen para autenticar las llamadas1
defaultuser 'e vuelve a poner el nombre de usuario otra veN
@:
secret la contrasea1 8oner el valor que se utiliN al
momento de registrar la cuenta en la pagina de
Kust9oI8
qualify .es
dtmfmode rfc2=GG
context fro5+2"stvoip=el contexto donde llegar4n las
llamadas si utiliNamos el proveedor tambi5n para
llamadas entrantes
directmedia no
language es
nat no=no hay +$E entre el servidor $steris% y el
proveedor 'I8
disallo3 a##
allo3 "#aw
allo3 a#aw
$hora se copia toda la configuracin el el archivo sip1conf1 $ntes que nada se renombra el archivo
sip1conf predefinido y se crea uno nuevo:
5v ;etc;asterisk;sip.conf ;etc;asterisk;sip.conf.o#%
nano ;etc;asterisk;sip.conf
'e pegan las lineas que siguen:
Bgenera7C
a77owguestno
conte<tde:au7t
a77owtrans:eryes
Area711ydo1ain$t7d
ud2=indaddr0$0$0$0;50E0
tc2ena=7eyes
tc2=indaddr0$0$0$0;50E0
tc2authti1eout@0
tc2auth7i1it100
srv7ooDu2yes
1a<e<2iry@E00
1ine<2iryE0
de:au7te<2iry120
1wie<2iry@E00
?ua7i:y:re?E0
disa77owa77
a77owu7aw
@2
a77owa7aw
1ohinter2retde:au7t
1ohsuggestde:au7t
2arDing7otde:au7t
7anguagees
sendr2idyes
2re1ature1ediano
useragentLoP%oLoice v$ 1$0
sd2sessionasterisD
sd2ownerasterisD
dt1:1oder:c2(@@
videosu22ortyes
1a<ca77=itrate@(>
ca77eventsyes
auth:ai7ureeventsyes
a7waysauthreJectyes
rt2ti1eoutE0
rt2ho7dti1eout@00
rt2Dee2a7ive0
a77owsu=scri=eyes
su=scri=econte<tsu=scri=e
noti:yringingyes
noti:yho7dyes
ca77counteryes
t@(2t"ud2t7yes3:ec31a<datagra1>00
:a<detectyes
7oca7net1*2$1E($12($08255$255$12($0
e<terni2*E$12E$121$1@5
Ae<ternhost2rova$dyndns$org
Ae<ternre:resh1(0
natyes
direct1ediano
rtcache:riendsno
rtu2dateyes
Aregister G :u7ano;sesa1oNsi2$2rovider1$co1
Aregister G :u7ano;sesa1oNsi2$2rovider1$co1;50E1
Aregister G :u7ano;contraseOaNsi2$2rovider1$co1812@>
registerti1eout20
registeratte12ts10
A1wi G 12@>;2asswordN1ysi22rovider$co1812@>
B1000C
accountcode1000
7anguagees
ty2e:riend
secret2=<*0*0
@A
?ua7i:yyes
1ai7=o<1000Nde:au7t
hostdyna1ic
dt1:1oder:c2(@@
conte<te<ternas
direct1ediano
natyes
ca77eridca77erid&u7ano Q1000G
ca77grou21
2icDu2grou21
disa77owa77
a77owa7aw
a77owu7aw
a77owg42*
a77owh2E@
B1001C
ty2e:riend
accountcode1001
7anguagees
secret2=<*0*1
?ua7i:yyes
1ai7=o<1001Nde:au7t
hostdyna1ic
dt1:1oder:c2(@@
conte<te<ternas
direct1ediano
natyes
ca77eridPutano Q1001G
ca77grou21
2icDu2grou21
disa77owa77
a77owu7aw
a77owa7aw
a77owg42*
a77owh2E@
Bint'7oca7esC/F6
ty2e:riend
7anguagees
?ua7i:yyes
hostdyna1ic
dt1:1oder:c2(@@
conte<t7oca7es
direct1ediano
natyes
ca77grou21
@C
2icDu2grou21
disa77owa77
a77owu7aw
a77owa7aw
a77owg42*
a77owh2E@
B1002C/int'7oca7es6
accountcode1002
secret2=<*0*2
1ai7=o<1002Nde:au7t
ca77erid-engano Q1002G
BJustvoi2C
ty2e2eer
hostsi2$Justvoi2$co1
:ro1do1ainsi2$Justvoi2$co1
:ro1user
de:au7tuser
secret
?ua7i:yyes
dt1:1oder:c2(@@
conte<t:ro1'Justvoi2
direct1ediano
7anguagees
natno
disa77owa77
a77owa7aw
a77owa7aw
$ntes de guardar los cambios/ hay que personaliNar los par4metros #oca#net y e0ternip en el bloque
generalT en el bloque del proveedor 'I8 Kustvoip se ponen los datos de usuario y contrasea reales de la
cuenta Kust9oI81 !ada veN que se modifica la configuracin del sip1conf hay que recargarla1 'e entra en
la consola de $steris%:
asterisk +rvvvvvvvvvv
'e escribe el comando:
!LI" sip re#oa%
8ara ver los peer configurados:
!LI" sip s/ow peers
,ame/username Host D.n ,at ACL 0ort Status
(@@@ 8Fnspecified9 D , 3@C@ F,&,%E,
(@@( 8Fnspecified9 D , 3@C@ F,&,%E,
@@
(@@) 8Fnspecified9 D , 3@C@ F,&,%E,
4ustvoip/p*#)@)@ HH:H):(CD:()D 3@C@ %& 8(C@ ms9
" sip peers $=onitored: ( online- A offline Fnmonitored: @ online- @ offline'
8ara ver los user configurados:
!LI" sip s/ow "sers
Fsername Secret Accountcode Def:Conte#t ACL ,A?
(@@@ p*#D@D@ (@@@ pones ,o Al!a.s
(@@( p*#D@D( (@@( pones ,o Al!a.s
(@@) p*#D@D) (@@) pones ,o Al!a.s
8ara una lista de los comandos disponibles para el protocolo 'I8 en $steris%:
!LI" /e#p sip
sip notif. Send a notif. pac2et to a SI0 peer
sip prune realtime $peerPall' 0rune caced /ealtime users/peers
sip qualif. peer Send an %0?I%,S pac2et to a peer
sip reload /eload SI0 configuration
sip set de*ug QonPoffPipPpeerR 7na*le/Disa*le SI0 de*ugging
sip set istor. QonPoffR 7na*le/Disa*le SI0 istor.
sip so! QcannelsPsu*scriptio List active SI0 cannels or su*scriptions
sip so! cannelstats List statistics for active SI0 cannels
sip so! cannel So! detailed SI0 cannel info
sip so! domains List our local SI0 domains
sip so! istor. So! SI0 dialog istor.
sip so! inuse List all inuse/limits
sip so! m!i So! =EI su*scriptions
sip so! o*4ects List all SI0 o*4ect allocations
sip so! peers List defined SI0 peers
sip so! peer So! details on specific SI0 peer
sip so! registr. List SI0 registration status
sip so! sced 0resent a report on te status of te sced queue
sip so! settings So! SI0 glo*al settings
sip so! tcp List ?C0 Connections
sip so! users List defined SI0 users
sip so! user So! details on specific SI0 user
sip unregister Fnregister 8force e#piration9 a SI0 peer from te registr.
G.2 )irect5e%ia
!omo se ha dicho este par4metro permite definir si el flu#o audio es directo entre los clientes o pasa por
$steris% que se encarga de enrutarlo de una extensin a otra1 8ara poder entender un poco me#or este
comportamiento/ se puede ver el gr4fico que sigue:
@?
!(- !(-
3-T 3-T
)n este escenario directmedia=no1 )l trafico 'I8 y ;E8 pasa completamente por $steris% 8B>1 )n el
caso que directmedia= yes el gr4fico cambiara de la siguiente forma:
!(- !(-
La sealiNacin 'I8 sigue pasando por $steris%/ mientras que el flu#o media va directo de una extensin
a otra1 )ste escenario funciona solamente si las extensiones no est4n detr4s de un +$E1 ,n tpico
e#emplo es cuando se instala el servidor $steris% dentro de una red local y los tel5fonos 'I8 est4n
conectados en la misma red1 La venta#a es que de esta forma se ahorran recursos del servidor Linux1 'i
en el sip1conf el par4metro dtmfmode=inband/ como los tonos via#an en el flu#o audio y $steris% no
recibe ese flu#o/ no se podr4n utiliNar funcionalidades avanNadas configuradas en $steris% que utiliNan
los tonos para ser activadas1
G.G ContraseXas seg"ras
)n el archivo sip1conf las contraseas de las extensiones aparecen en texto plano1 'i alguien logra
entrar al servidor Linux/ con solo abrir el archivo/ podr4 conocer todas las contraseas de las
extensiones1 8ara evitar esto y volver m4s seguro el sistema/ es posible cifrarlas con el algoritmo &.C1
Eomamos como e#emplo la primera extensin cuya contrasea es pbxBGBG1 8ara cifrarla el comando es:
@F
3-T
ec/o +n Zpb0J0J0Z [ 5%Cs"5
cuyo resultado ser4:
A6fC)D(H@acAa*H"*DdCd)cc"((c)fAc
8ara utiliNar la contrasea cifrada en la configuracin de una extensin/ en el sip1conf en el bloque de la
extensin se quita el par4metro secret y se aade el par4metro 5%Csecret asign4ndole el valor creado1
G.B grep
!omo se quiere tener la traNa de los mensa#es 'I8 que se enviar4n $steris% y las extensiones/ se instala
en el servidor Linux el programa ngrep que permite capturar cualquier tipo de paquete que entre o salga
del sistema:
c% ;"sr;src
primero se instalan unas dependencias:
."5 insta## #ibpcap+%eve#
luego se descarga el paquete:
wget /ttp&;;%own#oa%s.so"rceforge.net;pro2ect;ngrep;ngrep;1.BC;ngrep+1.BC.tar.bz2
se descomprime:
tar +0f ngrep+1.BC.tar.bz2
se entra en la carpeta creada
c% ngrep+1.BC
se compila y se instala:
.;config"re ++prefi0E;"sr
5ake
5ake insta##
G.C Config"raci$n X+Lite . 3*1(!T*3
>=lite es un softphone gratuito desarrollado por la empresa !ounter8ath que a pesar de sus
limitaciones/ puede ser utiliNado para las pruebas de este libro1 'e descarga/ se instala y se inicia1
8rimero se configura la cuenta 0GGG configurada en $steris%:
@B
Acco"nt na5e: una descripcin de la cuenta
9ser()& el numero de la extensin
)o5ain: la direccin I8 o el nombre de dominio del servidor $steris% Ola I8 del 98' LinodeP
-asswor%: la contrasea de la extensin 0GGG OpbxBGBGP
)isp#a. na5e: el numero de la extensin
A"t/orization na5e: el numero de la extensin
)n la pestaa 9oicemail:
?G
'e selecciona la casilla Qchec% for voicemailR y en Q+umber to dial for chec%ing voicemailR se pone
B?1 )ste ser4 el numero que hay que marcar para entrar al buNn de voN1
?0
)n Eopology/ como la extensin est4 detr4s de un +$E/ se selecciona la casilla Q$uto=detect fire3all
trasversal method using I!)1 OInteractive !onnectivity )stablishmentP es un protocolo O;-!C:ACP que
permite a los aparatos que lo utiliNan lograr atravesar el +$E1 'i la conexin es a un servidor local hay
que seleccionar la casilla Q+one Ouse local I8 addressP1
)n $dvanced se configura cada cuantos segundos >=lite volver4 a registrarse a $steris% O2@GGP1 !omo
el softphone se encuentra detr4s de un +$E/ se selecciona Q'end 'I8 %eep=alives para mantener la
conexin abierta y rport1 'i la conexin es a un servidor local se pueden desactivar las dos casillas1
$ntes de presionar el botn L% para guardar la configuracin/ se vuelve a la consola de Linux y se
escribe es siguiente comando:
ngrep 1000 +T b.#ine port C060 W ;t5p;register
.e esta forma se capturar4n todos los paquetes enviados y recibidos por la extensin 0GGG y se guardan
en el archivo register1 'e vuelve al >=Lite y se presiona el botn L<1 .espu5s de unos segundos el
softphone debera estar registrado a $steris%1 9olvemos a la consola Linux y hundimos !E;L=! para
?:
terminar la captura de paquetes por parte de +grep1
$hora abrimos el archivo register:
nano ;t5p;register
)ncontraremos esta secuencia:
>=Lite ==================;egister===============" $steris%
>=Lite ]============ 0GG Erying ================ $steris%
>=Lite ]=======AG0 ,nauthoriNed============== $steris%
)n el mensa#e AG0 ,nauthoriNed/ $steris% indica a >=Lite que se requiere una autenticacin basada en
el protocolo http digest y enva los datos necesarios para que el softphone pueda autenticarse de esta
forma1 >=Lite responde enviando una nueva peticin de ;)*I'E); aadiendo los datos de
autenticacin
>=Lite ==================;egister===============" $steris%
>=Lite ]================0GG Erying============== $steris%
>=Lite ]==================:GG L%================ $steris%
$hora el >=Llite est4 registrado y $steris% puede localiNarlo en el caso entre una llamada para la
extensin 0GGG1 .e hecho el m5todo ;)*I'E); del protocolo 'I8 sirve para esto1 'e recomienda la
lectura del ;-!2:@0 para entender como funciona la sealiNacin 'I81
'i se continua a mirar el archivo register se notar4 que aparece otro bloque que utiliNa el m5todo
',B'!;IB) O;-!A:2CP1 Eodo este bloque est4 relacionado con el buNn de voN de la extensin 0GGG
y es el que permite a la misma extensin suscribirse a $steris% para recibir notificaciones cuando sea
presente un nuevo mensa#e en el buNn de voN1
La secuencia es:
>=Lite =================='ubscribe===============" $steris%
>=Lite ]=======AG0 ,nauthoriNed============== $steris%
>=Lite =================='ubscribe===============" $steris%
>=Lite ]==================:GG L%================ $steris%
>=Lite ]=================+LEI-S================ $steris%
>=Lite ====================:GG L%================" $steris%
,na veN que $steris% acepte el ',B'!;IB) enviado por >=Lite/ le enviar4 un +LEI-S para que el
softphone sepa si hay mensa#es en el buNn de voN1 !laramente todava no hay ninguno Oultima parte
del mensa#e +LEI-S enviado por $steris%P:
=essages1Eaiting: no:
=essage1Account: sip:asteris2BDC:()C:()(:(A3:
Loice1=essage: @/@ 8@/@9:
?2
.esde la consola de $steris% aparecer4 la extensin conectada:
asterisk +rvvvvvvvvvvvvvvvvv
!LI" sip s/ow peer
,ame/username Host D.n ,at ACL 0ort Status
(@@@/(@@@ (D@:)33:)A":3" D , (@3)H %& 8(A3 ms9
Ltra forma de ver los mensa#es 'I8 es activar el sip debug en $steris%1 'e puede hacer de forma
general:
!LI" sip set %eb"g on
SI0 De*ugging re1ena*led
o solamente para una extensin/troncal especifica:
!LI" sip set %eb"g peer 1000
SI0 De*ugging 7na*led for I0: (D@:)33:)A":3":(@3)H
!LI" sip set %eb"g peer 2"stvoip
SI0 De*ugging 7na*led for I0: HH:H):(CD:()D:3@C@
G.6 Config"raci$n GCX
'e instalar4 un segundo softphone para las pruebas1 )n este caso 2!>1 'e descarga/ se instala y se
inicia:
?A
'e presiona el botn evidenciado y en la pantalla que sigue/ se selecciona el icono !onexin:
)n la nueva ventana se presiona el botn +e3 y se configura la extensin 0GG0:
Eerminada la configuracin se presiona el botn L< y nuevamente L<1 La extensin se registrar4 a
$steris%:
!LI" sip s/ow peers
,ame/username Host D.n ,at ACL 0ort Status
?C
(@@@/(@@@ (D@:)33:)A":3" D , (@3)H %& 8(A" ms9
(@@(/(@@( (D@:)33:)A":3" D , (@6H@ %& 8))@ ms9
G.A L#a5a%as entre e0tensiones
'i desde la extensin 0GGG se llama la extensin 0GG0/ en la consola de $steris% aparecer4:
,%?IC7$)D)("': can+sip:c:)@H63 andle+request+invite: Call from '(@@@' to e#tension '(@@('
re4ected *ecause e#tension not found in conte#t 'e#ternas'
)sto porque no se ha configurado todava el .ialplan para permitir las llamadas entre las extensiones
configuradas en el sip1conf:
nano ;etc;asterisk;e0tensions.conf
y al final del contexto internas se aaden las siguientes lineas:
e0ten EW 6100U0+2V>1>)ia#@!(-;\]*XT*^>G0D
sa5e EW n>Kang"p
)n la primera linea/ despu5s del comando exten =" la QDR indica que se est4 utiliNando un 8attern=
matching1 )n el parr4fo ?1: se explicar4 cosa son y como se utiliNan los 8attern=matching1 )n este
e#emplo WG=:X significa que la cuarta cifra puede ser uno G un 0 o un :1 .e esta formas si marcamos
0GGG 0GG0 o 0GG: todas las llamadas entrar4n en esta parte del dialplan1 0 es la prioridad y .ial es la
aplicacin que se utiliNa para iniciar una llamada1 La sintaxis es:
Dial8?ecnolog.//esource$S?ecnolog.)//esource)$S:::''$-timeout$-options$-F/L'''9
)n este caso Eechnology es 'I8/ resource es ^_)>E)+` y timeout es 2G segundos1 La variable ^
_)>E)+` es una variable de canal Olos distintos tipos de variables se presentar4n en el p4rrafo ?10P y
contendr4 el numero marcado1 'i nadie contesta dentro de 2G segundos la llamada terminar4 O6angupP1
)l proveedor Kustvoip requiere que la sintaxis para marcar cualquier numero sea: GG a cdigo pas a
numero1 8ara poder utiliNar el proveedor para las llamadas internacionales/ despu5s del contexto
internas se crea el contexto internacio y se aaden las siguientes lineas:
BinternacioC
e<ten G "00$313+ia7/S.P8Justvoi28RS,K%,NT3@06
sa1e G n3Hangu2
!omo se quiere que solamente las extensiones configuradas con el contexto externas tengan acceso a
este contexto se aade esta linea al contexto externas:
inc7ude G internacio
para que el bloque quede:
?@
Be<ternasC
inc7ude G internas
inc7ude G internacio
'e guardan los cambios y se recarga el dialplan1
asterisk +rvvvvvvvvvvvvvvv
!LI" %ia#p#an re#oa%
$hora desde la extensin 0GGG se marca el numero 0GG01 )l resultado ser4 Oen la consola de asteris%P:
7#ecuting $(@@@Be#ternas:(' +ia78!S.P81000'00000001!3 !S.P810003@0!9 in ne! stac2
y en el tel5fono 2!>:
G.= !(- (V(T* . CAC*L
)l m5todo 'I8 que se utiliNa para iniciar una sesin media/ es I+9IE)1 8ara ver como funciona se har4
la traNa de una llamada con ngrep1 )n la ventana terminal del servidor se escribe:
ngrep 1000 +T b.#ine port C060 W ;t5p;invite
Luego desde la extensin 0GGG se llama la extensin 0GG01 'e contesta la llamada y despu5s de unos
segundos se cuelga1 'e vuelve a la ventana terminal y se termina la captura de los paquetes con !E;L=
!
)n el archivo invite estar4 presente esta secuencia:
X+Lite Asterisk GCX
================I+9IE)===0GG0====="
]=======AG0 ,nauthoriNed===========
================$!<=================="
================I+9IE)===0GG0====="
]============0GG Erying==============
============I+9IE) 0GGG========"
??
]========0FG ;inging==============
]============0FG ;inging=============
]============:GG L<================
=================$!<==============="
]===============:GG L<================
=================$!<=================="
]================BS)================
================:GG L<============="
]================BS)=====================
===============:GG L<==================="
)l >=LIte enva un I+9IE) para la extensin 0GG0 a $steris%1 $steris% contesta diciendo que para
aceptar el I+9IE)/ >=Lite tiene que autenticarse1 >=Lite contesta con $!< confirmando que ha
recibido la respuesta de $steris%T luego enva otro I+9IE) con sus datos de autenticacin1 $steris%
contesta con un Erying OprobandoP y enva el I+9IE) al 2!> que contesta con un 0FG ;inging
OtimbrandoP1 $steris% devuelve el 0FG ;inging a >=Lite1 !uando la extensin 0GG0 contesta la llamada
se genera un :GG L< y un $!< por parte de $steris% confirmando que ha recibido el :GG L<1 $steris%
enva el :GG L< a >=Lite y cuando este confirma la recepcin del mensa#e con un $!< inicia la sesin
media Oen este caso solo audioP entre las dos extensiones1 !uando la extensin 0GG0 cuelga se genera
un BS) que es recibido por $steris% que contesta con un :GG L<1 $steris% enva el BS) al >=Lite que
contesta con un :GG L<1 $ partir de este momento termina realmente la llamada1
,na segunda prueba es que la extensin 0GGG cuelgue antes que la extensin 0GG0 conteste1 )n la
ventana terminal de linux se escribe:
ngrep 1000 +T b.#ine port C060 W ;t5p;cance#
Luego desde la extensin 0GGG se llama la extensin 0GG0 y despu5s de unos segundos se cuelga1 'e
vuelve a la ventana terminal y se termina la captura de los paquetes con !E;L=!1 $naliNando el
archivo cancel/ esta es la secuencia:
X+Lite Asterisk GCX
================I+9IE)===0GG0====="
]=======AG0 ,nauthoriNed===========
================$!<=================="
================I+9IE)===0GG0====="
]============0GG Erying==============
============I+9IE) 0GGG========"
]========0FG ;inging==============
]============0FG ;inging=============
================BS)==================="
]==============:GG L<=================
]=======AF? ;equest Eerminated====
?F
!esion Me%ia
=================$!<================="
==============!$+!)L==========="
]=============:GG L<==============
]===== AF? ;equest Eerminated===
================$!<================"
$hora para probar el proveedor 'I8 se marca/ desde la extensin 0GGG/ un numero internacional Opor
e#emplo la linea de atencin al cliente de $viancaP:
00CA1B01GBGB
'i se intenta marcar el mismo numero desde la extensin 0GG: no funcionar4 ya que esa extensin no
tiene acceso al contexto internacio:
,%?IC7$(@"33': can+sip:c:)@H63 andle+request+invite: Call from '(@@)' to e#tension
'@@3H("@(A"A"' re4ected *ecause e#tension not found in conte#t 'locales':
.e esta formas podemos controlar las extensiones que tienen acceso a las llamadas internacionales1
?B
CA-(T9L8 (V
-rotoco#o (AX2 , ia0.conf
)l protocolo I$> Oahora I$>:P ha sido desarrollado por &ar% 'pencer/ quien empeN a escribir el
cdigo de $steris% 8B> y actual gerente de la empresa .igium1 La idea detr4s de I$> era crear un
protocolo que pudiera utiliNar el mismo puerto para la sealiNacin y la sesin media/ limitando/ de esta
forma/ los problemas relacionados con el +$E que padece el protocolo 'I81 .e hecho I$>: utiliNa el
puerto est4ndar AC@B ,.8 para la sealiNacin y el transporte de la sesin media1 $ pesar de haber sido
aceptado por la I)E- y haberse vuelto un est4ndar de hecho O;-!CAC@P son muy pocos los
proveedores que ofrecen este tipo de conexin y los tel5fonos que lo soportan1
,na funcionalidad interesante de este protocolo y que quiN4s puede ser Htil implementar en una
instalacin de $steris%/ es la del trun%ing/ que permite utiliNar la misma cabecera para distintas
sesiones audio/ reduciendo de hecho/ el ancho de banda necesario1 8ara que el trun%ing sea utiliNable
en $steris%/ .$6.I tiene que ser instalado porque es la fuente de sincroniNacin que I$>: necesita
para funcionar en esta modalidad1
B.1 ia0.conf
)ste archivo/ como el iax1conf/ se divide en tres bloques:
,na parte general donde se configuran los par4metros del protocolo
,n bloque central donde se configurar los registros a proveedores I$>: o otro servidores
$steris%
,n bloque final dedicado a la configuracin de las extensiones
)n la columna descripcin aparecer4 en negrita el valor del par4metro1 $l final del modulo/ toda la
configuracin del archivo1
-ar5etro )escripci$n
WgeneralX )sta etiqueta define el inicio de la parte general de la configuracin del
protocolo I$>:
bindport )l puerto ,.8 usado por este protocolo1 )ste par4metro va
configurado antes del bindaddr1 9alor BC6J
bindaddr )s la direccin I8 y el puerto donde $steris% se pondr4 a la escucha
para las sealiNacin I$>: utiliNando el protocolo ,.81 'i se indica
G1G1G1G $steris% escuchar4 en todas la direcciones I8 presentes en el
servidor Linux1 9alor: 0.0.0.0
nochec%sums no=no se realiNa el chechsum de los paquetes ,.8
delayre#ect .es=me#ora la seguridad contra Qbrute force pass3ord attac%sR
retrasando el envo de los rechaNos de autenticacin
amaflags $utomated &essage $ccounting1 !on este par4metro se configura un
-ar5etro )escripci$n
campo del !.; Ocall detail recordsP univoco para todas las llamadas1
)ste campo se puede personaliNar en cada extensin1 9alor:
%oc"5entation
srvloo%up .es=8ermite hacer bHsquedas de registros .+' ';9 basadas en los
nombres de dominio para llamadas 'I8 salientes del tipo:
I$>:/usuario[dominio1
language es=el idioma predefinido para las locuciones
mohinterpret clase de mHsica de espera predefinida I %efa"#t
mohsuggest !lase de mHsica de espera cuando un canal de tipo peer se pone en
espera I %efa"#t
band3idth !on este par4metro se define el ancho de banda disponible para las
llamadas y en base a este se escoger4n los codec audio a utiliNar entre
los configurados1 )ste par4metro acepta como valores: lo3/ medium/
/ig/
disallo3 a## I 'e desactivan todos los codec audio y video
allo3 'e indican los codec audio y video utiliNables1 8ueden ser indicados
uno por linea o en la misma linea separados por una coma:
a##owEa#aw
a##owE"#aw
o
allo3=ala3/ula3
minregexpire 60=tiempo mnimo de expiracin del registro de las troncales I$>:
maxregexpire 60=tiempo m4ximo de expiracin del registro de las troncales I$>:
encryption .es=se habilita el cifrado de la sealiNacin y del flu#o media
forceencryption noEno se fuerNa el uso del cifrado
trun%maxsiNe define el tamao m4ximo de los datos ObytesP que pueden pasar por una
troncal I$>: cuando se configura el par4metro trun%=yes1 !on 12=000
bytes pasar4n por la troncal FGG llamadas con codec ala3 y paquetes
audio de :Gms
trun%mtu cuando el trafico que pasa por una troncal I$>: es bastante alto/ si los
paquetes ,.8 los fragmenta el sistema operativo Linux/ hay la
posibilidad que se verifique una mala calidad del audio1 !onfigurando
este par4metro con el valor 12B0/ significa que ser4 el mismo $steris%
el que se encargar4 de fragmentar los paquetes audio m4s grandes de
0:AG byte/ me#orando la calidad del audio en las conversaciones
auto%ill .es=si no se recibe un $!< despu5s de una +)M enviado/ dentro de
:GGGms/ para evitar que el servidor $steris% se estanque/ se anula la
solicitud
codecpriority !ontrola quien tiene la prioridad en la negociacin de los codec audio1
F:
-ar5etro )escripci$n
8uede ser:
caller
/ost
disabel
rtcachefriends )ste par4metro aplica cuando las extensiones est4n configuradas en
una base de datos Ose ver4 m4s adelanteP1 9alor no
rtupdate este par4metro tambi5n aplica cuando las extensiones est4n
configuradas en una base de datos1 !uando una de estas extensiones se
registre a $steirs%/ en la base de datos se guardar4 la direccin I8/ el
puerto/ el tiempo de registro y el nombre de usuario1 9alor .es
par%inglot $steris%/ entre sus funcionalidades/ permite parquear una llamada1
!omo desde la versin 01@1> es posible configurar m4s de un
QcontextoR de parqueo/ en este par4metro se indica el predefinido1
9alor: %efa"#t
callto%enoptional )n septiembre del :GGB hubo una actualiNacin del protocolo I$>:
para me#orar la seguridad1 )ste par4metro con el que sigue hace
referencia a esa nueva implementacin1 !omo la mayora de los
tel5fonos I$> no la soportan se indica que es opcional para todas las
direcciones I81 0.0.0.0;0.0.0.0
requirecallto%en a"to=se requiere el callto%en solo si el tel5fono lo soporta
register =" )l segundo bloque empieNa con las lineas de register1 $lgunos
e#emplos:
register EW 5arko&secretpass'tor5enta.#in"0+s"pport.net
;egistro con nombre usuario/ contrasea y dominio
register EW 2oe're5ote/ost&C6C6
;egisto con nombre/ dominio y puerto remoto 8sin contraseTa9
register EW 5arko&Uke.V'tor5enta.#in"0+s"pport.net
;egistro con nombre/ clave ;'$ O%eyP y dominio
)n en tercero y ultimo bloque se configuran las troncales/extensiones I$>:1 8or ahora se configurar4
solamente una extensin1 &4s adelante se ver4 como configurar una troncal y utiliNar I$>: para el
envo de faxes utiliNando I$>modem y 6ylafax1
-ara5etro )escripci$n
Wmar%oX +ombre de la extensin
type frien% 8uede ser peer y user
host 'i la extensin se conecta remotamente con un I8
din4mico se pone %.na5ic1 )n caso contrario se
pone la direccin I8
F2
-ara5etro )escripci$n
secret La contrasea para la extensin1 9alor
predefinido: pb0J0JB
context )l contexto a que tendr4 acceso la extensin1
9alor e0ternas
mailbox 'i este par4metro es configurado/ cuando la
extensin se conecte al servidor $steris%/ 5ste
controlar4 si hay mensa#es de voN pendientes y en
caso positivo se lo comunicar4 usando &MI =
&essage Maiting Indicator1 que es una seal audio
o vdeo que puede ser recibida por la mayora de
los tel5fonos I8 o 'oftphone 9alor 12GB'%efa"#t
qualify )ste par4metro se utiliNa para mantener activa la
conexin de una extensin que se conecta al
servidor $steris% detr4s de una +$E1 9alor Pes
callerid 5arko
requirecallto%en 95ase parte general1 9alor a"to
8ara crear el archivo de configuracin de iax1conf/ se renombra el predefinido y se crea uno nuevo:
5v ;etc;asterisk;ia0.conf ;etc;asterisk;ia0.conf.o#%
nano ;etc;asterisk;ia0.conf
'e copian las siguientes lineas:
Bgenera7C
=ind2ort>5E*
=indaddr0$0$0$0
nochecDsu1sno
de7ayreJectyes
a1a:7agsdocu1entation
srv7ooDu2yes
7anguagees
1ohinter2retde:au7t
1ohsuggestde:aut7
=andwidthhigh
disa77owa77
a77owa7aw
a77owa7aw
1inrege<2ireE0
1a<rege<2ireE0
encry2tionyes
:orceencry2tionno
FA
trunD1a<siPe12(000
trunD1tu12>0
autoDi77yes
codec2riorityhost
rtcache:riendsno
rtu2dateyes
2arDing7otde:au7t
ca77toDeno2tiona70$0$0$080$0$0$0
re?uireca77toDenauto
Aregister G 1arDo;secret2assNtor1enta$7inu<'su22ort$net
Aregister G JoeNre1otehost;5E5E
Aregister G 1arDo;BDeyCNtor1enta$7inu<'su22ort$net
B1arDoC
ty2e:riend
hostdyna1ic
secret2=<*0*>
conte<te<ternas
1ai7=o<12@>Nde:au7t
?ua7i:yyes
ca77erid1arDo
re?uireca77toDenauto
'e guardan los cambios y se actualiNa la configuracin de I$>::
asterisk +rvvvvvvvvvvvvvvv
!LI" ia02 re#oa%
8ara ver la configuracin de la extensin reci5n creada:
!LI" (AX2 s/ow peer 5arko
O ,ame : mar2o
Secret : USetN
Conte#t : e#ternas
0ar2ing lot :
=ail*o# : ()A"Bdefault
D.namic : ;es
Callnum limit: @
Callto2en req: Auto
?run2 : ,o
7ncr.ption : 8aes()6-2e.rotate9
Callerid : Vmar2oV UN
7#pire : 1(
ACL : ,o
FC
Addr1NI0 : 8Fnspecified9 0ort @
Defaddr1NI0 : @:@:@:@ 0ort "3CD
Fsername :
Codecs : @#6 8ala!9
Codec %rder : 8ala!9
Status : F,&,%E,
>ualif. : ever. C@@@@ms !en %&- ever. (@@@@ms !en F,/7ACHAIL7 8sample smooting %ff9
8ara una lista de los comandos disponibles para el protocolo I$>::
!LI" /e#p (AX2
B.2 Config"raci$n _oiper
8ara conectarse a la extensin reci5n creada en el archivo iax1conf/ se utiliNar4 el softphone Joiper1 'e
descarga y se instala1 ,na veN instalado se escoge el menH 'ettings =" 8references
en la ventana que aparece se elige \!reate +e3 I$> account\
F@
se pone el nombre de la cuenta Omar%oP y se hunde el botn L<:
'e ponen los datos come definidos en el archivo di configuracin iax1conf y se hunde el botn ;egister1
Luego el botn L< que aparece al fondo de la ventana1 'e entra nuevamente en el &enH \'ettings ="
8references\:
'e escoge el usuario mar%o:
)n alto a la derecha/ aparecer4 la voN \;egistered\1 Eambi5n en la consola de $steris% el usuario
aparecer4 registrado:
!LI" (AX2 s/ow peers
,ame/Fsername Host =as2 0ort Status
F?
mar2o (D@:)3":()D:(AA 8D9 )33:)33:)33:)33 )C3DD 879 %& 8()H ms9
( ia#) peers $( online- @ offline- @ unmonitored'
!LI" I"it
Sa que en Joiper se pueden configurar tambi5n extensiones 'I8/ se configura la extensin 0GG::
'e presiona el botn o o% y en la nueva ventana se ponen los datos de conexin:
'e presiona el botn register y el botn o% que aparece al fondo de la pagina1 'e averigua que la
extensin est5 conectada:
asterisk +rvvvvvvvvvvvvvvv
!LI" sip s/ow peers
,ame/username Host D.n ,at ACL 0ort Status
(@@@/(@@@ (D@:)3":()D:(AA D , )H(H" %& 8()3 ms9
(@@(/(@@( (D@:)3":()D:(AA D , )H)3C %& 8)3@ ms9
(@@)/(@@) (D@:)3":()D:(AA D , 3@C@ %& 8(AH ms9
4ustvoip/p*#)@)@ HH:H):(CD:()D 3@C@ %& 8(C( ms9
" sip peers $=onitored: " online- @ offline Fnmonitored: @ online- @ offline'
!LI" I"it
FF
$ partir de este momento/ todas las extensiones 'I8 y I$>: est4n conectadas al servidor $steris%1 Los
iconos de los tres softphone:
$hora la pregunta: b!mo se configura el dialplan para que se pueda llamar el usuario mar%o ya que la
extensin no es un numero sino un nombrec
'e hace de la siguiente manera:
nano ;etc;asterisk;e0tensions.conf
al final del contexto internas se aade:
e<ten G 12@>313+ia7/.AK281arDo3@06
sa1e G n3Hangu2
'e guardan los datos y se recarga el dialplan
asterisk +rvvvvvvvvvvvv
!LI" %ia#p#an re#oa%
$hora desde la extensin 0GGG se marca 0:2A1 )l resultado en la consola:
7#ecuting $()A"Be#ternas:(' +ia78!S.P81000'00000004!3 !.AK281arDo3@0!9 in ne! stac2
)l resultado en Joiper:
.e esta forma se ha hecho la prueba de una llamada entre dos tel5fonos con distintos protocolos1
FB
CA-(T9L8 V
1oog#eTa#k , gta#k.conf 2abber.conf
!omo se ha visto a lo largo de la instalacin de $steris%/ la centralita soporta el protocolo >&&8 que
permite conectarla a servidores que utiliNan ese protocolo1 )n $steris% el modulo relacionado con este
protocolo es el resD#abber1so1
8ara ver si efectivamente este modulo ha sido compilado y instalado correctamente/ se entra en la
consola de $steris%:
asterisk +rvvvvvvvvvvvvvvvvvvv
8rimero se controla que el modulo exista:
!LI" 5o%"#e s/ow #ike res62abber
=odule Description Fse Count
res+4a**er:so AGI 1 Asteris2 Ga**er Interface @
( modules loaded
luego se quita y se vuelve a cargarlo para controlar eventuales errores:
!LI" 5o%"#e "n#oa% res62abber.so
Fnloaded res+4a**er:so
55 Fnregistered application 'Ga**erSend'
55 Fnregistered application 'Ga**erStatus'
55 =anager unregistered action Ga**erSend
55 Fnregistered custom function GAII7/+S?A?FS
!LI" 5o%"#e #oa% res62abber.so
55 0arsing '/etc/asteris2/4a**er:conf': 55 Jound
55 =anager registered action Ga**erSend
55 /egistered application 'Ga**erSend'
55 /egistered application 'Ga**erStatus'
55 /egistered custom function 'GAII7/+S?A?FS'
Loaded res+4a**er:so 5N 8AGI 1 Asteris2 Ga**er Interface9
$l cargar un modulo aparecen las aplicaciones y las funciones que ese modulo activa1
'e sale de la consola:
!LI" I"it
8ara la configuracin de un usuario *oogleEal% en $steris% adem4s del modulo resD#abber1so/ habr4
que configurar el modulo chanDgtal% que es el que permite llamadas de este tipo:
$steris% d *oogleEal%
*oogleEal% d $steris%
)sto significa que se podr4n recibir llamadas de usuarios *oogleEal% en $steris% y luego/ a trav5s de la
configuracin del dialplan/ enrutarlas a cualquier extensin1 'iempre configurando adecuadamente el
dialplan ser4 posible/ desde una extensin/ llamar usuarios *oogleEal%1 8ara la configuracin se
aconse#a crear una nueva cuenta en *oogle1
C.1 2abber.conf
'e empieNa con el archivo de configuracin #abber1conf1 !omo siempre en la columna descripcin/ en
negrita/ aparecen los valores que hay que configurar1 $l final de este modulo/ las configuracin de los
dos archivos1
-ar5etro )escripci$n
WgeneralX etiqueta que define el inicio de la parte general
debug no=no se activa el debug en la consola de asteris%
.es=se activa el debug en la consola de asteris%
autoprune yes=elimina autom4ticamente los usuario de la lista de amigos
no=no elimina autom4ticamente los usuarios de la lista de amigos
autoregister .es=si un usuario aade el usuario configurado en este archivo a
su lista de amigos/ $steris% autom4ticamente lo aadir4 a la lista
de amigos
no=no lo aade autom4ticamente
Wcampus1voNtovoiceX $ partir de esta etiqueta/ la configuracin del usuario *oogleEal%1
'uponiendo que el usuario creado es
campus1voNtovoice[gmail1com/ en la etiqueta se pone el nombre
de usuario1 6ay que personaliNarla con el nombre del usuario
creado1
type puede ser c#ient o component
serverhost dominio del servidor *oogleEal%1 9alor: ta#k.goog#e.co5
username )l nombre del usuario creado en *oogle1 )n este e#emplo
ca5p"s.voztovoice'g5ai#.co5
secret la contrasea asociada al usuario creado en *oogle1 8ersonaliNar
port C222 )s el puerto que utiliNa *oogleEal% para aceptar conexiones
usetls .es=se activa el protocolo EL'1 .e esta forma todos los paquetes
intercambiados entre cliente y servidor ser4n cifrados
usesasl .es=se activa el protocolo sasl1 'asl es un protocolo de
autenticacin y autoriNacin que permite la negociacin de
protocolos de cifrado entre cliente y servidor1
buddy si se quiere aadir un amigo a la lista de amigos directamente
B:
desde la configuracin del archivo se indica en este par4metro1 'i
los amigos que se quiere aadir son distintos/ se pone una linea
con este par4metro para cada amigo1 'i por e#emplo nuestro
amigo es voztovoicenet'g5ai#.co5 se pone en esta linea1
8ersonaliNar
statusmessage &ensa#e de estado que aparecer4 #unto al nombre de usuario1
9alor: Asterisk !erver
timeout 100=tiempo m4ximo para la entrega de un mensa#e Oen segundosP
C.2 gta#k.conf
Eerminada la configuracin del archivo #abber1conf/ se pasa al archivo gtal%1conf1 )n la columna
descripcin en negrita aparecen los valores que hay que configurar1 $l final de este modulo/ las
configuracin de los dos archivos1
-ar5etro )esc
WgeneralX inicia la parte general del archivo
context contexto del dialplan donde entrar4n las llamadas
de los usuarios *oogleEal%1 9alor: goog#e+in
bindaddr direccin ip para la escucha de peticiones
*oogleEal%1 'e pone la I8 publica del servidor
$steris% Oo 98' LinodeP
allo3guest no=no se permiten llamadas de usuarios
*oogleEal% que no est5n en la lista de amigos
.es=se permiten
WguestX a partir de esta etiqueta empieNa la configuracin
para los usuarios hu5spedes Oque no est4n en la
lista de amigosP1
disallo3 a##=se desactivan todos los codec audio
allo3 "#aw=se activa del codec audio ala3
context goog#e+in=nombre del contexto del dialplan donde
llegar4n las llamadas de usuarios hu5spedes
WvoNtovoicenetX a partir de ahora se definen todos los amigos que
queremos tener en la lista1 8ara un e#emplo real el
usuario es voztovoicenet1
username nombre del usuario: voztovoicenet'g5ai#.co5
disallo3 a##=se desactivan todos los codec audio
allo3 a#aw=se activa el codec audio ala3
connection se pone la etiqueta definida en el #abber1conf para
B2
-ar5etro )esc
el usuario *oogleEal% configurado en $steris%1 en
este e#emplo es ca5p"s.voztovoice
context el contexto del dialplan donde llegar4n las
llamadas del usuario goog#e+in
,na veN definidos todos los par4metros de los archivos #abber1conf y gtal%1conf/ se crean los
respectivos archivos1 8rimero se renombran los predefinidos:
5v ;etc;asterisk;2abber.conf ;etc;asterisk;2abber.conf.o#%
5v ;etc;asterisk;gta#k.conf ;etc;asterisk;gta#k.conf.o#%
Luego se crea el archivo #abber1conf:
nano ;etc;asterisk;2abber.conf
se pegan las siguientes lineas:
Bgenera7C
de=ugyes
auto2runeno
autoregisteryes
Bca12us$voPtovoiceC
ty2ec7ient
serverhostta7D$goog7e$co1
userna1eca12us$voPtovoiceNg1ai7$co1
secret2assword
2ort5222
uset7syes
usesas7yes
=uddyvoPtovoicenetNg1ai7$co1
status1essageAsterisD Server
ti1eout100
(M-83TAT*& antes %e g"ar%ar #a config"raci$n> /a. I"e persona#izar #os
par5etros "serna5e> secret . #a etiI"eta Uca5p"s.voztovoiceV> con #os %atos %e s"
c"enta 1oog#e.
'e pasa al archivo gtal%1conf
BA
nano ;etc;asterisk;gta#k.conf
Bgenera7C
conte<tgoog7e'in
=indaddr.PasterisD
a77owguestyes
BguestC
disa77owa77
a77owu7aw
conte<tgoog7e'in
BvoPtovoicenetC
userna1evoPtovoicenetNg1ai7$co1
disa77owa77
a77owu7aw
connectionca12us$voPtovoice
conte<tgoog7e'in
(M-83TAT*& antes %e g"ar%ar #a config"raci$n> /a. I"e persona#izar e#
par5etro connection con #a etiI"eta inicia# %e #a config"raci$n %e# "s"ario
1oog#eTa#k en e# arc/ivo 2abber.conf @en este e2e5p#o ca5p"s.voztovoiceD . poner e# e#
para5etro bin%a%%r> #a (- p"b#ica %e# servi%or Asterisk.
Eerminada la configuracin de los dos archivos se entra en la consola de $steris% y se recargan los dos
mdulosT primero resD#abber1so y luego chanDgtal%1so:
asterisk +rvvvvvvvvvvvvv
!LI" 5o%"#e "n#oa% res62abber.so
!LI" 5o%"#e "n#oa% c/an6gta#k.so
!LI" 5o%"#e #oa% res62abber.so
!LI" 5o%"#e #oa% c/an6gta#k.so
.espu5s de algunos segundos/ el usuario debera estar conectado:
!LI" 2abber s/ow connecte%
Ga**er Fsers and teir status:
Fser: campus:voWtovoiceBgmail:com 1 Connected
1111
,um*er of users: (
8ara ver la lista de amigos conectados OvoNtovoicenet[gmail1comP
BC
!LI" 2abber s/ow b"%%ies
Ga**er *udd. lists
Client: campus:voWtovoiceBgmail:com
Iudd.: voWtovoicenetBgmail:com
/esource: tal23DD7(@A"
node: ttp://!!!:asteris2:org/#mpp/client/caps
version: asteris21#mpp
Gingle capa*le: .es
Status: (
0riorit.: (@
8ara una lista de comandos disponibles en los dos mdulos
!LI" /e#p 2abber
4a**er reload /eload Ga**er configuration
4a**er set de*ug QonPoffR 7na*le/Disa*le Ga**er de*ug
4a**er so! *uddies So! *udd. lists of our clients
4a**er so! connected So! state of clients and components
4a**er test So!s roster- *ut is generall. used for mog's de*ugging:
!LI" /e#p gta#k
gtal2 reload /eload Moogle?al2 configuration
gtal2 so! cannels So! Moogle?al2 cannels
8or ultimo si se entra en *oogleEal% con otro nombre de usuario y se aade a la lista de amigos el
usuario configurado en $steris% Oen este e#emplo campus1voNtovoice[gmail1comP/ el resultado ser4:
)l icono del tel5fono que aparece/ indica que se puede tener una conversacin audio con ese usuario1
$hora se pasa al dialplan1 !omo contexto para las llamadas entrantes de usuarios *oogleEal%/ se ha
definido google=in1 )ste contexto va creado en el dialplan:
nano ;etc;asterisk;e0tensions.conf
.espu5s del bloque internas se aaden estas lineas1
Bgoog7e'inC
e<ten G s313No)2/ Ca77 :ro1 Gta7D 6
sa1e G n3+ia7/S.P810003@06
sa1e G n3Hangu2/6
Eodas las llamadas que entren desde *oogleEal% se desvan a la extensin 0GGG1 'i dentro de treinta
segundos no se contesta/ la llamadas terminar4
B@
8ara las llamadas salientes se pone al final del contexto internas:
e0ten EW 6Ua+zV.>1>)ia#@gta#k;ca5p"s.voztovoice;\]*XT*^>G0D
sa5e EW n>Kang"p
,na explicacin de las dos lineas: 'e dice a $steris% de llamar a trav5s del canal gtal%/ usando la
conexin campus1voNtovoice que es la etiqueta que inicia el bloque de configuracin del usuario
campus1voNtovoice[gmail1com1 !on DWa=NX1 se puede marcar a cualquier usuario *oogleEal% cuyo
nombre empieNa con una letra del alfabeto Ode a a zP1 'i despu5s de 2G segundos/ nadie contesta/ se
termina la llamada1
'i el usuario no est4 configurado en el archivo gtal%1conf/ como es el caso de
voNtovoicenet[gmail1com/ hay que crear en el dialplan un bloque para cada usuario que se quiera
llamar de la siguiente forma Oal final del bloque internasP:
e<ten G 10000313+ia7/gta7D8ca12us$voPtovoice8:u7anoNg1ai7$co13@03r6
e<ten G 100003n3Congestion/@6
'e guardan los cambios1 Ltra forma de actualiNar el dialplan sin entrar en la consola de $steris% es:
asterisk +r0 Z%ia#p#an re#oa%Z
Dialplan reloaded:
'e puede hacer una primera prueba llamando el usuaio voNtovoicenet[gmail1com desde el >=LIte
'e marca de esta manera:
'e presiona el botn Q!allR1 )l resultado:
'i el softphone y *oogleEal% se encuentran en la misma red o mismo computador el audio no
funcionar41
C.G Ap#icaci$n Sabber!en%
,na aplicacin que se activa con el modulo resD#abber1conf es QKabber'endR que permite enviar
B?
mensa#es instant4neos a usuarios *oogleEal%1
La sintaxis de la aplicacin es:
Ga**erSend8Ga**er-GID-=essage9
,n e#emplo1 !ada veN que una extensin llame la extensin de la mHsica en espera/ queremos enviar un
mensa#e a voNtovoicenet[gmail1com para que se entere1 8ara eso se modifica el dialplan:
nano ;etc;asterisk;e0tensions.conf
se cambia este bloque:
e<ten G 200313Answer
sa1e G n3-usic)nHo7d/12@3E06
sa1e G n3Hangu2
para que quede:
e<ten G 200313Answer
sa1e G n3Ia==ersend/ca12us$voPtovoice3voPtovoicenetNg1ai7$co13,sta1os escuchando -P@6
sa1e G n3-usic)nHo7d/12@3E06
sa1e G n3Hangu2
'e guardan los cambios y se recarga el dialplan:
asterisk +r0 Z%ia#p#an re#oa%Z
.esde la extensin 0GGG se marca la extensin :GG1 )l resultado:
BF
CA-(T9L8 V(
Asterisk . #a re% -!T
$steris% puede ser conectado a la red telefnica tradicional a trav5s de tar#etas telefnica o *ate3ay1
)stos dispositivos pueden ser de distintos tipos:
Ear#etas o *ate3ay ->L
Ear#etas o *ate3ay ->'
Ear#etas o *ate3ay mixtos O->L=->'P
Ear#etas o *ate3ay B;I OI'.+P
Ear#etas o *ate3ay 8;I Oprimarios )0/ E0/ K0P
4X8 OJoreign 7#cange %fficeP es un dispositivo de computador que permite conectar 5ste a la ;EB
O;ed Eelefnica B4sicaP/ y mediante un soft3are especial/ realiNar y recibir llamadas de tel5fono1
4X! OJoreign 7#cange StationP es un dispositivo de computador que permite conectar 5ste a un
tel5fono analgico1
Los dispositivos &ixtos 4X8;4X! combinan los dos tipos de conexiones segHn las necesidades del
adquirente1 ,n e#emplo de dispositivo ->L/->' es la tar#eta .igium E.&A0G que permite instalar un
total A mdulos/ sean ->L o ->'1
Los dispositivos 73( OIasic rate interfaceD permiten conectar una linea (!) OIntegrated Services
Digital ,et!or2P al servidor $steris%11 Las lineas I'.+ est4n compuestas por dos canales audio Ode
@A<bit/s cada unoP y un canal O.P para la sealiNacin con la central telefnica Ode 0@ <bit/sP1
Los dispositivos *1> T1> S1/ que tambi5n se pueden denominar primarios/ son lineas digitales que
segHn el tipo brindan de :2 OE0P o 2G O)0P canales de voN1 )n la E0 los canales G y :A est4n reservados
para la sealiNacin1 )n la )0 los canales de sealiNacin son los G y 0@1 La diversa nomenclatura de
estas lineas est4 relacionada con los pases donde se usan1 E0 son la lineas disponibles en )stados
,nidos/ )0 en )uropa y gran parte de latino am5rica/ K0 en Kapn1
)n este capitulo se ver4 como instalar las siguientes tar#etas:
.igium E.&A0G con A puertos ->L
.igium E)0:G O)0P
los siguientes programas:
L'L)! para la cancelacin de eco
)l driver Manpipe para tar#etas 'angoma
La librera open:r para la sealiNacin de primarios que se utiliNa en algunos pases de latino
am5rica Oentre ellos &5xico/ Brasil y $rgentinaP1
y los siguientes *ate3ay:
Lin%sys '8$20G:
8ortech &92?G
6.1 Tar2eta )igi"5 T)MB10
La tar#eta .igium E.&A0G puede hospedar A mdulos de tipo ->L y ->'1 )n este caso se instalar4
con A mdulos ->L para cuatro lineas telefnicas1
Los pasos a seguir son:
01 $pagar el computador
:1 .esconectar el cable de alimentacin
21 $brir el chasis del !omputador
A1 Insertar la tar#eta en una ranura 8!I disponible
C1 9olver a poner el chasis del computador
@1 !onectar el cable de alimentacin al computador
?1 !onectar la linea telefnica al puerto ->L de la tar#eta a trav5s de un normal cable telefnico
F1 8render el computador
+ormalmente !entL' reconoce autom4ticamente la nueva tar#eta instalada y le asigna un I;( para que
pueda comunicar con el procesador del computador1 'e comprueba que la tar#eta ha sido reconocida:
#spci +n
debe aparecer:
@@@@:@(:@@:@ @)@@:d(C(:6@@3
$hora se puede configurar1 $ntes de iniciar con la configuracin se para $steris% y luego .$6.I:
;etc;init.%;asterisk stop
etc;init.%;%a/%i stop
0G0
)l primer archivo que hay que modificar es el /etc/dahdi/system1conf
)n ese archivo se define/ entre otras cosas/ la Nona geogr4fica donde se va a utiliNar la tar#eta1 )sto
sirve para la generacin de los tonos de la linea Otimbrando/ ocupado/ congestion/ etc11P 8ara !olombia
esta configuracin no est4 presente en .$6.I y para activarla hay que modificar un archivo de la
fuentes de dahdi=tools
c% ;"sr;src;%a/%i+too#s+2.C.0.2
nano zone%ata.c
al final del archivo/ antes de esta linea:
S $Pone '1 T
se aaden las siguientes lineas:
S
$Pone >E3
$country !co!3
$descri2tion !Co7o1=ia!3
$ringcadence S 15003 >000 T3
$tones S
8U Re:erences; htt2;88www$itu$int8.%#'%8inr8:or1s8:i7es8tones'020@$2d: U8
S +AH+."%)N,"+.AL%)N,3 !>25! T3
S +AH+."%)N,"9#SY3 !>258250308250! T3
S +AH+."%)N,"R.NG%)N,3 !>2581000308>500! T3
S +AH+."%)N,"C)NG,S%.)N3 !>2581003082503>258@503082503>258E50308250! T3
S +AH+."%)N,"CALLVA.%3 !>00W>508@00308E000! T3
S +AH+."%)N,"+.ALR,CALL3 !>25! T3
S +AH+."%)N,"R,C)R+%)N,3 !1>00850030815000! T3
S +AH+."%)N,".N&)3 !F*508@@03F1>008@@03F1(008@@03081000! T3
S +AH+."%)N,"S%#%%,R3 !F>2581003F081003F>2581003F081003F>2581003F081003F
>2581003F081003F>2581003F08103F081003F>2581003F081003>25! T3
T3
$dt1:"high"7eve7 '*3
$dt1:"7ow"7eve7 '113
$1:r1"7eve7 '43
$1:r2"7eve7 '(3
T3
IM-83TAT*& *# conteni%o %e )AK)(6T8*6!K9TT*3 tiene I"e estar en #a
5is5a #inea.
'e guardan los cambios y se vuelve a compilar dahdi=tools:
0G:
5ake %istc#ean
.;config"re
5ake
5ake insta##
5ake config
se renombra el archivo predefinido:
5v ;etc;%a/%i;s.ste5.conf ;etc;%a/%i;s.ste5.conf.o#%
y se crea uno nuevo:
nano ;etc;%a/%i;s.ste5.conf
'e aaden las primeras dos lineas relacionadas con la Nona geogr4fica:
7oadPone co
de:au7tPone co
'e define el tipo de sealiNacin Ofxs%s para ->L y fxo%s para ->'PT en este caso se configuran A
modulos ->L:
:<sDs1'>
que se puede escribir tambi5n:
:<sDs1323@3>
para terminar se define la cancelacin de eco1 8redefinida es mg::
echocance77er 1g231'>
)l archivo final ser4:
7oadPone co
de:au7tPone co
:<sDs1'>
echocance77er 1g231'>
'e guardan los cambios1
8ara me#orar la cancelacin de eco se instala L'L)!
6.2 8!L*C
)l eco es generado por la reflexin del audio trasmitido que se devuelve a quien lo ha originado con un
0G2
retraso que puede variar de algunos milisegundos a centenares de milisegundos1 &4s alto el tiempo de
retraso/ m4s fastidioso el eco1 Las libreras .$6.I vienen con un cancelador de eco soft3are que a
veces no logra solucionar este tipo de problema1 )n estos casos la me#or solucin es instalar el
cancelador de eco L'L)!1 L'L)! ha sido desarrollado por .avid ;o3e/ un ingeniero electrnico
australiano1
b8or qu5 L'L)! logra solucionar con mayor eficacia los problemas de ecoc
8orque a pesar que sea un cancelador de eco de 2:ms/ actHa #usto en los casos en que se produce este
tipo de retraso1 !uando las llamadas son locales o de larga distancia/ las compaas telefnicas no
aplican ningHn tipo de cancelacin de eco y es propio en estos casos que los 2:ms de L'L)! son
suficientes para cancelar el eco de manera satisfactoria1 !uando las llamadas son internacionales y el
eco producido considerable Ocentenares de msP/ son las mismas compaas telefnicas que
normalmente se encargan Oa nivel de centralesP de eliminar el eco que se produce1
L'L)! est4 disponible en la fuentes del <ernel a partir de la versin :1:F
8ara instalarlo se siguen estos pasos:
c% ;"sr;src
se descargan las fuentes del <ernel :1@1:F
wget /ttp&;;www.voztovoice.org;ca5p"s;pb00C;#in"0+2.6.2=.tar.bz2
se descomprimen:
tar +0f #in"0+2.6.2=.tar.bz2
'e preparan las fuentes de .$6.I para la compilacin de L'L)!:
5k%ir ;"sr;src;%a/%i+#in"0+2.C.0.2;%rivers;staging
cp +f3 ;"sr;src;#in"0+2.6.2=;%rivers;staging;ec/o ;"sr;src;%a/%i+#in"0+2.C.0.2;%rivers;staging
se% +i Zs[`ob2+5 FE %a/%i6ec/ocan6os#ec.o[ob2+5 FE %a/%i6ec/ocan6os#ec.o[Z ;"sr;src;%a/%i+
#in"0+2.C.0.2;%rivers;%a/%i;?b"i#%
se% +i Zs[`ob2+5 FE ..;staging;ec/o;[ob2+5 FE ..;staging;ec/o;[Z ;"sr;src;%a/%i+#in"0+
2.C.0.2;%rivers;%a/%i;?b"i#%
ec/o Oob2+5 FE ec/o.oO W ;"sr;src;%a/%i+#in"0+2.C.0.2;%rivers;staging;ec/o;?b"i#%
$hora se recompilan .$6.I=linu y .$6.I=tools:
c% ;"sr;src;%a/%i+#in"0+2.C.0.2
5ake %istc#ean
0GA
5ake
5ake insta##
.$6.I=Eools:
c% ;"sr;src;%a/%i+too#s+2.C.0.2
5ake %istc#ean
.;config"re
5ake
5ake insta##
5ake config
'e modifica el system1conf
nano ;etc;%a/%i;s.ste5.conf
se cambia esta linea
echocance77er1g231'>
para que quede:
echocance77eros7ec31'>
8ara terminar la configuracin de la tar#eta hay que modificar el archivo chanDdahdi1conf
se renombra el predefinido:
5v ;etc;asterisk;c/an6%a/%i.conf ;etc;asterisk;c/an6%a/%i.conf.o#%
y se crea uno nuevo:
nano ;etc;asterisk;c/an6%a/%i.conf
'e aaden las siguientes lineas:
BtrunDgrou2sC
Bchanne7sC
7anguagees
conte<t:ro1'2stn
over7a2dia7yes
signa77ing:<s"Ds
toneduration100
useca77eridyes
cidsigna77ingv2@
0GC
cidstart2o7arity
hideca77eridno
ca77waitingyes
ca77waitingca77eridyes
threewayca77ingyes
trans:eryes
can2arDyes
canca77:orwardyes
ca77returnyes
echocance7yes
re7a<dt1:yes
r<gain2$0
t<gain@$0
ca77erid asreceived
a1a:7agsdocu1entation
accountcode2stn
=usydetectyes
=usycountE
1ohinter2retde:au7t
1ohsuggestde:au7t
grou21
channe7 G 1'>
)n el bloque channels se configuran los par4metros validos para toso los canales1 $ partir de la linea
channel =" se configuran los canales1 )n este caso los cuatro canales ->L pertenecen todos al grupo 0
;einiciamos primero .$6.I y luego $steris%
;etc;init.%;%a/%i start
;etc;init.%;asterisk start
'e controla que efectivamente la cancelacin de echo configurada sea L'L)!:
%a/%i6cfg +vvv
DAHDI ?ools Lersion 1 ):":(
DAHDI Lersion: ):3:@:(
7co Canceller8s9: %SL7C
Configuration
5555555555555555555555
'e entra en la consola de $steris%:
asterisk +rvvvvvvvvvvvvvvvvv
0G@
se mira la configuracin del canal 0:
!LI" %a/%i s/ow c/anne# 1
'e sale de la consola:
!LI" I"it
'i se decide utiliNar las A lineas telefnicas para las llamadas locales y nacionales hay cuatro forma de
escribir el dialplan Opara !olombiaP1 'e antepone el numero B para indicar que marcando B m4s el
numero de destino se est4 saliendo por las lineas analgicas1 )ste dialplan no se utiliNar4 para llamadas
a celulares1
exten =" DBW0:AC@?FBX>>>>>>>Y/0.ialO.$6.I/g0/^_)>E)+:0`/ACP
same =" n/6angup
g0= ,sa las lneas del grupo > de menor a &ayor
exten =" DBW0:AC@?FBX>>>>>>>Y/0/.ialO.$6.I/*0/^_)>E)+:0`/ACP
same =" n/6angup
*0= ,sa las lneas del grupo > de &ayor a menor
exten =" DBW0:AC@?FBX>>>>>>>Y/0/.ialO.$6.I/r0/^_)>E)+:0`/ACP
same =" n/6angup
r0= ,sa las lneas del grupo > de menor a &ayor pero de manera aleatoria
e<ten G "*B12>5E4(*CKKKKKKKF313+ia7/+AH+.8R18RS,K%,N;1T3>56
sa1e G n3Hangu2
;0= ,sa las lneas del grupo > de &ayor a menor pero de manera aleatoria
'e usar4 este ultimo bloque1
nano ;etc;asterisk;e0tensions.conf
al final del contexto internas se pone:
e<ten G "*B12>5E4(*CKKKKKKKF313+ia7/+AH+.8R18RS,K%,N;1T3>56
sa1e G n3Hangu2
8ara llamadas entrantes despu5s del contexto google=in:
B:ro1'2stnC
e<ten G s313+ia7/S.P810003>56
0G?
e<ten G s3n3Hangu2
)l contexto from=pstn es el que se ha definido en el archivo chanDdahdi1conf
'e recarga el dialplan:
asterisk +rvvvvvvvvvvvvv
!LI" %ia#p#an re#oa%
se sale de la consola:
!LI" I"it
6.G Tar2eta )igi"5 T*120-
La tar#eta E)0:G8 es una tar#eta con una conexin E0/ )0 o K01 )l tipo de conexin se configura a
trav5s de un #umper presente en la tar#eta:
Los pasos a seguir son:
01 $pagar el computador
:1 .esconectar el cable de alimentacin
21 $brir el chasis del !omputador
A1 Insertar la tar#eta en una ranura 8!I disponible
C1 9olver a poner el chasis del computador
@1 !onectar el cable de alimentacin al computador
?1 !onectar el cable ;KAC de la linea )0 a la tar#eta
F1 8render el computador
0GF
'e paran los servicios $steris% y .$6.I:
service asterisk stop
service %a/%i stop
6.G.1 M41;32 + 8penr2
!omo en algunos pases de latino am5rica/ se utiliNa la sealiNacin &-*/;: para que .$6.I la
pueda implementar hay que instalar la librera Lpenr::
se descarga:
c% ;"sr;src
wget /ttp&;;openr2.goog#eco%e.co5;fi#es;openr2+1.G.1.tar.gz
se descomprime:
tar +0f openr2+1.G.1.tar.gz
se entra en la carpeta:
c% openr2+1.G.1
y se compila:
.;config"re ++prefi0E;"sr
5ake
5ake insta##
Luego hay que volver a compilar $steris%:
c% ;"sr;src;asterisk+1.6.2.22
5ake %istc#ean
.;config"re
5ake
5ake insta##
5ake config
8ara averiguar que la librera ha sido englobada en el el modulo chanDdahdi1so:
#%% c/anne#s;c/an6%a/%i.so [ grep openr2
li*openr):so:A 5N /usr/li*/li*openr):so:A 8@#@@"*f@@@9
0GB
8ara ver las distintas versiones de la sealiNacin &-*/;: soportadas por la librera:
r2test +#
Lariant Code Countr.
A/ Argentina
I/ IraWil
C, Cina
CX CWec /epu*lic
C% Colom*ia
7C 7cuador
ID Indonesia
I?F International ?elecommunication Fnion
=K =e#ico
0H 0ilippines
L7 LeneWuela
Eerminada la instalacin de la librera se averigua si la tar#eta ha sido reconocida por !entL':
#spci +n
el resultado debe ser:
GGGG:G0:GG1G G:GG: I'.+ controller: ,n%no3n device d0@0:G0:G
!uando se configura una linea )0 la sintaxis en el archivo system1conf es:
span 5N U,um*erN-U?imingN-ULine Iuild %utN-UJramingN-UCodingN$-;ello!'
+umber: el puerto donde est4 conectado el cable de la linea )01 )n este caso 0
Eiming: determina la fuente de sincroniNacin para la tar#eta1 8osibles valores:
G = la fuente la genera la misma tar#eta
0 = la fuente es remota
Line Build Lut: G predefinido
-raming: en las lineas )0 puede ser !$' O!hannel $ssociated 'ignalingP o !'' O!ommon !hannel
'ignaling P
!oding: puede ser $&I o 6B.21 )n algunos casos al final de la linea se pone !;!A para el control de
los paquetes1
)stos datos normalmente los facilita el proveedor de la linea1 $lgunos e#emplos podran ser:
s2an G 130303cas3hd=@3crc>
o
s2an G 130303css3hd=@
Luego se configuran los canales:
00G
=chan 1'15314'@1
dchan 1E
bchan son los canales audio y dchan el canal para la sealiNacin1
y la cancelacin de eco:
ec/ocance##er EW os#ec>1+1C>1A+G1
se termina con:
7oadPone co
de:au7tPone co
8or ultimo se configura el chanDdahdi1conf
los dos valores m4s importantes son:
switc/t.pe
signa#ing
que tambi5n facilita el proveedor1 Lo m4s comHn es:
switchty2eeuroisdn
signa7ing2ri"c2e
,n e#emplo de archivo de configuracin es:
BtrunDgrou2sC
Bchanne7sC
useca77eridyes
hideca77eridno
ca77waitingyes
useca77ing2resyes
ca77waitingca77eridyes
threewayca77ingyes
trans:eryes
can2arDyes
canca77:orwardyes
ca77returnyes
echocance7yes
echocance7when=ridgedyes
re7a<dt1:yes
r<gain2$0
t<gain@$0
000
i11ediateno
conte<t:ro1'2stn
grou21
switchty2eeuroisdn
signa7ing2ri"c2e
channe7 G 1'15314'@1
8ara la sealiNacin &-!/;: sera:
system1conf
s2an131303cas3hd=@
cas1'15;1101
dchan1E
cas14'@1;1101
7oadPone co
de:au7tPone co
chanDdahdi1conf
BtrunDgrou2sC
Bchanne7sC
useca77eridyes
hideca77eridno
ca77waitingyes
useca77ing2resyes
ca77waitingca77eridyes
threewayca77ingyes
trans:eryes
can2arDyes
canca77:orwardyes
ca77returnyes
echocance7yes
echocance7when=ridgedyes
re7a<dt1:yes
r<gain2$0
t<gain@$0
i11ediateno
conte<t:ro1'2stn
grou21
signa77ing 1:cr2
1:cr2"variant co
1:cr2"get"ani":irst no
1:cr2"1a<"ani 10
1:cr2"1a<"dnis >
1:cr2"category nationa7"su=scri=er
00:
1:cr2"1:=acD"ti1eout '1
1:cr2"1etering"2u7se"ti1eout '1
1:cr2"7ogdir 7og
1:cr2"7ogging a77
channe7 G 1'15314'@1
Eerminada la configuracin se reinician los servicios:
service %a/%i start
service asterisk start
y se averigua en la consola si todos los canales est4n configurados:
!LI" %a/%i s/ow c/anne#s
6.B Tanpipe
'e termina este modulo con la instalacin del driver Manpipe necesario para tar#etas '$+*L&$1
8rimero se instala la tar#eta:
Los pasos a seguir son:
01 $pagar el computador
:1 .esconectar el cable de alimentacin
21 $brir el chasis del !omputador
A1 Insertar la tar#eta en una ranura 8!I disponible
C1 9olver a poner el chasis del computador
@1 !onectar el cable de alimentacin al computador
?1 !onectar el cable ;KAC de la linea )0 a la tar#eta
F1 8render el computador
se para $steris% y .$6.I:
service asterisk stop
service )AK)( stop
'e descarga el driver:
c% ;"sr;src
wget ftp&;;ftp.sango5a.co5;#in"0;c"rrent6wanpipe;wanpipe+G.C.2G.tgz
se descomprime:
tar +0f wanpipe+G.C.2G.tgz
002
se entra en la carpeta:
c% wanpipe+G.C.2G
y se instala:
.;!et"p %a/%i
se escribe . y se continua con envo:
se selecciona 1 m4s envo1 )mpieNa la compilacin del driver y de las utilidades1 $l finaliNar aparecer4:
$hora se e#ecuta:
wancfg6%a/%i
que crear4 todos los datos de configuracin para la tar#eta instalada1 Luego se inicia 3anpipe:
wanro"ter start
.$6.I
service %a/%i start
$steris%:
service asterisk start
00A
8ara terminar se personaliNan los par4metros creados por 3ancfg1
6.C Links.s !-AG102 , 1atewa. 4X8;4X'
)l '8$20G: es un *ate3ay que soporta una linea ->L/ una linea ->' y cada linea se puede configurar
como si fuera una extensin 'I81 La configuracin que sigue abarca solamente la parte ->L ya que
todas las llamadas entrantes se contestar4n desde una extensin 'I81 8or defecto el '8$20G: no permite
conectarse a la pagina de administracin desde remoto/ as que lo primero que hay que hacer es
activarla1
)n Line se conecta el cable del tel5fono que viene de la lnea telefnica1 )n )thernet se conecta un
cable de red que luego se conectar4 al toma de red del computador1 8or finaliNar/ en Internet se conecta
un cable de red que luego se conecta al ;outer1 'e abre una pestaa nueva del navegador y se pone la
siguiente direccin: http://0B:10@F1G10 $parecer4 la pagina de administracin del '8$20G::
00C
'e averigua la versin del -irm3are instalada y la direccin I8 asignada por el ;outer1 'e da clic% en el
enlace QadvancedR y luego en la pestaa QMan 'etupR1 'e activa la conexin desde remoto:
8ara guardar cada cambio al final de la pagina se presiona el botn Q'ubmit $ll !hangesR1 Sa se puede
desconectar el cable del puerto )thernet del $E$ y volver a conectar el computador al router1 $hora se
puede acceder al '8$20G: indicando la direccin I8 asignada por el ;outer1 )n este caso
0B:10@F10GG10GG )l segundo paso es configurar una clave para el admin y una para el user )sto se hace
en la pestaa 9oice y luego 'ystem:
'e presiona el botn 'ubmit $ll !hanges1 'i la versin del firm3are no es la C1010G se actualiNa1 Los
fir3are para el '8$20G:/ se pueden descargar desde esta pagina1 'e descomprime el archivo en el
exritorio del computador1 )ntre los nuevo iconos:
00@
'e da clic% dos veces1 $parecer4:
8ara aceptar la advertencia se presiona el botn Q!ontinueR:
'e pone respectivamente la direccin I8 local del '8$20G: y la del computador donde se ha
descargado el -irm3are1 'e continua con el botn QL<R:
00?
'e pone el usuario admin y la clave que se acaba de crear1 'e presiona el botn QL<R:
'e revisan todos los datos y para iniciar la actualiNacin se presiona el botn Q,pgradeR1 La operacin
tarda unos minutos1 !uando termine se vuelve a entrar en la pagina de administracin del $E$ y se
00F
configura la cuenta 'I8 para la lnea ->L1 'e va a la pestaa 9oice y luego en 8'E+ Line donde se
configuran solamente la parte que interesa:
Line *nab#e = yes
AT ?eep A#ive *nab#e = yes Osi el $steris% es remoto y el $E$ se encuentra detr4s de un +$EP
AT ?eep A#ive Msg = viene por defecto con la opcin ^+LEI-S que enva un paquete de tipo 'I8
+LES-S para tener abierta la conexin1 'e puede de#ar la linea en blanc1 .e esta forma se enva a
$steris% solamente un paquete ,.8 vaco como hacen la mayora de los tel5fonos 'I8:
-ro0. = direccin I8 o nombre de dominio del servidor $steris% remoto
3egister = yes
)isp#a. a5e = poner el numero de tel5fono de la lnea telefnica Opor e#emploP
9ser() = el nombre de la extensin que luego se configurar4 en $steris%
9se A"t/ () =yes
A"t/ () = lo mismo que ,ser I.
00B
!omo codec predefinido se activa ula3 y como segundo *?:B:
'e definen dos .ialplan: )l 0 para las llamadas salientes y el : para las llamadas entrantes1 Eodas las
llamadas entrantes se enrutan a las extensin s de $steris%:
)n la configuracin del *ate3ay 9oI8 I" 8'E+ se pone:
Vo(-+To+-!T 1atewa. *nab#e =yes
Vo(- Ca##er A"t/ Met/o% = none Oninguna autenticacinP
8ne !tage )ia#ing = yes
Line 1 Vo(- Ca##er )- = para las llamadas salientes se utiliNar4 el dialplan 0
0:G
)n la configuracin del *ate3ay 8'E+ I " 9oI8 se pone:
-!T+To+Vo(- 1atewa. *nab#e =yes
-!T Ca##es A"t/ Met/o% = none Ode esta forma cuando el $E$ conteste no solicitar4 ningHn 8I+
para acceder al *ate3ay 9oI8P
8ne !tage )ia#ing = yes
-!T 3ing T/r" Line 1 = no Oya que no se va a conectar un tel5fono analgico al $E$P
-!T Ca##er )efa"#t )- = : O8ara este *ate3ay se utiliNar4 el diaplan :P
!uando entre una llamada desde la red 8'E+ el *ateay 9oI8 del $E$ contestar4 despu5s de : segundos
y pasar4 la llamada tambi5n a las extensin s de $steris%:
)etect -o#arit. 3eversa# = no Opara !olombiaP
)etect -!T Long si#ence = yes Osi no hay flu#o audio del lado 8'E+ por 2G segundos Opar4metro
que sigueP la llamada terminar4
-!T Long !i#ence )"ration = 2G
)etect Vo(- Long !i#ence = yes Lo mismo para lado 9oI8
Vo(- Long !i#ence )"ration = 2G
)etect )isconnect Tone = Ses
0:0
)isconnect Tone = el valor de su pas1 )sto valores/ para muchos pases/ aparecen en la gua de
administrador del '8$20G:1 8ara !olombia todava no he logrado encontrarlo1 'i alguien lo conoce/ se
agradece la ayuda1
'e termina presionando el botn Q'ubmit $ll !hangesR1
$hora el $E$ intentar4 conectarse a $steris% sin 5xito ya que la extensin no ha sido creada1 'e abre el
archivo sip1conf y al final del archivo/ se aade el siguiente bloque:
nano ;etc;asterisk;sip.conf
Bs2a@102C
ty2e:riend
secret2assword
?ua7i:yyes
natyes
hostdyna1ic
direct1ediano
conte<t:ro1's2a@102
dt1:1oder:c2(@@
7anguagees
ca77eridLinea%e7 QNu1%e7G
a77owtrans:eryes
a77owsu=scri=eyes
su=scri=econte<tsu=scri=e
ca77counteryes
disa77owa77
a77owu7aw
a77owg42*
'e guardan los cambios y se recarga la configuracin 'I8:
asterisk +r0 Zsip re#oa%Z
.espu5s de unos segundos en la pagina del '8$20G: O&enH 9oice/ pestaa Info/ debera aparecerP:
0::
$hora el dialplan:
nano ;etc;asterisk;e0tensions.conf
para las llamadas salientes al final del contexto internas se pone:
e<ten G "($313+ia7/S.P8s2a@1023>53+/RS,K%,N;1T66
sa1e G n39usy/@6
sa1e G n3Hangu2
.e esta forma marcando F a el numero a llamar/ todas las llamadas pasar4n para el '8$20G:1 )n
cuanto el $E$ conteste/ se le enva los dgitos del numero a marcar quitando el F Oopcin . de la
aplicacin .ialP1 8ara las llamadas entrantes se configura el contexto from=spa20G: Ocomo definido en
la configuracin de la extensin en el sip1confP y se pone:
B:ro1's2a@102C
e<ten G s313No)2
sa1e G n3+ia7/S.P810006
sa1e G n3Hangu2
.e esta forma cuando alguien llamar4 el numero de la lnea telefnica/ despu5s de dos segundos
empeNar4 a timbrar tambi5n la extensin 0GGG1 !laramente la llamada entrante se puede enviar a un
I9; o configurar para que timbre m4s de una extensin1
*uardamos los cambios y recargamos el dialplan:
asterisk ,rvvvvvvvvvvvvvvv
!LI" %ia#p#an re#oa%
$hora desde cualquier tel5fono 'I8 conectado al $steris% se marca un numero anteponiendo el F1 La
0:2
llamada saldr4 por el '8$20G:1 Ltra prueba: se marca desde un celular el numero de la lnea telefnica
y se espera que empiece a timbrar la extensin 0GGG1
0:A
CA-(T9L8 V((
)ia#p#an , Config"raci$n avanza%a
8ara poder entender me#or como funciona y como se construye un dialplan en $steris%/ hay que aclarar
algunos conceptos claves1 )n el p4rrafo :1@ se ha explicado la divisin del dialplan en contextos/
extensiones y prioridades1 )n esta parte se ilustrar4n:
las variables
los pattern matching
la aplicacin )!6L
el contexto subscribe
las &acro
la aplicacin $uthenticate
A.1 Las variab#es
,na variables es un ob#eto al que se asocia un valor1 'e utiliNan mucho en matem4tica y su funcin en
$steris% es reducir la complexidad del dialplan/ simplificar su construccin y aadirle una lgica m4s
comprensible1 )n $steris% existen tres tipos de variables:
variables globales
variables de canal
variables de ambiente
Las variables globales son aquellas cuyo valor no cambia a lo largo del dialplan1 )n la preparacin del
dialplan se ha visto el bloque dedicado a las variables globales y se han configurado tres/ entre ellas:
5arkoE(AX2;5arko
.e esta forma se asocia al nombre de variable mar%o el valor I$>:/mar%o1 b!ual es su funcin en el
dialplanc )n este caso simplificarlo1 'i se retoma el bloque de dialplan:
e<ten G 12@>313+ia7/.AK281arDo3@06
sa1e G n3Hangu2
que se ha creado para llamar la extensin I$>: mar%o/ esta parte puede ser escrita tambi5n de la
siguiente forma:
e<ten G 12@>313+ia7/RS1arDoT3@06
sa1e G n3Hangu2
!uando se utiliNa una variable en el dialplan la sintaxis es: car4cter ^ seguido por el nombre de la
variable entre dos llaves _`1 Las variables son case sensitive/ es decir que hay diferencia si se escriben
en mayHsculas o minHsculas1 )n el caso de la variable ^_mar%o` que est4 escrita toda en minHsculo/ no
es lo mismo si en el dialplan se pone:
e<ten G 12@>313+ia7/RS-ARM)T3@06
sa1e G n3Hangu2
La variable ^_&$;<L` estar4 totalmente vaca1
Las variables de canal tienen valideN solamente para la llamada corriente1 8ara crearlas se utiliNa la
aplicacin 'et1 ,n e#emplo:
!et@n"5eroE1D
8ara toda la duracin de la llamada el valor de la variable ^_numero` ser4 01 !uando la llamada
termine/ el valor asociado a la variable volver4 a ser nulo1 )ste tipo de variables se utiliNan mucho en el
dialplan para modificar valores del canal y/o para guardar algunos datos de las llamadas para luego
utiliNarlos1 $ lo largo de la construccin del dialplan se presentar4n distintos e#emplos1
6ay muchas variables predefinidas que se crean durante una llamada1 8ara saber cuales son y que valor
tienen en un determinado canal/ se utiliNa la aplicacin )"5pc/an1
8ara verla en accin se abre el archivo del dialplan:
nano ;etc;asterisk;e0tensions.conf
se modifica este bloque:
e<ten G 12@313Answer
sa1e G n3P7ay=acD/he77owor7d6
sa1e G n3Hangu2
para que quede:
e<ten G 12@313Answer
sa1e G n3+u12chan
sa1e G n3P7ay=acD/he77owor7d6
sa1e G n3Hangu2
'e guardan las modificaciones y se recarga el dialplan:
asterisk +rvvvvvvvvvvvvvvv
!LI" %ia#p#an re#oa%
$hora desde la extensin 0GGG se marca el numero 0:21 )l resultado en la consola de $steris% ser4:
Dumping Info Jor Cannel: SI0/(@@@1@@@@@@@(:
55555555555555555555555555555555555555555555555555555555555
0:?
Info:
,ame5 SI0/(@@@1@@@@@@@(
?.pe5 SI0
FniqueID5 (A(6A3)@"A:(
CallerID,um5 (@@@
CallerID,ame5 callerid5Julano
D,IDDigits5 ()A
/D,IS5 8,/A9
0ar2inglot5
Language5 es
State5 Fp 8C9
/ings5 @
,ativeJormat5 @#6 8ala!9
EriteJormat5 @#6 8ala!9
/eadJormat5 @#6 8ala!9
/a!EriteJormat5 @#6 8ala!9
/a!/eadJormat5 @#6 8ala!9
(stJileDescriptor5 )D
Jramesin5 (
Jramesout5 @
?imetoHangup5 @
7lapsed?ime5 @@m@s
Conte#t5 e#ternas
7#tension5 ()A
0riorit.5 )
CallMroup5 (
0ic2upMroup5 (
Application5 DumpCan
Data5 87mpt.9
Iloc2ing+in5 8,ot Iloc2ing9
Laria*les:
SI0CALLID5;WI2;4>(=4;.%E;#=Wll;4F3;)/,m=A=D=A=4J2;?F:
SI0D%=AI,5DC:()C:()(:(A3
SI0F/I5sip:(@@@B(D@:)3A:(HA:)(3:(3"6@
!LI" I"it
8ara una lista completa de las variables predefinidas se puede consultar la Mi%i de $steris%1 ,na
variable muy peculiar es la variable ^_)>E)+`/ que contiene el numero marcado1 )sta variable tiene
la siguiente sintaxis ^_)>E)+:x:yP donde x es la posicin inicial e y el numero de dgitos que se
quieren extraer:
Eomando como numero de partida C?2GG:GG:
RS,K%,N;1T devo7verX 4@00200
0:F
RS,K%,N;1;>T devo7verX 4@00
RS,K%,N;2;ET devo7verX @00200
RS,K%,N;5;@T devo7verX 200
Las variables de ambiente se utiliNan para leer la variables del sistema OLinuxP1 8ara crearlas se utiliNa
la aplicacin ')E y la funcin )+91 ,n e#emplo:
!et@-7XE\]*V@LA1D^D
)n este e#emplo a la variable 8B> estar4 asociado el idioma configurado en el servidor Linux1
para probarla en el dialplan:
nano ;etc;asterisk;e0tensions.conf
en el contexto internas se 4nade este bloque:
e0ten EW C0>1>!et@-7XE\]*V@LA1D^D
sa5e EW n>oop@(%io5a !ervi%or \]-7X^D
sa5e EW n>Kang"p
'e guardan los cambios y se recarga el dialplan1
asterisk +rvvvvvvvvvvvvvv
!LI" %ia#p#an re#oa%
.esde la extensin 0GGG se marca el numero CG1 )n la consola de $steris%:
7#ecuting $3@Be#ternas:(' Set8VSI0/(@@@1@@@@@@@cV- V0IK5es+C%:iso663D(V9 in ne! stac2
7#ecuting $3@Be#ternas:)' ,o%p8VSI0/(@@@1@@@@@@@cV- VIdioma Servidor es"C)$iso((5*1V9 in ne! stac2
7#ecuting $3@Be#ternas:A' Hangup8VSI0/(@@@1@@@@@@@cV- VV9 in ne! stac2
+o todas las variables de ambiente se pueden leer desde $steris%1
A.2 -attern Matc/ing
)l dialplan se construye de modo que todos los posibles nHmeros marcados puedan ser QinterceptadosR
por $steris%1 'era absurdo indicar todos los nHmeros de tel5fono de !olombia porque un usuario
podra marcar uno de ellos1 8ara este tipo de situaciones/ se utiliNan los 8attern &arching que permiten
crear extensiones en el dialplan que QinterceptenR muchos nHmeros1 )stos caracteres se ponen en lugar
de uno o m4s dgitos1 La lista es la siguiente:
0:B
> puede ser un numero de G a B
J puede ser un numero de 0 a B
+ puede ser un numero de : a B
W0=A/@=FX puede ser un numero de 0 a A o de @ a F
1 OpuntoP puede ser uno o m4s caracteres
Y puede ser cero o m4s caracteres1
$lgunos e#emplos1 'i se quiere crear una extensin donde entren todas las llamadas a los celulares de
!olombia Oprefi#o 2P con el proveedor Kustvoip/ la primera linea sera:
e<ten G "0054@KKKKKKKKK313+ia7/S.P8Justvoi28RS,K%,NT6
'i no se conoce exactamente de cuantos dgitos est4 compuesto un numero de celular la misma linea
cambiara de la siguiente forma:
e<ten G "0054@$313+ia7/S.P8Justvoi28RS,K%,NT6
!on el punto despu5s del GGC?2 lo que sigue puede ser uno o m4s dgitos1
!uando se pone un pattern matching en la creacin de una extensin/ siempre hay que anteponer el
guion aba#o D
'i/ por e#emplo/ el numero de extensiones configuradas en $steris% van desde 0GGG hasta 0GBB el
dialplan para las llamadas entre extensiones sera:
e0ten EW 610XX>1>)ia#@!(-;\]*XT*^D
A.G La ap#icaci$n *c/o
La aplicacin )cho se utiliNa para medir el tiempo de retorno de la voN1 8uede ser Htil para medir
eventuales retrasos y o problemas en la calidad del audio1
8ara configurarla se modifica el dialplan:
nano ;etc;asterisk;e0tensions.conf
y en el contexto internas se aade el siguiente bloque:
e<ten G 150313Answer
sa1e G n3P7ay=acD/de1o'echotest6
sa1e G n3,cho
sa1e G n3P7ay=acD/de1o'echodone6
sa1e G n3Hangu2
'e guardan los cambios y se recarga el dialplan:
02G
asterisk +r0 Z%ia#p#an re#oa%Z
.esde cualquiera extensin registrada a $steris% se marca el numero 0CG y se hace la prueba1
A.B *# conte0to !"bscribe
$ lo largo de la configuracin del archivo sip1conf se ha hablado de la posibilidad de monitorear el
estado de una extensin y en la parte general del archivo se han configurados los siguientes par4metros
para activar esta funcionalidad:
ca77counteryes
a77owsu=scri=eyes
su=scri=econte<tsu=scri=e
noti:yringingyes
noti:yho7dyes
$hora para que el sistema funcione en el dialplan hay que configurar el contexto subscribe1 'e abre el
archivo:
nano ;etc;asterisk;e0tensions.conf
y despu5s del contexto internas se aade el siguiente bloque:
Us"bscribeV
e0ten EW 1000>/int>!(-;1000
e0ten EW 1001>/int>!(-;1001
e0ten EW 1002>/int>!(-;1002
e0ten EW 5arko>/int>(AX2;5arko
La prioridad 6int es una prioridad especial que permite monitorear el estado de las extensiones1 )n este
caso las extensiones 'I8 0GGG/0GG0 y 0GG: y la extensin I$>: mar%o1
Ltra forma de escribir el bloque es:
Us"bscribeV
e0ten EW 6100U0+2V>/int>!(-;100U0+2V
e0ten EW 5arko>/int>(AX2;5arko
es decir utiliNando los 8attern &arching1 )n este caso se utiliNar4 la primera forma1 'e guardan los
cambios y se recarga el dialplan:
asterisk +rvvvvvvvvvvvvvvvvvv
!LI" %ia#p#an re#oa%
020
!on el comando:
!LI" core s/ow /ints
== ;egistered $steris% .ial 8lan 6ints ==
0GGG[subscribe : 'I8/0GGG 'tate:Idle Matchers G
0GG0[subscribe : 'I8/0GG0 'tate:,navailable Matchers G
0GG:[subscribe : 'I8/0GG: 'tate:,navailable Matchers G
mar%o[subscribe : I$>:/mar%o 'tate:,navailable Matchers G
'e ver4n los hints configurados y en la ultima columna cuantas extensiones se han subscrito al estado
de las dem4s Oen este caso ningunaP1
$hora se abre el >lite configurado como extensin 0GGG y se presiona el icono evidenciado:
)n la nueva ventana:
$l lado de la casilla Q'oftphoneR se escribe 0GG0 y luego se presiona el botn $dd1 $ntes de presionar
el botn QL<R para terminar la operacin/ en la ventana del terminal se sale de la consola de $steris%:
!LI" I"it
y se inicia la captura de los paquetes 'I8:
ngrep 1000 +T b.#ine port C060 W ;t5p;s"bscribe
'e vuelve al >lite y se presiona el botn L<1 'e vuelve a la ventana terminal y se termina la captura de
los paquetes 'I81
La secuencia de los paquetes ser4:
>=Lite =================='ubscribe===============" $steris%
>=Lite ]=======AG0 ,nauthoriNed============== $steris%
02:
>=Lite =================='ubscribe===============" $steris%
>=Lite ]===================:GG L%================ $steris%
>=Lite ]=================+LEI-S================ $steris%
>=Lite ===================:GG L<================" $steris%
S en el +LEI-S final/ estar4 anexa esta parte:
]cxml version=\01G\ encoding=\I'L=FFCB=0\c"
]presence xmlns=\urn:ietf:params:xml:ns:pidf\
xmlns:pp=\urn:ietf:params:xml:ns:pidf:person\
xmlns:es=\urn:ietf:params:xml:ns:pidf:rpid:status:rpid=status\
xmlns:ep=\urn:ietf:params:xml:ns:pidf:rpid:rpid=person\
entity=\sip:0GGG[B@10:@10:0102C\"
]pp:person"]status"
]ep:activities"]ep:a3ay/"]/ep:activities"
]/status"]/pp:person"
]note"ot on#ine]/note"
]tuple id=\0GG0\"
]contact priority=\0\"sip:0GG0[B@10:@10:0102C]/contact"
]status"]basic"closed]/basic"]/status"
]/tuple"
]/presence"
$steris% est4 comunicando a la extensin 0GGG que la extensin 0GG0 no est4 en linea O+ot onlineP
'e capturan nuevamente los paquetes con el comando:
ngrep 1000 +T b.#ine port C060 W ;t5p;notif.
'e abre el softphone 2!> configurado como extensin 0GG0 y una veN que est5 registrado a $steris% se
termina la captura de los paquetes1 )n el archivo notify se encontrar4 la siguiente secuencia:
$steris% ========+LEI-S==============" >lite
$steris% ]========:GG L<============== >lite
La parte final del paquete de +otify enviado por $steris% a la extensin 0GGG ser4:
]cxml version=\01G\ encoding=\I'L=FFCB=0\c"
]presence xmlns=\urn:ietf:params:xml:ns:pidf\
xmlns:pp=\urn:ietf:params:xml:ns:pidf:person\
xmlns:es=\urn:ietf:params:xml:ns:pidf:rpid:status:rpid=status\
xmlns:ep=\urn:ietf:params:xml:ns:pidf:rpid:rpid=person\
entity=\sip:0GGG[B@10:@10:0102C\"
]pp:person"]status"
]/status"]/pp:person"
]note"3ea%.]/note"
]tuple id=\0GG0\"
022
]contact priority=\0\"sip:0GG0[B@10:@10:0102C]/contact"
]status"]basic"open]/basic"]/status"
]/tuple"
]/presence"
$steris% estar4 comunicando a la extensin 0GGG que la extensin 0GG0 est4 en linea ya que la
extensin 0GGG ha subscrito el estado de esa extensin1 'i se vuelve a la consola de $steris%:
asterisk +rvvvvvvvvvvvvvvv
!LI" core s/ow /ints
== ;egistered $steris% .ial 8lan 6ints ==
0GGG[subscribe : 'I8/0GGG 'tate:Idle Matchers G
0GG0[subscribe : 'I8/0GG0 'tate:Idle Matchers 0
0GG:[subscribe : 'I8/0GG: 'tate:,navailable Matchers G
mar%o[subscribe : I$>:/mar%o 'tate:,navailable Matchers G
)n la columna Matchers de la extensin 0GG0 hay un 0 que indica que hay una extensin que est4
monitoreando su estado1
'e abre Joiper Oconfigurado con las cuentas 'I8 0GG: y I$>: mar%oP y en el >lite se subscribe el
estado de ambas1 )l resultado ser4:
.esde la extensin 0GG0 se marca el numero 0CG Otest de echoP1 )n el >lite aparecer4:
8or ultimo/ desde la extensin 0GG: se llama la extensin 0GG0:
02A
La misma cosa se puede hacer en los Eel5fonos 'I8 de mesa que soportan los BL- OBusy Lamp -ieldP1
A.C Las Macro
'i en el dialplan algunas acciones se repiten a menudo/ $steris% brinda la posibilidad de crear una
&acro que permite simplificar estas operaciones1 La sintaxis de la aplicacin &acro:
asterisk +rvvvvvvvvvvvv
!LI" core s/ow app#ication Macro
15 Info a*out application '=acro' 51
$S.nopsis'
=acro Implementation:
$Description'
7#ecutes a macro using te conte#t macro1UnameN- 4umping to te 's' e#tension
of tat conte#t and e#ecuting eac step- ten returning !en te steps end:
?e calling e#tension- conte#t- and priorit. are stored in YQ=AC/%+7K?7,
R- YQ=AC/%+C%,?7K?R and YQ=AC/%+0/I%/I?;R respectivel.: Arguments *ecome
YQA/M(R- YQA/M)R- etc in te macro conte#t:
If .ou Moto out of te =acro conte#t- te =acro !ill terminate and control
!ill *e returned at te location of te Moto:
If YQ=AC/%+%JJS7?R is set at termination- =acro !ill attempt to continue
at priorit. =AC/%+%JJS7? Z , Z ( if suc a step e#ists- and , Z ( oter!ise:
EA/,I,M<<<: Iecause of te !a. =acro is implemented 8it e#ecutes te
priorities contained !itin it via su*1engine9- and a fi#ed per1tread memor.
stac2 allo!ance- macros are limited to H levels of nesting 8macro calling
macro calling macro- etc:9[ It ma. *e possi*le tat stac21intensive
applications in deepl. nested macros could cause asteris2 to cras earlier
tan tis limit: It is advised tat if .ou need to deepl. nest macro calls-
tat .ou use te Mosu* application 8no! allo!s arguments li2e a =acro9 !it
e#plict /eturn89 calls instead:
EA/,I,M<<<: Fse of te application 'Eait7#ten' !itin a macro !ill not
function as e#pected: 0lease use te '/ead' application in order to read D?=J
02C
from a cannel currentl. e#ecuting a macro:
$S.nta#'
=acro8name$-arg($-arg)$-:::'''9
$Arguments'
name
?e name of te macro
)l comando seria:
&acroOnombreDdeDlaDmacro/ argumento0/argumento:/argumento+P
$rgumento+ es un valor o una variable que se pasa a la macro al momento de llamarla desde el plan de
llamadas1
'e aplicacin macro crea las siguientes variables de canal:
^_&$!;LD)>E)+` contendr4 el numero marcado
^_&$!;LD!L+E)>E` contendr4 el contexto de donde se ha llamado la &acro
^_&$!;LD8;IL;IES` contendr4 la prioridad de la lnea de donde se ha llamado la &acro
^_$;*0`/ ^_$;*:`/ ^_$;*+P son las variables que contienen los argumentos que se han
enviado a la &acro1
8ara empeNar a utiliNar la aplicacin &acro se crear4 una muy sencilla que antes de marcar una
extensin controle su estado y/ en base a este/ enve la llamada a una determinada parte del dialplan1
8rimero hay que salir de la consola y modificar el plan de llamadas:
!LI" I"it
nano ;etc;asterisk;e0tensions.conf
$l final del archivo se aaden estas lneas:
B1acro'dis2oni=7eC
e<ten G s313Set/estadoRS+,L.C,"S%A%,/S.P8RS-ACR)",K%,NT6T6
e<ten G s3n3Gotoi:/RB!RSestadoT! !N)%".N#S,!CY56
e<ten G s3n39usy
e<ten G s3n3Hangu2
e<ten G s3n3-acro,<it
,na explicacin de las aplicaciones y funciones nuevas que aparecen en las lineas de la &acro:
La funcin )*V(C*6!TAT*: controla si una extensin est4 disponible y retorna un valor que se
asignar4 a la variable QestadoR1 Los posibles valores son:
02@
,+<+LM+ I )l canal es valido pero su estado no es conocido
+LEDI+,') = +o se est4 usando
I+,') = )l canal est4 en uso
B,'S = )l canal est4 ocupado
I+9$LI. = )l canal es invalido
,+$9$IL$BL) = )l canal no est4 disponible Ono est4 registrado a $steris%P
;I+*I+* = )l canal est4 timbrando
;I+*I+*,') = )l canal est4 timbrando in uso
L+6LL. = )l canal est4 en espera
La aplicacin 1otoif: literalmente es: ve a la prioridad indicada si se presenta una determinada
condicin OverdaderoP/ de otra manera ve a otra prioridad indicada OfalsoP1 'i la segunda prioridad no se
especifica/ el dialplan continua con la prioridad que sigue1
La aplicacin 7"s.: si la extensin no se encuentra libre se enva al llamante una seal de ocupado
La aplicacin Macro*0it: sale de la macro y vuelve al mismo contexto/ extensin/ prioridad a 0 de
donde se llam1
8ara insertar la &acro en el dialplan creado/ se modifica el bloque configurado para las llamadas entre
extensiones1
e<ten G "100B0'2C313+ia7/S.P8RS,K%,NT3@06
sa1e G n3Hangu2
8ara que quede:
e0ten EW 6100U0+2V>1>Macro@%isponib#eD
sa5e EW n>)ia#@!(-;\]*XT*^>BCD
sa5e EW n>Kang"p
'e guardan los cambios y se actualiNa el plan de llamadas:
asterisk +rvvvvvvvvvvvvvvv
!LI" %ia#p#an re#oa%
$hora se marca desde la extensin 0GGG la extensin 0GG0 Oambas conectadas a $steirs%P y se controla
lo que aparece en la consola de $steris%:
7#ecuting $(@@(Be#ternas:(' =acro8VSI0/(@@@1@@@@@@((V- Vdisponi*leV9 in ne! stac2
7#ecuting $sBmacro1disponi*le:(' Set8VSI0/(@@@1@@@@@@((V- Vestado5N)%".N#S,V9 in ne! stac2
7#ecuting $sBmacro1disponi*le:)' MotoIf8VSI0/(@@@1@@@@@@((V- V(?3V9 in ne! stac2
Moto 8macro1disponi*le-s-39
7#ecuting $sBmacro1disponi*le:3' =acro7#it8VSI0/(@@@1@@@@@@((V- VV9 in ne! stac2
02?
7#ecuting $(@@(Be#ternas:)' Dial8VSI0/(@@@1@@@@@@((V- VSI0/(@@(-"3V9 in ne! stac2
'e cierra el 2!> 'oftphone Oextensin 0GG0P y se marca otra veN desde la extensin 0GGG la extensin
0GG0:
7#ecuting $(@@(Be#ternas:(' =acro8VSI0/(@@@1@@@@@@(AV- Vdisponi*leV9 in ne! stac2
7#ecuting $sBmacro1disponi*le:(' Set8VSI0/(@@@1@@@@@@(AV- Vestado5#NALA.LA9L,V9 in ne! stac2
7#ecuting $sBmacro1disponi*le:)' MotoIf8VSI0/(@@@1@@@@@@(AV- V@?3V9 in ne! stac2
7#ecuting $sBmacro1disponi*le:A' Ius.8VSI0/(@@@1@@@@@@(AV- VV9 in ne! stac2
!omo el estado de la extensin 0GG0 es Q,+$9$IL$BL)R Oen negritaP se procesa la prioridad 2 Oel
BusyP y se termina la llamada1
A.6 La ap#icaci$n A"t/enticate
$l momento de crear las extensiones en el archivo sip1conf/ a la extensin 0GG: se ha asociado el
contexto #oca#es1 )se contexto no tiene acceso al contexto internacio/ pues la extensin 0GG: no puede
efectuar llamadas salientes utiliNando el proveedor 'I8 Kustvoip1 )ste es un caso tpico en la
configuracin de $steris%1 $lgunas extensiones tienen acceso a la lineas salientes y otras no1 Ltra
forma de configurar $steris% es que las extensiones que no tienen acceso a las lineas salientes/ para
tenerlo/ tengan que autenticarse1 .e esta forma hay un control sobre la llamadas salientes y se puede
tener un registro de los usuarios que han utiliNado el servicio1
)ste tipo de configuracin se har4 utiliNando la aplicacin $uthenticate1
8ara conocer la sintaxis de la aplicacin:
asterisk ,rvvvvvvvvvvvvvv
!LI" core s/ow app#ication a"t/enticate
$S.nta#'
Autenticate8pass!ord$-options$-ma#digits$-prompt'''9
$Arguments'
pass!ord
0ass!ord te user sould 2no!
options
a: Set te cannels' account code to te pass!ord tat is entered
d: Interpret te given pat as data*ase 2e.- not a literal file
m: Interpret te given pat as a file !ic contains a list of account
codes and pass!ord ases delimited !it ':'- listed one per line in te
file: Een one of te pass!ords is matced- te cannel !ill ave its
account code set to te corresponding account code in te file:
r: /emove te data*ase 2e. upon successful entr. 8valid !it 'd'
onl.9
02F
ma#digits
ma#imum accepta*le num*er of digits: Stops reading after ma#digits
ave *een entered 8!itout requiring te user to press te '\' 2e.9:
Defaults to @ 1 no limit 1 !ait for te user press te '\' 2e.:
prompt
%verride te agent1pass prompt file:
La opcin pass3ord puede contener un valor o referirse a un archivo de texto que contenga una lista de
nombres con las respectivas contraseas separada por el car4cter Q:R1 Las contraseas se pueden
escribir en claro o cifradas con &.C1 )n este caso se cifrar4n1 'i el 8I+ para la extensin 0GG:
O&enganoP es AAFF/ su valor cifrado ser4:
ec/o +n ZBB==Z [ 5%Cs"5
cAF0BdG@bGcaF0Gd2FCG@AC2cfaaeBdF
Luego se crea el archivo de texto con el nombre del usuario de la extensin y la respectiva contrasea
cifrada:
nano ;t5p;pin.t0t
se aade la siguiente linea:
-engano;c>(1*d0E=0ca(10d@(50E>5@c:aae*d(
'e guardan los cambios1
$hora se crea un nuevo contexto al cual tenga acceso la extensin 0GG:1 'e llamar4 este contexto
QautenR
nano ;etc;asterisk;e0tensions.conf
despu5s del contexto internas se aade el siguiente bloque:
Ua"tenV
e0ten EW 600.>1>o8-
sa5e EW n>A"t/enticate@;t5p;pin.t0t>a5>BD
sa5e EW n>)ia#@!(-;2"stvoip;\]*XT*^D
sa5e EW n>Kang"p
Los par4metros utiliNados en la aplicacin A"t/enticate:
)l primero define la carpeta y el nombre del archivo que contiene las contraseas1
La Lpcin a define que en el registro de las llamadas el campo $ccountcode contendr4 el
nombre del usuario independientemente de la extensin que haya utiliNado para efectuar la
llamada
02B
La opcin 5 define que el archivo de texto contendr4 las contraseas cifradas con &.C1
)l ultimo par4metro indica que los dgitos del 8I+ son A evitando de tener que utiliNar la tecla
numero para terminar el envo de los dgitos1
'i la contrasea digitada est4 en el archivo de texto creado/ el dialplan pasar4 a la lnea que sigue donde
se iniciar4 la llamada1
)n el contexto locales se aade el contexto auten para que la extensin 0GG: tenga acceso al bloque
reci5n creado Oen negrita los cambiosP:
WlocalesX
include =" internas
inc#"%e EW a"ten
'e guardan los cambios y se recarga el dialplan:
asterisk +rvvvvvvvvvv
!LI" %ia#p#an re#oa%
.esde la extensin 0GG: se marca el numero GGC?0AG02A2A1 !uando $steris% lo pide/ se ingresar4 la
contrasea AAFF1 )mpeNar4 la llamada al numero marcado1
'e sale de la consola de $steris%:
!LI" I"it
8ara averiguar que efectivamente la llamada ha sido cargada a la cuenta del usuario &engano se entra
en el cliente &y'(L:
5.sI# +" root +psesa5o
'e selecciona la base de datos asteris%cdr Odonde se ha creado la tabal !.;P:
mysql" "se asteriskc%r
y se hace una consulta en la tabal !.; Oque contiene todos los registros de las llamadasP:
mysql" se#ect src>%st>c/anne#>bi##sec>acco"ntco%e fro5 c%r w/ere acco"ntco%eEOMenganoOM
)l resultado ser4:
Z111111Z11111111111111Z1111111111111111111Z111111111Z1111111111111Z
P src P dst P cannel P *illsec P accountcode
Z111111Z11111111111111Z1111111111111111111Z111111111Z1111111111111Z
P (@@) P @@3H("@(A"A" P SI0/(@@)1@@@@@@(" P (3 P =engano
0AG
Z111111Z11111111111111Z1111111111111111111Z111111111Z1111111111111Z
( ro! in set 8@:@@ sec9
'e sale del cliente &y'(L:
mysql" I"it
0A0
CA-(T9L8 V(((
(V3
I9; es la sigla de Interactive 9oice ;esponse/ que se traduce del ingl5s como ;espuesta de 9oN
Interactiva1 !onsiste en un central telefnica Oen este caso $steris%P que es capaN de recibir una llamada
e interactuar con el usuario a trav5s de grabaciones de voN y el reconocimiento de respuestas a trav5s
del uso de las teclas del tel5fono1 $lgunos e#emplos: el menH que se escucha cuando se llama un centro
de atencin al clienteT los bancos que permiten hacer consultas o pagos a trav5s de un menH vocal1 )n
el lengua#e t5cnico habra que diferenciar dos tipos de sistemas:
)l I9; permite hacer consulta a base de datos/ devolver los resultados y/ en general/ interactuar
de forma activa con el sistema
la contestadora autom4tica permite navegar entre menHs vocales permitiendo elegir entre
distintas opeciones hasta llegar a la informacin que se est4 buscando
)n este modulo se presentar4 la configuracin de una contestadora autom4tica1 )n el modulo dedicado
a funcDodbc se ilustrar4 como interactuar con base de datos1
=.1 1rabaci$n %e #as #oc"ciones
)n $steris% con la aplicacin ;ecord se pueden grabar archivos audios para luego utiliNarlos en la
creacin de un I9;1 8ara implementarla hay que modificar el dialplan1
nano ;etc;asterisk;e0tensions.conf
)n el contexto internas se pone el siguiente bloque:
e<ten G "EEKK313Answer/6
sa1e G n3Vait/26
sa1e G n3Record/8t1282ro12tRS,K%,N;2T;wav6
sa1e G n3Vait/26
sa1e G n3P7ay=acD/8t1282ro12tRS,K%,N;2T6
sa1e G n3Vait/26
sa1e G n3Hangu2/6
Lnea 0: contesta la llamada
Lnea :: espera : segundos
Lnea 2: *raba el archivo audio en la carpeta /tmp con nombre prompt>> donde >> son los
Hltimos dos dgitos de la extensin que se ha marcado desde el 'oftphone1 )#emplo: 'i se llama
la extensin @@CG el archivo audio tendr4 el nombre promptCG13a3
Lnea A: espera : segundos
Lnea C: devuelve el archivo reci5n grabado
Lnea @: espera : segundos
Lnea ?: cuelga la llamada
'i la grabacin no es satisfactoria/ se vuelve a grabar marcando el mismo numero1 La nueva grabacin
remplaNar4 la vie#a1
(M-83TAT*& para ter5inar #a grabaci$n /a. I"e presionar #a tec#a n"5ero `
'e actualiNa el dialplan:
asterisk +rvvvvvvvvvvvvvvvv
!LI" %ia#p#an re#oa%
!LI" I"it
)sta solucin permite grabar hasta BB archivos audio1 8ara el e#emplo a seguir hay que grabar tres
archivos de audio que contienen las siguientes frases:
promptG013av = Qfor english press one/ para espaol marque dosR
promptG:13av = Qpara efectuar un test de eco marque 0/ para escuchar la mHsica en espera
marque :/ para la oficina de ventas marque 2R
promptG213av = Qfor echo test press 0/ for music on hold press :/ for sales office/ press 2R
.esde la extensin 0GGG se marca @@G0 y se graba la primera fraseT luego @@G: y se graba la segundaT
se termina con @@G2 y se graba la tercera1 ,na veN terminadas las grabaciones se crea un nueva carpeta:
5k%ir ;var;#ib;asterisk;so"n%s;c"sto5
y se mueven los tres archivos OpromptG013av promptG:13av y promptG213avP a la carpeta creada
c% ;t5p
5v pro5ptN ;var;#ib;asterisk;so"n%s;c"sto5
)l formato audio de las locuciones es Mav1 $ veces es Htil y aconse#able crear las mismas locuciones en
otros formatos audio para que $steris% no tenga que decodificar y codificar las locuciones a otro
formato audio segHn codec configurado en el tel5fono I8 o softphone de quien est4 llamando1 )ste
proceso se llama transcoding y utiliNa bastantes recursos del servidor1 8ara crear las locuciones en otros
formatos audio hay un comando disponible en la consola de $steris%:
asterisk +rvvvvvvvvvvvvvvvv
$steris% de manera predefinida busca las locuciones en la carpeta /var/lib/asteris%/sounds1 !omo han
sido copiadas en la carpeta custom/ el comando ser4:
!LI" fi#e convert c"sto5;pro5pt01.wav c"sto5;pro5pt01."#aw
0AA
.e esta forma se convierte la locucin al formato audio ula3
!LI" fi#e convert c"sto5;pro5pt01.wav c"sto5;pro5pt01.a#aw
para el formato ala31
8ara conocer la sinopsis del comando record:
!LI" core s/ow app#ication recor%
!LI" I"it
8ara ver los archivos que se han convertidos:
#s +# ;var;#ib;asterisk;so"n%s;c"sto5
+rw+r++r++ 1 root root B=GA= %ic 10 0J&C6 pro5pt01.a#aw
+rw+r++r++ 1 root root B=GA= %ic 10 0J&C6 pro5pt01."#aw
=.2 Config"raci$n n"5ero geogrfico
!uando se adquiere un numero geogr4fico/ la empresa que lo vende/ facilita siempre el rango de I8 de
donde ella enva los I+9IE) para las llamadas entrantes1 )sta lista de I8 hay que incluirla en el
sip1conf sino las llamadas no ser4n autenticadas pues ser4n rechaNadas1
Ltra cosa que el proveedor permite/ es configurar el Q&appingR/ es decir definir que direccin 'I8 o
numero de tel5fono hay que llamar cuando entre una llamada al numero geogr4fico1 )sto normalmente
se hace desde el panel de control que cada cliente tiene a disposicin1 8ara una idea de como funciona y
de como se configuran los nHmeros geogr4ficos/ puede visitar la pagina de la empresa 9oNEo9oice1
)l el caso que adquieran un numero geogr4fico/ al momento de configurarlo/ pondr4n en QIngresar
+ombre .ominio o .ireccin I8 Q la direccin I8 del servidor y en Q,suario o )xtensinR la letra s1
!on ese numero ya se puede hacer una primera prueba1 .esde la extensin 0GGG se marca el numero1
La sintaxis es GG a cdigo pas a numero geogr4fico1 )l resultado en la consola de $steris% ser4:
,%?IC7$H3HH': can+sip:c:)@H@( andle+request+invite: Sending fa2e aut re4ection for device
VCC)@@(C@AHV Usip:CC)@@(C@AHB"C:(D:)@D:HCN[tag5as"d*d(D*6
$steris% no puede autenticar el I+9IE) en entrada
8ara solucionar el problema hay que aadir en el sip1conf de $steris% todas las direcciones I8 de donde
puede llegar una llamada1 )stas direcciones est4n configuradas en un archivo que se descargar4:
c% ;etc;asterisk
0AC
wget /ttp&;;www.voztovoice.org;t5p;%i%voztovoice
$hora se incluye el archivo didvoNtovoice en el sip1conf aprovechando el comando include:
nano sip.conf
al final del archivo se aade:
`inc#"%e %i%voztovoice
)l comando einclude toma un archivo de texto y lo engloba en la configuracin1 'e guardan los
cambios/ se entra en la consola de $steris% y se recarga la configuracin 'I8:
asterisk +rvvvvvvvvvvvvvvvvvv
!LI" sip re#oa%
'egunda prueba: se marca nuevamente el numero se mira que pasa en la consola de $steris%:
,%?IC7$H3HH': can+sip:c:)@H63 andle+request+invite: Call from '"C:(D:)@D:H6' to e#tension 's'
re4ected *ecause e#tension not found in conte#t 'from1voWtovoice'
Sa la llamada no viene rechaNada sino que no se puede enviar a ninguna parte del dialplan porque no
$steris% no encuentra el contexto from=did331 &4s adelante se crear4 ese contexto
=.G Creaci$n %e# (V3
!on la locuciones grabadas y el numero geogr4fico configurado/ ya se puede configurar el I9;1 8ara
hacerlo se crea un nuevo archivo que luego se incluir4 en el dialplan1
nano ;etc;asterisk;(V3
se copian los tres bloques que siguen:
B.LRC
e<ten G s313Vait/16
e<ten G s323Set/CHANN,L/7anguage6es6
e<ten G s3@3Set/%.-,)#%/digit646
e<ten G s3>3Set/%.-,)#%/res2onse6106
e<ten G s3539acDGround/custo182ro12t016
e<ten G s3E3Vait,<ten/6
e<ten G 1313goto/.LR13s316
e<ten G 2313goto/.LR23s316
e<ten G i313P7ay=acD/inva7id6
e<ten G i323Goto/.LR3s326
e<ten G i3@3Hangu2
0A@
e<ten G t313goto/.LR3s326
e<ten G h313Hangu2
B.LR1C
e<ten G s313Set/%.-,)#%/digit646
e<ten G s323Set/%.-,)#%/res2onse6106
e<ten G s3@3Set/CHANN,L/7anguage6en6
e<ten G s3>39acDGround/custo182ro12t0@6
e<ten G s353Vait,<ten/6
e<ten G 1313P7ay=acD/de1o'echotest6
e<ten G 1323,cho/6
e<ten G 2313-usic)nHo7d
e<ten G @313P7ay=acD/27s'wait'connect'ca776
e<ten G @323Goto/internas3100316
e<ten G i313P7ay=acD/inva7id6
e<ten G i323Goto/.LR13s316
e<ten G i3@3hangu2
e<ten G t313goto/.LR13s316
e<ten G h313Hangu2
B.LR2C
e<ten G s313Set/%.-,)#%/digit646
e<ten G s323Set/%.-,)#%/res2onse6106
e<ten G s3@3Set/CHANN,L/7anguage6es6
e<ten G s3>39acDGround/custo182ro12t026
e<ten G s353Vait,<ten/6
e<ten G 1313P7ay=acD/de1o'echotest6
e<ten G 1323,cho/6
e<ten G 2313-usic)nHo7d
e<ten G @313P7ay=acD/27s'wait'connect'ca776
e<ten G @323Goto/internas3100316
e<ten G i313P7ay=acD/inva7id6
e<ten G i323Goto/.LR23s316
e<ten G i3@3hangu2
e<ten G t313goto/.LR23s316
e<ten G h313Hangu2
'e guardan los cambios1 ,na explicacin de las nueva funciones y aplicaciones que aparecen en el
I9;:
MaitO0P I )spera un segundo
'etO!6$++)LOlanguageP=esP I 'e pone como idioma predefinido para las locuciones el
espaol
'etOEI&)L,EOdigitP=?P I numero de segundos m4ximo O?P entre el primer dgito y los
siguientes
'etOEI&)L,EOresponseP=0GP I numero de segundos que el sistema esperar4 para que el
0A?
llamante presione una tecla del tel5fono1
Bac%*roundOcustom/promptG0P I presenta la locucin promptG0 y al mismo tiempo se pone a
la escucha de los dgitos que pueda presionar el llamante1
Mait)xtenOP = )spera que el llamante presione una tecla
0/0/gotoOI9;0/s/0P I si el llamante presiona 0 va OgotoP al contexto I9;0/ extensin s/ prioridad
0
:/0/gotoOI9;:/s/0P I si el llamante presiona :/ va OgotoP al contexto I9;:/ extensin s/
prioridad 0
i/0/8laybac%OinvalidP I si la tecla presionada no es valida Oni 0 ni :P comunica el error
i/:/*otoOI9;/s/:P I y devuelve el llamante al contexto I9;/ extensin s/ prioridad : Opresenta
nuevamente el menH inicialP
t/0/gotoOI9;/s/:P I si dentro de 0G segundos OEI&)L,EOresponsePP/ el llamante no presiona
ninguna tecla/ vuelve a presentar el menH inicial
h/0/6angup I si el llamante cuelga/ se e#ecuta la extensin h
La extensin i se utiliNa para capturar dentro del dialplan/ dgitos errados1
La extensin t se utiliNa cuando la funcin EI&)L,E est4 presente en el dialplan
La extensin / se utiliNa para aadir nuevas lineas de dialplan cuando se cuelga la llamada
)l segundo bloque del I9; es bastante parecido y enva el llamante a la extensin que haya digitado1
La parte interesante es que si se digita el numero tres/ la llamada se enviar4 al contexto internas/
extensin 0GG/ prioridad 0
!omo esa extensin todava no existe/ hay que crearla:
nano ;etc;asterisk;e0tensions.conf
en el contexto internas se aade el siguiente bloque:
e<ten G 100313Noo2
sa1e G n3+ia7/S.P81000ZS.P81001ZS.P810023@06
sa1e G n3Hangu2
Lo que se har4 es marcar a las extensiones 0GGG/ 0GG0 y 0GG: simult4neamente hasta que una de las
tres conteste la llamada1 )ste tipo de configuracin se llama ;ing *roup1
8ara que todas las llamadas externas sean atendidas por el I9;/ antes del contexto internas/ se aade
este bloque:
B:ro1'didvoPtovoiceC
e<ten G s313Answer
sa1e G n3Goto/.LR3s326
sa1e G n3Hangu2
from=didvoNtovoice es el contexto donde llegar4n las llamadas al numero geogr4ficos Oconfigurado
para cada troncal I8 presente en el archivo didvoNtovoiceP1
0AF
8ara probar el I9; en local se aaden estas lineas en el contexto internas:
e<ten G 45313Answer
sa1e G n3Vait/16
sa1e G n3Goto/.LR3s316
y para incluir el archivo I9; al dialplan/ al final del archivo se aade esta linea
#inc7ude .LR
'e guardan los cambios y desde la consola de $steris%:
asterisk +rvvvvvvvvvvvvvv
!LI" %ia#p#an re#oa%
$hora desde la extensin 0GGG/ se marca el numero geogr4fico1 Eerminada la prueba se marca la
extensin ?C para probar el I9; desde local1
$l momento de crear un I9;/ las posibilidades son pr4cticamente infinitas1 )#emplos:
un I9; que gestione colas de espera diferenciadas por departamento Oventas/ compras/
asistencia t5cnica/ etc1P
un I9; que permita marcar directamente una extensin o/ en el caso que no se marque ninguna/
enve la llamada a una operadora1
0AB
CA-(T9L8 (X
4"nciona#i%a%es avanza%as %e Asterisk , feat"res.conf
)l archivo features1conf es donde se configuran las funcionalidades avanNadas de $steris% que luego se
pueden utiliNar a lo largo de una llamada11 )stas son:
8arqueo de las llamadas
Eransferencia ciega y asistida
!aptura de las llamadas O8ic%upP
*rabacin de las llamadas
J.1 feat"res.conf
$ seguir la tabla con los par4metros del archivo y la descripcin1 )n negrita la opcin que se utiliNar4
para cada par4metro1 $l final de este modulo/ la configuracin completa del archivo1
-ar5etro )escripci$n
WgeneralX Inicia la parte general del archivo
par%ext =" A00 = numero de extensin donde transferir una llamada para
parquearla
par%pos =" A01+A0J = numero de extensiones reservadas para parquear las
llamadas
par%inghints no E las prioridades 6int para monitorear el estado de las
extensiones dedicadas al parqueo hay que configurarlas
manualmente en el dialplan1 !on yes se crean de forma autom4tica
par%ingtime =" +umero de segundos que quedar4 parqueada una llamadas1 8asado
ese tiempo la llamada se transfiere a la extensin definida en el
prximo par4metro1 9alor BC
comebac%toorigin .es = la llamada parqueada se transfiere a la extensin que la
parque1 !on no se enva al contexto par%edcallstimeout/ extensin
s/ prioridad 01 )n ese caso hay que crear ese contexto en el dialplan
courtesytone Locucin que se enviar4 al canal parqueado cuando alguien lo llama
o cuando se activa/desactiva la grabacin de la llamada 9alor beep
par%edplay .efine a quien hay que enviar el courtesytone1 8uede ser:
par%ed Ocanal parqueadoP
caller Oquien llama un canal parqueadoP
bot/ OambosP
par%edcalltransfers $ctiva o desactiva la secuencia de tonos para transferir la llamada
cuando es una llamada parqueada1 8uede ser:
callee OllamadoP
ca##er OllamanteP
-ar5etro )escripci$n
both OambosP
no Ono permitidoP
par%edcallrepar%ing $ctiva o desactiva la secuencia de tonos para parquear la llamada
cuando es una llamada parqueada1 8uede ser:
callee OllamadoP
ca##er OllamanteP
both OambosP
no Ono permitidoP
par%edcallhangup $ctiva o desactiva la secuencia de tonos para terminar una llamada
cuando es una llamada parqueada1 8uede ser:
callee OllamadoP
ca##er OllamanteP
both OambosP
no Ono permitidoP
par%edcallrecording $ctiva o desactiva la secuencia de tonos para grabar una llamada
cuando es una llamada parqueada1 8uede ser:
callee OllamadoP
ca##er OllamanteP
both OambosP
no Ono permitidoP
par%edmusicclass La clase de mHsica en espera que escuchar4 el canal que ha sido
parqueado1 9alor %efa"#t
transferdigittimeout =" +umero de segundos de espera entre los dgitos cuando se est4
transfiriendo una llamada1 9alor C
xfersound La locucin que avisar4 que la transferencia de llamada asistida ha
tenido 5xito1 9alor beep
xferfailsound La locucin que avisar4 que la transferencia de llamada asistida no
ha tenido 5xito1 9alor beeperr
pic%upexten 'ecuencia de tonos para capturar la llamada de una extensin que
est4 timbrando1 .epende la la configuracin de los par4metros
callgroup y pic%upgroup de cada extensin1 9alor N=
pic%upsound La locucin que avisar4 que la captura de llamada ha tenido 5xito1
9alor beep
pic%upfailsound La locucin que avisar4 que la captura de llamada no ha tenido
5xito1 9alor beeperr
featuredigittimeout Eiempo m4ximo de espera entre dgitos para activar las
funcionalidades definidas m4s adelante Oen milisegundosP 9alor
2000
atxfernoans3ertimeout Eiempo m4ximo disponible para contestar una transferencia asistida
0C:
-ar5etro )escripci$n
Oen segundosP1 9alor 1C
atxferdropcall 'i quien transfiere una llamada con el m5todo QasistidoR cuelga
antes que la llamada sea transferida completamente/ $steris%
devuelve la llamada a quien la estaba transfiriendo1 'i est4 en yes la
llamada no se devuelve y se considera terminada1 9alor no
atxferloopdelay +umero de segundos de espera antes de intentar nuevamente
devolver la llamada Osi atxferdropcall = noP1 9alor 10
atxfercallbac%retries +umero de veces que se intentar4 devolver una llamada transferida
a quien la transfiri sin 5xito1 9alor 2
TWpar%inglotDempresa:X 'e puede crear m4s de un bloque de extensiones para parquear las
llamadas1 ,n e#emplo es si quiere diferenciar las llamadas
parqueadas por el departamento de ventas/ de las llamadas
parqueadas por el departamento de compras1 La etiqueta define el
nuevo bloque y los tres par4metros que siguen el contexto/ el
numero de las extensiones reservadas y como se van utiliNando las
extensiones1 'e de#an las cuatro lineas comentadas1
Tcontext =" empresa:
Tpar%pos =" FG0=F0G
Tfindslot =" next
WfeaturemapX $ partir de esta etiqueta empieNa la configuracin de las
funcionalidades
blindxfer =" ` = tecla para activar la transferencia ciega
disconnect =" N0 = secuencia de dgitos para terminar una llamada
automon =" N1 = secuencia de dgitos para iniciar la grabacin de la llamada Oen
dos archivos audio/ uno para cada canalP
atxfer =" N2 = secuencia de dgitos para activar la transferencia asistida
par%call =" NA = secuencia de dgitos para parquear una llamada Ose puede usar
esta secuencia o e?GGP
automixmon =" NG = secuencia de dgitos para iniciar la grabacin de una llamada
Oen un Hnico archivo audio donde se meNclar4n los dos canales
audioP
WapplicationmapX $ partir de esta etiqueta se pueden configurar funcionalidades
personaliNadas1 La sintaxis es: ]-eature+ame" ="
].E&-Dsequence"/]$ctivateLn"W/]$ctivatedBy"X/]$pplication"
W/]$pp$rguments"W/&L6D!lassXX
-eature+ame: )l nombre de la funcionalidadT
.E&-Dsequence: la secuencia de dgitos para activar la
funcionalidadT
$ctivateLn: aqu se define para quien activar la
0C2
-ar5etro )escripci$n
funcionalidad1 Los valores son self y peer1 !on self la
funcionalidad se activa para quien la activa/ con peer para el
otro canalT
$ctivatedBy: )ste par4metro define quien tiene acceso a la
funcionalidad1 Las opciones son: caller OllamanteP/ callee
OllamadoP/ both OambosPT
$pplication: La aplicacin que se va a e#ecutarT
$pp$rguments: Las opciones asociadas a la aplicacinT
&L6D!lass: la clase de mHsica en espera que escuchar4 el
canal libre mientras se e#ecuta la funcionalidad en el otro
canal1
test0 =" NJ>peer>-#a.back>tt+5onke.s>%efa"#t = .igitando la secuencia fB
desde un canal/ el otro escuchar4 la locucin tt=mon%eys mientras el
canal que activ la funcionalidad/ escuchar4 la mHsica en espera
$ntes de crear el archivo una pequea explicacin de la diferencia entre transferencia ciega y
transferencia asistida:
blinxfer: $ lo largo de una conversacin se quiere transferir la llamada a otra extensin1 6ay
que presionar la tecla e y luego el numero de la extensin1 La llamada ser4 transferida y el el
canal de quien la transfiri ser4 colgado
atxfer: $ lo largo de una conversacin se quiere transferir la llamada a otra extensin1 'e
presiona la secuencia f: y luego el numero de la extensin donde se quiere transferir la
llamada1 'e escuchar4 timbrar la extensin y una veN que el interlocutor conteste/ se podr4
hablar con 5l Opor e#emplo para anunciar la llamada que se va a transferirP1 'olamente cuando se
colgar4 la llamada ser4 efectivamente transferida1
$hora se crea el archivo de configuracin features1conf1 'e renombra el predefinido:
5v ;etc;asterisk;feat"res.conf ;etc;asterisk;feat"res.conf.o#%
se crea uno nuevo
nano ;etc;asterisk;feat"res.conf
y se copian las lineas que siguen:
Bgenera7C
2arDe<t G 400
2arD2os G 401'40*
2arDinghintsno
2arDingti1e G >5
co1e=acDtooriginyes
courtesytone=ee2
0CA
2arDed27ay=oht
2arDedca77trans:ersca77er
2arDedca77re2arDingca77er
2arDedca77hangu2ca77er
2arDedca77recordingca77er
2arDed1usicc7assde:au7t
trans:erdigitti1eout G 5
<:ersound=ee2
<:er:ai7sound=ee2err
2icDu2e<tenU(
2icDu2sound=ee2
2icDu2:ai7sound=ee2err
:eaturedigitti1eout2000
at<:ernoanswerti1eout15
at<:erdro2ca77no
at<:er7oo2de7ay10
at<:erca77=acDretries2
AB2arDing7ot"e12resa2C
Aconte<t G e12resa2
A2arD2os G (01'(10
A:inds7ot G ne<t
B:eature1a2C
=7ind<:er G #
disconnect G U0
auto1on G U1
at<:er G U2
2arDca77 G U4
auto1i<1on G U@
Ba227ication1a2C
test1 G U*32eer3P7ay=acD3tt'1onDeys3de:au7t
'e guardan los cambios1 8ara volver disponibles estas funcionalidades hay que modificar el plan de
llamadas1 'e va a recoger la configuracin del archivo as como se de# en el modulo anterior1 )n
negrita aparecen las modificaciones:
nano ;etc;asterisk;e0tensions.conf
WgeneralX
static=yes
3riteprotect=yse
autofallthrough=yse
extenpatternmatchne3=yse
clearglobalvars=no
0CC
WglobalsX
0GGG='I8/0GGG
K,'E='I8/#ustvoip
mar%o=I$>:/mar%o
)PAM(C64*AT93*!Etest1`b#in%0fer`a"to5on`%isconnect`at0fer`parkca##`a"to5i05on
Wfrom=didvoNtovoiceX
exten =" s/0/$ns3er
same =" n/*otoOI9;/s/:P
same =" n/6angup
Wfrom=spa20G:X
exten =" s/0/+oLp
same =" n/.ialO'I8/0GGGP
same =" n/6angup
WinternasX
exten =" CG/0/'etO8B>=^_)+9OL$+*P`P
same =" n/+oopOIdioma 'ervidor ^_8B>`P
same =" n/6angup
exten =" ?C/0/$ns3er
same =" n/MaitO0P
same =" n/*otoOI9;/s/:P
exten =" 0GG/0/+oop
same =" n/.ialO'I8/0GGGU'I8/0GG0U'I8/0GG:/2GP
same =" n/6angup
exten =" 0:2/0/$ns3er
same =" n/.umpchan
same =" n/8laybac%Ohello=3orldP
same =" n/6angup
exten =" 0CG/0/$ns3er
same =" n/8laybac%Odemo=echotestP
same =" n/)cho
same =" n/8laybac%Odemo=echodoneP
same =" n/6angup
exten =" :GG/0/$ns3er
same =" n/KabbersendOcampus1voNtovoice/voNtovoicenet[gmail1com/)stamos escuchando &82P
same =" n/&usicLn6oldOmp2/@GP
same =" n/6angup
exten =" D0GGWG=:X/0/&acroOdisponibleP
same =" n/.ialO'I8/^_)>E)+`/ACP
0C@
same =" n/6angup
exten =" 0:2A/0/.ialOI$>:/mar%o/2GP
same =" n/6angup
exten =" D@@>>/0/$ns3erOP
same =" n/MaitO:P
same =" n/;ecordO/tmp/prompt^_)>E)+::`:3avP
same =" n/MaitO:P
same =" n/8laybac%O/tmp/prompt^_)>E)+::`P
same =" n/MaitO:P
same =" n/6angupOP
exten =" DWa=NX1/0/.ialOgtal%/campus1voNtovoice/^_)>E)+`/2GP
same =" n/6angup
exten =" 0GGGG/0/.ialOgtal%/campus1voNtovoice/fulano[gmail1com/2G/rP
exten =" 0GGGG/n/!ongestionO2P
exten =" DF1/0/.ialO'I8/spa20G:/AC/.O^_)>E)+:0`PP
same =" n/BusyO2P
same =" n/6angup
exten =" DBW0:AC@?FBX>>>>>>>Y/0/.ialO.$6.I/;0/^_)>E)+:0`/ACP
same =" n/6angup

WautenX
exten =" DGG1/0/+oL8
same =" n/$uthenticateO/tmp/pin1txt/am/AP
same =" n/.ialO'I8/#ustvoip/^_)>E)+`P
same =" n/6angup
WsubscribeX
exten =" 0GGG/hint/'I8/0GGG
exten =" 0GG0/hint/'I8/0GG0
exten =" 0GG:/hint/'I8/0GG:
exten =" mar%o/hint/I$>:/mar%o
e0ten EW A01>/int>park&A01'parke%ca##s
e0ten EW A02>/int>park&A02'parke%ca##s
e0ten EW A0G>/int>park&A0G'parke%ca##s
e0ten EW A0B>/int>park&A0B'parke%ca##s
e0ten EW A0C>/int>park&A0C'parke%ca##s
e0ten EW A06>/int>park&A06'parke%ca##s
e0ten EW A0A>/int>park&A0A'parke%ca##s
e0ten EW A0=>/int>park&A0='parke%ca##s
e0ten EW A0J>/int>park&A0J'parke%ca##s
0C?
WinternacioX
exten =" DGG1/0/.ialO'I8/#ustvoip/^_)>E)+`/2GP
same =" n/6angup
Wgoogle=inX
exten =" s/0/+oLpO !all from *tal% P
same =" n/.ialO'I8/0GGG/2GP
same =" n/6angupOP
Wfrom=pstnX
exten =" s/0/.ialO'I8/0GGG/ACP
exten =" s/n/6angup
WexternasX
include =" internas
include =" internacio
inc#"%e EW parke%ca##s
WlocalesX
include =" internas
include =" auten
inc#"%e EW parke%ca##s
Wmacro=disponibleX
exten =" s/0/'etOestado=^_.)9I!)D'E$E)O'I8/^_&$!;LD)>E)+`P`P
exten =" s/n/*otoifO^W\^_estado`\ = \+LEDI+,')\XcCP
exten =" s/n/Busy
exten =" s/n/6angup
exten =" s/n/&acro)xit
einclude I9;
8ara que las funcionalidades configuradas en features1conf sean activas hay que definir la variable
.S+$&I!D-)$,E,;)' y aadirle todas las funcionalidades que se han configurado1 .espu5s de la
etiqueta WsubscribeX se han aadido nueve lneas para poder controlar el estado de las extensiones
utiliNadas para parquear las llamadas1 .e esta forma siempre se podr4 saber cuantas llamadas est4n
parqueadas Oen los tel5fonos I8 soft3are y hard3are que soportan esta funcionalidadP1
8ara terminar en las etiquetas WexternasX y WlocalesX se ha aadido el contexto par%edcalls1 Eodas las
extensiones que tengan acceso al contexto externas/ adem4s de tener acceso al contexto internas y
internacio/ tendr4n acceso al contexto par%edcalls es decir podr4n llamar una extensin parqueada1 Lo
mismo para las extensiones que tienen acceso al contexto WlocalesX1
6ay tres aplicaciones relacionadas con el parqueo de llamadas que se pueden utiliNar en el dialplan:
8ar%
0CF
8ar%$nd$nnounce
8ar%ed!all
'e guardan los cambios y se reinicia $steris%:
;etc;init.%;asterisk restart
.esde la consola de $steris% podemos ver las funcionalidades activadas1
asterisk +rvvvvvvvvvvvv
!LI" feat"res s/ow
Builtin -eature .efault !urrent
=============== ======= =======
8ic%up fF fF
Blind Eransfer e e
$ttended Eransfer f:
Lne Eouch &onitor f0
.isconnect !all f fG
8ar% !all f?
Lne Eouch &ix&onitor f2
.ynamic -eature .efault !urrent
=============== ======= =======
test0 no def fB
-eature *roups:
===============
OnoneP
!all par%ing O8ar%ing lot: defaultP
============
8ar%ing extension : ?GG
8ar%ing context : par%edcalls
8ar%ed call extensions: ?G0=?GB
J.2 Ca##gro"p . -ick"pgro"p
)n todas las extensiones 'I8 configuradas se han definido los siguientes par4metros:
ca77grou21
2icDu2grou21
b(u5 significac
0CB
'ignifica que todas las extensiones pertenecen al grupo de llamadas 0 y pueden capturar las llamadas
del grupo de llamadas 01 La secuencia de dgitos para capturar una llamada se acaba de configurar el el
archivo features1conf y es fF1 8ara probar la funcionalidad desde la extensin 0GG: se llama la
extensin 0GG01 !uando 5sta est5 timbrando/ en el softphone conectado como extensin 0GGG se digita
fF1
!omo se dice aqu en !olombia1 !hevereYYYY
,na configuracin un poco m4s comple#a podra ser:
)xtensiones ventas:
0GGG = 0GG0 = 0GG:
)xtensiones soporte:
:GGG = :GG0 = :GG:
)xtensiones compras:
2GGG = 2GG0 = 2GG:
)xtensin oficina direccin:
AGGG
)l escenario es que cada traba#ador de cada departamento pueda capturar las llamadas de los tel5fonos
del departamento en que traba#a y que desde la oficina de direccin se pueda capturar las llamadas de
cualquier extensin de cualquier departamento1 8ara que esto sea posible/ en la configuracin de cada
extensin se pone:
W0GGGX
callgroup=0
pic%upgroup=0
W0GG0X
callgroup=0
pic%upgroup=0
W0GG:X
callgroup=0
pic%upgroup=0
W:GGGX
callgroup=:
pic%upgroup=:
0@G
W:GG0X
callgroup=:
pic%upgroup=:
W:GG:X
callgroup=:
pic%upgroup=:
W2GGGX
callgroup=2
pic%upgroup=2
W2GG0X
callgroup=2
pic%upgroup=2
W2GGGX
callgroup=2
pic%upgroup=2
WAGGGX
callgroup=A
pic%upgroup=0/:/2
La extensin AGGG/ con el par4metro pic%upgroup configurado con 0/:/2 podr4 capturar las llamadas de
las extensiones que perteneces a uno de esos grupos/ es decir:
grupo 0 I 0GGG/0GG0/0GG:
grupo : I :GGG/:GG01:GG:
grupo 2 I 2GGG/2GG0/2GG:
J.G Ap#icaci$n )ia# . feat"res.conf
)n este p4rrafo se ilustrar4 como integrar en el dialplan las funcionalidades configuradas en el archivo
features1conf utiliNando la aplicacin .ial1
La sintaxis de la aplicacin .ial:
Dial8?ecnolog./resource$S?ec)/resource):::'$-timeout'$-options'$-F/L'9:
.ial: el nombre de la aplicacin que nos permite efectuar una llamada
Eechnology: el protocolo o la tecnologa usada para efectuar la llamada Oe#: 'I8/ I$>:P
resource: el recurso utiliNado para hacer la llamada o el numero de extensin a llamar
0@0
timeout: define los segundos dentro de los cuales la llamada tiene que ser contestada
options: son las opciones que podemos aadir a la aplicacin
,;L: para enviar una direccin Meb a la extensin llamada Osi el tel5fono soporta la
funcionalidaP
$lgunos e#emplos:
e<ten G 1000313+ia7/S.P810003>56
e<ten G 1000323Hangu2
'i se marca la extensin 0GGG $steris% llamar4 dicha extensin usando el protocolo 'I8/ esperar4 2G
segundos1 'i la extensin 0GGG no contesta dentro de los treinta segundos/ $steris% procesar4 la lnea
siguiente del dialplan/ es decir terminar4 la llamada1
e<ten G 0054@001000000313+ia7/S.P8Justvoi280054@0010000003>56
e<ten G 0054@001000000323Hangu2
)n este caso si desde un 'oft8hone o I8 8hone conectados a la centralita se marca el numero
GGC?2GG0GGGGG/ $steris% llamar4 dicho numero usando un proveedor 9oI8 Oen este caso especifico
KustvoipP1 )sperar4 una respuesta por AC segundos y si nadie contesta terminar4 la llamada1 !omo
tecnologa se ha indicado 'I8 porque #ustvoip usa solo este tipo de protocolo1 )n el caso de
proveedores que utilicen el protocolo I$>: sera:
e<ten G 0054@001000000313+ia7/.AK28Justvoi280054@0010000003>56
e<ten G 0054@001000000323Hangu2
8ara configurar las funcionalidades definidas en el archivo features1conf se tendr4 que utiliNar unas
opciones de la aplicacin .ial1
e0ten EW 100X>1>)ia#@!(-;\]*XT*^>BC>/KD
Las opciones presentes en la linea presentada son dos:
h: permite al llamado colgar la llamada usando la tecla fG
6: permite al llamante colgar la llamada usando la tecla fG
e<ten G 100K313+ia7/S.P8RS,K%,NT3>53DM6
%: permite al llamado parquear la llamada presionando la secuencia de dgitos definida en
features1conf
<: permite al llamante parquear la llamada presionando la secuencia de dgitos definida en
features1conf
e<ten G 100K313+ia7/S.P8RS,K%,NT3>53t%6
t: permite al llamado transferir la llamada presionando la secuencia de dgitos definida en
0@:
features1conf
E: permite al llamante transferir la llamada presionando la secuencia de dgitos definida en
features1conf
e<ten G 100K313+ia7/S.P8RS,K%,NT3>53wV6
3: permite al llamado empeNar la grabacin de la llamada presionando la secuencia de dgitos
definida en features1conf1 $steris%/ en este caso/ crear4 dos archivos audio/ uno por cada
interlocutor
M: permite al llamante empeNar la grabacin de la llamada presionando la secuencia de dgitos
definida en features1conf1 $steris%/ en este caso/ crear4 dos archivos audio/ uno por cada
interlocutor1
e<ten G 100K313+ia7/S.P8RS,K%,NT3>53<K6
x: permite al llamado empeNar la grabacin de la llamada presionando la secuencia de dgitos
definida en features1conf1 La diferencia con las opciones 3 y M es que en este caso los dos
canales Ollamante y llamadoP se grabaran en un Hnico archivo audio
>: permite al llamante empeNar la grabacin de la llamada presionando la secuencia de dgitos
definida en features1conf1 La diferencia con las opciones 3 y M es que en este caso los dos
canales Ollamante y llamadoP se grabaran en un Hnico archivo audio
'i se quiere/ por e#emplo/ activar todas estas opciones a la veN/ la aplicacin .ial aparecer4 de esta
forma:
e<ten G "100K313+ia7/S.P8 RS,K%,NT3>53hHDMt%wV<K6
$ seguir se presentar4n algunos registros como aparecen en la consola de $steris% al activar o
desactivar las funcionalidades descritas1
8ara terminar se modifica el dialplan para incluir estas funcionaliades en las llamadas entre
extensiones1 Oen negrita los cambiosP:
nano ;etc;asterisk;e0tensions.conf
exten =" D0GGWG=:X/0/&acroOdisponibleP
same =" n/.ialO'I8/^_)>E)+`/AC//Kk?tTwT0XP
same =" n/6angup
'e actualiNa el dialplan:
asterisk +rvvvvvvvvvvvvv
!LI" %ia#p#an re#oa%
)n el >=Lite se aaden todas las extensiones reservadas para el parqueo de las llamadas1 )l resultado
0@2
debe ser:
$hora desde la extensin 0GG0 se marca la extensin 0GG: y cuando esta conteste se parquea la llamada
Ocon la secuencia de dgitos f? o e?GGP1
)l resultado ser4:
La extensin 0GG: esta parqueada en la extensin ?G01 .esde el >=Lite/ presionando el botn derecho
del ratn sobre la linea de la extensin ?G0 se podr4 llamar la extensin parqueada es decir la extensin
0GG:1
0@A
Ltra prueba que se puede hacer es grabar la llamada utiliNando la secuencia de dgitos f2 para tener un
solo archivo audio de toda la conversacin1
.esde la extensin 0GG0 se marca nuevamente a las 0GG: y cuando esta conteste/ se activa la grabacin
de la llamada digitando f21 )n la consola de $steris% aparecer4:
== ]'I8/0GG0=GGGGGGGB" 8laying gbeep1ula3g Olanguage gesgP
== ,ser hit gf2g to record call1 filename: auto=020FA@G:0G=0GG0=0GG:
== 7egin Mi0Monitor 3ecor%ing 'I8/0GG:=GGGGGGGa
== ]'I8/0GG0=GGGGGGGB" 8laying gbeep1ula3g Olanguage gesgP
== ,ser hit gf2g to stop recording call1
== &ix&onitor close filestream
== *n% Mi0Monitor 3ecor%ing 'I8/0GG:=GGGGGGGa
.igitando nuevamente la secuencia f2 terminar4 la grabacin de la llamada1 'e sale de la consola de
$steris%:
!LI" I"it
'e averigua que se haya creado el archivo:
#s +# ;var;spoo#;asterisk;5onitor;
1r!1r11r11 ( root root )AADC" %ct () (H:3H auto1(A(6"C@)(@1(@@(1(@@):!av
0@C
CA-(T9L8 X
Asterisk 3ea#ti5e
$;$ OEhe $steris% ;ealtime $rchitectureP es un m5todo para almacenar los archivos de configuracin
de $steris% y/o ob#etos en una base de datos1 )xisten dos tipos de ;ealtime:
)st4tico
.in4mico
10.1 3ea#ti5e esttico
!on el ;ealtime est4tico es posible guardar los archivos de configuracin de $steris% en una base de
datos1 'e dice est4tico porque cuando se hagan cambios en la base de datos/ hay que recargar la
configuracin de $steris%1 'i las configuraciones se guardan en la base de datos/ ya no se podr4n
utiliNar los archivos de texto/ es decir que si por e#emplo/ guardo la configuracin del dialplan en
;ealtime est4tico/ la 8B> no leer4 el archivo extensions1conf1 )l archivo donde se configura el
;ealtime est4tico es extconfig1conf y la sintaxis es:
file:conf 5N driver-data*ase$-ta*le'
file1conf: archivo de configuracin que se quiere guardar en la base de datos
driver: que motor de base de datos se va a utiliNar O&y'(L/ L.B!/ 8ostgres/ '(Lite2P
databse: en nombre de la base de datos
table: la tabla en la base de datos
Los Hnicos archivos de configuracin que no se pueden guardar con el ;ealtime est4tico son:
asteris%1conf
logger1conf
extconfig1conf
Ltros tres archivos se pueden guardar en la base de datos solamente si el modulo del motor que se va a
utiliNar se carga en el modules1conf antes de los dem4s mdulos1 )sto se hace con la declaracin
preload1 !omo se va a utiliNar L.B! para el ;ealtime/ la modifica que hay que hacer es:
nano ;etc;asterisk;5o%"#es.conf
se buscan estas dos lineas:
A2re7oad G res"od=c$so
A2re7oad G res"con:ig"od=c$so
y se modifican para que queden:
2re7oad G res"od=c$so
2re7oad G res"con:ig"od=c$so
Los dos mdulos Oque se utiliNan para el ;ealtime con L.B!P/ se cargar4n antes de los dem4s mdulos
y de esta formas se podr4n guardar en ;ealtime tambi5n estos archivos:
manager1conf
cdr1conf
rtp1conf
b!ual es el procedimiento para configurar el ;ealtime est4tico en $steris% con L.B!c
01 'e crea una nueva base de datos
:1 'e crea la tabla para el ;ealtime est4tico
21 'e configurar el conector L.B!
A1 'e configura el archivo de configuracin de $steris% resDodbc1conf
C1 'e configura el archivo extconfig1conf
9isto gr4ficamente sera:
'e inicia creado una nueva base de datos:
5.sI# +" root +psesa5o
mysql" create %atabase asteriskM
'e otorgan los permisos de acceso a la base de datos creada al usuario asteris%/ desde local:
0@F
mysql" 13AT ALL -3(V(L*1*! 8 asterisk.N T8 OasteriskO'O#oca#/ostO ()*T(4(*)
7P Osesa5oOM
desde remoto:
mysql" 13AT ALL -3(V(L*1*! 8 asterisk.N T8 OasteriskO'OQO ()*T(4(*) 7P
Osesa5oOM
se crea la tabla para el ;ealtime est4tico:
mysql" "se asterisk
mysql" C3*AT* TA7L* aast6configa @
ai%a int@11D 8T 9LL a"to6incre5ent>
acat65etrica int@11D 8T 9LL %efa"#t O0O>
avar65etrica int@11D 8T 9LL %efa"#t O0O>
afi#ena5ea varc/ar@12=D 8T 9LL %efa"#t OO>
acategor.a varc/ar@12=D 8T 9LL %efa"#t O%efa"#tO>
avar6na5ea varc/ar@12=D 8T 9LL %efa"#t OO>
avar6va#a varc/ar@12=D 8T 9LL %efa"#t OO>
aco55ente%a int@11D 8T 9LL %efa"#t O0O>
-3(MA3P ?*P @ai%aD>
?*P afi#ena5e6co55enta @afi#ena5ea>aco55ente%aD
DM
,na explicacin de los par4metros que aparecen en la tabla:
I. I es un numero progresivo que se crea autom4ticamente
catDmetric I el peso de la categora o bloque dentro del archivo1 ,n valor ba#o significa que la
categora aparecer4 m4s arriba en el archivo de configuracin
varDmetric I el peso de un ob#eto o par4metro dentro de la categora1 ,n valor ba#o significa
que el ob#eto aparecer4 m4s arriba en la categora
filename I el nombre del archivo de configuracin de $steris%
category I la categora o bloque del archivo de configuracin
varDname I el nombre del ob#eto o del par4metro que se est4 configurando
varDval I el valor del ob#eto o par4metro
commented I si es cualquier valor diferente a cero/ el campo ser4 comentado1
8ara entender me#or como funciona/ se guardar4 el archivo musiconhold1conf en ;ealtime est4tico1
mysql" (!*3T (T8 ast6config @cat65etric>var65etric>fi#ena5e>categor.>var6na5e>var6va#D
VAL9*! @O0O>O0O>O5"sicon/o#%.confO>O%efa"#tO>O5o%eO>Ofi#esODM
!on esta primera linea se crea la clase default y se define que el modo es files1
0@B
mysql" (!*3T (T8 ast6config @cat65etric>var65etric>fi#ena5e>categor.>var6na5e>var6va#D
VAL9*! @O0O>O1O>O5"sicon/o#%.confO>O%efa"#tO>O%irector.O>O;var;#ib;asterisk;5o/ODM
!on esta segunda linea se define que la carpeta que contiene los archivos audio para la clase default es
/var/lib/asteris%/moh
5.sI#W (!*3T (T8 ast6config @cat65etric>var65etric>fi#ena5e>categor.>var6na5e>var6va#D
VAL9*! @O0O>O2O>O5"sicon/o#%.confO>O%efa"#tO>Oran%o5O>O.esODM
)n la ultima linea se define que los archivos audio de la mHsica de espera de la clase default se
reproducir4n aleatoriamente1 'e repiten las tres lineas para la mHsica de espera &82 Ocomo se haba
configurado en la cuarta parte del modulo IP:
mysql" (!*3T (T8 ast6config @cat65etric>var65etric>fi#ena5e>categor.>var6na5e>var6va#D
VAL9*! @O1O>O0O>O5"sicon/o#%.confO>O5pGO>O5o%eO>Ofi#esODM
!omo se puede notar en esta primera linea el catDmetric es 0 e indica que estamos creando un segundo
bloque en el archivo de configuracin1
mysql" (!*3T (T8 ast6config @cat65etric>var65etric>fi#ena5e>categor.>var6na5e>var6va#D
VAL9*! @O1O>O1O>O5"sicon/o#%.confO>O5pGO>O%irector.O>O;var;#ib;asterisk;5o/5pGODM
!on esta segunda linea se define que la carpeta que contiene los archivos audio para la clase mp2 es
/var/lib/asteris%/mohmp2
mysql" (!*3T (T8 ast6config @cat65etric>var65etric>fi#ena5e>categor.>var6na5e>var6va#D
VAL9*! @O1O>O2O>O5"sicon/o#%.confO>O5pGO>Oran%o5O>O.esODM
'e sale del cliente &y'(L:
mysql" I"it
!reada la base de datos y la tabla/ se configura el conector L.B!1 )sto se hace en dos archivos de
configuracin:
odbcinst1ini
odbc1ini
)n el primero se configuran las conexiones L.B! d libreras base de datos1 )n el segundo se
configuran las base de datos1 8ara iniciar se borra el archivo predefinido odbcinst1ini
r5 ;etc;o%bcinst.ini
se crea uno nuevo:
nano ;etc;o%bcinst.ini
0?G
y para L.B! d &y'(L se ponen las siguientes lineas:
B-yS[LC
+escri2tion )+9C 2ara -yS[L
+river 8usr87i=87i=1yod=c@$so
Setu2 8usr87i=87i=od=c1yS$so
&i7e#sage 1
'e continua con odbc1ini
nano ;etc;o%bc.ini
se copian las siguientes lineas que crean una conexin a la base de datos &y'(L asteris%:
BasterisDC
+escri2tion -yS[L AsterisD
+river -yS[L
+ata=ase asterisD
Server 7oca7host
#ser asterisD
Password sesa1o
Port @@0E
)2tion @
'e guardan los cambios1 8ara probar la conexin entre L.B! y la base de datos asteris% se usa el
comando:
isI# asterisk asterisk sesa5o
asteris% I etiqueta que da inicio al bloque configurado en odbc1ini
asteris% I nombre del usuario que tiene acceso a la base de datos creada
sesamo I la contrasea1
)l resultado:
Z111111111111111111111111111111111111111Z
P Connected< P
P P
P sql1statement P
P elp $ta*lename' P
P quit P
P P
Z111111111111111111111111111111111111111Z
La conexin entre L.B! y la base de datos &y'(L asteris% funciona perfectamente1 8ara salir:
0?0
'(L" I"it
)l siguiente paso es configurar resDodbc1conf1 'e renombra el archivo predefinido y se crea uno nuevo:
5v ;etc;asterisk;res6o%bc.conf ;etc;asterisk;res6o%bc.conf.o#%
nano ;etc;asterisk;res6o%bc.conf
'e copian las siguientes lineas:
B,NLC
BasterisDC
ena=7ed G yes
dsn G asterisD
userna1e G asterisD
2assword G sesa1o
2re'connect G yes
sanitys?7 G se7ect 1
id7echecD G @E00
connect"ti1eout G 10
La linea m4s importante es dsn =" asteris%1 )l valor asteris% es el que se ha configurado el bloque que
se acaba de crear en el archivo odbc1ini
'e guardan los cambios y se modifica el ultimo archivo:
nano ;etc;asterisk;e0tconfig.conf
despu5s de esta linea:
Ae<tensions$con: G s?7ite3asterisD3ast"con:ig
se pone:
1usiconho7d$con: G od=c3asterisD3ast"con:ig
'e guardan los cambios1 )l nombre asteris% que aparece en la linea se refiere al nombre de la etiqueta
con que inicia la configuracin de la conexin en resDodbc1conf1 *r4ficamente:
0?:
$hora que se ha configurado la mHsica de espera en ;ealtime se renombra el archivo de texto:
5v ;etc;asterisk;5"sicon/o#%.conf ;etc;asterisk;5"sicon/o#%.conf.o#%
'e reinicia $steris%:
service asterisk restart
'e entra en la consola:
asterisk +rvvvvvvvvvvvvvv
se averigua que la conexin en ;ealtime est5 activa Odesde el lado $steris%P:
!LI" o%bc s/ow a##
%DIC DS, Settings
11111111111111111
,ame: asteris2
DS,: asteris2
0ooled: ,o
Connected: ;es
se mira la configuracin de la mHsica de espera:
!LI" 5o/ s/ow c#asses
Class: default
=ode: files
Director.: /var/li*/asteris2/mo
0?2
o%bc.ini
res6o%bc.conf
e0tconfig.conf
Class: mpA
=ode: files
Director.: /var/li*/asteris2/mompA
8arece que todo est4 bien1 .esde la extensin 0GGG se marca el numero :GG para probar la mHsica de
espera &82 en ;ealtime1
10.2 3ea#ti5e )ina5ico
)l ;ealtime din4mico permite guardar ob#etos en una base de datos1 )stos ob#etos pueden ser:
extensiones/ colas de espera/ agentes/ buNones de voN/ etc1 !uando se hace un cambio en la base de
datos/ $steris% actualiNar4 la configuracin en tiempo real1 $ diferencia del ;ealtime est4tico/ los
ob#etos creados en la base de datos QconvivenR con los presentes en los archivos de configuracin1
)#emplo: puedo configurar las extensiones en el sip1conf y tambi5n en la base de datos1 $l recargar la
configuracin 'I8/ funcionar4n ambas1
10.2.1 *0tensiones !(- en 3ea#ti5e
La parte m4s complicada de la configuracin de 'I8 en ;ealtime/ es la creacin de la tabla donde
almacenar los par4metros de las extensiones 'I81 $lgunos campos de la tabla son opcionales mientras
otros son obligatorios1 ,na tabla base debe contener por lo menos estos par4metro:
type
name
secret
context
host
ipaddr
port
regseconds
defaultuser
fulcontact
regserver
useragent
lastms
8ara crear una tabla m4s completa/ se puede tomar como referencia el resultado de este comando:
!LI" sip s/ow peer 1000
O ,ame : (@@@
Secret : USetN
=D3Secret : U,ot setN
/emote Secret: U,ot setN
0?A
Conte#t : e#ternas
Su*scr:Cont: : su*scri*e
Language : es
Accountcode : (@@@
A=A flags : Fn2no!n
?ransfer mode: open
Calling0res : 0resentation Allo!ed- ,ot Screened
Callgroup : (
0ic2upgroup : (
=ail*o# : (@@@Bdefault
L= 7#tension : asteris2
Last=sgsSent : A)HCH/C33A3
Call limit : )("H"6AC"H
D.namic : ;es
Callerid : Vcallerid5JulanoV U(@@@N
=a#CallI/ : A6" 2*ps
7#pire : )D(H
Insecure : no
,at : Al!a.s
ACL : ,o
?:A6 support : ;es
?:A6 7C mode : J7C
?:A6 =a#Dtgrm: "@@
Direct=edia : ,o
0romisc/edir : ,o
Fser50one : ,o
Lideo Support: ;es
?e#t Support : ,o
Ign SD0 ver : ,o
?rust /0ID : ,o
Send /0ID : ;es
Su*scriptions: ;es
%verlap dial : ;es
Jor!ard Loop : ;es
D?=Jmode : rfc)6AA
?imer ?( : 3@@
?imer I : A)@@@
?oHost :
Addr1NI0 : (D@:)3A:(H3:(3C 0ort ))6"@
Defaddr1NI0 : @:@:@:@ 0ort 3@C@
0rim:?ransp: : FD0
Allo!ed:?rsp : FD0
Def: Fsername: (@@@
SI0 %ptions : replaces replace
Codecs : @#6@(@c 8ula!Pala!PgH)DP)CA9
Codec %rder : 8ala!:)@-ula!:)@-gH)D:)@9
Auto1Jraming : ,o
0?C
(@@ on /7M : ;es
Status : %& 8()D ms9
Fseragent :
/eg: Contact : sip:(@@@B(D@:)3A:(H3:(3C:))6"@[rinstance5A)@(fD@c@aH6*Hd@
>ualif. Jreq : C@@@@ ms
Sess1?imers : Accept
Sess1/efres : uas
Sess17#pires : (6@@ secs
=in1Sess : D@ secs
0ar2inglot :
Eodos los par4metros que aparecen en la lista/ se pueden configurar en la tabla1
!LI" I"it
8ara empeNar se crea la tabla en la base de datos asteris%:
5.sI# +" root +psesa5o
mysql" "se asterisk
mysql" CR,A%, %A9L, 0si2e<ten0 /
0na1e0 varchar/>06 N)% N#LL de:au7t 5 53
0secret0 varchar/>06 de:au7t N#LL3
01d5secret0 varchar/>06 de:au7t N#LL3
0re1otesecret0 varchar/>06 de:au7t N#LL3
0ty2e0 varchar/106 N)% N#LL de:au7t 5 53
0de:au7tuser0 varchar/>06 de:au7t N#LL3
0:ro1user0 varchar/>06 de:au7t N#LL3
0:ro1do1ain0 varchar/>06 de:au7t N#LL3
0auth0 varchar/106 de:au7t N#LL3
01ai7=o<0 varchar/206 de:au7t N#LL3
0su=scri=e1wi0 varchar/106 de:au7t N#LL3
0v1e<ten0 varchar/206 de:au7t N#LL3
0ca77erid0 varchar/>06 de:au7t N#LL3
0cid"nu1=er0 varchar/>06 de:au7t N#LL3
0ca77ing2res0 varchar/206 de:au7t N#LL3
0usere?2hone0 varchar/106 de:au7t N#LL3
07anguage0 varchar/106 de:au7t N#LL3
0conte<t0 varchar/>06 N)% N#LL de:au7t 5 53
0su=scri=econte<t0 varchar/>06 de:au7t N#LL3
0a1a:7ags0 varchar/206 de:au7t N#LL3
0accountcode0 varchar/206 de:au7t N#LL3
0a77owtrans:er0 varchar/206 de:au7t N#LL3
0ca77grou20 varchar/206 de:au7t N#LL3
02icDu2grou20 varchar/206 de:au7t N#LL3
0auto:ra1ing0 varchar/106 de:au7t N#LL3
0?@
0disa77ow0 varchar/206 de:au7t 5a7753
0a77ow0 varchar/206 de:au7t N#LL3
01a<ca77=itrate0 varchar/156 de:au7t N#LL3
0host0 varchar/>06 de:au7t 5dyna1ic53
0out=ound2ro<y0 varchar/>06 de:au7t N#LL3
0i2addr0 varchar/206 N)% N#LL de:au7t 5 53
0de:au7ti20 varchar/206 N)% N#LL de:au7t 50$0$0$053
02ort0 int/E6 N)% N#LL de:au7t 5053
0:u77contact0 varchar/E06 de:au7t N#LL3
0insecure0 varchar/206 de:au7t N#LL3
0?ua7i:y0 varchar/156 de:au7t N#LL3
0regseconds0 int/116 N)% N#LL de:au7t 5053
0rege<ten0 varchar/206 de:au7t N#LL3
0regserver0 varchar/206 de:au7t N#LL3
0rt2ti1eout0 varchar/156 de:au7t N#LL3
0rt2ho7dti1eout0 varchar/156 de:au7t N#LL3
0rt2Dee2a7ive0 varchar/156 de:au7t N#LL3
07ast1s0 int/116 N)% N#LL de:au7t 5'153
0setvar0 varchar/2006 de:au7t N#LL3
0nat0 varchar/@6 N)% N#LL3
0useragent0 varchar/>06 de:au7t N#LL3
0+irect1edia0 varchar/@6 de:au7t 5no53
0+eny0 varchar/@16 de:au7t 553
0Per1it0 varchar/@16 de:au7t N#LL3
PR.-ARY M,Y /0na1e063
M,Y 0host0 /0host0302ort063
M,Y 0i2addr0 /0i2addr0302ort06
6 ,NG.N,-y.SA-A
>uer. %&- @ ro!s affected 8@:@( sec9
'e sale del cliente &y'(L
mysql" I"it
Bye
)n este caso como la base de datos es la misma del ;ealtime est4tico/ no hay que modificar ni el
odbc1ini/ ni el resDodbc1ini1 )l Hnico archivo que hay que modificar es el extconfig1conf
nano ;etc;asterisk;e0tconfig.conf
'e modifican estas dos lineas:
Asi2users G od=c3asterisD
Asi22eers G od=c3asterisD
para que queden:
0??
si2users G od=c3asterisD3si2e<ten
si22eers G od=c3asterisD3si2e<ten
'e guardan los cambios y se actualiNa la configuracin de $steris%:
;etc;init.%;asterisk re#oa%
$hora se puede configurar la primera extensin 'I8 en ;ealtime1 8ara volver m4s sencillo el traba#o
con las bases de datos/ se pueden utiliNar distintos programas/ entre otros: 3ebmin e phpadmin1 )n este
caso se ha optado por Mebmin1 'e descarga el paquete:
c% ;"sr;src
wget /ttp&;;%own#oa%s.so"rceforge.net;pro2ect;weba%5in;web5in;1.C=0;web5in+1.C=0+1.noarc/.rp5
y se instala
rp5 +iv/ web5in+1.C=0+1.noarc/.rp5
!arning: !e*min1(:3H@1(:noarc:rpm: Header LA DSA signature: ,%&7;- 2e. ID ((fCAc3(
0reparing::: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ $(@@]'
%perating s.stem is Cent%S Linu#
(:!e*min \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ $(@@]'
Ee*min install complete: ;ou can no! login to htt2;887i@40'1@5$1e1=ers$7inode$co1;10000/
as root !it .our root pass!ord:
8ara utiliNarlo se entra en la direccin 3eb indicada en negrita Ocambiar4 en cada 98' LinodeP1 $ntes
de hacerlo hay que abrir el puerto 0GGGG en el fire3all:
nano ;etc;s.sconfig;iptab#es
.espu5s de esta linea:
'A .NP#% '2 ud2 '1 ud2 ''d2ort 10000;20000 'J ACC,P%
se pone:
# Ve=1in
'A .NP#% '2 tc2 '1 state ''state N,V '1 tc2 ''d2ort 10000 'J ACC,P%
'e guardan los cambios y se reinicia iptables:
service iptab#es restart
$hora desde un navegador Meb se pone la direccin I8 o el nombre de dominio para entrar en 3ebminT
en este caso:
htt2;887i@40'1@5$1e1=ers$7inode$co1;10000/
0?F
)n ,sername se pone root y en 8ass3ord la contrasea del usuario root de Linux1 )n la pagina que
aparece/ en la derecha se escoge el menH Q'erversR y luego Q&y'(L .atabase 'erverR:
)n Login se pone root Oel usuario &y'(LP y como contrasea sesamo:
'e selecciona la base de datos $steris% y luego la tabla 'ipexten1 $l fondo de la nueva pagina se
presiona el botn Q9ie3 .ataR y luego Q$dd ;o3R1 'e puede empeNar a crear la primera extensin en
;ealtime:
0?B
0FG
0F0
$l terminar se presiona el botn \'ave\
'i desde la consola de $steris% se escribe el comando:
asterisk +rvvvvvvvvvvvv
!LI" sip s/ow peers
la nueva extensin configurada no aparecer41 8ara ver la configuracin de la nueva extensin hay que
utiliNar el siguiente comando:
!LI" sip s/ow peer 100B #oa%
8ara la parte user:
!LI" sip s/ow "ser 100B #oa%
'e configura el >=lite para conectarse a la extensin 0GGA1 )n la consola de $steris% aparecer4:
'i se quiere ver el estado de la extensin en la consola de $steris% como si fuera configurada en el
archivo sip1conf y conocer su estado hay que modificar dos par4metros:
qualify=yes en la configuracin de la extensin
rtcachefriends=yes en la parte general del archivo sip1conf
'e recarga la configuraci sip:
!LI" sip re#oa%
y se mira si aparece:
!LI" sip sho3 peers li%e 0GGA
)n la columna ;ealtime aparece Q!ached ;ER que significa que la extensin est4 configurada en
;ealtime y que se activ el par4metro rtcachefriends1 .esde la extensin 0GGA se marca 0:2 para
probarla1
10.2.2 *0tensiones (AX en 3ea#ti5e
La configuracin de las extensiones I$> en realtime es bastante similar a la que se ha mostrado para
0F:
las extensiones 'I81 8rimero hay que crear la tabla
5.sI# +" root +psesa5o
mysql" "se asterisk
mysql" CR,A%, %A9L, 0ia<e<ten0 /
0na1e0 varchar/>06 N)% N#LL de:au7t 553
0ty2e0 varchar/106 N)% N#LL de:au7t 5:riend53
0userna1e0 varchar/>06 N#LL3
01ai7=o<0 varchar/>06 N#LL3
0secret0 varchar/>06 N#LL3
0d=secret0 varchar/>06 N#LL3
0conte<t0 varchar/>06 N#LL3
0regconte<t0 varchar/>06 N#LL3
0host0 varchar/>06 N#LL de:au7t 5dyna1ic53
0i2addr0 varchar/206 N#LL3
02ort0 int/56 N#LL3
0de:au7ti20 varchar/206 N#LL3
0sourceaddress0 varchar/206 N#LL3
01asD0 varchar/206 N#LL3
0rege<ten0 varchar/>06 N#LL3
0regseconds0 int/116 N#LL3
0accountcode0 varchar/206 N#LL3
01ohinter2ret0 varchar/206 N#LL3
01ohsuggest0 varchar/206 N#LL3
0inDeys0 varchar/>06 N#LL3
0outDey0 varchar/>06 N#LL3
07anguage0 varchar/106 N#LL3
0ca77erid0 varchar/1006 N#LL3
0cid"nu1=er0 varchar/>06 N#LL3
0sendani0 varchar/106 N#LL3
0:u77na1e0 varchar/>06 N#LL3
0trunD0 varchar/@6 N#LL3
0auth0 varchar/206 N#LL3
01a<authre?0 varchar/56 N#LL3
0re?uireca77toDen0 varchar/>6 N#LL3
0encry2tion0 varchar/206 N#LL3
0trans:er0 varchar/106 N#LL3
0Jitter=u::er0 varchar/@6 N#LL3
0:orceJitter=u::er0 varchar/@6 N#LL3
0disa77ow0 varchar/>06 N#LL3
0a77ow0 varchar/>06 N#LL3
0codec2riority0 varchar/>06 N#LL3
0?ua7i:y0 varchar/106 N#LL3
0?ua7i:ys1oothing0 varchar/106 N#LL3
0?ua7i:y:re?oD0 varchar/106 N#LL3
0F2
0?ua7i:y:re?notoD0 varchar/106 N#LL3
0ti1ePone0 varchar/206 N#LL3
0adsi0 varchar/106 N#LL3
0a1a:7ags0 varchar/206 N#LL3
0setvar0 varchar/2006 N#LL3
PR.-ARY M,Y /0na1e063
.N+,K na1e /na1e3 host63
.N+,K na1e2 /na1e3 i2addr3 2ort63
.N+,K i2addr /i2addr3 2ort63
.N+,K host /host3 2ort6
6A
mysql" ?uit
Luego se modifica el archivo extconfig1conf:
nano ;etc;asterisk;e0tconfig.conf
se cambian estas dos lineas:
Mia0"sers EW o%bc>asterisk
Mia0peers EW o%bc>asterisk
para que queden:
ia0"sers EW o%bc>asterisk>ia0e0ten
ia0peers EW o%bc>asterisk>ia0e0ten
se guarda la configuracin y se crea una extensin I$> en ;ealtime desde Mebmin entrando en la tabla
iaxexten:
0FA
0FC
$l terminar se presiona el botn Q'aveR1 !omo para el protocolo 'I8 se cambia el par4metro
rtcachefriends en el iax1conf:
nano ;etc;asterisk;ia0.conf
rtcac/efrien%sEno
para que quede:
rtcac/efrien%sE.es
'e guarda la configuracin y se actualiNa $steris%:
service asterisk re#oa%
)n el cliente Joiper se configura el usuario mar%o: y se mira en la consola de $steris% si est4
registrado:
asterisk +rvvvvvvvvvvvvvv
!LI" ia02 s/ow peers
8ara terminar hay que modificar el dialplan para que se pueda marcar a la extensiones creadas en
;ealtime:
!LI" I"it
nano ;etc;asterisk;e0tensions.conf
0F@
'e modifica este bloque:
e<ten G "100B0'2C313-acro/dis2oni=7e6
sa1e G n3+ia7/S.P8RS,K%,NT3>53hHDMt%wV<K6
sa1e G n3Hangu2
para que quede:
e<ten G "100B0'23>C313-acro/dis2oni=7e6
sa1e G n3+ia7/S.P8RS,K%,NT3>53hHDMt%wV<K6
sa1e G n3Hangu2
siempre en el contexto internas se pone:
e<ten G 12@5313+ia7/.AK281arDo23@06
sa1e G n3Hangu2
para terminar en el contexto subscribe se aade:
e<ten G 100>3hint3S.P8100>
e<ten G 1arDo23hint3.AK281arDo2
'e guarda los cambios y se recarga el dialplan:
asterisk +r0 Z%ia#p#an re#oa%Z
10.2.G )ia#p#an en 3ea#ti5e %in5ico
)ntre los ob#etos que se pueden guardar en ;ealtime din4mico/ est4 el dialplan1 'e pueden guardar en
una base de datos/ contextos/ extensiones y prioridades1 .e esta forma se pueden crear distintos
dialplan para distintos servidores $steris% conectados en ;ealtime a la base de datos1 )sta puede ser
una optima solucin cuando se quieren compartir pedaNos de dialplan entre distintos servidores
$steris% o cuando se quiere tener el motor de la base de datos en otro servidor1
8ara iniciar se crea la tabla para guardar el dialplan en la base de datos:
5.sI# +" root +psesa5o
mysql" "se asterisk
mysql" CR,A%, %A9L, 0dia727an0 /
0id0 int/116 N)% N#LL auto"incre1ent3
0conte<t0 varchar/206 N)% N#LL de:au7t 553
0e<ten0 varchar/206 N)% N#LL de:au7t 553
02riority0 tinyint/>6 N)% N#LL de:au7t 5053
0F?
0a220 varchar/206 N)% N#LL de:au7t 553
0a22data0 varchar/12(6 N)% N#LL de:au7t 553
PR.-ARY M,Y /0conte<t030e<ten0302riority063
M,Y 0id0 /0id06
6 %YP,-y.SA-A
ahora se crea una extensin muy sencilla en la tabla:
mysql" (!*3T (T8 %ia#p#an @conte0t>e0ten>priorit.>app>app%ataD VAL9*!
@OtestO>OA0O>O1O>OAnswerO>O0ODM
mysql" (!*3T (T8 %ia#p#an @conte0t>e0ten>priorit.>app>app%ataD VAL9*!
@OtestO>OA0O>O2O>O-#a.backO>O%e5o+congratsODM
mysql" (!*3T (T8 %ia#p#an @conte0t>e0ten>priorit.>app>app%ataD VAL9*!
@OtestO>OA0O>OGO>OKang"pO>O0ODM
el resultado ser4:
mysql" se#ect N fro5 %ia#p#anM
'e sale del cliente &y'(L y se modifica el archivo extconfig1conf:
mysql" I"it
nano ;etc;asterisk;e0tconfig.conf
'e busca esta linea:
Ae<tensions G od=c3asterisD
y se modifica para que quede:
e<tensions G od=c3asterisD3dia727an
'e guardan los cambios y se pasa al dialplan
nano ;etc;asterisk;e0tensions.conf
0FF
$ntes del contexto internas se aade este bloque:
BtestC
switch G Rea7ti1e
y se aade las lineas en negrita en los dos bloques que siguen:
WexternasX
include =" internas
include =" internacio
include =" par%edcalls
inc#"%e EW test
WlocalesX
include =" internas
include =" auten
include =" par%edcalls
inc#"%e EW test
.e esta forma las extensiones que tengan acceso al contexto externas o locales/ tendr4n acceso tambi5n
al contexto test1 'e guardan los cambios y se reinicia $steris%:
service asterisk restart
Desde la e#tensi^n (@@@ se marca el numero H@ . se prue*a el nuevo conte#to creado en /ealtime:
0FB
CA-(T9L8 X(
(V3 avanza%os , f"nc6o%bc.conf
La funcin funcDodbc permite hacer consultas en base de datos directamente desde el dialplan1 $l
mismo tiempo es posible actualiNar o modificar campos especficos de la base de datos1 )l archivo que
se utiliNa para este tipo de configuracin es el funcDodbc1conf1 )n este modulo/ se ilustrar4n dos
diferentes escenarios:
Buscar el nombre de un empleado en base a su numero de matricula
*uardar los resultados de una encuesta telefnica en una base de datos
11.1 *5p#ea%os
La tabla de los empleados contendr4 solamente dos campos:
01 numero de matricula
:1 nombre
'e crea la tabla en la base de datos $steris%:
5.sI# +" root +psesa5o
mysql" "se asterisk
mysql" CR,A%, %A9L, 0e127eados0 /
0id0 int/116 N)% N#LL auto"incre1ent3
0no1=re0 varchar/206 N)% N#LL3
01atricu7a0 int/>6 N)% N#LL3
PR.-ARY M,Y /0no1=re063
M,Y 0id0 /0id06
6 %YP,-y.SA-A
'e aaden a la tablas cuatro empleados:
mysql" (!*3T (T8 e5p#ea%os @no5bre>5atric"#aD VAL9*! @Of"#anoO>O12GBOD>
@Oz"tanoO>O12GCOD>@O5enganoO>O12G6OD>@OperenganoO>O12GAODM
el resultado:
mysql" se#ect N fro5 e5p#ea%osM
'e sale de la consola de &y'(L:
mysql" I"it
$hora se crea el archivo funcDodbc1conf1 8rimero se renombra el predefinido:
5v ;etc;asterisk;f"nc6o%bc.conf ;etc;asterisk;f"nc6o%bc.conf.o#%
se crea el nuevo
nano ;etc;asterisk;f"nc6o%bc.conf
y se copian las siguientes lineas:
B,127eadosC
dsnasterisD
reads?7S,L,C% no1=re &R)- e127eados VH,R, 1atricu7a5RSS[L",SC/RSARG1T6T5
WempleadosX I )l nombre de la funcin que se est4 creando
dsn I el nombre de la etiqueta definida al inicio del bloque configurado en el archivo odbc1ini
para la base de datos asteris%
readsql=')L)!E nombre -;L& empleados M6);) matricula=g^_'(LD)'!O^_$;*0`P`g I
la sentencia '(L para hacer consultas en la base de datos asteris% Oen este caso la tabla
empleadosP
8ara interactuar con el usuario cuando llame para consultar la base de datos/ se utiliNar4 un sistema de
EE' Otext to 'peechP/ en este caso -estival1 )n $steris% ya hay un modulo dedicado a la conexin con
un servidor -estival1 Lo Hnico que hace falta es configurarlo1 8rimero se averigua si le modulo est4
compilado y funcionando:
asterisk +rvvvvvvvvvvvvvvv
!LI" 5o%"#e "n#oa% app6festiva#.so
!LI" 5o%"#e #oa% app6festiva#.so
55 0arsing '/etc/asteris2/festival:conf': 55 Jound
55 /egistered application 'Jestival'
Loaded app+festival:so 5N 8Simple Jestival Interface9
0B:
!LI" I"it
-estival viene con el idioma predefinido ingl5s1 8ara configurarlo para el espaol se siguen estos pasos:
c% ;"sr;s/are;festiva#;voices
wget /ttp&;;www.voztovoice.org;t5p;festiva#+spanis/.zip
"nzip festiva#+spanis/.zip
$hora se modifica el archivo de configuracin de festival
nano ;"sr;s/are;festiva#;festiva#.sc5
se aaden estas lneas antes de la ultima linea del archivo
A/7anguage""s2anish6
/setF voice"de:au7t 5voice"e7"di2hone6
/de:ine /tts"te<tasterisD string 1ode6
!/tts"te<tasterisD S%R.NG -)+,6
A227y tts to S%R.NG$ %his :unction is s2eci:ica77y designed :or
use in server 1ode so a sing7e :unction ca77 1ay synthesiPe the string$
%his :unction na1e 1ay =e added to the server sa:e :unctions$!
/7et //who7eutt /utt$synth /eva7 /7ist 5#tterance 5%e<t string66666
/utt$wave$resa127e who7eutt (0006
/utt$wave$resca7e who7eutt 56
/utt$send$wave$c7ient who7eutt666
'e guardan los cambios y se modifica el archivo de configuracin de festival en $steris%:
5v ;etc;asterisk;festiva#.conf ;etc;asterisk;festiva#.conf.o#%
nano ;etc;asterisk;festiva#.conf
estas son la lneas que hay que aadir:
Bgenera7C
host7oca7host
2ort1@1>
:estiva7co11and/tts"te<tasterisD !\s! 5:i7e6/?uit6]n
'e guardan las modificaciones1 'e actualiNa la configuracin de $steris%:
;etc;init.%;asterisk re#oa%
8ara arrancar el servidor -estival en autom4tico:
0B2
nano ;etc;rc.#oca#
al final del archivo se aade esta linea:
;"sr;bin;festiva#6server W ;%ev;n"## b
'e inicia el servidor festivalT
;"sr;bin;festiva#6server W ;%ev;n"## b
'e controla que est5 corriendo:
ps a"0 [ grep festiva#
root )"@H( @:@ @:) "C@@ (@DC pts/( S (A:AC @:@@ /*in/s /usr/*in/festival+server
root )"@HH @:" A:C )A"C" (DA)" pts/( S (A:AC @:@@ festival 11server :/festival+server:scm
root )"@6( @:@ @:( "@)6 C66 pts/( SZ (A:AC @:@@ grep festival
'e modifica el .ialplan para crear una extensin que permita hacer una prueba del servidor -estival:
nano ;etc;asterisk;e0tensions.conf
en el contexto internas se pone:
e0ten EW 6C0>1>Answer@D
sa5e EW n>4estiva#@Asterisk . 4estiva# traba2an 2"nto. C/evereRRRD
sa5e EW n>Kang"p@D
'e actualiNa el dialplan desde la consola
asterisk +rvvvvvvvvvvvvvvvvv
!LI" %ia#p#an re#oa%
.esde la extensin 0GGG se marca la extensin @CG para escuchar la frase que se acaba de configurar en
el dialplan1
!LI" I"it
Eerminada la configuracin y la prueba de -estival se construye el dialplan para hacer consultas a la
tabla empleados:
nano ;etc;asterisk;e0tensions.conf
en el contexto internas se pone:
e<ten G EE0313Answer
0BA
sa1e G n3Vait/26
sa1e G n3&estiva7/Por :avor ingrese 7os > digitos de 7a 1atricu7a de7 e127eado$6
sa1e G n3Read/,-PN#-3=ee23>6
sa1e G n3Set/,-PNA-,RS)+9C",127eados/RS,-PN#-T6T6
sa1e G n3Goto.:/RBRS,K.S%S/RS,-PNA-,T6TCYno1=re6
sa1e G n3&estiva7/Ningun e127eado encontrado$ Hasta 7uego$6
sa1e G n3Hangu2
sa1e G n/no1=re63&estiva7/,7 no1=re de7 e127eado es RS,-PNA-,T$ Hasta 7uego$6
sa1e G n3Hangu2
,na explicacin de las lineas:
Linea0 I se contesta la llamada
Linea: I se esperan dos segundos
Linea2 I 'e usa -estival para leer el texto y enviarlo como audio
Linea A I !on la aplicacin ;ead se espera que el llamante digite A nHmeros y se guardan en la
variable )&8+,&
Linea C I 'e hace la consulta en la tabla )mpleados como configurado en el archivo funcDodbc1
.esde la lgica de &y'(L sera: select nombre from empleados 3here matricula=g^
_)&8+,&`gT
Linea@ I 'i la consulta devuelve un valor se va a la etiqueta OnombreP/ si la consulta no
devuelve ningHn valor se continua en el dialplan Ola funcin )>I'E permite averiguar si una
determinada variable contiene un valor o est4 vacaP
Linea? I )n el caso la consulta no haya tenido 5xito/ se anuncia al llamante que no se ha
encontrado ningHn empleado que tenga ese numero de matricula
LineaF I se termina la llamada
LineaB I 'i la consulta ha tenido 5xito/ se anuncia al llamante el nombre del empleado
Linea0G I se termina la llamada
'e guardan los cambios y se recarga el dialplan:
asterisk +rvvvvvvvvvvvvvvvvvvvvvvvv
!LI" %ia#p#an re#oa%
.esde la extensin 0GGG se marca @@G y se hacen diferentes pruebas1 )n la consola:
7#ecuting $CC@Be#ternas:(' Ans!er8VSI0/(@@@1@@@@@@(@V- VV9 in ne! stac2
11 7#ecuting $CC@Be#ternas:)' Eait8VSI0/(@@@1@@@@@@(@V- V)V9 in ne! stac2
11 7#ecuting $CC@Be#ternas:A' Jestival8VSI0/(@@@1@@@@@@(@V- V0or favor ingrese los " digitos de
la matricula del empleado:V9 in ne! stac2
55 0arsing '/etc/asteris2/festival:conf': 55 Jound
11 7#ecuting $CC@Be#ternas:"' /ead8VSI0/(@@@1@@@@@@(@V- V7=0,F=-*eep-"V9 in ne! stac2
11 Accepting a ma#imum of " digits:
11 USI0/(@@@1@@@@@@(@N 0la.ing '*eep:ala!' 8language 'es'9
11 Fser entered '()A"'
0BC
11 7#ecuting $CC@Be#ternas:3' Set8VSI0/(@@@1@@@@@@(@V- V7=0,A=75fulanoV9 in ne! stac2
11 7#ecuting $CC@Be#ternas:C' MotoIf8VSI0/(@@@1@@@@@@(@V- V(?nom*reV9 in ne! stac2
11 Moto 8e#ternas-CC@-D9
11 7#ecuting $CC@Be#ternas:D' Jestival8VSI0/(@@@1@@@@@@(@V- V7l nom*re del empleado es fulano:
Hasta luego:V9 in ne! stac2
55 0arsing '/etc/asteris2/festival:conf': 55 Jound
11 7#ecuting $CC@Be#ternas:(@' Hangup8VSI0/(@@@1@@@@@@(@V- VV9 in ne! stac2
55 Spa!n e#tension 8e#ternas- CC@- (@9 e#ited non1Wero on 'SI0/(@@@1@@@@@@(@'
11.2 *nc"esta
'e quiere suministrar una encuesta a los clientes de la empresa para medir el grado de satisfaccin de
los mismos1 La encuesta est4 compuesta por A preguntas1 Las preguntas se pueden pregrabar o/ como
en este caso/ se utiliNar4 -estival1 Los pasos a seguir son:
crear la tabla para la encuesta
crear un nuevo bloque en el archivo funcDodbc1conf
crear un nuevo bloque de dialplan
'e inicia creando la tabla:
5.sI# +" root +psesa5o
mysql" "se asterisk
mysql" CR,A%, %A9L, 0encuesta0 /
0id0 =igint/206 N)% N#LL auto"incre1ent3
0:echa0 dateti1e de:au7t N#LL3
0res210 int/16 de:au7t N#LL3
0res220 int/16 de:au7t N#LL3
0res2@0 int/16 de:au7t N#LL3
0res2>0 int/16 de:au7t N#LL3
PR.-ARY M,Y /0id06
6 ,NG.N,-y.SA-A
se sale del cliente mysql:
mysql" I"it
se abre el archivo funcDodbc1conf
nano ;etc;asterisk;f"nc6o%bc.conf
al final del archivo se aade el siguiente bloque:
0B@
B,ncuestaC
dsnasterisD
writes?7insert into encuesta /&echa3res213res223res2@3res2>6 va7ues /!RSS[L",SC/RSLAL1T6T!3!R
SS[L",SC/RSLAL2T6T!3!RSS[L",SC/RSLAL@T6T!3!RSS[L",SC/RSLAL>T6T!3!RSS[L",SC/R
SLAL5T6T!6
(M-83TAT*& *# conteni%o %e #a sentencia writesI# tiene I"e estar en #a 5is5a #inea.
8ara terminar se modifica el dialplan:
nano ;etc;asterisk;e0tensions.conf
en el contexto internas se pone:
e0ten EW 6A0>1>1oto@enc"esta>s>1D
sa5e EW n>Kang"p
y despu5s del contexto internas se pone el siguiente bloque:
BencuestaC
e<ten G s313Answer
sa1e G n3Vait/26
sa1e G n3&estiva7/Pregunta uno6
sa1e G n3Read/var133133106
sa1e G n3&estiva7/Pregunta dos6
sa1e G n3Read/var233133106
sa1e G n3&estiva7/Pregunta tres6
sa1e G n3Read/var@33133106
sa1e G n3&estiva7/Pregunta cuatro6
sa1e G n3Read/var>33133106
sa1e G n3Set/)+9C",ncuesta/6RSS%R&%.-,/RS,P)CHT33\y\1\d\H\-\S6T3RSvar1T3R
Svar2T3RSvar@T3RSvar>T6
sa1e G n3P7ay=acD/thanD'you'coo2eration6
sa1e G n3Hangu2
)l bloque de dialplan es bastante comprensible1 'e presentan las cuatros preguntas1 'e guardan los
dgitos en A variables distintas y al terminar la encuesta se guardan los resultados en la tabla encuesta a
trav5s de la funcin L.B!D)ncuesta que se acaba de crear en el archivo funcDodbc1conf1
'e guardan las modificaciones y se actualiNa $steris%:
service asterisk re#oa%
.esde unas de las extensiones conectadas a $steris% se marca el @?G y se contestan las preguntas1 'e
repite la operacin 2=A veces1 8ara ver los resultados:
0B?
5.sI# +" root +psesa5o
mysql" "se asterisk
mysql" se#ect N fro5 enc"estaM
Los resultados aparecen ordenados por I. y fecha1
0BF
CA-(T9L8 X((
7"z$n %e voz , voice5ai#.conf
)n el archivo voicemail1conf es donde se configura todo lo relacionado con el buNn de voN1 'i se
recibe una llamada y no se contesta o la lnea est4 ocupada/ siempre y cuando se configure el dialplan
oportunamente/ entrar4 en funcin el buNn de voN/ grabar4 el mensa#e de voN de#ado por quien llama y
enviar4 una notificacin por correo electrnico al llamado1 $nexo al correo electrnico es posible
enviar el mensa#e de voN en distintos formatos audio1 $ trav5s de la configuracin de este archivo es
posible/ adem4s/ crear distintos grupos de buNones de voN Odistintas empresaP y configurar distintas
Nonas horarias1
12.1 voice5ai#.conf
!omo por lo dem4s archivos de configuracin/ en la tabla a seguir se indicar4n los par4metros que se
va a configurar con una breve descripcin1 )n negrita los valores de cada par4metro1 $l final de la
tabla/ la configuracin completa del archivo1
-ar5etro )escripci$n
WgeneralX Inicia la parte general
format Los formatos audio en que se guardar4 cada mensa#e de voN1
9alor wavBJ[gs5[wav
serveremail !orreo electrnico del remitente en la notificaciones de la
presencia de un nuevo mensa#e de voN1 9alor
b"zon%evoz'%o5inio1 ,n e#emplo para Linode:
buNondevoN[li2?G=02C1members1linode1com 8ersonaliNar
attach .es = se anexa al correo electrnico el archivo audio que
contiene el mensa#e de voN1
maxmsg +umero m4ximo de mensa#e de voN guardados para cada
buNn de voN1 9alor 100
maxsecs +umero m4ximo de segundos que puede durar un mensa#e de
voN1 9alor C00
minsecs +umero mnimo de segundos para que un mensa#e de voN sea
reconocido como tal y enviado al buNn de voN del
destinatario1 9alor C
maxgreet .uracin m4xima/ en segundos/ del mensa#e de bienvenida que
cada propietario de un buNn de voN puede grabar para
presentarse1 9alor 1=0
s%ipms !uando se escuchan los mensa#e de voN/ se puede usar el
teclado num5rico del tel5fono para adelantar o deviolver el
mensa#e1 'e expresa en milisegundos1 9alor G000
maxsilence 'i mientras se de#a un mensa#e en el buNn de voN hay un
-ar5etro )escripci$n
silencio mayor al numero de segundos indicados en este
par4metro/ se termina la grabacin1 9alor B Eienes que ser un
valor m4s ba#o del par4metro minsecs
silencethreshold )ste numero representa el nivel de ruido y sirve para definir
que se considera silencio1 &4s ba#o el nHmero/ m4s sensible al
ruido1 9alor 12=
maxlogins +umero m4ximo de intentos para marcar la clave asociada al
buNn de voN personal1 9alor G
moveheard .es = una veN escuchados los nuevos mensa#es de voN/ se
mueven a la carpeta LL. 8vie4os9 en autom4ticoT si se
configura en no/ hay que hacerlo desde el menH del buNn de
voN
for3ardDurgentDauto yes = cada mensa#e de voN reenviado se considerar4 urgente1
9alor no
Texternnotify=/usr/bin/myapp si se quiere utiliNar una aplicacin cada veN que llega un nuevo
mensa#e de voN/ hay que definirla en este par4metro1 'e de#a
comentado
Texternpass=/usr/bin/myapp cada veN que se cambie la contrasea de un buNn de voN/ es
posible iniciar un script externo1 'e de#a comentado
Texternpassnotify=/usr/bin/myapp !ada veN que se cambie la contrasea de un buNn de voN y se
configure el nombre de un script en este par4metro/ las
variables contexto/ mailbox y nueva contrasea se pasar4n al
scriptT si el par4metro anterior se ha configurado/ este no ser4
tomado en cuenta1
directoryintro La locucin de introduccin de la aplicacin directory1 'e
explicar4 m4s adelante1 9alor %ir+intro
charset )l est4ndar I'L para los correo electrnicos que se enviaran
para notificar la llegada de un nuevo mensa#e de voN1 9alor
(!8+==CJ+1
pbxs%ip .es = quita la sigla W8B>X en el asunto de los correos
electrnicos
fromstring +ombre del remitente del los correos electrnicos1 9alor
7"z$n %e Voz
usedirectory .es = los mensa#es de voN que se reciben se pueden reenviar a
otros usuarios/extensiones del servidor $steris%1 Eambi5n se
pueden de#ar directamente mensa#es de voN a otros buNones1
)ste par4metro permite buscar en el directorio la persona a la
que se quiere de#ar o reenviar el mensa#e de voN
Todbcstorage e pueden guardar los mensa#es de voN en un base de datos
usando el conector L.B!1 )n este par4metro se define el
:G0
-ar5etro )escripci$n
nombre de la base de datos1 9alor asterisk Ose de#a comentadoP
Todbctable )l nombre de la tabla de la base de datos donde guardar los
mensa#e de voN1 9alor: 5ensa2es Ose de#a comentadoP
emailsub#ect $sunto del correo electrnico de notificacin1 9alor1 U-7XV&
"evo 5ensa2e %e voz \]VM6M!19M^ en e# b"zon %e
voz \]VM6MA(L78X^
emailbody !ontenido del correo electrnico1 Eiene que estar todo en la
misma linea1 9alor *sti5an%o \]VM6AM*^&cncnct #e
esta5os envian%o este correo para avisar#e I"e /a recibi%o
"n n"evo 5ensa2e
%e voz %e \]VM6)93^ seg"n%os @n"5ero \
]VM6M!19M^Dcncn b"zon %e voz \]VM6MA(L78X^
%e# n"5ero \]VM6CALL*3()^> e#
\]VM6)AT*^.cncn L#a5a t" b"zon %e voz para esc"c/ar#o.
1raciasRcncnctctctct.T" 7"zon %e Vozcn o5bre e5presa
emaildateformat -ormato de la hora y fecha del correo electrnico1 9alor QA>
Q% Q7 QP at QK&QM&Q!
mailcmd comando linux para enviar el correo electrnico1 )n este caso
se utiliNa 'endmail1 9alor ;"sr;sbin;sen%5ai# +t
tN Nona horaria predefinida para indicar fecha y hora de llegada
del mensa#e de voN1 9alor centra# $ partir de este par4metro
inicia la configuracin avanNada del archivo1
attach .es = se envan los nuevos mensa#es de voN/ anexos al correo
electrnico de notificacin1
attachfmt de los tres formatos audio en que se grabar4n los mensa#e de
voN Odefinidos en el par4metro formatP/ se escoge 5l que se
utiliNar4 para anexar el audio al correo electrnico1 9alor wav
saycid .es = antes de escuchar el mensa#e de voN se anuncia el
!allerI. del llamante
cidinternalcontexts nombre del contexto del dialplan donde buscar el contexto de
los buNones de voN para anunciar en lugar del numero de
extensin el nombre de la persona que de#o el mensa#e1 9alor
internas
sayduration .es = anuncia la duracin del mensa#e de voN
saydurationm define la duracin mnima del mensa#e de voN para que sea
anunciado Oen minutosP1 9alor 2
dialout nombre del contexto del dialplan para efectuar llamadas
salientes desde los menHs del buNn de voN Oopcin A del menH
avanNadoP1 9alor e0ternas
:G:
-ar5etro )escripci$n
sendvoicemail 8ermitir o no enviar el mensa#e de voN a otra extensin Oopcin
C del menH avanNadoP1 9alor .es
Tcallbac%=fromvm +ombre del contexto del dialplan para poder llamar el
remitente del mensa#e de voN1 'e de#a comentado
:exitcontext=fromvm +ombre del contexto donde enviar el llamante si presiona una
tecla antes de de#ar un mensa#e1 'e de#a comentado
revie3 .es = 8ermite al llamante escuchar el mensa#e de voN que ha
grabado antes de de enviarlo
Toperador=yes permite al llamante de presionar la tecla G para hablar con un
operador mientras se encuentra en el buNn de voN1 'e de#a
comentado
envelope .es = antes de reproducir un mensa#e de voN/ se anuncian todos
los datos del mensa#e mismo Ofecha/ hora/ !LI/ etc1P
delete no = no se borra el mensa#e de voN una veN que se ha enviado
anexo al correo electrnico de notificacin1
volgain permite subir el volumen de grabacin de los mensa#es de voN1
8ara que funcione se necesita que 'L> sea instalado en el
servidor1 9alor 0.0
nextaftercmd .es = en el caso de m4s de un mensa#e de voN presente en el
buNn de voN/ permite pasar al mensa#e siguiente sin presionar
las teclas ? o B Oborrar/guardar el mensa#e respectivamenteP
forcename .es = obliga cada usuario con un buNn de voN configurado/
grabar su nombre la primera veN que acceda1 ,n usuario se
considera nuevo si la contrasea del buNn de voN coincide con
el numero de extensin
forcegreeting no = obliga un nuevo usuario a grabar un mensa#e de
bienvenida para su buNn de voN
hidefromdir no = el usuario aparecer4 en el directorio
tempgreet3arn .es = recuerda al usuario que el mensa#e de bienvenida que
est4 usando es temporal hasta que no grabe uno personaliNado1
message3rap .es = &ientras se est4n escuchando los mensa#es de voN/
permite/ presionando @ desde el ultimo mensa#e escuchado
volver al primero/ presionando A del primero mensa#e ir al
ultimo1
minpass3ord define una longitud mnima para la contrasea del buNn de
voN Oen numero de cifrasP1 9alor B
Tvm=pass3ord=customDsound
Tvm=ne3pass3ord=customDsound
Tvm=passchanged=customDsound
estos par4metros permiten personaliNar las locuciones
indicadas1 'e de#an comentadas
:G2
-ar5etro )escripci$n
Tvm=reenterpass3ord=customDsound
Tvm=mismatch=customDsound
Tvm=invalid=pass3ord=customDsound
Tvm=pls=try=again=customDsound
listen=control=for3ard=%ey ` = tecla para el avance r4pido del mensa#e
listen=control=reverse N = tecla para rebobinar el mensa#e
listen=control=pause=%ey 0 = tecla num5rica para poner en pausa/reanudar el mensa#e
listen=control=restart=%ey 2 = tecla num5rica para volver a escuchar el mensa#e desde el
inicio
listen=control=stop=%ey 1GBC6A=J = teclas num5ricas para terminar la escucha de un
mensa#e de voN Otodas/ menos las ya configuradasP
bac%updeleted C0 = numero m4ximo de mensa#es de voN permitidos en la
carpeta de borrados
WNonemessagesX a partir de esta etiqueta se configuran las distintas Nona
horarias que se podr4n configurar para cada buNn de voN1 .e
esta forma el propietario de cada buNn de voN/ escuchar4 la
fecha y la hora en que se de# el mensa#e de voN segHn el pas
en que se encuentre1 Lo mismo pasar4 con el correo electrnico
de notificacin1 'iguen algunos e#emplos
eastern A5erica;ew6Pork[Ov5+receive%O d O%igits;atO (Mp
central A5erica;C/icago[Ov5+receive%O d O%igits;atO (Mp
european *"rope;Copen/agen[Ov5+receive%O a % b O%igits;atO KM
colombia A5erica;7ogota[Ov5+receive%O aebP O%igits;atO KM
mexico A5erica;Me0ico6Cit.[Ov5+receive%O aebP O%igits;atO KM
WdefaultX a partir de esta etiqueta se configuran los contextos para los
buNones de voN1 )n el configuracin de las extensiones en el
sip1conf para el par4metro mailbox se ha puesto como valor
QdefaultR1 )se el el contexto que hay que configurar en el
voicemail1conf y la etiqueta lo define1 despu5s del contexto/ se
configuran todos los buNones de voN/ uno por linea/ siguiendo
la sintaxis: "5ero e0tensi$n EW contraseXa> no5bre
ape##i%o> correo e#ectr$nico> correo pager>opciones
0GGG =" 0GGG/fulano de tal/fulano[gmail1com//tN=colombia
0GG0 =" 0GG0/fulano de pascual/fulano[gmail1com//tN=colombia
0GG: =" 0GG:/Nutano pelado/Nutano[gmail1com//tN=european
0:2A =" 0:2A/mar%o/fulano[gmail1com//tN=mexico
0:2C =" 0:2C/mar%o:/fulano[gmail1com//tN=central
:GA
(M-83TAT*& To%os #os %atos @no5bre> correo e#ectr$nico . zona /oraria presentes
en e# arc/ivo> van persona#iza%os.
.e esta forma se han definidos los buNones de voN para todas las extensiones configuradas en $steris%
meno la 0GGA1 !omo la contrasea es igual al numero de extensin/ la primera veN que el usuario entre
en su buNn de voN/ se le pedir4 de cambiar la contrasea y configurar su buNn de voN1
$hora se puede crear el archivo1 'e renombra el predefinido:
5v ;etc;asterisk;voice5ai#.conf ;etc;asterisk;voice5ai#.conf.o#%
se crea uno nuevo:
nano ;etc;asterisk;voice5ai#.conf
se copian las siguientes lineas:
Ugenera#V
for5atEwavBJ[gs5[wav
servere5ai#Eb"zon%evoz'#iGA0+1GC.5e5bers.#ino%e.co5
attac/E.es
5a05sgE100
5a0secsEC00
5insecsEC
5a0greetE1=0
skip5sEG000
5a0si#enceEB
si#encet/res/o#%E12=
5a0#oginsEG
5ove/ear%E.es
forwar%6"rgent6a"toEno
Me0ternnotif.E;"sr;bin;5.app
Me0ternpassE;"sr;bin;5.app
Me0ternpassnotif.E;"sr;bin;5.app
%irector.introE%ir+intro
c/arsetE(!8+==CJ+1
pb0skipE.es
fro5stringE7"zon %e Voz
"se%irector.E.es
Mo%bcstorageEasterisk
Mo%bctab#eE5ensa2es
e5ai#s"b2ectEU-7XV& "evo 5ensa2e %e voz \]VM6M!19M^ en e# b"zon %e voz \
]VM6MA(L78X^
e5ai#bo%.E*sti5an%o \]VM6AM*^&cncnct #e esta5os envian%o este correo para avisar#e I"e
/a recibi%o "n n"evo 5ensa2e
:GC
%e voz %e \]VM6)93^ seg"n%os @n"5ero \]VM6M!19M^Dcncn b"zon %e voz \
]VM6MA(L78X^ %e# n"5ero \]VM6CALL*3()^> e#
\]VM6)AT*^.cncn L#a5a t" b"zon %e voz para esc"c/ar#o. 1raciasRcncnctctctct.T" 7"zon %e
Vozcn o5bre e5presa
M to%o e# te0to %e# par5etro ee5ai#bo%.f tiene I"e estar en #a 5is5a #inea
e5ai#%atefor5atEQA> Q% Q7 QP at QK&QM&Q!
5ai#c5%E;"sr;sbin;sen%5ai# +t
tzEcentra#
attac/E.es
attac/f5tEwav
sa.ci%E.es
ci%interna#conte0tsEinternas
sa.%"rationE.es
sa.%"ration5E2
%ia#o"tEe0ternas
sen%voice5ai#E.es
Mca##backEfro5v5
&e0itconte0tEfro5v5
reviewE.es
Mopera%orE.es
enve#opeE.es
%e#eteEno
vo#gainE0.0
ne0tafterc5%E.es
forcena5eE.es
forcegreetingEno
/i%efro5%irEno
te5pgreetwarnE.es
5essagewrapE.es
5inpasswor%EB
Mv5+passwor%Ec"sto56so"n%
Mv5+newpasswor%Ec"sto56so"n%
Mv5+passc/ange%Ec"sto56so"n%
Mv5+reenterpasswor%Ec"sto56so"n%
Mv5+5is5atc/Ec"sto56so"n%
Mv5+inva#i%+passwor%Ec"sto56so"n%
Mv5+p#s+tr.+againEc"sto56so"n%
#isten+contro#+forwar%+ke.E`
#isten+contro#+reverseEN
#isten+contro#+pa"se+ke.E0
#isten+contro#+restart+ke.E2
#isten+contro#+stop+ke.E1GBC6A=J
back"p%e#ete%EC0
Uzone5essagesV
M !"pporte% va#"es&
:G@
M Ofi#ena5eO fi#ena5e of a so"n%fi#e @sing#e ticks aro"n% t/e fi#ena5e
M reI"ire%D
M \]VA3^ variab#e s"bstit"tion
M A or a )a. of week @!at"r%a.> !"n%a.> ...D
M 7 or b or / Mont/ na5e @San"ar.> 4ebr"ar.> ...D
M % or e n"5eric %a. of 5ont/ @first> secon%> ...> t/irt.+firstD
M P Pear
M ( or # Ko"r> 12 /o"r c#ock
M K Ko"r> 2B /o"r c#ock @sing#e %igit /o"rs prece%e% b. Zo/ZD
M k Ko"r> 2B /o"r c#ock @sing#e %igit /o"rs 8T prece%e% b. Zo/ZD
M M Min"te> wit/ 00 prono"nce% as ZoOc#ockZ
M Min"te> wit/ 00 prono"nce% as Z/"n%re%Z @9! 5i#itar. ti5eD
M - or p AM or -M
M d Zto%a.Z> Z.ester%a.Z or A7%P
M @Nnote& not stan%ar% strfti5e va#"eD
M I ZZ @for to%a.D> Z.ester%a.Z> week%a.> or A7%P
M @Nnote& not stan%ar% strfti5e va#"eD
M 3 2B /o"r ti5e> inc#"%ing 5in"te
easternEA5erica;ew6Pork[Ov5+receive%O d O%igits;atO (Mp
centra#EA5erica;C/icago[Ov5+receive%O d O%igits;atO (Mp
e"ropeanE*"rope;Copen/agen[Ov5+receive%O a % b O%igits;atO KM
co#o5biaEA5erica;7ogota[Ov5+receive%O aebP O%igits;atO KM
5e0icoEA5erica;7ogota[Ov5+receive%O aebP O%igits;atO KM
U%efa"#tV
M persona#izar no5bres> ape##i%os> correos e#ectr$nicos . zona /oraria
1000 EW 1000>f"#ano %e ta#>f"#ano'g5ai#.co5>>tzEco#o5bia
1001 EW 1001>f"#ano %e pasc"a#>f"#ano'g5ai#.co5>>tzEco#o5bia
1002 EW 1002>z"tano pe#a%o>z"tano'g5ai#.co5>>tzEe"ropean
12GB EW 12GB>5arko>f"#ano'g5ai#.co5>>tzE5e0ico
12GC EW 12GC>5arko2>f"#ano'g5ai#.co5>>tzEcentra#
'e guardan los cambios y se recarga la configuracin del voicemail1conf:
asterisk +rvvvvvvvvvvvvvvvv
!LI" voice5ai# re#oa%
8ara ver los usuarios configurados y los mensa#es de voN presentes:
!LI" voice5ai# s/ow "sers
Conte#t =*o# Fser Xone ,e!=sg
default general ,e! Fser @
default (@@@ fulano de tal colom*ia @
default (@@( fulano de pascual colom*ia @
default (@@) Wutano de tal european @
default ()A" mar2o me#ico @
:G?
default ()A3 mar2o) central @
8ara ver la Nonas horarias configuradas:
!LI" voice5ai# s/ow zones
Xone ?imeWone =essage Jormat
me#ico America/Iogota 'vm1received' ae*; 'digits/at' H=
colom*ia America/Iogota 'vm1received' ae*; 'digits/at' H=
european 7urope/Copenagen 'vm1received' a d * 'digits/at' H=
central America/Cicago 'vm1received' > 'digits/at' I=p
eastern America/,e!+;or2 'vm1received' > 'digits/at' I=p
'e sale la consola:
!LI" I"it
8ara que una llamada si no contestada o si la extensin est4 ocupada se enve al buNn de voN/ hay que
modificar el dialplan1 !omo esta parte es igual para todas las extensiones/ se crear4 una &acro1
'e abre el archivo del dialplan:
nano ;etc;asterisk;e0tensions.conf
8rimero se aade la parte para llamar el buNn de voN en el contexto internas:
e<ten G *4313Answer
sa1e G n3Loice-ai7-ain/RSCALL,R.+/nu16TNde:au7t6
sa1e G n3Hangu2
Linea0 I contesta la llamada
Linea: I enva la llamada al buNn de voN del llamante O!$LL);I.OnumP y al contexto default
Oconfigurado en voicemail1confP
Linea: I cuelga la llamada
8ara entrar al buNn de voN general y luego digitar numero de buNn y contrasea:
e0ten EW J=>1>Voice5ai#Main
sa5e EW n>Kang"p
8ara buscar un usuario en el directorio:
e0ten EW JJ>1>)irector.@%efa"#t>internas>eD
sa5e EW n>Kang"p
se modifica estos tres bloques:
:GF
e<ten G "100B0'23>C313-acro/dis2oni=7e6
sa1e G n3+ia7/S.P8RS,K%,NT3>53hHDMt%wV<K6
sa1e G n3Hangu2
e<ten G 12@>313+ia7/.AK281arDo3@06
sa1e G n3Hangu2
e<ten G 12@5313+ia7/.AK281arDo23@06
sa1e G n3Hangu2
para que queden:
e<ten G "100B0'23>C313+ia7/S.P8RS,K%,NT3>53hHDMt%wV<K6
sa1e G n3-acro/voice1ai76
sa1e G n3Hangu2
e<ten G 12@>313+ia7/.AK281arDo3@06
sa1e G n3-acro/voice1ai76
sa1e G n3Hangu2
e<ten G 12@5313+ia7/.AK281arDo23@06
sa1e G n3-acro/voice1ai76
sa1e G n3Hangu2
Luego al final del archivo se crea la macro:
B1acro'voice1ai7C
e<ten G s313Goto/s'RS+.ALS%A%#ST316
e<ten G s'9#SY313Loice1ai7/RS-ACR)",K%,NTNde:au7t3=6
sa1e G n3Hangu2
e<ten G s'CANC,L313Hangu2
e<ten G s'C)NG,S%.)N313Congestion
sa1e G n3Hangu2
e<ten G "s'$313Loice1ai7/RS-ACR)",K%,NTNde:au7t3u6
sa1e G n3Hangu2
La aplicacin dial genera la variable .I$L'E$E,' que contiene uno de los siguientes valores:
!6$+,+$9$IL
!L+*)'EIL+
+L$+'M);
B,'S
$+'M);
!$+!)L
.L+E!$LL
EL;E,;)
:GB
)n base al valor se enviar4 la llamada a un determinado punto de la macro/ por e#emplo/ si el valor es
B,'S/ la llamada se transferir4 al buNn de voN anunciando al llamante que la extensin est4 hablando1
'e guardan los cambios y se recarga el dialplan:
asterisk +rvvvvvvvvvvvvvvv
!LI" %ia#p#an re#oa%
La primera operacin es la de configurar el buNn de voN de la extensin 0GGG1 .esde esa extensin se
marca el numero B? y se siguen los pasos indicados por las locuciones1
Eerminada esta operacin se marca desde la extensin 0GGG el numero BB para probar el directorio1 )n
el directorio se busca una persona digitando en el teclado del tel5fono las primeras tres letras del
apellido1 'i el apellido existe/ se podr4 llamar directamente desde esta aplicacin1 6acer la prueba
marcando el apellido Ocomo configurado en el voicemail1confP de la extensin 0GG:1
!omo ultima prueba/ desde la extensin 0GG0 se marca la extensin 0GGG y no se contesta la llamada1
La extensin 0GG0 ser4 transferida al buNn de voN de la extensin 0GGG donde se de#ar4 un mensa#e1
)n la interfaN de >=Lite Oextension 0GGGP/ aparecer4:
La parte evidenciada indica que hay un mensa#e en el buNn de voN de la extensin 0GGG1 'e puede
comprobar tambi5n desde la consola:
!LI" voice5ai# s/ow "sers
!ontext &box ,ser Jone +e3&sg
default general +e3 ,ser central G
default 0GGG fulano de tal colombia 0
default 0GG0 fulano de pascual colombia G
default 0GG: Nutano pelado european G
default 0:2A mar%o mexico G
default 0:2C mar%o: central G
? voicemail users configured1
y con el correo electrnico recibido:
:0G
)l anexo es el archivo audio con el mensa#e de voN1 'e puede escuchar el mensa#e llamando tambi5n el
numero B?1
Los tres archivos audio Oen los tres formatos definidos en voicemail1confP se encontrar4n en la carpeta:
#s + ;var;spoo#;asterisk;voice5ai#;%efa"#t;1000;(78X;
1r!1r11r11 ( root root (H()H %ct (D )@:AH msg@@@@:gsm
1r!1r!1r!1 ( root root )H( %ct (D )@:AH msg@@@@:t#t
1r!1r11r11 ( root root (CC()" %ct (D )@:AH msg@@@@:!av
1r!1r11r11 ( root root (C6D3 %ct (D )@:AH msg@@@@:EAL
)l archivo msgGGGG1txt contiene toda la informacin relacionada con el mensa#e de voN:
T
T &essage Information file
T
WmessageX
origmailbox=0GGG
context=macro=voicemail
macrocontext=locales
exten=s=B,'S
priority=0
callerchan='I8/0GG:=GGGGGG2:
callerid=\&engano\ ]0GG:"
origdate=Ehu Lct :G G0:2?:G? $& ,E! :G00
origtime=020BG?A@:?
category=
flag=
duration=0G
:00
0:1: Mensa2es %e voz en "na base %e %atos
Los mensa#e de voN/ ademas de guardarse en la carpeta indicada en el p4rrafo anterior/ pueden
guardarse en una base de datos1 )sto permite implementar aplicaciones que desde la Meb permitan
escuchar los mensa#es de voN y revisar todos los datos de los mismos1 )sta configuracin se basa en el
conector L.B! y una base de datos Oen este caso &y'(LP1 8ara que funcione/ hay que volver a
compilar $steris% con el soporte L.B! para el buNn de voN1
'e entra en la carpeta de las fuentes de $steris% y se siguen estos pasos:
c% ;"sr;src;asterisk+1.6.2.22
5ake %istc#ean
.;config"re
5ake 5en"se#ect
)n la iNquierda hay que posicionarse en el menH Q9oicemail Build LptionsR y a la derecha
deseleccionar Q-ileD'EL;$*)R y seleccionar QL.B!D'EL;$*)R:
'e guardan los cambios y se compila $steris%:
5ake
$ntes de instalar nuevamente los modulo de $steris%/ se para el servicio:
service asterisk stop
Luego se instala:
5ake insta##
$parecer4 esta advertencia:
EA/,I,M EA/,I,M EA/,I,M
;our Asteris2 modules director.- located at
/usr/li*/asteris2/modules
contains modules tat !ere not installed *. tis
version of Asteris2: 0lease ensure tat tese
:0:
modules are compati*le !it tis version *efore
attempting to run Asteris2:
app+addon+sql+m.sql:so
app+sa.countpl:so
cdr+addon+m.sql:so
format+mpA:so
res+config+m.sql:so
EA/,I,M EA/,I,M EA/,I,M
+o hay que preocuparse1 'e refiere a los mdulos de asteris%=addons y no va a crear ningHn tipo de
problema en el funcionamiento de $steris%1
$hora para guardar los mensa#e de voN en la base de datos hay que crear la tabla1 )n algunos casos los
datos de las tablas se encuentran en la carpeta contrib/realtime/mysql de las fuentes de $steris%1 )n este
caso se utiliNar4 esa tabla:
5.sI# +" root +psesa5o asterisk Y contrib;rea#ti5e;5.sI#;voice5ai#65essages.sI#
!reada la tabla hay que modificar dos par4metros en el archivo voicemail1conf:
nano ;etc;asterisk;voice5ai#.conf
modificar estas dos lineas:
Aod=cstorageasterisD
Aod=cta=7e1ensaJes
para que queden:
od=cstorageasterisD
od=cta=7evoice1ai7"1essages
'e guardan los cambios y se inicia $steris%:
service asterisk start
'e entra en la consola de $steris% y se averigua que el modulo est5 funcionando con L.B! 'torage:
asterisk +rvvvvvvvvvvvvvvv
!LI" 5o%"#e "n#oa% app6voice5ai#.so
!LI" 5o%"#e #oa% app6voice5ai#.so
Loaded app+voicemail:so
55 0arsing '/etc/asteris2/voicemail:conf': 55 Jound
:02
55 0arsing '/etc/asteris2/users:conf': 55 Jound
55 /egistered application 'Loice=ail'
55 /egistered application 'Loice=ail=ain'
55 /egistered application '=ail*o#7#ists'
55 /egistered application 'L=Autenticate'
55 /egistered custom function '=AILI%K+7KIS?S'
55 =anager registered action LoicemailFsersList
Loaded app+voicemail:so 5N /Co1edian -ai7 /Loice1ai7 Syste16 with )+9C Storage9
8or lo que aparece en negrita parece que si1 8ara probarlo/ desde la extensin 0GG0 o 0GG: se llama la
extensin 0GGG y se de#a un mensa#e en el buNn de voN1
8ara averiguar que el mensa#e ha sido guardado en la tabla:
5.sI# +" root +psesa5o
mysql" "se asterisk
mysql" se#ect %ir>5sgn"5>conte0t>ca##eri% fro5 voice5ai#65essagesM
Z11111111111111111111111111111111111111111111111111Z11111111Z11111111111111111Z11111111111111111Z
P dir P msgnum P conte#t P callerid P
Z11111111111111111111111111111111111111111111111111Z11111111Z11111111111111111Z11111111111111111Z
P /var/spool/asteris2/voicemail/default/(@@@/I,I%K P @ P macro1voicemail P VWutanoV U(@@(N P
Z11111111111111111111111111111111111111111111111111Z11111111Z11111111111111111Z11111111111111111Z
( ro! in set 8@:@@ sec9
8erfectoYY
12.G 7"zones %e voz en "na base %e %atos
$dem4s de los mensa#es de voN/ tambi5n los buNones de voN se pueden guardar en una base de datos1
)n este caso se utiliNar4 el ;ealtime din4mico1 La venta#a/ como ya se ha dicho anteriormente/ es que
esto permite modificar los valores directamente desde la base de datos o desde una aplicacin Meb que
traba#e con la base de datos11
Los pasos a seguir son:
crear la tabla en la base de datos
configurar el realtime din4mico
reiniciar asteris%
!omo para la tabla de los mensa#es de voN/ se utiliNar4 la tabla presente en las fuentes de $steris%:
c% ;"sr;src;asterisk+1.6.2.22;contrib;rea#ti5e;5.sI#
:0A
5.sI# +" root +psesa5o asterisk Y voice5ai#.sI#
!reada la tabla se configura el realtime din4mico:
nano ;etc;asterisk;e0tconfig.conf
'e modifica esta linea:
Avoice1ai7 G od=c3asterisD
para que quede:
voice1ai7 G od=c3asterisD3voice1ai7
'e guardan los cambios y se reinicia $steris%:
service asterisk restart
$hora se configura el buNn de voN de la extensin 0GGA Ola configurada en 'I8 realtimeP en la tabla a
trav5s de 3ebmin:
:0C
)n la tabla aparecen todas las opciones que se pueden configurar para un buNn de voN1 'e termina
presionando el botn Q'aveR y desde la extensin 0GGA se marca el B? para probar la configuracin1 'i
todo funciona/ ya se ha terminado con la configuracin de los buNones de voN1
:0@
CA-(T9L8 X(((
Las conferencias a"%io
)n $steris% una funcionalidad bastante interesante es la de las conferencias audio1 8ara utiliNar esta
funcionalidad/ existen dos aplicaciones:
meetme
confbridge
La primera es la m4s conocida y ha sido implementada en $steris% desde las primeras versiones1
&eetme se apoya a .$6.I para generar la sincroniNacin de los canales audios presentes en la
conferencia creando una canal pseudo=.$6.I para cada conferencia1 'in .$6.I instalado/ meetme
no funciona1 !onfbridge ha sido aadida a $steir%s a partir de la versin 01@101> y no necesita .$6.I
para funcionar/ pero implementa menos funciones y no es posibles configurarla en ;ealtime din4mico1
La configuracin de meetme se hace a partir de un archivo dedicado mientras las conferencias creadas
con !onfbridge no necesitan configuracin previa1
1G.1 5eet5e.conf
!omo para los dem4s archivos de configuracin de $steris%/ se presentan los par4metros con una breve
descripcin1 )n negrita los valores que se asignar4n1 $l final de la tabla el archivo completo1
-ar5etro )escripci$n
WgeneralX Inicia la parte general de configuracin
audiobuffers +umero de paquetes audio de :Gms que ser4n
guardados en un buffer de memoria cuando
pertenecen a canales que no son .$.6I1 )sto
permite sincroniNar el audio de los distintos
participantes y evitar retrasos1 8uede ser un valor
entre : y 2:1 9alor G2
schedule )ste par4metro va configurado en yes solamente si
se usan las conferencias en realtime O$;$P1 )n
caso contrario hay que de#arlo en no
logmembercount 'i las conferencias est4n configuradas en ;ealtime
este par4metro actualiNa la tabla cada veN que
entre/ salga un usuario de la conferencia1 9alor .es
fuNNystart 6ay una conferencia programada a las F de la
maana1 )ste par4metro se utiliNa para definir si
un usuario puede o no entrar en la conferencia si
esta no ha empeNado1 2GG es el nHmero de
segundos1 )#emplo1 'i el usuario entra a la ?:CC
ser4 aceptado porque puede entrar hasta C minutos
OG00 segundosP antes del comienNo de la
-ar5etro )escripci$n
conferencia1 'i entra a las ?:CG ser4 rechaNado1
-unciona solamente en ;ealtime
earlyalert )ste valor Osiempre en segundosP define si al
usuario que intenta entrar en una conferencia
programada le ser4 anunciado o no que la
conferencia todava no ha empeNado1 !on el valor
en G600/ si entra cuando falta menos de una hora
recibir4 este aviso1 'i entra m4s de una hora antes
se le anunciar4 que la conferencia no existe1
endalert !uando falten los segundos indicados en este
par4metro para que termine una conferencia
programada/ a los usuario se les presentar4 un
aviso1 9alor 120
WroomsX a partir de esta etiqueta inicia la configuracin de
las conferencias1 La sintaxis es:
conf EW confnoU>pinVU>a%5inpinV
conf =" 2CGG 'e configura la primera sala de conferencia sin
8I+ de usuario y 8I+ de administrador
conf =" 2CG0/0:2A 'e configura la segunda sala de conferencia con
8I+ de usuario 0:2A y sin 8I+ de administrador
conf =" 2CG:/0:2A/C@?F 'e configura una tercera sala de conferencia con
8I+ de usuario 0:2A y 8I+ de administrador C@?F
'e renombra el archivo predefinido:
5v ;etc;asterisk;5eet5e.conf ;etc;asterisk;5eet5e.conf.o#%
y se crea uno nuevo con los par4metros indicados en la tabla:
nano ;etc;asterisk;5eet5e.conf
Bgenera7C
audio=u::ers@2
schedu7eno
7og1e1=ercountyes
:uPPystart@00
ear7ya7ert@E00
enda7ert120
Broo1sC
con: G @500
con: G @501312@>
:0B
con: G @502312@>35E4(
'e guardan los cambios y se entra en la consola de $steris%:
asterisk +rvvvvvvvvvvvvvvvvvvvv
se recarga el modulo appDmeetme
!LI" 5o%"#e re#oa% app65eet5e.so
se revisa la sintaxis de la aplicacin meetme:
!LI" core s/ow app#ication 5eet5e
!omo se puede ver hay muchos par4metros y opciones que se pueden configurar1
6ay otras aplicaciones relacionadas con las conferencias:
!LI" core s/ow app#ication 5eet5e Om4s la tecla tabuladorP
=eet=e =eet=eAdmin =eet=eCannelAdmin =eet=eCount
Las aplicaciones disponibles son cuatro1 La primera es para entrar en una conferencia/ la segunda para
administrarla/ la tercera es para controlar un canal de la conferencia y la tercera para conocer el numero
de usuarios presentes en una conferencia1
!LI" I"it
$hora se modifica el dialplan para utiliNar las conferencias1
nano ;etc;asterisk;e0tensions.conf
despu5s del contexto internas se aade un nuevo contexto:
Bcon:erenciasC
e<ten G "@50B012C313-eet1e/RS,K%,NT3sc-/de:au7t66
sa1e G n3Hangu2
Llamando la extensin 2CGG/2CG0 o 2CG: se entrar4 en el cuarto de conferencia Ocomo configurado en
meetme1confP
Las tres opciones:
s = !on esta opcin se activa el menH del cuarto de conferencias para usuarios y
administradores1 &arcando la tecla asterisco se escuchar4 el menH
c = $l entrar en un cuarto de conferencia se le anunciar4 al usuario el nHmero de personas
::G
presentes
&OdefaultP = !uando en el cuarto de conferencia est4 solamente una persona/ 5sta escuchara la
mHsica de espera de la clase defaultR
)xiste la posibilidad de crear cuartos de conferencias de forma din4mica Osin tener que configurarlos en
el archivo meetme1confP1 $ seguir un e#emplo que se va a aadir al dialplan en el contexto
conferencias:
e<ten G @510313-eet1e/3+-/de:au7t66
sa1e G n3Hangu2
8rimero no se indica el nHmero del cuarto de conferencias y se usa la opcin . que permite definir la
extensin 2C0G como cuarto de la conferencia y un 8I+ para entrar1 )l 8I+ de la conferencia ser4 el
que digite la primera persona que entre en la conferencia1 'i en lugar de la opcin ) se pone la opcin
% no se necesitar4 definir un 8I+ para el cuarto de conferencia1
Ltro e#emplo que se puede aadir al dialplan es crear una conferencia y definir como numero m4ximo
de participantes 0G1 )sto se hace con una &acro1 )n el contexto conferencias se pone:
e<ten G @520313Set/con:1a<106
sa1e G n3-acro/1eet1e6
sa1e G n3Hangu2
y al final del archivo se aade la &acro:
B1acro'1eet1eC
e<ten G s313-eet-eCount/RS-ACR)",K%,NT3count6
sa1e G n3Gotoi:/RBRScountT G RScon:1a<TCY77ena6
sa1e G n3-eet-e/RS-ACR)",K%,NT3+6
sa1e G n3Hangu2
sa1e G n/77ena63P7ay=acD/con:'inva7id6
sa1e G n3Hangup
,na explicacin1 8rimero se asocia a la variable confmax el numero 0G Oel numero m4ximo de
participantes permitidos en la conferenciaP y luego se llama la macro meetme1 !on la primera lnea de
la macro se controla con la aplicacin &eetme!ount cuantos usuarios est4n en la conferencia 2C:G y se
asocia ese valor a la variable count1 'i el numero contenido en la variable count es mayor al numero
contenido en la variable confmax O0GP se va a la lnea con la etiqueta OllenaP donde se comunicar4 que
la conferencia no es valida y se colgar4 la llamadaT si es menor el usuario podr4 entrar al cuarto de
conferencias1
8ara terminar la configuracin del dialplan/ para que las extensiones tengan acceso al contexto
conferencias hay que aadir la linea en negrita al contexto externas y locales:
WexternasX
include =" internas
include =" internacio
::0
include =" par%edcalls
include =" test
inc#"%e EW conferencias
WlocalesX
include =" internas
include =" auten
include =" par%edcalls
include =" test
inc#"%e EW conferencias
'e guardan los cambios y se actualiNa el dialplan:
asterisk +rvvvvvvvvvvvv
!LI" %ia#p#an re#oa%
$hora desde las extensiones 0GGG y 0GG0 se marca el numero 2CGG para entrar en la primera
conferencia configurada en el archivo meetme1conf1
8ara ver las extensiones presentes en la conferencia:
!LI" 5eet5e #ist GC00
Fser \: @( (@@@ callerid5Julano Cannel: SI0/(@@@1@@@@@@@A 8unmonitored9 @@:@):"3
Fser \: @) (@@( Wutano Cannel: SI0/(@@(1@@@@@@@H 8unmonitored9 @@:@@:3A
) users in tat conference:
8ara sacar un usuario de la conferencia:
!LI" 5eet5e kick GC00 1
55 Setting glo*al varia*le '=77?=7AD=I,S?A?FS' to '%&'
11 USI0/(@@@1@@@@@@@AN 0la.ing 'conf12ic2ed:ala!' 8language 'es'9
11 7#ecuting $A3@@Be#ternas:)' Hangup8VSI0/(@@@1@@@@@@@AV- VV9 in ne! stac2
(uedar4n:
!LI" 5eet5e #ist GC00
Fser \: @) (@@) =engano Cannel: SI0/(@@)1@@@@@@@3 8unmonitored9 @@:@":@D
( user in tat conference:
8ara probar la &acro desde la extensin 0GGG se marca 2C:G1
1G.2 Conf7ri%ge
8ara conocer la sintaxis de la aplicacin !onfBridge:
:::
!LI" core s/ow app#ication Conf7ri%ge
$S.nopsis'
Conference *ridge application:
$Description'
7nters te user into a specified conference *ridge: ?e user can e#it te
conference *. angup onl.:
?e 4oin sound can *e set using te 'C%,JI/IDM7+G%I,+S%F,D' varia*le and
te leave sound can *e set using te 'C%,JI/IDM7+L7AL7+S%F,D' varia*le: ?ese
can *e unique to te caller:
,%?7: ?is application !ill not automaticall. ans!er te cannel:
$S.nta#'
ConfIridge8$confno'$-options'9
$Arguments'
confno
?e conference num*er
options
a: Set admin mode:
A: Set mar2ed mode:
c: Announce user8s9 count on 4oining a conference:
m: Set initiall. muted:
=$8class9': 7na*le music on old !en te conference as a single
caller: %ptionall.- specif.
a musiconold class to use: If one is not provided- it !ill use te
cannel's currentl. set music class- or 'default':
(: Do not pla. message !en first person enters
s: 0resent menu 8user or admin9 !en 'O' is received
8send to menu9:
!: Eait until te mar2ed user enters te conference:
q: >uiet mode 8don't pla. enter/leave sounds9:
$See Also'
,ot availa*le
!omo esta aplicacin no contesta autom4ticamente el canal para configurarla en el dialplan hay que
iniciar el bloque con un $ns3er:
!LI" I"it
nano ;etc;asterisk;e0tensions.conf
)n el contexto conferencias se aade:
e<ten G @5@0313Answer
::2
sa1e G n3Con:9ridge/@5@03-cs6
Sa1e G n3Hangu2
'e guardan los cambios y se actualiNa el dialplan:
asterisk +rvvvvvvvvvvvvvvv
!LI" %ia#p#an re#oa%
$hora desde la extensin 0GGG se marca el numero 2C2G1 $ diferencia de meetme/ con !onfBridge no
se puede/ desde la consola de $steris%/ controlar los participantes presentes/ ni hacer otros tipos de
operaciones1
1G .G Meet5e en 3ea#ti5e )in5ico
!omo se ha comentado anteriormente/ es posible configurar las conferencias en ;ealtime din4mico1 Lo
primero es crear la tabla en la base de datos $steris%:
5.sI# +" root +psesa5o
mysql" "se asterisk
mysql" CR,A%, %A9L, 01eet1e0 /
0con:no0 char/(06 N)% N#LL de:au7t 5053
0startti1e0 dateti1e N)% N#LL de:au7t 50000'00'00 00;00;0053
0endti1e0 dateti1e de:au7t N#LL3
02in0 char/206 de:au7t N#LL3
0o2ts0 char/1006 de:au7t N#LL3
0ad1in2in0 char/206 de:au7t N#LL3
0ad1ino2ts0 char/1006 de:au7t N#LL3
01e1=ers0 int/116 N)% N#LL de:au7t 5053
01a<users0 int/116 N)% N#LL de:au7t 5053
PR.-ARY M,Y /0con:no030startti1e06
6A
mysql" I"it
!reada la tabla/ se modifica el archivo extconfig1conf
nano ;etc;asterisk;e0tconfig.conf
se busca esta linea:
A1eet1e G 1ys?73genera7
y se modifica para que quede:
::A
1eet1e G od=c3asterisD31eet1e
'e guardan los cambios y se modifica el par4metro schedule del archivo meetme1conf para permitir la
creacin de conferencias programadas en ;ealtime:
nano ;etc;asterisk;5eet5e.conf
schedu7e no
se cambia a:
schedu7eyes
'e guardan los cambios y se recarga toda la configuracin de $steris%:
service asterisk re#oa%
!omo algunas locuciones para las conferencias programadas no existen en la instalacin est4ndar de
$steris% hay que descargarlas:
c% ;t5p
wget /ttp&;;www.voztovoice.org;t5p;confpro5pts.tar
descomprimir el paquete:
tar +0f confpro5pts.tar
y moverlas en la carpeta de la locuciones en ingles:
5v N.wav ;var;#ib;asterisk;so"n%s;en
$hora para la prueba se configuran dos conferencias a trav5s de Mebmin1 La idea es crear una que
inicie dentro de CG minutos y otra que inicie dentro de C minutos y que las dos duren una hora1
::C
'e guardan los datos presionando el botn 'ave1 La segunda:
Las opciones que aparecen en las dos conferencias para los usuarios:
c I anuncia los usuarios presentes en la conferencia
I I obliga al usuario que entra a la conferencia a grabar su nombre
s I se activa la tecla QfR para entrar en un menH que permite modificar algunos par4metros
personales Ovolumen de la conferencia/ volumen del micrfono/ etc5teraP1
::@
La Hnica diferencia con las opciones del administrador es la opcin a que activa el modo administrador1
8ara poder acceder a las conferencias/ hay que aadirlas al dialplan:
nano ;etc;asterisk;e0tensions.conf
en el contexto conferencias se aaden las siguientes lineas:
e<ten G "500B01C313-eet1e/RS,K%,NT6
sa1e G n3Hangu2
'e guardan los cambios y se recarga el dialplan de $steris%:
asterisk +r0 Z%ia#p#an re#oa%Z
$hora se hace una prueba llamando primero la conferencia CGGG y luego la CGG01 )n el primer caso un
anuncio avisar4 que la conferencia no ha empeNado/ en el segundo/ como faltan menos de C minutos
para que empiece/ de#a entrar el usuario Ocomo configurado en el par4metro fuNNystart/ 2GG segundosP1
1G.B La ap#icaci$n -age
La aplicacin 8age se utiliNa para crear conferencias instant4neas llamando un grupo de extensiones
simult4neamente1 .ependiendo del tipo de opciones configuradas/ se podr4n crear distintos tipo de
escenarios:
solamente quien ha iniciado la llamada podr4 hablar
todas las extensiones podr4n hablar
como sistema de intercomunicacin para comunicar breves mensa#es a la persona llamada Oel
tel5fono del destinatario abrir4 la linea en autom4ticoP
La sintaxis de la aplicacin es:
-age@Tec/no#og.;3eso"rceUbTec/no#og.2;3eso"rce2Ub...VVU>optionsU>ti5eo"tVVD
y las opciones disponibles:
d I audio en ambas direcciones
i I no se tomar4n en consideracin intentos de transferir la llamada
q I modo silencioso/ el llamante no escuchar4 un beep
r I se grabar4 la conferencia en un archivo audio
s I solo se intentar4 incluir en las conferencias las extensiones cuyo estado sea Q+LEDI+,')R
,na prima forma de probar la aplicacin es:
e<ten G 501313Page/S.P81001ZS.P810026
::?
sa1e G n3Hangu2
.esde la extensin 0GGG se marca el numero CGG1 ,na veN que las dos extensiones contesten/
solamente la 0GGG tendr4 activado el audio1
,na variacin de este bloque es:
e<ten G 502313Page/S.P81001ZS.P810023d6
sa1e G n3Hangu2
)n este caso todas las extensiones tendr4n el micrfono activado1
,tiliNar 8age como sistema de intercomunicacin puede ser muy Htil/ por e#emplo/ en una empresa
donde se quiera comunicar a todos los empleados un anuncio1 )n este caso se conecta a $steris% una
$E$ tipo el 8$0 de '+L&/ que a su veN se puede conectar a un sistema de amplificacin audio1
Llamando la extensin asociada al 8$0/ este contestar4 la llamada en autom4tico y el anuncio ser4
difundido por el sistema de parlantes conectados al $E$1
)l mismo sistema se utiliNa con los tel5fonos 'I81 .ependiendo de la marca hay que enviar una
cabecera especifica en el I+9IE) para que el tel5fono la reconoNca y conteste la llamada en autom4tico
activando el parlante del tel5fono1 Las cabeceras se aaden a trav5s de la aplicacin !ipa%%/ea%er de
$steris%
)sta cabecera son:
$astra = !(-A%%Kea%er@A#ert+(nfo& infoEa#ert+a"toanswerD
8olycom = !(-A%%Kea%er@A#ert+(nfo& 3ing AnswerD
'nom = !(-A%%Kea%er@Ca##+(nfo& sip&%o5ain.co5cManswer+afterE0D
!isco '8$ = !(-A%%Kea%er@Ca##+(nfo&cManswer+afterE0D
Sealin% = !(-A%%Kea%er @-+A"to+answer& nor5a#D
$hora in una hipot5tica oficina donde el gerente quiera hacer una anuncio a la secretaria y ambos est4n
utiliNando tel5fonos Sealin% cuya extensiones son 0GGG para el gerente y 0GG0 para la secretaria/ el
dialplan sera:
e<ten G 50@313S.PAddHeader /P'Auto'answer; nor1a76
sa1e G n3Page/S.P810013i6
sa1e G hangu2
)l gerente marca CG0 y hace el anuncio a la secretaria cuyo tel5fono habr4 contestado en autom4tico
activando el parlante1
8ara terminar este p4rrafo se modifica el dialplan:
nano ;etc;asterisk;e0tensions.conf
::F
y en el contexto conferencias se aaden los dos bloques que siguen:
e<ten G 501313Page/S.P81001ZS.P810026
sa1e G n3Hangu2
e<ten G 502313Page/S.P81001ZS.P810023d6
sa1e G n3Hangu2
'e guardan los cambios y se actualiNa el dialplan:
asterisk +rvvvvvvvvvvvv
!LI" %ia#p#an re#oa%
.esde la extensin 0GGG se marca primero el numero CG0 y luego el CG:1
::B
CA-(T9L8 X(V
)istrib"ci$n a"to5tica %e ##a5a%as , Co#as %e espera
!uando se llama un centro de atencin al cliente/ sin saberlo/ se est4 adentro de un sistema de
distribucin autom4tica de llamadas1 b!mo funcionac !ada llamada que llega se pone en una cola de
espera respetando la prioridad con que ha llegado1 !uando uno de los operadores que atienden las
llamadas est4 libre/ la llamada ser4 transferida a ese operador1 $ lo largo de la espera/ segHn la
configuracin/ el llamante escuchar4 distintos anuncios Oque posicin tiene en la cola/ el tiempo
estimado de espera y un largo etc5teraP1
(uiN4s este es el servicio m4s importante y estrat5gico para una empresa1 )n base a la calidad del
servicio que ofrece y el tiempo promedio de espera/ los clientes la estar4n evaluando1
b!mo se configura en $steris% la gestin de las colasc $ trav5s de dos archivos:
agents1conf
queues1conf
)n el primero se configuran/ definiendo algunas variables y par4metros/ los agentes que atender4n las
colas1 )n el queues1conf se configuran las colas Opueden ser una o m4sP/ los agentes miembros de la
cola y que tipo de estrategia se utiliNar4 para enrutar las llamadas a los distintos operadores1
1B.1 Los Agentes
8ara configurar los agentes que atender4n las llamadas entrantes a las distintas colas hay que modificar
el archivo agents1conf1 )n la tabla que sigue los distintos par4metros con una breve descripcin1 )n
negrita el valor asociado a cada par4metro1 $l final del la tabla el archivo completo de configuracin1
-ar5etro )escripci$n
WgeneralX etiqueta que da inicio a la parte general del
archivo
persistentagents 'i se define en yes el estado del agente se
almacena en la base de datos interna de $steris%1
.e esta forma cuando se reinicia $steris% estos
datos ser4n recargados1 9alor .es
multiplelogin .efine si est4 permitido a una extensin
conectarse como agente mHltiple1 9alor no
WagentsX $ partir de esta etiqueta inicia la configuracin de
los agentes
maxlogintries +umero de intentos permitidos a un agente para
autenticarse1 9alor G
autologoff +umero de segundos que un agente tiene para
-ar5etro )escripci$n
contestar una llamada entrante1 'i no contesta
dentro de ese tiempo/ ser4 desconectado de la
cola1 9alor 1C
autologoffunavail .es = si la extensin desde la cual el agente se
conecta se vuelve no disponible/ autom4ticamente
el agente ser4 desconectado de la cola
ac%call 8ara atender una llamada un agente tiene que
presionar la tecla indicada en el prximo
par4metro1 9alor no Ono tiene que presionarlaP
acceptdtmf `
endcall .es = permite al agente terminar una llamada
presionando la tecla configurada en el prximo
par4metro
enddtmf N
3rapuptime +umero de milisegundos que $steris% esperar4
antes de volver a llamar un agente que acaba de
terminar una llamada1 9alor C000
musiconhold &Hsica de espera predefinida para el agente1 9alor
%efa"#t
Tgoodbye=vm=goodbye locucin que el agente escuchar4 al terminar una
llamada1 'i se de#a comentado ser4 la predefinida
Ovm=goodbyeP
updatecdr $ctualiNa o no el !.; con el nombre del agente1
9alor no
Tgroup obsoleto1 +o usar
recordagentcalls grabar o no las llamadas de los agentes1 9alor no
recordformat -ormato audio de las llamadas grabadas1 9alor
wav
Turlprefix el prefi#o del nombre del los archivos grabados1
8uede ser una ,;L1 )#emplo
http://3331voNtovoice1org/calls1 'e de#a
comentado
Tsavecallsin .e manera predefinida las llamadas grabadas se
guardan en la carpeta: /var/spool/asteris%/monitor
'i se quiere personaliNar la carpeta se indica en
este par4metro1 'e de#a comentado
customDbeep $visa al agente que est4 conectado
permanentemente a la cola/ de la llegada de una
llamada1 9alor beep
:2:
-ar5etro )escripci$n
agent $hora se configuran los agentes1 Las sintaxis es:
agent =" agentid/agentpass3ord/name
9alor: 2000>12GB>4"#ano
agent 2001>12GC>_"tano
agent 2002>12G6 Mengano
'e renombra el archivo predefinido:
5v ;etc;asterisk;agents.conf ;etc;asterisk;agents.conf.o#%
se crea uno nuevo:
nano ;etc;asterisk;agents.conf
y se aaden los par4metros de la tabla:
Bgenera7C
2ersistentagentsyes
1u7ti27e7oginno
BagentsC
1a<7ogintries@
auto7ogo::15
auto7ogo::unavai7yes
acDca77no
acce2tdt1:#
endca77yes
enddt1:U
wra2u2ti1e5000
1usiconho7dde:au7t
Agood=yev1'good=ye
u2datecdryes
Agrou2
recordagentca77sno
record:or1atwav
Aur72re:i<htt2;88do1inio$org8ca77s
Asaveca77sin8ho1e8ca77s
custo1"=ee2=ee2
agent G 2000312@>3&u7ano
agent G 2001312@53^utano
agent G 2002312@E3-engano
'e guardan los cambios1 'e entra en la consola de $steris% y se recarga el modulo c/an6agent.so:
:22
asterisk +rvvvvvvvvvvvvvv
!LI" 5o%"#e re#oa% c/an6agent.so
8ara ver la lista de los agentes configurados:
!LI" agent s/ow
)@@@ 8Julano9 not logged in 8musiconold is 'default'9
)@@( 8Xutano9 not logged in 8musiconold is 'default'9
)@@) 8=engano9 not logged in 8musiconold is 'default'9
A agents configured $@ online - A offline'
!LI" I"it
8ara que los agentes puedan autenticarse y atender las colas de que son miembros/ se utiliNa en el
dialplan la aplicacin $gentlogin:
nano ;etc;asterisk;e0tensions.conf
en el contexto internas/ se aade el siguiente bloque:
e0ten EW 6200U012V>1>Agent#ogin@\]*XT*^D
sa5e EW n>Kang"p
'e guardan los cambios y se actualiNa el dialplan1
asterisk +rvvvvvvvvvvvvvvvvvvvv
!LI" %ia#p#an re#oa%
$hora desde la extensin 0GGG se marca el numero :GGG/ y cuando el sistema lo pide/ se ingresa la
clave del agente :GGG O0:2AP seguida por la tecla numero e1 ,na veN autenticado/ el agente empeNar4 a
escuchar la mHsica de espera predefinida/ esperando de atender los clientes1
!LI" agent s/ow
)@@@ 8&u7ano6 7ogged in on S.P81000'0000000( is idle 8musiconold is 'default'9
)@@( 8Xutano9 not logged in 8musiconold is 'default'9
)@@) 8=engano9 not logged in 8musiconold is 'default'9
A agents configured $( online - ) offline'
)ste sistema de conectar los agentes a las colas se ha vuelto un poco obsoleto y se est4 optando m4s
para las aplicaciones que permiten aadir a las colas de espera agentes din4micos1 )s poco productivo
tener una agente conectado permanentemente a una cola adem4s utiliNando parte de la banda
disponible1 )s mucho m4s lgico conectar los agentes de forma din4mica y que mientras esperen las
llamadas de los clientes/ puedan utiliNar el tel5fono para otro tipo de actividad1 )sta parte se ver4 en el
ultimo p4rrafo de este modulo1 )s hora de configurar las colas1
:2A
1B.2 Las co#as %e espera , I"e"e.conf
)n el archivo queues1conf se configuran las distintas colas de espera1 )n la tabla que sigue los distintos
par4metros con una breve descripcin1 )n negrita el valor asociado a cada par4metro1 $l final del la
tabla el archivo completo de configuracin1
-ar5etro )escripci$n
WgeneralX )tiqueta que define la parte general del archivo
persistentmembers .es = se guardan los datos de los miembros de la cola
activos en la base de datos interna de $steris%1 'i se
reinicia la 8B> los miembros ser4n reasignados a las
colas correspondientes1
autofill +ormalmente una cola funciona de la siguiente manera1
6ay unos cuantos usuarios esperando por ser atendidos
por los agentes1 !uando el usuario que est4 de primero
en la cola viene atendido el segundo se vuelve primero
e ser4 atendido por el primer agente disponible1 )ste
comportamiento no tiene en cuenta que pueden haber
muchos agentes disponibles y que podran atender los
clientes sin esperar que lleguen a ser los primeros de la
cola de espera1 !on este par4metro se define otro tipo
de comportamiento1 Los clientes ser4n atendidos de
manera paralela hasta que haya agentes disponibles1 .e
esta forma se reducen considerablemente los tiempos
de espera1 9alor .es
monitor=type el tipo de aplicacin utiliNada para grabar las
conversaciones de una cola1 8uede ser Mi05onitor o
monitor
updatecdr $ctualiNa o no el valor del campo dstchannel del !.;
Oel registro de las llamadasP con el nombre del agente1
9alor no
sharedDlastcall 'i un agente hace parte de m4s de una cola y se ha
definido su tiempo de descanso entre una llamada y
otra Oel par4metro 3raptimeP/ con este par4metro se
define si ese tiempo va respetado por las distintas colas
de que el agente es miembro1 9alor .es
WventasX con esta etiqueta se define la primera cola de espera
musiclass La mHsica de espera para los clientes en la cola1 9alor
%efa"#t
Tannounce=queue=ventas )ste par4metro permite crear una anuncio para que los
agentes que pertenecen a m4s de una cola para que
sepan/ antes de atender una llamada/ de que cola
proviene el cliente1 'e de#a comentado
:2C
-ar5etro )escripci$n
strategy )n este par4metro se define la lgica con que se
enrutar4n las llamadas de una cola a los agentes:
leastrecent: $signa la siguiente llamada al
agente que m4s tiempo lleva sin atender una
llamada1
fe3estcalls: $signa la siguiente llamada al
agente que menos llamadas ha atendido1
random: $signa la siguiente llamada
aleatoriamente a cualquier agente disponible1
ringa##: Llama todos los agentes disponibles a
la veN hasta que uno conteste1
rrmemory: .istribuye las llamadas Qpor turnosR
entre los agentes disponibles y QrecuerdaR el
Hltimo agente al que intent llamar1
linear& Llama los agentes siguiendo el orden
definido en este archivo de configuracin1 'i
son agentes din4micos segHn el orden con que
se han registrado a la cola
3random: asigna la llamada aleatoriamente
usando una m5trica basada en penalidades1
servicelevel 8ar4metro utiliNado para la estadsticas de la cola1 )n
base al numero de segundos configurados/ en los
reportes aparecer4 el numero de llamadas contestadas
dentro del tiempo definido1 9alor 120
context 'i el cliente en la cola antes de ser atendido presiona
una tecla del tel5fono ser4 enviado al contexto definido
en este par4metro y a la prioridad correspondiente al
dgito que ha marcado1 9alor ventas+e0it
timeout )n la cola se pueden configurar dos distintos tipos de
tiempos de espera1 ,no a nivel de aplicacin OdialplanP
define el tiempo m4ximo que un cliente podr4 quedar
en la cola1 8asado ese tiempo sin ser atendido/ el
cliente saldr4 de la cola y se e#ecutara la siguiente
prioridad presente en el dialplan1 )l segundo es el
tiempo m4ximo que timbrar4 la extensin de un agente
antes de considerarlo no disponible y pasar al siguiente1
)ste par4metro y los siguientes dos se utiliNan para
definir que tipo de tiempo de espera tendr4 la prioridad1
)ste primer par4metro define por cuantos segundos
timbrar4 la extensin del agente1 9alor: 1C
retry numero de segundos de espera antes de llamar otro
agente si el primero no ha contestado dentro de los 0C
segundos definidos en el par4metro anterior1 9alor: B
:2@
-ar5etro )escripci$n
timeoutpriority )n este par4metro se define si se toma en consideracin
el tiempo de espera definido a nivel de aplicacin o a
nivel de archivo de configuracin1 9alor app
OaplicacinP
3eight )l peso de la cola1 &4s alto el valor/ m4s prioridad
tendr4 la cola1 'i hay agentes que atienden m4s de una
cola/ las colas con peso m4s alto ser4n atendidas con
prioridad respecto a las colas con peso m4s ba#o1 9alor
0
3rapuptime Eiempo de descanso de un agente entre una llamada y
otra Oen segundosP 9alor 1C
autofill )l mismo par4metro de la parte general del archivo se
puede configurar por cada cola separadamente1 9alor
.es
autopause .es = lo agentes que no atender4n una llamada ser4n
puestos en pausa
maxlen +umero m4ximo de personas que pueden estar
esperando en la cola1 9alor C0 'i se pone G no se fi#ar4
ningHn limite
setinterfacevar .es = una serie de variables ser4n creadas #usto antes de
conectar un miembro de la cola con un cliente Ov5ase
archivo predefinido queues1confP
setqueueentryvar .es = otra serie de variables ser4n creadas #usto antes
de conectar un miembro de la cola con un cliente
Ov5ase archivo predefinido queues1confP
setqueuevar .es = otra serie de variables relacionadas con la cola
ser4n creadas #usto antes de conectar un miembro de la
cola con un cliente Ov5ase archivo predefinido
queues1confP
Tmembermacro=macro $ntes de conectar el agente con el cliente se puede
e#ecutar la macro indicada en este par4metro1 'e de#a
comentado
announce=frequency !ada cuanto segundos anunciar al cliente en la coda su
posicin y tiempo estimado de espera1 9alor J0
min=announce=frequency 8ara evitar que cada veN que la posicin y/o el tiempo
estimado de espera de un cliente cambie se le presente
un anuncio/ este par4metro define un tiempo Oen
segundosP que se esperar4 antes de comunicarle su
nueva posicin/tiempo estimado1 9alor 1C
Tperiodic=announce=frequency=@G !ada cuantos segundos presentar un anuncio
:2?
-ar5etro )escripci$n
personaliNado al cliente en la cola de espera1 'e de#a
comentado
Trandom=periodic=announce=no Los anuncio pueden ser presentado segHn un orden
aleatorioc 'e de#a comentado
announce=holdtime anunciar #unto a la posicin en la cola el tiempo
estimado de espera1 8uede ser yes/ no/ u once Ouna sola
veNP
announce=position $nuncia al cliente su posicin en la lista de espera1
9alores:
yes I si
no I no se le anuncia
5ore = si la posicin del cliente en la cola de
espera es m4s alta del numero especificado en
el prximo par4metro/ se le anunciar4 que hay
m4s de Qvalor del prximo par4metroR clientes
esperando en la cola
limit I solo los clientes con una posicin en la
cola de espera menor o igual al valor del
par4metro que sigue/ escuchar4n el anuncio de
su posicin en la cola de espera
announce=position=limit C
announce=round=seconds !on este par4metro se redondea los minutos y los
segundos de espera anunciados al cliente1 9alor 20
Tqueue=youarenext=queue=youarenext $ partir de esta linea se pueden personaliNar las
locuciones predefinidas de la cola de espera1
Tqueue=thereare=queue=thereare
Tqueue=calls3aiting=queue=calls3aiting
Tqueue=holdtime=queue=holdtime
Tqueue=minutes=queue=minutes
Tqueue=seconds=queue=seconds
Tqueue=than%you=queue=than%you
Tqueue=reporthold=queue=reporthold
Tperiodic=announce=queue=periodic=
announce
Tperiodic=announce=anuncio0/anuncio: en este par4metro de definen los anuncios peridicos
personaliNados separados por una coma1 'e de#a
comentado
Tmonitor=format=gsmZ3avZ3avAB formatos audio en que se grabar4n las conversaciones
:2F
-ar5etro )escripci$n
de la cola de espera Osi se de#a comentado/ no se
grabaranP
monitor=type 'e define la aplicacin para grabar la conversaciones1
8uede ser monitor y 5i05onitor
#oinempty )ste par4metro con el que sigue/ son los m4s
importantes en la configuracin de la cola1 $qu se
define si un cliente puede o no entrar a una cola de
espera si no hay agentes disponibles1 Los distintos
valores que se pueden utiliNar/ separados por una coma/
son:
paused I un agente es considerado no
disponible si est4 en pausa Oaplicacin
8ause(ueue&emberP
penalty I un agente es considerado no
disponible si el valor de su penalidad es menor
al valor asociado a la variable
(,),)D&$>D8)+$LES
inuse I un agente es considerado no disponible
si el estado de su extensin es I+,')
ringing I un agente es considerado no
disponible si su extensin est4 timbrando
unavailable = un agente es considerado no
disponible si el estado de su extensin es
,+$9$IL$BL)
invalid = un agente es considerado no
disponible si el estado de su extensin es
I+9$LI.
un%no3n I un agente es considerado no
disponible si el estado de su extensin es
,+<+LM
3rapup = un agente es considerado no
disponible si est4 en su tiempo de descanso
O3raptimeP despu5s de haber atendido una
llamada
9alor: pa"se%>"navai#ab#e>inva#i%>"nknow
leave3henempty este par4metro aplica a los clientes que ya est4n en la
cola de espera y en base a los valores indicados/ si
todos los agentes se vuelven no disponibles/ el cliente
ser4 sacado de la cola1 9alor
pa"se%>"navai#ab#e>inva#i%>"nknow
Tevent3hencalled = yes
Teventmemberstatus = yes
)stos dos para metros configurados en yes/ generan una
serie de eventos relacionados con la cola en el $&I de
:2B
-ar5etro )escripci$n
$steris%
reportholdtime .es = 'e anuncia al agente/ antes de contestar la
llamada/ cuanto tiempo el cliente ha esperado en la cola
ringinuse no = no se envan las llamadas a agentes cuyo estado
de la extensin es I+,')
memberdelay tiempo en segundos que el sistema esperar4 antes de
conectar el agente con el cliente1 .e esta forma aunque
hayan agentes disponibles/ el cliente esperar4 ese
tiempo antes de ser conectado con un agente1 htil si se
quiere que el cliente escuche algHn anuncio o
comunicacin 9alor C
timeoutrestart .es = el tiempo de espera para que una agente conteste
una llamada se resetea si el estado de la extensin es
B,'S o !L+*)'EIL+
Tdefaultrule=myrule en el archivo queuerules1conf se configuran distintos
escenarios para mane#ar las colas con el sistema de
penalidades1 )n el caso que se haya configurado un
escenario para esta cola/ en este par4metro se define el
nombre1 'e de#a comentado
member =" $gent/:GGG
member =" $gent/:GG0
member =" $gent/:GG:
a partir de esta linea se definen los miembros de la
cola1 La sintaxis es:
member ="
tecnologa/extensin/penalidad/nombre/extensin
'e ponen los tres agentes configurados en el archivo
agent1conf
$hora se guardan los valores de la tabla en el archivo de configuracin de las colas1 'e renombra el
predefinido:
5v ;etc;asterisk;I"e"es.conf ;etc;asterisk;I"e"es.conf.o#%
'e crea uno nuevo:
nano ;etc;asterisk;I"e"es.conf
se aaden las siguientes lineas:
Bgenera7C
2ersistent1e1=ersyes
auto:i77yes
1onitor'ty2e1i<1onitor
u2datecdrno
:AG
shared"7astca77yes
BventasC
1usicc7assde:au7t
Aannounce?ueue'ventas
strategyringa77
service7eve7120
conte<tventas'e<it
ti1eout15
retry>
ti1eout2rioritya22
weight0
wra2u2ti1e15
auto:i77yes
auto2auseyes
1a<7en50
setinter:acevaryes
set?ueueentryvaryes
set?ueuevaryes
A1e1=er1acro1acro
announce':re?uency*0
1in'announce':re?uency15
A2eriodic'announce':re?uencyE0
Arando1'2eriodic'announceno
announce'ho7dti1eonce
announce'2osition1ore
announce'2osition'7i1it5
announce'round'seconds@0
A?ueue'youarene<t?ueue'youarene<t
A?ueue'thereare?ueue'thereare
A?ueue'ca77swaiting?ueue'ca77swaiting
A?ueue'ho7dti1e?ueue'ho7dti1e
A?ueue'1inutes?ueue'1inutes
A?ueue'seconds?ueue'seconds
A?ueue'thanDyou?ueue'thanDyou
A?ueue're2ortho7d?ueue're2ortho7d
A2eriodic'announce?ueue'2eriodic'announce
A2eriodic'announceanuncio13anuncio2
A1onitor':or1atgs1_wav_wav>*
1onitor'ty2e1i<1onitos
Joine12ty2aused3unavai7a=7e3inva7id3unDnown
7eavewhene12ty2aused3unavai7a=7e3inva7id3unDnown
Aeventwhenca77ed yes
Aevent1e1=erstatus yes
re2ortho7dti1eyes
ringinuseno
1e1=erde7ay5
:A0
ti1eoutrestartyes
Ade:au7tru7e1yru7e
1e1=er G Agent82000
1e1=er G Agent82001
1e1=er G Agent82002
'e guardan los cambios y se recarga el modulo de la aplicacin de las colas en espera:
asterisk +rvvvvvvvvvvvvvvvvvvvvv
!LI" 5o%"#e re#oa% app6I"e"e.so
!LI" I"e"e s/ow ventas
ventas as @ calls 8ma# 3@9 in 'ringall' strateg. 8@s oldtime- @s tal2time9- E:@- C:@- A:@- SL:@:@]
!itin ()@s
=em*ers:
Agent/)@@) 8Fnavaila*le9 as ta2en no calls .et
Agent/)@@@ 8Fnavaila*le9 as ta2en no calls .et
Agent/)@@( 8Fnavaila*le9 as ta2en no calls .et
,o Callers
!on queue sho3 ventas se muestran los datos de las colas1 Los comandos asociados a la aplicacin
queue:
!LI" /e#p I"e"e
queue add member $dd a channel to a specified queue
queue reload _parametersZmembe ;eload queues/ members/ queue rules/ or parameters
queue remove member ;emoves a channel from a specified queue
queue reset stats ;eset statistics for a queue
queue set penalty 'et penalty for a channel of a specified queue
queue sho3 'ho3 status of a specified queue
queue _pauseZunpause` member 8ause or unpause a queue member
queue sho3 rules 'ho3 the rules defined in queuerules1conf
!LI" I"it
'e sale de la consola y se pasa al dialplan:
nano ;etc;asterisk;e0tensions.conf
en el contexto internas se ponen las siguientes lineas
e0ten EW G000>1>Answer
sa5e EW n>d"e"e@ventasD
sa5e EW n>Kang"p
'e guardan los cambios y se recarga el dialplan:
:A:
asterisk +r0 Z%ia#p#an re#oa%Z
.esde la extensin 0GGG conectada a $steris%/ se marca la extensin 2GGG1 !omo no hay agentes
disponibles la llamada terminar41
$hora desde la extensin 0GGG se marca el numero :GGG Opara conectarse como agente a las colas de
esperaP1 ,na veN conectado se entra a la consola de $steris%:
asterisk +rvvvvvvvvvvvvvvv
!LI" I"e"e s/ow ventas
ventas has G calls Omax CGP in gringallg strategy OGs holdtime/ Gs tal%timeP/ M:G/ !:G/ $:G/ 'L:G1Gi
3ithin 0:Gs
&embers:
$gent/:GG: O,navailableP has ta%en no calls yet
Agent;2000 @ot in "seD has ta%en no calls yet
$gent/:GG0 O,navailableP has ta%en no calls yet
+o !allers
)l agente :GGG est4 disponible1 .esde la extensin 0GG0 se marca el numero 2GGG1 !uando el agente
Ola extensin 0GGGP reciba la llamada del cliente Ola extensin 0GG0P/ el estado de la cola de espera
ser4:
!LI" I"e"e s/ow ventas
ventas as @ calls 8ma# 3@9 in 'ringall' strateg. 8@s oldtime- @s tal2time9- E:@- C:@- A:@- SL:@:@]
!itin ()@s
=em*ers:
Agent/)@@) 8Fnavaila*le9 as ta2en no calls .et
Agent/)@@@ /9usy6 as ta2en no calls .et
Agent/)@@( 8Fnavaila*le9 as ta2en no calls .et
,o Callers
y al terminar la llamada:
!LI" I"e"e s/ow ventas
ventas as @ calls 8ma# 3@9 in 'ringall' strateg. 8@s oldtime- )6s tal2time9- E:@- C:(- A:@- SL:(@@:@]
!itin ()@s
=em*ers:
Agent/)@@) 8Fnavaila*le9 as ta2en no calls .et
Agent/)@@@ 8,ot in use9 as ta2en ( calls 8last !as )H secs ago9
Agent/)@@( 8Fnavaila*le9 as ta2en no calls .et
,o Callers
!LI" I"it
!omo se ha visto/ si no hay agentes disponibles no se de#a entrar el cliente a la cola1 !omo se ha dicho
:A2
el llamante se enva a la prioridad que sigue1 'e puede crear otro escenario de este tipo:
nano ;etc;asterisk;e0tensions.conf
en el contexto internas se pone
e0ten EW G001>1>Answer
sa5e EW n>d"e"e@ventasD
sa5e EW n>Voice5ai#@1000'%efa"#tD
sa5e EW n>Kang"p
.e esta forma el llamante tendr4 la oportunidad de de#ar un mensa#e en el buNn de voN1 'e guardan los
cambios/ se recarga el dialplan y desde la extensin 0GGG se marca el 2GG0 Osin agentes conectadosP1
asterisk +rvvvvvvvvvvvv
!LI" %ia#p#an re#oa%
)xecuting W2GG0[externas:0X $ns3erO\'I8/0GGG=GGGGGG0?\/ \\P in ne3 stac%
)xecuting W2GG0[externas::X (ueueO\'I8/0GGG=GGGGGG0?\/ \ventas\P in ne3 stac%
WLct :0 0@:CF:ABX M$;+I+*W0C:?GX: appDqueue1c:C0@G queueDexec: ,nable to #oin queue gventasg
)xecuting W2GG0[externas:2X VoiceMai#@Z!(-;1000+0000001AZ> Z1000'%efa"#tZD in ne3 stac%
!omo no hay agentes disponibles/ la llamada ser4 enviada al buNn de voN1
1B.G Agentes %in5icos
)n $steris% hay dos aplicaciones para aadir un miembro a una cola y para quitarlo de la misma1 )stas
dos aplicaciones son:
$dd(ueue&ember
;emove(ueue&ember
b!ual es la diferencia con la aplicacin $gentloginc
La aplicacin $gentlogin es pensada para call center de grandes dimensiones1 )n el caso de una
pequea empresa que quiera tener un pequeo call center y no quiera que los empleados est5n todo el
tiempo conectados como agentes sino que puedan desarrollar su normal actividad y al mismo tiempo
atender las llamadas/ la aplicacin add(ueue&ember es mucho m4s funcional1
)n el plan de llamadas/ contexto internas/ se aaden estos dos bloques:
nano ;etc;asterisk;e0tensions.conf
e0ten EW 6NA0100U01V>1>A%%I"e"e5e5ber@ventas>!(-;\]*XT*&G^D
:AA
e0ten EW 6NA0100U01V>n>-#a.back@agent+#oginokD
e0ten EW 6NA0100U01V>n>Kang"p
e0ten EW 6NA1100U01V>1>3e5oveI"e"e5e5ber@ventas>!(-;\]*XT*&G^D
e0ten EW 6NA1100U01V>n>-#a.back@agent+#ogge%offD
e0ten EW 6NA1100U01V>n>Kang"p
!on el primer bloque las extensiones se aaden a la cola ventas/ con el segundo se quitan1
6ay dos aplicaciones m4s que permiten a los agentes din4micos ponerse en pausa y no atender las
llamadas para luego/ despu5s del QdescansoR volver a atender la cola1 6ay que acordarse que cuando un
agente se pone en pausa/ por como est4 configurada la cola/ el agente ser4 considerado como no
disponible1 )stas dos aplicaciones se pueden aadir al plan de llamadas de la siguiente forma:
e0ten EW 6NA2100U01V>1>-a"sed"e"eMe5ber@ventas>!(-;\]*XT*&G^D
e0ten EW 6NA2100U01V>n>-#a.back@agent+#ogge%offD
e0ten EW 6NA2100U01V>n>Kang"p
e0ten EW 6NAG100U01V>1>9npa"sed"e"eMe5ber@ventas>!(-;\]*XT*&G^D
e0ten EW 6NAG100U01V>n>-#a.back@agent+#oginokD
e0ten EW 6NAG100U01V>n>Kang"p
Eodos los datos de las conexiones de los agentes din4micos se guardan en la base de datos interna de
$steris%1
'e guardan los cambios y se recarga el plan de llamadas:
asterisk +rvvvvvvvvvvvvv
!LI" %ia#p#an re#oa%
$hora desde la extensin 0GGG se llama el numero f?G0GGG y se mira lo que aparece en la base de
datos de $steris%:
!LI" %atabase s/ow
/>ueue/0ersistent=em*ers/ventas : SI0/(@@@[@[@[SI0/(@@@[SI0/(@@@
!LI" I"it
!omo en el archivos de las colas de espera se ha configurado el par4metro persistent5e5bersE.es/ si
se reinicia $steris%/ los datos del agente deben permanecer en la base de datos1
service asterisk restart
asterisk +rvvvvvvvvvvvvvvvvvvvvvvv
!LI" %atabase s/ow
:AC
/>ueue/0ersistent=em*ers/ventas : SI0/(@@@[@[@[SI0/(@@@[SI0/(@@@
)l agente no se ha borrado de la cola de espera1 8ara probarlo desde la extensin 0GG0 se marca el
numero 2GG01
Eerminada la prueba se quita la extensin 0GGG de la cola de espera llamando desde esa extensin el
numero: f?00GGG
'e averigua en la base de datos de $steris% que efectivamente el agente ya no est4 registrado:
!LI" %atabase s/ow
Sa no aparece la linea:
/>ueue/0ersistent=em*ers/ventas : SI0/(@@@[@[@[SI0/(@@@[SI0/(@@@
1B.B *sta%Hsticas %e #as co#as
8or defecto todas las estadsticas de las colas se guardan en el archivo predefinido queueDlog presente
en la carpeta /var/log/asteris%1 La mayora de los programas que permiten obtener gr4ficos de estas
estadsticas/ leen ese archivo para este efecto1 )ntre ellos/ se pueden citar los dos m4s reconocidos Oel
primero open source y el segundo comercialP
$sternic !all !enter 'tats
(ueue&etrics
b!mo se leen los datos presentes en este archivoc
!ada linea del archivo puede contener hasta 0G campos distintos separados por un pipe Z )stos son:
fecha y hora en formado unix
identificador Hnico de la llamada
nombre de la cola
nombre del agente
evento que se ha presentado
campos de datos Ohasta CP que contienen los valores devueltos por los eventos de la cola1
)n el caso que el evento no incluya todos los campos/ en lugar de los datos aparecer4 el valor +L+)1
Los eventos que se pueden presentar son:
A7A)8: cuando un cliente abandona la cola sin ser atendido1 Kunto al evento aparecer4 el
nombre de la cola/ la posicin final que tena el cliente cuando abandon la cola/ la posicin
inicial que tena al momento de entrar en la cola y el tiempo que esper antes de colgar1
A))M*M7*3: cuando se aade un agente din4mico a la cola1 Kunto al evento aparecer4 en la
:A@
misma linea la variable ,+I(,)I. de la llamada/ el nombre de la cola a la que se registr el
agente y la extensin con la que se registr1
)#emplo: 02:2@B0GGFZ02:2@B0GGF1?ZventasZ'I8/0GGGZ$..&)&B);Z
A1*T)9M-& el agente ha rechaNado la llamada mientra el cliente estaba escuchando el
anuncio de la cola
A1*TL81(: cuando un agente se conecta utiliNando la aplicacin $gentlogin1 Kunto al
evento aparecer4 en la misma linea la variable ,+I(,)I. de la llamada/ )l numero del agente
y el canal utiliNado para el registro1
)#emplo: 02:2@FB?BAZ02:2@FB?FC12Z+L+)Z$gent/:GGGZ$*)+ELL*I+Z'I8/0GGG=GGGGGGG2
A1*TL81844: cuando un agente se desconecta1 Kunto al evento aparecer4 en la misma
linea la variable ,+I(,)I. de la llamada/ el numero del agente/ el canal utiliNado cuando se
registr y el tiempo en segundos que ha quedado conectado1
)#emplo: 02:2@FBF:CZ02:2@FB?FC12Z+L+)Z$gent/:GGGZ$*)+ELL*L--Z'I8/0GGG=GGGGGGG2Z20
C8M-L*T*A1*T: cuando un agente que ha atendido una llamada cuelga1 Kunto al evento
aparecer4 en la misma linea la variable ,+I(,)I./ el nombre de cola/ la extensin del agente/
el tiempo que esper el cliente antes de ser atendido/ la duraccin de la llamada y la posicin
inicial que tena el cliente al entrar en la cola1
)#emplo: 02:2@BG?0:Z02:2@BG@C21AZventasZ$gent/:GGGZ!L&8L)E)$*)+EZBZCGZ0
C8M-L*T*CALL*3: cuando un cliente atendido por un agente cuelga la llamada1 Kunto al
evento aparecer4 en la misma linea/ la variable ,+I(,)I./ el nombre de la cola/ la extensin
del agente/ el tiempo que esper el cliente antes de ser atendido/ la duraccin de la llamada y la
posicin inicial que tena el cliente al entrar en la cola1
)#emplo: 02:2@BCFGGZ02:2@BA:?A1:ZventasZ'I8/0GGGZ!L&8L)E)!$LL);Z0@Z:?Z0
C84(13*L8A): cuando se recarga la configuracin de $steris%1
)#emplo: 02:2C20AABZ+L+)Z+L+)Z+L+)Z!L+-I*;)LL$.Z
C8*CT: cuando un cliente es atendido por un agente1 Kunto al evento aparecer4/ el
,+I(,)I. de la llamada del cliente/ el nombre de la cola/ la extensin del agente que ha
atendido el cliente/ el tiempo que ha esperado el cliente antes de ser atendido/ el ,+I(,)I. de
la llamada entre cliente y agente/ y el tiempo que timbr la extensin del agente1
)#emplo: 02:2@BG@@:Z02:2@BG@C21AZventasZ$gent/:GGGZ!L++)!EZBZ02:2@BG@C21CZG
*T*3d9*9*: cuando un cliente entra en la cola1 Kunto al evento aparecer4/ el ,+I(,)I.
:A?
de la llamada/ el nombre de la cola/ la ,;Lsi aplica y el !$LL);I. del cliente1
)#emplo: 02:2@BG@C2Z02:2@BG@C21AZventasZ+L+)Z)+E);(,),)ZZ0GG0
*X(T*M-TP: cuando un cliente viene desconectado de la cola porque no hay agentes
disponibles1 Kunto al evento aparecer4 el ,+I(,)I. de la llamada/ el nombre de la cola/
posicin inicial y final del cliente en la cola/ y el tiempo que ha esperado en la cola antes de ser
desconectado1
)#emplo: 02:2?0G2:GZ02:2?0G:F010?ZventasZ+L+)Z)>IE)&8ESZ0Z0Z2F
*X(TT(TK?*P: el cliente mientras esperaba en la cola ha presionado una tecla1 Kunto al
evento aparecer4 el ,+I(,)I. de la llamada/ el noombre de la cola/ el numero de la tecla
presionado Oen este caso FP/ y la posicin del cliente en la cola antes de presionar la tecla1
)#emplo: 02:2?0GFCGZ02:2?0GFAA1:2ZventasZ+L+)Z)>IEMIE6<)SZFZ0
*X(TT(TKT(M*89T: el cliente ha sido desconectado de la cola porque despu5s del tiempo
m4ximo permitido de espera/ ningHn agente lo ha atendido1 Kunto al evento aparecer4 el
,+I(,)I. de la llamada/ el nombre de la cola/ la posicin final y inicial del cliente en la cola/
y el tiempo que 5ste ha esperado antes de ser desconectado
-A9!*: cuando un agente se pone en pausa utiliNando la aplicacin 8ause(ueue&ember de
$steris%1 Kunto al evento aparecer4 el nombre de la cola y la extensin del agente1 'i el agente
ha sido desconectado de la cola porque no ha atendido una llamada entes del tiempo
configurado/ aparecer4 tambi5n el valor $uto=8ause
)#emplo0: 02:2?0:B@GZ+L+)ZventasZ'I8/0GGGZ8$,')Z
)#emplo:: 02:2?0GCA0Z+L+)ZventasZ'I8/0GGGZ8$,')Z$uto=8ause
d9*9*!TA3T: cuando $steris% ha sido reiniciado
)#emplo: 02:2AA?:A0Z+L+)Z+L+)Z+L+)Z(,),)'E$;EZ
3*M8V*M*M7*3: cuando una agente se desconecta de la cola con la aplicacin
;emovequeuemember1 Kunto al evento aparecer4 el ,+I(,)I. de la llamada/ el nombre de la
cola y la extensin del agente1
3(18A!T*3: cuando la extensin de un agente timbra y al agente no contesta dentro
del tiempo configurado1 Kunto al evento aparecer4 el ,+I(,)I. de la llamada/ el nombre de la
cola/ la extensin del agente que no ha contestado la llamada y el tiempo Oen milisegundosP que
ha timbrado la extensin del agente:
)#emplo: 02:2?00C:FZ02:2?00AFG120ZventasZ'I8/0GGGZ;I+*+L$+'M);ZACGGG
!P!C8M-AT: la llamada ha sido contestada por agente pero ha terminado porque los dos
:AF
canales Oclliente y agenteP no eran compatibles1
T3A!4*3: cuando el cliente/ atendido por un agente/ ha sido transferido a otra extensin1
Kunto al evento aparecer4 el ,+I(,)I. de la llamada/ el nombre de la cola/ la extensin del
agente que ha atendido la llamada/ el numero de la extensin donde ha sido transferida la
llamada/ el contexto utiliNado para la transferencia/ el tiempo que ha esperado el cliente en la
cola/ el tiempo de duraccin de la llamada entes de la transferencia y la posicin del cliente al
entrar en la cola1
)#emplo: 02:2?0:@@2Z02:2?0:@:?12AZventasZ'I8/0GGGZE;$+'-);Z0GG:ZexternasZ0:Z:AZ0
9-A9!*: cuando un agente vuelve a conectarse a la cola utiliNando la aplicacin
,npause(ueue&ember1 Kunto al evento aparecer4 el nombre de la cola y la extensin del
agente1
:AB
CA-(T9L8 XV
Asterisk . #os 4AX
.esde la versin 01@1:1>/ $steris% soporta la recepcin y trasmisin de -$> a trav5s del modulo
appDfax1 )ste modulo se apoya en las libreras 'pan.'8 y permite la recepcin y envo -$> a trav5s
de dos protocolos: E2G OaudioP y E2F O-oI8 I -ax over I8P1 )n este capitulo se presentar4 primero una
solucin basada en la combinacin del programa I$>&L.)& con el servidor de -$> 6SL$-$>/
para luego abordar el tema del protocolo E2F1
1C.1 (AX5o%e5
I$>modem es un mdem soft3are/ escrito en lengua#e ! que utiliNa un canal I$>: Ouno de los
protocolos presentes en $steris%P en lugar de una lnea telefnica y un .'8 soft3are en lugar de un
chip .'8 O.igital 'ignal 8rocessingP1 'e descargan las fuentes de I$>modem:
c% ;"sr;src
wget /ttp&;;switc/.%#.so"rceforge.net;so"rceforge;ia05o%e5;ia05o%e5+1.2.0.tar.gz
'e descomprime el archivo
tar +0f ia05o%e5+1.2.0.tar.gz
'e entra en la carpeta:
c% ia05o%e5+1.2.0
'e compila:
.;config"re
5ake
'e copia el programa compilado en la siguiente carpeta:
cp ia05o%e5 ;"sr;#oca#;sbin
!omo se van a crear dos mdem I$>:/ se crean algunas carpetas y archivos para el correcto
funcionamiento de I$>modem:
5k%ir ;etc;ia05o%e5
5k%ir ;var;#og;ia05o%e5
to"c/ ;var;#og;ia05o%e5;tt.(AX1
to"c/ ;var;#og;ia05o%e5;tt.(AX2
to"c/ ;var;#og;ia05o%e5;ia05o%e5
)n la carpeta de las fuentes de I$>modem hay un archivo de configuracin predefinido para la
configuracin de un mdem I$>1 'e puede tomar como referencia para la creacin de los dos mdem
I$> que se utiliNar4n para la recepcin y envo de -$> con $steris%1 'e configura el primero
c% ;etc;ia05o%e5
nano tt.(AX1
'e configura en este modo:
device 8dev8tty.AK1
owner uuc2;uuc2
1ode EE0
2ort >540
re:resh E0
server 124$0$0$1
2eerna1e ia<1ode11
secret 2=<5050
cidna1e LoP%oLoice
cidnu1=er KKKKKKKKKK
codec u7aw
'e guardan los cambios1 )sta configuracin es valida si I$>modem est4 instalado en el mismo servidor
donde se instal $steris%1 )n el caso de dos servidores distintos hay que indicar en la lnea server la
direccin I8 del servidor $steris%1 'e pone la contrasea en secret y en cidname y cidnumber nombre y
numero telefnico que usar4 I$>modem para presentarse a $steris%1 8ara configurar distintos
I$>modem hay que modificar en la primera lnea el nombre del device/ en port el puerto y en
peername el nombre1
(M-83TAT*& en #a #inea co%ec /a. I"e in%icar "n co%ec a"%io I"e no "ti#ice
a#gorit5os %e co5presi$n. *sto porI"e e# protoco#o TG0 f"nciona so#a5ente con cana#es
a"%io no co5pri5i%os.
8ara el segundo I$>modem la configuracin ser4:
nano tt.(AX2
device 8dev8tty.AK2
owner uuc2;uuc2
1ode EE0
2ort >541
re:resh E0
server 124$0$0$1
:C:
2eerna1e ia<1ode12
secret 2=<5051
cidna1e LoP%oLoice
cidnu1=er KKKKKKKKKK
codec u7aw
'e guardan los cambios1
$hora hay que modificar la configuracin de $steris% para aadir las dos extensiones I$> Oiaxmodem0
y iaxmodem:P en el archivo iax1conf
nano ;etc;asterisk;ia0.conf
$l final del archivo se aaden los dos bloques que siguen:
Bia<1ode11C
ty2e:riend
conte<t:a<
disa77owa77
a77owu7aw
userna1eia<1ode11
secret2=<5050
?ua7i:yyes
notrans:eryes
hostdyna1ic
re?uireca77toDenauto
Bia<1ode12C
ty2e:riend
conte<t:a<
disa77owa77
a77owu7aw
userna1eia<1ode12
secret2=<5051
?ua7i:yyes
notrans:eryes
hostdyna1ic
re?uireca77toDenauto
'e guardan los cambios y se actualiNa la configuracin de I$>: en $steris%
asterisk +rvvvvvvvvvvvvvvvvvvv
!LI" ia02 re#oa%
'e abre otra ventana terminal o se crea otra sesin de 8uEEy y se hace una prueba para ver si la
conexin entre I$>modem y $steris% funciona:
:C2
c% ;"sr;#oca#;sbin
.;ia05o%e5 tt.(AX1
debe aparecer:
$)@((1(@1)" @D:"":AH' =odem started
$)@((1(@1)" @D:"":AH' Setting device 5 '/dev/tt.IAK('
$)@((1(@1)" @D:"":AH' Setting o!ner 5 'uucp:uucp'
$)@((1(@1)" @D:"":AH' Setting mode 5 'CC@'
$)@((1(@1)" @D:"":AH' Setting port 5 "3H@
$)@((1(@1)" @D:"":AH' Setting refres 5 C@
$)@((1(@1)" @D:"":AH' Setting server 5 '()H:@:@:('
$)@((1(@1)" @D:"":AH' Setting peername 5 'ia#modem('
$)@((1(@1)" @D:"":AH' Setting secret 5 'p*#3@3@'
$)@((1(@1)" @D:"":AH' Setting cidname 5 'LoW?oLoice'
$)@((1(@1)" @D:"":AH' Setting cidnum*er 5 'KKKKKKKK'
$)@((1(@1)" @D:"":AH' Setting codec 5 ula!
$)@((1(@1)" @D:"":AH' %pened pt.- slave device: /dev/pts/"
$)@((1(@1)" @D:"":AH' Created /dev/tt.IAK( s.m*olic lin2
Ignoring un2no!n information element 'Fn2no!n I7' 83"9 of lengt @
$)@((1(@1)" @D:"":AH' Registration co127eted success:u77y:
'e controla que en la consola de $steris% apareNca la conexin de I$>modem Ovolviendo a la otra
ventana Eerminal abiertaP:
8ara arrancar I$>modem en autom4tico se instala el script presente en la carpeta de las fuentes de
I$>modem:
c% ;"sr;src;ia05o%e5+1.2.0
5v ia05o%e5.init.fe%ora ;etc;init.%;ia05o%e5
se vuelve e#ecutable:
c/5o% F0 ;etc;init.%;ia05o%e5
e se configura para el arranque autom4tico:
c/kconfig ++a%% ia05o%e5
c/kconfig ia05o%e5 on
:CA
'e arranca el programa:
;etc;init.%;ia05o%e5 start
9olviendo a la consola de $steris%/ las dos extensiones deben estar registradas:
!LI" ia02 s/ow peers
,ame/Fsername Host =as2 0ort Status
mar2o 8Fnspecified9 8D9 )33:)33:)33:)33 @ 879 F,&,%E,
mar2o)/mar2o) (D@:)3A:(C):)@C 8D9 )33:)33:)33:)33 (A)CD 879 %& 8(@) ms9
ia#modem(/ia#mo ()H:@:@:( 8D9 )33:)33:)33:)33 "3H@ 879 %& 8( ms9
ia#modem)/ia#mo ()H:@:@:( 8D9 )33:)33:)33:)33 "3H( 879 %& 8A ms9
" ia#) peers $A online- ( offline- @ unmonitored'
$hora que I$>modem ha sido instalado y configurado en $steris%/ se puede continuar con la
instalacin y configuracin de 6ylafax1
1C.2 K.#afa0
6ylafax es un servidor -$> diseado para sistemas Linux que se basa en un sistema cliente=servidor1
,n cliente O-$>P se conecta al servidor O6ylafaxP y a trav5s de el enva el -$>
6ay que empeNar instalando algunas OdependenciasP requeridas por 6ylafax:
."5 insta## g/ostscript g/ostscript+%eve# s/ar"ti#s g/ostscript+fonts
)n la pagina de 6ylafax est4n presentes los paquetes para las distintas distribuciones de Linux:
'e descargan los paquetes para !entL' C Ocliente y servidorP:
c% ;"sr;src
wget ftp&;;ftp./.#afa0.org;binar.;#in"0;re%/at;6.0.C;/.#afa0+server+6.0.C+1r/e#C.iG=6.rp5
wget ftp&;;ftp./.#afa0.org;binar.;#in"0;re%/at;6.0.C;/.#afa0+c#ient+6.0.C+1r/e#C.iG=6.rp5
'e instalan:
rp5 +iv/ /.#afa0N.rp5
)l paso a seguir es la configuracin de de 6ylafax1 )sto se hace a trav5s de la utilidad faxsetup:
fa0set"p
Sould an entr. *e added for te Ja#=aster to /etc/aliases $.es'? no
:CC
Fpdate /var/spool/.lafa#/status/an.:info:
H.laJAK configuration parameters are:
$(' Init script starts fa#q: .es
$)' Init script starts fa#d .es
$A' Start paging protocol: no
Are tese o2 $.es'? yes
'e contesta yes1 Luego inicia la configuracin de 6ylafax1 6ay que indicar los par4metros como
aparecen personaliNando el numero de tel5fono y el prefi#o pas1 )n negrita los datos que se van
insertando desde el teclado1
&odem support functions 3ritten to /var/spool/hylafax/etc/setup1modem1
!onfiguration parameters 3ritten to /var/spool/hylafax/etc/setup1cache1
+o scheduler config file exists/ creating one from scratch1
!ountry code W0Xc CA
$rea code WXc C
Long distance dialing prefix W0Xc 0
International dialing prefix WG00Xc 00
.ial string rules file Orelative to /var/spool/hylafaxP W\etc/dialrules\Xc
Eracing during normal server operation W0Xc
.efault tracing during send and receive sessions WGxffffffffXc
!ontinuation cover page Orelative to /var/spool/hylafaxP WXc
Eimeout 3hen converting 8ost'cript documents OsecsP W0FGXc
&aximum number of concurrent #obs to a destination W0Xc
.efine a group of modems WXc
Eime of day restrictions for outbound #obs W\$ny\Xc
Eimeout before purging a stale ,,!8 loc% file OsecsP W2GXc
&ax number of pages to permit in an outbound #ob WGxffffffffXc
'yslog facility name for 'erverEracing messages WdaemonXc
Ehe non=default scheduler parameters are:
!ountry!ode: C?
$rea!ode: C
Long.istance8refix: G
International8refix: GG
$re these o% WyesXc .es
!reating ne3 configuration file /var/spool/hylafax/etc/config111
;estarting 6yla-$> server processes1
:C@
'hould I restart the 6yla-$> server processes WyesXc .es
/etc/rc1d/init1d/hylafax start
'tarting 6yla-$> queue manager OfaxqP: W L< X
'tarting 6yla-$> server OhfaxdP: W L< X
;estarting 6yla-$> modem manager OfaxgettyP: W L< X
Sou do not appear to have any modems configured for use1 &odems are
configured for use 3ith 6yla-$> 3ith the faxaddmodemOF!P command1
.esde la linea que sigue se configura el primer -$> OttyI$>0P
.o you 3ant to run faxaddmodem to configure a modem WyesXc .es
'erial port that modem is connected to UVg tt.(AX1
L%/ time to setup a configuration file for the modem1 Ehe manual
page configOC-P may be useful during this process1 $lso be a3are
that at any time you can safely interrupt this procedure1
;eading scheduler config file /var/spool/hylafax/etc/config1
+o existing configuration/ letgs do this from scratch1
!ountry code WC?Xc
$rea code WCXc
8hone number of fax modem Wa01BBB1CCC10:0:Xc FCACG=C0J62
Local identification string Ofor E'I/!I*P W\+othing'etup\Xc C"rsoAsterisk
Long distance dialing prefix W0Xc 0
International dialing prefix WG00Xc 00
.ial string rules file Orelative to /var/spool/hylafaxP Wetc/dialrulesXc
Eracing during normal server operation W0Xc
Eracing during send and receive sessions W00Xc
8rotection mode for received facsimile WG@GGXc
8rotection mode for session logs WG@GGXc
8rotection mode for ttyI$>0 WG@GGXc
;ings to 3ait before ans3ering W0Xc 2
&odem spea%er volume WoffXc
!ommand line arguments to getty program W\=h il dxDis\Xc
8athname of E'I access control list file Orelative to /var/spool/hylafaxP W\\Xc
8athname of !aller=I. access control list file Orelative to /var/spool/hylafaxP W\\Xc
Eag line font file Orelative to /var/spool/hylafaxP Wetc/lut;'0F1pcfXc
Eag line format string W\-rom iilZicZ8age ii8 of iiE\Xc
Eime before purging a stale ,,!8 loc% file OsecsP W2GXc
6old ,,!8 loc%file during inbound data calls WSesXc
6old ,,!8 loc%file during inbound voice calls WSesXc
8ercent good lines to accept during copy quality chec%ing WBCXc
:C?
&ax consecutive bad lines to accept during copy quality chec%ing WCXc
&ax number of pages to accept in a received facsimile W:CXc
'yslog facility name for 'erverEracing messages WdaemonXc
'et ,I. to G to manipulate !LL!$L W\\Xc
,se available priority #ob scheduling mechanism W\\Xc
Ehe non=default server configuration parameters are:
!ountry!ode: C?
$rea!ode: C
-$>+umber: aC?C2FCGB@:
Long.istance8refix: G
International8refix: GG
.ial'tring;ules: etc/dialrules
'essionEracing: 00
;ingsBefore$ns3er: :
'pea%er9olume: off
*etty$rgs: \=h il dxDis\
LocalIdentifier: !urso$steris%
EagLine-ont: etc/lut;'0F1pcf
EagLine-ormat: \-rom iilZicZ8age ii8 of iiE\
&ax;ecv8ages: :C
$re these o% WyesXc .es
+o3 3e are going to probe the tty port to figure out the type
of modem that is attached1 Ehis ta%es a fe3 seconds/ so be patient1
+ote that if you do not have the modem cabled to the port/ or the
modem is turned off/ this may hang O#ust go and cable up the modem
or turn it on/ or 3hateverP1
8robing for best speed to tal% to modem: 2FAGG L<1
$bout fax classes:
Ehe difference bet3een fax classes has to do 3ith ho3 6yla-$> interacts
3ith the modem and the fax protocol features that are used 3hen sending
or receiving faxes1 Lne class isngt inherently better than anotherT
ho3ever/ one probably 3ill suit a usergs needs better than others1
!lass 0 relies on 6yla-$> to perform the bul% of the fax protocol1
!lass : relies on the modem to perform the bul% of the fax protocol1
!lass :1G is similar to !lass : but may include more features1
!lass 01G is similar to !lass 0 but may add 912A=fax capability1
!lass :10 is similar to !lass :1G but adds 912A=fax capability1
:CF
6yla-$> generally 3ill have more features 3hen using !lass 0/01G than
3hen using most modemsg !lass : or !lass :1G implementations1 *enerally
any problems encountered in !lass 0/01G can be resolved by modifications
to 6yla-$>/ but usually any problems encountered in !lass :/:1G/:10 3ill
require the modem manufacturer to resolve it1
,se !lass 0 unless you have a good reason not to1
Ehis modem loo%s to have support for !lass 01G and 01
6o3 should it be configured W01GXc
6mm/ this loo%s li%e a !lass 01G modem1
8roduct code O$EIGP is \spandsp\1
Lther information O$EI2P is \3331soft=s3itch1org\1
.E)=.!) flo3 control scheme WdefaultXc
&odem manufacturer is \,n%no3n\1
&odem model is \,n%no3n\1
,sing prototype configuration file class01G111
Ehere is no prototype configuration file for your modem/ so 3e 3ill
have to fill in the appropriate parameters by hand1 Sou 3ill need the
manual for ho3 to program your modem to do this tas%1 In case you are
uncertain of the meaning of a configuration parameter you should
consult the configOC-P manual page for an explanation1
+ote that modem commands must be specified exactly as they are to be
sent to the modem1 +ote also that quote mar%s O\P 3ill not be displayed
and 3ill automatically be deleted1 Sou can use this facility to supply
null parameters as \\1
-inally/ be3are that the set of parameters is long1 If you prefer to
use your favorite editor instead of this script you should fill things
in here as best you can and then edit the configuration file
\/var/spool/hylafax/etc/config1ttyI$>0\
after completing this procedure1
!ommand to enter !lass 0 W$Ea-!L$''=01GXc
!ommand to stop and 3ait prior to sending 88& W$Ea-E'=?Xc
!ommand to stop and 3ait prior to sending E!- W$Ea-E'=?Xc
!ommand to stop and 3ait prior to sending )L8 W$Ea-E'=BXc
)xtra bytes in a received 6.L! frame WAXc
&aximum time to 3ait for L< after aborting a receive OmsP W:GGXc
&aximum 3ait for initial identification frame OmsP WAGGGGXc
:CB
!ommand to ensure silence after receiving 6.L! and before sending W$Ea-;'=?Xc
Ehe modem configuration parameters are:
!lass0!md: $Ea-!L$''=01G
!lass088&Mait!md: $Ea-E'=?
!lass0E!-Mait!md: $Ea-E'=?
!lass0)L8Mait!md: $Ea-E'=B
!lass0-rameLverhead: A
!lass0;ecv$bortL<: :GG
!lass0;ecvIdentEimer: AGGGG
!lass0'3itching!md: $Ea-;'=?
!lass0E!-&ax+onJero: 0G
!lass0E!-&in;un: 0GGG
$re these o% WyesXc .es
!reating ne3 configuration file /var/spool/hylafax/etc/config111
111saving current file as /var/spool/hylafax/etc/config1sav1
.ongt forget to run faxmodemOF!P Oif you have a send=only environmentP
or configure init to run faxgetty on ttyI$>01
Eerminada la configuracin del primer mdem/ el servidor 6yalafax preguntar4 si se quieres instalar
otro1 'e contesta con yes y se configura el segundo mdem OttyI$>:P
.o you 3ant to run faxaddmodem to configure another modem WyesXc .es
'erial port that modem is connected to WXc tt.(AX2
L%/ time to setup a configuration file for the modem1 Ehe manual
page configOC-P may be useful during this process1 $lso be a3are
that at any time you can safely interrupt this procedure1
;eading scheduler config file /var/spool/hylafax/etc/config1
+o existing configuration/ letgs do this from scratch1
!ountry code WC?Xc
$rea code WCXc
8hone number of fax modem Wa01BBB1CCC10:0:Xc FCACG=C0J62
Local identification string Ofor E'I/!I*P W\+othing'etup\Xc C"rsoAsterisk
Long distance dialing prefix W0Xc 0
International dialing prefix WG00Xc 00
.ial string rules file Orelative to /var/spool/hylafaxP Wetc/dialrulesXc
Eracing during normal server operation W0Xc
Eracing during send and receive sessions W00Xc
:@G
8rotection mode for received facsimile WG@GGXc
8rotection mode for session logs WG@GGXc
8rotection mode for ttyI$>: WG@GGXc
;ings to 3ait before ans3ering W0Xc 2
&odem spea%er volume WoffXc
!ommand line arguments to getty program W\=h il dxDis\Xc
8athname of E'I access control list file Orelative to /var/spool/hylafaxP W\\Xc
8athname of !aller=I. access control list file Orelative to /var/spool/hylafaxP W\\Xc
Eag line font file Orelative to /var/spool/hylafaxP Wetc/lut;'0F1pcfXc
Eag line format string W\-rom iilZicZ8age ii8 of iiE\Xc
Eime before purging a stale ,,!8 loc% file OsecsP W2GXc
6old ,,!8 loc%file during inbound data calls WSesXc
6old ,,!8 loc%file during inbound voice calls WSesXc
8ercent good lines to accept during copy quality chec%ing WBCXc
&ax consecutive bad lines to accept during copy quality chec%ing WCXc
&ax number of pages to accept in a received facsimile W:CXc
'yslog facility name for 'erverEracing messages WdaemonXc
'et ,I. to G to manipulate !LL!$L W\\Xc
,se available priority #ob scheduling mechanism W\\Xc
Ehe non=default server configuration parameters are:
!ountry!ode: C?
$rea!ode: C
-$>+umber: aC?C2FCGB@:
Long.istance8refix: G
International8refix: GG
.ial'tring;ules: etc/dialrules
'essionEracing: 00
;ingsBefore$ns3er: :
'pea%er9olume: off
*etty$rgs: \=h il dxDis\
LocalIdentifier: !urso$steris%
EagLine-ont: etc/lut;'0F1pcf
EagLine-ormat: \-rom iilZicZ8age ii8 of iiE\
&ax;ecv8ages: :C
$re these o% WyesXc .es
+o3 3e are going to probe the tty port to figure out the type
of modem that is attached1 Ehis ta%es a fe3 seconds/ so be patient1
+ote that if you do not have the modem cabled to the port/ or the
modem is turned off/ this may hang O#ust go and cable up the modem
or turn it on/ or 3hateverP1
8robing for best speed to tal% to modem: 2FAGG L<1
:@0
$bout fax classes:
Ehe difference bet3een fax classes has to do 3ith ho3 6yla-$> interacts
3ith the modem and the fax protocol features that are used 3hen sending
or receiving faxes1 Lne class isngt inherently better than anotherT
ho3ever/ one probably 3ill suit a usergs needs better than others1
!lass 0 relies on 6yla-$> to perform the bul% of the fax protocol1
!lass : relies on the modem to perform the bul% of the fax protocol1
!lass :1G is similar to !lass : but may include more features1
!lass 01G is similar to !lass 0 but may add 912A=fax capability1
!lass :10 is similar to !lass :1G but adds 912A=fax capability1
6yla-$> generally 3ill have more features 3hen using !lass 0/01G than
3hen using most modemsg !lass : or !lass :1G implementations1 *enerally
any problems encountered in !lass 0/01G can be resolved by modifications
to 6yla-$>/ but usually any problems encountered in !lass :/:1G/:10 3ill
require the modem manufacturer to resolve it1
,se !lass 0 unless you have a good reason not to1
Ehis modem loo%s to have support for !lass 01G and 01
6o3 should it be configured W01GXc
6mm/ this loo%s li%e a !lass 01G modem1
8roduct code O$EIGP is \spandsp\1
Lther information O$EI2P is \3331soft=s3itch1org\1
.E)=.!) flo3 control scheme WdefaultXc
&odem manufacturer is \,n%no3n\1
&odem model is \,n%no3n\1
,sing prototype configuration file class01G111
Ehere is no prototype configuration file for your modem/ so 3e 3ill
have to fill in the appropriate parameters by hand1 Sou 3ill need the
manual for ho3 to program your modem to do this tas%1 In case you are
uncertain of the meaning of a configuration parameter you should
consult the configOC-P manual page for an explanation1
+ote that modem commands must be specified exactly as they are to be
sent to the modem1 +ote also that quote mar%s O\P 3ill not be displayed
and 3ill automatically be deleted1 Sou can use this facility to supply
null parameters as \\1
-inally/ be3are that the set of parameters is long1 If you prefer to
:@:
use your favorite editor instead of this script you should fill things
in here as best you can and then edit the configuration file
\/var/spool/hylafax/etc/config1ttyI$>:\
after completing this procedure1
!ommand to enter !lass 0 W$Ea-!L$''=01GXc
!ommand to stop and 3ait prior to sending 88& W$Ea-E'=?Xc
!ommand to stop and 3ait prior to sending E!- W$Ea-E'=?Xc
!ommand to stop and 3ait prior to sending )L8 W$Ea-E'=BXc
)xtra bytes in a received 6.L! frame WAXc
&aximum time to 3ait for L< after aborting a receive OmsP W:GGXc
&aximum 3ait for initial identification frame OmsP WAGGGGXc
!ommand to ensure silence after receiving 6.L! and before sending W$Ea-;'=?Xc
Ehe modem configuration parameters are:
!lass0!md: $Ea-!L$''=01G
!lass088&Mait!md: $Ea-E'=?
!lass0E!-Mait!md: $Ea-E'=?
!lass0)L8Mait!md: $Ea-E'=B
!lass0-rameLverhead: A
!lass0;ecv$bortL<: :GG
!lass0;ecvIdentEimer: AGGGG
!lass0'3itching!md: $Ea-;'=?
!lass0E!-&ax+onJero: 0G
!lass0E!-&in;un: 0GGG
$re these o% WyesXc .es
!reating ne3 configuration file /var/spool/hylafax/etc/config1ttyI$>:111
!reating fifo /var/spool/hylafax/-I-L1ttyI$>: for faxgetty111 done1
.one setting up the modem configuration1
!hec%ing /var/spool/hylafax/etc/config for consistency111
111everything loo%s o%T leaving existing file unchanged1
.ongt forget to run faxmodemOF!P Oif you have a send=only environmentP
or configure init to run faxgetty on ttyI$>:1
6ylafax preguntar4 si se quiere configurar otro mdem:
.o you 3ant to run faxaddmodem to configure another modem WyesXc no
'e contesta no1 )l servidor de -$> avisar4 que para que la llamadas sean contestadas en autom4tico
:@2
hay que configurar faxgetty Ola utilidad que se encarga de esta tareaP y si se quiere iniciar faxmodem
para los dos -$> configurados Ose contesta yesP:
Sou do not appear to be using faxgetty to notify the 6yla-$> scheduler
about ne3 modems and/or their status1 Ehis means that you must use the
faxmodem program to inform the ne3 faxq process about the modems you
3ant to have scheduled by 6yla-$>1 Be3are that if you have modems that
require non=default capabilities specified to faxmodem then you should
read faxmodemOF!P manual page and do this 3or% yourself Osince this
script is not intelligent enough to automatically figure out the modem
capabilities and supply the appropriate argumentsP1
'hould I run faxmodem for each configured modem WyesXc .es
/usr/sbin/faxmodem ttyI$>0
/usr/sbin/faxmodem ttyI$>:
.one verifying system setup1
La configuracin de los dos mdem ha terminado1 $hora se configura faxgetty en el archivo inittab de
forma que la utilidad se inicie a arrancar el servidor Linux:
nano ;etc;inittab
despu5s de esta linea:
#E;2@>5;res2awn;8s=in81ingetty ttyE
se pone:
:a<1;2@>5;res2awn;8usr8s=in8:a<getty tty.AK1
:a<2;2@>5;res2awn;8usr8s=in8:a<getty tty.AK2
'e guardan los cambios y se recarga la configuracin de inittab:
init I
'e averigua que faxgetty este corriendo para los dos -$>:
ps a"0 [ grep tt.(AX
'e reinicia 6ylafax
;etc;init.%;/.#afa0 restart
:@A
Sutting do!n H.laJAK queue manager 8fa#q9: $ %& '
Sutting do!n H.laJAK server 8fa#d9: $ %& '
Starting H.laJAK queue manager 8fa#q9: $ %& '
Starting H.laJAK server 8fa#d9: $ %& '
/estarting H.laJAK modem manager 8fa#gett.9: $ %& '
Sutting do!n H.laJAK queue manager 8fa#q9: $ %& '
Eodos los archivos de configuracin que se crear4n a lo largo del proceso de configuracin de 6ylafax
se guardaran en las carpeta /var/spool/hylafax/etc y /etc/hylafax
8ara controlar el estado de 6ylafax y de los faxes configurados se usa este comando:
fa0stat
)l resultado es:
H.laJAK sceduler on liAH@1(A3:mem*ers:linode:com: /unning
=odem tt.IAK) 8Z3H3A63@DC)9: /unning and idle
=odem tt.IAK( 8Z3H3A63@DC)9: /unning and idle
8ara me#orar la recepcin y envo de los -$>/ se aade un pequeo retraso en la configuracin de los
mdem de forma que si se pierde la conexin/ se intentar4 rea#ustarla:
nano ;var;spoo#;/.#afa0;etc;config.tt.(AX1
al final del archivo se aade esta linea:
C7ass1SwitchingC1d; !Qde7ay;4G!
Lo mismo se hace con el mdem ttyI$>::
nano ;var;spoo#;/.#afa0;etc;config.tt.(AX2
al final del archivo se aade esta linea:
C7ass1SwitchingC1d; !Qde7ay;4G!
8ara recibir una notificacin si el fax ha sido enviado hay que modificar el archivo de configuracin de
6ylafax Ola recibir4 el usuario rootP:
nano ;etc;/.#afa0;/.#a.conf
si cambia esta linea:
#Noti:y; +one
para que quede
:@C
Noti:y; +one
8ara recibir los -$> entrantes a una direccin de correo electrnico externa al servidor:
nano ;var;spoo#;/.#afa0;etc;4a0)ispatc/
se cambia esta linea:
S,N+%)&a<-aster
para que quede OpersonaliNar la direccin de correo electrnicoP:
S,N+%):u7anoNg1ai7$co1
'e reinicia 6ylafax:
;etc;init.%;/.#afa0 restart

1C.G -r"eba envHo.
8ara el envo de los faxes se crea en extension1conf un contesto WfaxX O)l mismo que se ha configurado
para las dos extensines iaxmodem en iax1confP con las siguientes lneas:
nano ;etc;asterisk;e0tensions.conf
B:a<C
e<ten G "K$313+ia7/S.P8Justvoi28RS,K%,NT6
sa1e G n3Hangu2
e<ten G 12@>313+ia7/.AK28ia<1ode126
sa1e G n3hangu2
)l primer bloque es para enviar faxes a numeros externos/ el segundo es para probar el fax en local1
)n la parte general del archivo sip1conf/ se ha configurado el par4metro faxdetect en yesT esto significa
que si el sistema detecta que la llamada est4 llegando desde un -$>/ autom4ticamente Qsaltar4R/ si
existe/ a la extensin fax1 )sto es muy util para recibir los -$> a trav5s del numero geogr4fico1 8ara
que funcione se modifica el contexto Wfrom=didvoNtovoiceX:
B:ro1'didvoPtovoiceC
e<ten G s313Answer
sa1eG n3Goto/.LR3s316
sa1e G n3Hangu2
para que quede:
:@@
B:ro1'didvoPtovoiceC
e<ten G s313Answer
sa1e G n3Vait/>6
sa1e G n3Goto/.LR3s316
sa1e G n3Hangu2
e<ten G :a<313+ia7/.AK28ia<1ode126
sa1e G n3Hangu2
)l flu#o del dialplan es: se contesta la llamada entrante/ se esperan A segundos para permitir a $steris%
reconocer si la llamada procede de un fax1 'i procede de un fax se va a la extensin fax/ prioridad 0
donde se contestar4 con el modem -$> iaxmodem:/ sino se ir4 al I9;1 'e guardan los cambios y
actualiNa el dialplan:
;etc;init.%;asterisk re#oa%
8ara enviar un fax la sintaxis es:
sendfa# 1 modem 1n 1d Ufa#num*erN Ufile:t#tN
'e crea el archivo de texto que se enviar4:
nano ;t5p;pr"ebafa0.t0t
'e aaden las siguientes lineas:
Prue=a env`o &AK
Li=ro AsterisD P9K 1$E$2$22
'e guardan los cambios1
)n este caso con el mdem ttyI$>0 se enviar4 el -$> y con el mdem ttyI$>: se recibir41 6ay que
tener en cuenta que cuanto se traba#a con pura lineas 9oI8 el envo y la recepcin de los faxes no
siempre funciona1 8or eso se hace esta prueba1
sen%fa0 +/ tt.(AX1'#oca#/ost +n +% n"5ero#oca# ;t5p;pr"ebafa0.t0t
,tiliNando el numero local sera:
sen%fa0 +/ tt.(AX1'#oca#/ost +n +% 12GB ;t5p;pr"ebafa0.t0t
)n lugar de QnumerolocalR se pone el numero definido en el contexto WfaxX para la prueba en local1 )l
servidor 6ylafax contestar4 con:
'i sale este error:
Fsage: /usr/s*in/te#tfmt $1(' $1)' $1I' $1c' $1D' $1f fontname' $1J fontdir8s9' $1m ,' $1o \' $1p \' $1r'
:@?
$1F' $1=l5\-r5\-t5\-*5\' $1L \' files::: Nout:ps
Default options: 1f Courier 1( 1p ((*p 1o @
Se a producido un error al convertir el documento[ el comando fue V/usr/s*in/te#tfmt 1I 1f Courier1
Iold 1=l5@:"in 1p (( 1s default N'/tmp//sndfa#lIauD6' U'/tmp/prue*afa#:t#t'V
es porque hay un problema con los fonts de *hostscrpt1 8ara solucionarlo se abre el siguiente archivo:
nano ;"sr;s/are;g/ostscript;=.A0;3eso"rce;(nit;4ont5ap.1!
y se modifica la linea B::
8Courier'9o7d 8Ni1=us-onL'9o7d A
8ara que quede:
8Courier'9o7d /n02200>7$2:a6 A
'e gurdan los cambios y se vuelve a enviar el fax:
sen%fa0 +/ tt.(AX1'#oca#/ost +n +% 12GB ;t5p;pr"ebafa0.t0t
request id is ( 8group id (9 for ost localost 8( file9
'e puede controlar el estado del envo con el siguiente comando:
fa0stat +s
H.laJAK sceduler on li)C"1)"H:mem*ers:linode:com: /unning
=odem tt.IAK 8@HAA(6H3(CA9: InitialiWing server
GID 0ri S %!ner ,um*er 0ages Dials ??S Status
( ()C / root @@AD@HAA(6H3 @:( (:()
'e entra en la consola de $steris% y se mira que aparece:
asterisk +rvvvvvvvvvvvvv
cuando termine la llamada se sale de la consola:
!LI" I"it
y se controla que ha pasado1 'i aparece este mensa#e
faxstat =s
GID 0ri S %!ner ,um*er 0ages Dials ??S Status
( ()C S root @@(A@33D@6DD @:( (:() )(:)C ,o carrier detected
+o se ha detectado el carrier del -$> de destino1 'e elimina el fax de la cola con el siguiente comando:
:@F
fa#rm 1v GID
!omo el numero de KI. del -$> que se est4 intentando enviar es 0:
fa0r5 +v 1
'e intenta enviar el fax a otro numero Oen este caso un numero dedicado para la recepcin de faxesP:
sen%fa0 +/ tt.(AX1'#oca#/ost +n +% 00GJ0AGG1=AC16G ;t5p;pr"ebafa0.t0t
se vuelve a entrar en la consola de $steris% y se mira que pasa:
asterisk +rvvvvvvvvvvvvv
!uando termine la llamada se sale de la consola:
!LI" I"it
y se mira si ha sido enviado:
fa0stat +s
6yla-$> scheduler on li2?G=02C1members1linode1com: ;unning
&odem ttyI$>: OaC?C2FCGB@:P: ;unning and idle
&odem ttyI$>0 OaC?C2FCGB@:P: ;unning and idle
!omo los mdem est4 en espera significa que el envo se ha completado con 5xito1 b!mo puedo
comprobarloc $briendo el correo del usuario root Odesde terminal o 3ebminP:
:@B
'i se quiere usar un cliente con interfaN gr4fica para el envo de fax/ una buena solucin es Sa#6-!
OSet another Kava 6yla-$> !lientP que siendo escrito completamente en K$9$ funciona en sistemas
operativos Linux y Mindo3s1
)n el caso que se utilice un cliente remoto en el cortafuegos hay que abrir el puerto ACCB E!8 Ousado
por 6ylafaxP y los puertos desde el 2GGGG hasta el @CGGG E!8 para los datos1
1C.B -rotoco#o TG=
'e pone una ho#a en la QmaquinaR/ se marca el numero de tel5fono de destino y se espera que salga un
L< por algHn lado1 )sta sencilla operacin es la que se hace cuando se quiere enviar un -$>1 Eodo lo
que pasa en el QmientrasR es totalmente transparente1 Las dos maquinas -$> negocian todos los
pasa#es y para hacerlo utiliNan un protocolo1 )se protocolo ha sido definido por la QInternational
Eelecommunication ,nionR y tom como sigla E12G
)n 0BBF la misma organiNacin define un nuevo protocolo que permite recibir y enviar fax usando una
red a paquetes OInternetP1 La sigla de este protocolo es E12F1
b!mo funciona el protocolo E12Fc
(uiN4s la imagen que sigue ayuda para entender:
:?G
)l -$> est4 conectado a la lnea telefnica y tambi5n a un *ate3ay con soporte E12F1 )ste *ate3ay se
encarga de transformar el -$> en el formato requerido para ser enviado a trav5s de la red Internet1 )n
el lado opuesto otro *ate3ay E12F se encarga de QdecodificarR los paquetes que lleguen para luego
pasar el resultado al fax de destinacin1 ,n *ate3ay E12F cl4sico funciona como se muestra en la
imagen que sigue:
Los datos del -$> E12G vienen analiNados y manipulados para luego ser transformados en paquetes
OI-8P1 Los paquetes se pueden enviar usando tres protocolos de transporte: ,.8EL/ E!8 o ;E81 'er4
tarea de los *ate3ay E12F negociar el protocolo de trasporte1 )n el caso de $steris% el Hnico protocolo
:?0
de trasporte permitido es ,.8EL que funciona de la siguiente forma:
!ada paquete ,.8EL contiene encapsulado el paquete I-8 Oque contiene los datos del fax que se est4
enviando y un sistema de correccin de errores I -)! Wfor3ard error correctionXP1 8ara repetir los
paquetes perdidos y controlar que lleguen en el #usto orden hay a disposicin dos sistemas:
!on el primero se repite el ultimo paquete enviado como -)! para el paquete que se est4
enviando
!on el segundo se crea un paquete de paridad para un numero determinado de paquetes I-8 y se
incluye esta informacin en el paquete ,.8EL corriente1
)l paquete ,.8EL est4 encapsulado en un paquete ,.8 Oprotocolo de trasporteP que a su veN est4
encapsulado en un paquete I8 Oprotocolo que permite al paquete llegar a destinacinP1
$steris% soporta el protocolo E12F solamente como pasarela/ es decir que no est4 Qen el medioR a lo
largo del envo del fax1 $ un lado y al otro de la trasmisin deber4n estar dos *ate3ay E12F que se
hagan cargo de la tarea de enviar/recibir el fax1 )n $steris% el envo y recepcin de faxes es posible a
trav5s de la librera 'pan.'8 y el modulo appDfax1
.esde la consola:
asterisk ,rvvvvvvvvvvvvvvvv
'e controla la sintaxis de las dos aplicaciones contenidas en el modulo appDfax
!LI" core s/ow app#ication 3eceive4a0
15 Info a*out application '/eceiveJAK' 51
$S.nopsis'
/eceive a Ja#
:?:
$Description'
/eceives a JAK from te cannel into te given filename over!riting te file
if it alread. e#ists:
Jile created !ill *e in ?IJJ format:
?is application sets te follo!ing cannel varia*les:
YQL%CALS?A?I%,IDR: ?o identif. itself to te remote end
YQL%CALH7AD7/I,J%R: ?o generate a eader line on eac page
YQJAKS?A?FSR:
SFCC7SS
JAIL7D
YQJAK7//%/R: Cause of failure
YQ/7=%?7S?A?I%,IDR: ?e CSID of te remote side
YQJAK0AM7SR: ,um*er of pages sent
YQJAKII?/A?7R: ?ransmission rate
YQJAK/7S%LF?I%,R: /esolution of sent fa#
$S.nta#'
/eceiveJAK8filename$-c'9
$Arguments'
filename
Jilename of ?IJJ file save incoming fa#
c
=a2es te application *eave as te calling macine
8Default *eavior is as ans!ering macine9
$See Also'
,ot availa*le
!LI" core s/ow app#ication !en%4a0
15 Info a*out application 'SendJAK' 51
$S.nopsis'
Send a Ja#
$Description'
Send a given ?IJJ file to te cannel as a JAK:
?is application sets te follo!ing cannel varia*les:
YQL%CALS?A?I%,IDR: ?o identif. itself to te remote end
YQL%CALH7AD7/I,J%R: ?o generate a eader line on eac page
YQJAKS?A?FSR:
SFCC7SS
JAIL7D
YQJAK7//%/R: Cause of failure
YQ/7=%?7S?A?I%,IDR: ?e CSID of te remote side
YQJAK0AM7SR: ,um*er of pages sent
YQJAKII?/A?7R: ?ransmission rate
:?2
YQJAK/7S%LF?I%,R: /esolution of sent fa#
$S.nta#'
SendJAK8filename$-a'9
$Arguments'
filename
Jilename of ?IJJ file to fa#
a
=a2es te application *eave as te ans!ering macine
8Default *eavior is as calling macine9
$See Also'
,ot availa*le
$lgunos $E$ comercialiNados soportan el protocolo E12F1 )n 9oip=info aparece una lista Oaunque no
muy actualiNadaP1
8ara el soporte E12F en $steris% hay que modificar este archivo:
5v ;etc;asterisk;"%pt#.conf ;etc;asterisk;"%pt#.con.o#%
nano ;etc;asterisk;"%pt#.conf
'e pone:
Bgenera7C
ud2t7start>000
ud2t7end>0**
ud2t7checDsu1syes
ud2t7:ecentries @
ud2t7:ecs2an @
use"even"2orts no
'e guardan los cambios y se vuelve a arrancar $steris%:
;etc;init.%;asterisk restart
8ara el test que se va a e#ecutar hay que modificar el dialplan:
nano ;etc;asterisk;e0tensions.conf
se modifica este bloque Odel contexto faxP:
e<ten G 12@>313+ia7/.AK28ia<1ode126
sa1e G n3hangu2
:?A
8ara que quede:
e<ten G 12@>313Answer
sa1e G n3Receive:a</8t128RS#N.[#,.+T$ti:6
sa1e G n3Hangu2
e<ten G h313Noo2/&AKS%A%#S RS&AKS%A%#ST3 &AK,RR)R RS&AK,RR)RT3 &AK-)+, RS&AK-)+,T6
'e guardan los cambios y se actualiNa el dialplan:
asterisk +rvvvvvvvvvvvvvv
!LI" %ia#p#an re#oa%
'e sale de la consola:
!LI" I"it
se entra a la carpeta /tmp
c% ;t5p
y se enva el mismo archivo pdf utiliNado en el p4rrafo anterior:
sen%fa0 +/ tt.(AX1'#oca#/ost +n +% 12GB ;t5p;pr"ebafa0.t0t
entran en la consola de $steris% y miran los resultados del envo:
asterisk +rvvvvvvvvvvvvvvvvv
&uy probablemente en la consola aparecer4:
== )xecuting Wh[fax:0X +oLpO\I$>:/iaxmodem0=00F:\/ \4AX!TAT9! !9CC*!!/ -$>);;L; /
-$>&L.) a"%io\P in ne3 stac%
== 6ungup gI$>:/iaxmodem0=00F:g
)l envo ha tenido 5xito y el protocolo que se ha utiliNado ha sido QaudioR/ es decir/ el protocolo E2G1
'i se mira en la carpeta /tmp/ debe haber un archivo con extensin tif1 )n este caso:
1r!1r11r11 ( root root (((A" dic () (3:"A (A)AH))C(3:@:tif
)n el prximo p4rrafo se ver4 como enviar y recibir un -$> con protocolo E2F1
1C.C App#icaci$n !en%4a0
!omo se ha visto en el p4rrafo anterior la aplicacin para enviar -$> en $steris% es 'end-ax1 La
sintaxis es muy sencilla:
:?C
!en%4AX@fi#ena5eU[optionsVD&
)l problema es que con esta aplicacin no se puede llamar directamente un -$> en cuanto no hay
posibilidad de indicar el numero a marcar1
8ara solucionar este problema hay que hacer uso de un callfile1 ,n callfile es un archivo de texto donde
se definen unas cuantas acciones que $steris% e#ecutaT una veN preparado se mueve Ono se copiaP en la
carpeta /var/spool/asteris%/outgoing1 $steris% controla peridicamente esta carpeta a trav5s del modulo
pb06spoo#.so y si hay un archivo de este tipo lo procesa1
)n el escenario que se va a presentar se llamar4 el numero de destino usando come proveedor para la
llamada #ustvoip1 ,na veN que el destinatario conteste se enviar4 el archivo prueba1tif Ola aplicacin
'end-ax solo acepta archivos tiffP1
c% ;t5p
wget /ttp&;;www.voztovoice.org;ca5p"s;pb00C;pr"ebafa0.tif
)l callfile que se va a utiliNar:
C/anne#& !(-;2"stvoip;00GJ0AGG1=A0BJB
Tel canal que se va a usar para efectuar la llamada y el numero a llamar1 )l numero es dedicado a la
recepcin de -$> con protocolo E2F
Ca##eri%& Z4AXZ
T el identificativo del llamante
TaitTi5e& G0
T'e espera un respuesta por 2G segundos
Ma0retries&G
:se intentar4 llamar el numero tres veces
3etr.Ti5e& G00
T entre un intento y otro se esperar4n 2GG segundos
Acco"nt& 1000
T en el registro de las llamadas O!.;P se contabiliNar4 la llamada a la extensin 0GGG
App#ication& !en%4a0
T una veN que el destinatario conteste se e#ecuta la aplicacin sendfax
)ata& ;t5p;pr"ebafa0.tif
Tel nombre del archivo que se enviar4
)l resultado del archivo sin los comentarios ser4:
nano enviofa0
se copian las lineas que siguen:
Channe7; S.P8Justvoi2800@*04@@1(40>*>
Ca77erid; !&AK!
:?@
Vait%i1e; @0
-a<retries;@
Retry%i1e; @00
Account; 1000
A227ication; Send&a<
+ata; 8t1282rue=a:a<$ti:
y se mueve el archivo en la carpeta /var/spool/asteis%/outgoning
5v enviofa0 ;var;spoo#;asterisk;o"tgoing
'e entra en la consola de $steris%:
asterisk +rvvvvvvvvvvvvvvv
Cannel SI0/4ustvoip1@@@@@@@H !as ans!ered:
N Launcing SendJa#8/tmp/prue*afa#:tif9 on SI0/4ustvoip1@@@@@@@H
$%ct )C @6:)3:@6' ,%?IC7$("@@D': p*#+spool:c:A"D attempt+tread: Call completed to
SI0/4ustvoip/@@AD@HAA(6H@"D"
)sto significa que el fax se ha enviado con 5xito1
)n la maquina $steris% donde se ha recibido:
$Bfrom1eutelia:(' ,o%p8VSI0/eutelia1@@@@@@()V- V&AKS%A%#S S#CC,SS- JAK7//%/ V9 in ne! stac2
$Bfrom1eutelia:)' ,o%p8VSI0/eutelia1@@@@@@()V- V&AK-)+, %@(- S?A?% V9 in ne! stac2
11 7#ecuting $Bfrom1eutelia:A' Hangup8VSI0/eutelia1@@@@@@()V- VV9 in ne! stac2
'i se utiliNan las normales lineas telefnicas la calidad es mucho me#or y en la configuracin del
chanDdahdi1conf/ hay unos par4metro relacionados con los -$>:
A &or :a< detection3 unco11ent one o: the :o77owing 7ines$ %he de:au7t is U)&&U
A
A:a<detect=oth
A:a<detectinco1ing
A:a<detectoutgoing
A:a<detectno
A Vhen 5:a<detect5 is used3 one cou7d use 5:a<=u::ers5 to con:igure the +AH+.
A trans1it =u::er 2o7icy$ %he de:au7t is U)&&U$ Vhen this con:iguration
A o2tion is used3 the :a<=u::er 2o7icy wi77 =e used :or the 7i:e o: the ca77
A a:ter a :a< tone is detected$ %he :a<=u::er 2o7icy is reverted a:ter the
A ca77 is torn down$ %he sa127e =e7ow wi77 resu7t in E =u::ers and a :u77
A =u::er 2o7icy$
A
A:a<=u::ersGE3:u77
:??
.e esta forma/ para cada canal se puede definir si tiene que reconocer los -$> en las llamadas
entrantes/ salientes o desactivar la opcin1
:?F
!$8IE,LL >9I
AM( . A1(
16.1 AM(
$&I O$steris% &anager InterfaceP es una interfaN de monitoreo y gestin presente en $steris% que
interactua con la 8B> recibiendo eventosT al mismo tiempo permite enviar acciones que $steris%
e#ecutar41 La $&I traba#a en el puerto predefinido CG2F E!8 y para activarla hay que modificar el
archivo de configuracin manager1conf1
'e abre el archivo:
nano ;etc;asterisk;5anager.conf
y se modifican estas lineas:
enab#e% E no
M%isp#a.connects E .es
para que queden:
enab#e% E .es
%isp#a.connects E .es
)l acceso a la $&I se hace a trav5s de la creacin de usuarios con relativas contraseas definiendo que
tipo de permisos cada unos de ellos tendr4n11 )stos permisos se dividen en dos categoras:
read: lo que el usuario puede QleerR desde la $&I
3rite: lo que el usuario puede escribir hacia la $&I
Las distintas opciones se indican en la tabla que sigue1 'i en la columna read o 3rite no aparece una
descripcin es porque el par4metro es de sola lectura/escritura1
-ar5etro 3ea% Trite
all )l usuario puede leer todos los eventos de
la $&I
)l usuario tiene acceso a todas las
funcionalidades de la $&I
system )l usuario recibe todos los eventos
relacionados con el funcionamiento de la
8B>
)l usuario puede enviar acciones de
sistema Oreiniciar la 8B>/ recargar
configuraciones/ etcP
call 8ermite al usuario recibir informaciones
relacionadas con los canales de la 8B>
8ermite al usuario modificar/ crear canales
en la 8B>
agent permite al usuario acceder a todos los datos
relacionados con las colas de espera y los
agentes
8ermite al usuario enviar acciones para
gestionar y monitorear el estado de las
colas y los agentes
user ;ecibe eventos relacionados con las
extensiones y los usuarios Kabber
8ermite generar eventos relacionados con
las extensiones configuradas
config 8ermite al usuario leer los archivos de
configuracin de $steris%
8ermite al usuario leer/ actualiNar y
recargar los archivos de configuracin de
$steris%
command 8ermite al usuario e#ecutar comandos de la
consola de $steris%
.E&- permite al usuario recibir los eventos
relacionados con los tonos
reporting permite al usuario recibir reportes de la
calidad de las llamadas
permite al usuario e#ecutar acciones para
recibir estadsticas y reportes del sistema
cdr permite al usuario recibir eventos
relacionados con el registro de las llamadas
dialplan permite al usuario recibir eventos cuando
se modifica una variable o se crea una
nueva extensin en el dialplan
originate 8ermite al usuario crear una nueva llamada
utiliNando la aplicacin Lriginate de
$steris%
$hora que se conocen las distintas opciones que se pueden configurar para cada usuario de la $&I/ se
puede crear el primer usuario1 $l final del archivo manager1conf se copia este bloque:
Bad1inC
secretsesa1o
read syste13ca773agent3user3con:ig3dt1:3re2orting3cdr3dia727an
write syste13ca773agent3user3con:ig3co11and3re2orting3originate
'e guardan los cambios y se entra en la consola de $steris%:
asterisk +rvvvvvvvvvvvvvvvvv
Los comandos relacionados con la $&I de $steris%:
!LI" /e#p 5anager
manager reload /eload manager configurations
manager set de*ug $onPoff' So!- ena*le- disa*le de*ugging of te manager code
manager so! command So! a manager interface command
manager so! commands List manager interface commands
manager so! connected List connected manager interface users
manager so! eventq List manager interface queued events
manager so! users List configured manager users
manager so! user Displa. information on a specific manager user
8rimero se recarga la configuracin:
!LI" 5anager re#oa%
luego se controla que el usuario configurado apareNca::
!LI" 5anager s/ow "sers
username
11111111
admin
1111111111111111111
( manager users configured:
)l usuario admin est4 presente1 !on el comando:
!LI" 5anager s/ow co55an%s
aparecer4 una lista de todos los comandos que se pueden utiliNar desde la $&I de $steris%1 )ntre ellos
est4 el comando Login que permite conectarse a la $&I de $steris% y es el que se utiliNar4 para hacer la
primera prueba1 8ara conocer la sintaxis:
!LI" 5anager s/ow co55an% Login
Action: Login
S.nopsis: Login =anager
0rivilege: UnoneN
8ara conectarse a la $&I de $steris% se utiliNar4 el programa Eelnet1 'e sale de la consola:
!LI" I"it
'e lanNa el programa:
te#net
y se crea la conexin a la $&I de $steris%:
telnet" o #oca#/ost C0G=
?r.ing ()H:@:@:(:::
Connected to localost:
7scape caracter is '_'':
Asteris2 Call =anager/(:(
Action; Login a tecla envo
#serna1e; ad1in a tecla envo
Secret; sesa1o a tecla envo
,vents; ):: a tecla envo dos veces
/esponse: Success
=essage: Autentication accepted
Action; Logo:: a tecla envo dos veces
/esponse: Mood*.e
=essage: ?an2s for all te fis:
Connection closed *. foreign ost:
,na veN dentro de la $&I de $steris% se efectu4 el Login con el nombre de usuario y la contrasea
configurados en el manager1conf1
,na veN conectados para salir se utiliNa la accin Logoff1
Ltra prueba que se se puede hacer es ver la configuracin de la extensin 0GGG
te#net
telnet" o #oca#/ost C0G=
?r.ing ()H:@:@:(:::
Connected to localost:
7scape caracter is '_'':
Asteris2 Call =anager/(:(
Action; Login a tecla envo
#serna1e; ad1in a tecla envo
Secret; sesa1o a tecla envo
,vents; ):: a tecla envo dos veces
/esponse: Success
=essage: Autentication accepted
Action; S.Pshow2eer a tecla envo
Peer; 1000 a tecla envo dos veces
/esponse: Success
Cannelt.pe: SI0
%*4ect,ame: (@@@
Can%*4ect?.pe: peer
Secret7#ist: ;
/emoteSecret7#ist: ,
=D3Secret7#ist: ,
Conte#t: e#ternas
Language: es
Accountcode: (@@@
A=Aflags: Fn2no!n
CID1Calling0res: 0resentation Allo!ed- ,ot Screened
Callgroup: (
0ic2upgroup: (
Loice=ail*o#: (@@@Bdefault
?ransfer=ode: open
Last=sgsSent: 1(
Call1limit: )("H"6AC"H
Ius.1level: @
=a#CallI/: A6" 2*ps
D.namic: ;
Callerid: Vcallerid5JulanoV U(@@@N
/eg7#pire: 1( seconds
SI01AutInsecure: no
SI01,atSupport: Al!a.s
ACL: ,
SI01Can/einvite: ,
SI01Direct=edia: ,
SI010romisc/edir: ,
SI01Fser0one: ,
SI01LideoSupport: ;
SI01?e#tSupport: ,
SI01?:A6Support: ;
SI01?:A67C: J7C
SI01?:A6=a#Dtgrm: "@@
SI01Sess1?imers: Accept
SI01Sess1/efres: uas
SI01Sess17#pires: (6@@
SI01Sess1=in: D@
SI01D?=Jmode: rfc)6AA
?oHost:
Address1I0:
Address10ort: @
Default1addr1I0: @:@:@:@
Default1addr1port: 3@C@
Default1Fsername: (@@@
Codecs: @#6@(@c 8ula!Pala!PgH)DP)CA9
Codec%rder: ala!-ula!-gH)D
Status: F,&,%E,
SI01Fseragent: K1Lite " release ":( stamp CA)("
/eg1Contact: sip:(@@@B(6C:(@):)"C:)@3:3@C3[rinstance5@cH"6)a@ACa((H6a
>ualif.Jreq: C@@@@ ms
0ar2inglot:
Action; Logo:: a tecla envo dos veces
Connection c7osed =y :oreign host$
!laramente utiliNar la $&I de esta forma es muy poco practico1 .e hecho se interactua con la $&I
escribiendo programas que se conecten a la $&I y e#ecuten toda una serie de comandos y/o lean los
eventos que se producen1 .e esta forma es posible interactuar con $steris% desde la $&I y monitorear
el estado de las extensiones/troncales y reportarlo en una aplicacin1 ,n e#emplo es el programa -L8:1
16.2 A1(
)l $steris% *ate3ay Interface O$*IP permite desarrollar aplicaciones externas que pueden interactuar
con $steris%1 )stas aplicaciones pueden escribirse en distintos lengua#es de programacin y de hecho
existen libreras en 8erl/ 868/ 8ython/ ;uby que simplifican la escritura de estas aplicaciones1 !omo
para el $&I/ para el $*I tambi5n es posible conocer los comandos disponibles1 'e entra en la consola
de $steris%:
asterisk +rvvvvvvvvvvvvvvv
y se escribe:
!LI" /e#p agi
agi dump tml Dumps a list of AMI commands in H?=L format
agi e#ec Add AMI command to a cannel in As.nc AMI
agi set de*ug $onPoff' 7na*le/Disa*le AMI de*ugging
agi so! commands $topic' List AMI commands or specific elp
!uando se escribe una aplicacin hay que copiarla en la carpeta /var/lib/asteris%/agi=bin y asegurarse
que sea e#ecutable1 )n este p4rrafo se presentar4 un e#emplo de un despertador escrito en 8681
8rimero se instala php:
."5 insta## p/p
'e descarga el archivo:
c% ;"sr;src
wget /ttp&;;www.voztovoice.org;t5p;wake"p.2.0.tar
'e descomprime:
tar +0f wake"p.2.0.tar
'e entra en la carpeta:
c% wake"p.2.0
'e vuelve e#ecutable el archivo 3a%eup1php:
c/5o% F0 wake"p.p/p
se copia en la carpeta agi=bin de asteris%
cp wake"p.p/p ;var;#ib;asterisk;agi+bin;
Eerminada esta primera parte se modifica el .ialplan para crear una nueva extensin que se usar4 para
programar el despertador
nano ;etc;asterisk;e0tensions.conf
'e aaden las siguientes dos lneas en el contexto internas:
e<ten G 44313Set/CHANN,L/7anguage6es6
sa1e G n3agi/waDeu2$2h26
sa1eG n3Hangu2
'e guarda el archivo y se recarga el dialplan:
asterisk +rvvvvvvvvvvv
!LI" %ia#p#an re#oa%
$hora desde un extensin 0GGG se marca el numero ?? y se siguen las instrucciones para programar el
despertador1 ,na veN programado si desde la misma extensin se marca otra veN la extensin ?? se
tendr4 la opcin de poder modificar la hora del despertador1
'i se quiere ver el debug del agi/ en la consola de $steris% se escribe:
!LI" agi set %eb"g on
CA-(T9L8 XV((
3egistros en Asterisk
$steris% guarda toda una serie de registros relacionados con su actividad en distintos archivos1 Sa se ha
visto en la segunda parte del modulo uno/ como crear una tabla donde se guarden todos los registros de
las llamadas Otabla !.;P1 $dem4s de las llamadas/ es posible tener traNa del funcionamiento de
$steris% Oerrores/ advertenciasP en archivos de texto que se encuentran en la carpeta /var/log/asteris%1
(ue tipo de archivos y que tipo de registros se quieren guardar/ se define en el archivo logger1conf1
1A.1 #ogger.conf
)n la tabla que sigue los distintos par4metros con una descripcin1 )n negrita el valor asignado a cada
par4metro:
-ar5etro )escripci$n
WgeneralX inicia la parte general de la configuracin del archivo
dateformat formato de la fecha1 8redefinido I'L F@G0 = Q4 QT
appendhostname si se quiere aadir o no al nombre del archivo/ el nombre del dominio
del servidor1 9alor no
queueDlog define si se quiere guardar o no las estadsticas de las colas de espera
en un archivo1 9alor .es
queueDlogDname )l nombre del archivo donde guardar las estadsticas de la colas de
espera1 9alor I"e"e6#og
rotatestrategy +ormalmente los archivos de Log pueden alcanNar un tamao
considerable que dificulta su consulta1 8ara evitarlo se pueden QrotarR
los archivos y con este par4metro se define que tipo de rotacin se va
a utiliNar:
secuential I se renombran los archivos siguiendo un orden
donde el m4s reciente tendr4 un numero m4s alto1
rotate I se renombran los archivos siguiendo un orden donde
el m4s vie#o tendr4 el numero m4s alto
timestamp I se renombran los archivos aadiendo al nombre
la fecha en que se archivaron
eventDlog 'e define si se guardan o no los eventos gen5ricos de $steris%1 9alor
.es
WlogfilesX esta etiqueta define el inicio de la configuracin de los archivos de
registro1 !ada archivo puede contener los siguientes valores:
debug
notice
3arning
-ar5etro )escripci$n
error
verbose
dtmf
debug =" %eb"g , se crea un archivo donde se guardar4 solamente el debug de
la actividad de $steris%
console =" notice>warning>error>%eb"g>%t5f )l archivo console no es
propiamente un archivo1 'e indica que tipo de registros aparecer4n en
la consola de $steris%1
messages =" notice>warning>%t5f )n el archivo messages se guardar4n solamente
los registros relacionados con noticias/ advertencias y .E&-
error =" error )n el archivo error se guardar4n solamente los errores1
8ara crear el nuevo archivo/ se renombra el predefinido:
5v ;etc;asterisk;#ogger.conf ;etc;asterisk;#ogger.conf.o#%
y se crea uno nuevo:
nano ;etc;asterisk;#ogger.conf
'e copian las siguientes lineas:
Bgenera7C
date:or1at\& \%
a22endhostna1eno
?ueue"7ogyes
?ueue"7og"na1e?ueue"7og
rotatestrategyrotate
event"7ogyes
B7og:i7esC
de=ug G de=ug
conso7e G notice3warning3error3de=ug3dt1:
1essages G notice3warning3dt1:
error G error
'e guardan los cambios y se pasa a la definicin de las poltica de rotacin de los archivos de registro1
8ara definir estas polticas hay que instalar el programa Logrotate que se encarga de este tipo de tarea1
."5 insta## #ogrotate
,na veN instalado se crea un nuevo archivo donde se va a definir la rotacin de los archivos de Log de
$steris%:
:FF
nano ;etc;#ogrotate.%;asterisk
'e pegan las siguientes lneas:
8var87og8asterisD81essages
8var87og8asterisD8error S
1issingoD
rotate 4
dai7y
2ostrotate
8usr8s=in8asterisD 'r< 57ogger re7oad5 G 8dev8nu77 2G 8dev8nu77
endscri2t
T
8var87og8asterisD8?ueue"7og S
1issingoD
rotate 5
siPe1000D
2ostrotate
8usr8s=in8asterisD 'r< 57ogger re7oad5G 8dev8nu77 2G 8dev8nu77
endscri2t
T
)l primer bloque define la rotacin para el archivo messages y el archivo error1 La rotacin ser4 diaria
y se crear4n un m4ximo de ? archivos secuenciales Omessages10 messages1: / etc1P1 )l m4s antiguo
tendr4 el numero secuencial m4s alto1 .espu5s de la rotacin OpostrotateP se actualiNa la configuracin
del archivo logger1conf en asteris%1
)l segundo bloque define la poltica de rotacin del archivo de registro queueDlog Olas colas de esperaP1
)n este caso el archivo rotar4 cuando alcanNar4 un tamao de 0GGG <byte y se creer4n un m4ximo de C
archivos secuenciales1
8ara testar el archivo de configuracin creado el procedimiento es:
c% ;etc;#ogrotate.%
#ogrotate +fv asterisk
8ara aplicar los cambios desde la consola de $steris%:
asterisk +rvvvvvvvvvvvvvv
se escribe:
!LI" #ogger re#oa%
:FB
8ara ver la configuracin del archivo:
!LI" #ogger s/ow c/anne#s
Cannel ?.pe Status Configuration
1111111 1111 111111 1111111111111
/var/log/asteris2/error Jile 7na*led 1 7rror
/var/log/asteris2/messages Jile 7na*led 1 D?=J Earning ,otice
Console 7na*led 1 De*ug D?=J Earning ,otice 7rror
/var/log/asteris2/de*ug Jile 7na*led 1 De*ug
'e sale de la consola:
!LI" I"it
$hora si se reinicia $steris%:
service asterisk restart
)n la carpeta /var/log/asteris% estar4n presentes los archivos configurados en logger1conf y se podr4n
revisar los errores en el archivo error:
nano ;var;#og;asterisk;error
.e esta forma en cualquier momento se tendr4 ba#o control el funcionamiento de $steris%1
1A.2 )eb"g
!uando algo no est4 funcionando en $steris%/ hay la posibilidad de aumentar el nivel de debug de la
consola para buscar el tipo de problema que est4 afectando el funcionamiento de la 8B>1 )sto se hace
con un comando especifico:
asterisk +rvvvvvvvvvvvvvvvvvvvvv
!LI" core set %eb"g J
)l nivel de debug va de G OningHn debugP a B Om4ximo debugP1 .e esta forma las informaciones que se
reciben acerca de las operaciones efectuadas por $steris% son mucho m4s detalladas y en la mayora de
los casos permite individuar el problema1
!omo en el logger1conf se ha definido que el debug se guarde en el archivo QdebugR/ ademas de la
consola/ se puede utiliNar este archivo para encontrar eventuales errores1
.e hecho si se vuelve a desactivar el debug:
!LI" core set %eb"g 0
:BG
se sale de la consola de $steris%:
!LI" I"it
y se abre el archivo:
nano ;var;#og;asterisk;%eb"g
se ver4 que ese archivo contiene todo el debug generado desde que se ha activado en la consola1 La
consulta de estos archivos puede ser bastante complicada si se ha generado una cantidad considerable
de registros1 8ara buscar algo especifico se puede utiliNar el programa QcatR #unto al programa QgrepR1
)l primero lee un archivo y devuelve su contenido en la ventana terminal de Linux/ grep permite buscar
una determinada palabra o frase en un archivo1 ,n e#emplo:
cat ;var;#og;asterisk;%eb"g [ grep o%bc
.e esta forma todas la lineas del archivo debug que contengan la palabra odbc aparecer4n en la ventana
terminal1 'i se quiere enviar el resultado a un archivo:
cat ;var;#og;asterisk;%eb"g [ grep o%bc W o%bc
)n el caso el problema sea con la sealiNacin 'I8/ desde la consola se puede activar el debug de este
protocolo con el siguiente comando:
asterisk +rvvvvvvvvvvvvvvvvvvvvv
!LI" sip set %eb"g on
'i se quiere limitar el debug solamente a una determinada extensin/ troncal:
!LI" sip set %eb"g peer 2"stvoip
!omo se ha visto en el modulo dedicado al protocolo 'I8/ se puede utiliNar tambi5n la utilidad ngrep1
1A.G C)3 a%aptative
)l modulo cdrDadaptiveDodbc1so permite crear distintas tablas donde guardar los registros de llamadas1
b8ara qu5 se necesitan m4s tablasc
,n e#emplo es si se quiere guardar en una tabla los registros de llamadas de una sola extensin1 .e esta
forma no se tendr4 que consultar la tabla entera para saber cuantas llamadas hiNo esa extensin
especifica1
8rimero se crea una nueva tabla para guardar los !.;:
:B0
5.sI# +" root +psesa5o
mysql" "se asterisk
mysql" CR,A%, %A9L, cdr2 /
ca77date dateti1e N)% N#LL de:au7t 50000'00'00 00;00;0053
c7id varchar/(06 N)% N#LL de:au7t 553
src varchar/(06 N)% N#LL de:au7t 553
dst varchar/(06 N)% N#LL de:au7t 553
dconte<t varchar/(06 N)% N#LL de:au7t 553
channe7 varchar/(06 N)% N#LL de:au7t 553
dstchanne7 varchar/(06 N)% N#LL de:au7t 553
7asta22 varchar/(06 N)% N#LL de:au7t 553
7astdata varchar/(06 N)% N#LL de:au7t 553
duration int/116 N)% N#LL de:au7t 5053
=i77sec int/116 N)% N#LL de:au7t 5053
dis2osition varchar/>56 N)% N#LL de:au7t 553
a1a:7ags int/116 N)% N#LL de:au7t 5053
accountcode varchar/206 N)% N#LL de:au7t 553
uni?ueid varchar/@26 N)% N#LL de:au7t 553
user:ie7d varchar/2556 N)% N#LL de:au7t 55
6A
'e sale del cliente &y'(L:
mysql" I"it
Luego se modifica el archivo cdrDadaptiveDodbc1conf:
nano ;etc;asterisk;c%r6a%aptive6o%bc.conf
$l final del archivo se aade el siguiente bloque:
Bcdr2C
connectionasterisD
ta=7ecdr2
a7ias start G ca77date
:i7ter src G 1000
Uc%r2V: un nombre que se le asigna a la conexin
connection=asteris%: en este par4metro hay que poner la etiqueta que define el bloque creado en
resDodbc1conf
tab#eEc%r2: la tabla &y'(L donde se guardar4n los datos
a#ias start EW ca##%ate: en cdrDadaptive hay tres campos donde se guardan diferentes
momentos de la llamada: cuando inicia/ cuando se contesta y cuando se termina1 Los nombres
de estos campos son respectivamente start/ ans3er y end1 )l campo calldate no existe1 8or este
:B:
motivo para que este campo contenga un valor hay que escoger unos de los tres que crea
cdrDadaptive1 )sto se hace indicando un alias y definiendo que el campo calldate contendr4 el
valor del campo start de cdrDadaptive Ocuando la llamada iniciaP1
fi#ter src EW 1000: en la tabla se guardar4n solamente los registros de las llamadas originadas
por la extensin 0GGG
'e guardan los cambios y se entra en la consola de $steris%:
asterisk +rvvvvvvvvvvvvvvvvvvv
se vuelve a recargar el modulo:
!LI" 5o%"#e re#oa% c%r6a%aptive6o%bc.so
/eloading module 'cdr+adaptive+od*c:so' 8Adaptive %DIC CD/ *ac2end9
55 0arsing '/etc/asteris2/cdr+adaptive+od*c:conf': 55 Jound
11 Jound adaptive CD/ ta*le cdr)Basteris2:
11 Jound filter (@@@ for cdr varia*le src in cdr)Basteris2
11 Jound alias start for column calldate in cdr)Basteris2
N Jound calldate column !it t.pe DA !it len (D- octetlen (D- and numlen 8@-(@9
N Jound clid column !it t.pe () !it len 6@- octetlen 6@- and numlen 8@-@9
N Jound src column !it t.pe () !it len 6@- octetlen 6@- and numlen 8@-@9
N Jound dst column !it t.pe () !it len 6@- octetlen 6@- and numlen 8@-@9
N Jound dconte#t column !it t.pe () !it len 6@- octetlen 6@- and numlen 8@-@9
N Jound cannel column !it t.pe () !it len 6@- octetlen 6@- and numlen 8@-@9
N Jound dstcannel column !it t.pe () !it len 6@- octetlen 6@- and numlen 8@-@9
N Jound lastapp column !it t.pe () !it len 6@- octetlen 6@- and numlen 8@-@9
N Jound lastdata column !it t.pe () !it len 6@- octetlen 6@- and numlen 8@-@9
N Jound duration column !it t.pe " !it len (@- octetlen (@- and numlen 8@-(@9
N Jound *illsec column !it t.pe " !it len (@- octetlen (@- and numlen 8@-(@9
N Jound disposition column !it t.pe () !it len "3- octetlen "3- and numlen 8@-@9
N Jound amaflags column !it t.pe " !it len (@- octetlen (@- and numlen 8@-(@9
N Jound accountcode column !it t.pe () !it len )@- octetlen )@- and numlen 8@-@9
N Jound uniqueid column !it t.pe () !it len A)- octetlen A)- and numlen 8@-@9
N Jound userfield column !it t.pe () !it len )33- octetlen )33- and numlen 8@-@9
!on la consola abierta desde la extensin 0GGG se llama la extensin 0GG01 $l finaliNar la llamada en la
consola aparecer4:
I,S7/? I,?% cdr)
8calldate-clid-src-dst-dconte#t-cannel-dstcannel-lastapp-lastdata-duration-*illsec-disposition-amaflag
s-accountcode-uniqueid9 LALF7S 8Q ts ')@((1()1() (C:36:"D' R-'Vcallerid5JulanoV
U(@@@N'-'(@@@'-'(@@('-'e#ternas'-'SI0/(@@@1@@@@@@@@'-'SI0/(@@(1
@@@@@@@('-'Dial'-'SI0/(@@(-"3-H2&t?!E#K'-((-D-'A,SE7/7D'-A-'(@@@'-'(A)AH)H()D:@'9'
(ue significa que los datos se han guardado en la tabla !.;:1 'e puede comprobar entrando en el
cliente &y'(L:
:B2
5.sI# +" root +psesa5o
mysql" "se asterisk
mysql" se#ect ca##%ate>src>%st>bi##sec fro5 c%r2M
Z111111111111111111111Z111111Z111111Z111111111Z
P calldate P src P dst P *illsec P
Z111111111111111111111Z111111Z111111Z111111111Z
P )@((1()1() (C:36:"D P (@@@ P (@@( P D P
Z111111111111111111111Z111111Z111111Z111111111Z
( ro! in set 8@:@@ sec9
1A.B Monitoreo %e #a ca#i%a% %e #as ##a5a%as
6ay distintas formas de monitorear la calidad de las llamadas1 La m4s sencilla es desde la consola de
$steris%:
asterisk +rvvvvvvvvvvvvvvvvvv
La primera es a trav5s del protocolo ;E!8 O;eal Eime !ontrol 8rotocolP definido en el ;-! 2CCG1 )sto
es posible en $steris% con el comando:
!LI" rtcp set stats on
/?C0 Stats 7na*led
8ara ver como funciona/ desde la extensin 0GGG se llama la extensin 0GG:1 'e contesta la llamada y
despu5s de unos segundos se cuelga1 )n la consola aparecer4n todas una serie de datos relacionados
con la llamada1
Ltra forma de hacerlo es con el comando:
!LI" sip s/ow c/anne#stats
para verlo en accin/ se vuelve a marcar desde la extensin 0GGG la extensin 0GG01 !uando las dos
extensiones est4n hablando/ se vuelve a e#ecutar el comando:
!LI" sip s/ow c/anne#stats
)n las lineas aparecen todos los datos relacionados con la llamadas corrientes Oen este caso unaP:
8eer: la I8 de las extensiones
:BA
!all I.: el identificador unico de llamada para cada extensin
.uration: la duracin de la llamada hasta el momento Oen segundosP
;ecv: 8ac%: paquetes recibidos por $steris% de las dos extensiones
Lost: paquetes perdidos de la extensines a $steris%
i: porcenta#e de paquetes perdidos
Kitter : Kitter entre las extensines y $steris%
'end: 8ac%: paquete enviados por $steris%
Lost: paquetes perdidos de $steris% a las extensiones
i: porcenta#e de paquetes perdidos
Kitter: Kitter entre $steris% y las extensiones
'i el porcenta#e de los paquetes perdidos se mantiene por aba#o del 0i/ la calidad de la llamada va a
ser buena1 )ntre el 0 y el Ci/ aceptable1
.esafortunadamente no existe todava una forma de guardar esos datos en un archivo o una base de
datos1 Lo que si es posible es guardar los datos de la primera QpataR de la llamada/ es decir la parte de
llamada entre la extensin y $steris% que adem4s es la m4s importante1 )sto se hace apoy4ndose
nuevamente al modulo cdrDadaptiveDodbc1so1 b(u5 datos se guardar4nc La lista es la que sigue:
peerip: la I8 de origen del canal
rtpqos: permite leer distintas informaciones acerca de la calidad de la llamada1 )ntre ellas:
localDlostpac%ets: los paquetes audio/video perdidos a lo largo de la llamada
localDcount: numero total de paquetes audio/video recibidos
localD#itter: Kitter local de la llamada
remoteDlostpac%ets: los paquetes audio/video perdidos entre los trasmitidos
remoteDcount: numero total de paquetes audio/video trasmitidos
remoteD#itter: #itter remoto para la llamada
useragent: el dispositivo utiliNado para la llamada Otelefono 'I8T 'oftphoneT 8B>/ etcP
audioreadformat: codec audio del canal
audio3riteformat: codec audio saliente
$dem4s de estos valores/ vamos a escribir en la tabla otros:
accountcode: el cdigo o cuenta del cliente
hangupcause: variable generada por la aplicacin .ial que contiene un cdigo que informa del
como y porque ha terminado la llamada
calldate: la fecha de la llamada
dst: el numero de destino de la llamada
billsec: duracin de la llamada desde que ha sido contestada
'e crea la tabla donde se guardar4n los datos:
5.sI# +" root +psesa5o
:BC
mysql" "se asterisk
msyql" CR,A%, %A9L, 0cdr@0 /
0id0 =igint/206 N)% N#LL auto"incre1ent3
0ca77date0 dateti1e N)% N#LL de:au7t 50000'00'00 00;00;0053
0accountcode0 varchar/206 de:au7t N#LL3
0dst0 varchar/(06 N)% N#LL de:au7t 5053
0=i77sec0 varchar/(06 N)% N#LL de:au7t 5053
02eeri20 varchar/(06 N)% N#LL de:au7t 553
0useragent0 varchar/(06 N)% N#LL de:au7t 553
0codec10 varchar/(06 N)% N#LL de:au7t 553
0codec20 varchar/(06 N)% N#LL de:au7t 553
0t720 int/156 N)% N#LL de:au7t 5053
07720 int/156 N)% N#LL de:au7t 5053
02or720 deci1a7/E3@6 unsigned Pero:i77 N)% N#LL de:au7t 5000$00053
0tr20 int/156 N)% N#LL de:au7t 5053
0r720 int/156 N)% N#LL de:au7t 5053
02orr20 deci1a7/E3@6 unsigned Pero:i77 N)% N#LL de:au7t 5000$00053
07Jitter0 varchar/206 N)% N#LL de:au7t 553
0rJitter0 varchar/@26 N)% N#LL de:au7t 553
0hangu2cause0 varchar/(06 N)% N#LL de:au7t 553
PR.-ARY M,Y /0id06
6A
mysql" I"it
'e continua modificando el archivo cdrDadaptiveDodbc1conf:
nano ;etc;asterisk;c%r6a%aptive6o%bc.conf
al final del archivo se pone:
Bcdr@C
connectionasterisD
ta=7ecdr@
a7ias start G ca77date
'e guardan los cambios y se entra en la consola de $steris%:
asterisk +rvvvvvvvvvvvvv
'e recarga el modulo:
!LI" 5o%"#e re#oa% c%r6a%aptive6o%bc.so
:B@
8ara terminar se modifica el dialplan:
nano ;etc;asterisk;e0tensions.conf
en el contexto WinternacioX/ despu5s de estas dos lineas:
e<ten G "00$313+ia7/S.P8Justvoi28RS,K%,NT3@06
sa1e G n3Hangu2
se aaden:
e<ten G h313set/C+R/hangu2cause6RSHANG#PCA#S,T6
e<ten G h3n3set/C+R/accountcode6RSC+R/accountcode6T6
e<ten G h3n3set/C+R/2eeri26RSCHANN,L/2eeri26T6
e<ten G h3n3set/C+R/useragent6RSCHANN,L/useragent6T6
e<ten G h3n3set/C+R/codec16RSCHANN,L/audioread:or1at6T6
e<ten G h3n3set/C+R/codec26RSCHANN,L/audiowrite:or1at6T6
e<ten G h3n3set/C+R/t726RSCHANN,L/rt2?os3audio37oca7"count6T6
e<ten G h3n3set/C+R/7726RSCHANN,L/rt2?os3audio37oca7"7ost2acDets6T6
e<ten G h3n3set/C+R/2or726RBSCHANN,L/rt2?os3audio37oca7"7ost2acDets6T 8 R
SCHANN,L/rt2?os3audio37oca7"count6T U 100C6
e<ten G h3n3set/C+R/tr26RSCHANN,L/rt2?os3audio3re1ote"count6T6
e<ten G h3n3set/C+R/r726RSCHANN,L/rt2?os3audio3re1ote"7ost2acDets6T6
e<ten G h3n3set/C+R/2orr26RBSCHANN,L/rt2?os3audio3re1ote"7ost2acDets6T 8 R
SCHANN,L/rt2?os3audio3re1ote"count6T U 100C6
e<ten G h3n3set/C+R/7Jitter6RSCHANN,L/rt2?os3audio37oca7"Jitter6T6
e<ten G h3n3set/C+R/rJitter6RSCHANN,L/rt2?os3audio3re1ote"Jitter6T6
e<ten G h3n3Hangu2
'e recarga el dialplan:
asterisk +r0 Z%ia#p#an re#oa%Z
.esde la extensin 0GGG se marca un numero externo Oe#emplo GGC?0AG02A2AP y una veN terminada la
llamada se entra en el cliente &y'(L:
5.sI# +" root +psesa5o
mysql" "se asterisk
mysql" se#ect ca##%ate>t#p>##p>por#p>trp>r#p>porrp fro5 c%rGM
Z111111111111111111111Z11111Z11111Z111111111Z11111Z11111Z111111111Z
P calldate P tlp P llp P porlp P trp P rlp P porrp P
Z111111111111111111111Z11111Z11111Z111111111Z11111Z11111Z111111111Z
P )@((1()1() (6:((:@( P ""H P @ P @@@:@@@ P "AD P @ P @@@:@@@ P
Z111111111111111111111Z11111Z11111Z111111111Z11111Z11111Z111111111Z
:B?
( ro! in set 8@:@@ sec9
mysql" I"it
:BF
CA-(T9L8 XV(((
Cone0iones entre servi%ores Asterisk
)ste capitulo est4 dedicado a la conexiones entre servidores $steris%1 ,n escenario tpico de este tipo
de configuracin es cuando una empresa tiene sedes en distintos lugares y quiere que las extensiones de
una sede puedan comunicarse con las extensiones de la otra1 $dem4s/ si en una de las sedes est4n
instalados *ate3ay/Ear#etas ->L/ desde la otra sede se podr4n sacar las llamadas utiliNando esos
*ate3ay/Ear#etas1
'e presentar4n tres distintos tipos de conexin:
!onexiones 'I8 con nombre de usuario y contrasea
!onexiones I$>: con autenticacin sobre I8
!onexiones distribuidas con el protocolo .,+.i
!onectar dos servidores $steris% con Lpen98+
1=.1 Conectar %os servi%ores Asterisk con e# protoco#o !(-
6ay dos servidores $steris%/ $ y B/ y se quiere conectarlos entre ellos utiliNando el protocolo 'I8 para
llamar desde $ las extensiones de B y desde B las extensiones de $1 Las extensiones del servidor $ son
de A cifras y empieNan por 0/ en el servidor B son de A cifras y empieNan por el mismo numero 01
!ervi%or A
nano ;etc;asterisk;sip.conf
)n el bloque register se aade:
register EW serverA&pass1'(-server7;server7
)n lugar del I8serverB se pone la direccin I8 del servidor B1 $l final del archivo:
Userver7V
t.peEfrien%
re5otesecretEpass2
conte0tEinternas
I"a#if.E.es
/ostE%.na5ic
#ang"ageEes
%isa##owEa##
a##owEgs5
a##owE"#aw
a##owEa#aw
!on la lnea de register/ se conecta el servidor server$ al servidor serverB1 !on las lneas que est4n
despu5s de la etiqueta WserverBX se define una extensin 'I8 que ser4 aquella usada por el servidor B
para conectarse al servidor $1 !on contexto=internas/ el servidor B tendr4 acceso a todo el dialplan
definido en ese contexto1 'i se quiere que el servidor B tenga acceso solamente a un determinado
contexto/ se modifica la linea context poniendo un nombre de contexto y/ si no existe/ se crea ese
contexto en el dialplan1
(M-83TAT*& c"an%o se conectan %os servi%ores Asterisk entre e##os> en #a
config"raci$n %e #a e0tensi$n .a no se "ti#iza e# par5etro secret sino e# par5etro
re5otesecret @esto %es%e #a versi$n 1.6.1.X %e AsteriskD
'e guardan los cambios y se pasa al servidor B1
!ervi%or 7
nano ;etc;asterisk;sip.conf
)n el bloque register se aade::
register EW server7&pass2'(-serverA;serverA
al final del archivo:
UserverAV
t.peEfrien%
re5otesecretEpass1
conte0tEinternas
/ostE%.na5ic
#ang"ageEes
I"a#if.E.es
%isa##owEa##
a##owEgs5
a##owE"#aw
a##owEa#aw
$hora que los dos servidores est4n configurados hay que reiniciarlos1 )n los dos se escribe el comando:
;etc;init.%;asterisk restart
.esde la consola se averigua que haya conexin entre los dos servidores:
asterisk +rvvvvvvvvvvvvvv
para el servidor $:
CL(W sip s/ow registr.
CD:(C":(DC:HA:3@C@ , serverA (@3 /egistered Eed- )C %ct )@(( (@:(H:3"
2G0
CL(W sip s/ow peers
serverI/serverA CD:(C":(DC:HA D , 3@C@ %& 8( ms9
para el servidor B:
CL(W sip s/ow registr.
DC:()C:()(:(A3:3@C@ , serverI (@3 /egistered Eed- )C %ct )@(( (@:(6:")
CL(W sip s/ow peers
serverA/serverI DC:()C:()(:(A3 D 3@C@ %& 8) ms9
$hora lo Hnico que hace falta es modificar el archivo extensions1conf de ambos servidores1
!ervi%or A
nano ;etc;asterisk;e0tensions.conf
)n el contexto internas Opara las llamadas a extensiones del servidor BP se aade:
e<ten G "U1KKK313No)2/6
sa1e G n3+ia7/S.P8server98RS,K%,N;1T3@06
sa1e G n3Hangu2/6
!on estas lneas se configura $steris% para que todas las llamadas con destino las extensiones cuyo
numero empiece por 0 y sean de A cifras sean redirigidas hacia el servidor B1 8ara diferenciarlas de las
llamadas entre las extensiones locales del servidor $ se aade un f delante de las cuatro cifras a marcar1
)#emplo: para marcar a la extensin 0GGG del servidor B/ hay que digitar el siguiente numero: f0GGG
!ervi%or 7
nano ;etc;asterisk;e0tensions.conf
)n el contexto internas Opara las llamadas a extensiones del servidor $P se aade:
e<ten G "U1KKK313No)2/6
sa1e G n3+ia7/S.P8serverA8RS,K%,N;1T3@06
sa1e G n3Hangu2/6
!on estas lneas se configura $steris% para que todas las llamadas con destino las extensiones cuyo
numero empiece por 0 y sean de A cifras sean redirigidas hacia el servidor B1 8ara diferenciarlas de las
llamadas entre las extensiones locales del servidor $ se aade un f delante de las cuatro cifras a marcar1
'e actualiNa la configuracin en los dos servidores:
asterisk +rvvvvvvvvvvvvvvv
CL(W %ia#p#an re#oa%
2G:
-r"eba
.esde la extensin 0GGG del servidor $ se marca f0GGG para llamar la extensin 0GGG del servidor B y
se mira lo que pasa en la consola de $steris% del servidor B:
$)@((1@(1)3 )):"):)"' EA/,I,M$("CD)': can+sip:c:()6"D cec2+aut: username mismatc- ave
U(@@@N- digest as UserverAN
$)@((1@(1)3 )):"):)"' ,%?IC7$("CD)': can+sip:c:)@)() andle+request+invite: Jailed to
autenticate device VJulanoV Usip:(@@@B(H6:HD:("":)"HN[tag5as)e3fH"aD
La llamada no funciona1
b8orqu5 pasa esoc
8orque el servidor B piensa que la llamada est5 llegando desde la extensin 0GGG local y no logra
distinguir entre extensin 0GGG local y extensin 0GGG remota1 8ara solucionar el problema/ hay que
modificar el plan de llamadas en ambos servidores1
!ervi%or A
nano ;etc;asterisk;e0tensions.conf
modificar este bloque
e<ten G "U1KKK313No)2/6
sa1e G n3+ia7/S.P8server98RS,K%,N;1T3@06
sa1e G n3Hangu2/6
para que quede:
e<ten G "U1KKK313 Set/CALL,R.+/nu16serverA6
sa1e G n3+ia7/S.P8server98RS,K%,N;1T3@06
sa1e G n3Hangu2/6
!ervi%or 7
nano ;etc;asterisk;e0tensions.conf
modificar estas lineas:
e0ten EW 6N1XXX>1>o8p@D
sa5e EW n>)ia#@!(-;serverA;\]*XT*&1^>G0D
sa5e EW n>Kang"p@D
para que queden:
2G2
e0ten EW 6N1XXX>1> !et@CALL*3()@n"5DEserver7D
sa5e EW n>)ia#@!(-;serverA;\]*XT*&1^>G0D
sa5e EW n>Kang"p@D
'e actualiNa el dialplan en ambos servidores y se intenta llamar nuevamente desde el servidor $ el
numero f0GGG1 )n la consola de $steris% del servidor $ aparecer4:
7#ecuting $O(@@@Be#ternas:(' Set8VSI0/(@@@1@@@@@@@"V- VCALL7/ID8num95serverAV9 in ne! stac2
11 7#ecuting $O(@@@Be#ternas:)' Dial8VSI0/(@@@1@@@@@@@"V- VSI0/serverI/(@@@-A@V9 in ne! stac2
55 Fsing SI0 /?0 CoS mar2 3
55 Fsing SI0 L/?0 CoS mar2 C
55 Fsing FD0?L CoS mar2 3
11 Called serverI/(@@@
11 SI0/serverI1@@@@@@@3 is ringing
La llamada funciona1 )ste tipo de configuracin se necesita solamente si las extensiones de los dos
servidores $steris% tienen los mismos nHmeros asignados1 )n el caso de servidores $steris% con
nHmeros de extensiones distintos/ no hace falta modificar el !$LL);I. antes de marcar1
1=.2 Conectar %os servi%ores Asterisk con e# protoco#o (AX2
)n este p4rrafo se ilustrar4 como conectar dos servidor $steris% a trav5s del protocolo I$>: y la
autenticacin con direccin I81 La venta#a de I$>: est4 en su caracterstica/ llamada trun%ing/ que
utiliNa el mismo encabeNado OheaderP para el envo del audio de todas las llamadas1 .e esta forma
cuando hay un numero considerable de llamadas que est5n pasando por la troncal I$>:/ hay un notable
ahorro de banda1 )sta conexin se implementar4 utiliNando las direcciones I8 locales de los 'ervidores
Linode configuradas en el p4rrafo Q8rotocolo 'I8 y el archivo sip1confR1 'uponiendo que la direcciones
I8 locales sean:
!ervi%or A&
I8: 0B:10@F10:F10AA
nome trun%: servera
)xtensiones: 0GGG=0GG0=0GG:
!ervi%or 7&
I8: 0B:10@F10:F10AC
nome trun%: serverb
)xtensiones: 0GGG=0GG0=0GG:
8ara autenticar un servidor $steris% con otro/ ademas de la pare#a usuario/clave/ se puede utiliNar la
direccin I81 8ara este e#emplo/ aprovecharemos este tipo de autenticacin:
!ervi%or A
'i abre el archivo iax1conf
2GA
nano ;etc;asterisk;ia0.conf
al final del archivo se aaden las siguientes lineas:
UserverbV
t.peEfrien%
/ostE1J2.16=.12=.1BC
tr"nkE.es
conte0tEinternas
I"a#if.E.es
)s importante destacar que la I8 que se define es la del servidor BT adem4s se utiliNar4 en la
configuracin la funcionalidad del trun%in% I$>:
)l mismo procedimiento se e#ecuta en el servidor B1
!ervi%orr 7
nano ;etc;asterisk;ia0.conf
se aaden las lineas:
BserveraC
ty2e:riend
host1*2$1E($12($1>>
trunDyes
conte<tinternas
?ua7i:yyes
'e actualiNa la configuracin en ambos servidores:
asterisk +rvvvvvvvvv
!LI" ia02 re#oa%
'e averigua que haya conexin entre los servidores Oservidor $P:
!LI" ia02 s/ow peers
server* (D):(C6:("):)"C 8S9 )33:)33:)33:)33 "3CD 8?9 879 %& 8" ms9
'ervidor B:
!LI" ia02 s/ow peers
servera (D):(C6:(6(:(3 8S9 )33:)33:)33:)33 "3CD 8?9 %& 8( ms9
!LI" I"it
2GC
)n el dialplan se crea un nuevo bloque que permita llamar de un servidor a otro:
!ervi%or A
nano ;etc;asterisk;e0tensions.conf
se aaden las siguientes lineas en el contexto internas:
e<ten G "U1100K313+ia7/.AK28server=8RS,K%,N;2T6
sa1e G n3Hangu2
se actualiNa el dialplan:
asterisk +r0 Z%ia#p#an re#oa%Z
!ervi%or 7
nano ;etc;asterisk;e0tensions.conf
se aaden las siguientes lineas en el contexto internas:
e<ten G "U1100K313+ia7/.AK28servera8RS,K%,N;2T6
sa1e G n3Hangu2
se actualiNa el dialplan:
asterisk +r0 Z%ia#p#an re#oa%Z
$hora se pueden efectuar las pruebas1 .esde la extensin 0GGG del servidor $/ se marca el numero
f00GGG y se averigua en la consola de $steris% que la llamada sea cursada correctamente al servidor B11
)n la consola $steris% del servidor $ aparecer4:
7#ecuting $O((@@@Be#ternas:(' Dial8VSI0/(@@@1@@@@@@@(V- VIAK)/server*/(@@@V9 in ne! stac2
11 Called server*/(@@@
11 Call accepted *. (D):(C6:()6:()C 8format ala!9
11 Jormat for call is ala!
11 IAK)/server*1(HA6( is ringing
1=.G *# protoco#o )9)i
!uando hay que conectar un numero considerable de servidores $steris% y compartir las rutas y las
extensiones configuradas en cada uno de ellos/ la solucin m4s funcional es el protocolo .,+.i1
.,+.i O.istributed ,niversal +umber .iscoveryP es un protocolo que permite buscar y compartir
dialplan entre servidores $steris%1 )sto por medio de una red 8eer=to=peer Opunto=a=puntoP en la cual no
2G@
existen roles fi#os de clientes y servidores/ sino que los servidores pueden asumir uno u otro rol segHn
el contexto1
$ lo largo de la configuracin se puede decidir si compartir contextos ya configurados en el .ialplan o
crear contextos nuevos definiendo las extensiones que se volver4n disponibles a los dem4s servidores11
$unque la configuracin y puesta en marcha pueda parecer algo complicado/ con un poco de practica
se ir4n aclarando las ideas y los conceptos claves1
)l puerto predefino para el protocolo .,+.i es el AC:G ,.81 6ay que abrirlo en el cortafuego de los
servidores donde se va a utiliNar .,+.i:
nano ;etc;s.sconfig;iptab#es
antes de esta linea:
'A .NP#% '2 ud2 '1 ud2 ''d2ort >5E* 'J ACC,P%
se pone:
'A .NP#% '2 ud2 '1 ud2 ''d2ort >520 'J ACC,P%
'e guardan los cambios y se reinicia Iptables:
service iptab#es restart
)n el escenario que se presenta en este p4rrafo hay dos servidores $steris% con estas caractersticas:
!ervi%or A&
I8: 0B:10@F10:F10AA
usuario: server0
!ervi%or 7&
I8: 0B:10@F10:F10AC
usuario: server:
Los dos servidores en este caso est4n en la misma L$+/ pero podran estar ubicados en cualquier punto
de la red Internet1
)l protocolo .,+.i se configura en el archivo dundi1conf1 )s en este archivo que se definen los
par4metros de conexin entre los servidores $steris% y los contextos que se van a compartir1 )n el
mismo archivo se define el tipo de protocolo que los dos servidores usar4n para efectuar y recibir
llamadasOpuede ser I$>:/ 'I8 o 62:2P1
Eerminada la configuracin de dundi1conf/ se modifica el dialplan para definir cuales son las rutas o
contextos que se quiere compartir1
!ervi%or A
2G?
)n la tabla que sigue se indican los par4metros que se configuran en el archivo dundi1conf con una
breve descripcin para cada uno de ellos1 )n la columna descripcin/ en negrita el valor de cada
par4metro1
-ar5etro )escripci$n
WgeneralX inicia la configuracin general del archivo
department=)mpresa$
organiNation=)mpresa$
locality='anta &arta
stateprov=&agdalena
country=!olombia
email=admin[servidor$1com
phone=aC?>>>>>>>>>>
)n estos par4metros se indican los datos de la empresa1
bindaddr .ireccin I8 que se quiere utiliNar con el protocolo .,+.i1 !on
0.0.0.0 todas las direcciones I8 disponibles en el servidor Linux
port 8uerto para las conexiones .,+.i OBC20 predefinidoP
entityid )l &$! address de la tar#eta de red utiliNada para las conexiones
.,+.i1 8ersonaliNar con el valor real1 ,n e#emplo:
42&GC&J1&)4&1J&6B
cachetime !uando se enva un solicitud para conocer la disponibilidad de una
ruta y se encuentra una disponible/ el resultado se guardar4 por el
tiempo definido en este par4metro Oen segundosP en la base de datos
interna de $steris% de quien envi la solicitud1 9alor G600
ttl Eime to Live es un numero que representa el tiempo de vida de la
solicitud1 &4s alto el numero m4s nodos se alcanNar4 a consultar1
9alor G2
auto%ill .es = si no se recibe una respuesta dentro de :GGG ms de un servidor
conectado a la red .,+.i/ se anular4 la solicitud1 )sto permite evitar
que las solicitudes queden abiertas por un tiempo indeterminado
secretpath )l modulo pbxDdundi crea una clave/ con el nombre definido en este
par4metro/ que rotar4 de manera autom4tica y que se guardar4 en la
base de datos interna de $steris%1 9alor %"n%i
storehistory .es = mantiene un registro de las ultimas solicitudes efectuadas con
los tiempos de respuesta de cada una1 .e esta forma es posible
averiguar cuales son los nodos lentos dentro de la red .,+.i
WmappingsX a partir de esta etiqueta se definen los contextos que se va a compartir
con los dem4s servidores $steris%1 Las sintaxis de un contexto es:
dundiDcontext =" localDcontext/3eight/tech/destW/optionsXX
dundiDcontext = el contexto .,+.i que se quiere compartir
con los dem4s nodos de la red .,+.i
2GF
-ar5etro )escripci$n
localDcontext I el contexto local definido en el dialplan donde
se configuran las rutas o extensiones que se quieren compartir
3eight I el peso que se asigna a las rutas que se comparten1 'i
son extensiones locales se pone G/ si son rutas por las cuales
no hay una conexin directa o de alta calidad se pone un
numero m4s alto1 $l momento de hacer una solicitud si para el
mismo numero requerido existen distintas rutas/ se escoger4 la
ruta con menor peso
tech I protocolo usado para la conexin entre servidores
$steris% Ose usar4 I$>:P
dest I cuando se hace una solicitud desde el servidor B y se
encuentra una ruta en el 'ervidor $/ el 'ervidor $ utiliNar4
esta destinacin para recibir la llamada1 'implificando: se crea
un user en el iax1conf del servidor $steris% $ y dest representa
los paramentos para conectarse a ese user
options I son las distintas opciones que se pueden aadir a
cada contexto .,+.i:
01 nounsolicited I llamadas de cualquier tipo que no
sean solicitadas no son permitidas en esta ruta
:1 nocomunsolicit I llamadas comerciales no
solicitadas no son permitidas en esta ruta
21 residential I el numero es de una residencia
A1 commercial I el numero es de una empresa
C1 mobile I el numero es un celular
@1 nopartial I no se har4n bHsquedas por nHmeros
incompletos
servera ="
servera+#oca#>0>(AX2>server1&\]!*C3*T^'1J2.16=.12=.1BB;\]9M7*3^
)l que aparece arriba es el contexto que se va a definir:
servera =" = el contexto .,+.i que se va a compartir
servera=local = el contexto definido en el dialplan que
contendr4 todas las rutas que se van a compartir
I$>: = la tecnologa usada OprotocoloP para las llamadas
server0 = usuario que se configurar4 en el el archivo iax1conf
^_')!;)E` = es la variable que contiene la clave que el
modulo .,+.i crea en autom4tico y que se usar4 para
autenticar el usuario serve
0B:10@F10@B10:F = direccin I8 del 'ervidor $ OpersonaliNarP
^_+,&B);`: la variable que contendr4 el numero que ha
sido solicitado
8ara terminar con la configuracin del archivo dundi1conf se definen los servidores $steris% con los
2GB
que se va a tener una conexin directa:
W-::2!:B0:.-:0B:FFX
model = symmetric
host = 0B:10@F10:F10AC
in%ey = server:
out%ey = server0
include = all
permit = servera
qualify = yes
-):-.:AC:$A:!A:AB: &$! address de la tar#eta de red del 'ervidor $steris% B con el que se
crea la conexin OpersonaliNarP
model: puede ser:
01 inbound: recibe solamente solicitudes
:1 outbound: solo efectHa solicitudes pero no las recibe
21 symmetric: recibe y efectHa solicitudes
host: direccion I8 o nombre de dominio del servidor $steris% B
in%ey: clave ;'$ usada para autenticarse con el servidor $steris% B
out%ey: clave ;'$ usada por el 'ervidor $steris% B para autenticarse con el 'ervidor $steris% $
include: incluye esta conexin para todas las solicitudes efectuadas en el 'ervidor $steris% $
permit: se definen los contextos .,+.i a los que tendr4 acceso este nodo
qualify: se controlar4 peridicamente que la conexin con el nodo est5 activa
'e crea el archivo dundi1conf1 8rimero se renombra el predefinido:
5v ;etc;asterisk;%"n%i.conf ;etc;asterisk;%"n%i.conf.o#%
se crea uno nuevo:
nano ;etc;asterisk;%"n%i.conf
y se copian los datos de configuracin:
Bgenera7C
de2art1ent,12resaA
organiPation,12resaA
7oca7itySanta -arta
state2rov-agda7ena
countryCo7o1=ia
e1ai7ad1inNservidorA$co1
2honeW54KKKKKKKKKK
=indaddr0$0$0$0
2ort>520
entityid&2;@C;*1;+&;1*;E>
cacheti1e@E00
20G
tt7@2
autoDi77yes
secret2athdundi
storehistoryyes
B1a22ingsC
servera EW servera+#oca#>0>(AX2>server1&\]!*C3*T^'1J2.16=.12=.1BB;\]9M7*3^
B&2;@C;*1;+&;1*;((C
1ode7 sy11etric
host 1*2$1E($12($1>5
inDey server2
outDey server1
inc7ude a77
2er1it servera
?ua7i:y yes
'e guardan los cambios y se crea la clave ;'$ para autenticar el 'ervidor $steris% B1 8ara crear la
clave se usar4 una utilidad que viene con la instalacin de $steris%1 8rimero se entra en la carpeta
donde se guardar4n las claves:
c% ;var;#ib;asterisk;ke.s
'e crea la clave:
astgenke. +n server1
?is script generates an /SA private and pu*lic 2e. pair
in 07= format for use *. Asteris2: ;ou !ill *e as2ed to
enter a passcode for .our 2e. multiple times: 0lease
enter te same code eac time: ?e resulting files !ill
need to *e moved to /var/li*/asteris2/2e.s if .ou !ant
to use tem- and an. private 2e.s 8:2e. files9 !ill
need to *e initialiWed at runtime eiter *. running
Asteris2 !it te '1i' option- or !it te 'init 2e.s'
command once Asteris2 is running:
0ress 7,?7/ to continue or _C to cancel:
Menerating SSL 2e. 'server(':
Menerating /SA private 2e.- (@)" *it long modulus
:::::::::::::::ZZZZZZ
::::ZZZZZZ
e is C33AH 8@#(@@@(9
!riting /SA 2e.
&e. creation successful:
0u*lic 2e.: server(:pu*
200
0rivate 2e.: server(:2e.
'e crear4n dos archivos/ uno contiene la clave publica y uno la clave privada1 La publica se copia en el
'ervidor $steris% B:
scp server1.p"b root'1J2.16=.12=.1BC&;var;#ib;asterisk;ke.s
$hora se puede aadir el usuario server0 al archivo iax1conf
nano ;etc;asterisk;ia0.conf
'e aaden las siguientes lineas al final del archivo:
Bserver1C
ty2euser
d=secretdundi8secret
conte<tservera'7oca7
?ua7i:yyes
disa77owa77
a77owu7aw
a77owa7aw
Importante definir el par4metro context con el valor del contexto que se ha definido en nuestra ruta
Oservera=localP
)l ultimo archivo que hay que modificar es el dialplan:
nano ;etc;asterisk;e0tensions.conf
$ntes del contexto internas se define el contexto servera=local y se incluyen las rutas/extensiones que
se quiere compartir con el servidor B
Bservera'7oca7C
e<ten G 20313Answer/6
e<ten G 203n3P7ay=acD/he77o'wor7d6
e<ten G 203n3Hangu2/6
8ara las solicitudes remotas creamos otro contexto:
Bdundi're1otoC
switch G +#N+i8server=
.e esta forma cuando se marca un numero y ese numero no est4 presente en ningHn contexto del
dialplan/ $steris% consultar4 el servidor remoto con que tiene una conexin .,+.i1 )l nombre serverb
es el contexto .,+.i que luego se crear4 en el archivo dundi1conf del 'ervidor $steris% B
$adimos el contexto dundi=remoto a la lista de contextos disponibles para la extensiones configuradas
20:
en el 'ervidor $steris% $ Oen negrita los cambiosP:
WexternasX
include =" internas
include =" internacio
include =" par%edcalls
include =" test
include =" conferencias
inc#"%e EW %"n%i+re5oto
WlocalesX
include =" internas
include =" auten
include =" par%edcalls
include =" test
include =" conferencias
inc#"%e EW %"n%i+re5oto
'e guardan los cambios y se continHa con la configuracin del 'ervidor $steris% B
!ervi%or 7
5v ;etc;asterisk;%"n%i.conf ;etc;asterisk;%"n%i.conf.o#%
nano ;etc;asterisk;%"n%i.conf
!on los oportunos cambios/ la configuracin del servidor B ser4:
Bgenera7C
de2art1ent,12resa9
organiPation,12resa9
7oca7itySanta -arta
state2rov-agda7ena
countryCo7o1=ia
e1ai7ad1inNservidor9$co1
2honeW54KKKKKKKK
=indaddr0$0$0$0
2ort>520
entityid&2;@C;*1;+&;1*;((
cacheti1e@E00
tt7@2
autoDi77yes
secret2athdundi
storehistoryyes
B1a22ingsC
server= G server='7oca7303.AK23server2;RSS,CR,%TN1*2$1E($12($1>58RSN#-9,RT
202
B&2;@C;*1;+&;1*;E>C
1ode7 sy11etric
host 1*2$1E($12($1>>
inDey server1
outDey server2
inc7ude a77
2er1it server=
?ua7i:y yes
'e crea la clave ;'$ para el servidor B:
c% ;var;#ib;asterisk;ke.s
astgenke. +n server2
?is script generates an /SA private and pu*lic 2e. pair
in 07= format for use *. Asteris2: ;ou !ill *e as2ed to
enter a passcode for .our 2e. multiple times: 0lease
enter te same code eac time: ?e resulting files !ill
need to *e moved to /var/li*/asteris2/2e.s if .ou !ant
to use tem- and an. private 2e.s 8:2e. files9 !ill
need to *e initialiWed at runtime eiter *. running
Asteris2 !it te '1i' option- or !it te 'init 2e.s'
command once Asteris2 is running:
0ress 7,?7/ to continue or _C to cancel:
Menerating SSL 2e. 'server)':
Menerating /SA private 2e.- (@)" *it long modulus
::::::::::::ZZZZZZ
::::::::::::::::::::::::::ZZZZZZ
e is C33AH 8@#(@@@(9
!riting /SA 2e.
&e. creation successful:
0u*lic 2e.: server):pu*
0rivate 2e.: server):2e.
'e copia la clave publica en el 'ervidor $steris% $
scp server2.p"b root'1J2.16=.12=.1BB&;var;#ib;asterisk;ke.s
'e crea el usuario I$>:
nano ;etc;asterisk;ia0.conf
Bserver2C
20A
ty2euser
?ua7i:yyes
d=secretdundi8secret
conte<tserver='7oca7
disa77owa77
a77owu7aw
a77owa7aw
8ara terminar se modifica el plan de llamadas:
nano ;etc;asterisk;e0tensions.conf
Bserver='7oca7C
e<ten G >0313Answer/6
e<ten G >03n3P7ay=acD/he77o'wor7d6
e<ten G >03n3Hangu2/6
Bdundi're1otoC
switch G +#N+i8servera
'e incluye el contexto dundi=remoto de forma que sea accesible a las extensiones:
WexternasX
include =" internas
include =" internacio
include =" par%edcalls
include =" test
include =" conferencias
inc#"%e EW %"n%i+re5oto
WlocalesX
include =" internas
include =" auten
include =" par%edcalls
include =" test
include =" conferencias
inc#"%e EW %"n%i+re5oto
,na veN terminada la configuracin del 'ervidor $steris% B en ambos se reinicia la 8B>:
;etc;init.%;asterisk restart
'e entra en la consola del servidor $steris% $:
asterisk +rvvvvvvvvvvvv
se mira la lista de comandos disponibles para .,+.i
20C
!LI" /e#p %"n%i
dundi flush WstatsX -lush .,+.i cache
dundi loo%up Loo%up a number in .,+.i
dundi precache 8recache a number in .,+.i
dundi query (uery a .,+.i )I.
dundi set debug _onZoff` )nable/.isable .,+.i debugging
dundi sho3 entityid .isplay *lobal )ntity I.
dundi sho3 mappings 'ho3 .,+.i mappings
dundi sho3 peers WregisteredZi 'ho3 defined .,+.i peers
dundi sho3 peer 'ho3 info on a specific .,+.i peer
dundi sho3 precache 'ho3 .,+.i precache
dundi sho3 requests 'ho3 .,+.i requests
dundi sho3 trans 'ho3 active .,+.i transactions
dundi store history _onZoff` )nable/.isable .,+.i historic records
'e controla que haya conexin entre los dos servidores:
!LI" %"n%i s/ow peers
7ID Host 0ort =odel Avg?ime Status
f):Ac:D(:DC:ec:aA (D):(C6:()6:()C 8S9 "3)@ S.mmetric Fnavail %& 8( ms9
( dundi peers $( online- @ offline- @ unmonitored'
!on el comando:
!LI" %atabase s/ow
/dundi/secret : qot(ea9p0B:*?'ByoiNl8$==T2ob*b0(tv%,eciJs?r6C!$==
/dundi/secretexpiry : 0:CB:0:AG2
aparecer4 la clave creada por el modulo pbxDdundi y el tiempo que falta para que caduque1
$hora se puede hacer la primera consulta para controlar que efectivamente las rutas se est4n
compartiendo:
!LI" %"n%i #ook"p B0'serverb
(: @ IAK)/server):2M;Wca*pp>3HHFLIEcCeM>55B(D):(C6:()6:()C/"@ 87KIS?SPCA,=A?CH9
from f):Ac:D(:DC:ec:aA- e#pires in AC@@ s
DF,Di loo2up completed in "3 ms
)n el servidor $steris% B las extensin compartidas es la AG y efectivamente enviando la solicitud/ la
respuesta es que la extensin existe1 )n el comando ademas de la extensin va indicado el contexto
como se ha definido en el bloque mappings del dundi1conf del servidor $steris% B1
'i se enva una solicitud para una ruta que no existe la respuesta ser4:
!LI" %"n%i #ook"p 20'serverb
DF,Di loo2up returned no results:
20@
DF,Di loo2up completed in A ms
'e hace otra solicitud de prueba desde el 'ervidor $steris% B
!LI" %"n%i #ook"p 20'servera
(: @ IAK)/server(:HZD2?sda*HfMCo2XZ#)Cg55B(D):(C6:(CD:()6/)@ 87KIS?SPCA,=A?CH9
from f):Ac:D(:df:3*:Ae- e#pires in AC@@ s
DF,Di loo2up completed in H ms
8ara terminar las pruebas se conecta un softphone al servidor $steris% B y se intenta llamar la
extensin :G Oque es presente en el servidor $steris% $P
Las potencialidades del protocolo .,+.i son pr4cticamente infinitas y en este capitulo se han
presentado las herramientas b4sicas para empeNar a utiliNarlo1
1=.B Conectar %os servi%ores Asterisk con 8penV-
)n la versin 01@1:1:: de $steris%/ las sealiNacin y el flu#o media no via#an cifrados1 $ pesar de que
en teora es posible cifrar la sealiNacin 'I8/ la implementacin en esta versin de $steris% no ha dado
buenos resultados1 8or este motivo si se quiere tener conexiones seguras entre servidores $steris%/ la
unica opcin es crear una red 98+ entre ellos1 )n este p4rrafo se ver4 como instalar y configurar
Lpen98+ en dos servidores $steris% y como crear una conexin 98+ entre los dos1
!ervi%or A
8rimero se instala L&O/ una librera de compresin datos requerida por Lpen98+:
c% ;"sr;src
'e descarga:
wget /ttp&;;www.ober/"5er.co5;openso"rce;#zo;%own#oa%;#zo+2.06.tar.gz
'e descomprime y se instala:
tar +0f #zo+2.06.tar.gz
c% #zo+2.06
.;config"re ,prefi0E;"sr
5ake
5ake insta##
$hora se puede instalar la ultima versin disponible de Ope%V!N:
c% ;"sr;src
se descarga:
20?
wget /ttp&;;sw"p%ate.openvpn.org;co55"nit.;re#eases;openvpn+2.2.1.tar.gz
se descomprime:
tar +0f openvpn+2.2.1.tar.gz
se entra en la carpeta creada:
c% openvpn+2.2.1
se compila:
.;config"re
5ake
5ake insta##
'e prepara el servidor Linux para crear las distintas claves O!$/ servidor/ clienteP:
c% eas.+rsa;2.0
'e crea la carpeta donde se guardar4n las distintas claves:
5k%ir ;"sr;#oca#;sbin;ke.s
nano vars
'e modifican las lneas que siguen1 )sto datos ser4n los predefinidos que se usaran al momento de la
generacin de las claves1 8ersonaliNar los datos desde la segunda linea en adelante:
e0port ?*P6)(3E;"sr;#oca#;sbin;ke.s
e0port ?*P6C89T3PEZC8Z
e0port ?*P6-38V(C*EZMA1Z
e0port ?*P6C(TPEZ!antaMartaZ
e0port ?*P6831EZVozToVoiceZ
e0port ?*P6*MA(LEZa%5in'voztovoice.orgZ
e0port ?*P6*MA(LEa%5in'voztovoice.org
'e guardan los cambios y se prepara el programa para la generacin de las claves:
. .;vars
(M-83TAT*& entre e# pri5er p"nto . e# seg"n%o /a. "n espacio
.;c#ean+a##
20F
$hora se puede empeNar a generar las claves empeNando con la !$ O!ertificate $uthorityP:
.;b"i#%+ca
Menerating a (@)" *it /SA private 2e.
::ZZZZZZ
::::::ZZZZZZ
!riting ne! private 2e. to 'ca:2e.'
11111
;ou are a*out to *e as2ed to enter information tat !ill *e incorporated
into .our certificate request:
Eat .ou are a*out to enter is !at is called a Distinguised ,ame or a D,:
?ere are quite a fe! fields *ut .ou can leave some *lan2
Jor some fields tere !ill *e a default value-
If .ou enter ':'- te field !ill *e left *lan2:
11111
Countr. ,ame 8) letter code9 $C%':
State or 0rovince ,ame 8full name9 $=agdalena':
Localit. ,ame 8eg- cit.9 $Santa=arta':
%rganiWation ,ame 8eg- compan.9 $LoW?oLoice':
%rganiWational Fnit ,ame 8eg- section9 $cangeme':P9K
Common ,ame 8eg- .our name or .our server's ostname9 $cangeme':7i>>'2>2$1e1=ers$7inode$co1
,ame $cangeme':voPtovoice
7mail Address $adminBvoWtovoice:org':
)n Q!ommon +ameR se pone el nombre de dominio de Linode o del servidor Linux que se est4
utiliNando1 'e continua con la clave del servidor:
.;b"i#%+ke.+server server
Menerating a (@)" *it /SA private 2e.
::::::::::::::ZZZZZZ
::::::::::::::ZZZZZZ
!riting ne! private 2e. to 'server:2e.'
11111
;ou are a*out to *e as2ed to enter information tat !ill *e incorporated
into .our certificate request:
Eat .ou are a*out to enter is !at is called a Distinguised ,ame or a D,:
?ere are quite a fe! fields *ut .ou can leave some *lan2
Jor some fields tere !ill *e a default value-
If .ou enter ':'- te field !ill *e left *lan2:
11111
Countr. ,ame 8) letter code9 $C%':
State or 0rovince ,ame 8full name9 $=agdalena':
Localit. ,ame 8eg- cit.9 $Santa=arta':
%rganiWation ,ame 8eg- compan.9 $LoW?oLoice':
20B
%rganiWational Fnit ,ame 8eg- section9 $cangeme':P9K
Common ,ame 8eg- .our name or .our server's ostname9 $server':7i>>'2>2$1e1=ers$7inode$co1
,ame $cangeme':voWtovoice
7mail Address $adminBvoWtovoice:org':
0lease enter te follo!ing 'e#tra' attri*utes
to *e sent !it .our certificate request
A callenge pass!ord $':
An optional compan. name $':
Fsing configuration from /root/openvpn1):):(/eas.1rsa/):@/openssl1@:D:6:cnf
Cec2 tat te request matces te signature
Signature o2
?e Su*4ect's Distinguised ,ame is as follo!s
countr.,ame :0/I,?AIL7:'C%'
state%r0rovince,ame :0/I,?AIL7:'=agdalena'
localit.,ame :0/I,?AIL7:'Santa=arta'
organiWation,ame :0/I,?AIL7:'LoW?oLoice'
organiWationalFnit,ame:0/I,?AIL7:'0IK'
common,ame :0/I,?AIL7:'li""1)"):mem*ers:linode:com'
name :0/I,?AIL7:'voWtovoice'
emailAddress :IA3S?/I,M:'adminBvoWtovoice:org'
Certificate is to *e certified until Dec (@ (":(C:@D )@)( M=? 8AC3@ da.s9
Sign te certificate? $./n':y
( out of ( certificate requests certified- commit? $./n'y
Erite out data*ase !it ( ne! entries
Data Iase Fpdated
8ara terminar se crea una clave para el cliente Oel servidor $steris% BP:
.;b"i#%+ke. c#ienteb
Menerating a (@)" *it /SA private 2e.
:::::::ZZZZZZ
::::::::::::::::::::::::::::::::::::::::::::::::ZZZZZZ
!riting ne! private 2e. to 'cliente*:2e.'
11111
;ou are a*out to *e as2ed to enter information tat !ill *e incorporated
into .our certificate request:
Eat .ou are a*out to enter is !at is called a Distinguised ,ame or a D,:
?ere are quite a fe! fields *ut .ou can leave some *lan2
Jor some fields tere !ill *e a default value-
If .ou enter ':'- te field !ill *e left *lan2:
11111
Countr. ,ame 8) letter code9 $C%':
State or 0rovince ,ame 8full name9 $=agdalena':
2:G
Localit. ,ame 8eg- cit.9 $Santa=arta':
%rganiWation ,ame 8eg- compan.9 $LoW?oLoice':
%rganiWational Fnit ,ame 8eg- section9 $cangeme':P9K
Common ,ame 8eg- .our name or .our server's ostname9 $cliente*':7i>>'2>2$1e1=ers$7inode$co1
,ame $cangeme':voWtovoice
7mail Address $adminBvoWtovoice:org':
0lease enter te follo!ing 'e#tra' attri*utes
to *e sent !it .our certificate request
A callenge pass!ord $':
An optional compan. name $':
Fsing configuration from /root/openvpn1):):(/eas.1rsa/):@/openssl1@:D:6:cnf
Cec2 tat te request matces te signature
Signature o2
?e Su*4ect's Distinguised ,ame is as follo!s
countr.,ame :0/I,?AIL7:'C%'
state%r0rovince,ame :0/I,?AIL7:'=agdalena'
localit.,ame :0/I,?AIL7:'Santa=arta'
organiWation,ame :0/I,?AIL7:'LoW?oLoice'
organiWationalFnit,ame:0/I,?AIL7:'0IK'
common,ame :0/I,?AIL7:'li""1)"):mem*ers:linode:com'
name :0/I,?AIL7:'voWtovoice'
emailAddress :IA3S?/I,M:'adminBvoWtovoice:org'
Certificate is to *e certified until Dec (@ (":(D:)@ )@)( M=? 8AC3@ da.s9
Sign te certificate? $./n':y
( out of ( certificate requests certified- commit? $./n'y
Erite out data*ase !it ( ne! entries
Data Iase Fpdated
'i se tiene planeado utiliNar la conexin para conectar telefonos I8 y/o 'oftphone/ se crean otras claves
cliente1 'e termina con la generacin del par4metro .iffie 6ellman
.;b"i#%+%/
Menerating DH parameters- (@)" *it long safe prime- generator )
?is is going to ta2e a long time
Lpen98+ utiliNa como puerto predefinido el 00BA Opuede ser ,.8 o E!8P1 6ay que abrirlo en Iptables
solamente para la I8 del servidor B1 'uponiendo que la I8 del servidor B es B@10:@100C10@/ se aaden
las siguientes lineas en la configuracin:
nano ;etc;s.sconfig;iptab#es
# )2enLPN
'A .NP#% '2 tc2 '1 state ''state N,V '1 tc2 's *E$12E$115$1E ''d2ort 11*> 'J ACC,P%
'A .NP#% '2 ud2 '1 ud2 's *E$12E$115$1E ''d2ort 11*> 'J ACC,P%
2:0
'e guardan los cambios y se reinicia iptables:
service iptab#es restart
Lo siguiente es instalar el script de arranque presente en las fuentes de Lpen98+:
c% ;"sr;src;openvpn+2.2.1;sa5p#e+scripts;
cp openvpn.init ;etc;rc.%;init.%;openvpn
c/kconfig ++a%% openvpn
c/kconfig openvpn on
'e crea la carpeta donde se guardar4n los archivos de configuracin de Lpen98+:
5k%ir ;etc;openvpn
'e crea el archivo de configuracin para el servidor:
c% ;etc;openvpn
nano server.conf
'e copian las siguientes lineas:
2ort 11*>
2roto ud2
dev tun
ca 8usr87oca78s=in8Deys8ca$crt
cert 8usr87oca78s=in8Deys8server$crt
Dey 8usr87oca78s=in8Deys8server$Dey
dh 8usr87oca78s=in8Deys8dh102>$2e1
server 10$($0$0 255$255$255$0
i:con:ig'2oo7'2ersist i22$t<t
Dee2a7ive 10 120
co12'7Po
1a<'c7ients @0
2ersist'Dey
2ersist'tun
7og o2env2n$7og
7og'a22end o2env2n$7og
ver= @
1anage1ent 7oca7host 4505
8ara m4s informaciones sobre estos parametros:
2::
http://openvpn1net/index1php/open=source/documentation/ho3to1htmleexamples
'e guardan los cambios y se inicia Lpen98+
;etc;init.%;openvpn start
)n la configuracin de red del servidor aparecer4 un nuevo dispositivo:
ifconfig
!ervi%or 7
'e sigue el mismo procedimiento para el servidor B:
c% ;"sr;src
'e descarga:
wget /ttp&;;www.ober/"5er.co5;openso"rce;#zo;%own#oa%;#zo+2.06.tar.gz
'e descomprime y se instala:
tar +0f #zo+2.06.tar.gz
c% #zo+2.06
.;config"re ,prefi0E;"sr
5ake
5ake insta##
$hora se puede instalar la ultima versin disponible de Lpen98+:
c% ;"sr;src
se descarga:
wget /ttp&;;sw"p%ate.openvpn.org;co55"nit.;re#eases;openvpn+2.2.1.tar.gz
se descomprime:
2:2
tar +0f openvpn+2.2.1.tar.gz
se entra en la carpeta creada:
c% openvpn+2.2.1
se compila:
.;config"re
5ake
5ake insta##
'e prepara el servidor Linux para crear las distintas claves O!$/ servidor/ clienteP:
c% eas.+rsa;2.0
'e crea la carpeta donde se guardar4n las distintas claves:
5k%ir ;"sr;#oca#;sbin;ke.s
nano vars
'e modifican las lneas que siguen1 )sto datos ser4n los que se usaran como predefinidos al momento
de la generacin de las claves1 8ersonaliNar los datos desde la segunda linea en adelante:
e0port ?*P6)(3E;"sr;#oca#;sbin;ke.s
e0port ?*P6C89T3PEZC8Z
e0port ?*P6-38V(C*EZMA1Z
e0port ?*P6C(TPEZ!antaMartaZ
e0port ?*P6831EZVozToVoiceZ
e0port ?*P6*MA(LEZa%5in'voztovoice.orgZ
e0port ?*P6*MA(LEa%5in'voztovoice.org
'e guardan los cambios y se prepara el programa para la generacin de las claves:
. .;vars
(M-83TAT*& entre e# pri5er p"nto . e# seg"n%o /a. "n espacio
.;c#ean+a##
$hora se puede empeNar a generar las claves empeNando con la !$ O!ertificate $uthorityP:
.;b"i#%+ca
2:A
Menerating a (@)" *it /SA private 2e.
:ZZZZZZ
::::ZZZZZZ
!riting ne! private 2e. to 'ca:2e.'
11111
;ou are a*out to *e as2ed to enter information tat !ill *e incorporated
into .our certificate request:
Eat .ou are a*out to enter is !at is called a Distinguised ,ame or a D,:
?ere are quite a fe! fields *ut .ou can leave some *lan2
Jor some fields tere !ill *e a default value-
If .ou enter ':'- te field !ill *e left *lan2:
11111
Countr. ,ame 8) letter code9 $C%':
State or 0rovince ,ame 8full name9 $=agdalena':
Localit. ,ame 8eg- cit.9 $Santa=arta':
%rganiWation ,ame 8eg- compan.9 $LoW?oLoice':
%rganiWational Fnit ,ame 8eg- section9 $cangeme':P9K
Common ,ame 8eg- .our name or .our server's ostname9 $cangeme':7i212'@@$1e1=ers$7inode$co1
,ame $cangeme':voPtovoice
7mail Address $adminBvoWtovoice:org':
)n Q!ommon +ameR se pone el nombre de dominio de Linode o del servidor Linux que se est4
utiliNando1 'e continua con la clave del servidor:
.;b"i#%+ke.+server server
Menerating a (@)" *it /SA private 2e.
:ZZZZZZ
::ZZZZZZ
!riting ne! private 2e. to 'server:2e.'
11111
;ou are a*out to *e as2ed to enter information tat !ill *e incorporated
into .our certificate request:
Eat .ou are a*out to enter is !at is called a Distinguised ,ame or a D,:
?ere are quite a fe! fields *ut .ou can leave some *lan2
Jor some fields tere !ill *e a default value-
If .ou enter ':'- te field !ill *e left *lan2:
11111
Countr. ,ame 8) letter code9 $C%':
State or 0rovince ,ame 8full name9 $=agdalena':
Localit. ,ame 8eg- cit.9 $Santa=arta':
%rganiWation ,ame 8eg- compan.9 $LoW?oLoice':
%rganiWational Fnit ,ame 8eg- section9 $cangeme':P9K
Common ,ame 8eg- .our name or .our server's ostname9 $server':7i212'@@$1e1=ers$7inode$co1
,ame $cangeme':voPtovoice
7mail Address $adminBvoWtovoice:org':
2:C
0lease enter te follo!ing 'e#tra' attri*utes
to *e sent !it .our certificate request
A callenge pass!ord $':
An optional compan. name $':
Fsing configuration from /usr/src/openvpn1):):(/eas.1rsa/):@/openssl1@:D:6:cnf
Cec2 tat te request matces te signature
Signature o2
?e Su*4ect's Distinguised ,ame is as follo!s
countr.,ame :0/I,?AIL7:'C%'
state%r0rovince,ame :0/I,?AIL7:'=agdalena'
localit.,ame :0/I,?AIL7:'Santa=arta'
organiWation,ame :0/I,?AIL7:'LoW?oLoice'
organiWationalFnit,ame:0/I,?AIL7:'0IK'
common,ame :0/I,?AIL7:'li)()1AA:mem*ers:linode:com '
name :0/I,?AIL7:'voWtovoice'
emailAddress :IA3S?/I,M:'adminBvoWtovoice:org'
Certificate is to *e certified until Dec (@ (3:(A:(6 )@)( M=? 8AC3@ da.s9
Sign te certificate? $./n':y
( out of ( certificate requests certified- commit? $./n'y
Erite out data*ase !it ( ne! entries
Data Iase Fpdated
8ara terminar se crea una clave para el cliente Oel servidor $steris% BP:
.;b"i#%+ke. c#ientea
Menerating a (@)" *it /SA private 2e.
::::::::::ZZZZZZ
::::ZZZZZZ
!riting ne! private 2e. to 'clientea:2e.'
11111
;ou are a*out to *e as2ed to enter information tat !ill *e incorporated
into .our certificate request:
Eat .ou are a*out to enter is !at is called a Distinguised ,ame or a D,:
?ere are quite a fe! fields *ut .ou can leave some *lan2
Jor some fields tere !ill *e a default value-
If .ou enter ':'- te field !ill *e left *lan2:
11111
Countr. ,ame 8) letter code9 $C%':
State or 0rovince ,ame 8full name9 $=agdalena':
Localit. ,ame 8eg- cit.9 $Santa=arta':
%rganiWation ,ame 8eg- compan.9 $LoW?oLoice':
%rganiWational Fnit ,ame 8eg- section9 $cangeme':P9K
Common ,ame 8eg- .our name or .our server's ostname9 $clientea':7i212'@@$1e1=ers$7inode$co1
,ame $cangeme':voPtovoice
2:@
7mail Address $adminBvoWtovoice:org':
0lease enter te follo!ing 'e#tra' attri*utes
to *e sent !it .our certificate request
A callenge pass!ord $':
An optional compan. name $':
Fsing configuration from /usr/src/openvpn1):):(/eas.1rsa/):@/openssl1@:D:6:cnf
Cec2 tat te request matces te signature
Signature o2
?e Su*4ect's Distinguised ,ame is as follo!s
countr.,ame :0/I,?AIL7:'C%'
state%r0rovince,ame :0/I,?AIL7:'=agdalena'
localit.,ame :0/I,?AIL7:'Santa=arta'
organiWation,ame :0/I,?AIL7:'LoW?oLoice'
organiWationalFnit,ame:0/I,?AIL7:'0IK'
common,ame :0/I,?AIL7:'li)()1AA:mem*ers:linode:com '
name :0/I,?AIL7:'voWtovoice'
emailAddress :IA3S?/I,M:'adminBvoWtovoice:org'
Certificate is to *e certified until Dec (@ (3:(3:AH )@)( M=? 8AC3@ da.s9
Sign te certificate? $./n':y
( out of ( certificate requests certified- commit? $./n'y
Erite out data*ase !it ( ne! entries
Data Iase Fpdated
'e termina con la generacin del par4metro .iffie 6ellman
.;b"i#%+%/
Menerating DH parameters- (@)" *it long safe prime- generator )
?is is going to ta2e a long time
!omo para el servidor $/ se abren los puertos en iptables para la I8 del servidor $
nano ;etc;s.sconfig;iptab#es
# )2enLPN
'A .NP#% '2 tc2 '1 state ''state N,V '1 tc2 's E*$1E>$201$14( ''d2ort 11*> 'J ACC,P%
'A .NP#% '2 ud2 '1 ud2 's E*$1E>$201$14( ''d2ort 11*> 'J ACC,P%
'e guardan los cambios y se reinicia iptables:
service iptab#es restart
Lo siguiente es instalar el script de arranque presente en las fuentes de Lpen98+:
c% ;"sr;src;openvpn+2.2.1;sa5p#e+scripts;
2:?
cp openvpn.init ;etc;rc.%;init.%;openvpn
c/kconfig ++a%% openvpn
c/kconfig openvpn on
'e crea la carpeta donde se guardar4n los archivos de configuracin de Lpen98+:
5k%ir ;etc;openvpn
'e crea el archivo de configuracin para el servidor:
c% ;etc;openvpn
nano server.conf
'e copian las siguientes lineas:
2ort 11*>
2roto ud2
dev tun
ca 8usr87oca78s=in8Deys8ca$crt
cert 8usr87oca78s=in8Deys8server$crt
Dey 8usr87oca78s=in8Deys8server$Dey
dh 8usr87oca78s=in8Deys8dh102>$2e1
server 10$10$0$0 255$255$255$0
i:con:ig'2oo7'2ersist i22$t<t
Dee2a7ive 10 120
co12'7Po
1a<'c7ients @0
2ersist'Dey
2ersist'tun
7og o2env2n$7og
7og'a22end o2env2n$7og
ver= @
1anage1ent 7oca7host 4505
'e guardan los cambios1 La diferencia con el archivo del 'ervidor $ es que se utiliNa otro rango de I8
local1 'e inicia Lpen98+
;etc;init.%;openvpn start
)n la configuracin de red del servidor aparecer4 un nuevo dispositivo:
ifconfig
2:F
$hora que los dos servidores est4n configurados/ hay que crear una conexin cliente en cada uno1 8ara
eso hay que copiar las siguientes claves de un servidor a otro:
'ervidor $ d 'ervidor B:
ca1crt
clientb1crt
clientb1%ey

La claves se copian en la carpeta /etc/openvpn del servidor B1


'ervidor B d 'ervidor $:
ca1crt
clienta1crt
clienta1%ey
La claves se copian en la carpeta /etc/openvpn del servidor $1
$hora en el servidor $ se crea el archivo de configuracin cliente para conectarse al servidor B:
c% ;etc;openvpn
nano c#ient.conf
se copian las siguientes lineas:
c7ient
dev tun
2roto ud2
re1ote *E$12E$115$1E 11*>
reso7v'retry in:inite
no=ind
2ersist'Dey
2ersist'tun
ca 8etc8o2env2n8ca$crt
cert 8etc8o2env2n8c7ientea$crt
Dey 8etc8o2env2n8c7ientea$Dey
co12'7Po
2:B
ver= @
ns'cert'ty2e server
route'1ethod e<e
route'de7ay 2
)n la linea A se pone la direccin I8 del servidor B y el puerto O00BAP1 'e guardan los cambios y se
reinicia Lpen98+:
service openvpn restart
'i todo ha salido bien/ tendremos un nuevo dispositivo de red:
8ara que las llamadas puedan ser enrutadas correctamente por $steris%/ hay que aadir estas dos nuevas
redes en la configuracin del sip1conf:
nano ;etc;asterisk;sip.conf
.espu5s del primer par4metro localnet se aade:
7oca7net10$($0$08255$255$255$0
7oca7net10$10$0$08255$255$255$0
'e recarga la configuracin 'I8:
asterisk +r0 Zsip re#oa%Z
'e sigue el mismo procedimiento para el servidor B:
c% ;etc;openvpn
nano c#ient.conf
se copian las siguientes lineas:
22G
c7ient
dev tun
2roto ud2
re1ote E*$1E>$201$14( 11*>
reso7v'retry in:inite
no=ind
2ersist'Dey
2ersist'tun
ca 8etc8o2env2n8ca$crt
cert 8etc8o2env2n8c7iente=$crt
Dey 8etc8o2env2n8c7iente=$Dey
co12'7Po
ver= @
ns'cert'ty2e server
route'1ethod e<e
route'de7ay 2
'e guardan los cambios y se reinicia Lpen98+:
service openvpn restart
'i todo ha salido bien/ tendremos un nuevo dispositivo de red:
8ara que las llamadas puedan ser enrutadas correctamente por $steris%/ hay que aadir estas dos nuevas
redes en la configuracin del sip1conf:
nano ;etc;asterisk;sip.conf
.espu5s del primer par4metro localnet se aade:
7oca7net10$($0$08255$255$255$0
7oca7net10$10$0$08255$255$255$0
'e recarga la configuracin 'I8:
220
asterisk +r0 Zsip re#oa%Z
,na veN terminada la configuracin y la conexin Lpen98+ entre los dos servidores/ se crea una
nueva troncal 'I8 entre los dos1 )sta veN utiliNando la autenticacin por I81 8ara crear la troncal
podemos utiliNar o el rango de I8 0G1F1G10 o el rango de I8 0G10G1G10
!ervi%or A
nano ;etc;asterisk;sip.conf
al final del archivo se pone:
Bserver=v2nC
ty2e2eer
conte<tv2n
host10$($0$E
disa77owa77
a77owg42*
a77owa7aw
7anguagees
?ua7i:yyes
dt1:1ode r:c2(@@
Importante destacar la direccin I8 98+ del servidor B en el parametro host y el contexto OvpnP1 'e
guarda los cambios y se pasa al servidor B1
!ervi%or 7
nano ;etc;asterisk;sip.conf
al final del archivo se pone:
Bserverav2nC
ty2e2eer
conte<tv2n
host10$($0$1
disa77owa77
a77owg42*
a77owa7aw
7anguagees
?ua7i:yyes
dt1:1ode r:c2(@@
'e recarga la configuracin 'I8 en ambos servidores:
asterisk +r0 Zsip re#oa%Z
22:
'e entra en la consola de ambos servidores y se averigua que la conexin este funcionando:
asterisk +rvvvvvvvvvv
!ervi%or A&
!LI" sip s/ow peers #ike serverbvpn
,ame/username Host D.n ,at ACL 0ort Status /ealtime
server*vpn (@:(@:@:( , 3@C@ %& 8) ms9
( sip peers $=onitored: ( online- @ offline Fnmonitored: @ online- @ offline'
!ervi%or 7&
!LI" sip s/ow peers #ike serveravpn
,ame/username Host D.n ,at ACL 0ort Status /ealtime
serveravpn (@:6:@:( , 3@C@ %& 8) ms9
( sip peers $=onitored: ( online- @ offline Fnmonitored: @ online- @ offline'
8erfectoYY
8ara probar las llamadas entre los servidores/ utiliNando la red Lpen98+/ se modifica el dialplan
acord4ndose que el contexto que se ha definido en la troncal es vpn1 !omo para la prueba con la
conexin entre servidores $steris% con el protocolo 'I8/ hay que engaar $steris% para que acepte la
llamada ya que las extensiones configuradas en los dos servidores son las mismas1 )n el caso de
servidores con numeros de extensiones distintas/ no hace falta aadir la linea donde se modifica el
!$LL);I.
!ervi%or A
nano ;etc;asterisk;e0tensions.conf
antes del contexto internas/ se crea el nuevo contexto vpn y se aaden las siguientes lineas:
Bv2nC
e<ten G 40313Answer
sa1e G n3P7ay=acD/de1o'congrats6
sa1e G n3Hangu2
y en el contexto internas se pone:
e<ten G 40313Set/CALL,R.+/nu16o2env2na6
sa1e G n3+ia7/S.P8server=v2n8RS,K%,NT6
sa1e G n3hangu2
!ervi%or 7
222
nano ;etc;asterisk;e0tensions.conf
antes del contexto internas/ se crea el nuevo contexto vpn y se aaden las siguientes lineas:
Bv2nC
e<ten G 40313Answer
sa1e G n3P7ay=acD/de1o'congrats6
sa1e G n3Hangu2
y en el contexto internas se pone:
e<ten G 40313Set/CALL,R.+/nu16o2env2n=6
sa1e G n3+ia7/S.P8serverav2n8RS,K%,NT6
sa1e G n3hangu2
'e guardan los cambios en ambos servidores y se recarga el dialplan
asterisk +r0 Z%ia#p#an re#oa%Z
8ara terminar/ se hace una prueba marcando desde la extensin 0GGG del servidor $ la extensin ?G1 )n
la consola de $steris% de servidor $ debera aparecer:
7#ecuting $H@Be#ternas:(' ,o%p8VSI0/(@@@1@@@@@@"3V- VV9 in ne! stac2
7#ecuting $H@Be#ternas:)' Set8VSI0/(@@@1@@@@@@"3V- VCALL7/ID8num95openvpnaV9 in ne! stac2
11 7#ecuting $H@Be#ternas:A' ,o%p8VSI0/(@@@1@@@@@@"3V- VopenvpnaV9 in ne! stac2
11 7#ecuting $H@Be#ternas:"' Dial8VSI0/(@@@1@@@@@@"3V- VSI0/server*vpn/H@V9 in ne! stac2
55 Fsing SI0 /?0 CoS mar2 3
55 Fsing SI0 L/?0 CoS mar2 C
55 Fsing FD0?L CoS mar2 3
11 Called server*vpn/H@
11 SI0/server*vpn1@@@@@@"C ans!ered SI0/(@@@1@@@@@@"3
La comodidad de tener las dos redes 98+ es que se pueden configurar otros clientes en los
computadores donde tenemos instalados los 'oft8hone para la llamadas o los tel5fonos que soportan
este protocolo Oe#emplo Sealin% desde el modelo E:@ para arribaP1
22A
CA-(T9L8 X(X
!eg"ri%a% en Asterisk
1J.1 La cinco reg#as basicas
6ay una reglas de oro que se necesita seguir en la configuracin de $steris%1 )stas reglas permiten
me#orar la seguridad de la 8B> y evitar ataques exitosos:
01 utiliNar siempre contraseas bastantes largas y difciles de memoriNar
:1 no aceptar llamadas entrantes de invitados1 )sto se configura con el par4metro a##owg"estEno
en la parte general del sip1conf
21 configurar en la parte general del sip1conf el par4metro a#wa.sa"t/re2ectE.es1 .e esta forma
cualquier intento de registro a extensiones existentes en la centralita/ recibir4 como respuesta
que la extensin no existe/ evitando dar traNas al atacante
A1 +o permitir el acceso al $&I de $steris% desde remoto Oteniendo cerrado el puerto CG2F E!8
del servidor Linux1 )n el caso que se necesite utiliNar el $&I desde remoto/ configurar Iptables
de modo que acepte el trafico solo desde determinadas direcciones I81 ,n e#emplo es esta linea:
+A (-9T +p tcp +5 state ++state *T +5 tcp ++%port C0G= +s 1J2.16=.1B2.200 +2 ACC*-T
!on esta linea se podr4 conectar al $&I de $steris% solamente la maquina con I8
0B:10@F10A:1:GG1
C1 ,tiliNar nHmeros o nombres de extensiones largos y no f4cilmente memoriNables1
1J.2 4ai#2ban
$demas de estas C reglas/ es posible instalar en el servidor $steris% -ail:Ban1/ un programa que lee los
registros de $steris% O/var/log/asteris%/messagesP y si hay un numero determinado de intentos de
conexin sin 5xito/ bloquea la I8 de donde se han originados interactuando con iptables OcortafuegosP1
'e descarga el programa:
c% ;"sr;src
wget /ttp&;;%own#oa%s.so"rceforge.net;pro2ect;fai#2ban;fai#2ban+stab#e;fai#2ban+0.=.B;fai#2ban+
0.=.B.tar.bz2
se descomprime:
tar +0f fai#2ban+0.=.B.tar.bz2
se entra en la carpeta:
c% fai#2ban+0.=.B
y se instala:
p.t/on set"p.p. insta##
'e activa el script para arrancarlo como servicio:
cp ;"sr;src;fai#2ban+0.=.B;fi#es;re%/at+init% ;etc;init.%;fai#2ban
c/kconfig ++a%% fai#2ban
c/kconfig fai#2ban on
'e configura para que lea los registros de $steris%:
c% ;etc;fai#2ban;fi#ter.%
nano asterisk.conf
y se aaden estas lneas:
# &ai729an con:iguration :i7e
# RRevision; 250 R
#
B.NCL#+,SC
# Read co11on 2re:i<es$ .: any custo1iPations avai7a=7e '' read the1 :ro1
# co11on$7oca7
#=e:ore co11on$con:
B+e:initionC
#"dae1on asterisD
# )2tion; :ai7rege<
# Notes$; rege< to 1atch the 2assword :ai7ures 1essages in the 7og:i7e$ %he
# host 1ust =e 1atched =y a grou2 na1ed !host!$ %he tag !QH)S%G! can
# =e used :or standard .P8hostna1e 1atching and is on7y an a7ias :or
# /Y;;;:S>3ET;6Y/YPQhostG]SW6
# La7ues; %,K%
#
:ai7rege< N)%.C,$U $U; Registration :ro1 5$U5 :ai7ed :or 5QH)S%G5 ' Vrong 2assword
N)%.C,$U $U; Registration :ro1 5$U5 :ai7ed :or 5QH)S%G5 ' No 1atching 2eer :ound
N)%.C,$U $U; Registration :ro1 5$U5 :ai7ed :or 5QH)S%G5 ' #serna1e8auth na1e 1is1atch
N)%.C,$U $U; Registration :ro1 5$U5 :ai7ed :or 5QH)S%G5 ' +evice does not 1atch ACL
N)%.C,$U $U; Registration :ro1 5$U5 :ai7ed :or 5QH)S%G5 ' Peer is not su22osed to register
N)%.C,$U $U; QH)S%G :ai7ed to authenticate as 5$U5R
N)%.C,$U $U; No registration :or 2eer 5$U5 ]/:ro1 QH)S%G]6
N)%.C,$U $U; Host QH)S%G :ai7ed -+5 authentication :or 5$U5 /$U6
N)%.C,$U $U; &ai7ed to authenticate user $UNQH)S%G$U
N)%.C,$U $U; Sending :aDe auth reJection :or device $UNQH)S%G$U
# )2tion; ignorerege<
22?
# Notes$; rege< to ignore$ .: this rege< 1atches3 the 7ine is ignored$
# La7ues; %,K%
#
ignorerege<
con estas lneas se configura fail:ban para que controle eventuales accesos indeseados que aparecen en
el archivo de registro de $steris%1
'e termina modificando el archivo de configuracin general de fail:ban:
c% ;etc;fai#2ban
nano 2ai#.conf
al final del archivo se aaden las lineas que siguen:
Uasterisk+iptab#esV
enab#e% E tr"e
fi#ter E asterisk
action E iptab#es+a##portsUna5eEA!T*3(!?> protoco#Ea##V
sen%5ai#+w/oisUna5eEA!T*3(!?> %estEroot'#oca#/ost> sen%erEfai#2ban'pb0.%.n%ns.orgV
#ogpat/ E ;var;#og;asterisk;5essages
5a0retr. E C
banti5e E 1=00
)n la lnea logpath aparece el archivo de registros que fail:ban leer4 para averiguar intentos frustrados
de conexin a $steris%1 )n la configuracin hay que modificar la direccin de correo electrnico1 )n
lugar de root[localhost se pone la direccin de correo electrnico donde se quiere recibir los avisos1
)n sender/ en lugar de fail:ban[pbx1dyndns1org se pone fail:ban[nombrededominio del servidor
donde est4 instalado $steris%1 8ara enviar los correos/ fail:ban est4 configurado con 'endmail1 !on
esta configuracin cuando se verifiquen C ataques del mismo tipo procedentes de la misma I8/ -ail:ban
bloquear4 el I8 insertando una nueva linea en el archivo de configuracin de Iptables y la mantendr4
bloqueada por 0FGG segundos1
8ara que funcione hay que averiguar que en el archivo de configuracin de $steris%
nano ;etc;asterisk;#ogger.conf
en la siguiente linea este presente el campo notice Oconfiguracin predefinidaP:
5essages EW notice>debug
'e inicia fail:ban:
;etc;init.%;fai#2ban start
Starting fail)*an: $ %& '
22F
'i se quiere hacer una prueba se configura en >=lite una extensin que no existe en el sistema y se
intenta registrarla a $steris%:
La I8 de donde se est4 intentando registrarse ser4 bloqueada1 $ccediendo a la consola del servidor
remoto desde otra direccin I8 con el comando:
iptab#es +L
se ver4 la I8 bloqueada:
'i por error bloquean la I8 de su computador/ la Hnica forma de quitar el bloqueo es parar y reiniciar
Iptables o reiniciar el servidor Linux1
22B
CA-(T9L8 XX
Monitorear Asterisk
)n este modulo se ilustrar4 como minotorear $steris% a trav5s de dos distintos programas:
&onit
+agios y el protocolo '+&8
20.1 Monit
&onit es un programa Lpen 'ource para la gestin y el monitoreo de procesos/ programas/ archivos/
carpetas y particiones de un sistema Linux1 8ermite programar tareas de mantenimiento y de correccin
de errores cuando se verifiquen problemas en el sistema1
'e instalar4 desde las fuentes:
c% ;"sr;src
wget /ttp&;;55onit.co5;5onit;%ist;5onit+C.G.1.tar.gz
tar +0f 5onit+C.G.1.tar.gz
c% 5onit+C.G.1
'e compila y se instala:
.;config"re ++prefi0E;"sr
5ake
5ake insta##
'e termina la instalacin con la copia y activacin del script de arranque de monit:
c% contrib
cp rc.5onit ;etc;init.%;5onit
c/5o% F0 ;etc;init.%;5onit
c/kconfig ++a%% 5onit
c/kconfig 5onit on
$hora se modifica el archivo de configuracin para monitorear los siguientes programas:
'endmail
&y'(L
$steris%
la troncal Kustvoip
)l archivo de configuracin de &onit se divide en tres bloques:
1#oba# !ectionT aqu se pone la configuracin general del programa
!ervicesT donde se configuran los servicios
(nc#"%es: permite incluir a la configuracin de &onit otros archivo que contienen a su veN la
configuracin de otros procesos1
nano ;etc;5onitrc
set dae1on E0
e Indica cada cuando &onit controla los servicios Oen este caso cada @G segundosP
with start de7ay @0
e $l iniciar el programa el primer ciclo se e#ecutar4 despu5s de 2G segundos
set 7og:i7e 8var87og81onit$7og
e +ombre del archivo donde se guardar4n todos los registros de &onit
set id:i7e 8var8$1onit$id
e +ombre de la carpeta y archivo donde se guardar4 el numero del proceso de &onit
set 1ai7server 7oca7host
e nombre del host del servidor de correo electrnico que &onit utiliNar4 para enviar las alertas
set event?ueue =asedir 8var81onit s7ots 100
e 'i por alguna causa el servidor de correo electrnico no est5 funcionando podemos decirle a &onit de
e guardar todas las alerta en una determinada carpeta1 !uando el servidor volver4 a funcionar/ todas las
e alertas ser4n enviada siguiendo el orden cronolgico en que se guardaron
set 1ai7':or1at S
&ro1; 1onitNvoPtovoice$co1
Su=Ject; 1onit a7erta '' R,L,N% RS,RL.C,
-essage; R,L,N% Servicio RS,RL.C,
&echa; R+A%,
Accian; RAC%.)N
Host; RH)S%
+escri2cian; R+,SCR.P%.)N
%u devoto e127eado3
2A:
-onit
T
e !on el bloque de arriba/ se define como tiene que ser enviado el correo electrnico de alerta
set a7ert ad1inNvoPtovoice$co1
e !on esta lnea se define el correo electrnico que recibir4 todas las alertas OpersonaliNarP
set htt2d 2ort 2(12
a77ow ad1in;sesa1o
e &onit viene con un servidor Meb1 )n las dos lineas de arriba activamos el servidor 3eb para el
e puerto :F0: Oque hay que abrir en el cortafuegosP y nombre de usuario y contrasea para ingresar
e a la pagina
e 'ervidor Linux
checD syste1 cursoasterisD$org
i: 7oadavg /11in6 G > then a7ert
i: 7oadavg /51in6 G 2 then a7ert
i: 1e1ory usage G 45\ then a7ert
i: c2u usage /user6 G 40\ then a7ert
i: c2u usage /syste16 G @0\ then a7ert
i: c2u usage /wait6 G 20\ then a7ert
e $steris%
checD 2rocess asterisD with 2id:i7e 8var8run8asterisD8asterisD$2id
start 2rogra1 !8etc8init$d8asterisD start! with ti1eout E0 seconds
sto2 2rogra1 !8etc8init$d8asterisD sto2! with ti1eout E0 seconds
i: :ai7ed host 124$0$0$1 2ort 50@( then restart
i: 5 restarts within 5 cyc7es then ti1eout
e Eroncal 'I8
checD host Iustvoi2 with address si2$Justvoi2$co1
i: :ai7ed 2ort 50E0 ty2e ud2 2rotoco7 S.P
and target usuarioNsi2$Justvoi2$co1 1a<:orward 10
then a7ert
e 'end&ail
checD 2rocess send1ai7 with 2id:i7e 8var8run8send1ai7$2id
grou2 1ai7
start 2rogra1 !8etc8init$d8send1ai7 start!
sto2 2rogra1 !8etc8init$d8send1ai7 sto2!
i: :ai7ed 2ort 25 2rotoco7 s1t2 then restart
i: 5 restarts within 5 cyc7es then ti1eout
e &y'(L
checD 2rocess 1ys?7 with 2id:i7e 8var8run81ys?7d81ys?7d$2id
grou2 data=ase
start 2rogra1 !8etc8init$d81ys?7d start!
2A2
sto2 2rogra1 !8etc8init$d81ys?7d sto2!
i: :ai7ed 2ort @@0E 2rotoco7 1ys?7 then restart
i: 5 restarts within 5 cyc7es then ti1eout
'e guardan los cambios y se cambian los permisos del archivo de configuracin:
c/5o% A00 ;etc;5onitrc
'e inicia &onit:
;etc;init.%;5onit start
)n el cortafuegos/ hay que abrir el puerto :F0: E!8 para tener acceso al servidor Meb interno de
&onit:
nano ;etc;s.sconfig;iptab#es
antes de esta linea:
'A .NP#% '2 ud2 '1 ud2 ''d2ort >520 'J ACC,P%
!e aXa%e&
# -onit
'A .NP#% '2 tc2 '1 state ''state N,V '1 tc2 ''d2ort 2(12 'J ACC,P%
'e guardan los cambios y se reinicia iptables
service iptab#es restart
.espu5s de unos minutos se puede acceder a la pagina de administracin de &onit:
/ttp&;;(-servi%or&2=12
)n lugar de I8servidor se pone la direccin I8 o el nombre de dominio del servidor Linux:
+ombre de usuario: admin
2AA
!ontrasea: sesamo
,na veN entrados en la Meb de &onit/ el pagina principal aparecer4n todos los procesos/programas
monitoreados:
y en el caso del servidor Linux:
!ualquier problema se presente con el servidor y/o con los procesos/programas configurados/ se
recibir4 una notificacin al correo electrnico configurado1
20.2 !M-
2AC
,na definicin del protocolo '+&8 tomada de 3i%ipedia: Q)l 8rotocolo 'imple de $dministracin de
;ed o '+&8 es un protocolo de la capa de aplicacin que facilita el intercambio de informacin de
administracin entre dispositivos de red1 )s parte de la familia de protocolos E!8/I81 '+&8 permite a
los administradores supervisar el funcionamiento de la red/ buscar y resolver sus problemas/ y planear
su crecimiento1R .e hecho a trav5s de este protocolo se monitorean servidores/ router/ s3itch y casi
cualquier tipo de aparado conectado a la red Olocal o remotaP1 $steris% implementa el protocolo '+&8
y es posible monitorear muchos par4metros de la 8B>1
8ara empeNar se averigua si el modulo resDsnmp est4 instalado y cargado en $steris%:
asterisk +rvvvvvvvvvvvvvvv
!LI" 5o%"#e s/ow #ike sn5p
'ignifica que el modulo est4 instalado1
'e sale de la consola de $steris%:
!LI" I"it
'e configura el modulo:
5v ;etc;asterisk;res6sn5p.conf ;etc;asterisk;res6sn5p.conf.o#%
nano ;etc;asterisk;res6sn5p.conf
'e aaden las siguientes lineas:
Bgenera7C
su=agent yes
ena=7ed yes
'e guardan los cambios y se copian los LI. de $steris% en la carpeta de '+&81 ,n LI. Oidentificador
de ob#etoP es una cadena alfanum5rica que se utiliNa para identificar de forma Hnica un ob#eto que en el
caso del protocolo '+&8 representa un determinado par4metro del dispositivo que se quiere
monitorear1 )#emplo: se puede conocer el numero de llamadas totales cursadas por la centralita desde
su ultimo arranque1
cp ;"sr;src;asterisk+1.6.2.22;%oc;asterisk+5ib.t0t ;"sr;s/are;sn5p;5ibs
cp ;"sr;src;asterisk+1.6.2.22;%oc;%igi"5+5ib.t0t ;"sr;s/are;sn5p;5ibs
$hora se configura '+&8 de modo que pueda interactuar con $steris%:
2A@
c% ;etc;sn5p
se mueve el archivo de configuracin predefinido:
5v sn5p%.conf sn5p%.conf.o#%
y se crea uno nuevo:
nano sn5p%.conf
donde se ponen las siguientes lneas:
1aster agent<
agentKPer1s 0EE0 0550 root root
co12sec 7oca7 7oca7host 2u=7ic
co12sec re1ote KKK$KKK$KKK$KKK 2u=7ic
grou2 asterisD v1 7oca7
grou2 asterisD v2c 7oca7
grou2 NetVorD v1 re1ote
grou2 NetVorD v2c re1ote
view a77 inc7uded $1
access asterisD !! any noauth e<act a77 none none
access NetVorD !! any noauth e<act a77 none none
8rimero se define el agente y los permisos de acceso1 Luego se definen dos comunidades1 ,na tiene
acceso local y otra remoto OHtil si se quiere hacer consultas desde otro servidorP1 6ay que sustituir
>>>1>>>1>>>1>>> con la ip del servidor remoto1 Luego se definen dos grupos y que tipo de
consultas pueden hacer Oen este caso '+&8 versin 0 y versin :c1 'e define el tipo de ob#etos que
pueden consultar Oen este caso todosP y los permisos que cada grupo tiene1
'e guardan los cambios y se reinicia $steris%:
;etc;init.%;asterisk restart
se inicia snmp:
;etc;init.%;sn5p% start
se vuelve el arranque autom4tico:
c/kconfig sn5p% on
2A?
8ara ver los resultados con la descripcin de los LI. en lugar de los nHmeros de los ob#etos:
e0port M(7!Ea##
$hora ya se puede hacer una consulta utiliNando el LI. raiN de $steris%:
sn5pwa#k +8T +c p"b#ic +v 2c #oca#/ost .1.G.6.1.B.1.22AG6
.e todas las lineas que aparecen/ las que interesan son estas tres:
$'E);I'<=&IB::ast!hanEype+ame11 = 'E;I+*: I$>:
$'E);I'<=&IB::ast!hanEype+ame12 = 'E;I+*: 'I8
$'E);I'<=&IB::ast!hanEype+ame1B = 'E;I+*: .$6.I
'e anotan los valores que aparecen en negrita y el tipo de canal asociado/ es decir:
(AX 1
!(- 2
)AK)( B
'e pasa a la instalacin y configuracin de +agios1
20.G agios
8ara la instalacin de +agios desde los paquetes precompilados/ hay que instalar el repositorio
rpmforge:
c% ;"sr;src
wget /ttp&;;pkgs.repoforge.org;rp5forge+re#ease;rp5forge+re#ease+0.C.2+2.e#C.rf.iG=6.rp5
rp5 +iv/ rp5forge+re#ease+0.C.2+2.e#C.rf.iG=6.rp5
$hora se controlan los paquetes disponibles para nagios:
."5 searc/ nagios
cec2+logfiles:iA6C : Logfile cec2 plugin for nagios
icinga:iA6C : %pen Source ost- service and net!or2 monitoring program
nagios:iA6C : %pen Source ost- service and net!or2 monitoring program
nagios1devel:iA6C : Header files- li*raries and development documentation for nagios
nagios1nrpe:iA6C : ,agios /emote 0lug1ins 7#ecution daemon
nagios1nsca:iA6C : ,agios Service Cec2 Acceptor
nagios1nsca1client:iA6C : nagios send+nsca
nagios1plugins:iA6C : Host/service/net!or2 monitoring program plugins for ,agios
nagios1plugins1nrpe:iA6C : ,agios plug1in for ,/07
2AF
nagios1plugins1setuid:iA6C : Host/service/net!or2 monitoring program plugins for ,agios requiring
setuid
ndoutils:iA6C : ,agios plugin to store ,agios data in a relational data*ase
nsc:iA6C : Console monitor for ,agios
nsc:noarc : Console monitor for ,agios
perl1,agios1%*4ect:noarc : ,agios::%*4ect 1 ,agios o*4ect configuration parsing
perl1,agios10lugin:noarc : Jamil. of perl modules to streamline !riting ,agios
rss"nagios:iA6C : Autenticated /SS alerts for nagios
'e instalan los siguientes paquetes Oel programa/ los plugins/ una utilidad para guardar los registros de
+agios en una base de datos/ unas libreras en 8erl para utiliNar el protocolo >&88/ una aplicacin para
el envo de los correo electrnicos desde +agios utiliNando una linea de comandoP:
."5 insta## nagios nagios+p#"gins per#+et+Sabber per#+(8+!ocket+!!L n%o"ti#s 5ai#0 /ttp%
!entL' se har4 cargo de instalar tambi5n todas las dependencias necesarias1 'e crear4 el grupo y
usuario +agios/ unas carpetas donde se guardar4n los registros y los archivo necesarios para que
+agios funcione/ un archivo para la integracin con el servidor Meb OapacheP1 ,na veN terminada la
instalacin/ se empieNa con la configuracin de +agios1
)l archivo principal donde se definen los par4metros para el programa es nagios1cfg y se encuentra en
la carpeta /etc/nagios1
8ara este tipo de instalacin no hace falta hacer algHn tipo de modifica es ese archivo1
Los archivos de configuracin de +agios que hay que modificar son los siguientes y se encuentran en
la carpeta /etc/nagios/ob#ects:
commands1cfg
localhost1cfg
contact1cfg
template1cfg
'e inicia con contact1cfg:
nano ;etc;nagios;ob2ects;contacts.cfg
)n este archivo se cambian estas lneas:
de:ine contactS
contact"na1e nagiosad1in
use generic'contact
a7ias Nagios Ad1in
e1ai7 nagiosN7oca7host
T
2AB
para que queden:
de:ine contactS
contact"na1e nagiosad1in
use generic'contact
a7ias Nagios Ad1inistrador
e1ai7 :u7anoNg1ai7$co1
address1 :u7ano
T
fulano[gmai1com es la direccin de correo electrnico donde +agios enviar4 las notificaciones
OpersonaliNarP1 $ddress0 es el usuario *oogleEal% donde +agios enviar4 las notificaciones va mensa#e
instant4neo1 +agiosadmin es el nombre del administrador predefinido en +agios1 !ada veN que aparece
una lnea que empieNa con QuseR/ hace referencia a un template definido en el archivo templates1cfg1
'e guardan los cambios y se abre el archivo templates1cfg1 )n este archivo el bloque del generic=
contact es:
nano ;etc;nagios;ob2ects;te5p#ates.cfg
define contactQ
name generic=contact
service+notification+period )"#H
ost+notification+period )"#H
service+notification+options !-u-c-r-f-s
ost+notification+options d-u-r-f-s
service+notification+commands notif.1service1*.1email-noti:y'service'Ja==er
ost+notification+commands notif.1ost1*.1email-noti:y'host'Ja==er
can+su*mit+commands (
register @
R
)n este bloque se aaden las dos partes en negrita1 )sto para enviar las notificaciones tambi5n va
*oogleEal%1
6ay una explicacin de estos par4metros en la documentacin oficial de +agios 21G
)n el servidor hay servicios que no son crticos y que se pueden monitorear cada C minutos Oel tiempo
predefinido en +agiosP1 8ara $steris%/ a veces/ estos cinco minutos pueden ser demasiados1 8or eso al
final del archivo se aade el siguiente bloque que define que para todos los servicios de $steris% el
control se har4 cada : minutos Ose puede personaliNarP:
de:ine serviceS
na1e asterisD
use generic'service
1a<"checD"atte12ts >
nor1a7"checD"interva7 2
2CG
retry"checD"interva7 1
register 0
T
$hora se modifica el tercer archivo Ocommands1cfgP donde se definen los comandos que luego se
utiliNar4n para la configuracin del monitoreo del servidor local1 Los plugins de +agios se instalan
en /usr/lib/nagios/plugins1 8ara monitorear $steris%/ se usar4 el plugin chec%Dsnmp y otro que viene en
la carpeta /usr/lib/nagios/plugins/contrib/ chec%Dasteris%1pl1 8ara monitorear las troncales/ se descargar4
un plugin del repositorio de +agios y por ultimo/ para enviar las notificaciones via *oogleEal% se
descargar4 otro plugin1
'e entra en la carpeta /usr/lib/nagios/plugins y se descargan los plugin que hacen falta:
c% ;"sr;#ib;nagios;p#"gins
wget /ttp&;;www.voztovoice.org;ca5p"s;a2b;c/eck6asterisk6peers
wget /ttp&;;www.voztovoice.org;ca5p"s;a2b;notif.6via62abber.p#
'e cambian los permisos para que se pueda e#ecutra:
c/5o% F0 c/eck6asterisk6peers
c/5o% F0 notif.6via62abber.p#
+otifyDviaD#abber1pl es el Hnico que tiene que ser modificado1 'e abre:
nano notif.6via62abber.p#
se modifican estas dos lineas:
1y Ruserna1e !usuarioGoog7e%a7D!A
1y R2assword !2assword!A
para que queden:
1y Ruserna1e !sutano!A
1y R2assword !2assword!A
sutano es el usuario googletal% y pass3ord su contrasea Ono hace falta poner [gmail1comP
,na par5ntesis1 )l plugin funciona de la siguiente manera1 )n este archivo se configura el usuario de
*oogleEal% que enviar4 las notificaciones1 )l usuario configurado en el contact1cfg serj 5l que las
recibe siempre y cuando aadir4 el usuario configurado en el plugin en su lista de amigos1 )sto quiere
decir que para que el sistema funcione se necesita tener dos cuentas de *oogleEal%1
8ara conocer la sintaxis de un plugin de +agios el comando es:
.;c/eck6sn5p +/
2C0
8ara aadir los comandos en +agios modificaremos el archivo commands1cfg
nano ;etc;nagios;ob2ects;co55an%s.cfg
8rimero se configura el comando para enviar las notificaciones va mensa#e instant4neo1 )sto se hace
para los servidores Oen este caso unoP y los servicios1 .espu5s del bloque notify=service=by=email se
aade:
# 5host'noti:y'=y'Ja==er5 co11and de:inition
de:ine co11andS
co11and"na1e noti:y'host'Ja==er
co11and"7ine 8usr87i=8nagios827ugins8noti:y"via"Ja==er$27 RC)N%AC%A++R,SS1R
!Host 5RH)S%AL.ASR5 is RH)S%S%A%,R ' .n:o; RH)S%)#%P#%R!
T
# 5service'noti:y'=y'Ja==er5 co11and de:inition
de:ine co11and S
co11and"na1e noti:y'service'Ja==er
co11and"7ine 8usr87i=8nagios827ugins8noti:y"via"Ja==er$27 RC)N%AC%A++R,SS1R
!RN)%.&.CA%.)N%YP,R RH)S%NA-,R RS,RL.C,+,SCR RS,RL.C,S%A%,R
RS,RL.C,)#%P#%R RL)NG+A%,%.-,R!
T
(M-83TAT*& to%o #o I"e aparece en #a #inea co55an%+#ine %ebe estar en #a 5is5a
#inea
'e continua con el plugin chec%Dsnmp para monitorear $steris% a trav5s del protocolo '&+81 'e
buscan estas lineas:
` Oc/eck6sn5pO co55an% %efinition
%efine co55an%]
co55an%6na5e c/eck6sn5p
co55an%6#ine \9!*31\;c/eck6sn5p +K \K8!TA))3*!!\ \A311\
^
y se modifican para que queden:
%efine co55an%]
co55an%6na5e c/eck6sn5p
co55an%6#ine \9!*31\;c/eck6sn5p +K \K8!TA))3*!!\ +C p"b#ic +o \A311\ +- 2c +#
\A312\ +w \A31G\ +c \A31B\
^
(M-83TAT*& to%o #o I"e aparece en #a #inea co55an%+#ine %ebe estar en #a 5is5a
#inea
2C:
Co55an% na5e& nombre del comando
Co55an% #ine: los par4metros que pasaremos al comando:
La macro OvariableP ^,');0^ contiene el valor /usr/lib/nagios/plugins como especificado en el
archivo /etc/nagios/resource1cfg
chec%Dsnmp I +ombre del plugin
=6 ^6L'E$..;)''^ I la opcin I6 define el servidor que se va a consultar y
^6L'E$..;)''^ es una macro OvariableP predefinida que contiene el nombre del servidor
como se definir4 luego en localhost1cfg
=! public I es la comunidad que se va a utiliNar para la conexin al agente como definido en el
archivo /etc/snmp/snmp1conf
=o I la LI. que se consultar4
=8 :c I versin de '+&8 utiliNada para la consulta
=l la etiqueta que luego se definir4
=3 I est4 por Marning
=c I est4 por !ritical
^$;*0^ ^$;*:^ ^$;*2^ $;*A^ son las macros OvariablesP cuyo valor ser4 asignado desde
la configuracin de localhost1cfg
$l verificarse el evento Marning y/o !ritical/ +agios enviar4 una notificacin por correo electrnico y
va mensa#e instant4neo1
)l segundo plugin se define de la siguiente forma Oaadir las lineas despu5s del bloque anteriorP:
%efine co55an%]
co55an%6na5e c/eck6asterisk
co55an%6#ine \9!*31\;contrib;c/eck6asterisk.p# +/ \K8!TA))3*!!\ +5 5gr +" nagios +p
sesa5o
^
nagios y sesamo indican respectivamente el usuario y la contrasea para conectarse al $&I de $steris%1
8ara definirlos/ luego hay que modificar el manager1conf de $steris%:
)l ultimo plugin que se define en el archivo command1cfg/ es el que permite monitorear las troncales:
de:ine co11andS
co11and"na1e checD"Justvoi2
co11and"7ine sudo 8usr87i=8nagios827ugins8checD"asterisD"2eers 't si2 '2 RARG1R
T
8ara terminar se modifica este bloque:
# 5checD"ssh5 co11and de:inition
de:ine co11andS
co11and"na1e checD"ssh
co11and"7ine R#S,R1R8checD"ssh RARG1R RH)S%A++R,SSR
2C2
T
8ara que quede:
# 5checD"ssh5 co11and de:inition
de:ine co11andS
co11and"na1e checD"ssh
co11and"7ine R#S,R1R8checD"ssh '2 RARG1R RH)S%A++R,SSR
T
)ssto para permitir a +agios de controlar es servicio ''6 en el puerto que se definir4 sucesivamente en
el archivo localhost1cfg
'e guardan los cambios1
!omo se puede ver este plugin se activa con el programa sudo que permite e#ecutar un comando con
los permisos del usuario root1 )sto porque el programa +agios se inicia con usuario nagios y ese
usuario no tiene los permisos para e#ecutar el plugin1 8ara que pueda hacerlo hay que modificar el
archivo sudousers que es donde se definen los usuarios que pueden e#ecutar comandos con los permisos
de root1 8ara modificar este archivo con el editor nano hay que seguir este procedimiento:
c% ;root
nano .bas/6profi#e
al final del archivo se aade la siguiente linea:
e<2ort ,+.%)R8usr8=in8nano
'e guardan los cambios y se recarga la shell bash:
so"rce .bas/6profi#e
$hora se puede modificar el archivo sudousers con nano con el comando:
vis"%o
primero se modifica esta linea:
+e:au7ts re?uiretty
para que quede:
# +e:au7ts re?uiretty
luego se aade al final del archivo:
2CA
nagios ALL/ALL6 N)PASSV+; 8usr87i=8nagios827ugins8checD"asterisD"2eers
'e guardan los cambios1
!omo se haba dicho el plugin chec%Dasteris%1pl funciona conect4ndose a la $&I de $steris%1 8ara que
funcione hay que modifica el archivo manager1conf de $steris%:
nano ;etc;asterisk;5anager.conf
$l final del archivo se aade:
BnagiosC
secret sesa1o
deny0$0$0$080$0$0$0
2er1it124$0$0$18255$255$255$255
read syste13ca7737og3ver=ose3co11and3agent3user3con:ig
write syste13ca7737og3ver=ose3co11and3agent3user3con:ig
'e guardan los cambios y se actualiNa la configuracin de $steris%:
;etc;init.%;asterisk re#oa%
8ara terminar la configuracin de +agios se modifica el archivo localhost1cfg1 'e mueve el predefinido:
5v ;etc;nagios;ob2ects;#oca#/ost.cfg ;etc;nagios;ob2ects;#oca#/ost.cfg.o#%
se crea uno nuevo:
nano ;etc;nagios;ob2ects;#oca#/ost.cfg
'e aaden las siguientes lineas:
de:ine hostS
use 7inu<'server
host"na1e CursoAsterisD
a7ias CursoAsterisD
address 124$0$0$1
T
de:ine serviceS
use asterisD
host"na1e CursoAsterisD
service"descri2tion S.P
checD"co11and checD"sn12FAS%,R.SM'-.9;;astChan%y2eChanne7s$2F!Cana7es S.P Activos!F(F1E
T
'i los canales 'I8 activos son m4s de F se recibir4 un M$;+I+*/ si son mas de 0@ un !;IEI!$L1 'e
2CC
continua copiando las lineas que siguen:
de:ine serviceS
use asterisD
host"na1e CursoAsterisD
service"descri2tion .AK2
checD"co11and checD"sn12FAS%,R.SM'-.9;;astChan%y2eChanne7s$1F!Cana7es .AK2 Activos!F>F(
T
de:ine serviceS
use asterisD
host"na1e CursoAsterisD
service"descri2tion +AH+.
checD"co11and checD"sn12FAS%,R.SM'-.9;;astChan%y2eChanne7s$>F!Cana7es +AH+. Activos!F>F(
T
de:ine serviceS
use asterisD
host"na1e CursoAsterisD
service"descri2tion AsterisD"checD
checD"co11and checD"asterisD
T
de:ine serviceS
use asterisD
host"na1e CursoAsterisD
service"descri2tion %ronca7"Iustvoi2
checD"co11and checD"Justvoi2FJustvoi2
T
,na pequea explicacin1 )n el primer bloque se define el nombre del servidor/ un alias y la direccin
I8 Oen este caso siendo +agios y $steris% instalados en el mismo servidor se indica 0:?1G1G10 o
localhostP1
)n los tres bloques que siguen se controla a trav5s del plugin chec%Dsnmp/ los canales 'I8/ I$>: y
.$6.I activos1 'e asignan a las cuatros macros OvariablesP/ que se han visto al momento de la
configuracin del comando O^$;*0^ ^$;*:^ ^$;*2^ $;*A^P/ los respectivos valores separados
por el caracter Y Las LI. se toman interrogando $steris% con '+&8 como hemos visto en el p4rrafo
anterior1
)n el bloque que sigue se utiliNa el plugin chec%Dasteris%1pl y a trav5s del $&I de $steris% se controla
que est5 corriendo1
)l ultimo bloque se utiliNan para monitorear la troncal 'I8 Kustvoip1 )n la segunda linea de cada bloque
aparece el par4metro Quse asteris%R que representa el template Ola plantillaP configurada en
templates1cfg que se utiliNa para estos comandos1
2C@
'i se quiere controlar tambi5n algunos servicios b4sicos del servidor Ousuarios/ procesos/ carga/ etc7P/
se aaden estas lneas:
de:ine serviceS
use 7oca7'service
host"na1e CursoAsterisD
service"descri2tion P.NG
checD"co11and checD"2ingF100$0320\F500$03E0\
T
de:ine serviceS
use 7oca7'service
host"na1e CursoAsterisD
service"descri2tion Current #sers
checD"co11and checD"7oca7"usersF20F50
T
de:ine serviceS
use 7oca7'service
host"na1e CursoAsterisD
service"descri2tion %ota7 Processes
checD"co11and checD"7oca7"2rocsF250F>00FRS^+%
T
de:ine serviceS
use 7oca7'service
host"na1e CursoAsterisD
service"descri2tion Current Load
checD"co11and checD"7oca7"7oadF5$03>$03@$0F10$03E$03>$0
T
de:ine serviceS
use 7oca7'service
host"na1e CursoAsterisD
service"descri2tion SSH
checD"co11and checD"sshF15000
T
$ntes de iniciar +agios hay una forma para controlar que todos los archivos de configuracin est5n
exentes de errores:
nagios +v ;etc;nagios;nagios.cfg
'i la respuesta termina con:
?otal Earnings: @
?otal 7rrors: @
2C?
?ings loo2 o2a. 1 ,o serious pro*lems !ere detected during te pre1fligt cec2
'ignifica que la configuracin est4 bien1 )n caso contrario +agios indicar4 el archivo y la lnea donde
se encuentra el error1
)l acceso a la pagina Meb de administracin de +agios est4 protegido y para poder acceder hay que
configurar la contrasea del usuario predefinido/ nagiosadmin/ de la siguiente forma:
/tpassw% +bc ;etc;nagios;/tpassw%."sers nagiosa%5in sesa5o
Adding pass!ord for user nagiosadmin
)ste comando crear4 una archivo htpass3d1users que contendr4 los datos de acceso para el usuario
predefinido nagiosadmin Oen este caso la contrasea es sesamoP
'e configuran +agios para que arranque en autom4tico:
c/kconfig nagios on
c/kconfig /ttp% on
'e reinicia apache y luego se inicia +agios:
;etc;init.%;/ttp% start
;etc;init.%;nagios start
$ntes de entrar a la pagina de administracin de nagio/ hay que abrir el puerto FG E!8 Oservidor M)BP
en Iptables:
nano ;etc;s.sconfig;iptab#es
$ntes de este bloque:
# -onit
'A .NP#% '2 tc2 '1 state ''state N,V '1 tc2 ''d2ort 2(12 'J ACC,P%
se aade:
# H%%P
'A .NP#% '2 tc2 '1 state ''state N,V '1 tc2 ''d2ort (0 'J ACC,P%
'e reinicia iptables:
service iptab#es restart
8ara entrar en la pagina de +agios:
/ttp&;;(-Lino%e;nagios
2CF
$parecer4 una ventana donde habr4 que insertar las credenciales de acceso es decir:
usuario: nagiosadmin
contrasea: sesamo
'e presiona el botn $ceptar1 $parece la pagina inicial de +agios:
)n la derecha se selecciona el enlace 6osts para ver el servidor configurado:
'e selecciona 'ervices para ver los servicios monitoreados:
2CB
8ara probar el monitoreo de las lineas 'I8/ se marca desde la extensin 0GGG a la extensin 0GG01
.espues de un par de minutos Ocon la llamada abiertaP en la pagina de administracin de +agios debe
aparecer:
20.B )8"ti#s
+.Lutils permite guardar todos los datos de +agios en una base de datos &y'(L1 Lo primero que hay
que hacer es crear la base de datos:
5.sI# +" root +psesa5o
mysql" create %atabase nagiosM
se asigna al usuario nagios los permisos para la base de datos creada:
mysql" 13AT ALL -3(V(L*1*! 8 nagios.N T8 OnagiosO'O#oca#/ostO ()*T(4(*) 7P
Osesa5oOM
mysql" f#"s/ privi#egesM
mysql" I"it
'e crean las tablas en la base de datos nagios desde un archivo instalado con el paquete +.Lutils:
5.sI# +" root +psesa5o nagios Y ;"sr;s/are;n%o"ti#s;5.sI#.sI#
$hora falta modificar dos archivos de configuracin: nagios1cfg y ndo:db1cfg1 8rimero se modifica
nagios1cfg
nano ;etc;nagios;nagios.cfg
al final del archivo se aaden las siguientes lineas:
event"=roDer"o2tions'1
2@G
=roDer"1odu7e8usr87i=e<ec8ndo1od'@<$o con:ig":i7e8etc8nagios8ndo1od$c:g
que permiten a +agios conectarse a la librera de +.Lutils y enviar todos los datos de configuracin y
los eventos:
'e guardan los cambios y se continua con el ndo:db1cfg:
nano ;etc;nagios;n%o2%b.cfg
.espu5s de estas dos lineas:
ndo2d="usernagios
ndo2d="grou2nagios
se aade:
7ocD":i7e8var8nagios8ndo2d=$7ocD
en dbDuser y dbDpass3ord se pone:
d="usernagios
d="2asssesa1o
se guardan los cambios y se inicia +.Lutils:
/etc;init.%;n%o"ti#s start
y se reinicia +agios:
;etc;init.%;nagios restart
se averigua que en el log de +agios haya conexin con la librera +.Lutils:
nano ;var;#og;nagios;nagios.#og
Las lineas que interesan son:
)n Mebmin se puede controlar que las tablas se han ido llenando de nuevas entradas como/ por
e#emplo/ la tabla nagiosDcommands:
2@0
Eodo est4 funcionando como debera1 6ay disponibles distintos tipos de consultas de las tablas en la
carpeta /usr/share/ndoutils/queries/
2@:
Capit"#o XX(
8penfire . Asterisk
21.1 (nsta#aci$n %e 8penfire
Lpenfire es un servidor Kabber1 !on Lpenfire instalado se tendr4 un servidor de mensa#era instant4nea
sin tener que acudir a servicios de terceros1 )sto implica tener una red de mensa#era instant4nea
segura/ f4cilmente mane#able y segura gracias al uso del protocolo EL'1 b8orque Lpenfirec1 )ntre
tantos servidores con protocolo >&&8 Lpenfire se destaca por la sencilleN de la instalacin/ la
administracin desde una p4gina Meb/ su multiplicidad de funciones y la posibilidad de ser integrado
con $steris%1 Lpenfire es escrito en #ava y/ para que funcione/ hay que instalar la K.< OKava ')
.evelopment <itP o instalar Ola opcin que se usar4P la versin Lpen'ource del #ava development <it
."5 insta## 2ava+1.6.0+open2%kN
Eerminada la instalacin se controla la versin instalada:
2ava +version
4ava version V(:C:@+)@V
%penGD& /untime 7nvironment 8Iced?eaC (:D:(@9 8rel1(:)A:(:D:(@:el3+H1iA6C9
%penGD& Client L= 8*uild (D:@1*@D- mi#ed mode9
'e descarga el servidor #abber Lpenfire:
c% ;opt
wget /ttp&;;www.igniterea#ti5e.org;%own#oa%!erv#etgfi#ena5eEopenfire;openfire6G6A61.tar.gz
se descomprime
tar +0f openfire6G6A61.tar.gz
'e entra en la carpeta bin
c% ;opt;openfire;bin
'e modifica el script de inicio:
nano openfire
modificando esta linea:
# .NS%ALL>I"IALA"H)-,")L,RR.+,
para que quede:
.NS%ALL>I"IALA"H)-,")L,RR.+,8usr87i=8Jv18Java'1$E$0'o2enJdD'1$E$0$0
'e guardan los cambios y se inicia:
.;openfire start
'e averigua que est5 corriendo
.;openfire stat"s
'i aparece:
?e daemon is running:
)l servidor est4 funcionando1
$hora hay que configurarlo1 Lpenfire para registrar los datos puede utiliNar una base de datos interna o
externa1 )n este caso se usar4 &y'(L1
'e crea la base de datos en &y'(L
5.sI#a%5in create openfire +" root +psesa5o
'e entra en el cliente de mysql:
5.sI# +" root +psesa5o
'e crea un usuario y se le otorgan todos los permisos para mane#ar la base de datos Lpenfire
mysql" 13AT ALL -3(V(L*1*! 8 openfire.N T8 OopenfireO'O#oca#/ostO ()*T(4(*) 7P
Osesa5oOM
>uer. %&- @ ro!s affected 8@:@( sec9
mysql" f#"s/ privi#egesM
>uer. %&- @ ro!s affected 8@:@@ sec9
mysql" I"it
I.e
sesamo es la contrasea del usuario openfire
$hora se importan las tablas para la base de datos
5.sI# openfire Y ;opt;openfire;reso"rces;%atabase;openfire65.sI#.sI# +" root +psesa5o
2@C
8ara que openfire sea accesible desde afuera de la red local hay que abrir unos puertos en el
cortafuegos1
nano ;etc;s.sconfig;iptab#es
.espu5s de este bloque:
# -onit
'A .NP#% '2 tc2 '1 state ''state N,V '1 tc2 ''d2ort 2(12 'J ACC,P%
'e aade:
# )2en:ire
'A .NP#% '2 tc2 '1 state ''state N,V '1 tc2 ''d2ort 5222;522@ 'J ACC,P%
'A .NP#% '2 tc2 '1 state ''state N,V '1 tc2 ''d2ort 52E* 'J ACC,P%
'A .NP#% '2 tc2 '1 state ''state N,V '1 tc2 ''d2ort 5245 'J ACC,P%
'A .NP#% '2 tc2 '1 state ''state N,V '1 tc2 ''d2ort 4040 'J ACC,P%
'A .NP#% '2 tc2 '1 state ''state N,V '1 tc2 ''d2ort 4>>@ 'J ACC,P%
'A .NP#% '2 tc2 '1 state ''state N,V '1 tc2 ''d2ort *0*0 'J ACC,P%
'A .NP#% '2 tc2 '1 state ''state N,V '1 tc2 ''d2ort *0*1 'J ACC,P%
'e guardan los cambios y se reinicia iptables:
service iptab#es restart
,na veN configurado el fire3all se accede a la pagina de configuracin de Lpenfire1 )n la barra de la
direcciones de nuestro navegador se escribe:
/ttp&;;(-servi%or&J0J0
en lugar de I8servidor se pone la direccin I8 del servidor Linux o/ si se tiene un dominio registrado/
el nombre O)#1 3331e#emplo1comP
aparecer4 una pagina de configuracin:
2@@
se elige el idioma
'e configura el nombre del dominio o la direccin I8:
'e elige el tipo de base de datos que se utiliNar4:
2@?
'e configura el acceso a &y'(L y la base de datos:
)n seteos de perfil se elige la opcin Qpor defectoR
2@F
'e configura el correo electrnico y la cuenta del administrador:
)l servidor est4 listo para funcionar1
2@B
$ntes de entrar en la p4gina de administracin de Lpenfire hay que parar y volver a arrancar el
servidor:
;opt;openfire;bin;openfire stop
;opt;openfire;bin;openfire start
$hora se puede configurar el servidorT crear usuarios/ instalar plugins/ crear conferencias y otras
cuantas funciones1
8ara probar la conexin el cliente predefinido de Lpenfire es 'par% Oen este caso para Mindo3sP1 6ay
que descargarlo/ instalarlo y abrirlo1 'e pone come usuario admin/ que es el que se ha creado a lo largo
de la configuracin de Lpenfire/ y se presiona Login:
.espu5s de unos segundos:
2?G
'e pueden configurar m4s usuarios y grupos desde la pagina de administracin
'i se quiere iniciar Lpenfire en autom4tico:
c% ;opt;openfire;bin;e0tra;re%/at
nano openfire+s.sconfig
'e modifican estas lineas:
#)P,N&.R,"H)-,!!
#)P,N&.R,"#S,R!dae1on!
#)P,N&.R,"P.+&.L,!8var8run8o2en:ire$2id!
#)P,N&.R,"L)G+.R!8so1e8where87ogs!
#)P,N&.R,")P%S!'K1<102>1!
#IALA"H)-,8usr8Java8de:au7t
para que queden
)P,N&.R,"H)-,!8o2t8o2en:ire!
)P,N&.R,"#S,R!root!
)P,N&.R,"P.+&.L,!8var8run8o2en:ire$2id!
)P,N&.R,"L)G+.R!8var87og!
2?0
)P,N&.R,")P%S!'K1<25E1!
IALA"H)-,8usr87i=8Jv18Java'1$E$0'o2enJdD'1$E$0$0
'e guardan los cambios y se copia el archivo en la carpeta /etc/sysconfig:
cp openfire+s.sconfig ;etc;s.sconfig;openfire
$hora se instala el servicio:
cp openfire ;etc;init.%;openfire%
se vuelve e#ecutable:
c/5o% F0 ;etc;init.%;openfire%
y se aade a los servicios:
c/kconfig ++a%% openfire%
c/kconfig openfire% on
8ara averiguar si Lpenfire arranca en autom4tico se hace un un reboot de la maquina Linux1
reboot
'e vuelve a entrar en el servidor y se averigua que openfire est5 corriendo:
;etc;init.%;openfire% stat"s
openfire is running
21.2 (nsta#ar e# -#"gin !(--/one en 8penfire
)n este p4rrafo se ver4 come instalar el plugin 'I88hone para Lpenfire1 )ste plugin permite asociar a
un usuario registrado en Lpenfire una cuenta 'I8 o extensin $steris%1 Luego se instala el mismo
plugin en el cliente 'par% y desde 5ste se podr4n efectuar llamadas usando el dialplan configurado en
$steris%1
.esde un navegador Meb entramos en la pagina de administracin1
2?:
)n el menH 8lugins se escoge $vailable 8lugins en el menH de la iNquierda1 .ependiendo de los plugins
que ya se instalaron/ aparecer4 una lista de los plugins disponibles entre los cuales:
'e presiona el botn a la derecha del plugin para instalarlo1 'e presiona el botn 'erver en la barra del
menH1 )n la segunda lnea del menH habr4 un nuevo menH: QEelefonaR1 'e presiona para entrar en el
menH de configuracin del plugin1
'e escoge Q$gregar nuevo mapeoR y se rellenan los campos:
2?2
o5bre %e "s"ario XM-- : el nombre del usuario openfire
o5bre %e "s"ario : el numero o nombre de la extensin
9s"ario %e A"torizaci$n : el numero o nombre de la extensin
"5ero %e te#:fono a 5ostrar : el numero que aparecer4 al llamado
C#ave: la contrasea asociada a la extensin
!ervi%or: el nombre del dominio o I8 del servidor $steris%
8"tbo"n% -ro0. : si se utiliNa un proxy para conectarse al servidor $steris% hay que indicarlo
aqu sino se pone la direccin I8 o el nombre de dominio del servidor $steris%
"5ero Correo %e voz : como en el dialplan se ha definido que para acceder al buNn de voN
se utiliNa la extensin B?/ se pone aqu el numero
'e presionas el botn Q!rearR para guardar la configuracin1 'e repite la misma operacin para todos
los usuarios que se quiere asociar a una extensin de $steris%1 ,na veN terminado hay que configurar el
cliente 'par% que es el Hnico que funciona con este plugin1
'e abre el cliente 'par% y se abre una conexin con el nombre de usuario configurado arriba Oen este
caso adminP1
)n el menH del cliente 'par% se elige 'par% d 8lugins y en 8lugins disponibles 8hone client y se
instala:
2?A
!uando se termina de descargar el plugin/ se cierra el cliente y se vuelve a iniciar1 )n el menH acciones
se elige 8hone )nabled1 $parecer4 el cliente 'I8 en una nueva lnea del menH de 'par% y se podr4
empeNar a usarlo para hacer llamadas1
$hora se puede hacer una primera prueba1 .esde la extensin 0GG0 se marca la extensin 0GGG1 'par%
debera empeNar a timbrar:
2?C
'i se quiere usar un Hnico programa para chatear/ hacer llamadas 9oI8 y/ como se ver4 en el prximo
p4rrafo/ monitorear las extensiones/ esta es una buena solucin1
21.G *# -#"gin Asterisk+(M
$steris%=I& permite asociar a cada usuario Lpenfire una extensin 'I8 configurada en sip1conf1 .e
este modo cuando esa extensin est4 hablando/ en el cliente #abber 'par% el estado del usuario
Lpenfire asociado con la extensin cambiar4 de disponible a Qon the phoneR1
;equisitos:
haber instalado openfire con una base de datos externa O&ysqlP
haber puesto el par4metro callevents=yes en la parte general del archivo sip1conf
haber configurado un usuario en el archivo manager1conf
'e modifica el archivo manager1conf:
nano ;etc;asterisk;5anager.conf
$l final del archivo se aade un nuevo usuario:
Bo2en:ireC
secret sesa1o
deny0$0$0$080$0$0$0
2er1it124$0$0$18255$255$255$255
read syste13ca7737og3ver=ose3agent3user3con:ig3dt1:3re2orting3cdr3dia727an
write syste13ca773agent3user3con:ig3co11and3re2orting3originate
'e actualiNa la configuracin de $steris%:
;etc;init.%;asterisk re#oa%
2?@
'e instala el plugin en Lpenfire1 .esde un navegador Meb se abre la pagina de administracin de
Lpenfire y se va al menH 8lugins1 'e presiona el menH Q$vailable 8luginsR
8ara instalarlo se presiona el botn que aparece al fondo de la lnea del plugin1 ,na veN instalado en el
barra de los menH/ habr4 una nueva voN/ $steris% I&1
'e escoge el menH $steris%=I& y luego *eneral 'ettings1 'e configura siguiendo las pautas indicadas
en la imagen que sigue:
'e presiona el botn '$9)1 )n la misma ventana se escoge el menH $dd 'erver y se configura la
conexin al $steris% &anager
2??
)n la pagina que aparece se configura como en la imagen que sigue:
!erver a5e& un nombre que se quiere asignar al servidor
!erver A%%ress& direccin I8 o nombre de dominio del servidor $steris% Oen este caso como se
encuentra en el mismo servidor Linux/ se pone localhost
-ort& el puerto para conectarse a la $&I de $steris%
9serna5e& el nombre de usuario definido en el archivo manager1conf
-asswor%& la contrasea configurada en el manager1conf
'e presiona el botn Q!reate 'erverR1 La bolita verde a la iNquierda indica che hay conexin con
$steris%1
8ara averiguar que efectivamente el usuario Lpenfire est5 conectado al $steris% &anager se entra en la
2?F
consola de $steris%:
asterisk +rvvvvvvvvvvvvvv
se digita el comando:
!LI" 5anager s/ow connecte%
Fsername I0 Address Start 7lapsed JileDes HttpCnt /ead Erite
openfire ()H:@:@:( (A)A6(HC6) HD (@ @ @"@HD @"63(
'e guardan los cambios y se entra en el menH 8hone &appings:
'e configuran todos los usuarios de Lpenfire que se quiere asociar con una extensin 'I8 presente en el
servidor $steris%1 8ara guardar los cambios/ se presiona el botn Q$ddR1
.esde el cliente 'par% se abre una conexin con el usuario admin que se ha configurado en 8hone
&appings1
.esde el cliente 'par% se marca el B? para entrar en la buNn de voN/ en el cliente 'par% cambiar4 el
estado del usuario admin:
!omo cambiar4 en el cliente >=Lite:
2?B
21.B Asterisk co5o c#iente en 8penfire
La configuracin de $steris% como cliente #abber en Lpenfire es parecida a la de *oogleEal% Op4rrafo
0:1:P1
'e empieNa con la modifica del archivo #abber1conf presente en la carpeta /etc/asteris%1
nano ;etc;asterisk;2abber.conf
$l final del archivo/ se copian las siguientes lineas:
BasterisDC
T etiqueta que define la conexin Oimportante para las funciones Kabberstatus y Kabbersend de $steris%P
ty2ec7ient
T $steris% actuar4 como un cliente Olas opciones son cliente/ componente y serverP
serverhost7oca7host
T el nombre de dominio o I8 del servidor Lpenfire
userna1easterisDN7oca7host8o2en:ire
T +ombre del usuario Lpenfire del servidor asteris%
secretsesa1o
T la contrasea
2riority10
T el nivel de prioridad que tiene en cliente en caso de conflictos Oe#: dos conexiones simultaneas del
mismo usuarioP
2ort5222
T el puerto E!8 del servidor Lpenfire usado para conectarse
uset7syes
T ,sar el protocolo EL'
usesas7yes
2FG
T ,sar el protocolo '$'L
=uddyad1inN7oca7host
T la lista de amigos/ uno por lnea
status1essageAsterisD server
T un mensa#e personaliNado del usuario
ti1eout100 T
'e guardan los cambios y antes de actualiNar la configuracin de $steris% se configura este usuario en
Lpenfire1 .esde un navegador Meb se entra en la pagina de administracin de Lpnefire
)n la barra de menH se escoge Q,sers/*roupsR y luego en el menH vertical en la iNquierda Q!reate +e3
,serR
9serna5e: el nombre de usuario Lpenfire
a5e& el nombre completo o un apodo
*5ai#& la direccin del correo electronico del usuario OpersonaliNar
2F0
-asswor%& la contrasea creada en el #abber1conf OsesamoP
Confir5 -asswor%& otra veN la contrasea
'e termina presionando el botn Q!reate ,serR1
Sa se puede recargar la configuracin de $steris%:
;etc;init.%;asterisk re#oa%
'e averigua el resultado desde la consola de $steris%
asterisk +rvvvvvvvvvvvv
!LI" 2abber s/ow connecte%
Ga**er Fsers and teir status:
Fser: asteris2Blocalost/openfire 1 Connected
8ara ver la lista de amigos:
!LI" 2abber s/ow b"%%ies
Client: asteris2Blocalost/openfire
Iudd.: adminBlocalost
/esource: ,one
)n el menH Q'essionsR de Lpenfire:
'e inicia el cliente 'par% y se aade el usuario asteris%1
2F:
)l resultado ser4:
21.C Conectar %os servi%ores 8penfire
'i se conectan dos servidores Lpenfire entre ellos/ los usuarios de uno podr4n agregar en su lista de
amigos usuarios del otro servidor1 8ara lograr este tipo de comportamiento hay que modificar la
configuracin en los dos servidor:
Los dos servidores est4n instalados en dos computadores de la misma L$+:
Lpenfire $ dominio: li00C=0?F1members1linode1com
Lpenfire B dominio: li2AG=0@1members1linode1com
8rimero: si hay un cortafuegos por el medio/ hay que abrir el puerto C:@B E!8 en ambos
'egundo: se entra en la pagina de administracin del servidor $ y se escoge el menH 'erver d
'erver 'ettings d 'erver to 'erver
2F2
'e configura la p4gina como sigue:
Luego se pasa al menH 'erver " 'erver settings " 'ecurity settings y ba#o el cuadro 'erver !onnection
'ecurity se selecciona la casilla:
2FA
'e guardan los cambios y se sigue el mismo procedimiento en el servidor B indicando el dominio:
li2AG=0@1members1linode1com en la Mhite List1
'e guardan los cambios1 La conexin se activa solamente cuando de un servidor se enva una solicitud
a otro servidor1 8ara probarla en el servidor B se crea un nuevo usuario OmenH ,sers/*roups d !reate
+e3 ,serP:
$hora desde el cliente 'par% conectado al servidor $/ se aade a la lista de amigos el usuario servidorb:
2FC
'e entra en el menH 'essions " 'erver 'ession de ambos servidores donde debera aparecer:
'ervidor $:
'ervidor B:
2F@
'i no aparece ninguna conexin se puede usar el programa e'%et para averiguar si el puerto C:@B E!8
est5 efectivamente abierto1 .esde la consola de Linux del servidor $ se escribe:
."5 insta## te#net
te#net
telnet" o +a #iGB0+16.5e5bers.#ino%e.co5 C26J
?r.ing DC:()C:((3:(C:::
Connected to liA"@1(C:mem*ers:linode:com:
7scape caracter is '_'':
Q8strea1;strea1GConnection closed *. foreign ost:
'i aparece la expresin en negrita todo est4 bien1
8ara tres o m4s servidores Lpenfire/ que queremos conectar entre ellos/ se sigue el mismo
procedimiento1
22.6 8penfire Connection Manager
'i hay que mane#ar un numero considerable de usuarios Om4s de 0GGG en linea a la veNP/ hay que
recurrir al !onnection &anager1 )ste programa se configura delante del servidor Lpenfire y gestiona
las conexiones y las autenticaciones de los usuarios1 'e pueden instalar uno o m4s !onnection &anager
segHn el numero de usuarios1 !ada !onnection &anager es capaN de mane#ar cinco mil usuarios1 )l
esquema de funcionamiento es el que aparece en la imagen que sigue:
)n ese e#emplo hay tres !onnection &anagers instalados que reciben los registros de los usuarios y a
su veN est4n conectados con el servidor Lpenfire1 +ormalmente se instala en un servidor distinto a
donde se ha instalado Lpenfire1 Los clientes tendr4n que conectarse a ese servidor y luego ser4n
enrutados por el !onnection &anager al servidor Lpenfire1
'e descarga el programa:
2F?
c% ;opt
wget /ttp&;;www.voztovoice.org;t5p;connection65anager6G666G.tar.gz
'e descomprime:
tar +0f connection65anager6G666G.tar.gz
$hora solo falta configurar el programa1 'e entra en la carpeta de configuracin y se modifica el
archivo manager1xml
c% ;opt;connection65anager;conf
nano 5anager.05#
Las lneas que hay que modificar son:
%o5ain& el nombre de dominio del servidor Lpenfire Oe#: miodominio1orgP
/ostna5e& la direccin I8 del servidor Lpenfire
port& el puerto configurado en el servidor Lpenfire para aceptar las conexiones del !onnection
&anager OC:@: predefinidoP
passwor%& la contrasea que se ha definido en el servidor Lpenfire para aceptar las conexiones
del !onnection &anager
na5e& un nombre que queremos asignar a el !onnection &anager Omuy Htil si se tiene planeado
instalar m4s de unoP1
interface& direccin I8 o nombre de dominio donde el !onnection &anager aceptar4 las
conexiones1
'e guardan los cambios1
8ara terminar se instala el QscriptR para arrancar !onnection &anager en autom4tico:
c% ;opt;connection65anager;bin;e0tra
nano c5anager%
'e modifican las siguientes lneas:
e<2ort C-ANAG,R"H)-,8o2t8connection"1anager
2FF
e<2ort C-ANAG,R"#S,Rroot
C-+!$8c1anager$sh R1!
'e guardan los cambios y se termina:
cp c5anager% ;etc;init.%;
c/5o% F0 ;etc;init.%;c5anager%
c/kconfig ,a%% c5anager%
c/kconfig c5anager% on
$ntes de arrancar el !onnection &anager hay que modificar la configuracin del servidor Lpenfire1
.esde la pagina di administracin del servidor Lpenfire ba#o el menH Q'erver settingsR se elige
Q!onnection &anagerR1 )n la pagina que aparece se activa el servicio/ se escoge el puerto y se define
una contrasea1
'e presiona el botn Q'ave 'ettingsR1 'e abre el puerto C:@: E!8 en el cortafuegos1
$hora se puede arrancar el !onnection &anager1 )n el servidor Linux donde se instal se escribe:
;etc;init.%;c5anager% start
'e averigua que est5 corriendo:
;etc;init.%;c5anager% stat"s
running pid is 3H"H
Connection =anager A:C:A $Je* C- )@(@ 3:@):(H A='
y en la pagina de administracin de Lpenfire se verifica que est4 conectado:
2FB
.esde un cliente >&88 se abre una conexin usando como direccin I8 o nombre de .ominio la que
se ha configurado en la linea QinterfaceR del archivo manager1xml
2BG
Capit"#o XX((
Asterisk . a#ta %isponibi#i%a%
)l servidor $steris% ya est4 instalado y traba#ando1 $hora se quiere tener una copia de la base de datos
actualiNada en tiempo real para hacer frente a cualquier tipo de evento que pueda afectar la integridad
de los registros de las llamadas1 )n este tipo de escenario hay disponible una funcionalidad de &y'(LT
la posibilidad de replicar los datos en un servidor &y'(L instalado en otro computador1 6ay dos
formas de replicar los datos:
configurar una replicacin master=slave Omaestro=esclavoP
configurar una replicacin master=master Omaestro=maestroP
!omo no se pueden tener los dos tipos de replicaciones activas a la veN/ antes de empeNar/ habr4 que
escoger el tipo que se quier implementar
22.1 3ep#icaci$n M.!dL Master+!#ave
)n este primera parte/ se ver4 como crear una replicacin &y'(L &aster='lave1 La replicacin master=
slave no es una copia de bac%up de la base de datos/ de hecho si se borra una entrada en el &y'(L
maestro/ autom4ticamente se borrar4 tambi5n en el esclavo1 La idea es tener siempre una copia de
bac%up y adem4s crear la replicacin maestro=esclavo1
'e puede usar el esclavo para consultas desde otros programas y de esta manera no cargar demasiado el
&aestro1 ,n e#emplo puede ser cuando se generan reportes mensuales de las llamadas1 )n veN de hacer
las consultas en el maestro/ se hacen en el esclavo1
)s buena practica usar una conexin dedicada para el intercambio de datos entre el maestro y el esclavo
para evitar que hayan retrasos considerables en la actualiNacin de la base de datos1
b!omo funciona la replicacin &y'(L &aster=slavec
)l &aestro registra los cambios en un registro binario OBinary logP
)l esclavo copia los eventos en un registro propio O;elay logP
)l esclavo lee y repite los eventos presentes en el ;elay log en la base de datos

,na imagen que explica el funcionamiento:
)l escenario que se va a presentar es el siguiente:
!ervi%orA&
I8 L$+: 0B:10@F10:F10AA
Base de datos a replicar: asteris%
&aster
!ervi%or7&
I8 L$+: 0B:10@F10:F10AC
)sclavo
Base de datos replicada: asteris%
!ervi%or A&
'e crea una carpeta donde guardar los Binary log:
5k%ir ;var;#og;5.sI#
'e cambian los permisos de modo que &y'(L pueda escribir y leer en esa carpeta:
c/own 5.sI#&5.sI# ;var;#og;5.sI#
'e entra en el cliente mysql
5.sI# +" root +psesa5o
y se crean los privilegios de replicacin para un nuevo usuario que luego se configurar4 en el
servidorB:
2B2
myslq" 13AT 3*-L(CAT(8 !LAV* 8 N.N T8 OasteriskO'O1J2.16=.12=.1BCO ()*T(4(*)
7P Osesa5oOM
'e actualiNan los privilegios y se sale del cliente &y'(L:
mysql" f#"s/ privi#egesM
mysql" I"it
$hora se modifica el archivo de configuracin de &y'(L para configurar los par4metros necesarios
para la replicacin:
nano ;etc;5..cnf
Ba#o la etiqueta WmysqldX se aaden las siguientes lneas:
server'id 10
7og"=in 8var87og81ys?781ys?7'=in$7og
e<2ire"7ogs"days 10
1a<"=in7og"siPe 100-
=in7og"do"d= asterisD
sync"=in7og1
,na pequea explicacin de los par4metros:
server+i%: identifica el servidor &y'(L
#og6bin: nombre del archivo donde se guardar4 el Binary log
e0pire6#og6%a.s: especifica que los archivos Binary log m4s vie#os de 0G das se pueden borrar
5a06bin#og6size: el tamao m4ximo de un Binary log
bin#o%6%o6%b: el nombre de la base de datos que se va a replicar
s.nc6bin#og: cada evento generado en el &aster ser4 escrito inmediatamente en el Binary log1
$umenta la carga del &aster a cambio de una replicacin m4s precisa
'e guardan los cambios y se reinicia &y'(L
;etc;init.%;5.sI#% restart
!onsiderando que el servidor $steris% tiene tiempo traba#ando hay que crear una copia de la base de
datos para luego importarla en el servidor &y'(L esclavo:
5.sI# +" root +psesa5o
8rimero se selecciona la base de datos asteris%:
mysql" "se asterisk
2BA
'egundo se bloquea la lectura de todas las tablas de todas las bases de datos:
mysql" 4L9!K TA7L*! T(TK 3*A) L8C?M
8or ultimo se mira el estado del &aster:
mysql" !K8T MA!T*3 !TAT9!M
$parecer4 algo por el estilo:
Z111111111111111111Z1111111111Z11111111111111Z111111111111111111Z
P Jile P 0osition P Iinlog+Do+DI P Iinlog+Ignore+DI P
Z111111111111111111Z1111111111Z11111111111111Z111111111111111111Z
P m.sql1*in:@@@@@( D6 P asteris2cdr P P
Z111111111111111111Z1111111111Z11111111111111Z111111111111111111Z
( ro! in set 8@:@@ sec9
'e anotan los datos que aparecen en la columna -ile Omysql=bin1GGGGG0P y en la columna 8osition OBFP1
'in cerrar esta ventana/ se abre otra ventana terminal o otra conexin al servidor Linux y se crea una
copia de la base de datos asteris%:
c% ;t5p
5.sI#%"5p +" root +psesa5o asterisk W asterisks#ave.sI#
se copia el archivo en el servidoB en la carpeta tmp:
scp asterisks#ave.sI# root'1J2.16=.12=.1BC&;t5p
'e cierra esta ventana y se vuelve a la primera1 'e desbloquean las tablas:
mysql" 9L8C? TA7L*!M
y se sale del cliente:
mysql" I"it
!ervi%or 7
'i &y'(L/ no est4 instalado se instala:
."5 insta## 5.sI# 5.sI#+server 5.sI#+%eve#
'e inicia:
;etc;init.%;5.sI#% start
2BC
'e crea una contrasea para el usuario root:
5.sI#a%5in ," root passwor% sesa5o
'e modifica el archivo de configuracin de &y'(L
nano ;etc;5..cnf
ba#o la etiqueta WmysqldX se pone:
server'id20
1aster'connect'retryE0
re27icate'do'd=asterisD
sDi2"s7ave"start
read"on7y
Los par4metros:
server+i%: numero que identifica el servidor &y'(L del servidorB
5aster+connect+retr.: si el esclavo pierde la conexin con el maestro/ cada @G segundos
intentar4 restablecerla
rep#icate+%o+%b: la base de datos que vamos a replicar
skip6s#ave6start: evita que el esclavo se reinicie en el caso de un crash del servidor
rea%6on#.& no permite a la mayora de los usuarios del servidor &y'(L esclavo cambiar las
tablas
'e guardan los cambios y se reinicia &y'(L:
;etc;init.%;5.sI#% restart
'e crea la base de datos asteris%:
5.sI#a%5in +" root +psesa5o create asterisk
se recuperan tablas y datos de la copia que est4 en la carpeta /tmp:
c% ;t5p
5.sI# +" root +psesa5o asterisk Y asterisks#ave.sI#
$ este punto se crean los datos de acceso al servidor &y'(L &aster:
5.sI# +" root +psesa5o
mysql" CHANG, -AS%,R %) -AS%,R"H)S%51*2$1E($12($1>>53
-AS%,R"#S,R5asterisD53
2B@
-AS%,R"PASSV)R+5sesa1o53
-AS%,R"L)G"&.L,51ys?7'=in$00000153
-AS%,R"L)G"P)S*(A
)n &$'E);DLL*D-IL) S &$'E);DLL*D8L'/ se ponen los datos del servidor &y'(L $ que se
haban anotado1
$ntes de iniciar el esclavo/ hay que abrir el puerto E!8 22G@ en el servidor $1 'e hace indicando que la
unica I8 que podr4 conectarse ser4 la del 'ervidor B:
nano ;etc;s.sconfig;iptab#es
.espu5s de este bloque:
# -onit
'A .NP#% '2 tc2 '1 state ''state N,V '1 tc2 ''d2ort 2(12 'J ACC,P%
'e pone:
# -yS[L
'A .NP#% '2 tc2 '1 state ''state N,V '1 tc2 's 1*2$1E($12($1>5 ''d2ort @@0E 'J ACC,P%
'e guardan los cambios y se reinicia iptables:
service iptab#es restart
'e vuelve a la ventana del servidorB y se inicia el esclavo:
mysql" !TA3T !LAV*M
'e controla el estado de la conexin con el &aster:
mysql" !K8T !LAV* !TAT9!c1
OOOOOOOOOOOOOOOOOOOOOOOOOOO (: ro! OOOOOOOOOOOOOOOOOOOOOOOOOOO
Slave+I%+State: Eaiting for master to send event
=aster+Host: (D):(C6:("):)"6
=aster+Fser: fulano
=aster+0ort: AA@C
Connect+/etr.: C@
=aster+Log+Jile: m.sql1*in:@@@@@(
/ead+=aster+Log+0os: D6
/ela.+Log+Jile: m.sqld1rela.1*in:@@@@@)
/ela.+Log+0os: )A3
/ela.+=aster+Log+Jile: m.sql1*in:@@@@@(
Slave+I%+/unning: ;es
Slave+S>L+/unning: ;es
/eplicate+Do+DI: asteris2
2B?
/eplicate+Ignore+DI:
/eplicate+Do+?a*le:
/eplicate+Ignore+?a*le:
/eplicate+Eild+Do+?a*le:
/eplicate+Eild+Ignore+?a*le:
Last+7rrno: @
Last+7rror:
S2ip+Counter: @
7#ec+=aster+Log+0os: D6
/ela.+Log+Space: )A3
Fntil+Condition: ,one
Fntil+Log+Jile:
Fntil+Log+0os: @
=aster+SSL+Allo!ed: ,o
=aster+SSL+CA+Jile:
=aster+SSL+CA+0at:
=aster+SSL+Cert:
=aster+SSL+Ciper:
=aster+SSL+&e.:
Seconds+Ieind+=aster: @
( ro! in set 8@:@@ sec9
'e sale del cliente:
mysql" I"it
$hora se efectHa una llamada de prueba1 .esde la extensin 0GGG conectada al servidor$ se llama el
buNn de voN1 $ntes de hacerlo se activa en el servidorB la captura de paquetes con +grep para el
puerto 22G@ y la red local:
ngrep +% et/0&1 +T b.#ine port GG06 W ;t5p;esc#avo
Eerminada la llamada/ se cierra la captura de paquetes y se mira que contiene el archivo /tmp/esclavo
cat ;t5p;esc#avo
)l resultado:
\
? (D):(C6:()6:("":AA@C 1N (D):(C6:()6:("3:"6HAC $A0'
R::::c::,:
:::P::::::::::::::::::::::::::::::::::::::std:::::::asteris2:I,S7/? I,?% cdr)
8calldate-clid-src-dst-dconte#t-cannel-lastapp-lastdata-duration-*illsec-disposition-amaflags-accountco
de-uniqueid9 LALF7S 8Q ts ')@((1()1(3 @6:3(:)@' R-'Vcallerid5JulanoV
U(@@@N'-'(@@@'-'DH'-'e#ternas'-'SI0/(@@@1
@@@@@@@@'-'Loice=ail=ain'-'(@@@Bdefault'-((-((-'A,SE7/7D'-A-'(@@@'-'(A)AD3H@6@:@'9
\\
2BF
? (D):(C6:()6:("":AA@C 1N (D):(C6:()6:("3:"6HAC $A0'
:::::c::,:
::::::::::::::::::::::.::::c::,:
:::#:::`::::::::::::::::::::::::::::::::::std:::::::asteris2:I,S7/? I,?% cdrA
8calldate-accountcode-dst-*illsec-peerip-useragent-codec(-codec)-tlp-llp-porlp-trp-rlp-porrp-l4itter-r4itte
r-angupcause9 LALF7S 8Q ts ')@((1()1(3 @6:3(:)@' R-'(@@@'-'DH'-'(('-'(D@:CC:("C:(C@'-'K1Lite " release
":( stamp CA)("'-'ala!'-'ala!'-3@H-@-@:@@@@@@@@@@-)C6-@-@:@@@@@@@@@@-'('-'@'-'@'9
\e#it
" received- @ dropped
)l servidor$ O0B:10@F10:F10AAP ha enviado dos paquetes al servidorB O0B:10@F10:F10ACP para
actualiNar la tabla !.;: y !.;2 de la base de datos asteris% del servidor B1
22.2 3ep#icaci$n M.!dL Master+Master
)n el anterior p4rrafo se vio como usar la replicacin &y'(L &aster='lave para la base de datos de
$steris%1 )n 5ste se ver4 como utiliNar la replicacin &y'(L &aster=&aster para la base de datos
asteris%cdr solamente para la tabla !.;1
b(u5 diferencia hay entra una replicacin &aestro=)sclavo y una &aestro=&aestroc
)n el primer caso se tiene una copia de todos los registros en otro servidor y se pueden efectuar
estadsticas usando el )sclavo sin sobrecargar el &aestro1 )n el segundo caso la configuracin se
utiliNa para la alta disponibilidad en $steris%1 )#emplo: hay dos servidores $steris%: $ y B1 'i $ se cae
B toma su lugar1 !uando $ vuelve a funcionar/ B vuelve a ser el servidor de respaldo1 !omo se ver4 en
los prximos p4rrafos/ para la alta disponibilidad en $steris%/ adem4s de la replicacin &aster=&aster/
se necesitar4 configurar otros programas1
)scenario:
!ervi%orA&
I8 0B:10@F10:F10AA
Base de datos a replicar: asteris%cdr I Eabla: cdr
&aster$ 'lave$
!ervi%or7&
I8 0B:10@F10:F10AC
Base de datos a replicar: asteris%cdr I Eabla: cdr
&asterB 'laveB
La tabla !.; en el 'ervidor$ ya existe y tiene unos cuantos datos registrados1 )l problema principal
de la replicacin &aster=&aster es el conflicto que se puede presentar en las entradas de la tabla1
)#emplo: el servidor$ se cae y toma su lugar el servidorB1 'e registran unos cuantos datos en la tabla
cdr del servidorB1 &ientras el servidor$ vuelve a funcionar y antes que el servidorB pueda actualiNar
los datos de la tabla !.; en el servidor$/ este empieNa a grabar nuevas entradas en la misma tabla1 )n
2BB
este escenario se pueden generar conflictos entre los datos de las dos tablas y errores de replicacin
porque los dos presentan entradas con el mismo I. en la clave primaria de la tabla Osiendo progresivoP1
8ara solucionar este tipo de problema se usar4n estos dos par4metros:
autoDincrementDincrement
autoDincrementDoffset
!ervi%orA
La tabla !.; de la base de datos asteris%cdr no tiene un I. progresivo para cada entrada1 'e entra en
el cliente &y'(L y se consultan las fechas de las llamadas de la extension 0GGG:
5.sI# +" root +psesa5o
mysql" "se asteriskc%r
mysql" se#ect ca##%ate fro5 c%r w/ere %stE1000M
Z111111111111111111111Z
P calldate P
Z111111111111111111111Z
P )@((1()1(" (A:)(:") P
P )@((1()1(3 @D:@(:3H P
P )@((1()1(3 @D:@A:(@ P
P )@((1()1(3 @D:@A:)6 P
P )@((1()1(3 @D:@A:3C P
Z111111111111111111111Z
3 ro!s in set 8@:@@ sec9
$hora se aade un id progresivo en la estructura de la tabla:
mysql" ALT*3 TA7L* c%r A)) () int@11D 8T 9LL A9T86(C3*M*T -3(MA3P ?*PM
>uer. %&- 36 ro!s affected 8@:@) sec9
/ecords: 36 Duplicates: @ Earnings: @
'e mira el cambio:
mysql" se#ect i%>ca##%ate fro5 c%r w/ere %stE1000M
Z1111Z111111111111111111111Z
P id P calldate P
Z1111Z111111111111111111111Z
P )( P )@((1()1(" (A:)(:") P
P 33 P )@((1()1(3 @D:@(:3H P
P 3C P )@((1()1(3 @D:@A:(@ P
P 3H P )@((1()1(3 @D:@A:)6 P
P 36 P )@((1()1(3 @D:@A:3C P
AGG
Z1111Z111111111111111111111Z
3 ro!s in set 8@:@@ sec9
$hora cada entrada seleccionada tiene un I. que la identifica1
'e crea una carpeta donde guardar los Binary log de &y'(L y cambiamos usuario y grupo que tiene
los permisos en la carpeta creada:
5k%ir ;var;#og;5.sI#
c/own 5.sI#&5.sI# ;var;#og;5.sI#
'e regresa al cliente &y'(L y se crean los privilegios de replicacin para un nuevo usuario:
mysql =u root =psesamo
mysql" 13AT 3*-L(CAT(8 !LAV* 8 N.N T8 O5asterbO'O1J2.16=.12=.1BCO ()*T(4(*)
7P Osesa5oOM
mysql" f#"s/ privi#egesM
mysql" I"it
'e modifica el archivo de configuracin de &y'(L:
nano /etc/my1cnf
ba#o la etiqueta WmysqldX se pone:
server'id 10
auto"incre1ent"incre1ent 10
auto"incre1ent"o::set 1
7og"=in 8var87og81ys?781ys?7'=in$7og
e<2ire"7ogs"days 10
1a<"=in7og"siPe 100-
re27icate'do'ta=7e asterisDcdr$cdr
sync"=in7og 1
Los par4metros:
!on autoDincrementDincrement a 0G cada entrada en la tabla cdr tendr4 un I. progresivo que
ir4 de 0G en 0G1
!on autoDincrementDoffset a 0 cada entrada usar4 el entero 0
)n el caso de tres entradas en la tabla el resultado ser4:
AG0
I. 0
I. 00
I. :0
!on replicate=do=table se define que la replicacin es solamente para la tabla cdr de la base de
datos asteris%cdr
'e reinicia mysql:
;etc;init.%;5.sI#% restart
!onsiderando que el servidor $steris% tiene tiempo traba#ando hay que crear una copia de la base de
datos para luego importarla en el servidorB:
5.sI# +" root +psesa5o
8rimero se selecciona la base de datos asteris%:
mysql" "se asteriskc%r
'egundo se bloquea la lectura de todas las tablas de todas las bases de datos:
mysql" 4L9!K TA7L*! T(TK 3*A) L8C?M
8or ultimo se mira el estado del &aster:
mysql" !K8T MA!T*3 !TAT9!M
$parecer4 algo por el estilo:
a==================a==========a==============a==================a
Z -ile Z 8osition Z BinlogD.oD.B Z BinlogDIgnoreD.B Z
a==================a==========a==============a==================a
Z mysql=bin1GGGGG0 Z BF Z asteris% Z Z
a==================a==========a==============a==================a
0 ro3 in set OG1GG secP
'e anotan los datos que aparecen en la columna -ile Omysql=bin1GGGGG0P y en la columna 8osition OBFPT
sin cerrar esta ventana/ se abre otra ventana terminal o otra conexin al servidor Linux y se crea una
copia de la base de datos asteris%:
c% ;t5p
5.sI#%"5p +" root +psesa5o asteriskc%r W c%r.sI#
se copia el archivo en el servidorB en la carpeta tmp:
scp c%r.sI# root'1J2.16=.12=.1BC&;t5p
AG:
'e cierra esta ventana y se regresa a la primera1 'e desbloquean las tablas:
mysql" 9L8C? TA7L*!M
y se sale del cliente:
mysql" I"it
!ervi%or7
'e crea la carpeta para guardar los Bynary log con los permisos para el usuario mysql:
5k%ir ;var;#og;5.sI#
c/own 5.sI#&5.sI# ;var;#og;5.sI#
'e entra en el cliente mysql y se crea la base de datos asteris%:
5.sI# +" root +psesa5o
mysql" create %atabase asteriskc%rM
mysql" I"it
'e importa la tabla cdr:
c% ;t5p
5.sI# +" root +psesa5o asteriskc%r Y c%r.sI#
'e averigua que efectivamente las tabla y los datos presentes se han guardado:
5.sI# +" root +psesa5o
mysql" "se asteriskc%r
mysql" se#ect i%>ca##%ate fro5 c%r w/ere %stE1000M
Z1111Z111111111111111111111Z
P id P calldate P
Z1111Z111111111111111111111Z
P )( P )@((1()1(" (A:)(:") P
P 33 P )@((1()1(3 @D:@(:3H P
P 3C P )@((1()1(3 @D:@A:(@ P
P 3H P )@((1()1(3 @D:@A:)6 P
P 36 P )@((1()1(3 @D:@A:3C P
Z1111Z111111111111111111111Z
AG2
3 ro!s in set 8@:@@ sec9
$parecer4n las mismas entradas del servidor$1 'e crea un nuevo usuarios con los permisos de
replicacin:
mysql" 13AT 3*-L(CAT(8 !LAV* 8 N.N T8 O5asteraO'O1J2.16=.12=.1BBO ()*T(4(*)
7P Osesa5oOM
mysql" f#"s/ privi#egesM
mysql" I"it
$hora se modifica el archivo de configuracin de &y'(L:
nano ;etc;5..cnf
ba#o la etiqueta WmysqldX se pone:
server'id 20
auto"incre1ent"incre1ent 10
auto"incre1ent"o::set 2
7og"=in 8var87og81ys?781ys?7'=in$7og
e<2ire"7ogs"days 10
1a<"=in7og"siPe 100-
re27icate'do'ta=7e asterisDcdr$cdr
sync"=in7og 1
)l autoDincrementDoffset es igual a :1 )n el caso de tres entradas el I. sera:
I. :
I. 0:
I. ::
!omo se puede ver/ de esta forma no se presentar4n conflictos en las entradas de la tabla !.;1 'e
reinicia &ysql:
;etc;init.%;5.sI#% restart
S ahora como para el servidor$ se mira el Binary log y se anotan los datos:
5.sI# +" root +psesa5o
mysql" 4L9!K TA7L*! T(TK 3*A) L8C?M
mysql" !K8T MA!T*3 !TAT9!M
a==================a==========a==============a==================a
Z -ile Z 8osition Z BinlogD.oD.B Z BinlogDIgnoreD.B Z
AGA
a==================a==========a==============a==================a
Z mysql=bin1GGGGG0 Z BF Z Z Z
a==================a==========a==============a==================a
0 ro3 in set OG1GG secP
mysql" I"it
8ara dar acceso a la base de datos al servidor$/ hay que abrir el puerto E!8 22G@ solamente para esa I8
local:
nano ;etc;s.sconfig;iptab#es
)n la seccin filter se aade:
# -yS[L
'A .NP#% '2 tc2 '1 state ''state N,V '1 tc2 's 1*2$1E($12($1>> ''d2ort @@0E 'J ACC,P%
'e reinicia el servicio:
service iptab#es restart
$hora se conecta el servidorB al servidor$:
5.sI# +" root +psesa5o
mysql" CHANG, -AS%,R %) -AS%,R"H)S%51*2$1E($12($1>>53
-AS%,R"#S,R51aster=53
-AS%,R"PASSV)R+5sesa1o53
-AS%,R"L)G"&.L,51ys?7'=in$00000153
-AS%,R"L)G"P)S*(A
>uer. %&- @ ro!s affected 8@:@@ sec9
'e inicia el esclavo:
mysql" !TA3T !LAV*M
(uery L</ G ro3s affected OG1GG secP
y se mira el resultado:
mysql" !K8T !LAV* !TAT9!c1
OOOOOOOOOOOOOOOOOOOOOOOOOOO (: ro! OOOOOOOOOOOOOOOOOOOOOOOOOOO
Slave+I%+State: Eaiting for master to send event
=aster+Host: (D):(C6:("):)"6
=aster+Fser: master*
=aster+0ort: AA@C
Connect+/etr.: C@
AGC
=aster+Log+Jile: m.sql1*in:@@@@@(
/ead+=aster+Log+0os: D6
/ela.+Log+Jile: m.sqld1rela.1*in:@@@@@)
/ela.+Log+0os: )A3
/ela.+=aster+Log+Jile: m.sql1*in:@@@@@(
Slave+I%+/unning: ;es
Slave+S>L+/unning: ;es
/eplicate+Do+DI:
/eplicate+Ignore+DI:
/eplicate+Do+?a*le: asteris2cdr:cdr
/eplicate+Ignore+?a*le:
/eplicate+Eild+Do+?a*le:
/eplicate+Eild+Ignore+?a*le:
Last+7rrno: @
Last+7rror:
S2ip+Counter: @
7#ec+=aster+Log+0os: D6
/ela.+Log+Space: )A3
Fntil+Condition: ,one
Fntil+Log+Jile:
Fntil+Log+0os: @
=aster+SSL+Allo!ed: ,o
=aster+SSL+CA+Jile:
=aster+SSL+CA+0at:
=aster+SSL+Cert:
=aster+SSL+Ciper:
=aster+SSL+&e.:
Seconds+Ieind+=aster: @
( ro! in set 8@:@@ sec9
'e sigue el mismo procedimiento para el 'ervidor$:
5.sI# +" root +psesa5o
mysql" CHANG, -AS%,R %) -AS%,R"H)S%51*2$1E($12($1>553
-AS%,R"#S,R51astera53
-AS%,R"PASSV)R+5sesa1o53
-AS%,R"L)G"&.L,51ys?7'=in$00000153
-AS%,R"L)G"P)S*(A
>uer. %&- @ ro!s affected 8@:(@ sec9
mysql" 'E$;E 'L$9)T
mysql" '6LM 'L$9) 'E$E,'V*
OOOOOOOOOOOOOOOOOOOOOOOOOOO (: ro! OOOOOOOOOOOOOOOOOOOOOOOOOOO
Slave+I%+State: Eaiting for master to send event
=aster+Host: (D):(C6:("C:D@
AG@
=aster+Fser: mastera
=aster+0ort: AA@C
Connect+/etr.: C@
=aster+Log+Jile: m.sql1*in:@@@@@(
/ead+=aster+Log+0os: D6
/ela.+Log+Jile: m.sqld1rela.1*in:@@@@@)
/ela.+Log+0os: )A3
/ela.+=aster+Log+Jile: m.sql1*in:@@@@@(
Slave+I%+/unning: ;es
Slave+S>L+/unning: ;es
/eplicate+Do+DI:
/eplicate+Ignore+DI:
/eplicate+Do+?a*le: asteris2:cdr
/eplicate+Ignore+?a*le:
/eplicate+Eild+Do+?a*le:
/eplicate+Eild+Ignore+?a*le:
Last+7rrno: @
Last+7rror:
S2ip+Counter: @
7#ec+=aster+Log+0os: D6
/ela.+Log+Space: )A3
Fntil+Condition: ,one
Fntil+Log+Jile:
Fntil+Log+0os: @
=aster+SSL+Allo!ed: ,o
=aster+SSL+CA+Jile:
=aster+SSL+CA+0at:
=aster+SSL+Cert:
=aster+SSL+Ciper:
=aster+SSL+&e.:
Seconds+Ieind+=aster: @
( ro! in set 8@:@@ sec9
La pr"eba
'e para el &y'(L del servidorB y se efectuan dos llamadas desde la extensin 0GGG del $steris% $ al
buNn de voN1
)l resultado en la base de datos:
5.sI# +" root +psesa5o
mysql" "se asteriskc%r
mysql" se#ect i%>ca##%ate fro5 c%r w/ere %stEJAM
Z1111Z111111111111111111111Z
P id P calldate P
AG?
Z1111Z111111111111111111111Z
P A) P )@((1()1(" (6:@C:@C P
P 3" P )@((1()1(3 @6:3(:)@ P
P C( P )@((1()1(3 @D:AA:)A P
P H( P )@((1()1(3 @D:AA:"6 P
Z1111Z111111111111111111111Z
" ro!s in set 8@:@@ sec9
&ientras antes el I. era progresivo/ las ultimas dos entradas tienen un salto de 0G y cada una termina
con el numero 01
Eerminada la operacin/ se para &y'(L en el servidor$ y se inicia &y'(L en el servidorB efectuando
dos llamadas al buNn de voN usando el $steris% del servidorB1
)l resultado en la base de datos:
5.sI# +" root +psesa5o
mysql" "se asteriskc%r
mysql" se#ect i%>ca##%ate fro5 c%r w/ere %stEJAM
Z1111Z111111111111111111111Z
P id P calldate P
Z1111Z111111111111111111111Z
P A) P )@((1()1(" (6:@C:@C P
P 3" P )@((1()1(3 @6:3(:)@ P
P C( P )@((1()1(3 @D:AA:)A P
P H( P )@((1()1(3 @D:AA:"6 P
P H) P )@((1()1(3 @D:A6:@H P
P 6) P )@((1()1(3 @D:AD:(" P
Z1111Z111111111111111111111Z
C ro!s in set 8@:@@ sec9
)l I. progresivo en el servidorB cambia con saltos de 0G y cada entrada termina con el numero :1
$hora se inicia &y'(L en el servidor$ y se mira que pasa en los dos servidores:
'ervidor$
5.sI# +" root +psesa5o
mysql" "se asteriskc%r
mysql" se#ect i%>ca##%ate fro5 c%r w/ere %stEJAM
Z1111Z111111111111111111111Z
P id P calldate P
Z1111Z111111111111111111111Z
P A) P )@((1()1(" (6:@C:@C P
AGF
P 3" P )@((1()1(3 @6:3(:)@ P
P C( P )@((1()1(3 @D:AA:)A P
P H( P )@((1()1(3 @D:AA:"6 P
P H) P )@((1()1(3 @D:A6:@H P
P 6) P )@((1()1(3 @D:AD:(" P
Z1111Z111111111111111111111Z
C ro!s in set 8@:@@ sec9
!ervi%or7
5.sI# +" root +psesa5o
mysql" "se asteriskc%r
mysql" se#ect i%>ca##%ate fro5 c%r w/ere %stEJAM
a====a=====================a
Z id Z calldate Z
a====a=====================a
Z 2: Z :G00=0:=0A 0F:G@:G@ Z
Z CA Z :G00=0:=0C GF:C0::G Z
Z @0 Z :G00=0:=0C GB:22::2 Z
Z ?0 Z :G00=0:=0C GB:22:AF Z
Z ?: Z :G00=0:=0C GB:2F:G? Z
Z F: Z :G00=0:=0C GB:2B:0A Z
a====a=====================a
@ ro3s in set OG1GG secP
Los datos se han replicado y no hubo ningHn tipo de conflicto en la tabla cdr gracias al uso de:
autoDincrementDincrement
autoDincrementDoffset
22.G )37) + 3ai%1 vHa TC-
.;B. es un programa que permite conectar particiones presentes en distintos servidores y tenerlas
sincroniNadas1 -unciona en el mismo modo de un sistema ;$I.0 con la sencilla diferencias que las
copias de los datos se hacen a trav5s de la red usando el protocolo E!81 'e ver4 como instalar .;B.
en dos servidores 98' en Linode y de esta forma crear un sistema de alta disponibilidad para $steris%1
Lo mismo se puede hacer con dos servidores locales con las modificaciones oportunas1
$l momento de configurar el servidor Linode/ se han creado A particiones:
AGB
La ultimas dos es las que se utiliNar4n para .;.B1 !laramente las mismas particiones tienen que ser
creada el en segundo servidor de respaldo1 ,na veN terminada esta operacin/ tendremos los dos
servidores Linode listos para la instalacin y configuracin de .;B.1
!ervi%or A
I8 publico: @B10@A1:G010?F
I8 Lan: 0B:10@F10:F10AA
.ominio: li00C=0?F1members1linode1com
!ervi%or 7
I8 publico: B@10:@100C10@
I8 Lan: 0B:10@F10:F10AC
.ominio: li2AG=0@1members1linode1com
'e inicia la configuracin de los dos servidores para que cada uno sepa a que direccin I8 encontrar el
otro:
!ervi%or A
nano /etc/hosts
$l final de archivo se aaden las siguientes lneas:
1*2$1E($12($1>> 7i115'14($1e1=ers$7inode$co1
1*2$1E($12($1>5 7i@>0'1E$1e1=ers$7inode$co1
'e guardan los cambios y se averigua que efectivamente se logra localiNar el servidor B:
ping #iGB0+16.5e5bers.#ino%e.co5
0I,M liA"@1(C:mem*ers:linode:com 8(D):(C6:()6:("39 3C86"9 *.tes of data:
C" *.tes from liA"@1(C:mem*ers:linode:com 8(D):(C6:()6:("39: icmp+seq5( ttl5C" time5@:CH( ms
C" *.tes from liA"@1(C:mem*ers:linode:com 8(D):(C6:()6:("39: icmp+seq5) ttl5C" time5@:"A@ ms
C" *.tes from liA"@1(C:mem*ers:linode:com 8(D):(C6:()6:("39: icmp+seq5A ttl5C" time5@:"@3 ms
C" *.tes from liA"@1(C:mem*ers:linode:com 8(D):(C6:()6:("39: icmp+seq5" ttl5C" time5@:"HD ms
A0G
C" *.tes from liA"@1(C:mem*ers:linode:com 8(D):(C6:()6:("39: icmp+seq53 ttl5C" time5@:3(6 ms
C" *.tes from liA"@1(C:mem*ers:linode:com 8(D):(C6:()6:("39: icmp+seq5C ttl5C" time5@:"6A ms
111 liA"@1(C:mem*ers:linode:com ping statistics 111
C pac2ets transmitted- C received- @] pac2et loss- time "DDHms
rtt min/avg/ma#/mdev 5 @:"@3/@:"DH/@:CH(/@:@6D ms
'e efectua el mismo procedimiento en el servidor B
!ervi%or 7
nano ;etc;/osts
'e aaden las siguientes lneas:
1*2$1E($12($1>> 7i115'14($1e1=ers$7inode$co1
1*2$1E($12($1>5 7i@>0'1E$1e1=ers$7inode$co1
ping #i11C+1A=.5e5bers.#ino%e.co5
0I,M li((31(H6:mem*ers:linode:com 8(D):(C6:()6:(""9 3C86"9 *.tes of data:
C" *.tes from li((31(H6:mem*ers:linode:com 8(D):(C6:()6:(""9: icmp+seq5( ttl5C" time5@:36H ms
C" *.tes from li((31(H6:mem*ers:linode:com 8(D):(C6:()6:(""9: icmp+seq5) ttl5C" time5@:")) ms
C" *.tes from li((31(H6:mem*ers:linode:com 8(D):(C6:()6:(""9: icmp+seq5A ttl5C" time5@:3") ms
C" *.tes from li((31(H6:mem*ers:linode:com 8(D):(C6:()6:(""9: icmp+seq5" ttl5C" time5@:")@ ms
C" *.tes from li((31(H6:mem*ers:linode:com 8(D):(C6:()6:(""9: icmp+seq53 ttl5C" time5@:A6C ms
C" *.tes from li((31(H6:mem*ers:linode:com 8(D):(C6:()6:(""9: icmp+seq5C ttl5C" time5@:3)3 ms
111 li((31(H6:mem*ers:linode:com ping statistics 111
C pac2ets transmitted- C received- @] pac2et loss- time "DDCms
rtt min/avg/ma#/mdev 5 @:A6C/@:"6@/@:36H/@:@HC ms
,na veN terminada esta parte se prepara el sistema para la instalacin de .;B.:
Las operaciones que siguen hay que e#ecutarlas en ambos servidores:
c% ;"sr;src
wget /ttp&;;oss.#inbit.co5;%rb%;=.G;%rb%+=.G.A.tar.gz
tar +0f %rb%+=.G.A.tar.gz
c% %rb%+=.G.A
.;config"re ++prefi0E; ++wit/+k5 ++wit/+0en
'e compila utiliNando la ultimas versin de las fuentes del <ernel=>)+ instalado en el servidor/ es
A00
decir:
"na5e +r
):C:(61)H":():(:el3#en
5ake ?)(3E;"sr;src;kerne#s;2.6.1=+2AB.12.1.e#C+0en+i6=6
5ake insta##
'e mueve la configuracin predefinida que viene con la instalacin de .;B.
5v ;etc;%rb%.conf ;etc;%rb%.conf.o#%
se crea una nueva:
nano ;etc;%rb%.conf
'e copian las lineas que siguen en ambos servidores:
g7o=a7 S
usage'count yesA
T
co11on S
2rotoco7 CA
T
resource data S
net S
a77ow'two'2ri1ariesA
T
startu2 S
=eco1e'2ri1ary'on =othA
T
on 7i115'14($1e1=ers$7inode$co1 S
device 8dev8dr=d1A
disD 8dev8<vdcA
address 1*2$1E($12($1>>;44(*A
1eta'disD 8dev8<vddB0CA
T
on 7i@>0'1E$1e1=ers$7inode$co1 S
device 8dev8dr=d1A
disD 8dev8<vdcA
address 1*2$1E($12($1>5;44(*A
1eta'disD 8dev8<vddB0CA
T
T
.e esta forma se crean dos nodos primarios usando el protocolo ! y se nombra este recurso creado
A0:
QdataR1
)l nodo 0 ser4 li00C=0?F1members1linode1com cuya I8 local es 0B:10@F10:F10AA 'e utiliNar4n las dos
particiones creadas Oxvdc y xvddP una para las copia de los datos y la otra como meta disco para
guardar los datos que .;B. crea al momento de conectarse y sincroniNarse con el segundo nodo1
)l nodo : ser4 li2AG=0@1members1linode1com cuya I8 local es 0B:10@F10:F10AC1
$hora se crean los meta=datos en la particin xvdd de ambos servidores:
%rb%a%5 create+5% %ata
+ormalmente sale este error:
Jound e#tA files.stem
?is !ould corrupt e#isting data:
If .ou !ant me to do tis- .ou need to Wero out te first part
of te device 8destro. te content9:
;ou sould *e ver. sure tat .ou mean it:
%peration refused:
Command 'dr*dmeta ( v@6 /dev/#vdd @ create1md' terminated !it e#it code "@
'e soluciona destruyendo todos los datos presentes en la particin:
%% ifE;%ev;zero ofE;%ev;0v%% bsE1M co"ntE12=
()6Z@ records in
()6Z@ records out
(A")(HH)6 *.tes 8(A" =I9 copied- (-)(HC seconds- ((@ =I/s
'e e#ecuta otra veN el comando:
%rb%a%5 create+5% %ata
Eriting meta data:::
initialiWing activit. log
,%? initialiWing *itmap
,e! dr*d meta data *loc2 successfull. created:
success
'e configurara el programa para que el servicio arranque en autom4tico:
c/kconfig ++a%% %rb%
c/kconfig %rb% on
8ara crear una primera sincroniNacin entre los datos de las dos particiones de los dos servidores se
A02
carga el modulo .;B. en el <ernel:
5o%probe %rb%
se averigua que efectivamente est5 corriendo:
#s5o% [ grep %rb%
dr*d )3(AC" @
$hora se crea la conexin entre los dos servidores:
%rb%a%5 attac/ %ata
%rb%a%5 s.ncer %ata
%rb%a%5 connect %ata
'e efectua una primera sincroniNacin de los datos:
!ervi%or A
%rb%a%5 ++ ++overwrite+%ata+of+peer pri5ar. %ata
)sta operacin puede durar bastante tiempo dependiendo del tamao de los discos1 'e puede controlar
en cualquier momento a que punto ha llegado con el comando:
cat ;proc;%rb%
version: 6:A:H 8api:66/proto:6C1D(9
MI?1as: eaDe)6d*ffD6eAA(aC)*c*ccCAaC(A36@6fe)D(H *uild *. rootBli((31
(H6:mem*ers:linode:com- )@((1()1(3 ((:)":36
(: cs:S.ncSource ro:0rimar./Secondar. ds:Fp?oDate/Inconsistent C r1111
ns:ACH) nr:@ d!:@ dr:ACH) al:@ *m:@ lo:C pe:@ ua:C ap:@ ep:( !o:* oos:6(33)6
$N::::::::::::::::::::' s.nc'ed: (:@] 86(33)6/6(D)@@9&
finis: @:"):)6 speed: )3) 8)""9 &/sec
!uando el proceso termine/ aparecer4:
cat ;proc;%b%
version: 6:A:H 8api:66/proto:6C1D(9
MI?1as: eaDe)6d*ffD6eAA(aC)*c*ccCAaC(A36@6fe)D(H *uild *. rootBli((31
(H6:mem*ers:linode:com- )@((1()1(3 ((:)":36
(: cs:Connected ro:0rimar./Secondar. ds:Fp?oDate/Fp?oDate C r1111
ns:6(D)@@ nr:@ d!:@ dr:6(D)@@ al:@ *m:3@ lo:@ pe:@ ua:@ ap:@ ep:( !o:* oos:@
A0A
'e reinician ambos servidores:
reboot
!ervi%or A
'e crea una nueva carpeta donde se copiar4n los datos que se quiere sincroniNar:
5k%ir ;/o5e;%ata
'e monta la particin de los datos:
5o"nt ;%ev;%rb%1 ;/o5e;%ata
se crean unos cuantos archivos de prueba:
to"c/ ;/o5e;%ata;fi#e1
to"c/ ;/o5e;%ata;fi#e2
to"c/ ;/o5e;%ata;fi#eG
#s ;/o5e;%ata
file( file) fileA lostZfound
'e desmonta la particin:
"5o"nt ;/o5e;%ata
y se averigua el resultado en el servidor B
!ervi%or 7
5k%ir ;/o5e;%ata
5o"nt ;%ev;%rb%1 ;/o5e;%ata
#s ;/o5e;%ata
file( file) fileA lostZfound
"5o"nt ;/o5e;%ata
)n el caso que se quiera tener sincroniNacos los archivos de configuracin de $steris%/ se copia
directamente la carpeta de esta forma:
A0C
!ervi%or A
5o"nt ;%ev;%rb%1 ;/o5e;%ata
5k%ir ;/o5e;%ata;etc
c% ;etc
5v asterisk ;/o5e;%ata;etc;asterisk
8ara terminar se crea un enlace simblico a la nueva carpeta:
#n +s ;/o5e;%ata;etc;asterisk asterisk
Lo mismo con .$6.I:
5v %a/%i ;/o5e;%ata;etc;%a/%i
#n +s ;/o5e;%ata;etc;%a/%i %a/%i
"5o"nt ;/o5e;%ata
!ervi%or 7
5o"nt ;%ev;%rb%1 ;/o5e;%ata
c% ;etc
r5 +fr asterisk
r5 +fr %a/%i
#n +s ;/o5e;%ata;etc;asterisk asterisk
#n +s ;/o5e;%ata;etc;%a/%i %a/%i
"5o"nt ;/o5e;%ata
Sa est4 configurado y funcionando .;B.1 +o hace falta de#ar la particin montada en ninguno de los
dos servidores porque/ como se ver4 en el prximo p4rrafo/ 6eartbeat se encargar4 de hacerlo segHn el
servidor que est5 activo en ese momento1
22.B Keartbeat
'e termina el capitulo dedicado a $steris% y alta disponibilidad con la instalacin y configuracin de
A0@
6eartbeat1 6eartbeat se necesita para que los dos servidores sepan el estado del otro1 !uando el master
se cae/ el slave toma el control cargando la particin de .;B. donde hemos guardado los datos de
configuracin de $steris%/ poniendo activo el I8 compartido y arrancando dahdi y asteris%1 !uando se
utiliNa $steris% alta disponibilid4 con este tipo de configuracin/ habr4 un I8 publico compartido que es
que se utiliNar4 para regitrar las extensiones1 )n el caso de una red publica y de Linode sera algo
parecido:
I8 'ervidor $steris% &aster
I8 $steris% 8ublico
I8 servidor $steris% 'lave
'e utiliNar4 la misma configuracin que se present en el p4rrafo ::121 8ara resumir:
!ervi%or A
I8 publico: @B10@A1:G010?F
I8 Lan: 0B:10@F10:F10AA
!ervi%or 7
I8 publico: B@10:@100C10@
I8 Lan: 0B:10@F10:F10AC
8rimero se compra en Linode un segundo I8 publico para el servidor $ Ocosto: un dlar al mesP que
ser4 el I8 QvirtualR que compartir4n los dos servidores1 ,na veN comprado/ hay que configurarlo e una
nueva tar#eta de red virtual:
nano ;etc;s.sconfig;network+scripts;ifcfg+et/0&2
'e copian las siguientes lineas:
+,L.C,eth0;2
9))%PR)%)none
)N9))%yes
.PA++R14@$255$1*E$1*1
N,%-ASM255$255$255$0
0?21:CC10B@10B0 es la nueva I8 adquirida1 'e reinicia el servidor:
reboot
Luego en la pagina de administracin de Linode del servidor B se configura el failover1 )sto permite
que al caerse el servidor $/ el servidor B tomar4 la gestin de ese I81 )n el menH Q;emote $ccessR de
la pagina de administracin del Linode:
A0?
'e escoge el enlace QI8 -ailoverR1 )n la nueva pagina:
'e selecciona la nueva I8 adquirida y se presiona el botn Q'ave !hangesR1
$hora hay que instalar 6eartbeat1 )ste programa es presente en los repositorios \extrasR de !entL'1
8ara activarlos:
nano ;etc;."5.repos.%;Cent8!+7ase.repo
se modifica este bloque:
Be<trasC
na1eCent)S'Rre7easever ' ,<tras
1irror7isthtt2;881irror7ist$centos$org8Yre7easeRre7easeverZarchR=asearchZre2oe<tras
#=aseur7htt2;881irror$centos$org8centos8Rre7easever8e<tras8R=asearch8
g2gchecD1
g2gDey:i7e;888etc82Di8r21'g2g8RP-'GPG'M,Y'Cent)S'5
para que quede:
Be<trasC
na1eCent)S'Rre7easever ' ,<tras
1irror7isthtt2;881irror7ist$centos$org8Yre7easeRre7easeverZarchR=asearchZre2oe<tras
=aseur7htt2;881irror$centos$org8centos8Rre7easever8e<tras8R=asearch8
g2gchecD1
g2gDey:i7e;888etc82Di8r21'g2g8RP-'GPG'M,Y'Cent)S'5
'e guardan los cambios y se instala 6eartbeat:
."5 insta## /eartbeat
8or algun rato motivo hay que repetir el comando dos veces:
A0F
."5 insta## /eartbeat
$hora hay que crear tres archivos de configuracin:
ha1cf
auth%eys
haresources
'e empieNa con el que se encarga de controlar el estado de los servidores1
!ervi%or A&
nano /etc/ha1d/ha1cf
se pegan las siguientes lneas:
de=ug:i7e 8var87og8ha'de=ug
7og:i7e 8var87og8ha'7og
7og:aci7ity 7oca70
Dee2a7ive 2
deadti1e 120
initdead 120
ucast eth0 1*2$1E($12($1>5
ud22ort E*>
auto":ai7=acD on
node 7i115'14($1e1=ers$7inode$co1
node 7i@>0'1E$1e1=ers$7inode$co1
!ervi%or 7&
nano ;etc;/a.%;/a.cf
de=ug:i7e 8var87og8ha'de=ug
7og:i7e 8var87og8ha'7og
7og:aci7ity 7oca70
Dee2a7ive 2
deadti1e 120
initdead 120
ucast eth0 1*2$1E($12($1>>
ud22ort E*>
auto":ai7=acD on
node 7i115'14($1e1=ers$7inode$co1
node 7i@>0'1E$1e1=ers$7inode$co1
$hora en ambos servidores se crea el archivo que utiliNar4 6eartbeat para el intercambios de llaves de
autenticacin y el archivo donde se indicar4 la I8 virtual compartida y los servicios que heartbeat
A0B
deber4 gestionar1 )stos archivos tienen que ser iguales en ambos servidores:
nano ;etc;/a.%;a"t/ke.s
auth @
@ 1d5 sesa1o
'e usa como m5todo de encriptacin &.C y despu5s se pone la contrasea que se quieres utiliNar Oen
este caso sesamoP1
$hora hay que cambiar los permisos de este archivo para que sea accesible Oen lectura y escrituraP
solamente para el usuario root:
c/5o% 600 ;etc;/a.%;a"t/ke.s
8ara terminar el archivo de los recursos:
nano ;etc;/a.%;/areso"rces
'e pone:
7i115'14($1e1=ers$7inode$co1 .Paddr2;;14@$255$1*E$1*1 dr=ddisD;;data
&i7esyste1;;8dev8dr=d1;;8ho1e8data;;e<t@ dahdi asterisD
(M-83TAT*& tiene I"e estar to%o e# #a 5is5a #Hnea
'e define como servidor &aster #i11C+1A=.5e5bers.#ino%e.co5 y se indica como I8 virtual la que se
acaba de comprar1 drbddis% es el script que se encarga de montar la particin donde se han guardado los
archivos de configuracin de $steris%/ en este caso /dev/drbd01 8or ultimo se indican los servicios que
6eartbeat tiene que iniciar/ en este caso dahdi y asteris%1
)stos servicios tienen que ser indicados en la carpeta etc/ha1d/resource1d. 8ara hacerlo se crea un enlace
simblico:
c% ;etc;/a.%;reso"rce.%
#n +s ;etc;init.%;asterisk asterisk
#n +s ;etc;init.%;%a/%i %a/%i
$hora el problema1 Eodo pareca funcionar bien pero heartbeat no montaba la particin /dev/drbd0 y
asteris% no poda funcionar1
;evisando las cosas el script drbddis% Oque viene con la instalacin de 6eartbeatP estaba mal
configurado1 'e resuelve de la siguiente forma:
nano ;etc;/a.%;reso"rce.%;%rb%%isk
A:G
'e cambia esta linea:
+,&A#L%&.L,!8etc8de:au7t8dr=d!
para que quede:
+,&A#L%&.L,!8etc8dr=d$con:!
indicando donde efectivamente se encuentra el archivo de configuracin de drbd1 8ara terminar la
configuracin los Hltimos cambios en ambos servidores:
c/kconfig asterisk off
c/kconfig %a/%i off
)sto porque es 6eartbeat que se encarga de iniciar los dos programas1
ch%config ==add heartbeat
ch%config heartbeat on
'e abre el puerto ,.8 @BA que permite a los servicios 6ertbeat instalados en los dos servidores de
comunicarse entre ellos:
!ervi%or A
nano ;etc;s.sconfig;iptab#es
despu5s de este bloque:
# H%%P
'A .NP#% '2 tc2 '1 state ''state N,V '1 tc2 ''d2ort (0 'J ACC,P%
se aade:
# Heart=eat
'A .NP#% '2 ud2 '1 ud2 's 1*2$1E($12($1>5 ''d2ort E*> 'J ACC,P%
'e reinicia iptables:
service iptab#es restart
'ervidor B
nano ;etc;s.sconfig;iptab#es
despu5s de este bloque:
A:0
# H%%P
'A .NP#% '2 tc2 '1 state ''state N,V '1 tc2 ''d2ort (0 'J ACC,P%
se aade:
# Heart=eat
'A .NP#% '2 ud2 '1 ud2 's 1*2$1E($12($1>> ''d2ort E*> 'J ACC,P%
'e reinicia iptables:
service iptab#es restart
!on esta ultima operacin se ha terminado la configuracin de 6eartbeat1 'olo falta reiniciar los dos
servidores y mirar si todo funciona:
reboot
'i se hace una captura de paquetes en el 'ervidor $/ puerto @BA:
ngrep +% et/0&1 +T b.#ine port 6JB
'e ver4n una serie de paquetes de este tipo:
# 1*2$1E($12($1>5;5>002 'G 1*2$1E($12($1>>;E*>
GGG
tstatus
stactive
dt1d>c0
2rotoco71
src7i@>0'1E$1e1=ers$7inode$co1
/16srcuuid*Du4.y-?S4u-L1I2cNs%Cg
se?24>
hg>eea>aE2
ts>eea>ec*
7d0$04 0$0E 0$04 181(* (((@
tt7@
auth@ @:e42eec1:(c>d:E1E=(0E4ce@E(:(>4
QQQ
.onde 6eartbeat comunica al 'ervidor B su estado1 'i en algun momento el servidor $ se cae/
autom4ticamente el servidor B tomar4 su lugar1 Eodas las extensiones tendr4n que conectarse a la nueva
I8 compartida/ es decir: 0?21:CC10B@10B0
A::
CA-(T9L8 XX(((
Asterisk 19(
$steris% *,I es una interfaN gr4fica desarrollada para la gestin y la configuracin de $steris% desde
un navegador Meb1 'implifica el mane#o de $steris% siempre y cuando se tenga un conocimiento
b4sico del funcionamiento de la 8B>1 $l arrancar la *,I/ 5sta aade macros y extensiones al plan de
llamadas pero no lee totalmente la configuracin ya presente en la carpeta /etc/asteris%T para evitar de
perder el traba#o que se ha hecho es buena practica hacer una copia de todos los archivo de
configuracin de $steris% presentes en la carpeta /etc/asteris%:
5k%ir ;t5p;asterisk
cp ;etc;asterisk;N ;t5p;asterisk
8ara descargar la ultima versin disponible hay que instalar el programa SUBVERSION1
."5 insta## s"bversion
c% ;"sr;src
'e descargan los archivos de la *,I
svn co /ttp&;;svn.asterisk.org;svn;asterisk+g"i;branc/es;2.0
'e entra en la carpeta:
c% 2.0;
'e compila y instala:
.;config"re
5ake
5ake insta##
8ara terminar con la instalacin hay que modificar dos archivos de configuracin de $steris%1 8rimero
el manager1conf
nano ;etc;asterisk;5anager.conf
'e averigua que todos los par4metros que siguen tengan el valor indicado:
Bgenera7C
ena=7ed yes
we=ena=7ed yes
2ort 50@(
htt2ti1eout E0
=indaddr 0$0$0$0
a77ow1u7ti27e7ogin yes
dis27ayconnects yes
'e crea un usuario que sera 5l que se usar4 para entrar en la pagina de administracin de la *,I de
$steris%
BasterisDC
secret sesa1o
read syste13ca7737og3ver=ose3agent3user3con:ig3dt1:3re2orting3cdr3dia727an
write syste13ca773agent3user3con:ig3co11and3re2orting3originate
'e guardan los cambios y se sigue con el archivo http1conf
5v ;etc;asterisk;/ttp.conf ;etc;asterisk;/ttp.conf.o#%
nano ;etc;asterisk;/ttp.conf
Bgenera7C
ena=7ed yes
ena=7estatic yes
=indaddr0$0$0$0
=ind2ort(0((
'e guardan los cambios y se reinicia $steris%
;etc;init.%;asterisk restart
$hora hay que abrir el puerto FGFF E!8 en el cortafuegos
nano ;etc;s.sconfig;iptab#es
.espu5s de este bloque:
# -yS[L
'A .NP#% '2 tc2 '1 state ''state N,V '1 tc2 's 1*2$1E($12($1>5 ''d2ort @@0E 'J ACC,P%
'e aaden las siguientes linea:
# AsterisD G#.
'A .NP#% '2 tc2 '1 state ''state N,V '1 tc2 ''d2ort (0(( 'J ACC,P%
'e reinicia el cortafuegos:
service iptab#es restart
$hora se averigua que todo est5 bien configurado
A:C
5ake c/eckconfig
f !hec%ing for http1conf: L<
f !hec%ing for manager1conf: L<
f !hec%ing if 6EE8 is enabled: L<
f !hec%ing if 6EE8 static support is enabled: L<
f !hec%ing if manager is enabled: L<
f !hec%ing if manager over 6EE8 is enabled: L<
=== )verything loo%s good ===
N 19( s/o"#% be avai#ab#e at /ttp&;;#i11C+1A=.5e5bers.#ino%e.co5&=0==;asterisk;static;config;in%e0./t5#
$ pesar que apareNca la linea en negrita como direccin para acceder a la *,I/ la direccin exacta es:
/ttp&;;#i11C+1A=.5e5bers.#ino%e.co5&=0==;static;config;in%e0./t5#
.esde un navegador Meb se visita la pagina de administracin de la *,I de $steris%1
,sername: $steris%
8ass3ord: sesamo
'e presiona el botn QLoginR
.espu5s de unos segudos aparecer4:
'e vuelve a la ventana terminal del servidor y se para y reinicia $steris%:
service asterisk stop
service asterisk start
A:@
'e vuelve a la pagina de administracin de $steris% y se presiona el Botn $ceptar1 'e vuelve a poner
,sername y pass3ord presionando el botn QLoginR1 )l $steris% *,I leer4 algunas configuraciones
Ocolas de espera/ conferenciasP desde los archivos presentes en la carpeta /etc/asteris%1 Las extensiones
configuradas en el sip1conf no aparecer4n porque $steris% *,I las guarda en el archivo users1conf
$qu van algunas im4genes de la interfaN gr4fica
)l orden para configurar la *,I es:
!rear las troncales en el menH Tr"nks
!rear los contextos para las llamadas saliente en el menH 8"tgoing Ca##ing 3"#es
!rear en dialplan en el menH )ia# -#ans
!rear las extensiones en el menH 9sers
,na veN que que se ha probado la *,I de $steris% y se quiere volver a la configuracin anterior/ se
copian los dos archivos modificados y se recarga la configuracin guardada:
c% ;etc;asterisk
cp 5anager.conf ;t5p;asterisk
cp /ttp.conf ;t5p;asterisk
r5 +fr N
A:?
cp ;t5p;asterisk;N ;etc;asterisk
;etc;init.%;asterisk restart
La diferencia entre esta *,I y otras es que no utiliNa muchos recursos del sistema para funcionar
porque no necesita un servidor Meb externo O$pacheP1 8ara pequeas instalaciones sencillas/ es la m4s
indicada1
A:F
CA-(T9L8 XX(V
4ree-7X
8ersonalmente no soy partidario de la instalaciones $steris% con InterfaN grafica1 !omo entiendo que a
muchos puede interesar el tema/ en este capitulo se ver4 como instalar la *,I -ree8B>1
!omo la *,I se basa en 868/ si no se ha ya instalado/ se instala ahora #unto al servidor $pache y el
modulo modDssl1 $ntes/ si se ha instalado/ se remueve el paquete rpmforge=release:
."5 re5ove rp5forge+re#ease
."5 insta## p/p+N /ttp% 5o%6ss#
'e aade el usuario $steris% con home directory /var/lib/asteris%:
"sera%% +c ZAsterisk -7XZ +% ;var;#ib;asterisk asterisk
useradd: aviso: el directorio personal .a e#iste:
,o se copia ningan ficero del directorio s2el en bl:
!ambiamos los permisos en todas las carpetas creadas por la instalacin de $steris% asign4ndolos al
usuario asteris% que se acaba de crear:
c/own +3 asterisk ;var;r"n;asterisk
c/own +3 asterisk ;var;#og;asterisk
c/own +3 asterisk ;var;#ib;asterisk;5o/
c/own +3 asterisk ;var;#ib;p/p;session
c/own +3 asterisk ;var;spoo#;asterisk
c/own +3 asterisk ;etc;asterisk
!omo para la mHsica en espera $steris% a -ree8B> utiliNan archivos en formato 3av/ si se quiere
utiliNar archivos mp2 hay que instalar mpg0:2 que se encargar4 de convertir los archivos mp2 en 3av:
c% ;"sr;src
wget /ttp&;;so"rceforge.net;pro2ects;5pg12G;fi#es;5pg12G;1.12.C;5pg12G+1.12.C.tar.bz2
tar +02vf 5pg12G+1.12.C.tar.bz2
c% 5pg12G+1.12.C
.;config"re ++prefi0E;"sr
5ake
5ake insta##
'e cambia el usuario y grupo predefinido del servidor M)B de apache a asteris%:
se% +i Zs;9ser apac/e;9ser asterisk;Z ;etc;/ttp%;conf;/ttp%.conf
se% +i Zs;1ro"p apac/e;1ro"p asterisk;Z ;etc;/ttp%;conf;/ttp%.conf
8ara prevenir problemas de acceso se modifica el par4metro $llo3Lverride de $ll a +one:
se% +i Zs;A##ow8verri%e A##;A##ow8verri%e one;Z ;etc;/ttp%;conf;/ttp%.conf
'e entra en el cliente &y'(L y se crean dos bases de datos y los respectivos permisos:
5.sI# +" root +psesa5o
Eelcome to te =.S>L monitor: Commands end !it [ or `g:
;our =.S>L connection id is 3
Server version: 3:@:HH Source distri*ution
?.pe 'elp[' or '`' for elp: ?.pe '`c' to clear te *uffer1
mysql" create %atabase asteriskM
>uer. %&- ( ro! affected 8@:@) sec9
mysql" create %atabase asteriskc%r%bM
>uer. %&- ( ro! affected 8@:@@ sec9
mysql" 13AT ALL -3(V(L*1*! 8 asteriskc%r%b.N T8 asterisk"ser'#oca#/ost
()*T(4(*) 7P Osesa5oOM
>uer. %&- @ ro!s affected 8@:@@ sec9
mysql" 13AT ALL -3(V(L*1*! 8 asterisk.N T8 asterisk"ser'#oca#/ost ()*T(4(*) 7P
Osesa5oOM
>uer. %&- @ ro!s affected 8@:@@ sec9
mysql" f#"s/ privi#egesM
>uer. %&- @ ro!s affected 8@:@@ sec9
mysql" I"it
I.e
'e descarga la ultima versin estable de -ree8B>:
c% ;"sr;src
wget /ttp&;;5irror.freepb0.org;freepb0+2.J.0.tar.gz
'e descomprime el paquete y se entra en la carpeta creada:
tar +0f freepb0+2.J.0.tar.gz
c% freepb0+2.J.0
A20
'e crean las tablas para las bases de datos asteris% y asteris%cdrdb:
5.sI# +" root +psesa5o asterisk Y !dL;newinsta##.sI#
5.sI# +" root +psesa5o asteriskc%r%b Y !dL;c%r65.sI#6tab#e.sI#
'e inicia $steris%:
;etc;init.%;asterisk start
'e inicia el servidor $pache y se configura para que arranque en autom4tico:
service /ttp% start
c/kconfig /ttp% on
'e lanNa el script de instalacin de -ree8B>:
.;insta##6a5p
'e insertan los datos como aparecen en la imagen y al terminar se para -ree8B>:
;"sr;sbin;a5porta# stop
A2:
'e entra en el archivo de configuracin de -ree8B> y se modifican estas tres lneas Opass3ord para el
administrador de la pagina de los buNones de voN personales/ tipo de autenticacin para acceder a la
pagina de administracin del -ree8B> y la direccin I8 publica del servidor Linux/ respectivamenteP:
nano ;etc;a5porta#.conf
$;ID$.&I+D8$''ML;.=ariDpass3ord
$,E6ES8)=none
$&8M)B$..;)''=xx1xx1xx1xx
para que queden:
$;ID$.&I+D8$''ML;.=sesamo
$,E6ES8)=database
$&8M)B$..;)''=I8servidor Oponer la I8 publica del servidor LinuxP
'e inicia nuevamente -ree8B>:
;"sr;sbin;a5porta# start
)n el archivo rc1local se copia esta lnea para que el arranque sea autom4tico:
nano ;etc;rc.#oca#
;"sr;#oca#;sbin;a5porta# start
'e guardan los cambios y se entra a la pagina 3eb para administrar -ree8B> utiliNando la siguiente
direccin:
http://I8servidor
'e escoge el enlace Q-ree8B> $dminsitrationR:
A22
'e pone como usuario admin y como contrasea admin1 8rimero en el menH Q$dminsitratorsR se
cambia la contrasea del usuario admin:
'e pone la nueva contrasea y se presiona el botn Q'ubmit !hangesR1 Luego desde el menH iNquierdo
se selecciona Q&odule $dminR1 'e averigua si hay actualiNaciones y se instalan:
A2A
.e la misma forma se pueden instalar los mdulos que se necesiten1 'e selecciona el menH Q-ree8B>
'ystem 'tatusR y se controla que no hayan avisos/ errores de configuracin:
,na veN que se hayan corregido todos los avisos/errores:
Sa se puede empeNar con la configuracin de $steris%1
A2C
Apen%ice A
!ip.conf
Ugenera#V
a##owg"estEno
conte0tE%efa"#t
a##owtransferE.es
Mrea#5E5.%o5ain.t#%
"%pbin%a%%rE0.0.0.0&C060
tcpenab#eE.es
tcpbin%a%%rE0.0.0.0&C060
tcpa"t/ti5eo"tEG0
tcpa"t/#i5itE100
srv#ook"pE.es
5a0e0pir.EG600
5ine0pir.E60
%efa"#te0pir.E120
5wie0pir.EG600
I"a#if.freIE60
%isa##owEa##
a##owE"#aw
a##owEa#aw
5o/interpretE%efa"#t
5o/s"ggestE%efa"#t
parking#otE%efa"#t
#ang"ageEes
sen%rpi%E.es
pre5at"re5e%iaEno
"seragentEVozToVoice Test1
s%psessionEasterisk
s%pownerEasterisk
%t5f5o%eErfc2=GG
vi%eos"pportE.es
5a0ca##bitrateEG=B
ca##eventsE.es
a"t/fai#"reeventsE.es
a#wa.sa"t/re2ectE.es
rtpti5eo"tE60
rtp/o#%ti5eo"tEG00
rtpkeepa#iveE0
a##ows"bscribeE.es
s"bscribeconte0tEs"bscribe
notif.ringingE.es
notif./o#%E.es
ca##co"nterE.es
tG=pt6"%pt#E.es>fec>5a0%atagra5EB00
fa0%etectE.es
#oca#netE1J2.16=.12=.0;2CC.2CC.12=.0
#oca#netE10.=.0.0;2CC.2CC.2CC.0
#oca#netE10.10.0.0;2CC.2CC.2CC.0
e0ternipE6J.16B.201.1A=
Me0tern/ostEprova.%.n%ns.org
Me0ternrefres/E1=0
natE.es
%irect5e%iaEno
rtcac/efrien%sEno
rt"p%ateE.es
Mregister EW f"#ano&sesa5o'sip.provi%er1.co5
Mregister EW f"#ano&sesa5o'sip.provi%er1.co5&C061
Mregister EW f"#ano&contraseXa'sip.provi%er1.co5;12GB
registerti5eo"tE20
registeratte5ptsE10
M5wi EW 12GB&passwor%'5.sipprovi%er.co5;12GB
register EW serverA&pass1'J6.126.11C.16;server7
U1000V
acco"ntco%eE1000
#ang"ageEes
t.peEfrien%
secretEpb0J0J0
I"a#if.E.es
5ai#bo0E1000'%efa"#t
/ostE%.na5ic
%t5f5o%eErfc2=GG
conte0tEe0ternas
%irect5e%iaEno
natE.es
ca##eri%Eca##eri%E4"#ano Y1000W
ca##gro"pE1
pick"pgro"pE1
%isa##owEa##
a##owEa#aw
a##owE"#aw
a##owEgA2J
a##owE/26G
U1001V
t.peEfrien%
acco"ntco%eE1001
#ang"ageEes
secretEpb0J0J1
I"a#if.E.es
5ai#bo0E1001'%efa"#t
A2F
/ostE%.na5ic
%t5f5o%eErfc2=GG
conte0tEe0ternas
%irect5e%iaEno
natE.es
ca##eri%Ez"tano Y1001W
ca##gro"pE1
pick"pgro"pE1
%isa##owEa##
a##owE"#aw
a##owEa#aw
a##owEgA2J
a##owE/26G
Uint+#oca#esV@RD
t.peEfrien%
#ang"ageEes
I"a#if.E.es
/ostE%.na5ic
%t5f5o%eErfc2=GG
conte0tE#oca#es
%irect5e%iaEno
natE.es
ca##gro"pE1
pick"pgro"pE1
%isa##owEa##
a##owE"#aw
a##owEa#aw
a##owEgA2J
a##owE/26G
U1002V@int+#oca#esD
acco"ntco%eE1002
secretEpb0J0J2
5ai#bo0E1002'%efa"#t
ca##eri%EMengano Y1002W
U2"stvoipV
t.peEpeer
/ostEsip.2"stvoip.co5
fro5%o5ainEsip.2"stvoip.co5
fro5"serE
%efa"#t"serE
secretE
I"a#if.E.es
%t5f5o%eErfc2=GG
conte0tEfro5+2"stvoip
%irect5e%iaEno
A2B
#ang"ageEes
natEno
%isa##owEa##
a##owEa#aw
a##owEa#aw
Userver7V
t.peEfrien%
re5otesecretEpass2
conte0tEinternas
I"a#if.E.es
/ostE%.na5ic
#ang"ageEes
%isa##owEa##
a##owEgs5
a##owE"#aw
a##owEa#aw
UserverbvpnV
t.peEpeer
conte0tEvpn
/ostE10.=.0.6
%isa##owEa##
a##owEgA2J
a##owEa#aw
#ang"ageEes
I"a#if.E.es
%t5f5o%e E rfc2=GG
AAG
Apen%ice 7
(a0.conf
Ugenera#V
bin%portEBC6J
bin%a%%rE0.0.0.0
noc/ecks"5sEno
%e#a.re2ectE.es
a5af#agsE%oc"5entation
srv#ook"pE.es
#ang"ageEes
5o/interpretE%efa"#t
5o/s"ggestE%efa"t#
ban%wi%t/E/ig/
%isa##owEa##
a##owEa#aw
a##owEa#aw
5inrege0pireE60
5a0rege0pireE60
encr.ptionE.es
forceencr.ptionEno
tr"nk5a0sizeE12=000
tr"nk5t"E12B0
a"toki##E.es
co%ecpriorit.E/ost
rtcac/efrien%sE.es
rt"p%ateE.es
parking#otE%efa"#t
ca##tokenoptiona#E0.0.0.0;0.0.0.0
reI"ireca##tokenEa"to
Mregister EW 5arko&secretpass'tor5enta.#in"0+s"pport.net
Mregister EW 2oe're5ote/ost&C6C6
Mregister EW 5arko&Uke.V'tor5enta.#in"0+s"pport.net
U5arkoV
t.peEfrien%
/ostE%.na5ic
secretEpb0J0JB
conte0tEe0ternas
5ai#bo0E12GB'%efa"#t
I"a#if.E.es
ca##eri%E5arko
reI"ireca##tokenEa"to
Uia05o%e51V
t.peEfrien%
conte0tEfa0
%isa##owEa##
a##owE"#aw
"serna5eEia05o%e51
secretEpb0C0C0
I"a#if.E.es
notransferE.es
/ostE%.na5ic
reI"ireca##tokenEa"to
Uia05o%e52V
t.peEfrien%
conte0tEfa0
%isa##owEa##
a##owE"#aw
"serna5eEia05o%e52
secretEpb0C0C1
I"a#if.E.es
notransferE.es
/ostE%.na5ic
reI"ireca##tokenEa"to
UserverbV
t.peEfrien%
/ostE1J2.16=.12=.1BC
tr"nkE.es
conte0tEinternas
I"a#if.E.es
Userver1V
t.peE"ser
%bsecretE%"n%i;secret
conte0tEservera+#oca#
I"a#if.E.es
%isa##owEa##
a##owE"#aw
a##owEa#aw
AA2
Apen%ice C
*0tensions.conf
Ugenera#V
staticE.es
writeprotectE.se
a"tofa##t/ro"g/E.se
e0tenpattern5atc/newE.se
c#earg#oba#varsEno
)PAM(C64*AT93*!Etest1`b#in%0fer`a"to5on`%isconnect`at0fer`parkca##`a"to5i05on
Ug#oba#sV
1000E!(-;1000
S9!TE!(-;2"stvoip
5arkoE(AX2;5arko
Ufro5+%i%voztovoiceV
e0ten EW s>1>Answer
sa5e EW n>Tait@BD
sa5e EW n>1oto@(V3>s>1D
sa5e EW n>Kang"p
e0ten EW fa0>1>)ia#@(AX2;ia05o%e52D
sa5e EW n>Kang"p
Ufro5+spaG102V
e0ten EW s>1>o8p
sa5e EW n>)ia#@!(-;1000D
sa5e EW n>Kang"p
UtestV
switc/ EW 3ea#ti5e
Uservera+#oca#V
e0ten EW 20>1>Answer@D
e0ten EW 20>n>-#a.back@/e##o+wor#%D
e0ten EW 20>n>Kang"p@D
U%"n%i+re5otoV
switc/ EW )9)i;serverb
UvpnV
e0ten EW A0>1>Answer
sa5e EW n>-#a.back@%e5o+congratsD
sa5e EW n>Kang"p
UinternasV
e0ten EW C0>1>!et@-7XE\]*V@LA1D^D
sa5e EW n>oop@(%io5a !ervi%or \]-7X^D
sa5e EW n>Kang"p
e0ten EW A0>1>!et@CALL*3()@n"5DEopenvpnaD
sa5e EW n>)ia#@!(-;serverbvpn;\]*XT*^D
sa5e EW n>/ang"p
e0ten EW AC>1>Answer
sa5e EW n>Tait@1D
sa5e EW n>1oto@(V3>s>1D
e0ten EW AA>1>!et@CKA*L@#ang"ageDEesD
sa5e EW n>agi@wake"p.p/pD
sa5eEW n>Kang"p
e0ten EW JA>1>Answer
sa5e EW n>VoiceMai#Main@\]CALL*3()@n"5D^'%efa"#tD
sa5e EW n>Kang"p
e0ten EW J=>1>Voice5ai#Main
sa5e EW n>Kang"p
e0ten EW JJ>1>)irector.@%efa"#t>internas>eD
sa5e EW n>Kang"p
e0ten EW 100>1>oop
sa5e EW n>)ia#@!(-;1000b!(-;1001b!(-;1002>G0D
sa5e EW n>Kang"p
e0ten EW 12G>1>Answer
sa5e EW n>)"5pc/an
sa5e EW n>-#a.back@/e##o+wor#%D
sa5e EW n>Kang"p
e0ten EW 1C0>1>Answer
sa5e EW n>-#a.back@%e5o+ec/otestD
sa5e EW n>*c/o
sa5e EW n>-#a.back@%e5o+ec/o%oneD
sa5e EW n>Kang"p
e0ten EW 200>1>Answer
sa5e EW n>Sabbersen%@ca5p"s.voztovoice>voztovoicenet'g5ai#.co5>*sta5os esc"c/an%o M-GD
sa5e EW n>M"sic8nKo#%@5pG>60D
sa5e EW n>Kang"p
e0ten EW 6C0>1>Answer@D
sa5e EW n>4estiva#@Asterisk . 4estiva# traba2an 2"nto. C/evereRRRD
AA@
sa5e EW n>Kang"p@D
e0ten EW 660>1>Answer
sa5e EW n>Tait@2D
sa5e EW n>4estiva#@-or favor ingrese #os B %igitos %e #a 5atric"#a %e# e5p#ea%o.D
sa5e EW n>3ea%@*M-9M>beep>BD
sa5e EW n>!et@*M-AM*E\]8)7C6*5p#ea%os@\]*M-9M^D^D
sa5e EW n>1oto(f@\U\]*X(!T!@\]*M-AM*^D^Vgno5breD
sa5e EW n>4estiva#@ing"n e5p#ea%o encontra%o. Kasta #"ego.D
sa5e EW n>Kang"p
sa5e EW n@no5breD>4estiva#@*# no5bre %e# e5p#ea%o es \]*M-AM*^. Kasta #"ego.D
sa5e EW n>Kang"p
e0ten EW 6A0>1>1oto@enc"esta>s>1D
sa5e EW n>Kang"p
e0ten EW 6100U0+2>BV>1>)ia#@!(-;\]*XT*^>BC>/Kk?tTwT0XD
sa5e EW n>Macro@voice5ai#D
sa5e EW n>Kang"p
e0ten EW 6N1XXX>1> !et@CALL*3()@n"5DEserverAD
sa5e EW n>)ia#@!(-;server7;\]*XT*&1^>G0D
sa5e EW n>Kang"p@D
e0ten EW 6N1100X>1>)ia#@(AX2;serverb;\]*XT*&2^D
sa5e EW n>Kang"p
e0ten EW 12GB>1>)ia#@(AX2;5arko>G0D
sa5e EW n>Macro@voice5ai#D
sa5e EW n>Kang"p
e0ten EW 12GC>1>)ia#@(AX2;5arko2>G0D
sa5e EW n>Macro@voice5ai#D
sa5e EW n>Kang"p
e0ten EW 6200U012V>1>Agent#ogin@\]*XT*^D
sa5e EW n>Kang"p
e0ten EW G000>1>Answer
sa5e EW n>d"e"e@ventasD
sa5e EW n>Kang"p
e0ten EW G001>1>Answer
sa5e EW n>d"e"e@ventasD
sa5e EW n>Voice5ai#@1000'%efa"#tD
sa5e EW n>Kang"p
AA?
e0ten EW 666XX>1>Answer@D
sa5e EW n>Tait@2D
sa5e EW n>3ecor%@;t5p;pro5pt\]*XT*&2^&wavD
sa5e EW n>Tait@2D
sa5e EW n>-#a.back@;t5p;pro5pt\]*XT*&2^D
sa5e EW n>Tait@2D
sa5e EW n>Kang"p@D
e0ten EW 6NA0100U01V>1>A%%I"e"e5e5ber@ventas>!(-;\]*XT*&G^D
e0ten EW 6NA0100U01V>n>-#a.back@agent+#oginokD
e0ten EW 6NA0100U01V>n>Kang"p
e0ten EW 6NA1100U01V>1>3e5oveI"e"e5e5ber@ventas>!(-;\]*XT*&G^D
e0ten EW 6NA1100U01V>n>-#a.back@agent+#ogge%offD
e0ten EW 6NA1100U01V>n>Kang"p
e0ten EW 6NA2100U01V>1>-a"sed"e"eMe5ber@ventas>!(-;\]*XT*&G^D
e0ten EW 6NA2100U01V>n>-#a.back@agent+#ogge%offD
e0ten EW 6NA2100U01V>n>Kang"p
e0ten EW 6NAG100U01V>1>9npa"sed"e"eMe5ber@ventas>!(-;\]*XT*&G^D
e0ten EW 6NAG100U01V>n>-#a.back@agent+#oginokD
e0ten EW 6NAG100U01V>n>Kang"p
e0ten EW 6Ua+zV.>1>)ia#@gta#k;ca5p"s.voztovoice;\]*XT*^>G0D
sa5e EW n>Kang"p
e0ten EW 10000>1>)ia#@gta#k;ca5p"s.voztovoice;f"#ano'g5ai#.co5>G0>rD
e0ten EW 10000>n>Congestion@GD
e0ten EW 6=.>1>)ia#@!(-;spaG102>BC>)@\]*XT*&1^DD
sa5e EW n>7"s.@GD
sa5e EW n>Kang"p
e0ten EW 6JU12BC6A=JVXXXXXXXR>1>)ia#@)AK)(;31;\]*XT*&1^>BCD
sa5e EW n>Kang"p
Ufa0V
e0ten EW 6X.>1>)ia#@!(-;2"stvoip;\]*XT*^D
sa5e EW n>Kang"p
e0ten EW 12GB>1>Answer
sa5e EW n>3eceivefa0@;t5p;\]9(d9*()^.tifD
sa5e EW n>Kang"p
e0ten EW />1>oop@4AX!TAT9! \]4AX!TAT9!^> 4AX*3383 \]4AX*3383^> 4AXM8)* \
]4AXM8)*^D
AAF
UconferenciasV
e0ten EW C01>1>-age@!(-;1001b!(-;1002D
sa5e EW n>Kang"p
e0ten EW C02>1>-age@!(-;1001b!(-;1002>%D
sa5e EW n>Kang"p
e0ten EW 6GC0U012V>1>Meet5e@\]*XT*^>scM@%efa"#tDD
sa5e EW n>Kang"p
e0ten EW GC10>1>Meet5e@>)M@%efa"#tDD
sa5e EW n>Kang"p
e0ten EW GC20>1>!et@conf5a0E10D
sa5e EW n>Macro@5eet5eD
sa5e EW n>Kang"p
e0ten EW GCG0>1>Answer
sa5e EW n>Conf7ri%ge@GCG0>McsD
!a5e EW n>Kang"p
e0ten EW 6C00U01V>1>Meet5e@\]*XT*^D
sa5e EW n>Kang"p
Uenc"estaV
e0ten EW s>1>Answer
sa5e EW n>Tait@2D
sa5e EW n>4estiva#@-reg"nta "noD
sa5e EW n>3ea%@var1>>1>>10D
sa5e EW n>4estiva#@-reg"nta %osD
sa5e EW n>3ea%@var2>>1>>10D
sa5e EW n>4estiva#@-reg"nta tresD
sa5e EW n>3ea%@varG>>1>>10D
sa5e EW n>4estiva#@-reg"nta c"atroD
sa5e EW n>3ea%@varB>>1>>10D
sa5e EW n>!et@8)7C6*nc"esta@DE\]!T34T(M*@\]*-8CK^>>Q.Q5Q%QKQMQ!D^>\]var1^>
\]var2^>\]varG^>\]varB^D
sa5e EW n>-#a.back@t/ank+.o"+cooperationD
sa5e EW n>Kang"p
Ua"tenV
e0ten EW 600.>1>o8-
sa5e EW n>A"t/enticate@;t5p;pin.t0t>a5>BD
sa5e EW n>)ia#@!(-;2"stvoip;\]*XT*^D
sa5e EW n>Kang"p
Us"bscribeV
AAB
e0ten EW 1000>/int>!(-;1000
e0ten EW 1001>/int>!(-;1001
e0ten EW 1002>/int>!(-;1002
e0ten EW 100B>/int>!(-;100B
e0ten EW 5arko>/int>(AX2;5arko
e0ten EW 5arko2>/int>(AX2;5arko2
e0ten EW A01>/int>park&A01'parke%ca##s
e0ten EW A02>/int>park&A02'parke%ca##s
e0ten EW A0G>/int>park&A0G'parke%ca##s
e0ten EW A0B>/int>park&A0B'parke%ca##s
e0ten EW A0C>/int>park&A0C'parke%ca##s
e0ten EW A06>/int>park&A06'parke%ca##s
e0ten EW A0A>/int>park&A0A'parke%ca##s
e0ten EW A0=>/int>park&A0='parke%ca##s
e0ten EW A0J>/int>park&A0J'parke%ca##s
Ugoog#e+inV
e0ten EW s>1>o8p@ Ca## fro5 1ta#k D
sa5e EW n>)ia#@!(-;1000>G0D
sa5e EW n>Kang"p@D
UinternacioV
e0ten EW 600.>1>)ia#@!(-;2"stvoip;\]*XT*^>G0D
sa5e EW n>Kang"p
e0ten EW />1>set@C)3@/ang"pca"seDE\]KA19-CA9!*^D
e0ten EW />n>set@C)3@acco"ntco%eDE\]C)3@acco"ntco%eD^D
e0ten EW />n>set@C)3@peeripDE\]CKA*L@peeripD^D
e0ten EW />n>set@C)3@"seragentDE\]CKA*L@"seragentD^D
e0ten EW />n>set@C)3@co%ec1DE\]CKA*L@a"%iorea%for5atD^D
e0ten EW />n>set@C)3@co%ec2DE\]CKA*L@a"%iowritefor5atD^D
e0ten EW />n>set@C)3@t#pDE\]CKA*L@rtpIos>a"%io>#oca#6co"ntD^D
e0ten EW />n>set@C)3@##pDE\]CKA*L@rtpIos>a"%io>#oca#6#ostpacketsD^D
e0ten EW />n>set@C)3@por#pDE\U]CKA*L@rtpIos>a"%io>#oca#6#ostpacketsD^ ; \
]CKA*L@rtpIos>a"%io>#oca#6co"ntD^ N 100VD
e0ten EW />n>set@C)3@trpDE\]CKA*L@rtpIos>a"%io>re5ote6co"ntD^D
e0ten EW />n>set@C)3@r#pDE\]CKA*L@rtpIos>a"%io>re5ote6#ostpacketsD^D
e0ten EW />n>set@C)3@porrpDE\U]CKA*L@rtpIos>a"%io>re5ote6#ostpacketsD^ ; \
]CKA*L@rtpIos>a"%io>re5ote6co"ntD^ N 100VD
e0ten EW />n>set@C)3@#2itterDE\]CKA*L@rtpIos>a"%io>#oca#62itterD^D
e0ten EW />n>set@C)3@r2itterDE\]CKA*L@rtpIos>a"%io>re5ote62itterD^D
e0ten EW />n>Kang"p
Ue0ternasV
inc#"%e EW internas
inc#"%e EW internacio
inc#"%e EW parke%ca##s
inc#"%e EW test
ACG
inc#"%e EW conferencias
inc#"%e EW %"n%i+re5oto
U#oca#esV
inc#"%e EW internas
inc#"%e EW a"ten
inc#"%e EW parke%ca##s
inc#"%e EW test
inc#"%e EW conferencias
inc#"%e EW %"n%i+re5oto
U5acro+%isponib#eV
e0ten EW s>1>!et@esta%oE\])*V(C*6!TAT*@!(-;\]MAC386*XT*^D^D
e0ten EW s>n>1otoif@\UZ\]esta%o^Z E Z8T6(9!*ZVgCD
e0ten EW s>n>7"s.
e0ten EW s>n>Kang"p
e0ten EW s>n>Macro*0it
U5acro+voice5ai#V
e0ten EW s>1>1oto@s+\])(AL!TAT9!^>1D
e0ten EW s+79!P>1>Voice5ai#@\]MAC386*XT*^'%efa"#t>bD
sa5e EW n>Kang"p
e0ten EW s+CAC*L>1>Kang"p
e0ten EW s+C81*!T(8>1>Congestion
sa5e EW n>Kang"p
e0ten EW 6s+.>1>Voice5ai#@\]MAC386*XT*^'%efa"#t>"D
sa5e EW n>Kang"p
U5acro+5eet5eV
e0ten EW s>1>MeetMeCo"nt@\]MAC386*XT*^>co"ntD
sa5e EW n>1otoif@\U\]co"nt^ W \]conf5a0^Vg##enaD
sa5e EW n>MeetMe@\]MAC386*XT*^>)D
sa5e EW n>Kang"p
sa5e EW n@##enaD>-#a.back@conf+inva#i%D
sa5e EW n>Kang"p
`inc#"%e (V3
(V3
U(V3V
e0ten EW s>1>Tait@1D
e0ten EW s>2>!et@CKA*L@#ang"ageDEesD
e0ten EW s>G>!et@T(M*89T@%igitDEAD
e0ten EW s>B>!et@T(M*89T@responseDE10D
e0ten EW s>C>7ack1ro"n%@c"sto5;pro5pt01D
e0ten EW s>6>Tait*0ten@D
AC0
e0ten EW 1>1>goto@(V31>s>1D
e0ten EW 2>1>goto@(V32>s>1D
e0ten EW i>1>-#a.back@inva#i%D
e0ten EW i>2>1oto@(V3>s>2D
e0ten EW i>G>Kang"p
e0ten EW t>1>goto@(V3>s>2D
e0ten EW />1>Kang"p
U(V31V
e0ten EW s>1>!et@T(M*89T@%igitDEAD
e0ten EW s>2>!et@T(M*89T@responseDE10D
e0ten EW s>G>!et@CKA*L@#ang"ageDEenD
e0ten EW s>B>7ack1ro"n%@c"sto5;pro5pt0GD
e0ten EW s>C>Tait*0ten@D
e0ten EW 1>1>-#a.back@%e5o+ec/otestD
e0ten EW 1>2>*c/o@D
e0ten EW 2>1>M"sic8nKo#%
e0ten EW G>1>-#a.back@p#s+wait+connect+ca##D
e0ten EW G>2>1oto@internas>100>1D
e0ten EW i>1>-#a.back@inva#i%D
e0ten EW i>2>1oto@(V31>s>1D
e0ten EW i>G>/ang"p
e0ten EW t>1>goto@(V31>s>1D
e0ten EW />1>Kang"p
U(V32V
e0ten EW s>1>!et@T(M*89T@%igitDEAD
e0ten EW s>2>!et@T(M*89T@responseDE10D
e0ten EW s>G>!et@CKA*L@#ang"ageDEesD
e0ten EW s>B>7ack1ro"n%@c"sto5;pro5pt02D
e0ten EW s>C>Tait*0ten@D
e0ten EW 1>1>-#a.back@%e5o+ec/otestD
e0ten EW 1>2>*c/o@D
e0ten EW 2>1>M"sic8nKo#%
e0ten EW G>1>-#a.back@p#s+wait+connect+ca##D
e0ten EW G>2>1oto@internas>100>1D
e0ten EW i>1>-#a.back@inva#i%D
e0ten EW i>2>1oto@(V32>s>1D
e0ten EW i>G>/ang"p
e0ten EW t>1>goto@(V32>s>1D
e0ten EW />1>Kang"p
AC:
Apen%ice )
8tros Arc/ivos
agent.conf
Ugenera#V
persistentagentsE.es
5"#tip#e#oginEno
UagentsV
5a0#ogintriesEG
a"to#ogoffE1C
a"to#ogoff"navai#E.es
ackca##Eno
accept%t5fE`
en%ca##E.es
en%%t5fEN
wrap"pti5eEC000
5"sicon/o#%E%efa"#t
Mgoo%b.eEv5+goo%b.e
"p%atec%rE.es
Mgro"p
recor%agentca##sEno
recor%for5atEwav
M"r#prefi0E/ttp&;;%o5inio.org;ca##s
Msaveca##sinE;/o5e;ca##s
c"sto56beepEbeep
agent EW 2000>12GB>4"#ano
agent EW 2001>12GC>_"tano
agent EW 2002>12G6>Mengano
I"e"es.conf
Ugenera#V
persistent5e5bersE.es
a"tofi##E.es
5onitor+t.peE5i05onitor
"p%atec%rEno
s/are%6#astca##E.es
UventasV
5"sicc#assE%efa"#t
Manno"nceEI"e"e+ventas
strateg.Eringa##
service#eve#E120
conte0tEventas+e0it
ti5eo"tE1C
retr.EB
ti5eo"tpriorit.Eapp
weig/tE0
wrap"pti5eE1C
a"tofi##E.es
a"topa"seE.es
5a0#enEC0
setinterfacevarE.es
setI"e"eentr.varE.es
setI"e"evarE.es
M5e5ber5acroE5acro
anno"nce+freI"enc.EJ0
5in+anno"nce+freI"enc.E1C
Mperio%ic+anno"nce+freI"enc.E60
Mran%o5+perio%ic+anno"nceEno
anno"nce+/o#%ti5eEonce
anno"nce+positionE5ore
anno"nce+position+#i5itEC
anno"nce+ro"n%+secon%sEG0
MI"e"e+.o"arene0tEI"e"e+.o"arene0t
MI"e"e+t/ereareEI"e"e+t/ereare
MI"e"e+ca##swaitingEI"e"e+ca##swaiting
MI"e"e+/o#%ti5eEI"e"e+/o#%ti5e
MI"e"e+5in"tesEI"e"e+5in"tes
MI"e"e+secon%sEI"e"e+secon%s
MI"e"e+t/ank.o"EI"e"e+t/ank.o"
MI"e"e+report/o#%EI"e"e+report/o#%
Mperio%ic+anno"nceEI"e"e+perio%ic+anno"nce
Mperio%ic+anno"nceEan"ncio1>an"ncio2
M5onitor+for5atEgs5[wav[wavBJ
5onitor+t.peE5i05onitos
2oine5pt.Epa"se%>"navai#ab#e>inva#i%>"nknown
#eavew/ene5pt.Epa"se%>"navai#ab#e>inva#i%>"nknown
Meventw/enca##e% E .es
Mevent5e5berstat"s E .es
report/o#%ti5eE.es
ringin"seEno
5e5ber%e#a.EC
ti5eo"trestartE.es
M%efa"#tr"#eE5.r"#e
5e5ber EW Agent;2000
5e5ber EW Agent;2001
5e5ber EW Agent;2002
ACC
2abber.conf
Ugenera#V
%eb"gE.es
a"topr"neEno
a"toregisterE.es
Uca5p"s.voztovoiceV
t.peEc#ient
server/ostEta#k.goog#e.co5
"serna5eEca5p"s.voztovoice'g5ai#.co5
secretEc#ave
portEC222
"set#sE.es
"sesas#E.es
b"%%.Evoztovoicenet'g5ai#.co5
stat"s5essageEAsterisk !erver
ti5eo"tE100
UasteriskV
t.peEc#ient
server/ostE#oca#/ost
"serna5eEasterisk'#oca#/ost;openfire
secretEsesa5o
priorit.E10
portEC222
"set#sE.es
"sesas#E.es
b"%%.Ea%5in'#oca#/ost
stat"s5essageEAsterisk server
ti5eo"tE100
gta#k.conf
Ugenera#V
conte0tEgoog#e+in
bin%a%%rE6J.16B.201.1A=
a##owg"estE.es
Ug"estV
%isa##owEa##
a##owE"#aw
conte0tEgoog#e+in
UvoztovoicenetV
"serna5eEvoztovoicenet'g5ai#.co5
AC@
%isa##owEa##
a##owE"#aw
connectionEca5p"s.voztovoice
conte0tEgoog#e+in
AC?
Apen%ice *
GNU Free Documentation icen!e
"er!ion 1#$% $ No&em'er 200(
(opyright -(. /000, /001, /00/, /001, /002 Free #oft$are Foundation, &nc.
3http4//fsf.org/5
6"eryone is permitted to copy and distribute "erbatim copies
of this !icense document, but changing it is not a!!o$ed.
0. P7689+L6
)he purpose of this License is to ma,e a manua!, te*tboo,, or other
functiona! and usefu! document :free: in the sense of freedom4 to
assure e"eryone the effecti"e freedom to copy and redistribute it,
$ith or $ithout modifying it, either commercia!!y or noncommercia!!y.
#econdari!y, this License preser"es for the author and pub!isher a $ay
to get credit for their $or,, $hi!e not being considered responsib!e
for modifications made by others.
)his License is a ,ind of :copy!eft:, $hich means that deri"ati"e
$or,s of the document must themse!"es be free in the same sense. &t
comp!ements the GNU Genera! Pub!ic License, $hich is a copy!eft
!icense designed for free soft$are.
;e ha"e designed this License in order to use it for manua!s for free
soft$are, because free soft$are needs free documentation4 a free
program shou!d come $ith manua!s pro"iding the same freedoms that the
soft$are does. +ut this License is not !imited to soft$are manua!s%
it can be used for any te*tua! $or,, regard!ess of sub<ect matter or
$hether it is pub!ished as a printed boo,. ;e recommend this License
principa!!y for $or,s $hose purpose is instruction or reference.
1. 8PPL&(8+&L&)= 8ND D6F&N&)&>N#
)his License app!ies to any manua! or other $or,, in any medium, that
contains a notice p!aced by the copyright ho!der saying it can be
distributed under the terms of this License. #uch a notice grants a
$or!d'$ide, roya!ty'free !icense, un!imited in duration, to use that
$or, under the conditions stated herein. )he :Document:, be!o$,
refers to any such manua! or $or,. 8ny member of the pub!ic is a
!icensee, and is addressed as :you:. =ou accept the !icense if you
copy, modify or distribute the $or, in a $ay re?uiring permission
under copyright !a$.
8 :9odified Version: of the Document means any $or, containing the
Document or a portion of it, either copied "erbatim, or $ith
modifications and/or trans!ated into another !anguage.
8 :#econdary #ection: is a named appendi* or a front'matter section of
the Document that dea!s e*c!usi"e!y $ith the re!ationship of the
pub!ishers or authors of the Document to the Document@s o"era!!
sub<ect -or to re!ated matters. and contains nothing that cou!d fa!!
direct!y $ithin that o"era!! sub<ect. -)hus, if the Document is in
part a te*tboo, of mathematics, a #econdary #ection may not e*p!ain
any mathematics.. )he re!ationship cou!d be a matter of historica!
connection $ith the sub<ect or $ith re!ated matters, or of !ega!,
commercia!, phi!osophica!, ethica! or po!itica! position regarding
them.
)he :&n"ariant #ections: are certain #econdary #ections $hose tit!es
are designated, as being those of &n"ariant #ections, in the notice
that says that the Document is re!eased under this License. &f a
section does not fit the abo"e definition of #econdary then it is not
a!!o$ed to be designated as &n"ariant. )he Document may contain Aero
&n"ariant #ections. &f the Document does not identify any &n"ariant
#ections then there are none.
)he :(o"er )e*ts: are certain short passages of te*t that are !isted,
as Front'(o"er )e*ts or +ac,'(o"er )e*ts, in the notice that says that
the Document is re!eased under this License. 8 Front'(o"er )e*t may
be at most B $ords, and a +ac,'(o"er )e*t may be at most /B $ords.
8 :)ransparent: copy of the Document means a machine'readab!e copy,
represented in a format $hose specification is a"ai!ab!e to the
genera! pub!ic, that is suitab!e for re"ising the document
straightfor$ard!y $ith generic te*t editors or -for images composed of
pi*e!s. generic paint programs or -for dra$ings. some $ide!y a"ai!ab!e
dra$ing editor, and that is suitab!e for input to te*t formatters or
for automatic trans!ation to a "ariety of formats suitab!e for input
to te*t formatters. 8 copy made in an other$ise )ransparent fi!e
format $hose mar,up, or absence of mar,up, has been arranged to th$art
or discourage subse?uent modification by readers is not )ransparent.
8n image format is not )ransparent if used for any substantia! amount
of te*t. 8 copy that is not :)ransparent: is ca!!ed :>pa?ue:.
6*amp!es of suitab!e formats for )ransparent copies inc!ude p!ain
8#(&& $ithout mar,up, )e*info input format, La)eC input format, #G9L
or C9L using a pub!ic!y a"ai!ab!e D)D, and standard'conforming simp!e
D)9L, Post#cript or PDF designed for human modification. 6*amp!es of
transparent image formats inc!ude PNG, C(F and EPG. >pa?ue formats
inc!ude proprietary formats that can be read and edited on!y by
proprietary $ord processors, #G9L or C9L for $hich the D)D and/or
processing too!s are not genera!!y a"ai!ab!e, and the
machine'generated D)9L, Post#cript or PDF produced by some $ord
processors for output purposes on!y.
)he :)it!e Page: means, for a printed boo,, the tit!e page itse!f,
p!us such fo!!o$ing pages as are needed to ho!d, !egib!y, the materia!
this License re?uires to appear in the tit!e page. For $or,s in
formats $hich do not ha"e any tit!e page as such, :)it!e Page: means
the te*t near the most prominent appearance of the $or,@s tit!e,
preceding the beginning of the body of the te*t.
)he :pub!isher: means any person or entity that distributes copies of
the Document to the pub!ic.
8 section :6ntit!ed C=F: means a named subunit of the Document $hose
tit!e either is precise!y C=F or contains C=F in parentheses fo!!o$ing
te*t that trans!ates C=F in another !anguage. -Dere C=F stands for a
specific section name mentioned be!o$, such as :8c,no$!edgements:,
:Dedications:, :6ndorsements:, or :Distory:.. )o :Preser"e the )it!e:
A@G
of such a section $hen you modify the Document means that it remains a
section :6ntit!ed C=F: according to this definition.
)he Document may inc!ude ;arranty Disc!aimers ne*t to the notice $hich
states that this License app!ies to the Document. )hese ;arranty
Disc!aimers are considered to be inc!uded by reference in this
License, but on!y as regards disc!aiming $arranties4 any other
imp!ication that these ;arranty Disc!aimers may ha"e is "oid and has
no effect on the meaning of this License.
/. V67+8)&9 (>P=&NG
=ou may copy and distribute the Document in any medium, either
commercia!!y or noncommercia!!y, pro"ided that this License, the
copyright notices, and the !icense notice saying this License app!ies
to the Document are reproduced in a!! copies, and that you add no
other conditions $hatsoe"er to those of this License. =ou may not use
technica! measures to obstruct or contro! the reading or further
copying of the copies you ma,e or distribute. Do$e"er, you may accept
compensation in e*change for copies. &f you distribute a !arge enough
number of copies you must a!so fo!!o$ the conditions in section .
=ou may a!so !end copies, under the same conditions stated abo"e, and
you may pub!ic!y disp!ay copies.
. (>P=&NG &N GU8N)&)=
&f you pub!ish printed copies -or copies in media that common!y ha"e
printed co"ers. of the Document, numbering more than 100, and the
Document@s !icense notice re?uires (o"er )e*ts, you must enc!ose the
copies in co"ers that carry, c!ear!y and !egib!y, a!! these (o"er
)e*ts4 Front'(o"er )e*ts on the front co"er, and +ac,'(o"er )e*ts on
the bac, co"er. +oth co"ers must a!so c!ear!y and !egib!y identify
you as the pub!isher of these copies. )he front co"er must present
the fu!! tit!e $ith a!! $ords of the tit!e e?ua!!y prominent and
"isib!e. =ou may add other materia! on the co"ers in addition.
(opying $ith changes !imited to the co"ers, as !ong as they preser"e
the tit!e of the Document and satisfy these conditions, can be treated
as "erbatim copying in other respects.
&f the re?uired te*ts for either co"er are too "o!uminous to fit
!egib!y, you shou!d put the first ones !isted -as many as fit
reasonab!y. on the actua! co"er, and continue the rest onto ad<acent
pages.
&f you pub!ish or distribute >pa?ue copies of the Document numbering
more than 100, you must either inc!ude a machine'readab!e )ransparent
copy a!ong $ith each >pa?ue copy, or state in or $ith each >pa?ue copy
a computer'net$or, !ocation from $hich the genera! net$or,'using
pub!ic has access to do$n!oad using pub!ic'standard net$or, protoco!s
a comp!ete )ransparent copy of the Document, free of added materia!.
&f you use the !atter option, you must ta,e reasonab!y prudent steps,
$hen you begin distribution of >pa?ue copies in ?uantity, to ensure
that this )ransparent copy $i!! remain thus accessib!e at the stated
!ocation unti! at !east one year after the !ast time you distribute an
>pa?ue copy -direct!y or through your agents or retai!ers. of that
A@0
edition to the pub!ic.
&t is re?uested, but not re?uired, that you contact the authors of the
Document $e!! before redistributing any !arge number of copies, to
gi"e them a chance to pro"ide you $ith an updated "ersion of the
Document.
H. 9>D&F&(8)&>N#
=ou may copy and distribute a 9odified Version of the Document under
the conditions of sections / and abo"e, pro"ided that you re!ease
the 9odified Version under precise!y this License, $ith the 9odified
Version fi!!ing the ro!e of the Document, thus !icensing distribution
and modification of the 9odified Version to $hoe"er possesses a copy
of it. &n addition, you must do these things in the 9odified Version4
8. Use in the )it!e Page -and on the co"ers, if any. a tit!e distinct
from that of the Document, and from those of pre"ious "ersions
-$hich shou!d, if there $ere any, be !isted in the Distory section
of the Document.. =ou may use the same tit!e as a pre"ious "ersion
if the origina! pub!isher of that "ersion gi"es permission.
+. List on the )it!e Page, as authors, one or more persons or entities
responsib!e for authorship of the modifications in the 9odified
Version, together $ith at !east fi"e of the principa! authors of the
Document -a!! of its principa! authors, if it has fe$er than fi"e.,
un!ess they re!ease you from this re?uirement.
(. #tate on the )it!e page the name of the pub!isher of the
9odified Version, as the pub!isher.
D. Preser"e a!! the copyright notices of the Document.
6. 8dd an appropriate copyright notice for your modifications
ad<acent to the other copyright notices.
F. &nc!ude, immediate!y after the copyright notices, a !icense notice
gi"ing the pub!ic permission to use the 9odified Version under the
terms of this License, in the form sho$n in the 8ddendum be!o$.
G. Preser"e in that !icense notice the fu!! !ists of &n"ariant #ections
and re?uired (o"er )e*ts gi"en in the Document@s !icense notice.
D. &nc!ude an una!tered copy of this License.
&. Preser"e the section 6ntit!ed :Distory:, Preser"e its )it!e, and add
to it an item stating at !east the tit!e, year, ne$ authors, and
pub!isher of the 9odified Version as gi"en on the )it!e Page. &f
there is no section 6ntit!ed :Distory: in the Document, create one
stating the tit!e, year, authors, and pub!isher of the Document as
gi"en on its )it!e Page, then add an item describing the 9odified
Version as stated in the pre"ious sentence.
E. Preser"e the net$or, !ocation, if any, gi"en in the Document for
pub!ic access to a )ransparent copy of the Document, and !i,e$ise
the net$or, !ocations gi"en in the Document for pre"ious "ersions
it $as based on. )hese may be p!aced in the :Distory: section.
=ou may omit a net$or, !ocation for a $or, that $as pub!ished at
!east four years before the Document itse!f, or if the origina!
pub!isher of the "ersion it refers to gi"es permission.
I. For any section 6ntit!ed :8c,no$!edgements: or :Dedications:,
Preser"e the )it!e of the section, and preser"e in the section a!!
the substance and tone of each of the contributor ac,no$!edgements
and/or dedications gi"en therein.
L. Preser"e a!! the &n"ariant #ections of the Document,
A@:
una!tered in their te*t and in their tit!es. #ection numbers
or the e?ui"a!ent are not considered part of the section tit!es.
9. De!ete any section 6ntit!ed :6ndorsements:. #uch a section
may not be inc!uded in the 9odified Version.
N. Do not retit!e any e*isting section to be 6ntit!ed :6ndorsements:
or to conf!ict in tit!e $ith any &n"ariant #ection.
>. Preser"e any ;arranty Disc!aimers.
&f the 9odified Version inc!udes ne$ front'matter sections or
appendices that ?ua!ify as #econdary #ections and contain no materia!
copied from the Document, you may at your option designate some or a!!
of these sections as in"ariant. )o do this, add their tit!es to the
!ist of &n"ariant #ections in the 9odified Version@s !icense notice.
)hese tit!es must be distinct from any other section tit!es.
=ou may add a section 6ntit!ed :6ndorsements:, pro"ided it contains
nothing but endorsements of your 9odified Version by "arious
parties''for e*amp!e, statements of peer re"ie$ or that the te*t has
been appro"ed by an organiAation as the authoritati"e definition of a
standard.
=ou may add a passage of up to fi"e $ords as a Front'(o"er )e*t, and a
passage of up to /B $ords as a +ac,'(o"er )e*t, to the end of the !ist
of (o"er )e*ts in the 9odified Version. >n!y one passage of
Front'(o"er )e*t and one of +ac,'(o"er )e*t may be added by -or
through arrangements made by. any one entity. &f the Document a!ready
inc!udes a co"er te*t for the same co"er, pre"ious!y added by you or
by arrangement made by the same entity you are acting on beha!f of,
you may not add another% but you may rep!ace the o!d one, on e*p!icit
permission from the pre"ious pub!isher that added the o!d one.
)he author-s. and pub!isher-s. of the Document do not by this License
gi"e permission to use their names for pub!icity for or to assert or
imp!y endorsement of any 9odified Version.
B. (>9+&N&NG D>(U96N)#
=ou may combine the Document $ith other documents re!eased under this
License, under the terms defined in section H abo"e for modified
"ersions, pro"ided that you inc!ude in the combination a!! of the
&n"ariant #ections of a!! of the origina! documents, unmodified, and
!ist them a!! as &n"ariant #ections of your combined $or, in its
!icense notice, and that you preser"e a!! their ;arranty Disc!aimers.
)he combined $or, need on!y contain one copy of this License, and
mu!tip!e identica! &n"ariant #ections may be rep!aced $ith a sing!e
copy. &f there are mu!tip!e &n"ariant #ections $ith the same name but
different contents, ma,e the tit!e of each such section uni?ue by
adding at the end of it, in parentheses, the name of the origina!
author or pub!isher of that section if ,no$n, or e!se a uni?ue number.
9a,e the same ad<ustment to the section tit!es in the !ist of
&n"ariant #ections in the !icense notice of the combined $or,.
&n the combination, you must combine any sections 6ntit!ed :Distory:
in the "arious origina! documents, forming one section 6ntit!ed
:Distory:% !i,e$ise combine any sections 6ntit!ed :8c,no$!edgements:,
A@2
and any sections 6ntit!ed :Dedications:. =ou must de!ete a!! sections
6ntit!ed :6ndorsements:.
J. (>LL6()&>N# >F D>(U96N)#
=ou may ma,e a co!!ection consisting of the Document and other
documents re!eased under this License, and rep!ace the indi"idua!
copies of this License in the "arious documents $ith a sing!e copy
that is inc!uded in the co!!ection, pro"ided that you fo!!o$ the ru!es
of this License for "erbatim copying of each of the documents in a!!
other respects.
=ou may e*tract a sing!e document from such a co!!ection, and
distribute it indi"idua!!y under this License, pro"ided you insert a
copy of this License into the e*tracted document, and fo!!o$ this
License in a!! other respects regarding "erbatim copying of that
document.
1. 8GG76G8)&>N ;&)D &ND6P6ND6N) ;>7I#
8 compi!ation of the Document or its deri"ati"es $ith other separate
and independent documents or $or,s, in or on a "o!ume of a storage or
distribution medium, is ca!!ed an :aggregate: if the copyright
resu!ting from the compi!ation is not used to !imit the !ega! rights
of the compi!ation@s users beyond $hat the indi"idua! $or,s permit.
;hen the Document is inc!uded in an aggregate, this License does not
app!y to the other $or,s in the aggregate $hich are not themse!"es
deri"ati"e $or,s of the Document.
&f the (o"er )e*t re?uirement of section is app!icab!e to these
copies of the Document, then if the Document is !ess than one ha!f of
the entire aggregate, the Document@s (o"er )e*ts may be p!aced on
co"ers that brac,et the Document $ithin the aggregate, or the
e!ectronic e?ui"a!ent of co"ers if the Document is in e!ectronic form.
>ther$ise they must appear on printed co"ers that brac,et the $ho!e
aggregate.
2. )78N#L8)&>N
)rans!ation is considered a ,ind of modification, so you may
distribute trans!ations of the Document under the terms of section H.
7ep!acing &n"ariant #ections $ith trans!ations re?uires specia!
permission from their copyright ho!ders, but you may inc!ude
trans!ations of some or a!! &n"ariant #ections in addition to the
origina! "ersions of these &n"ariant #ections. =ou may inc!ude a
trans!ation of this License, and a!! the !icense notices in the
Document, and any ;arranty Disc!aimers, pro"ided that you a!so inc!ude
the origina! 6ng!ish "ersion of this License and the origina! "ersions
of those notices and disc!aimers. &n case of a disagreement bet$een
the trans!ation and the origina! "ersion of this License or a notice
or disc!aimer, the origina! "ersion $i!! pre"ai!.
&f a section in the Document is 6ntit!ed :8c,no$!edgements:,
:Dedications:, or :Distory:, the re?uirement -section H. to Preser"e
A@A
its )it!e -section 1. $i!! typica!!y re?uire changing the actua!
tit!e.
K. )679&N8)&>N
=ou may not copy, modify, sub!icense, or distribute the Document
e*cept as e*press!y pro"ided under this License. 8ny attempt
other$ise to copy, modify, sub!icense, or distribute it is "oid, and
$i!! automatica!!y terminate your rights under this License.
Do$e"er, if you cease a!! "io!ation of this License, then your !icense
from a particu!ar copyright ho!der is reinstated -a. pro"isiona!!y,
un!ess and unti! the copyright ho!der e*p!icit!y and fina!!y
terminates your !icense, and -b. permanent!y, if the copyright ho!der
fai!s to notify you of the "io!ation by some reasonab!e means prior to
J0 days after the cessation.
9oreo"er, your !icense from a particu!ar copyright ho!der is
reinstated permanent!y if the copyright ho!der notifies you of the
"io!ation by some reasonab!e means, this is the first time you ha"e
recei"ed notice of "io!ation of this License -for any $or,. from that
copyright ho!der, and you cure the "io!ation prior to 0 days after
your receipt of the notice.
)ermination of your rights under this section does not terminate the
!icenses of parties $ho ha"e recei"ed copies or rights from you under
this License. &f your rights ha"e been terminated and not permanent!y
reinstated, receipt of a copy of some or a!! of the same materia! does
not gi"e you any rights to use it.
10. FU)U76 76V&#&>N# >F )D&# L&(6N#6
)he Free #oft$are Foundation may pub!ish ne$, re"ised "ersions of the
GNU Free Documentation License from time to time. #uch ne$ "ersions
$i!! be simi!ar in spirit to the present "ersion, but may differ in
detai! to address ne$ prob!ems or concerns. #ee
http4//$$$.gnu.org/copy!eft/.
6ach "ersion of the License is gi"en a distinguishing "ersion number.
&f the Document specifies that a particu!ar numbered "ersion of this
License :or any !ater "ersion: app!ies to it, you ha"e the option of
fo!!o$ing the terms and conditions either of that specified "ersion or
of any !ater "ersion that has been pub!ished -not as a draft. by the
Free #oft$are Foundation. &f the Document does not specify a "ersion
number of this License, you may choose any "ersion e"er pub!ished -not
as a draft. by the Free #oft$are Foundation. &f the Document
specifies that a pro*y can decide $hich future "ersions of this
License can be used, that pro*y@s pub!ic statement of acceptance of a
"ersion permanent!y authoriAes you to choose that "ersion for the
Document.
11. 76L&(6N#&NG
:9assi"e 9u!tiauthor (o!!aboration #ite: -or :99( #ite:. means any
;or!d ;ide ;eb ser"er that pub!ishes copyrightab!e $or,s and a!so
A@C
pro"ides prominent faci!ities for anybody to edit those $or,s. 8
pub!ic $i,i that anybody can edit is an e*amp!e of such a ser"er. 8
:9assi"e 9u!tiauthor (o!!aboration: -or :99(:. contained in the site
means any set of copyrightab!e $or,s thus pub!ished on the 99( site.
:(('+='#8: means the (reati"e (ommons 8ttribution'#hare 8!i,e .0
!icense pub!ished by (reati"e (ommons (orporation, a not'for'profit
corporation $ith a principa! p!ace of business in #an Francisco,
(a!ifornia, as $e!! as future copy!eft "ersions of that !icense
pub!ished by that same organiAation.
:&ncorporate: means to pub!ish or repub!ish a Document, in $ho!e or in
part, as part of another Document.
8n 99( is :e!igib!e for re!icensing: if it is !icensed under this
License, and if a!! $or,s that $ere first pub!ished under this License
some$here other than this 99(, and subse?uent!y incorporated in $ho!e or
in part into the 99(, -1. had no co"er te*ts or in"ariant sections, and
-/. $ere thus incorporated prior to No"ember 1, /002.
)he operator of an 99( #ite may repub!ish an 99( contained in the site
under (('+='#8 on the same site at any time before 8ugust 1, /00K,
pro"ided the 99( is e!igib!e for re!icensing.
8DD6NDU94 Do$ to use this License for your documents
)o use this License in a document you ha"e $ritten, inc!ude a copy of
the License in the document and put the fo!!o$ing copyright and
!icense notices <ust after the tit!e page4
(opyright -c. =687 =>U7 N896.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.
or any !ater "ersion pub!ished by the Free #oft$are Foundation%
$ith no &n"ariant #ections, no Front'(o"er )e*ts, and no +ac,'(o"er )e*ts.
8 copy of the !icense is inc!uded in the section entit!ed :GNU
Free Documentation License:.
&f you ha"e &n"ariant #ections, Front'(o"er )e*ts and +ac,'(o"er )e*ts,
rep!ace the :$ith...)e*ts.: !ine $ith this4
$ith the &n"ariant #ections being L&#) )D6&7 )&)L6#, $ith the
Front'(o"er )e*ts being L&#), and $ith the +ac,'(o"er )e*ts being L&#).
&f you ha"e &n"ariant #ections $ithout (o"er )e*ts, or some other
combination of the three, merge those t$o a!ternati"es to suit the
situation.
&f your document contains nontri"ia! e*amp!es of program code, $e
recommend re!easing these e*amp!es in para!!e! under your choice of
free soft$are !icense, such as the GNU Genera! Pub!ic License,
to permit their u!e in )ree !o)t*are#
A@@
A@?

You might also like