Vous êtes sur la page 1sur 646

Asterisk 1.8.X v. 1.

2
Las comunicaciones del presente
CentOS 6.4
Asterisk 1.8.20.1
Marzo 2013
By VozToVoice
www.voztovoice.org
Convenciones tiogr!"icas.
#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 enviados
!LI" indica que se est# traba$ando en la consola de %steris&
mysql" indica que se est# traba$ando en la consola del cliente 'y()L
Si enc$entran a%g$na incorrecci&n o errata $e'en escri(ir a% a$tor)
%i(ro*voztovoice.org
i
*ste documento se publica ba$o la +,- .ree /ocumentation License0 versin 123 o sucesivas0
publicadas por la .ree (oft4are .oundation2 *st# permitido copiar0 distribuir y/o modificar este
documento ba$o los t5rminos indicados en la licencia2 -na copia integral de la licencia es presente en la
ap5ndice 6 de este libro2
Copyright (C) 2012-2016 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%
with no Invariant Sections, no Front-Cover e!ts, and no "ac#-Cover e!ts$
ii
+#,+C-
Cait$%o + . +nsta%aci&n 'e Asterisk 7222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 1
121 8reparacin del 98( Linode 1
12: ((6 y clave ;(% <
12:21 !lave ;(% en =indo4s <
12:2: !lave ;(% en Linux 1>
12:23 !onfiguracin servidor ((6 1:
123 -tilidades0 libreras0 dependencias 1?
12@ /%6/I 1A
12? Lib8;I :>
12B ;esCfax0 +oogleDal&0 Libi!%L y (;D8 :1
12< Instalacin de %steris& :<
Cait$%o ++ . Con"ig$raci&n inicia% 'e Asterisk 2222222222222222222222222222222222222222222222222222222222222222222222222 3B
:21 Instalar y configurar un cortafuego 3B
:2: !arpetas y archivos 3E
:23 asteris&2conf @1
:2@ modules2conf @3
:2? 'Fsica en espera y '83 @?
:2B *l comando asteris& @A
:2< 8reparacin del dialplan G extensions2conf ?>
Cait$%o +++ / 0rotoco%o S+0 1 arc2ivo si.con"22222222222222222222222222222222222222222222222222222222222222222222222222 ?B
321 sip2conf ?A
32: /irectmedia <:
323 !ontraseas seguras <@
32@ ,grep <@
32? (oft8hone HILite y ;*+I(D*; <?
32B (oftphone 3!H A>
32< Llamadas entre extensiones A:
32A (I8 I,9ID* y !%,!*L A3
32E Los codecs AB
32E21 ,egociacin de codecs en %steris& AE
Cait$%o +V / 0rotoco%o +AX2 / ia3.con" 222222222222222222222222222222222222222222222222222222222222222222222222222222222 E3
@21 iax2conf E3
@2: (oftphone Joiper EA
iii
Cait$%o V . 4oog%eTa%k / gta%k.con" 5a((er.con"2222222222222222222222222222222222222222222222222222222222222222222 1>@
?21 $abber2conf y gtal&2conf 1>?
?2: +oogle 9oice 11:
?23 %plicacin Kabber(end 113
?2@ La funcin K%BB*;C;*!*I9* 11@
Cait$%o V+ . Asterisk 1 %a re' 0ST#2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 11<
B21 Dar$eta /igium D/'@1> con @ puertos .HL 11A
B2121 L(L*! 1::
B2: Dar$eta /igium D/'@1> con : puertos .H( 1:B
B23 Dar$eta /igium D*1:>8 1:A
B2@ =anpipe 133
B2? /%6/IC+*,!L,. 13?
B2B Lin&sys (8%31>: G +ate4ay .HL/.H( 13?
Cait$%o V++ . ,ia%%an / Con"ig$raci&n avanza'a222222222222222222222222222222222222222222222222222222222222222222 1@B
<21 Las 9ariables 1@B
<2: 8attern 'atching 1@E
<23 La aplicacin *cho 1?>
<2@ *l contexto (ubscribe 1?1
<2? Las 'acro 1??
<2B %utenticar las Llamadas (alientes con la aplicacin %uthenticate 1?A
<2< Limitar llamadas salientes: funciones +;L-8 y +;L-8C!L-,D 1B1
Cait$%o V+++ . +V6 722222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 1BE
A21 +rabacin de las locuciones 1BE
A2: !onfiguracin numero geogr#fico 1<1
A23 !reacin del I9; 1<:
A2@ I9; M!l#sicoN 1<B
A2? 6orario %pertura/!ierre 1<<
Cait$%o +X . 7$nciona%i'a'es avanza'as 'e Asterisk / "eat$res.con" 22222222222222222222222222222222222 1A3
E21 features2conf 1A3
E2: !allgroup y 8ic&upgroup 1E3
E23 %plicacin /ial y features2conf 1E?
E2@ Las aplicaciones 8ar& y 8ar&%nd%nnounce :>>
E2? La aplicacin .ollo4'e O(guemeP :>3
iv
Cait$%o X . Asterisk 1 %os ca%en'arios 72222222222222222222222222222222222222222222222222222222222222222222222222222222222 :11
1>21 calendar2conf :1:
1>2: !%L*,/%;CB-(Q :::
1>23 !%L*,/%;C*9*,D ::@
1>2@ !%L*,/%;C)-*;Q y !%L*,/%;C)-*;QC;*(-LD ::B
1>2? !%L*,/%;C=;ID* ::A
1>2B *nviar las notificaciones de los calendarios a nFmeros fi$os/celulares :33
Cait$%o X+ . CCSS 8Ca%% Co9%etion S$%e9entar1 S1ste9: / 6e%%a9a'a 72222222222222222222 :3B
1121 !onfiguracin del !!(( :3B
112: !!(( 1R 8rueba :3E
1123 !!(( :R 8rueba :@>
112@ !!(( 3R 8rueba :@1
Cait$%o X++ / Asterisk 6ea%ti9e22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 :@@
1:21 ;ealtime est#tico :@@
1:2: ;ealtime din#mico :?1
1:2:21 *xtensiones (I8 en ;ealtime :?1
1:2:2: *xtensiones I%H en ;ealtime :B>
1:2:23 /ialplan en ;ealtime din#mico :B@
Cait$%o X+++ / +V6 avanza'os / "$nc;o'(c.con" 22222222222 2222222222222222222222222222222222222222222222222222222 :BE
1321 *mpleados :BE
132: *ncuesta :<@
1323 Bolsa de minutos :<B
132@ !onsultas con respuestas mFltiples :<A
Cait$%o X+V . <$z&n 'e voz / voice9ai%.con"222222222222222222222222222222222222222222222222222222222222222222222222 :A:
1@21 voicemail2conf :A:
1@2: 'ensa$es de voS en una base de datos :E@
1@23 BuSones de voS en una base de datos :E<
Cait$%o XV . =as con"erencias a$'io 22222222222222222222222222222222222222222222222222222222222222222222222222222222222 3>1
1?21 meetme2conf 3>1
1?2: %plicacin !onfBridge 3>B
v
1?23 'eetme en ;ealtime /in#mico 3><
1?2@ %plicacin 8age 31>
Cait$%o XV+ . ,istri($ci&n a$to9!tica 'e %%a9a'as / Co%as 'e esera 7222222222222222222222222222 31@
1B21 Los agentes 31@
1B2: Las colas de espera G queue2conf 31A
1B23 %gentes din#micos 3:<
1B2@ *stadsticas de las colas 33>
1B2? !olas0 agentes y estadsticas en ;ealtime din#mico 333
1B2B La aplicacin !hanC(py 3@1
Cait$%o XV++ . Asterisk 1 %os 7AX 72222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 3@<
1<21 I%Hmodem 3@<
1<2: 6ylafax 3?1
1<23 8rotocolo D3A 3<:
1<2321 %plicacin ;eceive.ax 3<<
1<232: %pplicacin (end.ax 3<A
Cait$%o XV+++ . Cone3iones entre servi'ores Asterisk 72222222222222222222222222222222222222222222222222222222 3A3
1A21 !onectar dos servidores %steris& con el protocolo (I8 3A3
1A2: !onectar dos servidores %steris& con el protocolo I%H: 3A<
1A23 *l protocolo /-,/i 3AE
1A2@ !onectar dos servidores %steris& con Lpen98, @>>
1A2? !onectar dos (ervidores %steris& con DL( y (;D8 @1A
Cait$%o X+X / AM+ 1 A4+ 722222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 @:B
1E21 %'I O%steris& 'anager InterfaceP @:B
1E2: %+I O%steris& +ate4ay InterfaceP @3?
1E23 Las variantes %+I @@1
1E2321 *%+I @@1
1E232: .ast%+I @@:
1E2323 %sync %+I @@@
Cait$%o XX . =os registros en Asterisk 7222222222222222222222222222222222222222222222222222222222222222222222222222222222 @@E
:>21 !/; O!all /etail ;ecordP @@E
:>2121 cdr2conf @?1
:>212: cdrCmanager2conf @?@
vi
:>2123 !/; adaptive @??
:>2: !*L O!hannel *vent LoggingP @B>
:>23 Logger2conf @B<
:>2321 /ebug @<1
Cait$%o XX+ . Seg$ri'a' en Asterisk 722222222222222222222222222222222222222222222222222222222222222222222222222222222222 @<@
:121 ;eglas de oro @<@
:12: .ail:ban @<@
:123 Bloquear I8 por pases @<<
Cait$%o XX++ . Monitorear Asterisk 72222222222222222222222222222222222222222222222222222222222222222222222222222222222222@A@
::21 'onit @A@
::2: (,'8 @AE
::23 ,agios @E:
::2321 ,/Lutils ?>3
::232: 8,8@,%+IL( ?>?
::2@ 'onitoreo calidad llamadas ?1>
::2@21 'onitoreo calidad llamadas desde la consola de %steris& ?1>
::2@2: 'onitoreo calidad llamadas con 9oI8'onitor ?11
::2? !/;I(D%D( ?1?
Cait$%o XX+++ . Conectar $n So"t2one 8<%ink: 'e "or9a seg$ra) S+0 T=S 1 S6T0 7222222 ?:@
:321 !reacin de los certificados ?:@
:32: !onfiguracin (oftphone Blin& ?:A
Cait$%o XX+V . Oen"ire 1 Asteris& 72222222222222222222222222222222222222222222222222222222222222222222222222222222222222 ?33
:@21 Instalacin de Lpenfire ?33
:@2: Instalar el 8lugin (I88hone en Lpenfire ?@1
:@23 *l 8lugin %steris&II' ?@@
:@2@ %steris& como cliente en Lpenfire ?@A
:@2? !onectar dos servidores Lpenfire ??:
:@2B Lpenfire !onnection 'anager ??B
Cait$%o XXV . Asterisk 1 a%ta 'isoni(i%i'a' 2222222222222222222222222222222222222222222222222222222222222222222222222 ?B1
:?21 ;eplicacin 'y()L 'asterI(lave ?B1
:?2: ;eplicacin 'y()L 'asterI'aster ?B<
:?23 /;B/ I ;aid1 va D!8 ?<<
vii
:?2@ 6eartbeat ?A@
Cait$%o XXV+ . Asterisk 4>+ 7222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 ?E:
Cait$%o XXV++ / 7ree0<X 7222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 ?EA
A?n'ice A G Instalar !entL( B2@ en una maquina virtual con 9irtualBox B>B
A?n'ice < G Licencia +,- ./L B:<
viii
+ntro'$cci&n versi&n 1.0
/espu5s de unos cuantos meses de traba$o0 toma vida la primera versin del libro dedicado a la versin
12A2H de %steris& 8BH2 !omo siempre pasa con los manuales0 muchos dir#n que no se abordaron
algunos temas importantes0 otros que la parte descriptiva es muy sucinta2 La verdad0 todos tienen raSn2
Iba a aadir una cuantos p#rrafos m#s pero pens5 que poda de$arlo para MmaanaN2 Lo que si les puedo
decir es que en la prxima versin estar#n presentes estos termas:
%plicacin !hanCspy
%plicacin +otoIfDime Opara enrutar las llamadas entrantes segFn la fecha y la horaP
*l funcionamiento de la negociacin de los codec audio a lo largo de una llamada
(iempre he sido una persona muy parca con las palabras y la escritura2 ,o me gusta alargarme
demasiado cuando escribo y no me gusta que las palabras sobren2 8uede ser que en algunas partes del
libro me he pasado un poco aplicando esta regla0 pero para eso est#n las primera versiones de un
manual2 /e ellas se aprende para me$orarlas2
La que me gusta de este manual es que parte desde la instalacin del sistema operativo OLinux !entL(
B2:P y acompaa quien lo lee hacia la instalacin y configuracin de %steris& hasta armar una centralita
completamente lista para las funciones b#sicas e intermedias2 Dodo esto probando cada nueva
configuracin como si se estuviera traba$ando en un laboratorio de prueba2
)uiero darles las gracias a los vie$os y nuevos participantes a mis cursos a distancia que son los que me
animaron y me animan a escribir y me$orar este libro2 *s gracias a ellos que he ido aprendiendo cada
da m#s y que con sus preguntas me inspiran a la hora de escribir2
+ntro'$cci&n versi&n 1.2
*sta versin es una actualiSacin bastante consistente de la anterior2 .inalmente aqu encuentran los
temas que me haba propuesto incluir en el libro:
La aplicacin !han(py
La gestin de las llamadas entrantes segFn la fran$a horaria
La negociacin de los codec
%dem#s se han incluido nuevos temas como:
la aplicacin .ollo4'e O(guemeP
la programacin de la trasferencia de las llamadas
consultas en base de datos con resultados mFltiples2
*spero que lo disfruten2
ix
Cait$%o +
+nsta%aci&n 'e Asterisk
Asterisk es el programa Lpen (ource m#s reconocido para implementar una 8BH2 8ara una lista
completa de las funcionalidades brindadas0 visiten la p#gina de los desarrolladores2 *ntre ellas:
;egistro OLogP de llamadas
+rabacin de llamadas
/esvo de llamadas
Drasferencia de llamadas
!onferencias audio
'Fsica en espera
+estin de colas Ocall centerP
(oporte para tar$etas y +ate4ay .HL0 .H(0 digitales y celulares
I9;
BuSn de voS
*ste libro abarca la instalacin de %steris& en un 98( O(ervidor 9irtual 8rivadoP remoto y es valida
para cualquier (ervidor Linux !entL(2 !on el 98( remoto la venta$a es tener una 8BH siempre activa0
independiente de la banda ancha disponible en la casa/oficina y evita tener una computadora dedicada y
siempre encendida2 *n este caso0 considerando la relacin calidad/precio0 se ha optado por los 98( de
la empresa Linode2 8ara aquellos que quieran traba$ar con un servidor local0 en la ap5ndice % es
presente una gua para la instalacin de !entL( en 9irtualBox2
1.1 0rearaci&n 'e% V0S
Los 98( de Linode0 utiliSan como sistema de virtualiSacin Hen2 !omo la versin B2@ de !entL( ya
no incluye este sistema de virtualiSacin entre los paquetes disponibles0 para instalar /%6/I se
utiliSar# directamente el ultimo Ternel Linux que se configurar# con el sistema de arranque +;-B2
-na veS adquirido el servidor Linode0 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 aparecer# se configuran algunos par#metros Odistribucin Linux0 'emoria
disco0 s4ap y contrasea del usuario root:
Derminada la configuracin se presiona el botn M;ebuildN2 *mpeSar# el proceso de instalacin y
configuracin del sistema operativo2 -na veS que haya terminado0 ya se puede iniciar el servidor
presionando el botn MBootN2
:
!omo se puede ver en la imagen0 el Ternel que se instala es la versin MLatest 3: bit O32<21>Ilinode@EP2
/e esta versin no hay las fuentes disponibles y eso imposibilita la instalacin de /%6/I y 0en
general0 de todos los programas que se instalan como mdulos del Ternel2 8or eso en los prximos
p#rrafos se ver# como instalar en el servidor Linode0 la ultima versin disponible del Ternel Linux y el
sistema de arranque +;-B2
-na veS que el servidor est5 corriendo0 como indicado en la imagen que sigue0 que aparece en el lado
derecho de la pagina de administracin de Linode0 se puede acceder al servidor con el programa 8uDDy
Oun cliente ((6P:
8ara conocer la direccin I8 del servidor Linode0 se entra en la siguiente pagina0 donde aparecen todos
los datos de configuracin de la red:
3
(e descarga el programa 8uDDy para =indo4s desde esta pagina:
2tt)@@t2e.eart2.%i@Asgtat2a9@$tt1@%atest@386@$tt1.e3e
-na veS descargado se e$ecuta2 %parecer# la siguiente ventana:
*n M6ost ,ame Oor I8 addressP se pone la direccin I8 del servidor Linode0 en M8ortN :: y en M(aved
(essionsN un nombre que identifique la conexin al 98(2 Derminada la configuracin se presiona el
botn M(aveN y luego el botn MLpenN que aparece m#s aba$o2 (e abrir# una nueva ventana donde en
Mlogin asN hay que poner root y en Mpass4ordN la contrasea que se ha escogido al momento de la
instalacin del sistema operativo2
(i se est# utiliSando Linux se abre una ventana terminal y para conectarse al servidor remoto se e$ecuta
el siguiente comando:
ss2 root*+0servi'or
*l resultado ser#:
La primera cosa que hay que hacer es actualiSar el sistema:
1$9 $'ate .1
/e esta forma se pasar# de la versin B2: a la versin B2@ de !entL(2 Luego se instala el ultimo Ternel
@
Linux disponible y el sistema de arranque +;-B:
1$9 insta%% kerne% gr$( .1
(e averigua la versin del Ternel que se ha instalado:
r9 .B kerne%
kernel-2.6.32-358.2.1.el6.i686
y con esos datos se configura +;-B:
nano @(oot@gr$(@gr$(.con"
#boot=/dev/xvda
default=0
timeout=5
title CentO !"#$#%"&%5'#"#(#el$)
root !*d0)
+ernel /boot/vmlinu,&"#$#%"&%5'#"#(#el$#i$'$ root=/dev/xvda
initrd /boot/initramfs&"#$#%"&%5'#"#(#el$#i$'$#img
(e guardan las modificaciones y se crea un enlace simblico del archivo que se acaba de crear:
%n .s @(oot@gr$(@gr$(.con" @(oot@gr$(@9en$.%st
*l paso a seguir es modificar la configuracin del servidor Linode2 /esde la pagina de administracin
se selecciona el enlace que aparece en la imagen:
*n la nueva pagina se modifican los par#metros como indicado en las dos siguientes im#genes:
?
*n Boot (ettings G Ternel escogemos MpvIgrubIxABC3:N
!asi al final de la pagina se modifican los dos par#metros indicados cambiado la opcin de Qes a ,o2
8ara terminar se guardan los cambios presionando el botn M(ave !hangesN2 (e regresar# a la pagina
principal del servidor Linode y de ah se reinicia:
8ara averiguar que efectivamente el sistema se reinicia utiliSando el Ternel Linux instalado y el gestor
de arranque +;-B0 en la pagina de Linode se entra en el menF M;emote accessN y luego se sigue el
enlace MLaunch Lish %$ax !onsoleN che permite acceder al servidor desde una consola local2 (e abrir#
una nueva ventana y despu5s de unos segundos aparecer# esta imagen:
B
1.2 SSC 1 c%ave 6SA
;(% es un sistema criptogr#fico de clave publica che permite la configuracin de conexiones seguras2
8ara crear la clave ;(% se descarga el programa 8uDDygen Opara =indo4sP:
1.2.1 C%ave 6SA en Din'ows
8ara crear la clave ;(% se descarga el programa 8uDDygen:
2tt)@@t2e.eart2.%i@Asgtat2a9@$tt1@%atest@386@$tt1gen.e3e
(e e$ecuta:
*n M,umber of bits in a generated &eyN se pone :>@A y luego se presiona el botn M+enerateN2 8ara la
creacin de la clave se necesita generar una serie aleatoria de nFmeros y se hace moviendo el ratn en
el cuadro que aparece ba$o la linea MTeyN:
<
6ay que seguir moviendo el ratn hasta que la barra que aparece no llegue al final de la linea2
Derminada la operacin se tendr# disponible la clave ;(% Opublica y privadaP:
+M0O6TA#T-) ara a$9entar %a seg$ri'a' 'e %a c%ave riva'aE se $e'e asociar con
$na contraseFa. =a contraseFa se escri(e en %a casi%%a GHe1 ass2raseI 1 se reite en
GCon"ir9 ass2raseI.
A
(e guarda la clave privada en una carpeta del ordenador local presionando el botn M(ave private
&eyNOen este caso se nombra claveprivadaP:
8ara continuar se selecciona todo el texto que aparece en la imagen que sigue0 se presiona el botn
derecho del ratn y se escoge en el menF McopiarN:
*l texto copiado es la clave publica2 (e accede nuevamente con 8uDDy al servidor remoto y se sigue
este procedimiento para utiliSar la clave publicaU se crea la carpeta ssh:
9k'ir .ss2
E
se permite el acceso a la carpeta creada solamente al usuario root:
c29o' J00 .ss2
se entra en la carpeta:
c' .ss2
se crea el archivo authoriSedC&eys que es donde el sistema buscar# las claves ;(% publicas del sistema
Oen este caso para el usuario rootP:
nano a$t2orize';ke1s
se pega el contenido copiado desde 8uDDygen que debe quedar todo en la misma linea:
(e guarda el archivo presionando las teclas !D;LIH2 (e asigna al archivo reci5n creado los permisos
de lectura y escritura solamente al usuario root:
c29o' 600 @root@.ss2@a$t2orize';ke1s
Qa se puede continuar con la configuracin del servidor ((6 Oparrago 12:23P2
1.2.2 C%ave 6SA en =in$3
(e accede al servidor linux LL!%L como usuario root y e la ventana terminal se escribe:
c' @root
9k'ir .ss2
se permite el acceso a la carpeta creada solamente al usuario root:
c29o' J00 .ss2
se entra en la carpeta:
c' .ss2
(e crea la clave ;(%
1>
ss2.ke1gen .t rsa
Enter file in which to save the key (/root/.ssh/idrsa!"
Enter #ass#hrase (e$#ty for no #ass#hrase!"
Enter sa$e #ass#hrase a%ain"
&our identification has 'een saved in /root/.ssh/idrsa.
&our #u'lic key has 'een saved in /root/.ssh/idrsa.#u'.
(he key fin%er#rint is"
2e"86"e'"d)"8e"2d"*+"1f")e"83"a8"'2"*5"e,"2'"26 root-li215-2*)
(he key.s rando$art i$a%e is"
/--0 123 2)*84----/
5 5
5 5
5 5
5 5
5... . 2 5
5o.//.. . 5
5..o6/.o . 5
5E.77o/ . 5
5o/./6 5
/-----------------/
0root-li215-2*) .ssh48 ls -l
total 8
-rw------- 1 root root 16,5 9ar 11 2)")6 idrsa
-rw-r--r-- 1 root root 3+6 9ar 11 2)")6 idrsa.#u'
!uando el sistema lo solicita Olineas en negritaP0 se puede configurar la clave con una contrasea2 (e
crear#n dos archivos:
idCrsa que contiene la clave privada
idCrsa2pub que contiene la clave publica
*l segundo archivo se copia en el servidor Linode remoto:
sc i';rsa.$( root*+0servi'orre9oto)@t9
!on este comando se copia la clave publica en la carpeta /tmp del servidor remoto2 Luego se aade la
clave al archivo authoriSedC&eys en la carpeta /root/2ssh
cat @t9@i';rsa.$( KK @root@.ss2@a$t2orize';ke1s
(e borra la clave publica:
r9 @t9@i';rsa.$(
11
y se cambian los permisos del archivo authoriSedC&eys:
c29o' 600 @root@.ss2@a$t2orize';ke1s
Qa se puede continuar con la configuracin del servidor ((6 Oparrago 12:23P2
1.2.3 Con"ig$raci&n servi'or SSC
Derminada la operacin de creacin y configuracin de las claves ;(%0 hay que modificar algunos
par#metros del servidor ((6 para permitir el acceso al 98( solamente al usuario root si se autentica
con la clave ;(%U adem#s0 para aumentar la seguridad0 se cambia el puerto predefinido para el acceso
((6 O:: D!8P0 escogiendo otro O1?>>> D!8P2 *sto se hace modificando el archivo de configuracin
del servidor ((6:
nano @etc@ss2@ss2';con"ig
(e buscan estas lineas Opara buscar un texto con el editor nano hay que presionar la tecla !D;L $unto a
la tecla =P:
#-ort ""
#.//ut*entication 0es
-ass1ord/ut*entication 0es
y se modifican para que queden:
-ort (5000
.//ut*entication 0es
-ass1ord/ut*entication no
(e guardan los cambios y se reinicia el servidor ((6:
@etc@init.'@ss2' restart
(e abre otra instancia del cliente ((6:
1:
(e pone la I8 del servidor Linode0 come puerto el 1?>>> y se asigna un nuevo nombre a esta nueva
conexin2
*n la barra de la iSquierda se busca el menF M((6N0 luego M%uthN y se presiona el botn MBro4seN2 (e
busca la clave privada en la carpeta donde se ha guardado anteriormente y se selecciona2 (e vuelve al
menF (ession Oen la iSquierdaP y se guarda esta nueva configuracin presionando el botn M(aveN2
%hora hay dos sesiones disponibles en el cliente ((6: Linode y Linode:2 8ara acceder al servidor
Linux se escoge la sesin Linode:0 botn MLoadN y luego botn MLpenN2 /ebe aparecer esta ventana:
13
-na veS que se haya escrito el nombre de usuario root en Mlogin as:N0 autom#ticamente el cliente se
conectar# al servidor autentic#ndose con la clave ;(% creada2
8ara conectarse desde el servidor Linux LL!%L:
ss2 . 1L000 root*%oca%2ost
8ara terminar la configuracin del 98(0 se modifica la hora predefinida del servidor:
r9 @etc@%oca%ti9e
r$" re$ove re%ular file :/etc/localti$e.; 2
(e crea un enlace simblico a la hora de !olombia:
%n .s @$sr@s2are@zonein"o@A9erica@<ogota @etc@%oca%ti9e
se averigua que la hora sea exacta con el comando:
'ate
8ara que la hora se actualice de manera autom#tica se instala el servidor ,D8 O,et4or& Dime
8rotocolP:
1$9 insta%% nt
(e configura para que se inicie autom#ticamente al arrancar el servidor Linux:
c2kcon"ig nt' on
y se inicia:
service nt' start
2tartin% nt#d" 0 <= 4
8ara modificar el idioma predefinido OinglesP y ponerlo en espaol Ode !olombiaP:
nano @etc@s1scon"ig@i18n
se modifica esta linea:
L/N3=4en56#678&'4
1@
para que quede:
L/N3=4es5CO#iso''59(4
8ara activar el nuevo idioma basta salir y volver a entrar al servidor con 8uDDy2
1.3 >ti%i'a'esE %i(rerMasE 'een'encias
%ntes de la compilacin de %steris&0 se instalar#n una serie de libreras y dependencias que permitir#n
obtener la instalacin de la mayora de los mdulos de la 8BH2 (e empieSa con Vor(is que es una
librera para la compresin/descompresin audio:
1$9 insta%% %i(vor(is %i(vor(is.'eve% vor(is.too%s %i(ogg %i(ogg.'eve%
se sigue con C>6= que es un cliente que permite recibir o enviar archivos utiliSando los protocolos
6DD80 6DD8(0 .D80 +L86*;0 /I!D0 D*L,*D:
1$9 insta%% c$r% c$r%.'eve% %i(i'n.'eve%
se instalan todas las libreras y dependencias que se necesitan para compilar las fuentes:
1$9 insta%% gcc nc$rses.'eve% 9ake gcc.cNN co9at.%i(ter9ca z%i(.'eve% %i(too% (ison.'eve% O
(ison oenss%.'eve% (zi2.'eve% wget newt.'eve% s$(version "%e3 gtk2.'eve%
a seguir para crear y gestionar las bases de datos0 M1SP=:
1$9 insta%% 91sB% 91sB%.server 91sB%.'eve%
>#+XO,<C 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:
1$9 insta%% $ni3O,<C $ni3O,<C.'eve% 91sB%.connector.o'(c %i(too%.%t'%.'eve%
(e instala 7-ST+VA=0 que es un sistema de text to speech Odisponible en espaolP:
1$9 insta%% "estiva% "estiva%.'eve%
-na veS terminada esta parte se empieSa a instalar una serie de programas desde las fuentesU el primero
es SPEEX que es un programa para la compresin audio especficamente diseado para la voS2
+M0O6TA#T-) 0ara to'os %os rogra9as B$e se insta%an 'es'e %as "$entesE antes 'e
'escargar%osE averig$ar si 2a1 $na versi&n 9!s reciente 'isoni(%e.
c' @$sr@src
1?
wget 2tt)@@'own%oa's.3i2.org@re%eases@see3@see3.1.2rc1.tar.gz
tar .3" see3.1.2rc1.tar.gz
c' see3.1.2rc1
.@con"ig$re ..re"i3Q@$sr
9ake
9ake insta%%
(e continua con =AM- que es utiliSa para codificar archivos audio en formato '83:
c' @$sr@src
wget 2tt)@@$"r.'%.so$rce"orge.net@so$rce"orge@%a9e@%a9e.3.RR.L.tar.gz
tar .3" %a9e.3.RR.L.tar.gz
c' %a9e.3.RR.L
.@con"ig$re ..re"i3Q@$sr
9ake
9ake insta%%
=+<MA, que es un '8*+ audio decodificador de alta calidad:
c' @$sr@src
wget 2tt)@@r'own%oa's.so$rce"orge.net@9a'@%i(9a'.0.1L.1(.tar.gz
tar .3" %i(9a'.0.1L.1(.tar.gz
c' %i(9a'.0.1L.1(
.@con"ig$re ..re"i3Q@$sr
8ara que la compilacin tenga 5xito hay que modificar una linea del 'a&efile:
nano Make"i%e
C8L/3 = &:all &marc*=i;'$ &g &O &fforce&mem &fforce&addr &ft*read&<umps
para que quede:
C8L/3 = &:all &marc*=i;'$ &g &O &fforce&addr &ft*read&<umps
1B
se continua con la compilacin e instalacin:
9ake
9ake insta%%
DAV0ACH es un compresor audio de alto rendimiento sin perdida de calidad:
c' @$sr@src
wget 2tt)@@www.wavack.co9@wavack.4.60.1.tar.(z2
tar .3" wavack.4.60.1.tar.(z2
c' wavack.4.60.1
.@con"ig$re ..re"i3Q@$sr
9ake
9ake 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 2tt)@@'own%oa's.so$rce"orge.net@ro5ect@so3@so3@14.4.1@so3.14.4.1.tar.gz
tar .3" so3.14.4.1.tar.gz
c' so3.14.4.1
.@con"ig$re .re"i3Q@$sr
%l finaliSar el configure aparecer# esta tabla donde se encontrar#n todos los formatos audio que se
podr#n manipular con (LH:
1<
(e termina con la compilacin e instalacin:
9ake
9ake insta%%
1.4 ,AC,+
*l paquete DADHI O/igium %steris& 6ard4are /evice InterfaceP permite cargar los drivers y
configurar distintos tipos de tar$etas en %steris& Oanalgicas0 digitales0 ;/(I/I(/,0 cancelador de
*!6LP2 %steris& adem#s se apoya en /%6/I para las conferencias audio Omodulo appCmeetmeP y el
trun&ing I%H: Otema tratado en la configuracin del archivo iax2confP2 (e instala el paquete de
desarrollo del Ternel:
1$9 insta%% kerne%.'eve%
(e continua con la ultima versin disponible de /%6/IILinux:
c' @$sr@src
wget 2tt)@@'own%oa's.asterisk.org@$(@te%e2on1@'a2'i.%in$3@'a2'i.%in$3.c$rrent.tar.gz
tar .3" 'a2'i.%in$3.c$rrent.tar.gz
c' 'a2'i.%in$3.2.6.2
1A
9ake
9ake insta%%
(e termina con la ultima versin disponible de /%6/IIDools:
c' @$sr@src
wget 2tt)@@'own%oa's.asterisk.org@$(@te%e2on1@'a2'i.too%s@'a2'i.too%s.c$rrent.tar.gz
tar .3" 'a2'i.too%s.c$rrent.tar.gz
c' 'a2'i.too%s.2.6.2
.@con"ig$re
9ake 9en$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 M(ave V *xitN2 (e
termina con la compilacin e instalacin:
9ake
9ake insta%%
9ake con"ig
Qa se puede iniciar /%6/I:
@etc@init.'@'a2'i start
>oadin% ?3@?A hardware $odules"
wct*BB#" 0 <= 4
wcte12B#" 0 <= 4
1E
wct1BB#" 0 <= 4
wcte11B#" 0 <= 4
wctd$2*BB#" 0 <= 4
wcfBo" 0 <= 4
wctd$" 0 <= 4
wc'*BB#" 0 <= 4
wctc*BB#" 0 <= 4
B##us'" 0 <= 4
Co hardware ti$in% source found in /#roc/dahdiD loadin% dahdidu$$y
1unnin% dahdicf%" 0 <= 4
*n el caso del servidor Linode0 no se va a instalar ningFn tipo de tar$eta y es buena practica no cargar
todos los driver de /%6/I al momento de su arranque para ahorrar recursos de sistema2 *sto se hace
modificando este archivo:
nano @etc@'a2'i@9o'$%es
y se aade el car#cter W a todas las lineas que no lo tienen2 (e guardan las modificaciones y se reinicia
/%6/I:
service 'a2'i restart
Enloadin% ?3@?A hardware $odules" done
>oadin% ?3@?A hardware $odules"
1unnin% dahdicf%" 0 <= 4
1.L =+<06+
*n el caso que se quiera instalar tar$etas digitales en el servidor %steris& O*10 D10 I(/,P0 despu5s de
instalar /%6/I0 hay que instalar la librera libpri
c' @$sr@src
wget 2tt)@@'own%oa's.asterisk.org@$(@te%e2on1@%i(ri@%i(ri.1.4.14.tar.gz
se descomprime:
tar .3" %i(ri.1.4.14.tar.gz
se entra en la carpeta:
c' %i(ri.1.4.14
se compila y se instala:
:>
9ake
9ake insta%%
1.6 6es;"a3E 4oog%eTa%kE =i(iCA= 1 S6T0
*n este p#rrafo se ver# como instalar (pan/(80 un procesador de seales digitales que en %steris&
permite la instalacin del modulo resCfax para la recepcin y envo de .%H0 y IT(*'*L que permite
implementar el protocolo H'88 en %steris& y de esta forma conectarse a +oogleDal& y/o a cualquier
servidor de tipo H'88 Ootro e$emplo es LpenfireP:
8ara San,S0 se necesita instalar primero las libreras libtiff y libxml::
1$9 insta%% %i(ti"" %i(ti"".'eve% %i(39%2 %i(39%2.'eve%
se continua con (pan/(8:
c' @$sr@src
wget 2tt)@@www.so"t.switc2.org@'own%oa's@san's@san's.0.0.6re21.tgz
tar .3" san's.0.0.6re21.tgz
c' san's.0.0.6
.@con"ig$re ..re"i3Q@$sr
9ake
9ake insta%%
*l protocolo XM00 permite conexione seguras entre cliente y servidor utiliSando el protocolo DL(U
para ese efecto se instala0 antes de IT(*'*L0 las relativas libreras:
1$9 insta%% gn$t%s gn$t%s.'eve% gn$t%s.$ti%s
se continua con IT(*'*L:
c' @$sr@src
wget 2tt)@@ikse9e%.goog%eco'e.co9@"i%es@ikse9e%.1.4.tar.gz
tar .3" ikse9e%.1.4.tar.gz
c' ikse9e%.1.4
.@con"ig$re ..re"i3Q@$sr
9ake
:1
antes de la instalacin se e$ecuta un test para averiguar que la compilacin haya tenido 5xito:
9ake c2eck
F322" tst-ikstack
F322" tst-iks
F322" tst-saB
F322" tst-do$
F322" tst-sha
F322" tst-$d5
F322" tst-filter
F322" tst-Gid
777777777777777777
3ll 8 tests #assed
777777777777777777
Qa que todo est# bien0 se puede instalar:
9ake insta%%
%ntes de la instalacin de %steris&0 se termina la preparacin del sistema con unos programas m#s2
8rimero un servidor de correo electrnico0 S-#,MA+=:
1$9 insta%% sen'9ai% sen'9ai%.'eve% sen'9ai%.c"
(e configura para que arranque en autom#tico:
c2kcon"ig sen'9ai% on
%l alquilar el servidor Linode0 cada usuario tiene asignado un subIdominio que se puede utiliSar para la
configuracin del sistema2 *ste dato aparece en la pagina de administracin de Linode0 ba$o el menF
M;emote %ccessN
::
*n este caso el subIdominio asignado es %i3J1.23L.9e9(ers.%ino'e.co92 *se nombre se pone en la
configuracin de red del servidor de la siguiente forma:
nano @etc@s1scon"ig@network
al final del archivo se aade la siguiente linea:
COST#AM-Q%i3J1.23L.9e9(ers.%ino'e.co9
(e guardan los cambios y se reinicia el servicio de red:
service network restart
*l subIdominio se utiliSar# tambi5n para el envo de los correos electrnicos2 8or defecto el servidor de
correo electrnico escucha solamente en la puerto D!8 :? local2 8ara que sea alcanSable tambi5n desde
remoto hay que abrir el archivo de configuracin de (endmail:
nano @etc@9ai%@sen'9ai%.9c
se busca esta linea:
=/>?ON5O-7@ON!A-ort=smtpB/ddr=("C#0#0#(B Name=?7/D)dnl
y modificarla como sigue:
=/>?ON5O-7@ON!A-ort=smtpBB Name=?7/D)dnl
se guardan los cambios y se vuelve a compilar la configuracin de (endmail:
9ake .C @etc@9ai%
se reinicia el servidor de correo:
@etc@init.'@sen'9ai% restart
para hacer la prueba de conexin al servidor de correo electrnico desde remoto0 se abre una ventana
terminal en =indo4s y se escribe:
!:X" te%net .a +0=ino'e 2L
*n lugar de I8Linode se pone la I8 del servidor Linode2 *l resultado:
:3
OpenLDAP es la versin open source del protocolo Light4eight /irectory %ccess2 ,ormalmente se
utiliSa para crear un directorio de usuarios que puede ser consultado y/o modificado desde remoto2
'uchos programas implementan la posibilidad de conectarse a un servidor LpenL/%8 y %steris&0
desde la versin 12B2H0 presenta esta posibilidad:
1$9 insta%% co9at.oen%'a oen%'a oen%'a.c%ients oen%'a.'eve% oen%'a.servers
SNMP es el 8rotocolo (imple de %dministracin de ;ed y sirve para controlar y monitorear el
desempeo del servidor Linux2 *n %steris& permite monitorear0 entre otras cosas0 los canales y las
llamadas2 (e utiliSar# $unto a #A4+OS para controlar el servidor %steris& y enviar avisos cuando se
verifique algFn tipo de problema:
1$9 insta%% net.sn9 net.sn9.'eve% net.sn9.%i(s net.sn9.$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 instalar2 *n este caso se instala desde las fuentes:
c' @$sr@src
wget 2tt)@@'own%oa'.(er%ios.'e@ra'i$sc%ient.ng@ra'i$sc%ient.ng.0.L.6.tar.gz
tar .3" ra'i$sc%ient.ng.0.L.6.tar.gz
c' ra'i$sc%ient.ng.0.L.6
.@con"ig$re ..re"i3Q@$sr
9ake
9ake insta%%
(e continua la preparacin del servidor con la instalacin del lengua$e de programacin L-% que
permite escribir el dialplan Oo plan de marcadoP utiliSando este lengua$e2 %l terminar la instalacin de
%steris& se encontrar# un archivo de e$emplo en la carpeta /etc/asteris&2 *n este caso se instala desde
las fuentes2 8rimero unas dependencias:
1$9 insta%% rea'%ine.'eve%
luego el programa:
c' @$sr@src
wget 2tt)@@www.%$a.org@"t@%$a.L.1.L.tar.gz
tar .3" %$a.L.1.L.tar.gz
c' %$a.L.1.L
:@
(e modifica el archivo 'a&efile para que el programa se instale por defecto en la carpeta /usr:
nano Make"i%e
se modifica esta linea:
@N7/LL57O-= /usr/local
para que quede:
@N7/LL57O-= /usr
8ara la versin !entL( de B@bit hay que modificar tambi5n este archivo:
nano src@Make"i%e
cambiar esta linea:
C8L/3= &O" &:all E!?2C8L/3)
para que quede:
C8L/3= &O" &:all &fpic E!?2C8L/3)
(e guardan los cambios0 se compila e instala:
9ake %in$3
9ake insta%%
8ara terminar se compilan los paquetes que permiten utiliSar las nuevas funcionalidades de %steris&
12A2H2 8rimero =+<+CA= que permite la implementacin del protocolo i!alendar O;.!??@BP a trav5s
del modulo resCcalendar:
c' @$sr@src
wget 2tt)@@'own%oa's.so$rce"orge.net@ro5ect@"reeassociation@%i(ica%@%i(ica%.0.48@%i(ica%.0.48.tar.gz
tar .3" %i(ica%.0.48.tar.gz
c' %i(ica%.0.48
.@con"ig$re ..re"i3Q@$sr
9ake
9ake insta%%
Luego #-O# que es una librera que permite la implementacin del protocolo =eb/%9 en %steris&:
:?
c' @$sr@src
wget 2tt)@@we('av.org@neon@neon.0.2R.6.tar.gz
tar .3" neon.0.2R.6.tar.gz
c' neon.0.2R.6
.@con"ig$re ..re"i3Q@$sr
9ake
9ake insta%%
8or ultimo la librera LIB(;D8 que permite implementar el cifrado del flu$o media en %steris& a trav5s
del protocolo (;D8 O;.!3<11P:
c' @$sr@src
wget 2tt)@@'own%oa's.so$rce"orge.net@ro5ect@srt@srt@1.4.4@srt.1.4.4.tgz
tar .3" srt.1.4.4.tgz
c' srt
.@con"ig$re ..re"i3Q@$sr C7=A4SQ."0+C
9ake
%ntes de lanSar el ma&e runtest0 para que tenga 5xito0 hay que modificar una linea en el archivo que
e$ecuta el test:
nano test@rtw;test.s2
cambiar esta linea:
6T0DQrtw
para que quede:
6T0DQ.@rtw
(e continua con el test:
9ake r$ntest
9ake insta%%
:B
1.J +nsta%aci&n 'e Asterisk
Derminada la preparacin del servidor0 se inicia con la instalacin de %steris&2 (e descarga la ultima
versin 12A2H disponible:
c' @$sr@src
wget 2tt)@@'own%oa's.asterisk.org@$(@te%e2on1@asterisk@asterisk.1.8.20.1.tar.gz
tar .3" asterisk.1.8.20.1.tar.gz
c' asterisk.1.8.20.1
.@con"ig$re
9ake 9en$se%ect
/esde la versin 12A2H lo que antes era un paquete a parte Oasteris&IaddonsP ahora es presente en el
paquete principal de %steris&2 !omo se puede notar0 los mdulos relacionados con 'y()L Omenos
resCmysqlP son MdeprecatedN y muy probablemente en las futuras versiones ser#n eliminados2 (e entra
en el menF M%ddIonsN y se activan los paquetes que siguen:
*n %steris& 12A2H est# presente un nuevo menF M!hannel *vent LoggingN que como se ver# m#s
adelante0 permite complementar el !/; Ocall detail recordP con nuevas informaciones relacionadas con
las llamadas:
*n M;esource modulesN se controla que los mdulos relacionados con las funciones calendario y
cifrado del flu$o media est5n activados:
:<
(e seleccionan todos los mdulos en el menF M-tilitiesN y M%+I (amplesN:
*n M!ore (ound 8ac&agesN se seleccionan todos los paquetes disponibles:
:A
*n M'usic Ln 6old .ile 8ac&agesN se hace lo mismo:
!omo se hace lo mismo en M*xtra (ound 8ac&agesN:
:E
(e guarda la configuracin presionando la tecla tabulador hasta posicionarse sobre M(ave V *xitN2 (e
termina con la compilacin e instalacin:
9ake
(i a lo largo de la compilacin aparece este error:
$ake014" 666 0for$at$#3.o4 Error 1
$ake" 666 0addons4 Error 2
se continua con:
contri(@scrits@get;93;so$rce.s2
y luego otra veS el ma&e:
9ake
se instala %steris&:
9ake insta%%
se instalan los archivos de configuracin predefinidos:
9ake sa9%es
3>
se configura el script de arranque de %steris&:
9ake con"ig
Derminada la instalacin0 se procede a la configuracin de 'y()L para crear la base de datos y la
tabla donde se guardar#n los registros de las llamadas2
@etc@init.'@91sB%' start
se configura para que arranque en autom#tico:
c2kcon"ig 91sB%' on
y se crea una contrasea para el usuario root de 'y()L OsesamoP:
+M0O6TA#T-) ara $n siste9a en ro'$cci&n $ti%izar sie9re contraseFas "$ertes
91sB%a'9in .$ root asswor' sesa9o
8ara asegurar el servidor 'y()L se e$ecuta el programa:
91sB%;sec$re;insta%%ation
(e contestan las preguntas somo sigue:
Enter current #assword for root (enter for none!" sesamo
<=D successfully used #asswordD $ovin% on...
Chan%e the root #assword; 0&/n4 n
... ski##in%.
1e$ove anony$ous users; 0&/n4 0
... 2uccessH
?isallow root lo%in re$otely; 0&/n4 0
... 2uccessH
1e$ove test data'ase and access to it; 0&/n4 0
- ?ro##in% test data'ase...
1eload #rivile%e ta'les now; 0&/n4 0
... 2uccessH
Cleanin% u#...
31
3ll doneH Af you.ve co$#leted all of the a'ove ste#sD your 9y2I>
installation should now 'e secure.
(hanks for usin% 9y2I>H
(e reinicia el servidor 'y()L:
service 91sB%' restart
(e crea la base de datos para guardar los registros de las llamadas2 (e entra en el cliente de 'y()L:
91sB% .$ root .sesa9o
se crea la base de datos asteris&cdr:
mysql" create 'ata(ase asteriskc'rS
se selecciona:
mysql" $se asteriskc'r
se crea la tabla cdr Ocopiando y pegando las lineas que siguenP:
mysql" C.>/7> 7/FL> cdr !
calldate datetime NO7 N6LL default D0000&00&00 00G00G00DB
clid varc*ar!'0) NO7 N6LL default DDB
src varc*ar!'0) NO7 N6LL default DDB
dst varc*ar!'0) NO7 N6LL default DDB
dcontext varc*ar!'0) NO7 N6LL default DDB
c*annel varc*ar!'0) NO7 N6LL default DDB
dstc*annel varc*ar!'0) NO7 N6LL default DDB
lastapp varc*ar!'0) NO7 N6LL default DDB
lastdata varc*ar!'0) NO7 N6LL default DDB
duration int!(() NO7 N6LL default D0DB
billsec int!(() NO7 N6LL default D0DB
disposition varc*ar!;5) NO7 N6LL default DDB
amaflags int!(() NO7 N6LL default D0DB
accountcode varc*ar!"0) NO7 N6LL default DDB
peeraccount varc*ar!"0) NO7 N6LL default DDB
uniHueid varc*ar!%") NO7 N6LL default DDB
lin+edid varc*ar!'0) NO7 N6LL default DDB
userfield varc*ar!"55) NO7 N6LL default DDB
I>2 callerid !clid)
)J
!on la versin 12A de %steris& se han aadido dos nuevos campos a la tabla !/;:
3:
lin&edid
peeraccount
que permiten tener informaciones m#s detalladas de cada llamada2
(e otorgan los permisos de acceso a la base de datos creada al usuario asteris&0 desde local:
mysql" 46A#T A== 06+V+=-4-S O# asteriskc'r.T TO UasteriskU*U%oca%2ostU +,-#T+7+-,
<V Usesa9oUS
desde remoto:
mysql" 46A#T A== 06+V+=-4-S O# asteriskc'r.T TO UasteriskU*UWU +,-#T+7+-, <V
Usesa9oUS
se actualiSan los permisos:
mysql" "%$s2 rivi%egesS
se sale del cliente:
mysql" B$it
*n %steris& la conexin a la base de datos y la tabla de los registros de las llamadas0 se configura en el
archivo cdrCmysql2conf2 (e renombra el predefinido:
9v @etc@asterisk@c'r;91sB%.con" @etc@asterisk@c'r;91sB%.con".o%'
se crea uno nuevo:
nano @etc@asterisk@c'r;91sB%.con"
se aaden las siguientes lineas:
KglobalL
*ostname=local*ost
dbname=asteris+cdr
table=cdr
pass1ord=sesamo
user=asteris+
port=%%0$
soc+=/var/lib/m0sHl/m0sHl#soc+
Los datos:
12 YglobalZ G etiqueta inicial del bloque
:2 hostname I nombre de dominio o I8 del servidor 'y()L
33
32 dbname I nombre de la base de datos
@2 table I nombre de la tabla
?2 pass4ord I contrasea del usuario que tiene los permisos para acceder a la base de datos
B2 user I nombre del usuario que tiene los permisos para acceder a la base de datos
<2 port G puerto donde 'y()L recibir# las conexiones Opredefinido 33>BP
A2 soc& G archivo que se crea cuando se inicia 'y()L y que se necesita indicar para una correcta
conexin
(e guardan los cambios y se inicia %steris&:
@etc@init.'@asterisk start
se averigua que est5 corriendo:
@etc@init.'@asterisk stat$s
asterisk (#id 2*)3! is runnin%...
se entra en la consola:
asterisk .rvvvvvvvvvvvvvvvv
se controla que la conexin a la base de datos est5 activa:
!LI" c'r 91sB% stat$s
Connected to asteriskcdr-localhostD #ort 33)6 usin% ta'le cdr for 5+ seconds.
Jrote ) records since last restart.
(e sale de la consola:
!LI" B$it
EBecutin% last $inute cleanu#s
3@
Cait$%o ++
Con"ig$raci&n inicia% 'e Asterisk
2.1 +nsta%ar 1 con"ig$rar $n corta"$egos
8ara proteger el servidor Linux de accesos no autoriSados hay que instalar un fire4all OcortafuegosP y
abrir los puertos que %steris& necesita para aceptar conexiones externas2 *sta es la parte m#s delicada
de la configuracin del servidor porque es donde se definen los puertos y los servicios que son
accesibles desde Internet2 *n el caso del 98( Linode se instalar# y !onfigurar# I8tables2
(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 router2
!onfigurar en el router una /'J que apunte a la I8 local del servidor donde est# instalado
%steris& y luego gestionar los puertos directamente con I8tables en el servidor Linux
8ara instalar iptables:
1$9 insta%% ita(%es
Iptables se encarga de gestionar todos los paquetes que entren y salgan del servidor Linux2 8ara eso
utiliSa tres tipos de tablas:
la tabla "i%ter donde pasan todos los paquetes en entrada y salida2 La tabla filter acepta tres tipos
de opciones OcadenasP
I,8-D para los paquetes en entrada
L-D8-D para los paquetes en salida
.L;=%;/ para redireccionar los paquetes
la tabla #AT se utiliSa para rescribir las direcciones o los puertos de los paquetes
la tabla MA#4=- se utiliSa para modificar algunos par#metros de los paquetes Oun e$emplo es
marcar los paquetes para que sean procesados y enviados con una prioridad m#s altaP
Las reglas se definen una por linea y ser#n procesadas por iptables siguiendo la misma secuencia2
!uando no se especifica diversamente0 todas las reglas se aplicar#n a la tabla filter:
(e acepta todo el trafico en entrada con destino la interfaS loo&pac&
ita(%es .A +#0>T .i %o .5 ACC-0T
(e rechaSa O;*K*!DP todo el trafico entrante destinado a las I8 1:<2>2>2>/1:<2:??2:??2:?? menos los
paquetes para la interfaS Ilo
ita(%es .A +#0>T X .i %o .' 12J.0.0.0@8 .5 6-Y-CT
(e aceptan todos los paquetes en entrada de conexiones ya establecidas0 o relacionados con conexiones
establecidas2 95ase protocolo D!8
ita(%es .A +#0>T .9 state ..state -STA<=+SC-,E6-=AT-, .5 ACC-0T
(e de$an pasar todos los paquetes salientes2
ita(%es .A O>T0>T .5 ACC-0T
(e de$a pasar todo el trafico en entrada para el protocolo ((6 Opuerto 1?>>> D!8P
ita(%es .A +#0>T . tc .9 state ..state #-D .9 tc ..'ort 1L000 .5 ACC-0T
(e de$a pasar todo el trafico en entrada destinado al puerto udp @?BE Oprotocolo I%H:P
ita(%es .A +#0>T . $' ..'ort 4L6R .5 ACC-0T
(e de$a pasar todo el trafico en entrada destinado al puerto udp ?>B> Oprotocolo (I8P
ita(%es .A +#0>T . $' ..'ort L060 .5 ACC-0T
(e de$a pasar todo el trafico en entrada destinado al puerto tcp ?>B> Oprotocolo (I8 sobre D!8P
ita(%es .A +#0>T . tc .9 state ..state #-D .9 tc ..'ort L060 .5 ACC-0T
(e de$a pasar todo el trafico en entrada destinado a los puertos udp que van de 1>>>> a :>>>>
Oprotocolo ;D8P
ita(%es .A +#0>T . $' ..'ort 10000)20000 .5 ACC-0T
(e de$an pasar las solicitudes de ping
ita(%es .A +#0>T . ic9 .9 ic9 ..ic9.t1e 8 .5 ACC-0T
% este punto0 ya que se han definido los puertos base que se necesitan abiertos0 se bloquea todo el
trafico restante2
ita(%es .A +#0>T .5 6-Y-CT
ita(%es .A 7O6DA6, .5 6-Y-CT
(e averigua el estado de las reglas definidas con el comando:
ita(%es .=
%parecer#:
3<
Chain ACFE( (#olicy 3CCEF(!
tar%et #rot o#t source destination
3CCEF( all -- anywhere anywhere
1EKEC( all -- anywhere loo#'ack/8 reGect-with ic$#-#ort-unreacha'le
3CCEF( all -- anywhere anywhere state 1E>3(E?DE2(3L>A2@E?
3CCEF( tc# -- anywhere anywhere state CEJ tc# d#t"hyda#
3CCEF( ud# -- anywhere anywhere ud# d#t"iaB
3CCEF( ud# -- anywhere anywhere ud# d#t"si#
3CCEF( tc# -- anywhere anywhere state CEJ tc# d#t"si#
3CCEF( ud# -- anywhere anywhere ud# d#ts"nd$#"dn#
3CCEF( ic$# -- anywhere anywhere ic$# echo-reMuest
1EKEC( all -- anywhere anywhere reGect-with ic$#-#ort-unreacha'le
Chain N<1J31? (#olicy 3CCEF(!
tar%et #rot o#t source destination
1EKEC( all -- anywhere anywhere reGect-with ic$#-#ort-unreacha'le
Chain <E(FE( (#olicy 3CCEF(!
tar%et #rot o#t source destination
3CCEF( all -- anywhere anywhere
8ara guardar los cambios:
service ita(%es save
2avin% firewall rules to /etc/sysconfi%/i#ta'les" 0 <= 4
(e inicia el servicio:
service ita(%es start
8ara iniciar iptables autom#ticamente:
c2kcon"ig ita(%es on
8ara terminar hay que configurar %steris& para que use los puertos -/8 desde 1>>>> hasta :>>>> para
el protocolo ;D8 Oes el que se encarga0 una veS establecida la conexin entre dos canales0 del flu$o
audio/videoP
(e renombra el archivo predefinido:
9v @etc@asterisk@rt.con" @etc@asterisk@rt.con".o%'
(e crea uno nuevo:
nano @etc@asterisk@rt.con"
3A
(e copian las siguientes lineas:
KgeneralL
rtpstart=(0000
rtpend="0000
rtpc*ec+sums=no
dtmftimeout=%000
rtcpinterval=5000
strictrtp=0es
Los datos:
YgeneralZ G etiqueta inicial del archivo de configuracin
rtpstart G puerto inicial para el trafico ;D8
rtpend G puerto final para el trafico ;D8
rtpchec&sums G %ctivar o no la suma de verificacin en los paquetes ;D8
dtmftimeout G la cantidad de tiempo Oen mili segundosP que un tono /D'. sin marcador de fin
tiene los permisos para continuar en el trafico ;D8
mili segundos entre cada reporte del protocolo ;D!8 Oprotocolo che se utiliSa para controlar el
flu$o ;D8
strictrtp G Lo paquetes que no proceden del mismo flu$o ;D8 utiliSado en la conexin ser#n
eliminados
(e guardan los cambios efectuados y se recarga la configuracin de %steris&:
@etc@init.'@asterisk re%oa'
2.2 Caretas 1 arc2ivos
%l terminar la instalacin de %steris& unas cuantas carpetas nuevas ser#n creadas2
@etc@asterisk
!ontiene todos los archivos de configuracin de %steris&2
@$sr@%i(@asterisk@9o'$%es
!ontiene todos los mdulos compilados y utiliSables en %steris&2
@var@%i(@asterisk
)ue a su veS contiene las siguientes carpetas:
agi.(in@
3E
donde se guardan los script %+I2
"ir9ware@
/onde se guardan los firm4are de las tar$etas en uso2
i9ages@
/onde las aplicaciones ir#n a buscar las im#genes cuando se comuniquen con tel5fonos que soportan
esta funcin2
ke1s@
/onde se guardan las claves publicas y privadas que %steris& necesita para autenticarse con otros
servidores o servicios O*$: /-,/i0 I%H:P2
so$n's@
!ontiene todas las locuciones que se pueden utiliSar en el plan de marcado OdialplanP2
9o2@
La mFsica en espera que viene con la instalacin de %steris& (no $#3!.
2onerov@
donde se guardan los archivos de configuracin de los tel5fonos que se quiere aprovisionar
directamente desde %steris&
static.2tt@
donde se encuentran algunos programas para interactuar con %steris& desde un navegador =eb
@var@soo%@asterisk
)ue contiene:
'ictate@
/onde se guardar#n los archivos audio creados con la aplicacin /ictateOP2
9eet9e@
/onde se guardar#n las grabaciones de las conferencias2
9onitor@
@>
donde se guardar#n los archivos audio de las grabaciones de las llamadas
o$tgoing@
/onde hay que mover los archivos de llamadas (call files!2
s1ste9@
!arpeta para archivos temporales creados por la aplicacin (ystemOP2
t9@
!arpeta donde se guardan los archivos temporales creados por algunas aplicaciones O*$2 buSn de voSP#
voice9ai%@
/onde se guardar#n los archivos audio de los mensa$es de voS de$ados en el buSn de voS y los
mensa$es audio personaliSados de cada usuario2
@var@r$n@asterisk
!ontiene la I/ del proceso de %steris& cuando est5 corriendo2
@var@%og@asterisk
/onde se guardar#n todos los registros de %steris& (erroresD $ensaGesD lla$adas y eventosD de'u%!. /e
revisar cuando se tengan problemas con %steris&2
2.3 asterisk.con"
*n el archivo asteris&2conf0 que se encuentra en la carpeta /etc/asteris&0 se puede modificar la
configuracin general de %steris&2 (e divide en cuatro bloques:
un bloque donde se definen las carpetas de traba$o de %steris&
un bloque donde se definen distintas opciones del funcionamiento de %steris&
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 Odialplan0 %+I0 ;ealtimeP2
KdirectoriesL!M)
astetcdir =N /etc/asteris+
astmoddir =N /usr/lib/asteris+/modules
astvarlibdir =N /var/lib/asteris+
astdbdir =N /var/lib/asteris+
ast+e0dir =N /var/lib/asteris+
@1
astdatadir =N /var/lib/asteris+
astagidir =N /var/lib/asteris+/agi&bin
astspooldir =N /var/spool/asteris+
astrundir =N /var/run/asteris+
astlogdir =N /var/log/asteris+
*l Bloque YdirectoriesZ es donde se pueden cambiar las carpetas de configuracin de %steris&2 *l valor
O[P despu5s de la etiqueta YdirectoriesZ indica que el bloque esta comentado Ono ser# ledo por %steris&P2
KoptionsL
Jverbose = %
Jdebug = %
Jal1a0sfor+ = 0es
Jnofor+ = 0es
JHuiet = 0es
Jtimestamp = 0es
Jexecincludes = 0es
Jconsole = 0es
J*ig*priorit0 = 0e
Jinitcr0pto = 0es
Jnocolor = 0es
Jdont1arn = 0es
Jdumpcore = 0es
Jlanguageprefix = 0es
Jinternal5timing = 0es
Js0stemname = m05s0stem5name
Jautos0stemname = 0es
Jmaxcalls = (0
Jmaxload = 0#9
Jmaxfiles = (000
Jminmemfree = (
Jcac*e5record5files = 0es
Jrecord5cac*e5dir = /tmp
Jtransmit5silence5during5record = 0es
Jtransmit5silence = 0es
Jtranscode5via5sln = 0es
Jsendfull0booted = 0es
Jrunuser = asteris+
Jrungroup = asteris+
Jlig*tbac+ground = 0es
Jdocumentation5language = en56
J*ideconnect = 0es
*l Bloque YoptionsZ permite modificar algunas opciones de %steris&2 8or defecto todas las opciones
est#n comentadas Ono aplicanP2 %lgunos e$emplos:
si se quiere quitar los colores en la consola de %steris&0 se quita el punto y coma de la linea
@:
nocolors=yes
(i el sistema donde est# instalado %steris& no puede cursar m#s de 3> llamadas0 se pone
maxcalls = 3> y se quita el punto y coma delante de la linea
si se quiere que al alcanSar un consumo del >0E OE>\P de la !8- del servidor0 no se curse m#s
llamadas0 se quita el punto y coma delante de maxload = >2E
si en lugar del usuario y grupo root0 se quiere que el %steris& 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 utiliSa un servidor dedicado para la base de datos y todos los registros de llamadas de
distintos servidores %steris& se guardan en ese servidor0 no hay forma de saber de cual servidor
es un determinado registro2 8ara que esto sea posible0 en cada servidor %steris& hay que
configurar el par#metro systemname con un valor que identifique el servidor %steris&2 /e esta
forma en los registros de llamadas se podr# saber en cual 8BH se origin la llamada2
JKfilesL
Jastctlpermissions = 0$$0
Jastctlo1ner = root
Jastctlgroup = apac*e
Jastctl = asteris+#ctl
*l Bloque YfilesZ es donde se definen permisos0 usuarios y nombre del soc&et de %steris&2
KcompatL
pbx5realtime=(#$
res5agi=(#$
app5set=(#$
*l Bloque YcompatZ es donde se puede cambiar el comportamiento de %steris& para el dialplan0 el %+I
y el ;ealtime Otemas que ser#n abordados en lo prximos captulosP2 *n las versiones anteriores a la
12A y 12B cuando se definan las opciones de una aplicacin0 se separaban con un pipe ] /esde la versin
12B hay que sostituir el pipe con una coma2 (i se quiere que %steris& interprete correctamente los pipe
hay que modificar las tres lineas de la siguiente forma:
KcompatL
pbx5realtime=(#;
res5agi=(#;
app5set=(#;
2.4 9o'$%es.con"
!uando se instala %steris&0 todos los mdulos se guardan en la carpeta /usr/lib/asteris&/modules2 8or
defecto cuando se inicia %steris&0 todos los mdulos ser#n cargados2 *ste comportamiento se debe a la
configuracin predefinida del archivo modules2conf2 (i se abre este archivo0 despu5s de la etiqueta
YmodulesZ se encontrar# el par#metro:
@3
autoload=0es
que significa que todos los mdulos compilados se cargar#n al iniciar %steris&2 Ltra forma de cargar los
mdulos podra ser poner ese par#metro en no y luego en el mismo archivo utiliSar el par#metro load
para cargar los mdulos uno a uno2
*n el mismo archivo encontramos el par#metro preload2 *ste par#metro se utiliSa para cargar un
modulo antes de todos los dem#s2 !omo se ver# m#s adelante0 en el caso de los mdulos relacionados
con L/B!0 hay que utiliSar este par#metro para cargar estos modulo por primeros2
*s muy probable que a lo largo de la configuracin de %steris&0 no se necesite utiliSar algunos mdulos
y es una buena practica desactivarlos de forma que no se carguen al iniciar %steris&2 *n este modo se
reduce la memoria y los recursos utiliSados por la 8BH2
-n e$emplo puede ser el canal (&inny que se utiliSa en los tel5fonos de marca !I(!L2 (i no se va a
utiliSar este protocolo0 es me$or desactivarlo en el archivo modules2conf2 *sto se hace utiliSando el
par#metro noload2 (e abre el archivo modules2conf:
nano @etc@asterisk@9o'$%es.con"
y al final se aade la siguiente linea:
no%oa' QK c2an;skinn1.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" 9o'$%e s2ow %ike c2an
se ver#n todos los canales disponibles:
9odule ?escri#tion Ese Count
chanlocal.so >ocal FroBy Channel (Cote" used internal )
chaniaB2.so Anter 3sterisk eOchan%e (Per 2! )
chansi#.so 2ession Anitiation Frotocol (2AF! )
chandahdi.so ?3@?A (ele#hony ?river w/F1A )
chanoss.so <22 Console Channel ?river )
a##chans#y.so >isten to the audio of an active channel )
chan'rid%e.so Lrid%e Anteraction Channel )
a##du$#chan.so ?u$# Anfo 3'out (he Callin% Channel )
@@
chan$%c#.so 9edia Qateway Control Frotocol (9QCF! )
chan%talk.so Qtalk Channel ?river )
chanunisti$.so ECA2(A9 Frotocol (E2(9! )
chana%ent.so 3%ent FroBy Channel )
funcchannel.so Channel infor$ation dial#lan functions )
chanGin%le.so Kin%le Channel ?river )
a##channelredirect.so 1edirects a %iven channel to a dial#lan )
a##chanisavail.so Check channel availa'ility )
chan#hone.so >inuB (ele#hony 3FA 2u##ort )
1, $odules loaded
*l canal chanCs&inny no aparece porque se ha configurado para que no se cargue2 (i en un determinado
momento se quiere cargar un modulo que ha sido configurado para no cargarse al iniciar %steris&0 se
utiliSa el comando:
!LI" 9o'$%e %oa' c2an;skinn1.so
0?ec + 11")+"184 C<(ACE03)5*4" chanskinny.c",1** confi%load" Confi%urin% skinny fro$
skinny.conf
77 Farsin% ./etc/asterisk/skinny.conf." 77 Nound
77 2kinny listenin% on ).).).)"2)))
77 1e%istered channel ty#e .2kinny. (2kinny Client Control Frotocol (2kinny!!
77 9ana%er re%istered action 2=ACC&devices
77 9ana%er re%istered action 2=ACC&showdevice
77 9ana%er re%istered action 2=ACC&lines
77 9ana%er re%istered action 2=ACC&showline
>oaded chanskinny.so 7R (2kinny Client Control Frotocol (2kinny!!
*l modulo cargado de esta forma quedar# activo hasta el siguiente reinicio de %steris&2
2.L MZsica en esera 1 M03
-na de las funcionalidades de %steris& es la mFsica en espera2 *n muchos servicios de asistencia al
cliente es tpico escucharla mientras se espera que algFn operador nos atienda2 *n este p#rrafo se
mostrar# la configuracin de la mFsica en espera con archivos '832
8rimero se crea la carpeta donde guardar los archivos '83:
9k'ir @var@%i(@asterisk@9o293
(e descarga un archivo mp3 en la carpeta creada2
c' @var@%i(@asterisk@9o293
wget 2tt)@@www.voztovoice.org@t9@"resas.93
@?
Informaciones sobre el archivo:
so3 ..i "resas.93
Derminada la descarga del fichero '830 el paso que sigue es configurar el archivo musiconhold2conf0
utiliSado para este tipo de configuracin2
(e modifica de la siguiente manera:
nano @etc@asterisk@9$sicon2o%'.con"
(e aaden las siguientes lneas al final del archivo:
Kmp%L
mode=files
director0=/var/lib/asteris+/mo*mp%
random=0es
Ymp3Z G ,ombre de la nueva clase de mFsica en espera
mode= files G la nueva clase utiliSar# archivos audio
directory=/var/lib/asteris&/mohmp3 G los archivos se encontrar#n en la carpeta indicada en el
parametro directory
random=yes G los archivos audio se utiliSar#n de forma aleatoria
(e accede a la consola de %steris&:
asterisk .rvvvvvvvvvvvvv
(e escribe:
!LI" 9o2 re%oa'
para recargar la configuracin de la mFsica en espera2
!LI" 9o2 s2ow c%asses
8ara ver las clases de mFsica en espera configuradas2 %parecer#:
@B
Class" default
localhos9ode" files
localhos?irectory" /var/li'/asterisk/$oh
Class" $#3
9ode" files
?irectory" /var/li'/asterisk/$oh$#3
!LI" B$it
!uando se utiliSan archivos '83 para la mFsica en espera0 hay que tener en cuenta que el sistema
necesitar# utiliSar bastante recursos de la !8-2 *sto porque los archivo '83 tendr#n que ser
convertidos en el formato audio requerido por el canal que est# accediendo al servicio2
!onsiderando que los tel5fonos I8 no tienen un sistema de audio de alta calidad se puede ba$ar la
frecuencia de muestreo de los archivos '83 sin perder en calidad del audio escuchado2 *l programa
que permite este tipo de operacin es el mismo (LH2
so3 "resas.93 .V .r 220L0 .c 1 "resas1.93
Ic 1 se pasa el archivo de est5reo a mono (un canal!.
Ir ::>?> frecuencia de muestreo de @@1>> 6/S a ::>?> 6S2
archivo12mp3 G nombre del archivo resultado de la conversin2
-sando la opcin I9 aparecer# en la pantalla todo el proceso:
@<
(e borra el archivo original:
r9 "resas.93
r$" re$ove re%ular file :fresas.$#3.; &
8ara probar la nueva configuracin se necesita crear una extensin en el archivo extensions2conf (el
dial#lan o #lan de $arcado! que se ver# m#s adelante2
+M0O6TA#T-) ca'a vez B$e se 9o'i"ican o aFa'en n$evos arc2ivos en %a careta 2a1
B$e recargar %a con"ig$raci&n 'e %a 9Zsica en esera o reiniciar Asterisk)
@etc@init.'@asterisk restart
8ara luego averiguar que efectivamente el archivo mp3 est5 presente en la lista de archivos para la
musica en espera Ymp3Z
asterisk .rvvvvvvvvvvvvvvv
!LI" 9o2 s2ow "i%es
Class" default
Nile" /var/li'/asterisk/$oh/$acrofor$-thesi$#licity
Nile" /var/li'/asterisk/$oh/$anoloca$#-$ornin%coffee
Nile" /var/li'/asterisk/$oh/$acrofor$-ro'otdity
Nile" /var/li'/asterisk/$oh/reno#roGect-syste$
Nile" /var/li'/asterisk/$oh/$acrofor$-coldday
Class" $#3
8ileG /var/lib/asteris+/mo*mp%/fresas(
2.6 -% co9an'o asterisk
!omo se ha visto anteriormente0 para entrar en la consola de %steris&0 se ha utiliSado el comando:
asterisk .rvvvvvvvvvvvvvvvvvvvvv
La opcin Ir significa que la conexin se hace a un instancia de %steris& que ya est# corriendo0 el
numero de v presentes despu5s de la r0 indica el grado de detalle que se quiere tener en la consola2 8ara
una lista de los comando disponibles:
asterisk .2
3sterisk 1.8.2).1D Co#yri%ht (C! 1+++ - 2)12D ?i%iu$D Anc. and others.
Esa%e" asterisk 0<F(A<C24
Palid <#tions"
-P ?is#lay version nu$'er and eBit
-C Sconfi%fileR Ese an alternate confi%uration file
-Q S%rou#R 1un as a %rou# other than the caller
@A
-E SuserR 1un as a user other than the caller
-c Frovide console C>A
-d Ena'le eBtra de'u%%in%
-f ?o not fork
-N 3lways fork
-% ?u$# core in case of a crash
-h (his hel# screen
-i AnitialiTe cry#to keys at startu#
-A Ena'le internal ti$in% if ?3@?A ti$er is availa'le
-> SloadR >i$it the $aBi$u$ load avera%e 'efore reGectin% new calls
-9 SvalueR >i$it the $aBi$u$ nu$'er of calls to the s#ecified value
-$ 9ute de'u%%in% and console out#ut on the console
-n ?isa'le console coloriTation
-# 1un as #seudo-realti$e thread
-M Iuiet $ode (su##ress out#ut!
-r Connect to 3sterisk on this $achine
-1 2a$e as -rD eBce#t atte$#t to reconnect if disconnected
-s SsocketR Connect to 3sterisk via socket SsocketR (only valid with -r!
-t 1ecord soundfiles in /var/t$# and $ove the$ where they
'elon% after they are done
-( ?is#lay the ti$e in 09$$ dd hh"$$"ss4 for$at for each line
of out#ut to the C>A
-v Ancrease ver'osity ($ulti#le v.s 7 $ore ver'ose!
-B Sc$dR EBecute co$$and Sc$dR (i$#lies -r!
-O EBecute includes 'y default (allows 8eBec in asterisk.conf!
-J 3dGust ter$inal colors to co$#ensate for a li%ht 'ack%round
(i se quiere ver la versin de %steris&:
asterisk .V
3sterisk 1.8.2).1
(i se quiere iniciar %steris& directamente sin utiliSar el script de arranque0 primero se para el servicio:
service asterisk sto
y luego de utiliSa la opcin Ic
asterisk .cvvvvvvvvvvvvvvvvvvvvv
para salir de la consola y terminar el programa:
!LI" core sto now
%lgunas de las opciones disponibles0 se ver#n a lo largo del curso2 8ara terminar se reinicia el %steris&:
service asterisk start
@E
2.J 0rearaci&n 'e% 'ia%%an / e3tensions.con"
*l archivo de configuracin de %steris& extensions2conf es donde se define el dialplan de la centralita2
Dodas las llamadas entrantes y salientes se procesan en este archivo2 8ara que %steris& sepa come
tratarlas se definen contextos0 extensiones y prioridades2 '#s adelante se ver# como se crea un
contexto y dentro del contexto las extensiones y las prioridades2 -na pequea par5ntesis2 *n el lengua$e
comFn0 la extensin es el numero de tel5fono interno de una oficina o de un determinado servicio con
el que se quiere comunicar2 *n el caso de %steris&0 la extensin es una serie de nFmeros o letras que
definen un bloque del dialplan dentro del cual se e$ecutan aplicaciones o funciones de la 8BH2
*l dialplan se puede escribir tambi5n en lengua$e %*L y L-%2 !omo en este libro no se van a utiliSar
es me$or desactivar los respectivos mdulos:
nano @etc@asterisk@9o'$%es.con"
al final del archivo se aade:
noload =N pbx5ael#so
noload =N pbx5lua#so
(e guardan los cambios y se reinicia %steris&:
service asterisk restart
*n este p#rrafo se presentar# la configuracin base del archivo para luego enriquecerlo a lo largo del
libro2 *ste archivo se divide en tres bloques:
8arte general
8arte dedicada a las variables globales
el dialplan
*n la columna descripcin0 en negrita0 el valor asociado al par#metro2 %l final del modulo0 la
configuracin completa del archivo2
0ar!9etro ,escrici&n
YgeneralZ etiqueta que da inicio a la parte general
static no=cuando se modifica una extensin en el
dialplan el modulo pbxCconfig reescribir# este
archivo y se perder#n todos los comentarios
presentes2
1es=el modulo pbxCconfig no actualiSa
autom#ticamente el dialplan
4riteprotect si 4riteprotect=no y static=yes y se guarda la
?>
0ar!9etro ,escrici&n
configuracin del dialplan con el comando
Mdialplan saveN se perder#n todos los comentarios
presentes en el archivo2
si 4riteprotect=1es no se perder#n los comentarios
y se desactiva el comando Mdialplan saveN
autofallthrough 1es=si una llamada0 por cualquier motivo0 se sale
del dialplan ser# terminada
extenpatternmatchne4 1es=me$ora la velocidad de elaboracin del
dialplan para contextos con un numero elevado de
extensiones2
clearglobalvars no=si se recarga el dialplan0 las variables globales
mantendr#n su valor definido
1es=si se recarga el dialplan0 las variables globales
ser#n rea$ustadas y asociadas nuevamente
YglobalsZ desde esta etiqueta empieSa la definicin de las
variables globales2
1>>> se asocia a la variable 1>>> un valor2 *n este caso
S+0@1000
K-(D se asocia a la variable K-(D el valor S+0@5$stvoi
mar&o se asocia a la variable mar&o el valor
+AX2@9arko
Derminada la configuracin general y globals se empieSa a construir el dialplan2 8ara iniciar se crearan
dos contexto: internas y externas2 *n uno se definir# la parte accesible a todas las extensiones y en el
otro la parte dedicada a las llamadas salientes2 /e esta forma se podr# controlar quienes tienen acceso y
a que2 !ada contexto se compone de extensiones y cada extensin de prioridades2 -n primero e$emplo:
KinternasL
se define el contexto internas
exten =N ("%B(B/ns1er
el comando exten =" es para definir una extensin2 1:3 es la extensin0 1 es la prioridad y %ns4er es la
aplicacin que se utiliSar#2 *n este caso %ns4er contesta la llamada
La segunda linea:
exten =N ("%B"B-la0bac+!*ello&1orld)
la extensin es la misma0 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 est# llamando
?1
La tercera linea:
exten =N ("%B%BOangup
la extensin es siempre la misma0 la prioridad es la numero 3 y la aplicacin es 6angup que lo que hace
es terminar la llamada2
!on este primer e$emplo ya se puede empeSar a entender como funciona el dialplan2 /esde una
extensin conectada a %steris& se marca 1:3 y si esa extensin tiene acceso al contexto internas0 se
e$ecutar# la primera linea0 luego la segunda y por ultimo la tercera2 Las prioridades indican el orden en
que se procesa el dialplan para una determinada extensin2
Ltra forma de escribir esta parte del dialplan es:
exten =N ("%B(B/ns1er
exten =N ("%BnB-la0bac+!*ello&1orld)
exten =N ("%BnBOangup
La n de la segunda y tercera linea est# por MnextN y aade una prioridad a la que la precede2 /esde la
versin 12B2:2H de %steris& hay una forma mucho m#s sencilla de escribir el dialplan y es la que se
utiliSar# en este libro:
exten =N ("%B(B/ns1er
same =N nB-la0bac+!*ello&1orld)
same =N nBOangup
el sa9e con que empieSa la segunda y la tercera linea significa que se est# traba$ando con el mismo
numero de extensin O1:3 en este casoP y ya no hace falta indicarlo2
%hora se configura otra extensin que permite escuchar la mFsica de espera '83 creada en el p#rrafo
:2?:
exten =N "00B(B/ns1er
same =N nB?usicOnOold!mp%B$0)
same =N nBOangup
'arcando la extensin :>>0 %steris& contestar# la llamada O%ns4erP e$ecutar# la aplicacin
'usicLn6old que permite escuchar la mFsica de espera de una clase configurada en el archivo
musiconhold2conf Oes este caso la clase mp3P2 La segunda opcin OB>P define el tiempo0 en segundos0
que se escuchar# la mFsica2 8asados los B> segundos0 la llamada terminar# O6angupP2
*n el dialplan se pueden definir contextos que incluyen otros contextos2 /e esta forma si un
determinado contexto incluye otro0 ese contexto tendr# acceso a las extensiones presentes en el
contexto incluido2 8or ahora se definen dos de esta forma:
KexternasL
?:
include =N internas
KlocalesL
include =N internas
!on estos primeros datos se construye el dialplan2 (e renombra el archivo predefinido:
9v @etc@asterisk@e3tensions.con" @etc@asterisk@e3tensions.con".o%'
se crea uno nuevo:
nano @etc@asterisk@e3tensions.con"
y se copian las siguientes lineas:
KgeneralL
static=0es
1riteprotect=0se
autofallt*roug*=0se
extenpatternmatc*ne1=0se
clearglobalvars=0es
KglobalsL
(000=@-/(000
P67=@-/<ustvoip
mar+o=@/Q"/mar+o
KinternasL
exten =N ("%B(B/ns1er
same =N nB-la0bac+!*ello&1orld)
same =N nBOangup
exten =N "00B(B/ns1er
same =N nB?usicOnOold!mp%B$0)
same =N nBOangup
KexternasL
include =N internas
KlocalesL
include =N internas
(e guarda la configuracin y se recarga el dialplan desde la consola de %steris&:
asterisk .rvvvvvvvvvvvvv
!LI" 'ia%%an re%oa'
?3
8ara ver el contexto externas:
!LI" 'ia%%an s2ow e3ternas
0 ConteBt .eBternas. created 'y .#'Bconfi%. 4
Anclude 7R .internas. 0#'Bconfi%4
-7 ) eBtensions () #riorities! in 1 conteBt. 7-
8ara ver el contexto internas:
!LI" 'ia%%an s2ow internas
0 ConteBt .internas. created 'y .#'Bconfi%. 4
.123. 7R 1. 3nswer(! 0#'Bconfi%4
2. Flay'ack(helloworld! 0#'Bconfi%4
3. @an%u#(! 0#'Bconfi%4
.2)). 7R 1. 3nswer(! 0#'Bconfi%4
2. 9usic<n@old($#3D6)! 0#'Bconfi%4
3. @an%u#(! 0#'Bconfi%4
-7 2 eBtensions (6 #riorities! in 1 conteBt. 7-
8ara una lista de comandos disponibles:
!LI" 2e% 'ia%%an
dial#lan add eBtension 3dd new eBtension into conteBt
dial#lan add i%nore#at 3dd new i%nore #attern
dial#lan add include Anclude conteBt in other conteBt
dial#lan de'u% 2how fast eBtension #attern $atchin% data structures
dial#lan reload 1eload eBtensions and 6only6 eBtensions
dial#lan re$ove eBtension 1e$ove a s#ecified eBtension
dial#lan re$ove i%nore#at 1e$ove i%nore #attern fro$ conteBt
dial#lan re$ove include 1e$ove a s#ecified include fro$ conteBt
dial#lan save 2ave current dial#lan into a file
dial#lan set chanvar 2et a channel varia'le
dial#lan set eBten#attern$atch Ese the <ld eBtension #attern $atchin% al%orith$.
dial#lan set eBten#attern$atch Ese the Cew eBtension #attern $atchin% al%orith$.
dial#lan set %lo'al 2et %lo'al dial#lan varia'le
dial#lan show chanvar 2how channel varia'les
dial#lan show %lo'als 2how %lo'al dial#lan varia'les
dial#lan show 2how dial#lan
?@
Cait$%o +++
0rotoco%o S+0 1 e% arc2ivo si.con"
*l protocolo (I8 es un protocolo de sealiSacin que permite:
localiSar un usuario
contactar un usuario para determinar su voluntad de establecer una sesin
,egociacin de los media Oaudio/videoP que se utiliSar#n a lo largo de la sesin
'odificar una sesin establecida
Derminar una sesin establecida
*ste protocolo ha sido definido por la I*D. ODhe Internet *ngineering Das& .orceP que es la entidad
que se encarga de definir los est#ndar para la red Internet2 *n este caso el documento que define el
protocolo (I8 es el ;.! O;equest for !ommentsP 3:B12 *n ese documento se explica como deben
funcionar programas y/o dispositivos que quieran implementar el protocolo (I82 /esde un punto de
vista del funcionamiento0 los mensa$es que se envan son una meScla entre el protocolo 6DD8
O6ypertext Dransfer 8rotocolP y el protocolo ('D8 O(imple 'ail Dransfer 8rotocolP2 /entro del
protocolo (I8 existen los m5todos0 que representan las distintas solicitudes que un dispositivo puede
enviar a otro2 Los seis m5todos principales del protocolo (I8 son:
;*+I(D*;
I,9ID*
BQ*
%!T
!%,!*L
L8DIL,(
%steris& 8BH es un B:B-% Obac&ItoIbac& user agentP y su funcin es la de hacer de MintermediarioN
entre los usuarios2 -n usuario Oo -ser %gent como definido en el protocolo (I8P enviar# todas sus
peticiones a %steris& que se encargar# de procesarlas y de esta forma permitir establecer sesiones
media2 !omo %steris& implementa distintos tipos de protocolos O(I80 I%H:0 63:3P0 5l mismo se
encargar# de establecer llamadas entre usuarios que est#n utiliSando diferentes protocolos2
*n %steris&0 el archivo sip2conf es donde se definen las extensiones (I80 los proveedores (I8 y0 en
general0 todo lo relacionado con el protocolo (I82 *l archivo sip2conf est# estructurado en tres bloques:
-na parte general donde se define la configuracin global del protocolo (I82 %l momento de
configurar una extensin o una troncal0 si no se definen algunos par#metros0 estos ser#n
tomados de la parte general del archivo2 -n e$emplo son los codecs audio2
-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 internas0 las troncales y las conexiones a
otros servidores %steris&2
6ay que pensar en %steris& como un conmutador que quiS#s algFn da hemos visto en la recepcin de
un 6otel o una empresa2 %steris& tiene las mismas funcionalidades2 !on las extensiones configuradas
se podr#n llamar entre ellas0 se podr#n efectuar llamadas a tel5fonos fi$os y/o celulares0 utiliSar
proveedores (I80 +ate4ay 8(D,0 y aprovechar los tpicos servicios de una 8BH como llamada en
espera0 desvo de llamadas0 llamada a tres0 contestador autom#tico0 buSn de voS0 etc2
*n los 98( Linode hay la posibilidad de activar una direccin I8 local2 ,ormalmente se utiliSa para la
creacin de una red local entre distintos 98( que est5n en el mismo /atacenter2 *n este caso se activa
para volver la configuracin del sip2conf lo m#s real posible2 8ara hacerlo se entra en la pagina de
administracin del 98( y en la pestaa M;emote %ccessN se escoge el enlace evidenciado en la imagen
que sigue:
%parecer# la direccin I8 local:
(e anota el valor y se configura una nueva tar$eta de red virtual:
nano @etc@s1scon"ig@network.scrits@i"c"g.et20)1
(e aaden estas lineas:
=>R@C>=et*0G(
FOO7-.O7O=none
ONFOO7=0es
@-/==.=(9"#($'#('(#(5
N>7?/I="55#"55#("'#0
*n I8%//; se pone la I8 local creada en su 98( Linode2 (e guardan las modificaciones y se reinicia
la red del servidor:
service network restart
!on el comando:
i"con"ig
?<
se ver# la nueva tar$eta de red configurada:
3.1 si.con"
La configuracin que sigue abarca los par#metros m#s importantes del sip2confU cada lnea de la tabla
viene acompaada por una breve explicacin (i es presente un asterisco antes del nombre del
par#metro0 significa que es una nueva funcionalidad aadida con la versin 12A de %steris& o que han
habido cambios en su configuracin2 *n negrita la opcin que se utiliSar# para cada par#metro2 %l final
de la tabla0 la configuracin completa del archivo2
0ar!9etro ,escrici&n
YgeneralZ etiqueta que introduce la parte general de la configuracin
context 'e"a$%t = el contexto donde llegar#n las llamadas no
autenticadas si allo4guest=yes
allo4guest #o = no se permiten llamadas entrantes OI,9ID*P de usuarios
no autenticados Oaumenta la seguridad de %steris&P
Qes = se permiten llamadas entrantes OI,9ID* de usuarios no
autenticados
allo4transfer *n casi todos los tel5fonos (I80 a lo largo de una llamada0 es
posible presionar un botn para transferirla a otra
extensin/numero2 *ste par#metro define si %steris& aceptar#
este tipo de solicitudes2 8osibles opciones: ,o y Ves
realm si al servidor es asociado un dominio registrado0 se puede definir
este par#metro para que la autentificacin se haga utiliSando ese
nombre de dominio Odigest authentication ;.!:B1<P2 (e de$a
comentado
^udpbindaddr *s la direccin I8 y el puerto donde %steris& se pondr# a la
escucha para las sealiSacin (I8 utiliSando el protocolo -/82
!omo desde la versin 12A0 %steris& soporta el protocolo I8vB
para el protocolo (I80 es posible configurar cuatro escenarios
distintos:
12 1E:21BA212> G %steris& aceptar# conexiones solamente si
enviadas a la direccin I8v@ indicada
:2 :B>>:3c>>::f>3c:E1ff:fedf:a@?? I %steris& aceptar#
conexiones solamente si enviadas a la direccin I8vB
indicada
32 >2>2>2> G %steris& aceptar# conexiones en todas las
?A
0ar!9etro ,escrici&n
direcciones I8v@ presentes en el servidor Linux
@2 :: I %steris& aceptar# conexiones en todas las direcciones
I8v@ y I8vB dando prioridad a la primera I8 que
encuentra2 *n el caso de Linode ser# I8vB
!omo se va a traba$ar con I8v@0 para que %steris& escuche en
todas las direcciones I8v@ puerto ?>B> Oel predefinidoP el 9alor
es: 0.0.0.0)L060
tcpenable /esde la versin 12B es posible configurar %steris& para que
permita la sealiSacin (I8 sobre el protocolo D!8 9alor 1es
^tcpbindaddr *s la direccin I8 y el puerto donde %steris& se pondr# a la
escucha para las sealiSacin (I8 utiliSando el protocolo D!82
!omo para el protocolo -/8 es posible utiliSar cuatro
escenarios distintos para indicar I8 y puerto de escucha2 *n este
caso se configurar# para que escuche en todas las direcciones
I8v@ puerto ?>B>2 9alor: 0.0.0.0)L60
tcpauthtimeout ;epresenta el nFmeros de segundos que tiene a disposicin un
cliente para registrarse utiliSando el protocolo D!82 (i no lo hace
antes del tiempo indicado0 sera desconectado2 9alor: 30
tcpauthlimit ,umero m#ximo de conexiones no autenticadas permitidas
utiliSando el protocolo D!82 9alor:100
transport /efine el protocolo de trasporte predefinido para la sealiSacin
(I82 9alor: $'
srvloo&up 8ermite hacer bFsquedas de registros /,( (;9 basadas en los
nombres de dominio para llamadas (I8 salientes del tipo:
usuario_dominio2 %steris& hace esta bFsqueda limit#ndose al
primer valor encontrado2 9alor: Ves
maxexpiry Diempo m#ximo0 en segundos0 permitido para ;*+I(D*; y
(-B(!;IB* entrantes2 9alor 3600 *sto significa que cuando
una extensin se registre a %steris&0 m#ximo cada 3B>>
segundos tendr# que volver a registrarse aunque en la
configuracin de la extensin O(oftphone0 %D%0 tel5fono (I8 se
haya indicado un valor mayor a 3B>>
minexpiry Diempo mnimo0 en segundos0 permitido para ;*+I(D*; y
(-B(!;IB* entrantes2 9alor: 60
defaultexpiry !uando un cliente se registra a %steris&0 enva en el paquete (I8
;*+I(D*; el tiempo de duracin de su registro2 *n el caso que
no lo haga0 %steris& considerar# que el registro durar# el tiempo
indicado en este par#metro expresado en segundos2 9alor: 120
m4iexpiry La mayora de los tel5fonos (I80 cuando la extensin registrada
recibe un nuevo mensa$e en el buSn de voS0 lo sealan a trav5s
de un icono en la pantalla o un indicador luminoso2 *sto porque
?E
0ar!9etro ,escrici&n
se MsuscribeN a este tipo de servicio en el servidor %steris&2 *ste
par#metro indica cada cuantos segundos las suscripcin tendr#
que ser renovada2 9alor 3600
maxfor4ards !ada veS que un Mmensa$eN (ip se enva puede atravesar
distintos servidores antes de llegar al destinatario2 !on este
par#metro se limita el numero de veces que se puede reenviar2
(e utiliSa tambi5n para evitar que se creen bucles2 9alor2 J0
qualifyfreq !ada cuantos segundos enviar un paquete L8DIL,( a la
extensin registrada en %steris&2 *sto permite saber si la
extensin misma es alcanSable y al mismo tiempo mantener
abierta la conexin con la extensiones que se encuentran detr#s
de un ,%D2 *l m5todo L8DIL,( del protocolo (I8 se utiliSa
tambi5n para conocer los m5todos disponible en un determinado
cliente2 9alor 60
^preferredCcodecConly %steris& contesta a un I,9ID* entrante con un solo codec audio
en lugar de enviar toda la lista de codecs configurados para una
determinada extensin2 *sto permite que el llamante enve el
flu$o audio con el codec que se ha establecido2 9alor: no
disallo4 a%% G (e desactivan todos los codec audio y video
allo4 (e indican los codec audio y video utiliSables2 8ueden ser
indicados uno por linea o en la misma linea separados por una
coma:
a%%owQa%aw
a%%owQ$%aw
o
allo4=ala40ula4
ula4: se utiliSa en *stados -nidos0 !anad# y %ustralia
ala4 = se utiliSa en %sia0 *uropa0 `frica y %m5rica Latina
mohinterpret clase de mFsica de espera predefinida G 'e"a$%t
mohsuggest !lase de mFsica de espera cuando un canal de tipo peer se pone
en espera G 'e"a$%t
par&inglot %steris&0 entre sus funcionalidades0 permite parquear una
llamada2 !omo desde la versin 12B2H es posible configurar m#s
de un McontextoN de parqueo0 en este par#metro se indica el
predefinido2 9alor: 'e"a$%t
language el idioma predefinido para las locuciones 2 9alor es O*spaolP
relaxdtmf !onfigurar en yes si %steris& tiene problemas en reconocer los
/D'. OtonosP recibidos2 9alor: no
sendrpid !omo se ver# m#s adelante cada Mmensa$eN (I8 se compone de
diferentes lineas2 !ada linea se llama 6*%/*; o cabecera2 *ste
B>
0ar!9etro ,escrici&n
par#metro define se entre los distintos 6*%/*; se enva
tambi5n el ;emoteI8artyII/2 *ste par#metro es muy Ftil para las
transferencias atendida de las llamadas entre extensiones 9alor:
1es
trustrpid 1es Q la cabecera ;emoteI8artyII/ tiene que ser de confianSa
para ser aceptada2
rpidCupdate *n algunos casos0 la Fnica forma de actualiSar los datos de una
sesin es enviando un paquete (I8 -8/%D*2 !on este
par#metro se activa o desactiva2 9alor: 1es
prematuremedia *n %steris& es posible enviar audio aunque la llamada no ha sido
contestada2 -n e$emplo es cuando llamamos un numero celular
Oen !olombiaP y si nadie contesta escuchamos la voS que dice
a(istema correo de voS2 Dendr# cobro a partir de este momentoa2
(i colgamos0 no pagamos nada porque la llamada realmente no
ha sido contestada2 *sta funcionalidad se llama a*arly 'ediaa2
/urante el *arly 'edia0 los tonos /D'. no funcionan y no se
pueden utiliSar2 *ste comportamiento se obtiene poniendo como
valor no y en el dialplan utiliSando la aplicacin 8rogress
useragent %steris& se presentar# con este nombre al momento de
comunicarse con otros servidores o proveedores (I82 9alor:
VozToVoice v. 1.0 8ersonaliSar
sdpsession asterisk
sdpo4ner asterisk
dtmfmode protocolo para el envo de los /D'. O/ualIDone 'ultiI
.requencyP2 (eran los tonos que se generan cuando se hunden
las teclas del tel5fono2 9alor: r"c2833 Ltro valor bastante comFn
es inband2 !on inband los tonos se envan en el flu$o audio
Oprotocolo ;D8P2 Inband no funciona con el codec audio +<:E y
+<::2 % cada tecla del tel5fono est#n asociados dos tonos de
diferente frecuencia:
;.!@<33
videosupport no=no se activa el soporte para vdeo llamadas
B1
0ar!9etro ,escrici&n
1es=se activa el soporte para vdeo llamadas
maxcallbitrate Banda m#xima utiliSable para vdeo llamadas Opredefinida 384
&b/sP
callevents 1es=cuando el estado de una extensin cambia0 el %steris&
'anager Interface O%'IP genera el correspondiente evento
authfailureevents 1es=el %'I generar# un evento cuando una peer no se puede
autenticar con la 8BH
al4aysauthre$ect 1es=cuando un I,9ID* o un ;*+I(D*; es rechaSado por
%steris&0 en lugar de enviar el verdadero motivo del rechaSo0
%steris& contestar# siempre con un @>1 -nauthoriSed2 /e esta
forma no da pistas a los que est#n intentando acceder al sistema
useCqA?>Creason Ves 8ermite el envo de los cdigos )A?> en el 6eader ;eason
que normalmente se utiliSa para conocer el porque una llamada
(I8 ha sido terminada2 *sta serie de cdigos0 es utiliSado por
algunos +ate4ay para me$orar la compatibilidad con el
protocolo (I8
rtptimeout 60=si en una llamada establecida no hay flu$o audio por B>
segundos la llamada ser# terminada
rtpholdtimeout 300=si en una llamada en espera no hay flu$o audio por 3>>
segundos0 la llamada ser# terminada
rtp&eepalive 0=no enva un paquete -/8 utiliSando el protocolo ;8D para
mantener abierto el ,%D a lo largo de una sesin media2
allo4subscribe 1es=permite suscribirse al estado de una extensin
subscribecontext s$(scri(e=*ste par#metro define el contexto que se utiliSar#
para permitir a las extensiones acceder al estado de otras2
notifyringing 1es=,otifica si la extensin est# timbrando
notifyhold 1es= ,otifica si la extensin est# en espera
callcounter 1es=cuenta el numero de canales utiliSados por una extensin2
*ste par#metro $unto a las funciones +;L-8 y
+;L-8C!L-,D permite limitar el numero de llamadas
simultaneas que una extensin puede efectuar/recibir
^t3AptCudptl 8ermite el uso del protocolo D3A (faB so're AF!2 /esde la
versin 12A2H0 la aplicacin para enviar y recibir fax ha sido
reescrita totalmente2 *l nuevo modulo se llama resCfax que
sustituye el vie$o appCfax ahora MdeprecatedN 9alor:
0esBfecBmaxdatagram=;00
faxdetect 8ermite diferenciar el tratamiento de las llamadas entrantes
segFn sea un fax o una llamada de voS2 Los valores permitidos
son:
B:
0ar!9etro ,escrici&n
1es = 6abilita la deteccin de .%H D3> y D3A
no = deshabilitado
cng = 6abilita la deteccin de .%H D3>
t3A = 6abilita la deteccin de .%H D3A
localnet *n el caso que %steris& est5 instalado en una red local que se
encuentra detr#s de un ,%D0 hay que indicar el rango de
direcciones I8 de la red local2 *n el caso del 98( Linode se
pone la direccin I8 local creada OpersonaliSar con la I8 local de
su 98(P *$emplo: 1R2.168.128.0@2LL.2LL.128.0
externaddr (i %steris& est# instalado detr#s de un ,%D0 con este par#metro
se indica la direccin I8 publica de la red2 *n el 98( Linode se
pone la I8 del servidor2 *$emplo R6.126.121.13L 8ersonaliSar
Uexternhost (i la direccin I8 publica es din#mica o est# asociada a un
nombre de dominio0 en lugar de externaddr se utiliSa este
par#metro2 (i no se posee un nombre de dominio0 se puede
utiliSar el servicio de dyndns2 *n el 98( Linode se de$a
comentado
Uexternrefresh !ada cuantos segundos actualiSar la asociacin direccin I8 G
nombre de dominio2 *n el 98( Linode se de$a comentado
^nat /efine el tipo de comportamiento que debe tener %steris& al
conectarse con otras extensiones/dispositivos2 Los distintos
valores son:
no = usa el par#metro rport O;.!3?A1P solamente si el cliente
remoto lo requiere
forceCrport = impone siempre el uso del par#metro rport
1es = impone siempre el uso del par#metro rport y enva el flu$o
audio/video por el mismo puerto utiliSado por el dispositivo
remoto2
comedia = usa el par#metro rport solamente si requerido por el
dispositivo remoto y utiliSa el M!omedia ;8D handlingN0 es
decir enva el flu$o media por el mismo puerto de donde lo
recibe desde el dispositivo remoto2
directmedia no=no se permite el flu$o media directo Oprotocolo ;8DP entre
las extensiones2 *l flu$o directo solo es posible cuando las
extensiones no se encuentran detr#s de un ,%D
nonat=se permite el flu$o media directo entre las extensiones
solamente si no est#n detr#s de un ,%D2 *l mismo protocolo
;D8 logra reconocer si una extensin se encuentra detr#s de un
,%D o no2
update= utiliSa el m5todo -8/%D* en lugar de un reI,9ID*
para enviar el flu$o media directamente entre las extensiones2
B3
0ar!9etro ,escrici&n
UmediaCaddress (i se quiere que el trafico ;D8 Oaudio/videoP via$e sobre una I8
distinta a la de la sealiSacin (I80 se puede definir en este
par#metro2 (e de$a comentado
rtcachefriends *ste par#metro aplica cuando las extensiones est#n configuradas
en una base de datos Ose ver# m#s adelanteP2 9alor no
rtupdate este par#metro tambi5n aplica cuando las extensiones est#n
configuradas en una base de datos2 !uando una de estas
extensiones se registre a %steirs&0 en la base de datos se
guardar# la direccin I80 el puerto0 el tiempo de registro y el
nombre de usuario2 9alor 1es
register =" !on esta linea empieSa el segundo bloque del archivo sip2conf y
se utiliSa para registrarse a servidores externosU normalmente
proveedores (I8 o otro servidores %steris&2 *l par#metro se de$a
comentado y a seguir se presentan algunos e$emplos:
register =N fulanoGsesamoSsip#provider(#com
8ara el registro con el proveedor el username ser# fulano0 la
contrasea sesamo y el dominio sip2provider12com2 (i el
proveedor usa un puerto que no es el ?>B> hay que especificarlo
al final de la lnea de esta forma:
register =N fulanoGsesamoSsip#provider(#comG50$(
*n los dos casos las llamadas entrantes llegaran a la extensin s
y al contexto que se define en la configuracin de la extensin2
(i se quiere que las llamadas entren a una extensin predefinida0
hay que aadir al final de la linea el numero2 *ste numero puede
ser arbitrario siempre y cuando los proveedores (I8 no
especifiquen diversamente:
register =N fulanoGcontraseTaSsip#provider(#com/("%;
registertimeout (i %steris& pierde el registro0 este par#metro representa el
numero de segundos que %steris& esperar# antes de volver a
intentar registrarse2 9alor 20
registerattempts este par#metro representa el numero de intentos que %steris&
efectuar# para registrarse2 (i sepone >0 los intentos ser#n
infinitos2 9alor 10
m4i =" /esde la versin 12B2:2H se puede subscribir el estado de un
buSn de voS de un servidor remoto2 *n este e$emplo el buSn
1:3@ y contexto (I8Cremote2 8ara subscribirse en la
configuracin de la extensin se indicar#:
mailbox=1:3@_(I8C;emote2 9alor:
("%;Gpass1ordSm0sipprovider#com/("%;
La ultima parte es dedicada a la configuracin de las extensiones2 *n el caso del 98( Linode todas las
extensiones se conectar#n detr#s de un ,%D Orouter banda ancha y/o otro tipo de conexin InternetP2
B@
0ar!9etro ,escrici&n
Y1>>>Z ,umero de la extensin
accountcode !digo que aparecer# en el registro de llamadas
para esta extensin2 9alor 1000
language es=esta extensin utiliSar# las locuciones en
espaol
type "rien'=es un user y peer al mismo tiempo
user: una extensin que se autentica al
servidor %steris& usando el campo .rom
para hacer llamadas2
eer una extensin que se autentica para
las llamadas entrantes utiliSando la
direccin I8 y el puerto
secret La contrasea para la extensin2 8ersonaliSar
9alor: (3R0R0R0
qualify *ste par#metro se utiliSa para mantener activa la
conexin de una extensin que se conecta al
servidor %steris& detr#s de una ,%D2 9alor Ves
mailbox (i este par#metro es configurado0 cuando la
extensin se conecte al servidor %steris&0 5ste
controlar# si hay mensa$es de voS pendientes y en
caso positivo se lo comunicar# usando '=I =
'essage =aiting Indicator2 que puede ser recibida
por la mayora de los tel5fonos I8 o (oftphone
9alor 1000*'e"a$%t
host (i la extensin se conecta remotamente con un I8
din#mico se pone '1na9ic2 *n caso contrario se
pone la direccin I8
dtmfmode 8rotocolo para los tonos /D'. 9alor r"c2833
context *l contexto a que tendr# acceso la extensin2
9alor e3ternas como se ha creado en el dialplan
directmedia (i las extensiones0 como es el caso de una 98(
Linode0 est#n detr#s de un ,%D0 el valor es no
callerid el nombre y el numero que identifica la extensin
cuando llama2 valor 7$%ano [1000K 8ersonaliSar
callgroup
pic&upgroup
estos dos par#metros definen una de las
funcionalidades avanSadas de %steris&0 es decir la
posibilidad de capturar la llamada de una
extensin que est# timbrando0 desde otra
extensin2 9alor 1 para ambos
B?
disallo4 a%%=se deshabilita todos los codec Oaudio/videoP
allo4 a%aw=se habilita el codec audio ala4
allo4 gJ22=se habilita el codec audio g<::
allo4 gJ2R=se habilita el codec audio g<:E
allo4 2263=se habilita el codec video 6:B3
(e configura una segunda extensin:
K(00(L
t0pe=friend
accountcode=(00(
language=es
secret=pbx909(
Hualif0=0es
mailbox=(00(Sdefault
*ost=d0namic
dtmfmode=rfc"'%%
context=externas
directmedia=no
callerid=,utano U(00(N
callgroup=(
pic+upgroup=(
disallo1=all
allo1=ala1
allo1=gC""
allo1=gC"9
allo1=*"$%
!uando se deben configurar muchas extensiones0 se pueden crear templates OplantillasP donde se
definen todos los par#metros compartidos por todas las extensiones2 Luego para cada una de ellas0 se
configuran solamente los par#metros que la diferencian de las dem#s2 8ara crear un template la primera
linea debe tener esta sintaxis:
\int.%oca%es]8X:
YintIlocalesZ es la descripcin del template Oen este e$emplo se utiliSar# para configurar todas las
extensiones que tienen acceso solo a llamadas localesP2 O[P es las sintaxis que indica que se trata de un
template2 Luego se aaden todas las lineas comunes a todas las extensiones:
t0pe=friend
language=es
Hualif0=0es
*ost=d0namic
dtmfmode=rfc"'%%
context=locales
BB
directmedia=no
callgroup=(
pic+upgroup=(
disallo1=all
allo1=ala1
allo1=gC""
allo1=gC"9
allo1=*"$%
%hora para configurar una nueva extensin se puede utiliSar ese template de la siguiente forma:
K(00"L!int&locales)
accountcode=(00"
secret=pbx909"
mailbox=(00"Sdefault
callerid=?engano U(00"N
Derminada la configuracin de las extensiones0 se pasa a la troncal (I8 utiliSando0 en este caso0 el
proveedor (I8 Kust9oI82 !laramente puede ser cualquier proveedor 9oI82
0ar!9etro ,escrici&n
Y$ustvoipZ nombre que se le asigna a la troncal
type la troncal es de tipo eer Ose utiliSa solamente
para llamadas salienteP2
host si.5$stvoi.co9=dominio del proveedor (I8
fromdomain si.5$stvoi.co9=*ste par#metro permite definir
el nombre de dominio que aparecer# en la campo
.rom: de la cabecera (I82 'ucho proveedores lo
exigen para autenticar las llamadas
fromuser nombre de usuario2 *ste par#metro permite definir
el nombre de usuario que aparecer# en el campo
.rom de la cabecera (I82 'uchos proveedores lo
exigen para autenticar las llamadas2
defaultuser el mismo valor del par#metro fromuser
secret la contrasea2
qualify 1es
dtmfmode r"c2833
context "ro9.5$stvoi=el contexto donde llegar#n las
llamadas si se utiliSa el proveedor tambi5n para
las llamadas entrantes
B<
directmedia no
language es
nat no=no hay ,%D entre el servidor %steris& y el
proveedor (I8
disallo4 a%%
allo4 a%aw
allo4 gJ2R
%hora se puede copiar toda la configuracin en el archivo sip2conf2 %ntes que nada se renombra el
archivo sip2conf predefinido y se crea uno nuevo:
9v @etc@asterisk@si.con" @etc@asterisk@si.con".o%'
nano @etc@asterisk@si.con"
(e pegan las lineas que siguen:
KgeneralL
context=default
allo1guest=no
allo1transfer=0es
Jrealm=m0domain#tld
udpbindaddr=0#0#0#0G50$0
tcpenable=0es
tcpbindaddr=0#0#0#0G50$0
tcpaut*timeout=%0
tcpaut*limit=(00
transport=udp
srvloo+up=0es
maxexpir0=%$00
minexpir0=$0
defaultexpir0=("0
m1iexpir0=%$00
maxfor1ards=C0
Hualif0freH=$0
preferred5codec5onl0=no
disallo1=all
allo1=ula1
allo1=ala1
mo*interpret=default
mo*suggest=default
par+inglot=default
language=es
relaxdtmf=no
BA
sendrpid=0es
trustrpid=0es
rpid5update=0es
prematuremedia=no
useragent=Ro,7oRoice v# (#0
sdpsession=asteris+
sdpo1ner=asteris+
dtmfmode=rfc"'%%
videosupport=0es
maxcallbitrate=%';
callevents=0es
aut*failureevents=0es
al1a0saut*re<ect=0es
use5H'505reason=0es
rtptimeout=$0
rtp*oldtimeout=%00
rtp+eepalive=0
allo1subscribe=0es
subscribecontext=subscribe
notif0ringing=0es
notif0*old=0es
callcounter=0es
t%'pt5udptl=0esBfecBmaxdatagram=;00
faxdetect=0es
localnet=
externaddr=
Jextern*ost=prueba#d0ndns#org
Jexternrefres*=('0
nat=force5rport
directmedia=no
Jmedia5address=0#0#0#0
rtcac*efriends=no
rtupdate=0es
Jregister =N fulanoGsesamoSsip#provider(#com
Jregister =N fulanoGsesamoSsip#provider(#comG50$(
Jregister =N fulanoGcontraseTaSsip#provider(#com/("%;
registertimeout="0
registerattempts=(0
Jm1i =N ("%;Gpass1ordSm0sipprovider#com/("%;
K(000L
accountcode=(000
language=es
t0pe=friend
secret=pbx9090
Hualif0=0es
BE
mailbox=(000Sdefault
*ost=d0namic
dtmfmode=rfc"'%%
context=externas
directmedia=no
callerid=callerid=8ulano U(000N
callgroup=(
pic+upgroup=(
disallo1=all
allo1=ala1
allo1=gC""
allo1=gC"9
allo1=*"$%
K(00(L
t0pe=friend
accountcode=(00(
language=es
secret=pbx909(
Hualif0=0es
mailbox=(00(Sdefault
*ost=d0namic
dtmfmode=rfc"'%%
context=externas
directmedia=no
callerid=,utano U(00(N
callgroup=(
pic+upgroup=(
disallo1=all
allo1=ala1
allo1=gC""
allo1=gC"9
allo1=*"$%
Kint&localesL!M)
t0pe=friend
language=es
Hualif0=0es
*ost=d0namic
dtmfmode=rfc"'%%
context=locales
directmedia=no
callgroup=(
pic+upgroup=(
disallo1=all
allo1=ala1
allo1=gC""
<>
allo1=gC"9
allo1=*"$%
K(00"L!int&locales)
accountcode=(00"
secret=pbx909"
mailbox=(00"Sdefault
callerid=?engano U(00"N
K<ustvoipL
t0pe=peer
*ost=sip#<ustvoip#com
fromdomain=sip#<ustvoip#com
fromuser=
defaultuser=
secret=
Hualif0=0es
dtmfmode=rfc"'%%
context=from&<ustvoip
directmedia=no
language=es
nat=no
disallo1=all
allo1=ala1
allo1=gC"9
%ntes de guardar los cambios0 hay que personaliSar los par#metros %oca%net y e3terna''r en el bloque
generalU en el bloque del proveedor (I8 Kustvoip se ponen los datos de usuario y contrasea escogidos
al momento de la creacin de la cuenta con el proveedor2 !ada veS que se modifica la configuracin del
sip2conf hay que recargarla2 (e entra en la consola de %steris&:
asterisk .rvvvvvvvvvv
(e escribe el comando:
!LI" si re%oa'
8ara ver los peer configurados:
!LI" si s2ow eers
Ca$e/userna$e @ost ?yn Cat 3C> Fort 2tatus
1))) (Ens#ecified! ? C 5)6) EC=C<JC
1))1 (Ens#ecified! ? C 5)6) EC=C<JC
1))2 (Ens#ecified! ? C 5)6) EC=C<JC
Gustvoi#/#'B2)2) ,,.,2.16+.12+ 5)6) <= (16) $s!
* si# #eers 09onitored" 1 onlineD 3 offline En$onitored" ) onlineD ) offline4
<1
8ara ver los users configurados:
!LI" si s2ow $sers
Eserna$e 2ecret 3ccountcode ?ef.ConteBt 3C> C3(
1))) #'B+)+) 1))) #hones Co 3lways
1))1 #'B+)+1 1))1 #hones Co 3lways
1))2 #'B+)+2 1))2 #hones Co 3lways
8ara una lista de los comandos disponibles para el protocolo (I8 en %steris&:
!LI" 2e% si
si# notify 2end a notify #acket to a 2AF #eer
si# #rune realti$e 0#eer5all4 Frune cached 1ealti$e users/#eers
si# Mualify #eer 2end an <F(A<C2 #acket to a #eer
si# reload 1eload 2AF confi%uration
si# set de'u% Uon5off5i#5#eerV Ena'le/?isa'le 2AF de'u%%in%
si# set history Uon5offV Ena'le/?isa'le 2AF history
si# show Uchannels5su'scri#tio >ist active 2AF channels or su'scri#tions
si# show channelstats >ist statistics for active 2AF channels
si# show channel 2how detailed 2AF channel info
si# show do$ains >ist our local 2AF do$ains
si# show history 2how 2AF dialo% history
si# show inuse >ist all inuse/li$its
si# show $wi 2how 9JA su'scri#tions
si# show o'Gects >ist all 2AF o'Gect allocations
si# show #eers >ist defined 2AF #eers
si# show #eer 2how details on s#ecific 2AF #eer
si# show re%istry >ist 2AF re%istration status
si# show sched Fresent a re#ort on the status of the sched Mueue
si# show settin%s 2how 2AF %lo'al settin%s
si# show tc# >ist (CF Connections
si# show users >ist defined 2AF users
si# show user 2how details on s#ecific 2AF user
si# unre%ister Enre%ister (force eB#iration! a 2AF #eer fro$ the re%istry
3.2 ,irect9e'ia
!omo se ha dicho anteriormente0 este par#metro permite definir si el flu$o audio es directo entre los
dispositivos o pasa por %steris& que se encarga de enviarlo de una extensin a otra2 *n la versiones
anteriores al a 12B2H se llamaba canreinvite2 8ara poder entender un poco me$or este comportamiento0
se puede ver el gr#fico que sigue:
<:
S+0 S+0
60T 60T
*n este escenario directmedia=no2 *l trafico (I8 y ;D8 pasa completamente por %steris&2 *n el caso
que directmedia= yes el gr#fico cambiara de la siguiente forma:
S+0 S+0
La sealiSacin (I8 sigue pasando por %steris&0 mientras que el flu$o media va directo de un
dispositivo a otro2 *ste escenario funciona solamente si:
las extensiones no est#n detr#s de un ,%D
las extensiones est#n configuradas con el par#metro directmedia=yes
las extensiones utiliSa el mismo codec audio
en la aplicacin /I%L Oque veremos m#s adelanteP no est#n presentes las siguientes opciones:
bbtbb0 bbDa0 aha0 a6a0 a4a0 a=a or aLa
el par#metro dtmfmode=info
-n tpico e$emplo es cuando se instala el servidor %steris& dentro de una red local y los tel5fonos (I8
est#n conectados en la misma red2 La venta$a es que de esta forma se ahorran recursos del servidor
Linux donde est# instalado %steris&2
<3
60T
3.3 ContraseFas seg$ras
*n el archivo sip2conf las contraseas de las extensiones aparecen en texto plano2 (i alguien lograra
entrar en el servidor Linux0 con solo abrir el archivo0 podra conocer todas las contraseas de las
extensiones configuradas2 8ara evitar esto y volver m#s seguro el sistema0 es posible cifrarlas con el
algoritmo '/?2
Domamos como e$emplo la primera extensin cuya contrasea es pbxE>E>2 8ara cifrarla la sintaxis es:
echo -n WSeBtensiXnR"Sreal$R"SsecretRW 5 $d5su$
!omo el par#metro real presente en la parte general del sip2conf se ha de$ado comentado0 el valor
predefinido es asteris&U pues el comando sera:
ec2o .n ^1000)asterisk)(3R0R0^ _ 9'Ls$9
cuyo resultado ser#:
5')+185'fc+1*8+23c*,cdf6)c3a1681
8ara utiliSar la contrasea cifrada en la configuracin de una extensin0 en el sip2conf en el bloque de la
extensin se quita el par#metro secret y se aade el par#metro 9'Lsecret asign#ndole el valor creado2
3.4 #gre
!omo se quiere tener la traSa de los mensa$es (I8 enviados entre %steris& y las extensiones0 se instala
en el servidor Linux el programa #46-0 que permite capturar cualquier tipo de paquete que entre o
salga del sistema:
c' @$sr@src
primero se instalan unas dependencias:
1$9 insta%% %i(ca.'eve%
luego se descarga el paquete:
wget 2tt)@@'own%oa's.so$rce"orge.net@ro5ect@ngre@ngre@1.4L@ngre.1.4L.tar.(z2
se descomprime:
tar .3" ngre.1.4L.tar.(z2
se entra en la carpeta creada
c' ngre.1.4L
<@
se compila y se instala:
.@con"ig$re ..re"i3Q@$sr
(i aparece este mensa$e:
$ore than one set found in"
/usr/include
/usr/include/#ca#
#lease wi#e out all unused #ca# installation
6ay que e$ecutar el siguiente comando:
r9 ."r @$sr@inc%$'e@caT
y volver al configure:
.@con"ig$re ..re"i3Q@$sr
9ake
9ake insta%%
3.L So"t02one X.=ite 1 6-4+ST-6
HIlite es un softphone gratuito desarrollado por la empresa !ounter8ath que a pesar de sus
limitaciones0 puede ser utiliSado para las pruebas presentes en este libro2 (e descarga0 se instala y se
inicia2 8rimero se entra en el menF M(oftphone c %ccount (ettingsN y se configura la cuenta 1>>>
creada en %steris&:
<?
Acco$nt na9e: una descripcin de la cuenta
>ser+,) el numero de la extensin
,o9ain: la direccin I8 o el nombre de dominio del servidor %steris& Ola I8 del 98( LinodeP
0asswor': la contrasea de la extensin 1>>> OpbxE>E>P
,is%a1 na9e: el numero de la extensin
A$t2orization na9e: el numero de la extensin
*n la pestaa 9oicemail:
<B
(e selecciona la casilla Mchec& for voicemailN y en M,umber to dial for chec&ing voicemailN se pone
E<2 *ste ser# el numero que hay que marcar para entrar al buSn de voS y que se configurar#
posteriormente en el dialplan2
*n Dopology0 como la extensin est# detr#s de un ,%D0 se selecciona la casilla M%utoIdetect fire4all
trasversal method using I!*N2 Interactive !onnectivity *stablishment es un protocolo O;.!?:@?P que
<<
permite a los dispositivos que lo utiliSan0 lograr atravesar el ,%D2 (i la conexin es contra un servidor
local0 hay que seleccionar la casilla M,one Ouse local I8 addressP2
*n %dvanced se configura cada cuantos segundos HIlite volver# a registrarse a %steris& O3B>>P2 !omo
el softphone se encuentra detr#s de un ,%D0 se selecciona M(end (I8 &eepIalivesN y M-se rportN0 para
mantener la conexin abierta2 (i la conexin es a un servidor local se pueden desactivar las dos casillas2
%ntes de presionar el botn L& para guardar la configuracin0 se vuelve a la consola de Linux y se
escribe el siguiente comando:
ngre 1000 .D (1%ine ort L060 K @t9@register
/e esta forma se capturan todos los paquetes enviados y recibidos por la extensin 1>>> y se guardan
en el archivo register2 (e vuelve al HILite y se presiona el botn LT2 /espu5s de unos segundos el
softphone debera estar registrado a %steris&2 (e regresa a la consola Linux y se hunden las teclas
!D;LI! para terminar la captura de paquetes por parte de ,grep2
<A
%hora se abre el archivo register:
nano @t9@register
*ncontraremos esta secuencia:
HILite IIIIIIIIIIIIIIIIII;egisterIIIIIIIIIIIIIII" %steris&
HILite dIIIIIII@>1 -nauthoriSedIIIIIIIIIIIIII %steris&
*n el mensa$e @>1 -nauthoriSed0 %steris& indica a HILite que se requiere una autentificacin basada
en el protocolo 2tt 'igest y enva los datos necesarios para que el softphone pueda autenticarse de
esta forma2 HILite responde enviando una nueva peticin de ;*+I(D*; aadiendo los datos de
autentificacin
HILite IIIIIIIIIIIIIIIIII;egisterIIIIIIIIIIIIIII" %steris&
HILite dIIIIIIIIIIIIIIIIII:>> L&IIIIIIIIIIIIIIII %steris&
%hora el HILlite est# registrado y %steris& puede localiSarlo en el caso entre una llamada para la
extensin 1>>>2 /e hecho el m5todo ;*+I(D*; del protocolo (I8 sirve para esto2 (e recomienda la
lectura del ;.!3:B1 para entender como funciona la sealiSacin (I82
(i se continua a mirar el archivo register se notar# que aparece otro bloque que utiliSa el m5todo
(-B(!;IB* O;.!@:3?P2 Dodo este bloque est# relacionado con el buSn de voS de la extensin 1>>>
y es el que permite a la misma extensin suscribirse a %steris& para recibir notificaciones cuando sea
presente un nuevo mensa$e en el buSn de voS2
La secuencia es:
HILite IIIIIIIIIIIIIIIIII(ubscribeIIIIIIIIIIIII" %steris&
HILite dIIIIIII@>1 -nauthoriSedIIIIIIIIIIIIII %steris&
HILite IIIIIIIIIIIIIIIIII(ubscribeIIIIIIIIIIIII" %steris&
HILite dIIIIIIIIIIIIIIIIII:>> L&IIIIIIIIIIIIIIII %steris&
HILite dIIIIIIIIIIIIIIIII,LDI.QIIIIIIIIIIIIIIII %steris&
HILite IIIIIIIIIIIIIIIIII:>> L&IIIIIIIIIIIIIIIII" %steris&
-na veS que %steris& acepte el (-B(!;IB* enviado por HILite0 le enviar# un ,LDI.Q para que el
softphone sepa si hay mensa$es en el buSn de voS2 !laramente todava no hay ninguno Oultima parte
del mensa$e ,LDI.Q enviado por %steris&P:
9essa%es-Jaitin%" no.
9essa%e-3ccount" si#"asterisk-+6.126.121.135.
Roice&?essageG 0/0 !0/0)#
*n la consola de %steris& aparecer# la extensin conectada:
asterisk .rvvvvvvvvvvvvvvvvv
<E
!LI" si s2ow eers
Ca$e/userna$e @ost ?yn Cat 3C> Fort 2tatus
1)))/1))) 1+).255.23*.5* ? C 1)52, <= (135 $s!
Ltra forma de ver los mensa$es (I8 es activar el sip debug en %steris&2 (e puede hacer de forma
general:
!LI" si set 'e($g on
2AF ?e'u%%in% re-ena'led
o solamente para una extensin/troncal especifica:
!LI" si set 'e($g eer 1000
2AF ?e'u%%in% Ena'led for AF" 1+).255.23*.5*"1)52,
!LI" si set 'e($g eer 5$stvoi
2AF ?e'u%%in% Ena'led for AF" ,,.,2.16+.12+"5)6)
8ara desactivar el (I8 debug:
!LI" si set 'e($g o""
3.6 So"t2one 3CX
(e instalar# un segundo softphone para las pruebas2 *n este caso 3!H2 (e descarga0 se instala y se
inicia:
A>
(e presiona el botn evidenciado y0 en la pantalla que sigue0 se selecciona el icono !onexin:
*n la nueva ventana se presiona el botn ,e4 y se configura la extensin 1>>1:
Derminada la configuracin se presiona el botn LT y nuevamente LT2 La extensin se registrar# a
%steris&:
!LI" si s2ow eers
Ca$e/userna$e @ost ?yn Cat 3C> Fort 2tatus
A1
1)))/1))) 1+).255.23*.5* ? C 1)52, <= (13* $s!
1))1/1))1 1+).255.23*.5* ? C 1)8,) <= (22) $s!
(e sale de la consola de %steris&:
!LI" B$it
3.J =%a9a'as entre e3tensiones
(i desde la extensin 1>>> se llama la extensin 1>>10 en la consola de %steris& aparecer#:
C<(ACE02+21*4" chansi#.c"2),85 handlereMuestinvite" Call fro$ .1))). to eBtension .1))1.
reGected 'ecause eBtension not found in conteBt .eBternas.
*sto porque no se ha configurado todava el dialplan para permitir las llamadas entre las extensiones2
nano @etc@asterisk@e3tensions.con"
y al final del contexto internas se aaden las siguientes lineas:
e3ten QK ;100\0.2]E1E,ia%8S+0@`a-XT-#bE30:
sa9e QK nECang$
*n la primera linea0 despu5s del comando exten =" la MCN indica que se est# utiliSando un 8atternI
matching2 *n el p#rrafo <2: se explicar# cosa son y como se utiliSan los 8atternImatching2 *n este
e$emplo Y>I:Z significa que la cuarta cifra puede ser uno > un 1 o un :2 /e esta formas si marcamos
1>>> 1>>1 o 1>>: todas las llamadas entrar#n en este bloque de dialplan2 1 es la prioridad y /ial es la
aplicacin que se utiliSa para iniciar una llamada2 La sintaxis es:
?ial((echnolo%y/1esource0Y(echnolo%y2/1esource20Y...440Dti$eout0Do#tions0DE1>444!
*n este caso Dechnology es (I80 resource es ef*HD*,g y timeout es 3> segundos2 La variable e
f*HD*,g es una variable de canal Olos distintos tipos de variables se presentar#n en el p#rrafo <21P y
contendr# el numero marcado2 (i nadie contesta dentro de 3> segundos la llamada terminar# O6angupP2
*l proveedor Kustvoip requiere que la sintaxis para marcar cualquier numero sea: >> h cdigo pas h
numero2 8ara poder utiliSar el proveedor para las llamadas salientes0 despu5s del contexto internas se
crea el contexto internacio y se aaden las siguientes lineas:
KinternacioL
exten =N 500#B(B=ial!@-/<ustvoip/EV>Q7>NWB%0)
same =N nBOangup
(i en el contexto internacio se quiere diferenciar las llamadas nacionales Ofi$o/celularesP de las llamadas
internacionales se aaden los dos bloques que siguen:
A:
!omo se quiere que solamente las extensiones configuradas con el contexto externas tengan acceso a
este contexto se aade esta linea al contexto externas:
include =N internacio
para que el bloque quede:
KexternasL
include =N internas
include =N internacio
(e guardan los cambios y se recarga el dialplan2
asterisk .rvvvvvvvvvvvvvvv
!LI" 'ia%%an re%oa'
%hora desde la extensin 1>>> se marca el numero 1>>12 *l resultado en la consola de %steris& ser#:
EBecutin% 01)))-eBternas"14 =ial(4@-/(000&0000000(4B 4@-/(000B%04! in new stack
y en el tel5fono 3!H:
3.8 S+0 +#V+T- 1 CA#C-=
*l m5todo (I8 que se utiliSa para iniciar una sesin media0 es I,9ID*2 8ara ver como funciona se har#
la traSa de una llamada con ngrep2 *n la ventana terminal del servidor se escribe:
ngre 1000 .D (1%ine ort L060 K @t9@invite
Luego desde la extensin 1>>> se llama la extensin 1>>12 (e contesta la llamada y despu5s de unos
segundos se cuelga2 (e vuelve a la ventana terminal y se termina la captura de los paquetes con !D;LI
!
*n el archivo invite estar# presente esta secuencia:

A3
X.=ite Asterisk 3CX
IIIIIIIIIIIIIIIII,9ID*III1>>1IIIII"
dIIIIIII@>1 -nauthoriSedIIIIIIIIIII
IIIIIIIIIIIIIIII%!TIIIIIIIIIIIIIIIIII"
IIIIIIIIIIIIIIIII,9ID*III1>>1IIIII"
dIIIIIIIIIIII1>> DryingIIIIIIIIIIIIII
IIIIIIIIIIIII,9ID* 1>>>IIIIIIII"
dIIIIIIII1A> ;ingingIIIIIIIIIIIIII
dIIIIIIIIIIII1A> ;ingingIIIIIIIIIIIII
dIIIIIIIIIIII:>> LTIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIII%!TIIIIIIIIIIIIIII"
dIIIIIIIIIIIIIII:>> LTIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIII%!TIIIIIIIIIIIIIIIIII"
dIIIIIIIIIIIIIIIIBQ*IIIIIIIIIIIIIIII
IIIIIIIIIIIIIIII:>> LTIIIIIIIIIIIII"
dIIIIIIIIIIIIIIIIBQ*IIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIII:>> LTIIIIIIIIIIIIIIIIIII"
*l HILIte enva un I,9ID* para la extensin 1>>1 a %steris&2 %steris& contesta diciendo que para
aceptar el I,9ID*0 HILite tiene que autenticarse2 HILite contesta con %!T confirmando que ha
recibido la respuesta de %steris&U luego enva otro I,9ID* con sus datos de autentificacin2 %steris&
contesta con un Drying OprobandoP y enva el I,9ID* al 3!H que contesta con un 1A> ;inging
OtimbrandoP2 %steris& devuelve el 1A> ;inging a HILite2 !uando la extensin 1>>1 contesta la llamada
genera un :>> LT y %steris& un %!T confirmando que ha recibido el :>> LT2 %steris& enva el :>>
LT a HILite y cuando este confirma la recepcin del mensa$e con un %!T inicia la sesin media Oen
este caso solo audioP entre las dos extensiones2 !uando la extensin 1>>1 cuelga se genera un BQ* que
es recibido por %steris& que contesta con un :>> LT2 %steris& enva el BQ* al HILite que contesta con
un :>> LT2 % partir de este momento termina realmente la llamada2
-na segunda prueba es que la extensin 1>>> cuelgue antes que la extensin 1>>1 conteste2 *n la
ventana terminal de Linux se escribe:
ngre 1000 .D (1%ine ort L060 K @t9@cance%
Luego desde la extensin 1>>> se llama la extensin 1>>1 y despu5s de unos segundos se cuelga2 (e
vuelve a la ventana terminal y se termina la captura de los paquetes con !D;LI!2 %naliSando el
archivo cancel0 esta es la secuencia:
X.=ite Asterisk 3CX
IIIIIIIIIIIIIIIII,9ID*III1>>1IIIII"
dIIIIIII@>1 -nauthoriSedIIIIIIIIIII
IIIIIIIIIIIIIIII%!TIIIIIIIIIIIIIIIIII"
A@
Sesion Me'ia
IIIIIIIIIIIIIIIII,9ID*III1>>1IIIII"
dIIIIIIIIIIII1>> DryingIIIIIIIIIIIIII
IIIIIIIIIIIII,9ID* 1>>>IIIIIIII"
dIIIIIIII1A> ;ingingIIIIIIIIIIIIII
dIIIIIIIIIIII1A> ;ingingIIIIIIIIIIIII
IIIIIIIIIIIIIIIIBQ*IIIIIIIIIIIIIIIIIII"
dIIIIIIIIIIIIII:>> LTIIIIIIIIIIIIIIIII
dIIIIIII@A< ;equest DerminatedIIII
IIIIIIIIIIIIIIIII%!TIIIIIIIIIIIIIIIII"
IIIIIIIIIIIIII!%,!*LIIIIIIIIIII"
dIIIIIIIIIIIII:>> LTIIIIIIIIIIIIII
dIIIII @A< ;equest DerminatedIII
IIIIIIIIIIIIIIII%!TIIIIIIIIIIIIIIII"
-na tercera prueba es llamar desde el (ofphone HILite sin que este est5 registrado a %steris&2 (e entra
en el menF (oftphone c %ccount (ettings:
(e deselecciona la casilla M;egister 4ith domain and receive callsN y se presiona la tecla LT2 *l
tel5fono ya no estar# registrado en %steris&:
!LI" si s2ow eers
Ca$e/userna$e @ost ?yn Norcer#ort 3C> Fort 2tatus
1)))/1))) (Ens#ecified! ? C ) EC=C<JC
pero podr# seguir efectuando llamadas Omarcar a la extensin 1>>1P2 Lo que no podr#0 es recibir
llamadas Omarcar desde la extensin 1>>1 a la extensin 1>>>P2 8ara recibir llamadas el (oftphone tiene
A?
que estar registrado a %steris& O;*+I(D*;PU para efectuar llamadas OI,9ID*P no hace falta que est5
registrado pero si los datos de configuracin tienen que ser aquellos definidos en el sip2conf2
%hora para probar el proveedor (I8 se marca0 desde la extensin 1>>>0 un numero internacional Opor
e$emplo la linea de atencin al cliente de %viancaP:
>>?<1@>13@3@
que se puede marcar tambi5n:
1@>13@3@
(i se intenta marcar el mismo numero0 como se ver# m#s adelante0 desde la extensin 1>>: no
funcionar# ya que esa extensin no tiene acceso al contexto internacio:
C<(ACE01)*554" chansi#.c"2),85 handlereMuestinvite" Call fro$ .1))2. to eBtension
.))5,1*)13*3*. reGected 'ecause eBtension not found in conteBt .locales..
/e esta forma podemos controlar las extensiones que tienen acceso a las llamadas salientes2
3.R =os co'ecs
La palabra codec es la abreviatura de codificadorIdecodificador2 Los codecs se utiliSan para comprimir
el audio antes de enviarlo y/o utiliSarlo en un determinado sistema/soft4are2
*n %steris& los codecs permiten la transmisin del audio/video entres dos canales que componen una
llamada Oel llamante y el llamadoP2 *s el mismo %steris& que se hace cargo de la negociacin de los
codecs y en el caso que las dos extensiones est5n utiliSando codec distintos0 ser# %steris& que
descodificar# el audio de un formato a otro2 *sto es cierto para la mayora de los codecs2 8ara algunos0
e$emplo el +<:E0 %steris& actuar# como pasarela2 *sto quiere decir que ambas extensiones/dispositivos
tendr#n que tener configurado y disponible el codec +<:E2
La diferencia entre un codec y otro es el tipo de algoritmo utiliSado para la compresin de audio y0 en
base a eso0 el ancho de banda utiliSado2
(i se quiere ver la lista de codec suportados por %steris&0 se entra en la consola:
asterisk .rvvvvvvvvvvvvvv
y se escribe el comando:
!LI" core s2ow co'ecs
%parecer# la lista completa2
(i se quiere obtener informacin del McostoN para descodificar el audio de un codec a otro:
AB
!LI" core s2ow trans%ation
(ranslation ti$es 'etween for$ats (in $icroseconds! for one second of data
2ource Nor$at (1ows! ?estination Nor$at (Colu$ns!
%,23 %s$ ulaw alaw %,26aal2 ad#c$ slin l#c1) %,2+ s#eeB il'c %,26 %,22 siren, siren1* slin16 %,1+ s#eeB16 testlaw
%,23 - - - - - - - - - - - - - - - - - - -
%s$ - - 1))1 1))1 *+++ 1))1 1))) 5+++ - 33++5 26++6 6+++ 2))) - - 3))) - 25++, 1))1
ulaw - *))) - 1 *))) 2 1 5))) - 32++6 25++, 6))) 1))1 - - 2))1 - 2*++8 2
alaw - *))) 1 - *))) 2 1 5))) - 32++6 25++, 6))) 1))1 - - 2))1 - 2*++8 2
%,26aal2 - 5+++ 2))1 2))1 - 2))1 2))) 6+++ - 3*++5 2,++6 ,+++ 3))) - - *))) - 26++, 2))1
ad#c$ - *))) 2 2 *))) - 1 5))) - 32++6 25++, 6))) 1))1 - - 2))1 - 2*++8 2
slin - 3+++ 1 1 3+++ 1 - *+++ - 32++5 25++6 5+++ 1))) - - 2))) - 2*++, 1
l#c1) - 5+++ 2))1 2))1 5+++ 2))1 2))) - - 3*++5 2,++6 ,+++ 3))) - - *))) - 26++, 2))1
%,2+ - - - - - - - - - - - - - - - - - - -
s#eeB - +++8 6))) 6))) +++8 6))) 5+++ 1)++8 - - 31++5 11++8 6+++ - - ,+++ - 3)++6 6)))
il'c - 6+++ 3))1 3))1 6+++ 3))1 3))) ,+++ - 35++5 - 8+++ *))) - - 5))) - 2,++, 3))1
%,26 - 5++8 2))) 2))) 5++8 2))) 1+++ 6++8 - 3*++* 2,++5 - 2+++ - - 3+++ - 26++6 2)))
%,22 - 5+++ 2))1 2))1 5+++ 2))1 2))) 6+++ - 3*++5 2,++6 ,+++ - - - 1))) - 23++, 2))1
siren, - - - - - - - - - - - - - - - - - - -
siren1* - - - - - - - - - - - - - - - - - - -
slin16 - 8+++ 5))1 5))1 8+++ 5))1 5))) ++++ - 3,++5 3)++6 1)+++ 3))) - - - - 22++, 5))1
%,1+ - - - - - - - - - - - - - - - - - - -
s#eeB16 - 1)+++ ,))1 ,))1 1)+++ ,))1 ,))) 11+++ - 3+++5 32++6 12+++ 5))) - - 2))) - - ,))1
testlaw - *))) 2 2 *))) 2 1 5))) - 32++6 25++, 6))) 1))1 - - 2))1 - 2*++8 -
*n las lineas donde no aparece un valor0 significa que %steris& actFa como pasarela Oe$emplo: +<:30
+<:E0 siren<0 siren1@P2
i!mo funciona el envo de audio en %steris&j
-na veS negociada la sesin0 con el protocolo ;D8 O;.!3??>P se enviaran paquetes de audio de
:>milisegundos2 9isto gr#ficamente:
A<
*l paquete audio estar# encapsulado en un paquete ;D8 que a su veS estar# encapsulado en un paquete
-/8 Oprotocolo de transporteP que a su veS estar# encapsulado en un paquete I8 Odonde estar#n
presentes los datos de destinoP2
*sto quiere decir que a pesar de que un codec enecesita en teora un determinado ancho de banda0 en la
practica este ancho es m#s grande ya que hay que tener en cuenta los bytes que se van sumando con las
cabeceras de cada protocolo2
*n la tabla que sigue0 los consumos reales de banda de los codecs m#s utiliSados:
Co'ec <an'a teorica <an'a 0ractica
+<11 B@ Tbps E?0: Tbps
+<:: B@ Tbps E?0: Tbps
+(' 13 Tbps @30< Tbps
+<:Ea A Tbps 3E0: Tbps
%unque el codec +<:: tiene el mismo consumo de banda del +<110 la calidad del audio es mucho
me$or ya que el muestreo se efectFa a 1B &6S mientra con el codec +<11 se hace a A &6J Om#s alta la
frecuencia de muestreo0 me$or la calidadP2
/el codec +<11 existen dos variantes:
kla4 utiliSado en *stados -nidos y Kapn
ala4 utiliSado en *uropa
AA
3.R.1 #egociaci&n 'e Co'ec en Asterisk
!omo se ha dicho en el parrafo dedicado a la configuracin del sip2conf0 %steris& normalmente actFa
como intermediario entre las distintas extensiones2 *sto quiere decir que a lo largo de una llamada0
primero negocia los codec con la extensin llamante y luego con la extensin llamada2
*n la configuracin de la extensin 1>>> si han aadido estos par#metros:
allo4=ala4
allo4=g<::
allo4=g<:E
esto quiere decir que %steris& espera negociar con la extensin 1>>> uno de los tres codecs2 8ara hacer
una prueba se entra en el menF (opftphone c 8references c %udio !odecs del HILite y se configura
de la siguiente manera:
(e de$a activo solamente el codec +('2 Luego desde el HILitese marca la extensin 1>>12 *n la
pantalla del (oftphone aparecer#:
y en la consola de %steris&:
C<(ACE012+,4" chansi#.c"+653 #rocesssd#" Co co$#ati'le codecsD not acce#tin% this offerH
i)u5 significaj
AE
)ue %steris& no puede procesar la llamada porque el softphone HILite0 extensin 1>>>0 est# utiliSando
el codec +<:: mientras en la configuracin del sip2conf la extensin 1>>> no tiene configurado el
codec +<::2
(e vuelve al menF (opftphone c 8referencias c !odecs de audio y se configura de la siguiente
manera:
(e presiona el botn %ceptar2 %hora si se vuelve a marcar la extensin 1>>1 todo funcionar#
correctamente2
i)u5 tipo de configuracin utiliSarj
*n una instalacin de %steris& local con troncal (I8 para sacar las llamadas0 una buena solucin es
activar el codec +<:: para las llamadas entre extensiones Ouna buena calidadP y utiliSar el codec +<:E
para las llamadas salientes Ocasi todos los proveedores 9oI8 lo soportanP2
8ara hacer una prueba se abre el archivo sip2conf:
nano @etc@asterisk@si.con"
y en la configuracin de la troncal $ustvoip se comenta este par#metro:
allo1=ala1
para que quede:
Jallo1=ala1
(e guardan los cambios y se recarga la configuracin sip:
asterisk .rvvvvvvvvvvvvvvv
!LI" si re%oa'
E>
%hora desde el HILite se marca un numero fi$o o celular2 La llamada no tendr# 5xito2 i8or qu5j 8orque
en el (oftphone est#n configurados los codec ala4 y ula4 mientras en la troncal el codec +<:E2 !omo
%steris& para ese codec actFa solamente como pasarela0 la llamada no se puede completar2 *n la
consola de %steris&:
09ar 1* )8"*1"264 J31CACQ0183)54" chansi#.c"6)23 si#call" Co audio for$at found to offer.
Cancellin% call to
8ara que la llamada funcione hay que instalar la versin MeducationalN del codec g<:E:
c' @$sr@%i(@asterisk@9o'$%es
8ara el 98( Linode es:
wget 2tt)@@asterisk.2osting.%v@(in@co'ec;gJ2R.ast18.gcc4.g%i(c.at2%on.sse.so
(e vuelve e$ecutable el archivo:
c29o' N3 co'ec;gJ2R.ast18.gcc4.g%i(c.at2%on.sse.so
(e entra en la consola de %steris&:
asterisk .rvvvvvvvvvvvvvvv
si carga el modulo:
!LI" 9o'$%e %oa' co'ec;gJ2R.ast18.gcc4.g%i(c.at2%on.sse.so
Loaded codecCg<:EIast1AIgcc@IglibcIathlonIsse2so
== ;egistered translator bg<:Etolinb from format g<:E to slin0 cost 13EEA
== ;egistered translator blintog<:Eb from format slin to g<:E0 cost 3?EE?
Loaded codecCg<:EIast1AIgcc@IglibcIathlonIsse2so =" Og<:E !oder//ecoder0 based on I88P
%hora desde el (oftphone HILite se marca a un numero fi$o/celular2 -na veS contestada la llamada:
!LI" si s2ow c2anne%s
,2.1*.18*.31 ))5,316OOOOOOO 2,*d3da,553++f) )B1)) (%,2+!
186.112.1+,.25 1))) C(ET<QZG&$1h9(C )B8 (alaw!
*n el canal de la troncal se est# utiliSando el codec +<:E mientras en la extensin 1>>> el codec ala4
que es el primero configurado en la extensin 1>>> del sip2conf2 *n este caso %steris& se encarga de
descodificar OtranscodingP la llamada desde +<:E a ala4 y viceversa2
8ara terminar se vuelve a activar el codec ala4 para la troncal $ustvoip quitando el punto y coma que
precede esta linea:
Sa%%owQa%aw
E1
CA0+T>=O +V
0rotoco%o +AX2 / ia3.con"
*l protocolo I%H Oahora I%H:P ha sido desarrollado por 'ar& (pencer0 primer autor del cdigo de
%steris& 8BH y actual gerente de la empresa /igium2 La idea detr#s de I%H era crear un protocolo que
pudiera utiliSar el mismo puerto para la sealiSacin y la sesin media0 eliminando0 de esta forma0 los
problemas relacionados con el ,%D que padece el protocolo (I82 /e hecho I%H: utiliSa el puerto
est#ndar @?BE -/8 para la sealiSacin y el transporte de la sesin media2 % pesar de haber sido
aceptado por la I*D. y haberse vuelto un est#ndar de hecho O;.!?@?BP son muy pocos los
proveedores que ofrecen este tipo de conexin y los tel5fonos que lo soportan2
-na funcionalidad interesante de este protocolo y que quiS#s puede ser Ftil implementar en una
instalacin de %steris&0 es la del trun&ing0 que permite utiliSar un Fnico Mtrun&N para distintos flu$os
media0 reduciendo de hecho0 el ancho de banda necesario2 8ara que el trun&ing sea utiliSable en
%steris&0 /%6/I tiene que ser instalado porque es la fuente de sincroniSacin que I%H: necesita para
funcionar en esta modalidad2
4.1 ia3.con"
*ste archivo0 como el sip2conf0 se divide en tres bloques:
-na parte general donde se configuran los par#metros del protocolo
-n bloque central donde se configuran los registros a proveedores I%H: o otro servidores
%steris&
-n bloque final dedicado a la configuracin de las extensiones
*n la columna descripcin aparecer# en negrita el valor del par#metro2 %l final del modulo0 toda la
configuracin del archivo2
0ar!9etro ,escrici&n
YgeneralZ *sta etiqueta define el inicio de la parte general de la configuracin
del protocolo I%H:
bindport *l puerto -/8 usado por este protocolo2 *ste par#metro va
configurado antes del bindaddr2 9alor 4L6R
bindaddr *s la direccin I8 y el puerto donde %steris& se pondr# a la escucha
para las sealiSacin I%H: utiliSando el protocolo -/82 (i se indica
>2>2>2> %steris& escuchar# en todas la direcciones I8 presentes en el
servidor Linux2 9alor: 0.0.0.0
nochec&sums 1es=no se realiSa la suma de verificacin de los paquetes -/8
delayre$ect 1es=me$ora la seguridad contra Mbrute force pass4ord attac&sN
retrasando el envo de los rechaSos de autentificacin
amaflags %utomated 'essage %ccounting2 !on este par#metro se configura un
0ar!9etro ,escrici&n
campo del !/; Ocall data recordP univoco para todas las llamadas2
*ste campo se puede personaliSar en cada extensin2 9alor:
'oc$9entation
srvloo&up 1es=8ermite hacer bFsquedas de registros /,( (;9 basadas en los
nombres de dominio para llamadas (I8 salientes del tipo:
usuario_dominio2
language es=el idioma predefinido para las locuciones
mohinterpret clase de mFsica de espera predefinida G 'e"a$%t
mohsuggest !lase de mFsica de espera cuando un canal de tipo peer se pone en
espera G 'e"a$%t
band4idth !on este par#metro se define el ancho de banda disponible para las
llamadas y en base a este se escoger#n los codecs audio a utiliSar entre
los configurados2 *ste par#metro acepta como valores: lo40 medium0
2ig2
disallo4 a%% G (e desactivan todos los codec audio y video
allo4 (e indican los codec audio y video utiliSables2 8ueden ser indicados
uno por linea o en la misma linea separados por una coma:
a%%owQa%aw
a%%owQ$%aw
o
allo4=ala40ula4
minregexpire 60=tiempo mnimo0 en segundos0 de espiracin del registro de las
troncales I%H:
maxregexpire 60=tiempo m#ximo0 en segundos0 de espiracin del registro de las
troncales I%H:
encryption 1es=se habilita el cifrado de la sealiSacin y del flu$o media
forceencryption noQno se fuerSa el uso del cifrado
trun&maxsiSe define el tamao m#ximo de los datos ObytesP que pueden pasar por
una troncal I%H: cuando se configura el par#metro trun&=yes2 !on
128000 bytes pasar#n por la troncal A>> llamadas con codec ala4 y
paquetes audio de :>ms
trun&mtu cuando el trafico que pasa por una troncal I%H: es bastante alto0 si los
paquetes -/8 los fragmenta el sistema operativo Linux0 hay la
posibilidad que se verifique una mala calidad del audio2 !onfigurando
este par#metro con el valor 12400 significa que ser# el mismo %steris&
que se encargar# de fragmentar los paquetes audio m#s grandes de
1:@> byte0 me$orando la calidad del audio en las conversaciones
auto&ill 1es=si no se recibe un %!T0 despu5s de una ,*= enviado0 dentro de
:>>>ms0 para evitar que el servidor %steris& se estanque0 se anula la
E@
0ar!9etro ,escrici&n
solicitud
codecpriority !ontrola quien tiene la prioridad en la negociacin de los codec audio2
8uede ser:
caller
2ost
disabel
rtcachefriends *ste par#metro aplica cuando las extensiones est#n configuradas en
una base de datos Ose ver# m#s adelanteP2 9alor no
rtupdate este par#metro tambi5n aplica cuando las extensiones est#n
configuradas en una base de datos2 !uando una de estas extensiones se
registre a %steirs&0 en la base de datos se guardar# la direccin I80 el
puerto0 el tiempo de registro y el nombre de usuario2 9alor 1es
par&inglot %steris&0 entre sus funcionalidades0 permite parquear una llamada2
!omo desde la versin 12B2H es posible configurar m#s de un
McontextoN de parqueo0 en este par#metro se indica el predefinido2
9alor: 'e"a$%t
callto&enoptional *n septiembre del :>>E hubo una actualiSacin del protocolo I%H:
para me$orar la seguridad2 *ste par#metro con el que sigue hace
referencia a esa nueva implementacin2 !omo la mayora de los
tel5fonos I%H no la soportan se indica que es opcional para todas las
direcciones I82 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 empieSa con las lineas de register2 %lgunos
e$emplos:
register QK 9arko)secretass*tor9enta.%in$3.s$ort.net
;egistro con nombre usuario0 contrasea y dominio
register QK 5oe*re9ote2ost)L6L6
;egisto con nombre0 dominio y puerto remoto (sin
contrase[a!
register QK 9arko)\ke1]*tor9enta.%in$3.s$ort.net
;egistro con nombre0 clave ;(% O&eyP y dominio
*n en tercero y ultimo bloque se configuran las troncales/extensiones I%H:2 8or ahora se configurar#
solamente una extensin2 '#s adelante se ver# como configurar una troncal y utiliSar I%H: para el
envo de .%H utiliSando I%Hmodem y 6ylafax2
0ara9etro ,escrici&n
Ymar&oZ ,ombre de la extensin
type "rien' 8uede ser peer y user
E?
0ara9etro ,escrici&n
host (i la extensin se conecta remotamente con un I8
din#mico se pone '1na9ic2 *n caso contrario se
pone la direccin I8
secret La contrasea para la extensin2 9alor
predefinido: (3R0R4
context *l contexto a que tendr# acceso la extensin2
9alor e3ternas
mailbox (i este par#metro es configurado0 cuando la
extensin se conecte al servidor %steris&0 5ste
controlar# si hay mensa$es de voS pendientes y en
caso positivo se lo comunicar# usando '=I =
'essage =aiting Indicator2 que es una seal audio
o vdeo que puede ser recibida por la mayora de
los tel5fonos I8 o (oftphone 9alor 1234*'e"a$%t
qualify *ste par#metro se utiliSa para mantener activa la
conexin de una extensin que se conecta al
servidor %steris& detr#s de una ,%D2 9alor Ves
callerid 9arko
requirecallto&en 95ase parte general2 9alor a$to
8ara crear el archivo de configuracin de iax2conf0 se renombra el predefinido y se crea uno nuevo:
9v @etc@asterisk@ia3.con" @etc@asterisk@ia3.con".o%'
nano @etc@asterisk@ia3.con"
(e copian las siguientes lineas:
KgeneralL
bindport=;5$9
bindaddr=0#0#0#0
noc*ec+sums=0es
dela0re<ect=0es
amaflags=documentation
srvloo+up=0es
language=es
mo*interpret=default
mo*suggest=defautl
band1idt*=*ig*
disallo1=all
allo1=ala1
allo1=ala1
EB
minregexpire=$0
maxregexpire=$0
encr0ption=0es
forceencr0ption=no
trun+maxsi,e=("'000
trun+mtu=(";0
auto+ill=0es
codecpriorit0=*ost
rtcac*efriends=no
rtupdate=0es
par+inglot=default
callto+enoptional=0#0#0#0/0#0#0#0
reHuirecallto+en=auto
Jregister =N mar+oGsecretpassStormenta#linux&support#net
Jregister =N <oeSremote*ostG5$5$
Jregister =N mar+oGK+e0LStormenta#linux&support#net
Kmar+oL
t0pe=friend
*ost=d0namic
secret=pbx909;
context=externas
mailbox=("%;Sdefault
Hualif0=0es
callerid=mar+o
reHuirecallto+en=auto
(e guardan los cambios y se actualiSa la configuracin de I%H::
asterisk .rvvvvvvvvvvvvvvv
!LI" ia32 re%oa'
8ara ver la configuracin de la extensin reci5n creada:
!LI" +AX2 s2ow eer 9arko
6 Ca$e " $arko
2ecret " S2etR
ConteBt " eBternas
Farkin% lot "
9ail'oB " 123*-default
?yna$ic " &es
Callnu$ li$it" )
Calltoken reM" 3uto
(runk " Co
E<
Encry#tion " (aes128Dkeyrotate!
Callerid " W$arkoW SR
EB#ire " -1
3C> " Co
3ddr-RAF " (Ens#ecified! Fort )
?efaddr-RAF " ).).).) Fort *56+
Eserna$e "
Codecs " )B8 (alaw!
Codec <rder " (alaw!
2tatus " EC=C<JC
Iualify " every 6))))$s when <=D every 1))))$s when EC1E3C@3L>E (sa$#le s$oothin% <ff!
8ara una lista de los comandos disponibles para el protocolo I%H::
!LI" 2e% +AX2
4.2 So"t2one coier
8ara conectarse a la extensin reci5n creada en el archivo iax2conf0 se utiliSar# el softphone Joiper2 (e
descarga y se instala2 -na veS instalado se escoge el menF (ettings I" 8references
en la ventana que aparece se elige a!reate ,e4 I%H accounta
EA
se pone el nombre de la cuenta Omar&oP y se hunde el botn LT:
(e ponen los datos come definidos en el archivo di configuracin iax2conf y se presiona el botn
;egister2 Luego el botn LT que aparece al fondo de la ventana2 (e entra nuevamente en el 'enF
a(ettings I" 8referencesa:
(e escoge el usuario mar&o:
EE
*n alto a la derecha0 aparecer# la voS a;egistereda2 Dambi5n en la consola de %steris& el usuario
aparecer# registrado:
!LI" +AX2 s2ow eers
Ca$e/Eserna$e @ost 9ask Fort 2tatus
$arko 1+).25*.12+.133 (?! 255.255.255.255 265++ (E! <= (12, $s!
1 iaB2 #eers 01 onlineD ) offlineD ) un$onitored4
!LI" B$it
Qa que en Joiper se pueden configurar tambi5n extensiones (I80 se configura la extensin 1>>::
(e presiona el botn o o& y en la nueva ventana se ponen los datos de conexin:
1>>
(e presiona el botn register y el botn o& que aparece al fondo de la pagina2 (e averigua que la
extensin est5 conectada:
asterisk .rvvvvvvvvvvvvvvv
!LI" si s2ow eers
Ca$e/userna$e @ost ?yn Cat 3C> Fort 2tatus
1)))/1))) 1+).25*.12+.133 ? C 2,1,* <= (125 $s!
1))1/1))1 1+).25*.12+.133 ? C 2,256 <= (25) $s!
1))2/1))2 1+).25*.12+.133 ? C 5)6) <= (13, $s!
Gustvoi#/#'B2)2) ,,.,2.16+.12+ 5)6) <= (161 $s!
* si# #eers 09onitored" * onlineD ) offline En$onitored" ) onlineD ) offline4
!LI" B$it
% partir de este momento0 todas las extensiones (I8 y I%H: est#n conectadas al servidor %steris&2 Los
iconos de los tres softphone:
%hora la pregunta: i!mo se configura el dialplan para que se pueda llamar el usuario mar&o ya que la
extensin no es un numero sino un nombrej
(e hace de la siguiente manera:
nano @etc@asterisk@e3tensions.con"
al final del contexto internas se aade:
exten =N ("%;B(B=ial!@/Q"/mar+oB%0)
same =N nBOangup
1>1
(e guardan los datos y se recarga el dialplan
asterisk .rvvvvvvvvvvvv
!LI" 'ia%%an re%oa'
%hora desde la extensin 1>>> se marca 1:3@2 *l resultado en la consola de %steris&:
EBecutin% 0123*-eBternas"14 =ial(4@-/(000&0000000C4B 4@/Q"/mar+oB%04! in new stack
*l resultado en Joiper:
/e esta forma se ha hecho la prueba de una llamada entre dos tel5fonos con distintos protocolos2
1>:
CA0+T>=O V
4oog%eTa%k / gta%k.con" 5a((er.con"
!omo se ha visto a lo largo de la instalacin de %steris&0 la centralita soporta el protocolo H''8 que
permite conectarla a servidores que utiliSan ese protocolo2 *n %steris& el modulo relacionado es el
resC$abber2so2
8ara ver si efectivamente este modulo ha sido compilado y instalado correctamente0 se entra en la
consola de %steris&:
asterisk .rvvvvvvvvvvvvvvvvvvv
8rimero se controla que el modulo exista:
!LI" 9o'$%e s2ow %ike res;5a((er
9odule ?escri#tion Ese Count
resGa''er.so 3KA - 3sterisk Ka''er Anterface )
1 $odules loaded
luego se quita y se vuelve a cargar para controlar eventuales errores:
!LI" 9o'$%e $n%oa' res;5a((er.so
77 Enre%istered a##lication .Ka''er2end.
77 Enre%istered a##lication .Ka''er2endQrou#.
77 Enre%istered a##lication .Ka''er2tatus.
77 Enre%istered a##lication .Ka''erKoin.
77 Enre%istered a##lication .Ka''er>eave.
77 9ana%er unre%istered action Ka''er2end
77 Enre%istered custo$ function K3LLE12(3(E2
77 Enre%istered custo$ function K3LLE11ECEAPE
R K3LLE1" ?isconnectin%
!LI" 9o'$%e %oa' res;5a((er.so
77 Farsin% ./etc/asterisk/Ga''er.conf." 77 Nound
77 9ana%er re%istered action Ka''er2end
77 1e%istered a##lication .Ka''er2end.
77 1e%istered a##lication .Ka''er2endQrou#.
77 1e%istered a##lication .Ka''er2tatus.
77 1e%istered a##lication .Ka''erKoin.
77 1e%istered a##lication .Ka''er>eave.
77 1e%istered custo$ function .K3LLE12(3(E2.
77 1e%istered custo$ function .K3LLE11ECEAPE.
>oaded resGa''er.so 7R (3KA - 3sterisk Ka''er Anterface!
%l cargar un modulo aparecen las aplicaciones y las funciones que ese modulo activa2
(e sale de la consola:
!LI" B$it
8ara la configuracin de un usuario +oogleDal& en %steris& adem#s del modulo resC$abber2so0 hay que
configurar el modulo chanCgtal& que es el que permite llamadas de este tipo:
%steris& c +oogleDal&
+oogleDal& c %steris&
%steris& c +oogle9oice
*sto significa que se podr#n recibir llamadas de usuarios +oogleDal& en %steris& y luego0 a trav5s de la
configuracin del dialplan0 transferirlas a cualquier extensin configurada en la 8BH2 (iempre
configurando adecuadamente el dialplan ser# posible0 desde una extensin0 llamar usuarios +oogleDal&
y efectuar llamadas utiliSando el servicio +oogle9oice2 8ara la configuracin se aconse$a crear una
nueva cuenta en +oogle2
L.1 5a((er.con" 1 gta%k.con"
(e empieSa con el archivo de configuracin $abber2conf2 !omo siempre en la columna descripcin0 en
negrita0 aparecen los valores que hay que configurar2 %l final de las tablas0 la configuracin de los dos
archivos2
0ar!9etro ,escrici&n
YgeneralZ etiqueta que define el inicio de la parte general
debug no=no se activa el debug en la consola de %steris&
1es=se activa el debug en la consola de %steris&
autoprune yes=elimina autom#ticamente los usuario de la lista de amigos
no=no elimina autom#ticamente los usuarios de la lista de
amigos
autoregister 1es=si un usuario aade el usuario configurado en este archivo a
su lista de amigos0 %steris& autom#ticamente lo aadir# a la lista
de amigos
no=no lo aade autom#ticamente
UcollectionCnodes=yes % partir de la versin 12A de %steris& es posible monitorear el
estado de las extensiones remotas Ootros servidores %steris&P
utiliSando el protocolo H'882 *ste par#metro indica si se
habilita el soporte para la especificacin H*8I>@A del protocolo
H'882 (e de$a comentado
UpubsubCautocreate=yes *ste par#metro especifica si los nodos para el monitoreo de las
extensiones remotas se crean en autom#tico o no2 (e de$a
comentado2
1>?
UauthCpolicy=accept=yes La especificacin H*8I>@A se basa en un sistema de
suscripciones que los usuarios activan para recibir
notificaciones2 !on este par#metro en yes las suscripciones de
los usuarios se aceptan en autom#tico2 (e de$a comentado
Ycampus2voStovoiceZ % partir de esta etiqueta0 la configuracin del usuario
+oogleDal&2 (uponiendo que el usuario creado es
campus2voStovoice_gmail2com0 en la etiqueta se pone el
nombre de usuario2 8ersonaliSar con el nombre del usuario
google creado2
type puede ser c%ient o component
serverhost dominio del servidor +oogleDal&2 9alor: ta%k.goog%e.co9
UpubsubCnode=pubsub2dominio2com ,ombre del nodo para publicar los eventos para la
configuracin del monitoreo de extensiones remotas2 (e de$a
comentado
username *l nombre del usuario creado en +oogle2 *n este e$emplo
ca9$s.voztovoice*g9ai%.co9. 8ersonaliSar
secret la contrasea asociada al usuario creado en +oogle2 8ersonaliSar
port L222 *s el puerto que utiliSa +oogleDal& para aceptar
conexiones
usetls 1es=se activa el protocolo DL(2 /e esta forma todos los
paquetes intercambiados entre cliente y servidor ser#n cifrados
usesasl 1es=se activa el protocolo sasl2 (asl es un protocolo de
autentificacin y autoriSacin que permite la negociacin de
protocolos de cifrado entre cliente y servidor2
buddy si se quiere aadir un amigo a la lista de amigos directamente
desde la configuracin del archivo se indica en este par#metro2
(i los amigos que se quieren aadir son distintos0 se agrega una
linea con este par#metro para cada amigo2 8ara este e$emplo se
pone voztovoicenet*g9ai%.co9
UdistributeCevents=yes (e especifica si esta conexin se utiliSar# o no para la
generacin de eventos en la configuracin del monitoreo de las
extensiones remotas2 (e de$a comentado
statusmessage 'ensa$e de estado que aparecer# $unto al nombre de usuario2
9alor: Asterisk Server
timeout 100=tiempo m#ximo para la entrega de un mensa$e Oen
segundosP
Derminada la configuracin del archivo $abber2conf0 se continua con el archivo gtal&2conf2 *n la
columna descripcin0 en negrita0 aparecen los valores que hay que configurar2
1>B
0ar!9etro ,esc
YgeneralZ inicia la parte general del archivo
context contexto del dialplan donde entrar#n las llamadas
de los usuarios +oogleDal&2 9alor: goog%e.in
bindaddr direccin ip para la escucha de peticiones
+oogleDal&2 (e configura para que escuche en
todas las direcciones presentes en el servidor2
9alor: 0.0.0.0
externip % partir de la versin 12A de %steris& se ha
aadido este par#metro0 que permite definir la I8
publica del servidor2 (e pone la I8 de Linode
allo4guest no=no se permiten llamadas de usuarios
+oogleDal& que no est5n en la lista de amigos
1es=se permiten
YguestZ a partir de esta etiqueta empieSa la configuracin
para los usuarios hu5spedes Oque no est#n en la
lista de amigosP2
disallo4 a%%=se desactivan todos los codec audio
allo4 a%awE$%aw=se activan los codec audio ala4 y
ula4
context goog%e.in=nombre del contexto del dialplan donde
llegar#n las llamadas de usuarios hu5spedes
connection se pone la etiqueta definida en el $abber2conf para
el usuario +oogleDal& configurado en %steris&2 en
este e$emplo es ca9$s.voztovoice. 8ersonaliSar
YvoStovoicenetZ a partir de esta linea0 se definen todos los amigos
que se quiere tener en la lista2 8ara un e$emplo
real el usuario es voztovoicenet2
username nombre del usuario: voztovoicenet*g9ai%.co9
disallo4 a%%=se desactivan todos los codec audio
allo4 a%awE$%aw=se activan los codec audio ala4 y
ula4
connection se pone la etiqueta definida en el $abber2conf para
el usuario +oogleDal& configurado en %steris&2 en
este e$emplo es ca9$s.voztovoice. 8ersonaliSar
context el contexto del dialplan donde llegar#n las
llamadas del usuario goog%e.in
-na veS definidos todos los par#metros de $abber2conf y gtal&2conf0 se crean los respectivos archivos2
8rimero se renombran los predefinidos:
1><
9v @etc@asterisk@5a((er.con" @etc@asterisk@5a((er.con".o%'
9v @etc@asterisk@gta%k.con" @etc@asterisk@gta%k.con".o%'
Luego se crea el archivo $abber2conf:
nano @etc@asterisk@5a((er.con"
se pegan las siguientes lineas:
KgeneralL
debug=0es
autoprune=no
autoregister=0es
Jcollection5nodes=0es
Jpubsub5autocreate=0es
Jpubsub5autocreate=0es
Kcampus#vo,tovoiceL
t0pe=client
server*ost=tal+#google#com
Jpubsub5node=pubsub#dominio#com
username=campus#vo,tovoiceSgmail#com
secret=pass1ord
port=5"""
usetls=0es
usesasl=0es
budd0=vo,tovoicenetSgmail#com
Jdistribute5events=0es
statusmessage=/steris+ erver
timeout=(00
+M0O6TA#T-) antes 'e g$ar'ar %a con"ig$raci&nE 2a1 B$e ersona%izar %os
ar!9etros $serna9eE secret 1 %a etiB$eta \ca9$s.voztovoice]E con %os 'atos 'e s$
c$enta 4oog%e.
(e pasa al archivo gtal&2conf
nano @etc@asterisk@gta%k.con"
KgeneralL
context=google&in
bindaddr=0#0#0#0
externip=@-asteris+
1>A
allo1guest=0es
KguestL
disallo1=all
allo1=ala1Bula1
context=google&in
connection=campus#vo,tovoice
Kvo,tovoicenetL
username=vo,tovoicenetSgmail#com
disallo1=all
allo1=ala1Bula1
connection=campus#vo,tovoice
context=google&in
+M0O6TA#T-) antes 'e g$ar'ar %a con"ig$raci&nE 2a1 B$e ersona%izar e% ar!9etro
connection con %a etiB$eta inicia% 'e %a con"ig$raci&n 'e% $s$ario 4oog%eTa%k en e%
arc2ivo 5a((er.con" 8en este e5e9%o ca9$s.voztovoice: 1 e% ar!9etro e3terni.
Derminada la configuracin de los dos archivos se entra en la consola de %steris& y se recargan los dos
mdulosU primero resC$abber2so y luego chanCgtal&2so:
asterisk .rvvvvvvvvvvvvv
!LI" 9o'$%e $n%oa' res;5a((er.so
!LI" 9o'$%e $n%oa' c2an;gta%k.so
!LI" 9o'$%e %oa' res;5a((er.so
!LI" 9o'$%e %oa' c2an;gta%k.so
/espu5s de algunos segundos0 el usuario debera estar conectado:
!LI" 5a((er s2ow connections
Ka''er Esers and their status"
Eser" ca$#us.voTtovoice-%$ail.co$ - Connected
----
Cu$'er of users" 1
8ara ver la lista de amigos conectados OvoStovoicenet_gmail2comP
!LI" 5a((er s2ow ($''ies
Ka''er 'uddy lists
Client" ca$#us.voTtovoice-%$ail.co$
Luddy" voTtovoicenet-%$ail.co$
1esource" talk5?+E1)3*
1>E
node" htt#"//www.asterisk.or%/B$##/client/ca#s
version" asterisk-B$##
Kin%le ca#a'le" yes
2tatus" 1
Friority" 1)
8ara una lista de comandos disponibles en los dos mdulos
!LI" 2e% 5a((er
Ga''er create collection Creates a Fu'2u' node collection.
Ga''er create leaf Creates a Fu'2u' leaf node
Ga''er delete node ?eletes a Fu'2u' node
Ga''er list nodes >ists Fu'2u' nodes
Ga''er #ur%e nodes Fur%es Fu'2u' nodes
Ga''er reload 1eload Ka''er confi%uration
Ga''er set de'u% Uon5offV Ena'le/?isa'le Ka''er de'u%
Ga''er show 'uddies 2how 'uddy lists of our clients
Ga''er show connections 2how state of clients and co$#onents
Ga''er test 2hows rosterD 'ut is %enerally used for $o%.s de'u%%in%.
!LI" 2e% gta%k
%talk show channels 2how Qoo%le(alk channels
8or ultimo si se entra en +oogleDal& con otro nombre de usuario y se aade a la lista de amigos el
usuario configurado en %steris& Oen este e$emplo campus2voStovoice_gmail2comP0 el resultado ser#:
*l icono del tel5fono que aparece0 indica que se puede tener una conversacin audio con ese usuario2
%hora se pasa al dialplan2 !omo contexto para las llamadas entrantes de usuarios +oogleDal&0 se ha
definido googleIin2 *ste contexto va creado en el dialplan:
nano @etc@asterisk@e3tensions.con"
/espu5s del bloque internas se aaden estas lineas2
Kgoogle&inL
exten =N sB(BNoOp! Call from 3tal+ )
same =N nB=ial!@-/(000B%0)
same =N nBOangup!)
Dodas las llamadas que entren desde +oogleDal& se desvan a la extensin 1>>>2 (i dentro de treinta
segundos la extensin 1>>> no contesta0 la llamadas terminar#
11>
8ara las llamadas salientes se pone al final del contexto internas:
e3ten QK ;\a.z].E1E,ia%8gta%k@ca9$s.voztovoice@`a-XT-#bE30:
sa9e QK nECang$
-na explicacin de las dos lineas: (e dice a %steris& de llamar a trav5s del canal gtal&0 usando la
conexin campus2voStovoice que es la etiqueta que da inicio el bloque de configuracin del usuario
campus2voStovoice_gmail2com2 !on CYaISZ2 se puede marcar a cualquier usuario +oogleDal& cuyo
nombre empieSa con una letra del alfabeto Ode a a zP2 (i despu5s de 3> segundos0 nadie contesta0 se
termina la llamada2
8ara que esto funcione0 hay que aadir un bloque nuevo en el archivo gtal&2conf para cada nuevo
usuario siguiendo las mismas pautas utiliSadas para configurar el usuario voStovoicenet_gmail2com2
*n el caso que se quiera llamar un usuario no configurado en gtal&2conf0 hay que aadirlo de esta forma
en el dialplan Ocontexto internasP:
e3ten QK 10000E1E,ia%8gta%k@ca9$s.voztovoice@"$%ano*g9ai%.co9E30:
sa9e QK nECang$
suponiendo que fulano_gmail2com es el usuario que se quiera llamar2 (e guardan los cambios2 Ltra
forma de actualiSar el dialplan sin entrar en la consola de %steris& es:
asterisk .r3 ^'ia%%an re%oa'^
?ial#lan reloaded.
(e puede hacer una primera prueba llamando el usuario voStovoicenet_gmail2com desde el HILIte
(e marca de esta manera:
(e presiona el botn M!allN2 *l resultado:
8ara llamar al usuario fulano_gmail2com se marcar# la extensin 1>>>> desde HILite2 !omo nota
utiliSando el cliente +oogleDal& en un celular %ndroid0 es posible efectuar llamadas al usuario
configurado en %steris& pero no es posible Ohasta el momentoP recibirlas2
111
L.3 4oog%e Voice
+oogle 9oice es el servicio de +oogle que permite efectuar llamadas a cualquier parte del mundo2 *sta
funcionalidad es disponible en la pagina personal de la cuenta +oogle:
/esde la versin 12A2H de %steris&0 es posible efectuar llamadas utiliSando una cuenta +oogle 9oice
directamente desde %steris&2 8ara llamar0 por e$emplo0 a *stados -nidos0 la sintaxis es h1 m#s el
numero a llamar2 *n el contexto internacio del dialplan:
nano @etc@asterisk@e3tensions.con"
se aade:
exten =N 5(QQQQQQQQQQB(B=ial!gtal+/campus#vo,tovoice/XEV>Q7>NWSvoice#google#com)
same =N nBOangup
!omo se puede ver el h se pone delante de la variable ef*HD*,g ON`a-XT-#)1bP2 /e esta forma no
hace falta marcarlo2 *n el p#rrafo <2: se explicar# como extraer solamente algunas partes de una
variable2
8ara las llamadas a cualquier otro pas la sintaxis es h cdigo pas0 numero2 *n el mismo contexto
internacio se aade:
exten =N 5NNQQ#B(B=ial!gtal+/campus#vo,tovoice/XEV>Q7>NWSvoice#google#com)
same =N nBOangup
11:
L.3 A%icaci&n Ya((erSen'
-na aplicacin que se activa con el modulo resC$abber2conf es MKabber(endN que permite enviar
mensa$es instant#neos a usuarios +oogleDal&2
La sintaxis de la aplicacin es:
Ka''er2end(Ka''erDKA?D9essa%e!
-n e$emplo2 !ada veS que una extensin llame la extensin de la mFsica en espera0 se quiere enviar un
mensa$e a un usuario +oogleDal& para que se entere2 (e modifica el dialplan:
nano @etc@asterisk@e3tensions.con"
se cambia este bloque:
exten =N "00B(B/ns1er
same =N nB?usicOnOold!mp%B$0)
same =N nBOangup
para que quede:
exten =N "00B(B/ns1er
same =N nBPabbersend!campus#vo,tovoiceBfulanoSgmail#comB>stamos escuc*ando ?-%)
same =N nB?usicOnOold!mp%B$0)
same =N nBOangup
!ambiar Mcampus2voStovoiceN con la etiqueta que define el usuario configurado en el archivo
$abber2confU cambiar el usuario fulano_gmail2com con el usuario +mail al que se quiere enviar el
mensa$e2 (e guardan los cambios y se recarga el dialplan:
asterisk .r3 ^'ia%%an re%oa'^
/esde la extensin 1>>> se marca la extensin :>>2 *l resultado:
113
L.4 =a "$nci&n YA<<-6;6-C-+V-
La funcin K%BB*;C;*!*I9* ha sido aadida en la versin 12A de %steris&2 *sta funcin permite
interactuar con un usuario +oogle Dal& a trav5s del envo y recepcin de mensa$es de textos2 8ara el
envo de mensa$es de texto se utiliSa la aplicacin (endDext que permite0 cuando un canal ya est#
abierto0 enviar texto a ese canal2
La sintaxis de la funcin es:
asterisk .rvvvvvvvvvvvvvv
!LI" core s2ow "$nction YA<<-6;6-C-+V-
K3LLE11ECEAPE(accountDGid0Dti$eout4!
account0 es la etiqueta definida para el usuario +oogle Dal& configurado en el archivo
$abber2conf Oen este caso campus2voStovoiceP
$id0 es el nombre del usuario +oogle Dal& con el que se quiere interactuar
timeout0 es el tiempo0 en segundos0 que tendr# el usuario +oogle Dal& para escribir una
respuesta
-n e$emplo sencillo0 para que se vea como funciona0 es enviar un mensa$e de texto a un usuario +oogle
Dal& para pedirle su nombre y luego almacenar su respuesta en una variable2
8ara efectuar la prueba0 se modifica el dialplan:
nano @etc@asterisk@e3tensions.con"
este bloque:
Kgoogle&inL
exten =N sB(BNoOp! Call from 3tal+ )
same =N nB=ial!@-/(000B%0)
same =N nBOangup!)
para que quede:
Kgoogle&inL
exten =N sB(BNoOp! Call from 3tal+ )
same =N nBend7ext!OolaBComo te llamasY)
same =N nBet!nombre=EVP/FF>.5.>C>@R>!campus#vo,tovoiceBEVC/LL>.@=!name)WB"0)W)
same =N nBend7ext!Oola EVnombreWB bienvenido en Ro,7oRoice)
same =N nBet!C/LL>.@=!name)=EVnombreW)
same =N nB:ait!")
same =N nBend7ext!>spera un momento mientras te comunicamos con un operador)
same =N nB=ial!@-/(000B%0)
11@
same =N nBOangup!)
La variable ef!%LL*;I/OnamePg contendr# el nombre del usuario +oogle Dal&2
(e guardan los cambios y se recarga el dialplan:
asterisk .r3 ^'ia%%an re%oa'^
%hora desde un usuario +oogleDal&0 se llama el usuario configurado en %steris&2 *n la ventana de chat
de +oogle Dal&:
*n el HILite:
%parecer# como callerid0 el nombre que el usuario ha digitado en la ventana de chat de +oogle Dal&2
*ste es un e$emplo muy sencillo2 8osibles aplicaciones de esta funcin:
Brindar a los usuarios +oogle Dal&0 la posibilidad de crear una extensin en %steris& digitando
todos los par#metros relacionados
crear un I9; textual que permita al usuario +oogleDal& escoger una opcin que0 por e$emplo0
lo ponga en comunicacin con un determinado departamento de la empresa
(olicitar al usuario +oogle Dal& dos nFmeros a llamar y luego desde %steris& comunicarlos
entre ellos2
11?
CA0+T>=O V+
Asterisk 1 %a re' 0ST#
%steris& puede ser conectado a la red telefnica tradicional a trav5s de tar$etas telefnica o +ate4ay2
*stos dispositivos pueden ser de distintos tipos:
Dar$etas o +ate4ay .HL
Dar$etas o +ate4ay .H(
Dar$etas o +ate4ay mixtos O.HLI.H(P
Dar$etas o +ate4ay B;I OI(/,P
Dar$etas o +ate4ay 8;I Oprimarios *10 D10 K1P
Dar$etas o +ate4ay +('/-'D(
7XO ONorei%n EBchan%e <fficeP es un dispositivo de computador que permite conectar 5ste a la lineas
telefnicas analgicas0 y mediante un soft4are especial0 realiSar y recibir llamadas de tel5fono2
7XS ONorei%n EBchan%e 2tationP es un dispositivo de computador que permite conectar 5ste a un
tel5fono analgico2
Los dispositivos 'ixtos 7XO@7XS combinan los dos tipos de conexiones segFn las necesidades del
cliente2 -n e$emplo de dispositivo .HL/.H( es la tar$eta /igium D/'@1> que permite instalar un
total de @ mdulos0 sean .HL o .H(2
Los dispositivos <6+ OLasic rate interface: permiten conectar una linea +S,# OAnte%rated 2ervices
?i%ital CetworkP al servidor %steris&22 Las lineas I(/, est#n compuestas por dos canales audio Ode
B@Tbit/s cada unoP y un canal O/P para la sealiSacin con la central telefnica Ode 1B Tbit/sP2
Los dispositivos -1E T1E Y10 que tambi5n se pueden denominar primarios0 son lineas digitales que
segFn el tipo brindan de :3 OD1P a 3> O*1P canales de voS2 *n la D1 los canales > y :@ est#n reservados
para la sealiSacin2 *n la *1 los canales de sealiSacin son los > y 1B2 La diversa nomenclatura de
estas lineas est# relacionada con los pases donde se usan2 D1 son la lineas disponibles en *stados
-nidos0 *1 en *uropa y gran parte de latino %m5rica0 K1 en Kapn2
*n este modulo se ver# como instalar las siguientes tar$etas:
/igium D/'@1> con @ puertos .HL
/igium D/'@1> con : puertos .H(
/igium D*1:> O*1P
y los siguientes programas:
L(L*! para la cancelacin de eco
*l driver =anpipe para tar$etas (angoma
La librera open:r para la sealiSacin de primarios que se utiliSa en algunos pases de latino
%m5rica Oentre ellos '5xico0 Brasil y %rgentinaP2
6.1 Tar5eta ,igi$9 T,M410 con 4 $ertos 7XO
La tar$eta /igium D/'@1> puede hospedar @ mdulos de tipo .HL y .H(2 *n este caso se instalar#
con @ mdulos .HL para cuatro lineas telefnicas analgicas2
Los pasos a seguir son:
12 %pagar el computador
:2 /esconectar el cable de alimentacin
32 %brir el chasis del !omputador
@2 Insertar la tar$eta en una ranura 8!I disponible
?2 9olver a poner el chasis del computador
B2 !onectar el cable de alimentacin al computador
<2 !onectar las lineas telefnicas a los puertos .HL de la tar$eta a trav5s de un normal cable
telefnico
A2 *ncender el computador
,ormalmente !entL( reconoce autom#ticamente la nueva tar$eta instalada y le asigna un I;) para que
pueda comunicar con el procesador del computador2 (e comprueba que la tar$eta ha sido reconocida:
%sci .n
debe aparecer:
))))")1")).) )2))"d161"8))5
%hora se puede configurar2 %ntes de iniciar con la configuracin se para %steris& y luego /%6/I:
@etc@init.'@asterisk sto
@etc@init.'@'a2'i sto
*l primer archivo que hay que modificar es el /etc/dahdi/system2conf
*n ese archivo se define0 entre otras cosas0 la Sona geogr#fica donde se va a utiliSar la tar$eta2 *sto
11A
sirve para la generacin de los tonos de la linea Otimbrando0 ocupado0 congestin0 etc22P2 Los pases
cuya configuracin est# disponibles son:
*stados -nidos OusP
%ustralia OauP
.rancia OfrP
6olanda OnlP
Inglaterra Ou&P
.inlandia OfiP
*spaa OesP
Kapon O$pP
,oruega OnoP
%ustria OatP
,ueva Jelanda OnSP
Italia OitP
+recia OgrP
Dai4an Ot4P
!hile OclP
(uecia OseP
B5lgica ObeP
(ingapur OsgP
Israel OilP
Brasil ObrP
6ungra OhuP
Lituania OltP
8olonia OplP
(ud#frica OSaP
8ortugal OptP
*stonia OeeP
'5xico OmxP
India OinP
%lemania OdeP
(uiSa OchP
/inamarca Od&P
;epublica !heca OcSP
!hina OchP
%rgentina OarP
'alasia OmyP
Dailandia OthP
Bulgaria ObgP
9eneSuela OveP
.ilipinas OphP
;usia OruP
11E
Durqua OtrP
8anam# OpaP
'acao !hina OmoP
!osta ;ica OcrP
*miratos `rabes OaeP
8ara !olombia esta configuracin no est# presente y para activarla hay que modificar un archivo de la
fuentes de dahdiItools:
c' @$sr@src@'a2'i.too%s.2.6.2
nano zone'ata.c
al final del archivo0 antes de esta linea:
V #,one = &( W
se aaden las siguientes lineas:
V
#,one = ;$B
#countr0 = 4co4B
#description = 4Colombia4B
#ringcadence = V (500B ;000 WB
#tones = V
/Z .eferencesG *ttpG//111#itu#int/@76&7/inr/forms/files/tones&0"0%#pdf Z/
V =/O=@57ON>5=@/L7ON>B 4;"54 WB
V =/O=@57ON>5F62B 4;"5/"50B0/"504 WB
V =/O=@57ON>5.@N37ON>B 4;"5/(000B0/;5004 WB
V =/O=@57ON>5CON3>7@ONB 4;"5/(00B0/"50B;"5/%50B0/"50B;"5/$50B0/"504 WB
V =/O=@57ON>5C/LL:/@7B 4;00X;50/%00B0/$0004 WB
V =/O=@57ON>5=@/L.>C/LLB 4;"54 WB
V =/O=@57ON>5.>CO.=7ON>B 4(;00/500B0/(50004 WB
V =/O=@57ON>5@N8OB 4M950/%%0BM(;00/%%0BM('00/%%0B0/(0004 WB
V =/O=@57ON>57677>.B 4M;"5/(00BM0/(00BM;"5/(00BM0/(00BM;"5/(00BM0/(00BM
;"5/(00BM0/(00BM;"5/(00BM0/(0BM0/(00BM;"5/(00BM0/(00B;"54 WB
WB
#dtmf5*ig*5level = &9B
#dtmf5lo15level = &((B
#mfr(5level = &CB
#mfr"5level = &'B
WB
IM0O6TA#T-) -% conteni'o 'e %a ,AC,+;TO#-;SC>TT-6 tiene B$e estar en %a
9is9a %inea.
1:>
(e guardan los cambios y se vuelve a compilar dahdiItools:
9ake 'istc%ean
.@con"ig$re
9ake 9en$se%ect
9ake
9ake insta%%
9ake con"ig
se renombra el archivo predefinido:
9v @etc@'a2'i@s1ste9.con" @etc@'a2'i@s1ste9.con".o%'
y se crea uno nuevo:
nano @etc@'a2'i@s1ste9.con"
(e aaden las primeras dos lineas relacionadas con la Sona geogr#fica:
load,one = co
default,one = co
(e define el tipo de sealiSacin Ofxs&s para .HL y fxo&s para .H(PU en este caso se configuran @
modulos .HL:
fxs+s=(&;
que se puede escribir tambi5n:
fxs+s=(B"B%B;
para terminar se define la cancelacin de eco2 8redefinida es mg::
ec*ocanceller = mg"B(&;
*l archivo final ser#:
load,one = co
default,one = co
fxs+s=(&;
ec*ocanceller = mg"B(&;
8ara me$orar la cancelacin de eco se instala L(L*!
1:1
6.1.1 OS=-C
*l eco es generado por la reflexin del audio trasmitido que se devuelve a quien lo ha originado con un
retraso que puede variar de algunos mili segundos a centenares de mili segundos2 '#s alto el tiempo de
retraso0 m#s fastidioso el eco2 Las libreras /%6/I vienen con un cancelador de eco soft4are que a
veces no logra solucionar este tipo de problema2 *n estos casos la me$or solucin es instalar el
cancelador de eco L(L*!2 L(L*! ha sido desarrollado por /avid ;o4e0 un ingeniero electrnico
australiano2
i8or qu5 L(L*! logra solucionar con mayor eficacia los problemas de ecoj
8orque a pesar que sea un cancelador de eco de 3:ms0 actFa $usto en los casos en que se produce este
tipo de retraso2 !uando las llamadas son locales o de larga distancia0 las compaas telefnicas no
aplican ningFn tipo de cancelacin de eco y es propio en estos casos que los 3:ms de L(L*! son
suficientes para cancelar el eco de manera satisfactoria2 !uando las llamadas son internacionales y el
eco producido considerable Ocentenares de msP0 son las mismas compaas telefnicas que
normalmente se encargan Oa nivel de centralesP de eliminar el eco que se produce2
L(L*! est# disponible en la fuentes del Ternel a partir de la versin :2:A
8ara instalarlo se siguen estos pasos:
c' @$sr@src
se descargan las fuentes del Ternel :2B2:A
wget 2tt)@@www.voztovoice.org@ca9$s@(30L@%in$3.2.6.28.tar.(z2
se descomprimen:
tar .3" %in$3.2.6.28.tar.(z2
(e preparan las fuentes de /%6/I para la compilacin de L(L*!:
9k'ir @$sr@src@'a2'i.%in$3.2.6.2@'rivers@staging
c ."6 @$sr@src@%in$3.2.6.28@'rivers@staging@ec2o @$sr@src@'a2'i.%in$3.2.6.2@'rivers@staging
se' .i ^s_do(5.9 NQ 'a2'i;ec2ocan;os%ec.o_o(5.9 NQ 'a2'i;ec2ocan;os%ec.o_^ @$sr@src@'a2'i.
%in$3.2.6.2@'rivers@'a2'i@H($i%'
se' .i ^s_do(5.9 NQ ..@staging@ec2o@_o(5.9 NQ ..@staging@ec2o@_^ @$sr@src@'a2'i.%in$3.
2.6.2@'rivers@'a2'i@H($i%'
ec2o Uo(5.9 NQ ec2o.oU K @$sr@src@'a2'i.%in$3.2.6.2@'rivers@staging@ec2o@H($i%'
%hora se vuelve a compilar /%6/IIlinux y /%6/IItools:
1::
c' @$sr@src@'a2'i.%in$3.2.6.2
9ake 'istc%ean
9ake
9ake insta%%
/%6/IIDools:
c' @$sr@src@'a2'i.too%s.2.6.2
9ake 'istc%ean
.@con"ig$re
9ake 9en$se%ect
9ake
9ake insta%%
9ake con"ig
(e modifica el system2conf
nano @etc@'a2'i@s1ste9.con"
se cambia esta linea
ec*ocanceller=mg"B(&;
para que quede:
ec*ocanceller=oslecB(&;
8ara terminar la configuracin de la tar$eta hay que modificar el archivo chanCdahdi2conf
se renombra el predefinido:
9v @etc@asterisk@c2an;'a2'i.con" @etc@asterisk@c2an;'a2'i.con".o%'
y se crea uno nuevo:
nano @etc@asterisk@c2an;'a2'i.con"
(e aaden las siguientes lineas:
Ktrun+groupsL
Kc*annelsL
language=es
context=from&pstn
1:3
overlapdial=0es
signalling=fxs5+s
toneduration=(00
usecallerid=0es
cidsignalling=v"%
cidstart=polarit0
*idecallerid=no
call1aiting=0es
call1aitingcallerid=0es
t*ree1a0calling=0es
transfer=0es
canpar+=0es
cancallfor1ard=0es
callreturn=0es
ec*ocancel=0es
relaxdtmf=0es
rxgain="#0
txgain=%#0
callerid = asreceived
amaflags=documentation
accountcode=pstn
bus0detect=0es
bus0count=$
mo*interpret=default
mo*suggest=default
group=(
c*annel =N (&;
*n el bloque channels se configuran los par#metros validos para todos los canales2 % partir de la linea
channel =" se configuran los canales2 *n este caso los cuatro canales .HL pertenecen todos al grupo 1
(e reinicia primero /%6/I y luego %steris&
@etc@init.'@'a2'i start
@etc@init.'@asterisk start
(e controla que efectivamente la cancelacin de echo configurada sea L(L*!:
'a2'i;c"g .vvv
?3@?A Persion" 2.6.2
Echo Canceller(s!" @JEC
Confi%uration
7777777777777777777777
1:@
Channel $a#"
Channel )1" NO2 =ewlstart (?efault! (Echo Canceler" oslec! (2laves" )1!
Channel )2" NO2 =ewlstart (?efault! (Echo Canceler" oslec! (2laves" )2!
Channel )3" NO2 =ewlstart (?efault! (Echo Canceler" oslec! (2laves" )3!
Channel )*" NO2 =ewlstart (?efault! (Echo Canceler" oslec! (2laves" )*!
*l en servidor Linode0 se recibir#n una serie de errores ya que la tar$eta no est# realmente instalada2
(e entra en la consola de %steris&:
asterisk .rvvvvvvvvvvvvvvvvv
se mira la configuracin del canales:
!LI" 'a2'i s2ow c2anne%s
(e sale de la consola:
!LI" B$it
(i se decide utiliSar las @ lineas telefnicas para las llamadas locales y nacionales hay cuatro forma de
escribir el dialplan Opara !olombiaP2 (e antepone el numero E para indicar que marcando E m#s el
numero de destino se est# saliendo por las lineas analgicas2 *ste dialplan no se utiliSar# para llamadas
a celulares2
exten =" CEY1:@?B<AEZHHHHHHH[01/ialO/%6/I/g1/ef*HD*,:1g0@?P
same =" n06angup
g1Q >sa %as %Mneas 'e% gr$o X 'e 9enor a Ma1or
exten =" CEY1:@?B<AEZHHHHHHH[010/ialO/%6/I/+1/ef*HD*,:1g0@?P
same =" n06angup
41Q >sa %as %Mneas 'e% gr$o X 'e Ma1or a 9enor
exten =" CEY1:@?B<AEZHHHHHHH[010/ialO/%6/I/r1/ef*HD*,:1g0@?P
same =" n06angup
r1Q >sa %as %Mneas 'e% gr$o X 'e 9enor a Ma1or ero 'e 9anera a%eatoria
exten =N 59K(";5$C'9LQQQQQQQMB(B=ial!=/O=@/.(/EV>Q7>NG(WB;5)
same =N nBOangup
61Q >sa %as %Mneas 'e% gr$o X 'e Ma1or a 9enor ero 'e 9anera a%eatoria
1:?
(e usar# este ultimo bloque2
nano @etc@asterisk@e3tensions.con"
al final del contexto internas se pone:
exten =N 59K(";5$C'9LQQQQQQQMB(B=ial!=/O=@/.(/EV>Q7>NG(WB;5)
same =N nBOangup
8ara llamadas entrantes despu5s del contexto googleIin:
Kfrom&pstnL
exten =N sB(B=ial!@-/(000B;5)
exten =N sBnBOangup
*l contexto fromIpstn es el que se ha definido en el archivo chanCdahdi2conf
(e recarga el dialplan:
asterisk .rvvvvvvvvvvvvv
!LI" 'ia%%an re%oa'
se sale de la consola:
!LI" B$it
6.2 Tar5eta ,igi$9 T,M410 con 2 $ertos 7XS
*n este caso0 como la sealiSacin cambia0 hay que modificar el archivo /etc/dahdi/system2conf para
que quede:
load,one = co
default,one = co
fxo+s=(&"
ec*ocanceller = oslecB(&"
Luego se modifica el archivo /etc/asteris&/chanCdahdi2conf para que quede:
Ktrun+groupsL
Kc*annelsL
J esta secci[n es deprecada desde la versi[n (#' de /steris+# >n su lugar se utili,an plantillas
Kp*onesL!M)
J
1:B
J La plantilla con los par\metros compartidos por todos los m[dulos 8Q
J
usecallerid = 0es
*idecallerid = no
call1aiting = no
t*ree1a0calling = 0es
transfer = 0es
ec*ocancel = 0es
ec*otraining = 0es
immediate = no
context = externas
signalling = fxo5+s
Kp*one(L!p*ones)
callerid = 47el/na(4 U(0(N
da*dic*an = (
Kp*one"L!p*ones)
callerid = 47el/na"4 U(0"N
da*dic*an = "
!omo se nota en la configuracin0 en la plantilla Kp*onesL!M) se configuran los par#metros validos para
los dos mdulos .H(2 *n los dos bloques que siguen se utiliSa la plantilla y se configuran solamente
los par#metros especficos de cada modulo .(H2 *n este caso son dos:
callerid: se indica un callerid para el tel5fono analgico
dahdichan: se indica el numero de canal asociado a cada modulo .H(
8ara los dos tel5fonos analgicos el contexto configurado es externas Oba$o el bloque YphonesZO[P2 *sto
quiere decir que los dos tel5fonos analgicos conectados a los mdulos .H( de la tar$eta tendr#n
acceso a ese contexto del dialplan2 *sto para las llamadas salientes2
8ara las llamadas entrantes0 hay que modificar el dialplan de la siguiente manera:
nano @etc@asterisk@e3tensions.con"
en el contexto internas se pone:
exten =N (0(B(B=ial!=/O=@/(B%0)
same =N nBOangup
exten =N (0"B(B=ial!=/O=@/"B%0)
same =N nBOangup
/e esta forma ser# posible llamar los dos tel5fonos analgicos2
1:<
6.3 Tar5eta ,igi$9 T-1200
La tar$eta D*1:>8 es una tar$eta con una conexin D10 *1 o K12 *l tipo de conexin se configura a
trav5s de un $umper presente en la tar$eta:
Los pasos a seguir son:
12 %pagar el computador
:2 /esconectar el cable de alimentacin
32 %brir el chasis del !omputador
@2 Insertar la tar$eta en una ranura 8!I disponible
?2 9olver a poner el chasis del computador
B2 !onectar el cable de alimentacin al computador
<2 !onectar el cable ;K@? de la linea *1 a la tar$eta
A2 *ncender el computador
(e paran los servicios %steris& y /%6/I:
service asterisk sto
service 'a2'i sto
!omo en algunos pases de latino %m5rica0 se utiliSa la sealiSacin '.+/;: para que /%6/I la
pueda implementar hay que instalar la librera Lpenr::
se descarga:
c' @$sr@src
wget 2tt)@@oenr2.goog%eco'e.co9@"i%es@oenr2.1.3.2.tar.gz
1:A
se descomprime:
tar .3" oenr2.1.3.2.tar.gz
se entra en la carpeta:
c' oenr2.1.3.2
y se compila:
.@con"ig$re ..re"i3Q@$sr
9ake
9ake insta%%
Luego hay que volver a compilar %steris&:
c' @$sr@src@asterisk.1.8.20.1
9ake 'istc%ean
.@con"ig$re CCQ^gcc .O3^ C7=A4SQ.O3
9ake
9ake insta%%
(i aparece este =%;,I,+:
J31CACQ J31CACQ J31CACQ
&our 3sterisk $odules directoryD located at
/usr/li'/asterisk/$odules
contains $odules that were not installed 'y this
version of 3sterisk. Flease ensure that these
$odules are co$#ati'le with this version 'efore
atte$#tin% to run 3sterisk.
a##$ysMl.so
a##saycount#l.so
cdr$ysMl.so
codec%,2+-ast18-%cc*-%li'c-athlon-sse.so
for$at$#3.so
resconfi%$ysMl.so
J31CACQ J31CACQ J31CACQ
no hay problema ya que esos mdulos se han compilado anteriormente con la misma versin de
%steris&2
9ake con"ig
1:E
8ara averiguar que la librera ha sido englobada en el el modulo chanCdahdi2so:
%'' c2anne%s@c2an;'a2'i.so _ gre oenr2
li'o#enr2.so.3 7R /usr/li'/li'o#enr2.so.3 ()B))*1')))!
8ara ver las distintas versiones de la sealiSacin '.+/;: soportadas por la librera:
r2test .%
Pariant Code Country
31 3r%entina
L1 LraTil
CC China
CZ CTech 1e#u'lic
C< Colo$'ia
EC Ecuador
A? Andonesia
A(E Anternational (eleco$$unication Enion
9O 9eBico
F@ Fhili##ines
PE PeneTuela
Derminada la instalacin de la librera se averigua si la tar$eta ha sido reconocida por !entL(:
%sci .n
el resultado debe ser:
>>>>:>1:>>2> >:>>: I(/, controller: -n&no4n device d1B1:>1:>
!uando se configura una linea *1 la sintaxis en el archivo system2conf es:
s#an 7R SCu$'erRDS(i$in%RDS>ine Luild <utRDSNra$in%RDSCodin%R0D&ellow4
#$9(er: el puerto donde est# conectado el cable de la linea *12 *n este caso 1
Ti9ing) determina la fuente de sincroniSacin para la tar$eta2 8osibles valores:
> = la fuente la genera la misma tar$eta
1 = la fuente es remota
=ine <$i%' O$t) > predefinido
7ra9ing) en las lineas *1 puede ser !%( O!hannel %ssociated (ignalingP o !(( O!ommon !hannel
(ignaling P
Co'ing) puede ser %'I o 6B/32 *n algunos casos al final de la linea se pone !;!@ para el control de
los paquetes2
*stos datos normalmente los facilita el proveedor de la linea2 %lgunos e$emplos podran ser:
span =N (B0B0BcasB*db%Bcrc;
13>
o
span =N (B0B0BcssB*db%
Luego se configuran los canales:
bc*an = (&(5B(C&%(
dc*an = ($
bchan son los canales audio y dchan el canal para la sealiSacin2
y la cancelacin de eco:
ec2ocance%%er QK os%ecE1.1LE1J.31
se termina con:
load,one = co
default,one = co
8or ultimo se configura el chanCdahdi2conf
los dos valores m#s importantes son:
switc2t1e
signa%ing
que tambi5n facilita el proveedor2 Lo m#s comFn es:
s1itc*t0pe=euroisdn
signaling=pri5cpe
-n e$emplo de archivo de configuracin es:
Ktrun+groupsL
Kc*annelsL
usecallerid=0es
*idecallerid=no
call1aiting=0es
usecallingpres=0es
call1aitingcallerid=0es
t*ree1a0calling=0es
transfer=0es
canpar+=0es
cancallfor1ard=0es
131
callreturn=0es
ec*ocancel=0es
ec*ocancel1*enbridged=0es
relaxdtmf=0es
rxgain="#0
txgain=%#0
immediate=no
context=from&pstn
group=(
s1itc*t0pe=euroisdn
signaling=pri5cpe
c*annel =N (&(5B(C&%(
8ara la sealiSacin '.!/;: sera:
s1ste9.con"
span=(B(B0BcasB*db%
cas=(&(5G((0(
dc*an=($
cas=(C&%(G((0(
load,one = co
default,one = co
c2an;'a2'i.con"
Ktrun+groupsL
Kc*annelsL
usecallerid=0es
*idecallerid=no
call1aiting=0es
usecallingpres=0es
call1aitingcallerid=0es
t*ree1a0calling=0es
transfer=0es
canpar+=0es
cancallfor1ard=0es
callreturn=0es
ec*ocancel=0es
ec*ocancel1*enbridged=0es
relaxdtmf=0es
rxgain="#0
txgain=%#0
immediate=no
context=from&pstn
group=(
13:
signalling = mfcr"
mfcr"5variant = co
mfcr"5get5ani5first = no
mfcr"5max5ani = (0
mfcr"5max5dnis = ;
mfcr"5categor0 = national5subscriber
mfcr"5mfbac+5timeout = &(
mfcr"5metering5pulse5timeout = &(
mfcr"5logdir = log
mfcr"5logging = all
c*annel =N (&(5B(C&%(
Derminada la configuracin se reinician los servicios:
service 'a2'i start
service asterisk start
y se averigua en la consola si todos los canales est#n configurados:
!LI" 'a2'i s2ow c2anne%s
6.4 Danie
=anpipe es el driver que se utiliSa para las (%,+L'%2 8rimero se instala la tar$eta Oun primarioP:
Los pasos a seguir son:
12 %pagar el computador
:2 /esconectar el cable de alimentacin
32 %brir el chasis del !omputador
@2 Insertar la tar$eta en una ranura 8!I disponible
?2 9olver a poner el chasis del computador
B2 !onectar el cable de alimentacin al computador
<2 !onectar el cable ;K@? de la linea *1 a la tar$eta
A2 8render el computador
se para %steris& y /%6/I:
service asterisk sto
service 'a2'i sto
(e descarga el driver:
c' @$sr@src
133
wget "t)@@"t.sango9a.co9@%in$3@c$rrent;wanie@wanie.3.L.28.tgz
se descomprime:
tar .3" wanie.3.L.28.tgz
se entra en la carpeta:
c' wanie.3.L.28
y se instala:
.@Set$ 'a2'i
se escribe G1I y se continua con envo:
se selecciona 1 m#s envo2 *mpieSa la compilacin del driver y de las utilidades2 %l finaliSar aparecer#:
%hora se e$ecuta:
wanc"g;'a2'i
que crear# todos los datos de configuracin para la tar$eta instalada2 Luego se inicia 4anpipe:
wanro$ter start
/%6/I
service 'a2'i start
13@
%steris&:
service asterisk start
8ara terminar se personaliSan los par#metros creados por 4ancfg2
6.L ,AC,+;4-#CO#7
La utilidad dahdiCgenconf se instala con el paquete dahdiItools y permite generar las configuraciones
para las tar$etas instaladas2 (e e$ecuta una veS que las tar$etas est5n instaladas en el sistema2
La utilidad modificar# el archivo /etc/dahdi/system2conf y crear# un nuevo archivo en la carpeta
/etc/asteris& llamado dahdiIchannels2conf2 Los pasos a seguir son revisar la configuracin del archivo
system2conf y averiguar que todos los par#metros sean correctosU luego hay dos posibles opciones:
incluir el archivo dahdiIchannels2conf en el archivo chanCdahdi2conf con el siguiente par#metro:
nano @etc@asterisk@c2an;'a2'i.con"
al final del archivo se pone:
dinc%$'e @etc@asterisk@'a2'i.c2anne%s.con"
La segunda opcin es abrir el archivo y copiar la configuracin en los respectivos bloques del archivo
chanCdahdi2conf
(i han efectuado las pruebas presentes hasta el momento en el servidor Linode0 para restablecer la
configuracin inicial:
service asterisk sto
service 'a2'i sto
9v @etc@'a2'i@s1ste9.con".o%' @etc@'a2'i@s1ste9.con"
9v @etc@asterisk@c2an;'a2'i.con".o%' @etc@asterisk@c2an;'a2'i.con"
service 'a2'i start
service asterisk start
6.6 =inks1s S0A3102 / 4atewa1 7XO@7XS
*l (8%31>: es un +ate4ay que soporta una linea .HL y una linea .H(U cada linea se puede configurar
como si fuera una extensin (I82 La configuracin que sigue abarca solamente la parte .HL ya que
todas las llamadas entrantes se contestar#n desde una extensin (I82 8or defecto el (8%31>: no permite
conectarse a su pagina de administracin desde remoto0 pues lo primero que hay que hacer es activar
13?
esa funcionalidad2
*n Line se conecta el cable del tel5fono que viene de la lnea telefnica2 *n *thernet se conecta un
cable de red que luego se conectar# al enchufe de red del computador2 8ara finaliSar0 en Internet se
conecta un cable de red que luego se conectar# al ;outer/(4itch2 (e abre una pestaa nueva del
navegador y se pone la siguiente direccin: http://1E:21BA2>21 %parecer# la pagina de administracin
del (8%31>::
(e averigua la versin del .irm4are instalada y la direccin I8 asignada por el ;outer2 (e da clic& en el
enlace MadvancedN y luego en la pestaa M=an (etupN2 (e activa la conexin desde remoto:
8ara guardar cada cambio0 al final de la pagina se presiona el botn M(ubmit %ll !hangesN2 Qa se puede
desconectar el cable del puerto *thernet del %D% y volver a conectar el computador al router2 %hora se
puede acceder al (8%31>: indicando la direccin I8 asignada por el ;outer2 *n este caso
1E:21BA21>>21>> *l segundo paso es configurar una clave para el administrador y una para el usuario2
13B
*sto se hace en la pestaa 9oice y luego (ystem:
(e presiona el botn (ubmit %ll !hanges2 (i la versin del firm4are no es la ?2121> se actualiSa2 Los
fir4are para el (8%31>:0 se pueden descargar desde esta pagina2 (e descomprime el archivo en el
escritorio del computador2 *ntre los nuevo iconos:
(e da clic& dos veces2 %parecer#:
13<
8ara aceptar la advertencia se presiona el botn M!ontinueN:
(e pone la direccin I8 local del (8%31>: y la del computador donde se ha descargado el .irm4are2 (e
continua con el botn MLTN:
13A
(e pone el usuario admin y la clave que se acaba de crear2 (e presiona el botn MLTN:
(e revisan todos los datos y para iniciar la actualiSacin se presiona el botn M-pgradeN2 La operacin
tarda unos minutos2 !uando termine0 se vuelve a entrar en la pagina de administracin del %D% y se
configura la cuenta (I8 para la lnea .HL2 (e va a la pestaa 9oice y luego en 8(D, Line donde se
configura solamente la parte que interesa:
=ine -na(%e = yes
#AT Hee A%ive -na(%e = yes Osi el %steris& es remoto y el %D% se encuentra detr#s de un ,%DP
#AT Hee A%ive Msg = viene por defecto con la opcin e,LDI.Q que enva un paquete de tipo (I8
,LDQ.Q para tener abierta la conexin2 (e puede de$ar la linea en blanco2 /e esta forma se enva a
%steris& solamente un paquete -/8 vaco como hacen la mayora de los tel5fonos (I8:
13E
0ro31 = direccin I8 o nombre de dominio del servidor %steris& remoto
6egister = yes
,is%a1 #a9e = poner el numero de tel5fono de la lnea telefnica Opor e$emploP
>ser+, = el nombre de la extensin que luego se configurar# en %steris&
>se A$t2 +, =yes
A$t2 +, = lo mismo que -ser I/
!omo codec predefinido se activa ala4 y como segundo +<:E:
(e definen dos /ialplan: *l primero para las llamadas salientes y el segundo para las llamadas
entrantes2 Dodas las llamadas entrantes se enrutan a la extensin s de %steris&:
1@>
*n la configuracin del +ate4ay 9oI8 G" 8(D, se pone:
Vo+0.To.0ST# 4atewa1 -na(%e =yes
Vo+0 Ca%%er A$t2 Met2o' = none Oninguna autentificacinP
One Stage ,ia%ing = yes
=ine 1 Vo+0 Ca%%er ,0 = para las llamadas salientes se utiliSar# el dialplan 1
*n la configuracin del +ate4ay 8(D, G " 9oI8 se pone:
0ST#.To.Vo+0 4atewa1 -na(%e =yes
0ST# Ca%%es A$t2 Met2o' = none Ode esta forma cuando el %D% conteste no solicitar# ningFn 8I,
para acceder al +ate4ay 9oI8P
0ST# 6ing T2r$ =ine 1 = no Oya que no se va a conectar un tel5fono analgico al %D%P
0ST# Ca%%er ,e"a$%t ,0 = : O8ara este +ate4ay se utiliSar# el diaplan :P
!uando entre una llamada desde la red 8(D, el +ate4ay 9oI8 del %D% contestar# despu5s de :
segundos y pasar# la llamada tambi5n a las extensin s de %steris&:
1@1
,etect 0o%arit1 6eversa% = no Opara !olombiaP
,etect 0ST# =ong si%ence = yes Osi no hay flu$o audio del lado 8(D, por 3> segundos Opar#metro
que sigueP la llamada terminar#
0ST# =ong Si%ence ,$ration = 3>
,etect Vo+0 =ong Si%ence = yes Lo mismo para lado 9oI8
Vo+0 =ong Si%ence ,$ration = 3>
,etect ,isconnect Tone = Qes
,isconnect Tone = el valor de su pas2 *sto valores0 para muchos pases0 aparecen en la gua de
administrador del (8%31>:2
(e termina presionando el botn M(ubmit %ll !hangesN2
%hora el %D% intentar# conectarse a %steris& sin 5xito ya que la extensin no ha sido creada2 (e abre el
archivo sip2conf y al final del archivo0 se aade el siguiente bloque:
nano @etc@asterisk@si.con"
Kspa%(0"L
t0pe=friend
secret=pbx909%
Hualif0=0es
nat=0es
*ost=d0namic
directmedia=no
context=from&spa%(0"
dtmfmode=rfc"'%%
language=es
callerid=Linea7el UNum7elN
allo1transfer=0es
allo1subscribe=0es
subscribecontext=subscribe
callcounter=0es
disallo1=all
1@:
allo1=ala1
allo1=gC"9
(e guardan los cambios y se recarga la configuracin (I8:
asterisk .r3 ^si re%oa'^
/espu5s de unos segundos en la pagina del (8%31>: O'enF 9oice0 pestaa Info0 debera aparecerP:
*l dialplan:
nano @etc@asterisk@e3tensions.con"
para las llamadas salientes al final del contexto internas se pone:
exten =N 5'K(";5$C'9LQQQQQQQMB(B=ial!@-/spa%(0"B;5B=!EV>Q7>NG(W))
same =N nBFus0!%)
same =N nBOangup
/e esta forma marcando A h el numero a llamar0 todas las llamadas pasar#n para el (8%31>:2 *n
cuanto el %D% conteste0 se le enva los dgitos del numero a marcar quitando el A Oopcin / de la
aplicacin /ialP2 8ara las llamadas entrantes0 despu5s del contexto googleIin0 se configura el contexto
fromIspa31>: Ocomo definido en la configuracin de la extensin en el sip2confP y se pone:
Kfrom&spa%(0"L
exten =N sB(BNoOp
same =N nB=ial!@-/(000)
same =N nBOangup
/e esta forma cuando alguien llamar# el numero de la lnea telefnica0 despu5s de dos segundos
empeSar# a timbrar tambi5n la extensin 1>>>2 !laramente la llamada entrante se puede enviar a un
I9; o configurar para que timbre m#s de una extensin2
1@3
(e guardan los cambios y se recarga el dialplan:
asterisk /rvvvvvvvvvvvvvvv
!LI" 'ia%%an re%oa'
%hora desde cualquier tel5fono (I8 conectado a %steris& se marca un numero anteponiendo el A2 La
llamada saldr# por el (8%31>:2 Ltra prueba: se marca desde un celular al numero de la lnea telefnica
y se espera que empiece a timbrar la extensin 1>>>2
1@@
CA0+T>=O V++
,ia%%an / Con"ig$raci&n avanza'a
8ara poder entender me$or como funciona y como se construye un dialplan en %steris&0 hay que aclarar
algunos conceptos claves2 *n el p#rrafo :2<0 se ha explicado la divisin del dialplan en contextos0
extensiones y prioridades2 *n esta parte se ilustrar#n:
las variables
los pattern matching Opatrones de marcadoP
la aplicacin *!6L
el contexto subscribe
las 'acro
la aplicacin %uthenticate
Limitar llamadas salientes
J.1 =as varia(%es
-na variable es un ob$eto al que se asocia un valor2 (e utiliSan mucho en matem#tica y su funcin en
%steris& es reducir la complexidad del dialplan0 simplificar su construccin y aadirle una lgica m#s
comprensible2 *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 dialplan2 *n la preparacin del
dialplan se ha visto el bloque dedicado a las variables globales y se han configurado tres0 entre ellas:
9arkoQ+AX2@9arko
/e esta forma se asocia al nombre de variable mar&o el valor I%H:/mar&o2 i!ual es su funcin en el
dialplanj *n este caso simplificarlo2 (i se retoma el bloque de dialplan:
exten =N ("%;B(B=ial!@/Q"/mar+oB%0)
same =N nBOangup
que se ha creado para llamar la extensin I%H: mar&o0 esta parte puede ser escrita tambi5n de la
siguiente forma:
exten =N ("%;B(B=ial!EVmar+oWB%0)
same =N nBOangup
!uando se utiliSa una variable en el dialplan la sintaxis es: car#cter dolar e seguido por el nombre de la
variable entre dos llaves fg2 Las variables son case sensitive0 es decir que hay diferencia si se escriben
en mayFsculas y minFsculas2 *n el caso de la variable efmar&og que est# escrita toda en minFsculo0 no
es lo mismo si en el dialplan se pone:
exten =N ("%;B(B=ial!EV?/.IOWB%0)
same =N nBOangup
La variable ef'%;TLg estar# totalmente vaca2 %lgunas aplicaciones y funciones de %steris& al
e$ecutarse generan variables2 Dodas las variables generadas son en mayFsculo0 como0 por e$emplo0 la
que ya se ha visto: ef*HD*,g2 *s una buena practica0 cuando se crean variables0 utiliSar nombres en
minFsculo para diferenciarlas de las variables generadas por %steris&2
Las variables de canal tienen valideS solamente para la llamada corriente2 8ara crearlas se utiliSa la
aplicacin (et2 -n e$emplo:
Set8n$9eroQ1:
8ara toda la duracin de la llamada el valor de la variable efnumerog ser# 12 !uando la llamada
termine0 el valor asociado a la variable volver# a ser nulo2 *ste tipo de variables se utiliSan mucho en el
dialplan para modificar valores del canal y/o para guardar algunos datos de las llamadas para luego
utiliSarlos2 % lo largo de la construccin del dialplan se presentar#n distintos e$emplos2
6ay muchas variables predefinidas que se crean durante una llamada2 8ara saber cuales son y que valor
tienen en un determinado canal0 se utiliSa la aplicacin ,$9c2an2
8ara verla en accin se abre el archivo del dialplan:
nano @etc@asterisk@e3tensions.con"
se modifica este bloque:
exten =N ("%B(B/ns1er
same =N nB-la0bac+!*ello&1orld)
same =N nBOangup
para que quede:
exten =N ("%B(B/ns1er
same =N nB=umpc*an
same =N nB-la0bac+!*ello&1orld)
same =N nBOangup
(e guardan las modificaciones y se recarga el dialplan:
asterisk .rvvvvvvvvvvvvvvv
!LI" 'ia%%an re%oa'
1@<
%hora desde la extensin 1>>> se marca el numero 1:32 *l resultado en la consola de %steris& ser#:
?u$#in% Anfo Nor Channel" 2AF/1)))-)))))))1"
77777777777777777777777777777777777777777777777777777777777
Anfo"
Ca$e7 2AF/1)))-)))))))1
(y#e7 2AF
EniMueA?7 1318352)*3.1
CallerA?Cu$7 1)))
CallerA?Ca$e7 callerid7Nulano
?CA??i%its7 123
1?CA27 (C/3!
Farkin%lot7
>an%ua%e7 es
2tate7 E# (6!
1in%s7 )
CativeNor$at7 )B8 (alaw!
JriteNor$at7 )B8 (alaw!
1eadNor$at7 )B8 (alaw!
1awJriteNor$at7 )B8 (alaw!
1aw1eadNor$at7 )B8 (alaw!
1stNile?escri#tor7 2+
Nra$esin7 1
Nra$esout7 )
(i$eto@an%u#7 )
Ela#sed(i$e7 )h)$)s
ConteBt7 eBternas
EBtension7 123
Friority7 2
CallQrou#7 1
Ficku#Qrou#7 1
3##lication7 ?u$#Chan
?ata7 (E$#ty!
Llockin%in7 (Cot Llockin%!
Paria'les"
2AFC3>>A?7&TLk&GI19G&y<J&B9Tll&GE5&21hC$939?939GNk&(E.
2AF?<93AC7+6.126.121.135
2AFE1A7si#"1)))-1+).253.1,3.215"15*8)
!LI" B$it
8ara una lista completa de las variables predefinidas se puede consultar la =i&i de %steris&2 -na
variable muy peculiar es la variable ef*HD*,g0 que contiene el numero marcado2 *sta variable tiene
la siguiente sintaxis ef*HD*,:x:yP donde x es la posicin inicial e y el numero de dgitos que se
quieren extraer:
1@A
Domando como numero de partida ?<3>>:>>:
EV>Q7>NG(W devolver\ C%00"00
EV>Q7>NG(G;W devolver\ C%00
EV>Q7>NG"G$W devolver\ %00"00
EV>Q7>NG5G%W devolver\ "00
Las variables de ambiente se utiliSan para leer la variables del sistema OLinuxP2 8ara crearlas se utiliSa
la aplicacin (*D y la funcin *,92 -n e$emplo:
Set80<XQ`a-#V8=A#4:b:
*n este e$emplo a la variable 8BH estar# asociado el idioma configurado en el servidor Linux2
para probarla en el dialplan:
nano @etc@asterisk@e3tensions.con"
en el contexto internas se #nade este bloque:
e3ten QK L0E1ESet80<XQ`a-#V8=A#4:b:
sa9e QK nE#oo8+'io9a Servi'or `a0<Xb:
sa9e QK nECang$
(e guardan los cambios y se recarga el dialplan2
asterisk .rvvvvvvvvvvvvvv
!LI" 'ia%%an re%oa'
/esde la extensin 1>>> se marca el numero ?>2 *n la consola de %steris&:
EBecutin% 05)-eBternas"14 2et(W2AF/1)))-)))))))'WD WFLO7enE2.E(N-8W! in new stack
EBecutin% 05)-eBternas"24 Co<#(W2AF/1)))-)))))))'WD W@dioma ervidor en56#678&'W! in new
stack
EBecutin% 05)-eBternas"34 @an%u#(W2AF/1)))-)))))))'WD WW! in new stack
,o todas las variables de ambiente se pueden leer desde %steris&2
J.2 0attern Matc2ing
*l dialplan se construye de modo que todos los posibles nFmeros marcados puedan ser MinterceptadosN
1@E
por %steris&2 (era absurdo indicar todos los nFmeros de tel5fono de !olombia porque un usuario
podra marcar uno de ellos2 8ara este tipo de situaciones0 se utiliSan los 8attern 'arching o patrones de
llamada0 que permiten crear extensiones en el dialplan que MinterceptenN los nFmeros marcados2 *stos
caracteres se ponen en lugar de uno o m#s dgitos2 La lista es la siguiente:
H puede ser un numero de > a E
J puede ser un numero de 1 a E
, puede ser un numero de : a E
Y1I@0BIAZ puede ser un numero de 1 a @ o de B a A
2 OpuntoP puede ser uno o m#s caracteres
[ puede ser cero o m#s caracteres2
%lgunos e$emplos2 (i se quiere crear una extensin donde entren todas las llamadas a los celulares de
!olombia Oprefi$o 3P con el proveedor Kustvoip0 la primera linea sera:
exten =N 5005C%QQQQQQQQQB(B=ial!@-/<ustvoip/EV>Q7>NW)
(i no se conoce exactamente de cuantos dgitos est# compuesto un numero de celular la misma linea
cambiara de la siguiente forma:
exten =N 5005C%#B(B=ial!@-/<ustvoip/EV>Q7>NW)
*l punto despu5s del >>?<30 indica que lo que sigue puede ser compuesto de uno o m#s dgitos2
!uando se pone un pattern matching en la creacin de una extensin0 siempre hay que anteponer el
guion aba$o C
(i0 por e$emplo0 el numero de extensiones configuradas en %steris& van desde 1>>> hasta 1>EE el
dialplan para las llamadas entre extensiones sera:
e3ten QK ;10XXE1E,ia%8S+0@`a-XT-#b:
J.3 =a a%icaci&n -c2o
La aplicacin *cho se utiliSa para medir el tiempo de retorno de la voS2 8uede ser Ftil para revisar
eventuales retrasos y/o problemas en la calidad del audio2
8ara configurarla se modifica el dialplan:
nano @etc@asterisk@e3tensions.con"
y en el contexto internas se aade el siguiente bloque:
exten =N (50B(B/ns1er
same =N nB-la0bac+!demo&ec*otest)
1?>
same =N nB>c*o
same =N nB-la0bac+!demo&ec*odone)
same =N nBOangup
(e guardan los cambios y se recarga el dialplan:
asterisk .r3 ^'ia%%an re%oa'^
/esde cualquier extensin registrada a %steris& se marca el numero 1?> y se efectFa la prueba2
J.4 -% conte3to S$(scri(e
% lo largo de la configuracin del archivo sip2conf 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 par#metros
para activar esta funcionalidad:
callcounter=0es
allo1subscribe=0es
subscribecontext=subscribe
notif0ringing=0es
notif0*old=0es
%hora para que el sistema funcione0 en el dialplan hay que configurar el contexto subscribe2 (e abre el
archivo:
nano @etc@asterisk@e3tensions.con"
y despu5s del contexto internas se aade el siguiente bloque:
\s$(scri(e]
e3ten QK 1000E2intES+0@1000
e3ten QK 1001E2intES+0@1001
e3ten QK 1002E2intES+0@1002
e3ten QK 9arkoE2intE+AX2@9arko
La prioridad 6int es una prioridad especial que permite monitorear el estado de las extensiones2 *n este
caso las extensiones (I8 1>>>01>>1 y 1>>: y la extensin I%H: mar&o2
Ltra forma de escribir el bloque es:
\s$(scri(e]
e3ten QK ;100\0.2]E2intES+0@100\0.2]
e3ten QK 9arkoE2intE+AX2@9arko
es decir utiliSando los 8attern 'arching2 *n este caso se utiliSar# la primera forma2 (e guardan los
cambios y se recarga el dialplan:
1?1
asterisk .rvvvvvvvvvvvvvvvvvv
!LI" 'ia%%an re%oa'
!on el comando:
!LI" core s2ow 2ints
I= ;egistered %steris& /ial 8lan 6ints =I
1>>>_subscribe : (I8/1>>> (tate:Idle =atchers >
1>>1_subscribe : (I8/1>>1 (tate:-navailable =atchers >
1>>:_subscribe : (I8/1>>: (tate:-navailable =atchers >
mar&o_subscribe : I%H:/mar&o (tate:-navailable =atchers >
(e ver#n los hints configurados y en la ultima columna cuantas extensiones se han subscrito al estado
de las dem#s Oen este caso ningunaP2
*n el (oftphone HIlite se selecciona el icono indicado:
*n la nueva ventana:
%l lado de la casilla M(oftphoneN se escribe 1>>1 y luego se presiona el botn %dd2 %ntes de presionar
el botn MLTN para terminar la operacin0 en la ventana del terminal se sale de la consola de %steris&:
!LI" B$it
y se inicia la captura de los paquetes (I8:
ngre 1000 .D (1%ine ort L060 K @t9@s$(scri(e
(e vuelve al HILite y se presiona el botn LT2 (e vuelve a la ventana terminal y se termina la captura
de los paquetes (I82
1?:
La secuencia de los paquetes ser#:
HILite IIIIIIIIIIIIIIIIII(ubscribeIIIIIIIIIIIIIII" %steris&
HILite dIIIIIII@>1 -nauthoriSedIIIIIIIIIIIIII %steris&
HILite IIIIIIIIIIIIIIIIII(ubscribeIIIIIIIIIIIIIII" %steris&
HILite dIIIIIIIIIIIIIIIIIII:>> L&IIIIIIIIIIIIIIII %steris&
HILite dIIIIIIIIIIIIIIIII,LDI.QIIIIIIIIIIIIIIII %steris&
HILite IIIIIIIIIIIIIIIIIII:>> LTIIIIIIIIIIIIIIII" %steris&
Q en el ,LDI.Q final0 estar# anexa esta parte:
djxml version=a12>a encoding=aI(LIAA?EI1aj"
dpresence xmlns=aurn:ietf:params:xml:ns:pidfa
xmlns:pp=aurn:ietf:params:xml:ns:pidf:persona
xmlns:es=aurn:ietf:params:xml:ns:pidf:rpid:status:rpidIstatusa
xmlns:ep=aurn:ietf:params:xml:ns:pidf:rpid:rpidIpersona
entity=asip:1>>>_EB21:B21:1213?a"
dpp:person"dstatus"
dep:activities"dep:a4ay/"d/ep:activities"
d/status"d/pp:person"
dnote"#ot on%ined/note"
dtuple id=a1>>1a"
dcontact priority=a1a"sip:1>>1_EB21:B21:1213?d/contact"
dstatus"dbasic"closedd/basic"d/status"
d/tuple"
d/presence"
%steris& est# comunicando a la extensin 1>>> que la extensin 1>>1 no est# en linea O,ot onlineP
(e capturan nuevamente los paquetes con el comando:
ngre 1000 .D (1%ine ort L060 K @t9@noti"1
(e abre el softphone 3!H configurado como extensin 1>>1 y una veS que est5 registrado a %steris& se
termina la captura de los paquetes2 *n el archivo notify se encontrar# la siguiente secuencia:
%steris& IIIIIIII,LDI.QIIIIIIIIIIIIII" Hlite
%steris& dIIIIIIII:>> LTIIIIIIIIIIIIII Hlite
La parte final del paquete de ,otify enviado por %steris& a la extensin 1>>> ser#:
djxml version=a12>a encoding=aI(LIAA?EI1aj"
dpresence xmlns=aurn:ietf:params:xml:ns:pidfa
xmlns:pp=aurn:ietf:params:xml:ns:pidf:persona
xmlns:es=aurn:ietf:params:xml:ns:pidf:rpid:status:rpidIstatusa
xmlns:ep=aurn:ietf:params:xml:ns:pidf:rpid:rpidIpersona
entity=asip:1>>>_EB21:B21:1213?a"
1?3
dpp:person"dstatus"
d/status"d/pp:person"
dnote"6ea'1d/note"
dtuple id=a1>>1a"
dcontact priority=a1a"sip:1>>1_EB21:B21:1213?d/contact"
dstatus"dbasic"opend/basic"d/status"
d/tuple"
d/presence"
%steris& estar# comunicando a la extensin 1>>> que la extensin 1>>1 est# en linea ya que la
extensin 1>>> ha subscrito el estado de esa extensin2 (i se vuelve a la consola de %steris&:
asterisk .rvvvvvvvvvvvvvvv
!LI" core s2ow 2ints
I= ;egistered %steris& /ial 8lan 6ints =I
1>>>_subscribe : (I8/1>>> (tate:Idle =atchers >
1>>1_subscribe : (I8/1>>1 (tate:Idle =atchers 1
1>>:_subscribe : (I8/1>>: (tate:-navailable =atchers >
mar&o_subscribe : I%H:/mar&o (tate:-navailable =atchers >
*n la columna =atchers de la extensin 1>>1 hay un 1 que indica que hay una extensin que est#
monitoreando su estado2
(e abre Joiper Oconfigurado con las cuentas (I8 1>>: y I%H: mar&oP y en el HIlite se subscribe el
estado de ambas2 *l resultado ser#:
/esde la extensin 1>>1 se marca el numero 1?> Otest de echoP2 *n el HILite aparecer#:
1?@
8or ultimo0 desde la extensin 1>>: se llama la extensin 1>>1:
La misma cosa se puede hacer en los Del5fonos (I8 de mesa que soportan los BL. OBusy Lamp .ieldP2
J.L =as Macro
(i en el dialplan algunas acciones se repiten a menudo0 %steris& brinda la posibilidad de crear una
'acro que permite simplificar este tipo de operaciones2 La sintaxis de la aplicacin 'acro:
asterisk .rvvvvvvvvvvvv
!LI" core s2ow a%ication Macro
-7 Anfo a'out a##lication .9acro. 7-
02yno#sis4
9acro A$#le$entation.
0?escri#tion4
EBecutes a $acro usin% the conteBt $acro-Sna$eRD Gu$#in% to the .s. eBtension
of that conteBt and eBecutin% each ste#D then returnin% when the ste#s end.
(he callin% eBtensionD conteBtD and #riority are stored in \U93C1<EO(EC
VD \U93C1<C<C(EO(V and \U93C1<F1A<1A(&V res#ectively. 3r%u$ents 'eco$e
\U31Q1VD \U31Q2VD etc in the $acro conteBt.
Af you Qoto out of the 9acro conteBtD the 9acro will ter$inate and control
will 'e returned at the location of the Qoto.
Af \U93C1<<NN2E(V is set at ter$inationD 9acro will atte$#t to continue
at #riority 93C1<<NN2E( / C / 1 if such a ste# eBistsD and C / 1 otherwise.
J31CACQHHH" Lecause of the way 9acro is i$#le$ented (it eBecutes the
#riorities contained within it via su'-en%ine!D and a fiBed #er-thread $e$ory
stack allowanceD $acros are li$ited to , levels of nestin% ($acro callin%
$acro callin% $acroD etc.!] At $ay 'e #ossi'le that stack-intensive
a##lications in dee#ly nested $acros could cause asterisk to crash earlier
than this li$it. At is advised that if you need to dee#ly nest $acro callsD
that you use the Qosu' a##lication (now allows ar%u$ents like a 9acro! with
eB#lict 1eturn(! calls instead.
J31CACQHHH" Ese of the a##lication .JaitEBten. within a $acro will not
1??
function as eB#ected. Flease use the .1ead. a##lication in order to read ?(9N
fro$ a channel currently eBecutin% a $acro.
02yntaB4
9acro(na$e0Dar%10Dar%20D...444!
03r%u$ents4
na$e
(he na$e of the $acro
*l comando seria:
'acroOnombreCdeClaCmacro0 argumento10argumento:0argumento,P
%rgumento, es un valor o una variable que se pasa a la macro al momento de llamarla desde el plan de
marcado2
La aplicacin macro crea las siguientes variables de canal:
ef'%!;LC*HD*,g contendr# el numero marcado
ef'%!;LC!L,D*HDg contendr# el contexto de donde se ha llamado la 'acro
ef'%!;LC8;IL;IDQg contendr# la prioridad de la lnea de donde se ha llamado la 'acro
ef%;+1g0 ef%;+:g0 ef%;+,P son las variables que contienen los argumentos que se han
enviado a la 'acro2
8ara empeSar a utiliSar la aplicacin 'acro se crear# una muy sencilla que antes de marcar una
extensin controle su estado y0 en base a 5ste0 enve la llamada a una determinada parte del dialplan2
8rimero hay que salir de la consola y modificar el plan de marcado:
!LI" B$it
nano @etc@asterisk@e3tensions.con"
%l final del archivo se aaden estas lneas:
Kmacro&disponibleL
exten =N sB(Bet!estado=EV=>R@C>57/7>!@-/EV?/C.O5>Q7>NW)W)
exten =N sBnB3otoif!EK4EVestadoW4 = 4NO75@N6>4LY5)
exten =N sBnBFus0
exten =N sBnBOangup
exten =N sBnB?acro>xit
-na explicacin de las aplicaciones y funciones nuevas que aparecen en las lineas de la 'acro:
La funcin ,-V+C-;STAT-: devuelve el estado de una extensin que en este caso se asignar# a la
1?B
variable MestadoN2 Los posibles valores son:
-,T,L=, G *l canal es valido pero su estado no es conocido
,LDCI,-(* I ,o se est# usando
I,-(* I *l canal est# en uso
B-(Q I *l canal est# ocupado
I,9%LI/ I *l canal no es valido
-,%9%IL%BL* I *l canal no est# disponible Ono est# registrado a %steris&P
;I,+I,+ I *l canal est# timbrando
;I,+I,+-(* I *l canal est# timbrando y en uso
L,6LL/ I *l canal est# en espera
La aplicacin 4otoi": literalmente es: ve a la prioridad indicada si se presenta una determinada
condicin OverdaderoP0 sino ve a otra prioridad indicada OfalsoP2 (i la segunda prioridad no se
especifica0 el dialplan continua con la prioridad que sigue2
La aplicacin <$s1: si la extensin no se encuentra libre se enva al llamante una seal de ocupado
La aplicacin Macro-3it: sale de la macro y vuelve al mismo contexto0 extensin0 prioridad h 1 de
donde se llam2
8ara insertar la 'acro en el dialplan creado0 se modifica el bloque configurado para las llamadas entre
extensiones2
exten =N 5(00K0&"LB(B=ial!@-/EV>Q7>NWB%0)
same =N nBOangup
8ara que quede:
exten =N 5(00K0&"LB(B?acro!disponible)
same =N nB=ial!@-/EV>Q7>NWB;5)
same =N nBOangup
(e guardan los cambios y se actualiSa el plan de marcado:
asterisk .rvvvvvvvvvvvvvvv
!LI" 'ia%%an re%oa'
%hora se marca desde la extensin 1>>> la extensin 1>>1 Oambas conectadas a %steirs&P y se controla
lo que aparece en la consola de %steris&:
EBecutin% 01))1-eBternas"14 9acro(W2AF/1)))-))))))11WD Wdis#oni'leW! in new stack
EBecutin% 0s-$acro-dis#oni'le"14 2et(W2AF/1)))-))))))11WD Westado7NO75@N6>W! in new stack
EBecutin% 0s-$acro-dis#oni'le"24 QotoAf(W2AF/1)))-))))))11WD W1;5W! in new stack
Qoto ($acro-dis#oni'leDsD5!
1?<
EBecutin% 0s-$acro-dis#oni'le"54 9acroEBit(W2AF/1)))-))))))11WD WW! in new stack
EBecutin% 01))1-eBternas"24 ?ial(W2AF/1)))-))))))11WD W2AF/1))1D*5W! in new stack
(e cierra el 3!H (oftphone Oextensin 1>>1P y se marca otra veS desde la extensin 1>>> la extensin
1>>1:
EBecutin% 01))1-eBternas"14 9acro(W2AF/1)))-))))))13WD Wdis#oni'leW! in new stack
EBecutin% 0s-$acro-dis#oni'le"14 2et(W2AF/1)))-))))))13WD Westado76N/R/@L/FL>W! in new stack
EBecutin% 0s-$acro-dis#oni'le"24 QotoAf(W2AF/1)))-))))))13WD W);5W! in new stack
EBecutin% 0s-$acro-dis#oni'le"34 Lusy(W2AF/1)))-))))))13WD WW! in new stack
!omo el estado de la extensin 1>>1 es M-,%9%IL%BL*N Oen negritaP se procesa la prioridad 3 Oel
BusyP y se termina la llamada2
J.6 A$tenticar %as =%a9a'as Sa%ientes con %a a%icaci&n A$t2enticate
%l momento de crear las extensiones en el archivo sip2conf0 a la extensin 1>>: se ha asociado el
contexto %oca%es2 *se contexto no tiene acceso al contexto internacio0 pues la extensin 1>>: no puede
efectuar llamadas salientes utiliSando el proveedor (I8 Kustvoip2 *ste es un caso tpico en la
configuracin de %steris&2 %lgunas extensiones tienen acceso a la lineas salientes y otras no2 8ara
comprobarlo0 si se marca el numero >>?<31:BA1@<@> desde las extensin 1>>:0 el resultado ser#:
0Ne' 2 1)"2+"184 C<(ACE031,*54" chansi#.c"221*, handlereMuestinvite" Call fro$ .1))2.
(186.112.1+5.81"1))))! to eBtension .))5,312681*,*). reGected 'ecause eBtension not found in
conteBt .locales..
Ltra forma de configurar %steris& es que las extensiones que no tienen acceso a las lineas salientes0
para tenerlo0 tengan que autenticarse2 /e esta forma hay un control sobre la llamadas salientes y se
puede tener un registro de los usuarios que han utiliSado el servicio2 *ste tipo de configuracin se har#
utiliSando la aplicacin %uthenticate2
8ara conocer la sintaxis de la aplicacin:
asterisk .rvvvvvvvvvvvvvv
!LI" core s2ow a%ication a$t2enticate
02yntaB4
3uthenticate(#assword0Do#tions0D$aBdi%its0D#ro$#t444!
03r%u$ents4
#assword
Fassword the user should know
o#tions
a" 2et the channels. account code to the #assword that is entered
d" Anter#ret the %iven #ath as data'ase keyD not a literal file
1?A
$" Anter#ret the %iven #ath as a file which contains a list of account
codes and #assword hashes deli$ited with .".D listed one #er line in the
file. Jhen one of the #asswords is $atchedD the channel will have its
account code set to the corres#ondin% account code in the file.
r" 1e$ove the data'ase key u#on successful entry (valid with .d.
only!
$aBdi%its
$aBi$u$ acce#ta'le nu$'er of di%its. 2to#s readin% after $aBdi%its
have 'een entered (without reMuirin% the user to #ress the .8. key!.
?efaults to ) - no li$it - wait for the user #ress the .8. key.
#ro$#t
<verride the a%ent-#ass #ro$#t file.
La opcin pass4ord puede contener un valor o referirse a un archivo de texto que contenga una lista de
nombres con las respectivas contraseas separada por el car#cter M:N2 Las contraseas se pueden
escribir en claro o cifradas con '/?2 *n este caso se cifrar#n2 (i el 8I, para la extensin 1>>:
O'enganoP es @@AA0 su valor cifrado ser#:
ec2o .n ^4488^ _ 9'Ls$9
c@A1Ed>Bb>caA1>d3A?>B@?3cfaaeEdA
Luego se crea el archivo de texto con el nombre del usuario de la extensin y la respectiva contrasea
cifrada:
nano @var@soo%@asterisk@in.t3t
se aade la siguiente linea:
?enganoGc;'(9d0$b0ca'(0d%'50$;5%cfaae9d'
(e guardan los cambios2
%hora se crea un nuevo contexto al cual tenga acceso la extensin 1>>:2 (e llamar# este contexto
MautenN
nano @etc@asterisk@e3tensions.con"
despu5s del contexto internas se aade el siguiente bloque:
KautenL
exten =N 500#B(BNoO-
same =N nB/ut*enticate!/var/spool/asteris+/pin#txtBamB;)
same =N nB3oto!internacioBEV>Q7>NWB()
same =N nBOangup
Los par#metros utiliSados en la aplicacin A$t2enticate:
1?E
*l primero define la carpeta y el nombre del archivo que contiene las contraseas2
La Lpcin a define que en el registro de las llamadas el campo %ccountcode contendr# el
nombre del usuario independientemente de la extensin que haya utiliSado para efectuar la
llamada
La opcin 9 define que el archivo de texto contendr# las contraseas cifradas con '/?2
*l ultimo par#metro indica que los dgitos del 8I, son @ evitando de tener que utiliSar la tecla
numero para terminar el envo de los dgitos2
(i la contrasea digitada est# en el archivo de texto creado0 el dialplan pasar# a la lnea que sigue
donde0 con la aplicacin +oto0 se saltar# al contexto internacio0 extensin igual al numero marcado y
prioridad 10 es decir que se iniciar# la llamada2
*n el contexto locales se aade el contexto auten para que la extensin 1>>: tenga acceso al bloque
reci5n creado Oen negrita los cambiosP:
YlocalesZ
include =" internas
inc%$'e QK a$ten
(e guardan los cambios y se recarga el dialplan:
asterisk .rvvvvvvvvvv
!LI" 'ia%%an re%oa'
/esde la extensin 1>>: se marca el numero >>?<1@>13@3@2 !uando %steris& lo pide0 se ingresar# la
contrasea @@AA2 *mpeSar# la llamada al numero marcado2
(e sale de la consola de %steris&:
!LI" B$it
8ara averiguar que efectivamente la llamada ha sido cargada a la cuenta del usuario 'engano se entra
en el cliente 'y()L:
91sB% .$ root .sesa9o
(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 srcE'stEc2anne%E(i%%secEacco$ntco'e "ro9 c'r w2ere acco$ntco'eQUMenganoUS
1B>
*l resultado ser#:
/------/--------------/-------------------/---------/-------------/
5 src 5 dst 5 channel 5 'illsec 5 accountcode
/------/--------------/-------------------/---------/-------------/
5 1))2 5 ))5,1*)13*3* 5 2AF/1))2-))))))1* 5 15 5 9en%ano
/------/--------------/-------------------/---------/-------------/
1 row in set ().)) sec!
(e sale del cliente 'y()L:
mysql" B$it
J.J =i9itar %%a9a'as sa%ientes) "$nciones 46O>0 1 46O>0;CO>#T
6asta la versin 12@2H si se quera limitar el numero de llamadas salientes/entrantes para una extensin0
se utiliSaba el par#metro ca%%.%i9it que haba que aadir en la configuracin de la extensin en el
sip2conf2 % partir de la versin 12B2H de %steris& y por consecuencia en la versin 12A2H0 este par#metro
ha sido marcado como MdeprecatedNU esto quiere decir que no se recomienda su uso en las nuevas
versiones2 *n su lugar se han introducido dos funciones:
+;L-8
+;L-8C!L-,D
% trav5s de estas dos funciones0 es posible limitar el numero de canales utiliSados en las llamadas
entrantes y salientes2
-n e$emplo practico2 (e quiere limitar a : el numero de llamadas salientes para cada extensin
configurada y al mismo tiempo se quieres limitar a : las llamadas salientes por la troncal Kustvoip2
Lo que hay que hacer es construir un dialplan donde si una extensin intenta sacar la tercera llamada
simultanea0 se le avise que no puede y al mismo tiempo si los : canales de la troncal se est#n
utiliSando0 se le avise al usuario que no hay m#s canales disponibles para las llamadas salientes2
(i se quiere conocer en cualquier momento los canales utiliSados por cada extensin/troncal
configurada en %steris&0 el comando es:
asterisk .rvvvvvvvvvvvvvvvvv
!LI" si s2ow in$se
6 Feer na$e An use >i$it
1))) )/)/) 21*,*836*,
1))1 )/)/) 21*,*836*,
1))2 )/)/) 21*,*836*,
Gustvoi# )/)/) 21*,*836*,
1B1
Ba$o la columna In use0 los significados de las tres columnas Ode la iSquierda a la derechaP son:
!anales in uso
!anales timbrando
!anales en espera
Ba$o la columna Limit se puede notar que pr#cticamente no existe ningFn limite2 ;etomando el
dialplan hasta ahora creado0 se va a aplicar la regla definida a las llamadas salientes2 (e abre el archivo
del dialplan:
nano @etc@asterisk@e3tensions.con"
*n el contexto internacio se modifican estas lineas:
exten =N 500#B(B=ial!@-/<ustvoip/EV>Q7>NWB%0)
same =N nBOangup
8ara que queden:
exten =N 500Q#B(BNoOp
same =N nBet!3.O6-!voip)=<ustvoip)
same =N nBet!3.O6-!salida)=EVC/LL>.@=!num)W)
same =N nBet!trun+sal=EV3.O6-5CO6N7!<ustvoipSvoip)W)
same =N nBet!extsal=EV3.O6-5CO6N7!EVC/LL>.@=!num)WSsalida)W)
same =N nBNoOp!Oa0 EVextsalW llamadas desde la extension EVC/LL>.@=!num)W 0 EVtrun+salW con el proveedor Pustvoip)
same =N nB3otoif!EKEVextsalW N " ] EVtrun+salW N "LYbus0)
same =N nB=ial!@-/<ustvoip/EV>Q7>NW)
same =N nBOangup
same =N n!bus0)B-la0bac+!all&outgoing&lines&unavailable)
same =N nBOangup
-na explicacin del dialplan creado:
*n la segunda linea se se asigna al grupo voip la troncal $ustvoip
*n la tercera linea se asigna al grupo salida la variable ef!%LL*;I/OnumPg que contiene el
numero de la extensin que est# llamando
*n la cuarta linea se aumenta de una unidad el valor del grupo voip y se asigna el nuevo valor a
la variable trun&sal
*n la quinta linea se aumenta de una unidad el valor del grupo salida y se asigna el nuevo valor
a la variable extsal
*n la sexta linea se enva el valor de las llamadas totales de las extensiones y de la troncal a la
consola de %steris&
*n la s5ptima linea se define este comportamiento2 (i las llamadas desde las extensiones son
mayores a dos o las llamadas de la troncal son mayores a dos0 ir a la etiqueta ObusyP0 sino seguir
con el dialplan2 *l operador lgico _ est# en lugar de la palabra ingl5s O62
1B:
*n la linea que empieSa con la etiqueta busy0 se comunica a la extensin que no hay lineas
disponibles para las llamadas salientes2
(e guardan los cambios y se actualiSa el dialplan:
asterisk .rvvvvvvvvvvvvvvvvvvv
!LI" 'ia%%an re%oa'
%hora para hacer una primera prueba0 desde la extensin 1>>1 Oel softphone 3!HP se marca el numero
>>?<1@>13@3@ y al mismo tiempo desde la extensin 1>>> se marca dos veces al mismo numero2 *n la
consola de %steris& aparecer#:
0ri9era %%a9'a
== *xtension !hanged 1>>1YsubscribeZ ne4 state In-se for ,otify -ser 1>>>
II *xecuting Y>>?<1@>13@3@_externas:1Z ,oLpOa(I8/1>>1I>>>>>>:>a0 aaP in ne4 stac&
II *xecuting Y>>?<1@>13@3@_externas::Z (etOa(I8/1>>1I>>>>>>:>a0 a+;L-8OvoipP=$ustvoipaP in
ne4 stac&
II *xecuting Y>>?<1@>13@3@_externas:3Z (etOa(I8/1>>1I>>>>>>:>a0 a+;L-8OsalidaP=1>>1aP in
ne4 stac&
II *xecuting Y>>?<1@>13@3@_externas:@Z (etOa(I8/1>>1I>>>>>>:>a0 atrun&sal=1aP in ne4 stac&
II *xecuting Y>>?<1@>13@3@_externas:?Z (etOa(I8/1>>1I>>>>>>:>a0 aextsal=1aP in ne4 stac&
II *xecuting Y>>?<1@>13@3@_externas:BZ ,oLpOa(I8/1>>1I>>>>>>:>a0 aCa1 1 %%a9a'as 'es'e %a
e3tension 1001 1 1 con e% rovee'or Y$stvoiaP in ne4 stac&
II *xecuting Y>>?<1@>13@3@_externas:<Z +otoIfOa(I8/1>>1I>>>>>>:>a0 a>jbusyaP in ne4 stac&
II *xecuting Y>>?<1@>13@3@_externas:AZ /ialOa(I8/1>>1I>>>>>>:>a0
a(I8/$ustvoip/>>?<1@>13@3@aP in ne4 stac&

Seg$n'a =%a9a'a
== -sing -/8DL !o( mar& ?
== -sing (I8 ;D8 !o( mar& ?
II !alled (I8/$ustvoip/>>?<1@>13@3@
II (I8/$ustvoipI>>>>>>:1 is ma&ing progress passing it to (I8/1>>1I>>>>>>:>
== -sing -/8DL !o( mar& ?
== -sing (I8 ;D8 !o( mar& ?
II *xecuting Y>>?<1@>13@3@_externas:1Z ,oLpOa(I8/1>>>I>>>>>>::a0 aaP in ne4 stac&
II *xecuting Y>>?<1@>13@3@_externas::Z (etOa(I8/1>>>I>>>>>>::a0 a+;L-8OvoipP=$ustvoipaP in
ne4 stac&
II *xecuting Y>>?<1@>13@3@_externas:3Z (etOa(I8/1>>>I>>>>>>::a0 a+;L-8OsalidaP=1>>>aP in
ne4 stac&
II *xecuting Y>>?<1@>13@3@_externas:@Z (etOa(I8/1>>>I>>>>>>::a0 atrun&sal=:aP in ne4 stac&
II *xecuting Y>>?<1@>13@3@_externas:?Z (etOa(I8/1>>>I>>>>>>::a0 aextsal=1aP in ne4 stac&
II *xecuting Y>>?<1@>13@3@_externas:BZ ,oLpOa(I8/1>>>I>>>>>>::a0 aCa1 1 %%a9a'as 'es'e %a
e3tension 1000 1 2 con e% rovee'or Y$stvoiaP in ne4 stac&
II *xecuting Y>>?<1@>13@3@_externas:<Z +otoIfOa(I8/1>>>I>>>>>>::a0 a>jbusyaP in ne4 stac&
II *xecuting Y>>?<1@>13@3@_externas:AZ /ialOa(I8/1>>>I>>>>>>::a0
a(I8/$ustvoip/>>?<1@>13@3@aP in ne4 stac&
1B3
Tercera =%a9a'a
== -sing -/8DL !o( mar& ?
== -sing (I8 ;D8 !o( mar& ?
II !alled (I8/$ustvoip/>>?<1@>13@3@
II (I8/$ustvoipI>>>>>>:3 is ma&ing progress passing it to (I8/1>>>I>>>>>>::
II (I8/$ustvoipI>>>>>>:1 ans4ered (I8/1>>1I>>>>>>:>
== -sing -/8DL !o( mar& ?
== -sing (I8 ;D8 !o( mar& ?
II *xecuting Y>>?<1@>13@3@_externas:1Z ,oLpOa(I8/1>>>I>>>>>>:@a0 aaP in ne4 stac&
II *xecuting Y>>?<1@>13@3@_externas::Z (etOa(I8/1>>>I>>>>>>:@a0 a+;L-8OvoipP=$ustvoipaP in
ne4 stac&
II *xecuting Y>>?<1@>13@3@_externas:3Z (etOa(I8/1>>>I>>>>>>:@a0 a+;L-8OsalidaP=1>>>aP in
ne4 stac&
II *xecuting Y>>?<1@>13@3@_externas:@Z (etOa(I8/1>>>I>>>>>>:@a0 atrun&sal=3aP in ne4 stac&
II *xecuting Y>>?<1@>13@3@_externas:?Z (etOa(I8/1>>>I>>>>>>:@a0 aextsal=:aP in ne4 stac&
II *xecuting Y>>?<1@>13@3@_externas:BZ ,oLpOa(I8/1>>>I>>>>>>:@a0 aCa1 2 %%a9a'as 'es'e %a
e3tension 1000 1 3 con e% rovee'or Y$stvoiaP in ne4 stac&
II *xecuting Y>>?<1@>13@3@_externas:<Z +otoIfOa(I8/1>>>I>>>>>>:@a0 a1jbusyaP in ne4 stac&
II +oto Oexternas0>>?<1@>13@3@01>P
II *xecuting Y>>?<1@>13@3@_externas:1>Z 8laybac&Oa(I8/1>>>I>>>>>>:@a0 aa%%.o$tgoing.%ines.
$navai%a(%eaP in ne4 stac&
II d(I8/1>>>I>>>>>>:@" 8laying ballIoutgoingIlinesIunavailable2ula4b Olanguage besbP
Y.eb B 11:?::1BZ ,LDI!*Y3?<AZ: channel2c:@1@A CCastCread: /ropping incompatible voice frame on
(I8/1>>>I>>>>>>:@ of format ala4 since our native format has changed to >x@ Oula4P
II (I8/$ustvoipI>>>>>>:3 ans4ered (I8/1>>>I>>>>>>::
II (tarted music on hold0 class bdefaultb0 on (I8/$ustvoipI>>>>>>:3
II *xecuting Y>>?<1@>13@3@_externas:11Z 6angupOa(I8/1>>>I>>>>>>:@a0 aaP in ne4 stac&
!on el comando sip sho4 inuse0 a lo largo de la segunda llamada0 aparecer#:
!LI" si s2ow in$se
6 Feer na$e An use >i$it
1))) 1/)/) 21*,*836*,
1))1 1/)/) 21*,*836*,
1))2 )/)/) 21*,*836*,
Gustvoi# 2/)/) 21*,*836*,
!uando la extensin 1>>> intenta sacar la tercera llamada0 el +otoif es verdadero y el dialplan sigue
desde la prioridad con la etiqueta busy anunciando que no hay m#s linea salientes disponibles2
*st# configuracin es funcional si a todas las extensiones se quiere asignar m#ximo dos canales
salientes0 pero i!mo se puede configurar el dialplan para diferenciar los canales salientes para cada
extensinj
-na posible solucin es utiliSar0 en la configuracin de las extensiones0 el par#metro (et9ar2 *ste
par#metro permite crear variables personaliSadas para cada extensin2
1B@
*n este e$emplo0 se crear# una variable para la extensin 1>>: llamada canales y se le asignar# el valor
1:
nano @etc@asterisk@si.con"
se modifica este bloque:
K(00"L!int&locales)
accountcode=(00"
secret=pbx909"
mailbox=(00"Sdefault
callerid=?engano U(00"N
para que quede:
K(00"L!int&locales)
accountcode=(00"
secret=pbx909"
mailbox=(00"Sdefault
callerid=?engano U(00"N
etvar=canales=(
(e guardan los cambios y se actualiSa la configuracin (I8:
asterisk .rvvvvvvvvvvvvvvvv
!LI" si re%oa'
8ara averiguar que efectivamente el valor se ha configurado correctamente:
!LI" si s2ow eer 1002
entre todas las lineas aparecer#:
Paria'les "
canales 7 1
%hora se va a utiliSar esta variable en el dialplan2 (e modifica este bloque:
KautenL
exten =N 500#B(BNoO-
same =N nB/ut*enticate!/var/spool/asteris+/pin#txtBamB;)
same =N nB3oto!internacioBEV>Q7>NWB()
same =N nBOangup
para que quede:
1B?
KautenL
exten =N 500#B(BNoO-
same =N nBet!3.O6-!numcan)=EVC/LL>.@=!num)W)
same =N nBet!numcan=EV3.O6-5CO6N7!EVC/LL>.@=!num)WSnumcan)W)
same =N nB3oto@f!EKEVnumcanW N EVcanalesWLYbus0)
same =N nB/ut*enticate!/var/spool/asteris+/pin#txtBamB;)
same =N nB3oto!internacioBEV>Q7>NWB()
same =N nBOangup
same =N n!bus0)B-la0bac+!all&outgoing&lines&unavailable)
same =N nBOangup
(e guardan los cambios2 /e esta forma antes de autenticar la llamada de la extensin 1>>:0 se controla
cuantos canales esa extensin est# utiliSando2 (i son m#s de uno se salta a la etiqueta busy0 si son
menos se cursa la llamada normalmente2 La parte importante es la linea del +otoIf donde se compara el
numero de canales in uso con la variable canales configurada en el archivo sip2conf con el par#metro
(et9ar2
*sto quiere decir que cada veS que la extensin efectuar# cualquier tipo de llamada0 llevar# consigo la
variable canales y su valor2 8ara averiguarlo0 desde la extensin 1>>: se marca 1:32 *l resultado:
/umping Info .or !hannel: (I8/1>>:I>>>>>>>f:
=========================================================================
Info:
,ame= (I8/1>>:I>>>>>>>f
Dype= (I8
-niqueI/= 13B3:A:E@121?
Lin&edI/= 13B3:A:E@121?
!allerI/,um= 1>>:
!allerI/,ame= 'engano
!onnectedLineI/,um= O,/%P
!onnectedLineI/,ame=O,/%P
/,I//igits= 1:3
;/,I(= O,/%P
8ar&inglot= default
Language= es
(tate= -p OBP
;ings= >
,ative.ormat= >xA Oala4P
=rite.ormat= >xA Oala4P
;ead.ormat= >xA Oala4P
;a4=rite.ormat= >xA Oala4P
;a4;ead.ormat= >xA Oala4P
=riteDranscode= ,o
;eadDranscode= ,o
1st.ile/escriptor= 3>
.ramesin= @
1BB
.ramesout= >
Dimeto6angup= >
*lapsedDime= >h>m1s
/irectBridge= dnone"
IndirectBridge= dnone"
!ontext= locales
*xtension= 1:3
8riority= :
!all+roup= 1
8ic&up+roup= 1
%pplication= /ump!han
/ata= O*mptyP
Bloc&ingCin= O,ot Bloc&ingP
Varia(%es)
cana%esQ1
(I8!%LLI/=,mK&QD&xJ$l$J=K$J+-4QS&4Q$%x'm'x,DgyJ=J$'m'2
(I8/L'%I,=1<32:??2:>?2:@>
(I8-;I=sip:1>>:_1E>2B<21?A21@E:11<3A
========================================================================
*n negrita la variable canales2
1B<
CA0+T>=O V+++
+V6
I9; es la sigla de Interactive 9oice ;esponse0 que se traduce del ingl5s como ;espuesta de 9oS
Interactiva2 !onsiste en un central telefnica Oen este caso %steris&P que es capaS de recibir una llamada
e interactuar con el usuario a trav5s de grabaciones de voS y el reconocimiento de respuestas a trav5s
del uso de las teclas del tel5fono2 %lgunos e$emplos: el menF que se escucha cuando se llama un centro
de atencin al clienteU los bancos que permiten hacer consultas o pagos a trav5s de un menF vocal2 *n
el lengua$e t5cnico habra que diferenciar dos tipos de sistemas:
*l I9; permite hacer consulta a base de datos0 devolver los resultados y0 en general0 interactuar
de forma activa con el usuario2
la contestadora autom#tica permite navegar entre menFs vocales permitiendo elegir entre
distintas opciones hasta llegar a la informacin que se est# buscando
*n este capitulo se presentar# la configuracin de una contestadora autom#tica2
8.1 4ra(aci&n 'e %as %oc$ciones
*n %steris& con la aplicacin ;ecord se pueden grabar archivos audios para luego utiliSarlos en la
creacin de un I9;2 8ara implementarla hay que modificar el dialplan2
nano @etc@asterisk@e3tensions.con"
*n el contexto internas se pone el siguiente bloque:
exten =N 5$$QQB(B/ns1er!)
same =N nB:ait!")
same =N nB.ecord!/tmp/promptEV>Q7>NG"W#1av)
same =N nB:ait!")
same =N nB-la0bac+!/tmp/promptEV>Q7>NG"W)
same =N nB:ait!")
same =N nBOangup!)
Lnea 1: contesta la llamada
Lnea :: espera : segundos
Lnea 3: +raba el archivo audio en la carpeta /tmp con nombre promptHH donde HH son los
Fltimos dos dgitos de la extensin que se ha marcado desde el (oftphone2 *$emplo: (i se llama
la extensin BB?> el archivo audio tendr# el nombre prompt?>24a4
Lnea @: espera : segundos
Lnea ?: devuelve el archivo reci5n grabado
Lnea B: espera : segundos
Lnea <: cuelga la llamada
(i la grabacin no es satisfactoria0 se vuelve a grabar marcando el mismo numero2 La nueva grabacin
remplaSar# la vie$a2
+M0O6TA#T-) ara ter9inar %a gra(aci&n 2a1 B$e resionar %a tec%a n$9ero d
(e guardan los cambios y se actualiSa el dialplan:
asterisk .rvvvvvvvvvvvvvvvv
!LI" 'ia%%an re%oa'
!LI" B$it
*sta solucin permite grabar hasta EE archivos audio2 8ara el e$emplo a seguir hay que grabar tres
archivos de audio que contengan las siguientes frases:
prompt>124av I Mfor english press one0 para espaol marque dosN
prompt>:24av I Mpara efectuar un test de eco marque 10 para escuchar la mFsica en espera
marque :0 para la oficina de ventas marque 3N
prompt>324av I Mfor echo test press 10 for music on hold press :0 for sales office0 press 3N
/esde la extensin 1>>> se marca BB>1 y se graba la primera fraseU luego BB>: y se graba la segundaU
se termina con BB>3 y se graba la tercera2 -na veS terminadas las grabaciones se crea un nueva carpeta:
9k'ir @var@%i(@asterisk@so$n's@c$sto9
y se mueven los tres archivos Oprompt>124av prompt>:24av y prompt>324avP a la carpeta creada
c' @t9
9v ro9tT @var@%i(@asterisk@so$n's@c$sto9
*l formato audio de las locuciones es =av2 % veces es Ftil y aconse$able crear las mismas locuciones en
otros formatos audioU esto para que %steris& no tenga que decodificar y codificar las locuciones a otro
formato audio segFn el codec configurado en el tel5fono I8 o softphone de quien est# llamando2 *ste
proceso se llama transcoding y utiliSa bastantes recursos del servidor2 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&/sounds2 !omo han
sido copiadas en la carpeta custom0 el comando ser#:
!LI" "i%e convert c$sto9@ro9t01.wav c$sto9@ro9t01.$%aw
Converted custo$/#ro$#t)1.wav to custo$/#ro$#t)1.ulaw in )$s
1<>
/e esta forma se convierte la locucin al formato audio ula4
!LI" "i%e convert c$sto9@ro9t01.wav c$sto9@ro9t01.a%aw
Converted custo$/#ro$#t)1.wav to custo$/#ro$#t)1.alaw in )$s
para el formato ala42
Qa que se ha instalado el codec +<:E0 se puede convertir el archivo tambi5n a este formato audio:
!LI" "i%e convert c$sto9@ro9t01.wav c$sto9@ro9t01.gJ2R
Converted custo$/#ro$#t)1.wav to custo$/#ro$#t)1.%,2+ in 2*$s
8ara conocer la sinopsis del comando record:
!LI" core s2ow a%ication recor'
!LI" B$it
8.2 Con"ig$raci&n n$9ero geogr!"ico
!uando se adquiere un numero geogr#fico0 la empresa que lo vende0 facilita siempre el rango de I8 de
donde llegar#n los I,9ID* para las llamadas entrantes2 *sta lista de I8 hay que incluirla en el sip2conf
sino las llamadas no ser#n autenticadas pues ser#n rechaSadas2
Ltra cosa que el proveedor permite0 es configurar el M'appingN0 es decir definir que direccin (I8 o
numero de tel5fono hay que llamar cuando entre una llamada al numero geogr#fico2 *sto normalmente
se hace desde el panel de control que cada cliente tiene a disposicin2 8ara tener una idea de como
funciona y de como se configuran los nFmeros geogr#ficos0 puede visitar la pagina de la empresa
9oSDo9oice2
*n el caso que se adquiera un numero geogr#fico0 al momento de configurarlo0 en MIngresar ,ombre
/ominio o /ireccin I8 M se pone la direccin I8 del servidor y en M-suario o *xtensinN la letra s2
!on ese numero ya se puede hacer una primera prueba2 /esde la extensin 1>>> se marca el numero2
La sintaxis es >> h cdigo pas h numero geogr#fico2 *l resultado en la consola de %steris& ser#:
C<(ACE0,5,,4" chansi#.c"2),)1 handlereMuestinvite" 2endin% fake auth reGection for device
W662))16)3,W Ssi#"662))16)3,-*6.1+.2)+.,6R]ta%7as*d'd1+'8
%steris& no puede autenticar el I,9ID* en entrada porque todava no se ha incluido la lista de I8 en el
archivo sip2conf2 *stas direcciones est#n configuradas en un archivo que se descargar#:
c' @etc@asterisk
wget 2tt)@@www.voztovoice.org@t9@'i'voztovoice
%hora se incluye el archivo didvoStovoice en el sip2conf aprovechando el comando include:
1<1
nano si.con"
al final del archivo se aade:
dinc%$'e 'i'voztovoice
*l comando Winclude toma un archivo de texto y lo engloba en la configuracin2 (e guardan los
cambios0 se entra en la consola de %steris& y se recarga la configuracin (I8:
asterisk .rvvvvvvvvvvvvvvvvvv
!LI" si re%oa'
(egunda prueba: se marca nuevamente el numero se mira que pasa en la consola de %steris&:
C<(ACE0,5,,4" chansi#.c"2),85 handlereMuestinvite" Call fro$ .*6.1+.2)+.,8. to eBtension .s.
reGected 'ecause eBtension not found in conteBt .fro$-voTtovoice.
Qa la llamada no viene rechaSada sino que no se puede enviar a ninguna parte del dialplan porque
%steris& no encuentra el contexto fromIvoStooice2 '#s adelante se crear# ese contexto
8.3 Creaci&n 'e% +V6
!on la locuciones grabadas0 ya se puede configurar el I9;2 8ara hacerlo se crea un nuevo archivo que
luego se incluir# en el dialplan2
nano @etc@asterisk@+V6
se copian los tres bloques que siguen:
K@R.L
exten =N sB(B:ait!()
exten =N sB"Bet!CO/NN>L!language)=es)
exten =N sB%Bet!7@?>O67!digit)=C)
exten =N sB;Bet!7@?>O67!response)=(0)
exten =N sB5BFac+3round!custom/prompt0()
exten =N sB$B:ait>xten!)
exten =N (B(Bgoto!@R.(BsB()
exten =N "B(Bgoto!@R."BsB()
exten =N iB(B-la0bac+!invalid)
exten =N iB"B3oto!@R.BsB")
exten =N iB%BOangup
exten =N tB(Bgoto!@R.BsB")
exten =N *B(BOangup
1<:
K@R.(L
exten =N sB(Bet!7@?>O67!digit)=C)
exten =N sB"Bet!7@?>O67!response)=(0)
exten =N sB%Bet!CO/NN>L!language)=en)
exten =N sB;BFac+3round!custom/prompt0%)
exten =N sB5B:ait>xten!)
exten =N (B(B-la0bac+!demo&ec*otest)
exten =N (B"B>c*o!)
exten =N (B%B-la0bac+!demo&ec*odone)
exten =N (B;BOangup
exten =N "B(B?usicOnOold
exten =N "B"BOangup
exten =N %B(B-la0bac+!pls&1ait&connect&call)
exten =N %B"B3oto!internasB(00B()
exten =N iB(B-la0bac+!invalid)
exten =N iB"B3oto!@R.(BsB()
exten =N iB%B*angup
exten =N tB(Bgoto!@R.(BsB()
exten =N *B(BOangup
K@R."L
exten =N sB(Bet!7@?>O67!digit)=C)
exten =N sB"Bet!7@?>O67!response)=(0)
exten =N sB%Bet!CO/NN>L!language)=es)
exten =N sB;BFac+3round!custom/prompt0")
exten =N sB5B:ait>xten!)
exten =N (B(B-la0bac+!demo&ec*otest)
exten =N (B"B>c*o!)
exten =N (B%B-la0bac+!demo&ec*odone)
exten =N (B;BOangup
exten =N "B(B?usicOnOold
exten =N "B"BOangup
exten =N %B(B-la0bac+!pls&1ait&connect&call)
exten =N %B"B3oto!internasB(00B()
exten =N iB(B-la0bac+!invalid)
exten =N iB"B3oto!@R."BsB()
exten =N iB%B*angup
exten =N tB(Bgoto!@R."BsB()
exten =N *B(BOangup
(e guardan los cambios2 -na explicacin de las nueva funciones y aplicaciones que aparecen en el
I9;:
=aitO1P G *spera un segundo
(etO!6%,,*LOlanguageP=esP G (e pone como idioma predefinido para las locuciones el
espaol
1<3
(etODI'*L-DOdigitP=<P G numero m#ximo de segundos que esperar# el sistema O<P entre el
primer dgito y los siguientes
(etODI'*L-DOresponseP=1>P G numero m#ximo de segundos que el sistema esperar# para que
el llamante presione una tecla del tel5fono2
Bac&+roundOcustom/prompt>1P G presenta la locucin prompt>1 y al mismo tiempo se pone a
la escucha de los dgitos que pueda presionar el llamante2
=ait*xtenOP I *spera que el llamante presione una tecla
1010gotoOI9;10s01P G si el llamante presiona 1 va OgotoP al contexto I9;10 extensin s0 prioridad
1
:010gotoOI9;:0s01P G si el llamante presiona :0 va OgotoP al contexto I9;:0 extensin s0
prioridad 1
i0108laybac&OinvalidP G si la tecla presionada no es valida Oni 1 ni :P comunica el error
i0:0+otoOI9;0s0:P G y devuelve el llamante al contexto I9;0 extensin s0 prioridad : Opresenta
nuevamente el menF inicialP
t010gotoOI9;0s0:P G si dentro de 1> segundos ODI'*L-DOresponsePP0 el llamante no presiona
ninguna tecla0 vuelve a presentar el menF inicial
h0106angup G si el llamante cuelga0 se e$ecuta la extensin h
La extensin i se utiliSa para capturar dentro del dialplan0 dgitos errados2
La extensin t se utiliSa cuando la funcin DI'*L-D est# presente en el dialplan
La extensin 2 se utiliSa 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 digitado2
La parte interesante es que si se digita el numero tres0 la llamada se enviar# al contexto internas0
extensin 1>>0 prioridad 1
!omo esa extensin todava no existe0 hay que crearla:
nano @etc@asterisk@e3tensions.con"
en el contexto internas se aade el siguiente bloque:
exten =N (00B(BNoop
same =N nB=ial!@-/(000^@-/(00(^@-/(00"B%0)
same =N nBOangup
Lo que har# es marcar a las extensiones 1>>>0 1>>1 y 1>>: simult#neamente hasta que una de las tres
conteste la llamada2 *ste tipo de configuracin se llama 6ing 4ro$2
8ara que todas las llamadas externas sean atendidas por el I9;0 antes del contexto internas0 se aade
este bloque:
Kfrom&didvo,tovoiceL
exten =N sB(B/ns1er
same =N nB3oto!@R.BsB")
same =N nBOangup
1<@
fromIdidvoStovoice es el contexto donde llegar#n las llamadas al numero geogr#ficos Oconfigurado
para cada troncal I8 presente en el archivo didvoStovoiceP2
8ara probar el I9; en local se aaden estas lineas en el contexto internas:
exten =N C5B(B/ns1er
same =N nB:ait!()
same =N nB3oto!@R.BsB()
y para incluir el archivo I9; al dialplan0 al final del archivo se aade esta linea
#include @R.
(e guardan los cambios y desde la consola de %steris&:
asterisk .rvvvvvvvvvvvvvv
!LI" 'ia%%an re%oa'
%hora desde la extensin 1>>>0 se marca la extensin <? para probar el I9; desde local2
%l momento de crear un I9;0 las posibilidades son pr#cticamente infinitas2 *$emplos:
un I9; que gestione colas de espera diferenciadas por departamento Oventas0 compras0
asistencia t5cnica0 etc2P
un I9; que permita marcar directamente una extensin o0 en el caso que no se marque ninguna0
enve la llamada a una operadora2
un I9; que avise el llamante que las oficinas est#n cerradas y que enve la llamada al buSn de
voS
% veces a los I9; est#n asociados numero geogr#ficos gratuitos para quien llama pero no para quien
los utiliSa2 *n estos casos es aconse$able limitar el tiempo m#ximo de duracin de la llamadas entrantes
para evitar gastos indeseados2 8ara este tipo de configuracin se utiliSa la funcin
DI'*L-DOabsoluteP2
8ara configurarla se retoma el archivo I9; y en el contexto I9; se sustituye esta linea:
exten =N sB(B:ait!()
con la que sigue:
exten =N sB(Bet!7@?>O67!absolute)=%0)
(e guardan los cambios y se actualiSa el dialplan:
1<?
asterisk .rvvvvvvvvvvvvvv
!LI" 'ia%%an re%oa'
/esde la extensin 1>>> se marca nuevamente <? y se escoge escuchar la mFsica en espera2 /espu5s
de 3> segundos la llamada debera terminar2
8.4 +V6 GC%!sicoI
*l segundo e$emplo es el cl#sico I9; que pregunta por el numero de extensin y si no se marca nada0
enva la llamada a una operadora2
*n este caso la frase que se va a grabar es:
M2(i conoce el numero de la extensin0 m#rquelo ahora0 de lo contrario espere en la linea2 -na
operadora lo atender#N
8ara grabar el mensa$e se marca desde la extensin 1>>>0 la extensin BB>@2
(e copia el mensa$e audio grabado en la misma carpeta de las dem#s grabaciones:
c' @t9
9v ro9t04.wav @var@%i(@asterisk@so$n's@c$sto9
(e construye el nuevo I9; modificando el plan de marcado:
nano @etc@asterisk@e3tensions.con"
en contexto internas se #nade el siguiente bloque:
exten =N C$B(B/ns1er
same =N nB:ait!()
same =N nB3oto!@R.CL/BsB()
y al final del archivo se incluye otro archivo que luego se crear#:
#include @R.CL/
(e guardan los cambios y se crea el nuevo archivo:
nano @etc@asterisk@+V6C=A
(e copian las lineas que siguen:
K@R.CL/L
1<B
exten =N sB(BNoO-!@R. Clasico)
same =N nBet!7@?>O67!digit)=;)
same =N nBet!7@?>O67!response)=5)
same =N nB:ait!()
same =N nBFac+ground!custom/prompt0;)
same =N nB:ait>xten!5)
exten =N 5(00K0&"LB(B=ial!@-/EV>Q7>NWB$0)
same =N nBOangup
exten =N iB(B-la0bac+!invalid)
same =N nB3oto!@R.CL/BsB")
exten =N tB(B=ial!@-/(00"B$0)
same =N nBOangup!)
La lgica es bastante sencilla2 (e presenta al llamante la grabacin contenida en el archivo audio
prompt>@ y se espera que el llamante digite una extensin2 Las extensiones admitidas son desde la
1>>> hasta la 1>>:2 (i dentro del tiempo definido en la variable ODI'*L-DOresponseP el llamante no
digita nada0 la llamada se enviar# a la extensin 1>>: Oexten =" t010/ialO(I8/1>>:0B>P2
(e recarga el dialplan:
asterisk .r3 ^'ia%%an re%oa'^
8ara hacer una prueba0 desde la extensin 1>>> se marca el numero <B2
+M0O6TA#T-) a$nB$e no est? 'oc$9enta'a en ningZn te3toE e3iste ta9(i?n %a
e3tensi&n GeI B$e $e'e ser $ti%iza'a en %$gar 'e %as e3tensiones GiI GtI 1 GTI
8.L Corario Aert$ra@Cierre
!ada oficina y/o empresa tienen su horario de apertura/cierre y no tiene mucho sentido enviar las
llamadas a un I9; si luego no hay nadie que las atienda2 *s por eso que normalmente se configura el
dialplan de forma que enve las llamadas al I9; o a cualquier parte de dialplan0 solamente si se reciben
dentro del horario laboral2 *n %steris& tenemos distintas formas para configurar este tipo de escenario2
La primera y seguramente la m#s utiliSada0 es con la aplicacin +otoIfDime2 La sintaxis de la
aplicacin es:
asterisk .rvvvvvvvvvvvvvvvvvv
!LI" core s2ow a%ication gotoi"ti9e
QotoAf(i$e(ti$esDweekdaysD$daysD$onths0Dti$eTone4;0la'eliftrue40"la'eliffalse4!
Las opciones:
times G rango horario
1<<
4ee&days G das de la semana
mdays G das del mes
timeSone G huso horario
labeliftrue G etiqueta del dialplan donde seguir si la declaracin es verdadera
labeliffalse I etiqueta del dialplan donde seguir si la declaracin es falsa
%ntes de configurar el dialplan hay que definir los horarios laborales de la empresa/oficina2 *n este
e$emplo se supone que el horario de apertura sea de lunes a viernes de >A:>> a 1::>> y de 1@:>> a
1A:>>2 !laramente hay que tener en cuenta todos los das festivos del ao que caen entre lunes y
viernes2
%hora se puede modificar el dialplan:
nano e3tensions.con"
el contexto del numero geogr#fico YfromIvoStovoiceZ se modifica para que quede:
Kfrom&didvo,tovoiceL
exten =N sB(B/ns1er
same =N nB3oto@f7ime!0'G00&("G00Bmon&friBZBZB/usr/s*are/,oneinfo//merica/FogotaYabierto)
same =N nB3oto@f7ime!(;G00&('G00Bmon&friBZBZB/usr/s*are/,oneinfo//merica/FogotaYabierto)
same =N nB3oto@f7ime!ZBmon&friB"5BdecB/usr/s*are/,oneinfo//merica/FogotaYcerrado)
same =N nB3oto@f7ime!ZBmon&friB(&(5B<ulBusr/s*are/,oneinfo//merica/FogotaYcerrado)
same =N nB-la0bac+!beeperr)
same =N nBOangup
same =N n!abierto)B3oto!@R.BsB")
same =N nBOangup
same =N n!cerrado)B-la0bac+!beeperr)
same =N nBOangup
La lgica de las distintas lineas:
Linea : G (i la llamada llega entre las >A:>> y las 1::>> de la maana hora colombiana0 de lunes
a viernes de cualquier da del mes y de cualquier mes0 sigue desde la linea con la etiqueta
abierto2 *n esa linea se enva la llamada al I9;U de lo contrario continua con la prioridad
siguiente
Linea 3 I (i la llamada llega entre las 1@:>> y las 1A:>> de la tarde hora colombiana0 de lunes a
viernes de cualquier da del mes y de cualquier mes0 siguen desde la linea con la etiqueta
abierto2 *n esa linea se enva la llamada al I9;U de lo contrario continua con la prioridad
siguiente
Linea @ G si la llamada llega a cualquier hora colombiana de lunes a viernes0 el da :? del mes
de diciembre0 sigue desde la linea con la etiqueta cerrado donde se utiliSa una locucin Oque hay
que crearP que anuncia al llamante que la oficina est# cerrada2 *n esta linea se han definidos los
das de lunes a viernes porque si la navidad cae un s#bado o un domingo el sistema ya sabe que
la oficina est# cerrada Olinea : y 3PU de lo contrario continua con la prioridad siguiente
Linea ? G en esta linea se define los das en que la oficina est# cerrada por vacaciones2 *n este
1<A
caso de 1 a 1? de Kulio2
8ara probar la configuracin en local0 se modifica la extensin <? del contexto internas para que quede:
exten =N C5B(B/ns1er
same =N nB3oto@f7ime!0'G00&("G00Bmon&friBZBZB/usr/s*are/,oneinfo//merica/FogotaYabierto)
same =N nB3oto@f7ime!(;G00&('G00Bmon&friBZBZB/usr/s*are/,oneinfo//merica/FogotaYabierto)
same =N nB3oto@f7ime!ZBmon&friB"5BdecB/usr/s*are/,oneinfo//merica/FogotaYcerrado)
same =N nB3oto@f7ime!ZBmon&friB(&(5B<ulBusr/s*are/,oneinfo//merica/FogotaYcerrado)
same =N nB-la0bac+!beeperr)
same =N nBOangup
same =N n!abierto)B3oto!@R.BsB")
same =N nBOangup
same =N n!cerrado)B-la0bac+!beeperr)
same =N nBOangup
(e guardan los cambios y se actualiSa el dialplan:
asterisk .rvvvvvvvvvvvvvvvv
!LI" 'ia%%an re%oa'
(e efectFan las correspondientes pruebas0 marcando durante el horario de cierre y de apertura para
averiguar que la llamada sea procesada correctamente2
La venta$a de este tipo de solucin0 es que una veS definidas las reglas no hay que preocuparse m#s de
las llamadas entrantes2 Las desventa$as son que la configuracin no es flexible Olos horarios no se
pueden modificar sin cambiar el dialplanP0 los das de vacaciones pueden cambiar cada ao y hay das
festivos que cada ao cambian Osemana santa0 carnaval0etc2P
!uando la oficina es pequea0 es mucho m#s funcional adoptar otro tipo de solucin que permite al
cliente decidir cuando activar o desactivar el horario de cierre2 *n este caso se utiliSa la base de datos
interna de %steris&2 *n esta base de datos es posible guardar las entradas utiliSando la sintaxis: familia
clave valor2
(e abre el dialplan:
nano @etc@asterisk@e3tensions.con"
/entro del contexto interna se pone:
exten =N Z'(B(BNoO-
same =N nBet!=F!empresa//*orario)=()
same =N nB-la0bac+!beep)
same =N nBOangup
exten =N Z'"B(BNoO-
1<E
same =N nBet!=F!empresa//*orario)=0)
same =N nB-la0bac+!beep)
same =N nBOangup
*n el primer bloque se asigna el valor 1 a la familia empresa%0 clave horario y significa que la
oficina/empresa est# abierta2 *n el segundo bloque a la misma familia y clave se le asigna el valor >
que significa que la oficina/empresa est# cerrada2
Luego se utiliSa esta configuracin para el I9; cl#sico2 (e modifica este bloque:
exten =N C$B(B/ns1er
same =N nB:ait!()
same =N nB3oto!@R.CL/BsB()
para que quede:
exten =N C$B(B/ns1er
same =N nB3oto@f!EK4EV=F!empresa//*orario)W4 = 4(4LYabierto)
same =N nB-la0bac+!beeperr)
same =N nBOangup
same =N n!abierto)B3oto!@R.CL/BsB()
same =N nBOangup
*n la segunda linea se controla si el valor de la entrada en la base de datos interna de %steris& es igual a
12 (i as fuera se va a la etiqueta abierto0 sino se continua con la siguiente prioridad donde hay que
poner el anuncio de los horarios de la oficina/empresa o comunicar el cierre2
(e guardan los cambios y se actualiSa el dialplan:
asterisk .rvvvvvvvvvvvvvv
!LI" 'ia%%an re%oa'
i!mo funcionaj La primera persona que llegue a la oficina marca ^A1 y de esta forma todas las
llamadas entrantes llegar#n al I9; cl#sico2 Luego cuando la ultima persona de$a la oficina marca ^A:
para activar la locucin de cierre2 *sta configuracin permite tener horarios m#s flexibles y adem#s
modificar en cualquier momento la hora de apertura/cierre2
8ara probar la nueva configuracin0 desde la extensin 1>>> se marca ^A12 *n la consola de %steris&:
EBecutin% 0681-eBternas"14 Co<#(W2AF/1)))-))))))32WD WW! in new stack
^ EBecutin% 0681-eBternas"24 2et(W2AF/1)))-))))))32WD W?L(e$#resa3/horario!71W! in new stack
-- EBecutin% 0681-eBternas"34 Flay'ack(W2AF/1)))-))))))32WD W'ee#W! in new stack
-- S2AF/1)))-))))))32R Flayin% .'ee#.alaw. (lan%ua%e .es.!
-- EBecutin% 0681-eBternas"*4 @an%u#(W2AF/1)))-))))))32WD WW! in new stack
*n la base interna de %steris&:
1A>
!LI" 'ata(ase s2ow
/e$#resa3/horario " 1
%hora llamando la extensin <B debera contestar el I9; cl#sico2 (i la prueba ha funcionado siempre
desde la extensin 1>>> se marca ^A: para activar el horario de cierre2 *n la base de datos de %steris&:
!LI" 'ata(ase s2ow
/e$#resa3/horario " )
!laramente los valore contenidos en la base de datos interna de %steris& se pueden
crear/modificar/borrar desde la consola de la 8BH:
!LI" 'ata(ase $t e9resaA 2orario 1
E#dated data'ase successfully
!LI" 'ata(ase s2ow
/e$#resa3/horario " 1
La entrada estar# nuevamente en 12 8ara borrar definitivamente la entrada:
!LI" 'ata(ase 'e% e9resaA 2orario
?ata'ase entry re$oved.
8ara conocer los comando disponibles para la base de datos interna de %steris&:
!LI" 2e% 'ata(ase
data'ase del 1e$oves data'ase key/value
data'ase deltree 1e$oves data'ase keytree/values
data'ase %et Qets data'ase value
data'ase #ut 3dds/u#dates data'ase value
data'ase show 2hows data'ase contents
data'ase showkey 2hows data'ase contents
%dem#s de las dos soluciones presentadas en este p#rrafo0 se pueden utiliSar otras que se mencionan
para que las conoScan:
!onectar %steris& a un calendario Ocomo se ver# en el capitulo HP y efectuar las consultas
directamente en ese calendario donde se han definido los horarios de apertura/cierre y todos los
das festivos2
Draba$ar con una base de datos donde guardar todos los das festivos y los horarios de
apertura/cierre y efectuar consultas directamente desde %steris&2
1A1
CA0+T>=O +X
7$nciona%i'a'es avanza'as 'e Asterisk / "eat$res.con"
*l archivo features2conf es donde se configuran las funcionalidades avanSadas de %steris& que luego se
pueden utiliSar a lo largo de una llamada22 *stas son:
8arqueo de las llamadas
Dransferencia ciega o asistida
!aptura de las llamadas O8ic&upP
+rabacin de las llamadas
%ntes de empeSar con la configuracin del archivo0 una pequea explicacin de cada funcionalidad2
0arB$eo I *l usuario contesta una llamada en su oficina2 *l llamante solicita una informacin que el
usuario tiene guardada en otra oficina2 *l usuario parque la llamada2 *l sistema le anunciar# en que
extensin ha sido parqueada la llamada2 *l usuario cuando llega a la otra oficina llama el numero de
extensin donde se ha parqueado la llamada y de esta forma vuelve a hablar con el llamante2
Trans"erencia ciega OblindxferP I % lo largo de una conversacin se quiere transferir la llamada a otra
extensin2 (e presiona la tecla configurada en el archivo y luego el numero de la extensin2 La llamada
ser# transferida y el el canal de quien la transfiri ser# colgado2
Trans"erencia asisti'a OatxferP I % lo largo de una conversacin se quiere transferir la llamada a otra
extensin2 (e presiona la secuencia de teclas definidas en archivo y luego el numero de la extensin
donde se quiere transferir la llamada2 (e escuchar# timbrar la extensin y una veS que el interlocutor
conteste0 se podr# hablar con 5l Opor e$emplo para anunciar la llamada que se va a transferirP2
(olamente cuando quien est# transfiriendo la llamada colgar#0 la llamada ser# efectivamente
transferida2
Cat$ra 'e %%a9a'a O8ic&upP I *n una oficina hay cuatro extensiones2 *mpieSa a timbrar una
extensin en una escritorio donde en ese momento no hay nadie2 /esde otra extensin se presiona la
secuencia de teclas definida en este archivo y se captura la llamada de la extensin que estaba
timbrando2
+rabacin de la llamada 8a$to9on: G % lo largo de la llamada se presiona la secuencia de teclas
definidos en este archivo2 *mpeSar# la grabacin de la llamada en un dos archivos audio0 uno para cada
canal2 (e vuelve a presionar la misma secuencia de teclas para parar la grabacin2 8a$to9i39on: % lo
largo de una llamada se presiona la secuencia de teclas definidas en este archivo y empeSar# la
grabacin de la llamada en un unico archivo donde se meSclar#n los dos canales audio2 !uando se
vuelve a presionar la misma secuencia de teclas0 la grabacin terminar#2
R.1 "eat$res.con"
% seguir la tabla con los par#metros del archivo y la descripcin2 *n negrita la opcin que se utiliSar#
para cada par#metro2 %l final de tabla0 la configuracin completa del archivo2
0ar!9etro ,escrici&n
YgeneralZ Inicia la parte general del archivo
par&ext =" J00 = numero de extensin donde transferir una llamada para
parquearla
par&pos =" J01.J0R = numero de extensiones reservadas para el parqueo de las
llamadas
par&inghints no Q las prioridades 6int para monitorear el estado de las
extensiones dedicadas al parqueo hay que configurarlas
manualmente en el dialplan2 !on yes se crean de forma autom#tica
par&ingtime =" ,umero de segundos que quedar# parqueada una llamada2 8asado
ese tiempo la llamada se transfiere a la extensin definida en el
prximo par#metro2 9alor 4L
comebac&toorigin 1es = la llamada parqueada se transfiere a la extensin que la
parque2 !on no se enva al contexto par&edcallstimeout0 extensin
s0 prioridad 12 *n ese caso hay que crear el contexto en el dialplan
courtesytone Locucin que se enviar# al canal parqueado cuando alguien lo llama
o cuando se activa/desactiva la grabacin de la llamada 9alor (ee
par&edplay /efine a quien hay que enviar el courtesytone2 8uede ser:
par&ed Ocanal parqueadoP
caller Oquien llama un canal parqueadoP
(ot2 OambosP
par&edcalltransfers %ctiva o desactiva la secuencia de tonos para transferir la llamada
cuando se trata de una llamada parqueada2 8uede ser:
callee OllamadoP
ca%%er OllamanteP
both OambosP
no Ono permitidoP
par&edcallrepar&ing %ctiva o desactiva la secuencia de tonos para parquear la llamada
cuando se trata de una llamada parqueada2 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 se trata de una llamada parqueada2 8uede ser:
callee OllamadoP
ca%%er OllamanteP
both OambosP
no Ono permitidoP
1A@
0ar!9etro ,escrici&n
par&edcallrecording %ctiva o desactiva la secuencia de tonos para grabar una llamada
cuando se trata de una llamada parqueada2 8uede ser:
callee OllamadoP
ca%%er OllamanteP
both OambosP
no Ono permitidoP
par&edmusicclass La clase de mFsica en espera que escuchar# el canal que ha sido
parqueado2 9alor 'e"a$%t
transferdigittimeout =" ,umero de segundos de espera entre los dgitos cuando se est#
transfiriendo una llamada2 9alor L
xfersound La locucin que avisar# que la transferencia de llamada asistida ha
tenido 5xito2 9alor (ee
xferfailsound La locucin que avisar# que la transferencia de llamada no ha tenido
5xito2 9alor (eeerr
pic&upexten (ecuencia de tonos para capturar la llamada de una extensin que
est# timbrando2 /epende de la configuracin de los par#metros
callgroup y pic&upgroup de cada extensin2 9alor T8
pic&upsound La locucin que avisar# que la captura de llamada ha tenido 5xito2
9alor (ee
pic&upfailsound La locucin que avisar# que la captura de llamada no ha tenido
5xito2 9alor (eeerr
featuredigittimeout Diempo m#ximo de espera entre los dgitos para activar las
funcionalidades definidas despu5s de la etiqueta YfeaturemapZ Oen
mili segundosP 9alor 2000
atxfernoans4ertimeout Diempo m#ximo disponible para contestar una transferencia asistida
Oen segundosP2 9alor 1L
atxferdropcall (i quien transfiere una llamada con el m5todo MasistidoN cuelga
antes que la llamada sea transferida completamente0 %steris&
devuelve la llamada a quien la estaba transfiriendo2 (i est# en yes la
llamada no se devuelve y se considera terminada2 9alor no
atxferloopdelay ,umero de segundos de espera antes de intentar nuevamente
devolver la llamada Osi atxferdropcall = noP2 9alor 10
atxfercallbac&retries ,umero de veces que se intentar# devolver una llamada transferida
a quien la transfiri sin 5xito2 9alor 2
UYpar&inglotCempresa:Z (e puede crear m#s de un bloque de extensiones para parquear las
llamadas2 -n e$emplo es si quiere diferenciar las llamadas
parqueadas por el departamento de ventas0 de las llamadas
parqueadas por el departamento de compras2 La etiqueta define el
nuevo bloque y los tres par#metros que siguen el contexto0 el
1A?
0ar!9etro ,escrici&n
numero de las extensiones reservadas y como se van utiliSando las
extensiones2 8ara asignar una extensin a un determinado MslotN de
parqueo0 en la configuracin de la extensin en el sip2conf0
par#metro par&inglot0 se pone el nombre del contexto presente en la
linea que sigue2 (e de$an las cuatro lineas comentadas2
Ucontext =" empresa:
Upar&pos =" A>1IA1>
Ufindslot =" next
YfeaturemapZ % partir de esta etiqueta empieSa la configuracin de las
funcionalidades
blindxfer =" d = tecla para activar la transferencia ciega
disconnect =" T0 = secuencia de dgitos para terminar una llamada
automon =" T1 = secuencia de dgitos para iniciar la grabacin de la llamada Oen
dos archivos audio0 uno para cada canalP
atxfer =" T2 = secuencia de dgitos para activar la transferencia asistida
par&call =" TJ = secuencia de dgitos para parquear una llamada Ose puede usar
esta secuencia o W<>>P
automixmon =" T3 = secuencia de dgitos para iniciar la grabacin de una llamada
Oen un Fnico archivo audio donde se meSclar#n los dos canales
audioP
YapplicationmapZ % partir de esta etiqueta se pueden configurar funcionalidades
personaliSadas2 La sintaxis es: d.eature,ame" ="
d/D'.Csequence"0d%ctivateLn"Y/d%ctivatedBy"Z0d%pplication"
Y0d%pp%rguments"Y0'L6C!lassZZ
.eature,ame: *l nombre de la funcionalidadU
/D'.Csequence: la secuencia de dgitos para activar la
funcionalidadU
%ctivateLn: se define para quien activar la funcionalidad2
Los valores son self y peer2 !on self la funcionalidad se
activa para quien la inicia0 con peer para el otro canalU
%ctivatedBy: *ste par#metro define quien tiene acceso a la
funcionalidad2 Las opciones son: caller OllamanteP0 callee
OllamadoP0 both OambosPU
%pplication: La aplicacin que se va a e$ecutarU
%pp%rguments: Las opciones asociadas a la aplicacinU
'L6C!lass: la clase de mFsica en espera que escuchar# el
canal libre mientras se e$ecuta la funcionalidad en el otro
canal2
1AB
0ar!9etro ,escrici&n
test1 =" TREeerE0%a1(ackEtt.9onke1sE'e"a$%t = /igitando la secuencia ^E
desde un canal0 el otro escuchar# la locucin ttImon&eys mientras el
canal que activ la funcionalidad0 escuchar# la mFsica en espera
%hora se crea el archivo de configuracin features2conf2 (e renombra el predefinido:
9v @etc@asterisk@"eat$res.con" @etc@asterisk@"eat$res.con".o%'
se crea uno nuevo
nano @etc@asterisk@"eat$res.con"
y se copian las lineas que siguen:
KgeneralL
par+ext =N C00
par+pos =N C0(&C09
par+ing*ints=no
par+ingtime =N ;5
comebac+toorigin=0es
courtes0tone=beep
par+edpla0=bo*t
par+edcalltransfers=caller
par+edcallrepar+ing=caller
par+edcall*angup=caller
par+edcallrecording=caller
par+edmusicclass=default
transferdigittimeout =N 5
xfersound=beep
xferfailsound=beeperr
pic+upexten=Z'
pic+upsound=beep
pic+upfailsound=beeperr
featuredigittimeout="000
atxfernoans1ertimeout=(5
atxferdropcall=no
atxferloopdela0=(0
atxfercallbac+retries="
JKpar+inglot5empresa"L
Jcontext =N empresa"
Jpar+pos =N '0(&'(0
Jfindslot =N next
KfeaturemapL
1A<
blindxfer =N #
disconnect =N Z0
automon =N Z(
atxfer =N Z"
par+call =N ZC
automixmon =N Z%
KapplicationmapL
test( =N Z9BpeerB-la0bac+Btt&mon+e0sBdefault
(e guardan los cambios2 8ara volver disponibles estas funcionalidades hay que modificar el plan de
marcado2 (e va a recoger la configuracin del archivo as como se de$ en el capitulo anterior2 *n
negrita aparecen las modificaciones:
nano @etc@asterisk@e3tensions.con"
YgeneralZ
static=yes
4riteprotect=yse
autofallthrough=yse
extenpatternmatchne4=yse
clearglobalvars=yes
YglobalsZ
1>>>=(I8/1>>>
K-(D=(I8/$ustvoip
mar&o=I%H:/mar&o
,V#AM+C;7-AT>6-SQtest1d(%in'3"erda$to9ond'isconnectdat3"erdarkca%%da$to9i39on
YfromIdidvoStovoiceZ
exten =" s010%ns4er
same =" n0+otoIfDimeO>A:>>I1::>>0monIfri0^0^0/usr/share/Soneinfo/%merica/BogotajabiertoP
same =" n0+otoIfDimeO1@:>>I1A:>>0monIfri0^0^0/usr/share/Soneinfo/%merica/BogotajabiertoP
same =" n0+otoIfDimeO^0monIfri0:?0dec0/usr/share/Soneinfo/%merica/BogotajcerradoP
same =" n0+otoIfDimeO^0monIfri01I1?0$ul0usr/share/Soneinfo/%merica/BogotajcerradoP
same =" n08laybac&ObeeperrP
same =" n06angup
same =" nOabiertoP0+otoOI9;0s0:P
same =" n06angup
same =" nOcerradoP08laybac&ObeeperrP
same =" n06angup
YinternasZ
exten =" ^A1010,oL8
same =" n0(etO/BOempresa%/horarioP=1P
same =" n08laybac&ObeepP
same =" n06angup
1AA
exten =" ^A:010,oL8
same =" n0(etO/BOempresa%/horarioP=>P
same =" n08laybac&ObeepP
same =" n06angup
exten =" ?>010(etO8BH=ef*,9OL%,+PgP
same =" n0,oopOIdioma (ervidor ef8BHgP
same =" n06angup
exten =" <?010%ns4er
same =" n0+otoIfDimeO>A:>>I1::>>0monIfri0^0^0/usr/share/Soneinfo/%merica/BogotajabiertoP
same =" n0+otoIfDimeO1@:>>I1A:>>0monIfri0^0^0/usr/share/Soneinfo/%merica/BogotajabiertoP
same =" n0+otoIfDimeO^0monIfri0:?0dec0/usr/share/Soneinfo/%merica/BogotajcerradoP
same =" n0+otoIfDimeO^0monIfri01I1?0$ul0usr/share/Soneinfo/%merica/BogotajcerradoP
same =" n08laybac&ObeeperrP
same =" n06angup
same =" nOabiertoP0+otoOI9;0s0:P
same =" n06angup
same =" nOcerradoP08laybac&ObeeperrP
same =" n06angup
exten =" <B010%ns4er
same =" n0+otoIfOeYaef/BOempresa%/horarioPga = a1aZjabiertoP
same =" n08laybac&ObeepP
same =" n06angup
same =" nOabiertoP0+otoOI9;!L%0s01P
same =" n06angup
exten =" 1>>010,oop
same =" n0/ialO(I8/1>>>V(I8/1>>1V(I8/1>>:03>P
same =" n06angup
exten =" 1>1010/ialO/%6/I/103>P
same =" n06angup
exten =" 1>:010/ialO/%6/I/:03>P
same =" n06angup
exten =" 1:3010%ns4er
same =" n0/umpchan
same =" n08laybac&OhelloI4orldP
same =" n06angup
exten =" 1?>010%ns4er
same =" n08laybac&OdemoIechotestP
same =" n0*cho
1AE
same =" n08laybac&OdemoIechodoneP
same =" n06angup
exten =" :>>010%ns4er
same =" n0KabbersendOcampus2voStovoice0voStovoicenet_gmail2com0*stamos escuchando '83P
same =" n0'usicLn6oldOmp30B>P
same =" n06angup
exten =" C1>>Y>I:Z010'acroOdisponibleP
same =" n0/ialO(I8/ef*HD*,g0@?P
same =" n06angup
exten =" 1:3@010/ialOI%H:/mar&o03>P
same =" n06angup
exten =" CBBHH010%ns4erOP
same =" n0=aitO:P
same =" n0;ecordO/tmp/promptef*HD*,::g24avP
same =" n0=aitO:P
same =" n08laybac&O/tmp/promptef*HD*,::gP
same =" n0=aitO:P
same =" n06angupOP
exten =" CYaISZ2010/ialOgtal&/campus2voStovoice/ef*HD*,g03>P
same =" n06angup
exten =" CAY1:@?B<AEZHHHHHHH[010/ialO(I8/spa31>:0@?0/Oef*HD*,:1gPP
same =" n0BusyO3P
same =" n06angup
exten =" CEY1:@?B<AEZHHHHHHH[010/ialO/%6/I/;1/ef*HD*,:1g0@?P
same =" n06angup

YautenZ
exten =" C>>2010,oL8
same =" n0(etO+;L-8OnumcanP=ef!%LL*;I/OnumPgP
same =" n0(etOnumcan=ef+;L-8C!L-,DOef!%LL*;I/OnumPg_numcanPgP
same =" n0+otoIfOeYefnumcang " efcanalesgZjbusyP
same =" n0%uthenticateO/var/spool/asteris&/pin2txt0am0@P
same =" n0+otoOinternacio0ef*HD*,g01P
same =" n06angup
same =" nObusyP08laybac&OallIoutgoingIlinesIunavailableP
same =" n06angup
YsubscribeZ
exten =" 1>>>0hint0(I8/1>>>
exten =" 1>>10hint0(I8/1>>1
1E>
exten =" 1>>:0hint0(I8/1>>:
exten =" mar&o0hint0I%H:/mar&o
e3ten QK J01E2intEark)J01*arke'ca%%s
e3ten QK J02E2intEark)J02*arke'ca%%s
e3ten QK J03E2intEark)J03*arke'ca%%s
e3ten QK J04E2intEark)J04*arke'ca%%s
e3ten QK J0LE2intEark)J0L*arke'ca%%s
e3ten QK J06E2intEark)J06*arke'ca%%s
e3ten QK J0JE2intEark)J0J*arke'ca%%s
e3ten QK J08E2intEark)J08*arke'ca%%s
e3ten QK J0RE2intEark)J0R*arke'ca%%s
YgoogleIinZ
exten =" s010,oLpO !all from +tal& P
same =" n0(endDextO6ola0!omo te llamasjP
same =" n0(etOnombre=efK%BB*;C;*!*I9*Ocampus2voStovoice0ef!%LL*;I/OnamePg0:>PgP
same =" n0(endDextO6ola efnombreg0 bienvenido en 9oSDo9oiceP
same =" n0(etO!%LL*;I/OnameP=efnombregP
same =" n0=aitO:P
same =" n0(endDextO*spera un momento mientras te comunicamos con un operadorP
same =" n0/ialO(I8/1>>>03>P
same =" n06angupOP
YfromIspa31>:Z
exten =" s010,oLp
same =" n0/ialO(I8/1>>>P
same =" n06angup
YfromIpstnZ
exten =" s010/ialO(I8/1>>>0@?P
exten =" s0n06angup
YinternacioZ
exten =" C>>H2010,oLp
same =" n0(etO+;L-8OvoipP=$ustvoipP
same =" n0(etO+;L-8OsalidaP=ef!%LL*;I/OnumPgP
same =" n0(etOtrun&sal=ef+;L-8C!L-,DO$ustvoip_voipPgP
same =" n0(etOextsal=ef+;L-8C!L-,DOef!%LL*;I/OnumPg_salidaPgP
same =" n0,oLpO6ay efextsalg llamadas desde la extension ef!%LL*;I/OnumPg y eftrun&salg con el proveedor KustvoipP
same =" n0+otoifOeYefextsalg " : ] eftrun&salg " :ZjbusyP
same =" n0/ialO(I8/$ustvoip/ef*HD*,gP
same =" n06angup
same =" nObusyP08laybac&OallIoutgoingIlinesIunavailableP
same =" n06angup
exten =" C1HHHHHHHHHH010/ialOgtal&/campus2voStovoice/hef*HD*,g_voice2google2comP
same =" n06angup
1E1
exten =" C,,HH2010/ialOgtal&/campus2voStovoice/hef*HD*,g_voice2google2comP
same =" n06angup
YexternasZ
include =" internas
include =" internacio
inc%$'e QK arke'ca%%s
YlocalesZ
include =" internas
include =" auten
inc%$'e QK arke'ca%%s
YmacroIdisponibleZ
exten =" s010(etOestado=ef/*9I!*C(D%D*O(I8/ef'%!;LC*HD*,gPgP
exten =" s0n0+otoifOeYaefestadoga = a,LDCI,-(*aZj?P
exten =" s0n0Busy
exten =" s0n06angup
exten =" s0n0'acro*xit
Winclude I9;
Winclude I9;!L%
8ara que las funcionalidades configuradas en features2conf sean activas hay dos posibles
configuraciones:
definir la variable global /Q,%'I!C.*%-D-;*( y aadirle todas las funcionalidades que se
han configurado en el archivo features2conf Oconfiguracin predefinidaP2
definir en el bloque del dialplan donde se quieran utiliSar0 una variable de canal tipo:
(etOCC/Q,%'I!C.*%D-;*(=funcionalidad1Wfuncionalidad:Wfuncionalidad3P2 *n lugar de
funcionalidad10 : o 30 se pone el nombre de la funcionalidad que se quiere activar Oe$emplo:
(%in'3"erdat3"erdarkca%%. *l doble guion aba$o que aparece significa que la variable aplica al
canal que llama y al canal llamadoU esto quiere decir que ambos canales pueden activar las
funcionalidades definidas si as se decide en el dialplan2
/espu5s de la etiqueta YsubscribeZ se han aadido nueve lneas para poder monitorear el estado de las
extensiones utiliSadas para parquear las llamadas2 /e esta forma siempre se podr# saber cuantas
llamadas est#n parqueadas2
8ara terminar en las etiquetas YexternasZ y YlocalesZ se ha aadido el contexto par&edcalls2 Dodas las
extensiones que tengan acceso al contexto externas0 adem#s de tener acceso al contexto internas y
internacio0 tendr#n acceso al contexto par&edcalls es decir podr#n llamar una extensin parqueada2 Lo
mismo para las extensiones que tienen acceso al contexto YlocalesZ2
(e guardan los cambios y se reinicia %steris&:
1E:
@etc@init.'@asterisk restart
/esde la consola de %steris& se pueden ver las funcionalidades activadas2
asterisk .rvvvvvvvvvvvv
!LI" "eat$res s2ow
Luiltin Neature ?efault Current
--------------- ------- -------
Ficku# 68 68
Llind (ransfer 8 8
3ttended (ransfer 62
<ne (ouch 9onitor 61
?isconnect Call 6 6)
Fark Call 6,
<ne (ouch 9iB9onitor 63
?yna$ic Neature ?efault Current
--------------- ------- -------
test1 no def 6+
Neature Qrou#s"
---------------
(none!
Call #arkin% (Farkin% lot" default!
------------
Farkin% eBtension " ,))
Farkin% conteBt " #arkedcalls
Farked call eBtensions" ,)1-,)+
R.2 Ca%%gro$ 1 0ick$gro$
*n todas las extensiones (I8 configuradas se han definido los siguientes par#metros:
callgroup=(
pic+upgroup=(
i)u5 significaj
(ignifica que todas las extensiones pertenecen al grupo de llamadas 1 y pueden capturar las llamadas
del grupo de llamadas 12 La secuencia de dgitos para capturar una llamada se acaba de configurar el el
archivo features2conf y es ^A2
1E3
-na configuracin un poco m#s comple$a podra ser:
*xtensiones ventas:
1>>> I 1>>1 I 1>>:
*xtensiones soporte:
:>>> I :>>1 I :>>:
*xtensiones compras:
3>>> I 3>>1 I 3>>:
*xtensin oficina direccin:
@>>>
*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 departamento2 8ara que esto sea posible0 en la configuracin de cada
extensin se pone:
Y1>>>Z
callgroup=1
pic&upgroup=1
Y1>>1Z
callgroup=1
pic&upgroup=1
Y1>>:Z
callgroup=1
pic&upgroup=1
Y:>>>Z
callgroup=:
pic&upgroup=:
Y:>>1Z
callgroup=:
pic&upgroup=:
Y:>>:Z
callgroup=:
pic&upgroup=:
1E@
Y3>>>Z
callgroup=3
pic&upgroup=3
Y3>>1Z
callgroup=3
pic&upgroup=3
Y3>>>Z
callgroup=3
pic&upgroup=3
Y@>>>Z
callgroup=@
pic&upgroup=10:03
La extensin @>>>0 con el par#metro pic&upgroup configurado con 10:03 podr# capturar las llamadas de
las extensiones que perteneces a uno de los grupos configurados0 es decir:
grupo 1 G 1>>>01>>101>>:
grupo : G :>>>0:>>12:>>:
grupo 3 G 3>>>03>>103>>:
R.3 A%icaci&n ,ia% 1 "eat$res.con"
*n este p#rrafo se ilustrar# como integrar en el dialplan las funcionalidades configuradas en el archivo
features2conf utiliSando la aplicacin /ial2
La sintaxis de la aplicacin /ial:
?ial((echnolo%y/resource0Y(ech2/resource2...40Dti$eout40Do#tions40DE1>4!"
/ial: el nombre de la aplicacin que permite efectuar una llamada
Dechnology: el protocolo o la tecnologa usada para efectuar la llamada Oe$: (I80 I%H:P
resource: el recurso utiliSado para efectuar la llamada o el numero de extensin a llamar
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 =eb a la extensin llamada Osi el tel5fono soporta la
funcionalidadP
%lgunos e$emplos:
exten =N (000B(B=ial!@-/(000B;5)
same =N nBBOangup
1E?
(i se marca la extensin 1>>> %steris& llamar# dicha extensin usando el protocolo (I80 esperar# @?
segundos2 (i la extensin 1>>> no contesta dentro de los treinta segundos0 %steris& procesar# la lnea
siguiente del dialplan0 es decir terminar# la llamada2
exten =N 005C%00(000000B(B=ial!@-/<ustvoip/005C%00(000000B;5)
same =N nBBOangup
*n este caso si desde un (oft8hone o I8 8hone conectados a la centralita se marca el numero
>>?<3>>1>>>>>0 %steris& llamar# dicho numero usando un proveedor 9oI8 Oen este caso especifico
KustvoipP2 *sperar# una respuesta por @? segundos y si nadie contesta terminar# la llamada2 !omo
tecnologa se ha indicado (I8 porque $ustvoip usa solo este tipo de protocolo2 *n el caso de
proveedores que utilicen el protocolo I%H: sera:
exten =N 005C%00(000000B(B=ial!@/Q"/<ustvoip/005C%00(000000B;5)
same =N nBBOangup
8ara configurar las funcionalidades definidas en el archivo features2conf se tendr# que utiliSar unas
opciones de la aplicacin /ial2
e3ten QK 100XE1E,ia%8S+0@`a-XT-#bE4LE2C:
Las opciones presentes:
h: permite al llamado colgar la llamada presionando la secuencia de dgitos definida en
features2conf
6: permite al llamante colgar la llamada presionando la secuencia de dgitos definida en
features2conf
exten =N (00QB(B=ial!@-/EV>Q7>NWB;5B+I)
&: permite al llamado parquear la llamada presionando la secuencia de dgitos definida en
features2conf
T: permite al llamante parquear la llamada presionando la secuencia de dgitos definida en
features2conf
exten =N (00QB(B=ial!@-/EV>Q7>NWB;5Bt7)
t: permite al llamado transferir la llamada presionando la secuencia de dgitos definida en
features2conf
D: permite al llamante transferir la llamada presionando la secuencia de dgitos definida en
features2conf
exten =N (00QB(B=ial!@-/EV>Q7>NWB;5B1:)
4: permite al llamado empeSar la grabacin de la llamada presionando la secuencia de dgitos
definida en features2conf2 %steris&0 en este caso0 crear# dos archivos audio0 uno por cada canal
1EB
=: permite al llamante empeSar la grabacin de la llamada presionando la secuencia de dgitos
definida en features2conf2 %steris&0 en este caso0 crear# dos archivos audio0 uno por cada canal2
exten =N (00QB(B=ial!@-/EV>Q7>NWB;5BxQ)
x: permite al llamado empeSar la grabacin de la llamada presionando la secuencia de dgitos
definida en features2conf2 La diferencia con las opciones 4 y = es que en este caso los dos
canales Ollamante y llamadoP se grabaran en un Fnico archivo audio
H: permite al llamante empeSar la grabacin de la llamada presionando la secuencia de dgitos
definida en features2conf2 La diferencia con las opciones 4 y = es que en este caso los dos
canales Ollamante y llamadoP se grabaran en un Fnico archivo audio
(i se quiere0 por e$emplo0 activar todas estas opciones a la veS0 la aplicacin /ial aparecer# de esta
forma:
exten =N 5(00QB(B=ial!@-/ EV>Q7>NWB;5B*O+It71:xQ)
% seguir se presentar#n algunos registros como aparecen en la consola de %steris& al activar o
desactivar las funcionalidades descritas2
8ara terminar se modifica el dialplan para incluir estas funcionalidades en las llamadas entre
extensiones2 Oen negrita los cambiosP:
nano @etc@asterisk@e3tensions.con"
exten =N 5(00K0&"LB(B?acro!disponible)
same =N nB=ial!@-/EV>Q7>NWB;5B*O+It71:xQ)
same =N nBOangup
(e actualiSa el dialplan:
asterisk .rvvvvvvvvvvvvv
!LI" 'ia%%an re%oa'
*n el HILite se aaden todas las extensiones reservadas para el parqueo de las llamadas2 *l resultado
tienes que ser:
1E<
+M0O6TA#T-) Tener 9$c2o c$i'a'o c$an'o se aFa'e %a "$nciona%i'a' GtI a $na
%%a9a'a sa%iente orB$e 'e esta "or9a e% %%a9a'o tiene %a osi(i%i'a' 'e trans"erir %a
%%a9a'a a c$a%B$ier e3tensi&n ero ta9(i?n a c$a%B$ier n$9ero 'e te%?"ono 1 %a %%a9a'a
%a estarMan agan'o $ste'es.
%hora desde la extensin 1>>1 se marca la extensin 1>>: y cuando esta conteste se parquea la llamada
Ocon la secuencia de dgitos ^< o W<>>P2
*l resultado ser#:
1EA
La extensin 1>>: esta parqueada en la extensin <>12 /esde el HILite0 presionando el botn derecho
del ratn sobre la linea de la extensin <>1 se podr# llamar la extensin parqueada es decir la extensin
1>>:2
Ltra prueba que se puede hacer es grabar la llamada utiliSando la secuencia de dgitos ^3 para tener un
solo archivo audio de toda la conversacin2
/esde la extensin 1>>1 se marca nuevamente a las 1>>: y cuando esta conteste0 se activa la grabacin
de la llamada digitando ^32 *n la consola de %steris& aparecer#:
II d(I8/1>>1I>>>>>>>E" 8laying bbeep2ula4b Olanguage besbP
II -ser hit b^3b to record call2 filename: autoI131A@B>:1>I1>>1I1>>:
== <egin Mi3Monitor 6ecor'ing (I8/1>>:I>>>>>>>a
II d(I8/1>>1I>>>>>>>E" 8laying bbeep2ula4b Olanguage besbP
/igitando nuevamente la secuencia ^3 terminar# la grabacin de la llamada:
II -ser hit b^3b to stop recording call2
== 'ix'onitor close filestream
== -n' Mi3Monitor 6ecor'ing (I8/1>>:I>>>>>>>a
(e sale de la consola de %steris&:
!LI" B$it
(e averigua que se haya creado el archivo:
%s .% @var@soo%@asterisk@9onitor@
-rw-r--r-- 1 root root 233+6* <ct 12 1,"5, auto-1318*6)21)-1))1-1))2.wav
8ara probar la captura de llamada0 se llama desde la extensin 1>>1 a la extensin 1>>: y cuando 5sta
timbre0 desde la extensin 1>>> OHILiteP se digita ^A2
(i todo funciona bien0 la llamada ser# capturada por la extensin 1>>> que podr# hablar con la
extensin 1>>12
% seguir se presenta un e$emplo de captura de llamada con un tel5fono +randstream +H8:>>> y que es
valida para la mayora de los tel5fono que soportan las teclas programables2 (e accede a la
configuracin del tel5fono va =eb y se selecciona el menF M!onfiguracin B#sicaN2 *n la pagina que
aparece se configura la primera tecla disponible con los siguientes datos:
1EE
Mo'o tec%a) %steris& 8BL
C$enta) !uenta 1
#o9(re) .ulano
+, >s$ario) 1>>>
(e esta forma se monitorea el estado de la extensin 1>>>2 Luego se pasa al menF M!uenta 1N y se
configura la extensin 1>>: como se hara normalmente en un softphone2 La parte importante de la
configuracin de la cuenta0 es este par#metro:
/onde se define la secuencia de dgitos para capturar las llamadas2 (e guarda la configuracin2 %hora
desde la extensin 1>>1 se marca a la extensin 1>>>2 !uando la extensin 1>>> est5 timbrando0 la
tecla programada en el tel5fono +randstream empeSar# a parpadear2 (i se presiona en la consola de
%steris& aparecer#:
C<(ACE018324" chansi#.c"2),+2 handlereMuestinvite" Call fro$ .1))2. to eBtension .681))).
reGected 'ecause eBtension not found in conteBt .internas..
8arece que la captura de la llamada no tuvo 5xito porque hace falta algo en el dialplan2 (e abre el
archivo:
nano @etc@asterisk@e3tensions.con"
y en el contexto internas se aade:
exten =N Z'QQQQB(B-ic+up!EV>Q7>NG"W)
same =N nBOangup
/e esta forma se podr# capturar las llamadas utiliSando la aplicacin 8ic&up2 (e guardan los cambios y
se actualiSa el dialplan:
asterisk .rvvvvvvvvvv
!LI" 'ia%%an re%oa'
(e repite la prueba anterior y se ver# que ahora se logra capturar correctamente la llamada cuando la
extensin 1>>> est# timbrando2
R.4 =as a%icaciones 0ark 1 0arkAn'Anno$nce
:>>
La aplicacin 8ar& permite parquear una extensin directamente desde el dialplan2 -n e$emplo de su
utiliSo es cuando se llama una extensin y esta resulta ocupada2 *n lugar de terminar la llamada o
enviarla al buSn de voS0 puedes ser Ftil parquearla unos cuantos segundos0 pasados los cuales0
devolver la llamada a la extensin que se encontraba ocupada esperando que ya est5 libre2
La sintaxis de la aplicacin es:
8ar&OYtimeoutZY0returnCcontextY0returnCextenY0returnCpriorityY0optionsY0par&ingClotCnameZZZZZP
timeout G el tiempo0 en mili segundos0 que quedar# parqueada la llamada
returnoCcontext G contexto donde se enviar# la llamada una veS que hayan pasado los segundos
definidos en el parametro timeout
returnCexten G numero de extensin donde se enviar# la llamada parqueda
returnCpriority0 numero de prioridad donde se enviar la llamada parqueada
options:
r G enva a la llamada parqueada la seal de timbrado en lugar de la mFsica de espera
; G escoge de forma aleatoria la extensin donde parquear la llamada
s G no anuncia el numero de extensin donde se ha parqueado la llamada2
par&ingClotCname G *n nombre del par&inglot a utiliSar para parquear la llamada2
%hora para verla funcionar se modifica el dialplan:
nano @etc@asterisk@e3tensions.con"
se modifica este bloque
Kmacro&disponibleL
exten =N sB(Bet!estado=EV=>R@C>57/7>!@-/EV?/C.O5>Q7>NW)W)
exten =N sBnB3otoif!EK4EVestadoW4 = 4NO75@N6>4LY5)
exten =N sBnBFus0
exten =N sBnBOangup
exten =N sBnB?acro>xit
para que quede:
Kmacro&disponibleL
exten =N sB(Bet!estado=EV=>R@C>57/7>!@-/EV?/C.O5>Q7>NW)W)
exten =N sBnB3otoif!EK4EVestadoW4 = 4NO75@N6>4LY')
exten =N sBnB3otoif!EK4EVestadoW4 = 4@N6>4LYpar+)
exten =N sBnBFus0
exten =N sBnBOangup
exten =N sBn!par+)B-ar+!%0000BexternasBEV?/C.O5>Q7>NWB(BrsBdefault)
exten =N sBnBOangup
exten =N sBnB?acro>xit
(e guardan los cambios y se actualiSa el dialplan:
:>1
asterisk .r3 ^'ia%%an re%oa'^
%hora desde la extensin 1>>> se marca a la extensin 1>>12 (e contesta la llamada2 /esde la
extensin 1>>: se marca la extensin 1>>>2 !omo estar# ocupada0 la llamada se parquear# por @?
segundos2 La extensin 1>>> termina la llamada con la extensin 1>>12 /espu5s de unos segundos
recibe la llamada de la extensin 1>>: Ocuando termina el tiempo de parqueo de 3> segundosP2
La aplicacin 8ar&%nd%nnounce es parecida a la primera pero se diferencia porque la llamada
parqueada se anuncia a una extensin que se define a priori2 La sintaxis:
8ar&%nd%nnounceOannounceY:announce1Y:222ZZ0timeout0dialY0returnCcontextZP
announce G se utiliSa una locucin para anunciar el parqueo2 (i se utiliSa la palabra 8%;T*/0
esta ser# sustituida por el anuncio de la extensin donde se ha parqueado la llamada
timeout G tiempo0 en segundos0 antes de enviar la llamada parqueada al contexto indicado en el
parametro returnCcontext2 (i no se indica ningFn contexto0 la llamada volver# a la extensin de
donde se parque0 prioridad h 1
dial G se utiliSa la aplicacin /ial para llamar una extensin y anunciar la llamada parqueada
returnCcontext G contexto donde enviar la llamada despu5s que pasen los segundos indicados
enel par#metro timeout
-n e$emplo practico para utiliSar esta aplicacin es que se intenta transferir una llamada a la operadora
pero esta est# ocupada0 pues se transfiere a otra extensin donde se parquea y al mismo tiempo se
anuncia la extensin de parqueo a la operadora2
8ara la prueba se modifica el dialplan:
nano @etc@asterisk@e3tensions.con"
en el contexto internas se aade:
exten =N (C5B(BNoOp
same =N nB-ar+andannounce!vm&0ou*aveGvm&extensionG-/.I>=B$0B@-/(000BexternasB(C5B%)
same =N nB-la0bac+!vm&nobod0avail)
same =N nBOangup
(e guardan los cambios y se actualiSa el dialplan:
asterisk .rvvvvvvvvvvvvvvvvvv
!LI" 'ia%%an re%oa'
%hora desde la extensin 1>>: se llama la extensin 1>>1U se contesta la llamada y desde la extensin
1>>1 se transfiere a la extensin 1<? utiliSando la tecla numero2 La llamada ser# parqueada por B>
segundos y al mismo tiempo se anunciar# a la extensin 1>>> que hay una llamada parqueada y el
:>:
numero de extensin donde se parque2
(i la extensin 1>>> no llama el numero de extensin donde se parque la llamada dentro de B>
segundos0 la llamada parqueada volver# al contexto externas0 extensin 1<?0 prioridad 3 donde se le
anunciar# que no hay nadie disponible e se colgar# la llamada2
R.L =a a%icaci&n 7o%%owMe 8SMg$e9e:
-n empleado tiene que ausentarse de su oficina por unas cuantas horas y quiere que a partir de ese
momento todas las llamadas con destino su extensin0 sean desviadas a una serie de nFmeros que el ha
definido anteriormente2 %dem#s por cada llamada desviada quiere saber quien lo est# llamando y tener
la posibilidad de rechaSar la llamada2 8ara este tipo de escenario0 se utiliSa la aplicacin .ollo4'e
O(guemeP2 *sta aplicacin se compone de dos partes:
el archivo de configuracin follo4me2conf
la aplicacin follo4me
(e inicia con la configuracin del archivo follo4me2conf2 *n la tabla a seguir los distintos par#metros
presentes en el archivo con una breve explicacin2 *n negrita el valor que se utiliSar# para cada
par#metro:
0ar!9etro ,escrici&n
YgeneralZ *tiqueta que da inicio a la configuracin general
del archivo
featuredigittimeout=" *l tiempo0 en mili segundos0 que tendr# el
llamado para presionar los dgitos para aceptar o
rechaSar la llamada entrante2 9alor: L000
ta&ecall=" 1 = la tecla que tendr# que presionar el llamado
para aceptar la llamada
declinecall=" 2 = la tecla que tendr# que presionar el llamado
para rechaSar la llamada
callCfromCprompt="follo4me/callIfrom
norecordingCprompt="follo4me/noIrecording
optionsCprompt="follo4me/options
plsCholdCprompt="follo4me/plsIholdI4hileItry
statusCprompt="follo4me/status
sorryCprompt="follo4me/sorry
Las locuciones predefinidas de la aplicacin
Y1>>>Z /esde esta etiqueta inicia la configuracin de
desvo para la extensin 1>>>
musicclass=" 'e"a$%t G la mFsica de espera predefinida que
escuchar# el llamante mientras se intenta localiSar
el llamado2
:>3
0ar!9etro ,escrici&n
context=" *l contexto que se utiliSar# para efectuar las
llamadas para localiSar el llamado: 9alor:
e3ternas
number=" % partir de este par#metro se indica la lista de
nFmeros a llamar2 La sintaxis es:
nu$ero1Ynu$ero2Ynu$ero3Dtie$#oDorden
(i se indica m#s de un numero en la misma linea0
todos los nFmeros indicados se marcar#n al
mismo tiempo2 (i se indican los nFmeros uno por
linea se marcar#n secuencialmente2
*n este caso se van a configurar dos:
00LJ111111111
y
00LJ3101234L6J
es decir un fi$o y un celular
Y1>>1Z (i se quiere configurar el servicio para la
extensin 1>>10 se inicia con la esta etiqueta y se
siguen las mismas pautas de la extensin 1>>>2
(e renombra el archivo predefinido:
9v @etc@asterisk@"o%%ow9e.con" @etc@asterisk@"o%%ow9e.con".o%'
y se crea uno nuevo:
nano @etc@asterisk@"o%%ow9e.con"
(e copian las siguientes lineas:
KgeneralL
featuredigittimeout=N 5000
ta+ecall=N (
declinecall=N "
call5from5prompt=Nfollo1me/call&from
norecording5prompt=Nfollo1me/no&recording
options5prompt=Nfollo1me/options
pls5*old5prompt=Nfollo1me/pls&*old&1*ile&tr0
status5prompt=Nfollo1me/status
sorr05prompt=Nfollo1me/sorr0
K(000L
musicclass=N default
context=N externas
number=N 005C(((((((((B(5
:>@
number =N 005C%(0("%;5$CB(5
!on esta configuracin0 si oportunamente configurado en el dialplan0 primero se llamar# el numero
>>?<111111111 por 1? segundos y luego el numero >>?<31>1:3@?B< por otros 1? segundos2 (i nadie
contesta0 se le anunciar# al llamante que no se ha podido localiSar el destinatario de la llamada2 *n este
caso el timeout de 1? segundos no representa el tiempo que tiene el llamado para contestar sino el
tiempo total que tiene el llamado para aceptar la llamada Opresionando 1 una veS que haya contestadoP2
%ntes de guardar los cambios0 se personaliSan los dos nFmeros que aparecen en el archivo2
%hora para utiliSar esta funcionalidad hay que configurar la aplicacin .ollo4'e en el dialplan2 6ay
dos formas de hacerlo2 %ctivarla cada veS que la extensin no conteste0 o solamente si la extensin la
ha activado anteriormente2 La primera opcin puede generar transferencias indeseadas ya que se puede
verificar que la extensin no conteste porque no alcanSa y/o porque est# hablando con otra extensin2
*n el e$emplo a seguir se permitir# al usuario activar y desactivar la funcionalidad en cualquier
momento2 *sto se realiSa utiliSando la base de datos interna de %steris&2
(e abre el dialplan:
nano @etc@asterisk@e3tensions.con"
y en el contexto internas se aaden los dos bloques que siguen:
J/ctivar 8ollo1?e
exten =N Z00B(BNoOp
same =N nBet!=F!8?/EVC/LL>.@=!num)W)=()
same =N nB-la0bac+!beep)
same =N nB*angup
J=esactivar 8ollo1?e
exten =N Z0(B(BNoOp
same =N nBet!=F!8?/EVC/LL>.@=!num)W)=0)
same =N nB-la0bac+!beep)
same =N nB*angup
!on el primer bloque se crea una entrada en la base de datos interna de %steris& y se asigna a esa
entrada el valor 12 !on el segundo bloque se asigna a la misma entrada el valor >2 *l valor uno significa
funcionalidad activada y el valor > significa funcionalidad desactivada2
/esde la extensin 1>>> se marca ^>> para activar la funcionalidad2 *n la base de datos interna de
%steris&0 aparecer#:
/N9/1))) " 1
'arcando ^>1 el resultado ser#:
:>?
/N9/1))) " )
%hora falta utiliSarla en las llamadas entre extensiones:
nano @etc@asterisk@e3tensions.con"
exten =N 5(00K0&"LB(B?acro!disponible)
same =N nB=ial!@-/EV>Q7>NWB;5B*O+It71:xQ)
same =N nBOangup
se modifica para que quede:
exten =N 5(00K0&"LB(B?acro!disponible)
same =N nB3oto@f!EKEV=F!8?/EV>Q7>NW)W = (LY8?)
same =N nB=ial!@-/EV>Q7>NWB;5B*O+It71:xQ)
same =N nBOangup
same =N n!8?)B8ollo1?e!EV>Q7>NW)
same =N nBOangup
(e guardan los cambios0 se actualiSa el dialplan y la aplicacin .ollo4'e:
asterisk .rvvvvvvvvvvvvvv
!LI" 'ia%%an re%oa'
!LI" 9o'$%e re%oa' a;"o%%ow9e.so
(e vuelve a activar la funcionalidad marcando ^>> desde la extensin 1>>>2 Luego desde la extensin
1>>1 se llama la extensin 1>>>2 *mpeSar# el desvo a los dos nFmeros indicados en el archivo de
configuracin follo4me2conf2 (i se quiere que los dos nFmeros sean marcados a la veS0 se abre el
archivo follo4me2conf:
nano @etc@asterisk@"o%%ow9e.con"
y se modifica este bloque:
K(000L
musicclass=N default
context=N externas
number=N 005C(((((((((B(5
number =N 005C%(0("%;5$CB(5
para que quede:
K(000L
musicclass=N default
context=N externas
:>B
number=N 005C(((((((((^005C%(0("%;5$CB"0
(e guardan los cambios y se vuelve a entrar en la consola de %steris&:
asterisk .rvvvvvvvvvvvvvvvv
se recarga la configuracin del .ollo4'e:
!LI" 9o'$%e re%oa' a;"o%%ow9e.so
y se marca nuevamente desde la extensin 1>>1 a la extensin 1>>>2 *n este caso los dos nFmeros
timbrar#n contempor#neamente2 Las distintas opciones que se pueden utiliSar con la aplicacin
.ollo4'e:
a G antes de empeSar a localiSar el llamado0 el llamante tiene que grabar su nombre
d G deshabilita la locucin que anuncia al llamante que se est# intentando localiSar el llamado
n G si el sistema no logra localiSar el llamado0 enva al llamante una locucin anunciando que
no pudo localiSar el llamado
s G anuncia al llamante que la persona llamada no se encuentra en su escritorio y que el sistema
intentar# localiSarla2
La desventa$a de esta solucin es que el usuario no puede modificar por su cuenta los nFmeros de
desvo ya que hay que definirlos anteriormente en el archivo follo4me2conf2 -na alternativa m#s
McmodaN desde el punto de vista del usuario0 es que 5ste decida cada veS donde desviar la llamada2 *n
este caso el dialplan cambiara de la siguiente manera:
nano @etc@asterisk@e3tensions.con"
en el contesto internas se aaden los siguientes bloques:
exten =N 5##B(BNoOp
same =N nBet!=F!8:/EVC/LL>.@=!num)W)=EV>Q7>NG(W)
same =N nB-la0bac+!beep)
same =N nB*angup
exten =N #B(BNoOp
same =N nBNoOp!EV=F5=>L>7>!8:/EVC/LL>.@=!num)W)W)
same =N nB-la0bac+!beep)
same =N nB*angup
!on el primero se configura el desvo0 con el segundo se borra2 Luego en el bloque de las llamadas
entre extensiones:
exten =N 5(00K0&"LB(B?acro!disponible)
same =N nB3oto@f!EKEV=F!8?/EV>Q7>NW)W = (LY8?)
same =N nB=ial!@-/EV>Q7>NWB;5B*O+It71:xQ)
:><
same =N nBOangup
same =N n!8?)B8ollo1?e!EV>Q7>NWBs)
same =N nBOangup
(e modifica para que quede:
exten =N 5(00K0&"LB(B?acro!disponible)
same =N nB3oto@f!EV=F5>Q@7!8:/EV>Q7>NW)WYf1)
same =N nB=ial!@-/EV>Q7>NWB;5B*O+It71:xQ)
same =N nBOangup
same =N n!f1)Bet!f1=EV=F!8:/EV>Q7>NW)W)
same =N nB3oto!externasBEVf1WB()
same =N nBOangup
-na explicacin2 *n la linea : se averigua si existe una entrada en la base de datos interna para la
extensin llamada2 (i existe significa que esa extensin ha configurado el desvo2 *n ese caso se MsaltaN
a la linea con la etiqueta Of4P donde se asigna a la variable f4 el numero de desvo configurado2 Luego
en la linea B se enva la llamada al contexto YexternasZ0 extensin igual al numero de desvo0 prioridad
10 es decir se marca el numero de desvo configurado
(e guardan los cambios y se recarga el dialplan:
asterisk .rvvvvvvvvvvvvvvvvvvvvvv
!LI" 'ia%%an re%oa'
%hora desde la extensin 1>>> se marca WnumerodesvoU e$emplo: W>>?<31>1:3@?B<2 *n la base de
datos interna de %steris& aparecer#:
!LI" 'ata(ase s2ow
/NJ/1))) " ))5,31)123*56,
*l desvo para la extensin 1>>> ha sido activado2 %hora si desde la extensin 1>>1 se marca a la
extensin 1>>>2 !omo el desvo est# activado0 el sistema llamar# al numero >>?<31>1:3@?B<:
?ial(W2AF/1))1-)))))))dWD W2AF/Gustvoi#/))5,31)123*56,W!
!uando la extensin 1>>> quiere borrar el desvo0 marcar# W: (i se busca en la base de datos de
%steris&:
!LI" 'a(atase s2ow
la configuracin de desvo ya no estar# presente2
-na veS efectuadas todas las pruebas del caso0 se sale de la consola de %steris&:
:>A
!LI" quit
(e abre el dialplan:
nano @etc@asterisk@e3tensions.con"
y se vuelve a modificar este bloque:
exten =N 5(00K0&"LB(B?acro!disponible)
same =N nB3oto@f!EV=F5>Q@7!8:/EV>Q7>NW)WYf1)
same =N nB=ial!@-/EV>Q7>NWB;5B*O+It71:xQ)
same =N nBOangup
same =N n!f1)Bet!f1=EV=F!8:/EV>Q7>NW)W)
same =N nB3oto!internacioBEVf1WB()
same =N nBOangup
para que quede:
exten =N 5(00K0&"LB(B?acro!disponible)
same =N nB=ial!@-/EV>Q7>NWB;5B*O+It71:xQ)
same =N nBOangup
(e guardan los cambios y se actualiSa el dialplan:
asterisk .r3 ^'ia%%an re%oa'^
:>E
Cait$%o X
Asterisk 1 %os ca%en'arios
%steris& puede ser integrado con distintos formatos de calendarios2 *sta nueva funcionalidad ha sido
incluida desde la versin 12A2H2 Los formatos soportados son:
i!alendar: es un est#ndar Internet O;.!??@BP que ha sido utiliSado por primera veS por %pple
con su aplicacin i!al
!al/%9: es un est#ndar Internet O;.!@<E1P que permite a un cliente acceder a la informacin
de eventos programados presentes en un servidor2 *s una extensin del est#ndar Internet
=eb/%9 O;!. @E1AP2 8ara el formato de los datos se apoya a i!alendar2 %ctualmente es
utiliSado por muchas aplicaciones0 entre ellas0 +oogle !alendar0 Jimbra0 Qahoo[ !alendar y
Dhunderbird de 'oSilla .undation2
'( *xchange: utiliSado por 'icrosoft *xchange :>>3
's *xchange =eb (ervices: utiliSado por *xchange :>>< y superiores2
*sto significa que %steris&0 oportunamente configurado0 puede interactuar con estos formatos de
!alendario2 Los mdulos que se encargan de esta integracin son:
asterisk .rvvvvvvvvvvvvv
!LI" 9o'$%e s2ow %ike res;ca%en'ar
9odule ?escri#tion Ese Count
rescalendar.so 3sterisk Calendar inte%ration *
rescalendarcaldav.so 3sterisk Cal?3P Calendar Ante%ration )
rescalendarews.so 3sterisk 92 EBchan%e Je' 2ervice Calenda )
rescalendaricalendar.so 3sterisk iCalendar .ics file inte%ration )
rescalendareBchan%e.so 3sterisk 92 EBchan%e Calendar Ante%ratio )
5 $odules loaded
8ara que est5n activados en %steris&0 hay que compilar las siguientes dos libreras:
,eon
libical
%l momento de e$ecutar0 desde la carpeta de las fuentes de %steris&0 el comando ma&e menuselect0 se
averigua que los mdulos est5n habilitados:
10.1 ca%en'ar.con"
*l archivo para la configuracin de los calendarios es calendar2conf y se encuentra en la carpeta
/etc/asteris&2 *n este archivo se puede configurar m#s de un calendario y cada uno ser# identificado por
una etiqueta inicial2 8ara crear un entorno real0 se simular# la conexin al calendario de +oogle0 que se
puede activar utiliSando una cuenta +mail registrada2 % seguir la tabla con los par#metros de
configuracin2 *n negrita0 la opcin que se utiliSar# para cada par#metro2 %l final de la tabla0 la
configuracin completa del archivo2
0ar!9etro ,escrici&n
YcampusvoStovoiceZ *tiqueta que permite identificar el calendario que se est# configurando2
8ersonaliSar
type 8uede ser:
i!al
caldav
exchange O'icrosoft *xhange :>>3P
e4s O 'icrosoft *xchange :>>< y superioresP
8ara +oogle !alendar el tipo es ica%
url La -;L para conectarse al calendario2 *n el caso de +oogle!alendar la
sintaxis es:
2tts)@@www.goog%e.co9@ca%en'ar@'av@"$%ano*g9ai%.co9@events@
8ersonaliSar username_gmail con su cuenta de +oogle
user ,ombre usuario gmail2 *n este e$emplo: "$%ano*g9ai%.co9
8ersonaliSar
secret la contrasea del usuario +oogle
refresh !ada cuantos minutos consultar el !alendario de +oogle para actualiSar
los datos en %steris&2 9alor: 10
timeframe 8or cada consulta extraer los eventos que tendr#n lugar en los prximos
, minutos2 *ste valor tiene que ser mayor del par#metro refresh2 9alor:
180 O3 horasP
autoreminder *ste par#metro anula cualquiera notificacin configurada para un evento
y la cambia por el valor indicado en minutos2 9alor 10
channel !uando falten los , minutos definidos en el par#metro autoreminder0 es
posible enviar una llamada a la extensin indicada en este par#metro2
La sintaxis es: Decnologa/numero2 (uponiendo que este calendario es
asociado a la extensin 1>>>0 se pone (I8/1>>>2 % partir de los
prximos par#metros podemos definir dos comportamientos distintos
cuando la extensin 1>>> conteste la llamada:
enviar la llamada a un contexto0 extensin definida
e$ecutar una aplicacin y definir sus par#metros2
context nombre del contexto: ca%en'ario
:1:
0ar!9etro ,escrici&n
extension numero de extensin: ca%
app
appdata
aplicacin a e$ecutar cuando la extensin conteste: 0%a1(ack
opciones para la aplicacin: 'e9o.congrats
4aittime este ultimo par#metro define el tiempo Oen segundosP que tendr# la
extensin 1>>> para contestar la llamada2 9alor 4L
!on estos par#metros se configura el primer calendario2 !omo configuracin predefinida0 cuando la
extensin 1>>> conteste0 se utiliSar#n los dos par#metros context/extension2 8rimero se crea una copia
del archivo predefinido:
9v @etc@asterisk@ca%en'ar.con" @etc@asterisk@ca%en'ar.con".o%'
y se crea uno nuevo:
nano @etc@asterisk@ca%en'ar.con"
Kcampusvo,tovoiceL
t0pe=ical
url=*ttpsG//111#google#com/calendar/dav/fulanoSgmail#com/events/
user=fulanoSgmail#com
secret=pass1ord
refres*=(0
timeframe=('0
autoreminder=(0
c*annel=@-/(000
context=calendario
extension=cal
1aittime=;5
Japp= -la0bac+
Jappdata=demo&conrats
+M0O6TA#T-) 0ersona%izar %os 'atos 'e %a etiB$eta inicia%E e% ar!9etro $r%E e%
ar!9etro $ser 1 e% ar!9etro secret con %os 'atos 'e s$ c$enta 4oog%e.
(e guardan los cambios2
%hora se entra en la pagina del calendario de +oogle y se van aadiendo una serie de eventos para el
da en que se est# configurando este modulo2 *n este e$emplo se han creado tres:
:13
(e entra en la consola de %steris&:
asterisk .rvvvvvvvvvvvvvvvvvvvv
(e recarga el modulo calendario:
!LI" 9o'$%e re%oa' res;ca%en'ar.so
(i aparece esta advertencia:
0Ne' , 16"2)")+4 J31CACQ02,*,,4" rescalendarcaldav.c"15, caldavreMuest" Enknown res#onse
to Cal?3P calendar ca$#usvoTtovoiceD reMuest 1EF<1( to
/calendar/dav/ca$#us.voTtovoice-%$ail.co$/events/" Could not read status line" connection was
closed 'y server
significa que la configuracin no est# funcionando2 i8or qu5j 8rimero se descarta que sea un problema
de la configuracin de los datos en el archivo calendar2conf2
(e abre una ventana del navegador y se pega la url que aparece en el archivo calendar2conf2 *n este
caso:
2tts)@@www.goog%e.co9@ca%en'ar@'av@ca9$s.voztovoice*g9ai%.co9@events@
%parecer#:
:1@
(e pone el nombre de usuario de +oogle y la contrasea2 (e termina presionando el botn MIniciar
sesinN2 (i la conexin tiene 5xito aparecer# una ventana de descarga que pedir# de guardar un archivo
de texto:
*l archivo descargado contendr# todos los datos del calendario2 *sto significa que los datos de
configuracin del archivo calendar2conf son correctos2 (i se mira el parametro url del archivo0 se notar#
que empieSa con https0 esto quiere decir que se basa en una conexin segura y que la librera que
permite la conexin !al/%9 OneonP debe implementar el protocolo ((L2 i(er# que ,eon no se ha
compilado con el soporte ((Lj
(e entra en la carpeta de las fuentes de neon:
c' @$sr@src@neon.0.2R.6
y se lanSa nuevamente un configure:
.@con"ig$re
!uando el comando termine:
8or defecto neon no se compila con el soporte ((L0 pues para solucionar el problema hay que volver a
compilar neon y luego %steris&:
:1?
9ake 'istc%ean
.@con"ig$re ..re"i3Q@$sr ..wit2.ss%Qoenss%
%hora si se compil con el soporte ((L2 (e termina la compilacin e instalacin:
9ake
9ake insta%%
%hora hay que volver a compilar %steris&2 8rimero se para el servicio:
service asterisk sto
(e entra en la carpeta de las fuentes:
c' @$sr@src@asterisk.1.8.20.1
se borra la compilacin anterior:
9ake 'istc%ean
se vuelve a compilar:
.@con"ig$re
(e necesita volver a entrar en la interfaS gr#fica para seleccionar los mdulos %ddIons ya que por
defecto no est#n seleccionados:
9ake 9en$se%ect
:1B
(e guardan los cambios y se vuelve a compilar:
9ake
9ake insta%%
Derminada esta operacin0 se inicia nuevamente %steris&:
service asterisk start
(e entra en la consola y se recarga nuevamente el modulo !alendario:
asterisk .rvvvvvvvvvvvvv
!LI" 9o'$%e re%oa' res;ca%en'ar.so
(i no aparecen errores y/o advertencias significa que esta veS la conexin al calendario de +oogle ha
tenido 5xito y se debera poder ver algunos eventos programados2
!LI" ca%en'ar s2ow ca%en'ars
!on este comando aparecer# la lista de calendarios configurados y el estados de cada uno:
Calendar (y#e 2tatus
-------- ---- ------
ca$#usvoTtovoice ical free
!on este comando:
!LI" ca%en'ar s2ow ca%en'ar ca9$svoztovoice
se pueden ver los eventos programados en los prximos 1A> minutos Opar#metro timeframe=1A>P2 (i no
aparecen es porque todava %steris& no ha actualiSado la informacin ya que lo hace cada 1> minutos
Oparametro refresh=1>P2 'odificar campusvoStovoice con el nombre de su calendario2
:1<
%parece el evento de las <:3> y el evento de las E:3>2 *l evento programado a las 11 no aparece porque
el modulo est# configurado para que lea los eventos de los prximos 1A> minutos2 %hora para que la
llamada llegue a la extensin 1>>> hay que crear el contexto calendario y la extensin cal Ocomo
configurado en el archivo calendar2confP2 i!mo se construye el dialplan para que la extensin 1>>>
pueda saber que cita est# para iniciarj2 6ay que instalar un sistema de texto a voS que lea un texto y lo
transforme en audio2
Lefteris Jafiris0 ha desarrolado un %+I que se conecta al sistema de texto a voS de +oogle y transforma
un texto en audio2 %unque la parte de los %+I se ver# de manera m#s detallada en el capitulo HIH del
libro0 en este caso se implementar# esta solucin2 8ara que el %+I funcione0 los requisitos son:
8aquete 8erl
8aquete perlIlib444
sox
:1A
mpg1:3
el servidor donde est# instalado %steris& debe tener acceso a Internet
!omo sox ya est# instalado0 se instalan los paquetes de perl:
1$9 insta%% er% er%.%i(www.er%
se descarga0 compila e instala mpg1:3:
c' @$sr@src
wget 2tt)@@'own%oa's.so$rce"orge.net@ro5ect@9g123@9g123@1.13.4@9g123.1.13.4.tar.(z2
tar .3" 9g123.1.13.4.tar.(z2
c' 9g123.1.13.4
.@con"ig$re ..re"i3Q@$sr
9ake
9ake insta%%
Qa se puede descargar el archivo que contiene el %+I:
c' @$sr@src
wget 2tt)@@www.voztovoice.org@ca9$s@(318@asterisk.goog%etts.0.6.tar.gz
(e descomprime:
tar .3" asterisk.goog%etts.0.6.tar.gz
(e entra en la carpeta creada:
c' asterisk.goog%etts.0.6
8or defecto %steris& busca los %+I en la carpeta /var/lib/asteris&/agiIbin2 8or eso se copia el %+I en esa
carpeta y se vuelve e$ecutable:
c goog%etts.agi @var@%i(@asterisk@agi.(in@
c29o' N3 @var@%i(@asterisk@agi.(in@goog%etts.agi
8or ultimo se modifica el dialplan:
nano @etc@asterisk@e3tensions.con"
y antes del contexto internas se crea el nuevo contexto:
KcalendarioL
exten =N calB(BNoOp!Llamada desde el calendario)
same =N nB/gi!googletts#agiB4EVC/L>N=/.5>R>N7!summar0)W#4Bes)
:1E
same =N nB/gi!googletts#agiB4a las EV7.87@?>!EVC/L>N=/.5>R>N7!start)WBB_OG_?)W#4Bes)
same =N nB:ait!()
same =N nB-la0bac+!goodb0e)
same =N nBOangup
*n la segunda y tercera linea se inicia el %+I y se leen las variables E
VC/L>N=/.5>R>N7!summar0)W 0 EVC/L>N=/.5>R>N7!start)W que contienen el titulo del
evento y la hora de inicio respectivamente2 !omo la hora se lee en el formato *8L!60 hay que
transformarla en el formato de hora y minutos a trav5s de la funcin 7.87@?>
(e recarga el dialplan:
asterisk .r3 ^'ia%%an re%oa'^
1> minutos antes del inicio del evento0 %steris& llamar# la extensin 1>>> y cuando esta conteste0 le
anunciar# el tipo de evento y la hora en que va a iniciar2 La llamada llegar# normalmente con este
!%LL*;I/:
+M0O6TA#T-) (i por cualquier motivo no escuchan el %udio del %+I hay que seguir estos pasos:
Instalar el 8erlI!8%,:
1$9 insta%% er%.C0A#
y luego el modulo !+I::-til:
er% .MC0A# .e ^insta%% C4+))>ti%^
9olver a probar el %gi googletts2agi:
!uando el evento iniciar# en el calendario aparecer# el estado ocupado:
asterisk .rvvvvvvvvvvvvvv
!LI" ca%en'ar s2ow ca%en'ars
Calendar (y#e 2tatus
-------- ---- ------
ca$#usvoTtovoice caldav 'usy
::>
*sto es as siempre y cuando en la configuracin del evento en el !alendario se haya configurado la
opcin:
8ara saber que tipo de informaciones se pueden conocer acerca de un evento programado el comando
es:
asterisk .rvvvvvvvvvvvvvv
!LI" core s2ow "$nction CA=-#,A6;-V-#T
-7 Anfo a'out function .C3>EC?31EPEC(. 7-
02yno#sis4
Qet calendar event notification data fro$ a notification call.
0?escri#tion4
Jhenever a calendar event notification call is $adeD the event data $ay 'e
accessed with this function.
02yntaB4
C3>EC?31EPEC((field!
03r%u$ents4
field
su$$ary - (he PEPEC( 2E9931& #ro#erty or EBchan%e event .su'Gect.
descri#tion - (he teBt descri#tion of the event
or%aniTer - (he or%aniTer of the event
location - (he location of the eventt
cate%ories - (he cate%ories of the event
#riority - (he #riority of the event
calendar - (he na$e of the calendar associated with the event
uid - (he uniMue identifier for this event
start - (he start ti$e of the event
end - (he end ti$e of the event
'usystate - (he 'usy state of the event )7N1EED 17(EC(3(APED
27LE2&
Dodos los par#metros ba$o la etiqueta Y%rgumentsZ se pueden extraer del calendario y utiliSar en el
::1
dialplan2
8ara conocer todas las funciones disponibles en %steris& para traba$ar con los calendarios:
!LI" core s2ow "$nction ca%en'ar N tec%a ta($%a'or
C3>EC?31LE2& C3>EC?31EPEC( C3>EC?31IEE1&
C3>EC?31IEE1&1E2E>( C3>EC?31J1A(E
10.2 CA=-#,A6;<>SV
*s una funcin que permite consultar un calendario para ver si su estado es libre o ocupado2 *ste tipo
de respuesta se puede utiliSar en el dialplan asociando el calendario a una determinada extensin y en
base al estado del calendario procesar la llamada de diferentes formas2 -n e$emplo: el calendario
configurado en %steris& est# asociado a la extensin 1>>>2 (i el estado del calendario es ocupado0 se
anuncia al llamante de llamar m#s tarde0 sino se pasa la llamada a la extensin 1>>>2
(e abre el dialplan
nano @etc@asterisk@e3tensions.con"
se modifica este bloque:
exten =N 5(00K0&"LB(B?acro!disponible)
same =N nB=ial!@-/EV>Q7>NWB;5B*O+It71:xQ)
same =N nBOangup
para que quede:
exten =N 5(00K0&"LB(B?acro!disponible)
same =N nB?acro!calendario)
same =N nB=ial!@-/EV>Q7>NWB;5B*O+It71:xQ)
same =N nBOangup
y al final del archivo0 antes de esta linea:
#include @R.
se aade la nueva macro:
Kmacro&calendarioL
exten =N sB(BNoop!EV?/C.O5>Q7>NW)
same =N nB3oto@f!EKEV?/C.O5>Q7>NW = (000LYcalendario)
same =N nB?acro>xit
same =N n!calendario)Bet!estado=EVC/L>N=/.5F62!campusvo,tovoice)W)
same =N nBNoop!>stado = EVestadoW)
same =N nB3otoif!EKEVestadoW = (LYocupado)
:::
same =N nB?acro>xit
same =N n!ocupado)B/gi!googletts#agiB4la extensi[n se encuentra ocupadaB llame mas tarde# 3racias4Bes)
same =N nBOangup
*sta nueva macro controla primero si la extensin que se est# llamando es la 1>>>2 (i es as continua
desde la etiqueta calendario donde revisa si el calendario asociado a la extensin 1>>> Oen este caso
campusvoStovoiceP resulta libre o ocupado2 (i resulta ocupado0 %steris& devuelve el valor 10 si resulta
libre %steris& devuelve el valor >P2 *n el caso que el resultado sea 10 se le anuncia al llamante Ocon el
%+I de googleP que la extensin se encuentra ocupada y que llame m#s tardeP2 (i el resultado es > se
sale de la 'acro y se vuelve al contexto0 extensin0 prioridad h1 de donde la 'acro se ha llamado2
(e guardan los cambios y se recarga el dialplan:
asterisk .rvvvvvvvvvvvvvvvvvvvvv
!LI" 'ia%%an re%oa'
se averigua el estado del calendario:
!LI" ca%en'ar s2ow ca%en'ars
Calendar (y#e 2tatus
-------- ---- ------
ca$#usvoTtovoice ical 'usy
!omo en este caso resulta el ocupado0 si desde la extensin 1>>1 se marca a la extensin 1>>>0 se
debera escuchar el anuncio que la extensin se encuentra ocupada2
*l resultado de la llamada en la consola:
*xtension !hanged 1>>1YsubscribeZ ne4 state In-se for ,otify -ser 1>>>
II *xecuting Y1>>>_externas:1Z 'acroOa(I8/1>>1I>>>>>>>fa0 adisponibleaP in ne4 stac&
II *xecuting Ys_macroIdisponible:1Z (etOa(I8/1>>1I>>>>>>>fa0 aestado=,LDCI,-(*aP in ne4 stac&
II *xecuting Ys_macroIdisponible::Z +otoIfOa(I8/1>>1I>>>>>>>fa0 a1j?aP in ne4 stac&
II +oto OmacroIdisponible0s0?P
II *xecuting Ys_macroIdisponible:?Z 'acro*xitOa(I8/1>>1I>>>>>>>fa0 aaP in ne4 stac&
II *xecuting Y1>>>_externas::Z 'acroOa(I8/1>>1I>>>>>>>fa0 acalendarioaP in ne4 stac&
II *xecuting Ys_macroIcalendario:1Z ,oLpOa(I8/1>>1I>>>>>>>fa0 a1>>>aP in ne4 stac&
II *xecuting Ys_macroIcalendario::Z +otoIfOa(I8/1>>1I>>>>>>>fa0 a1jcalendarioaP in ne4 stac&
II +oto OmacroIcalendario0s0@P
II *xecuting Ys_macroIcalendario:@Z (etOa(I8/1>>1I>>>>>>>fa0 aestado=1aP in ne4 stac&
II *xecuting Ys_macroIcalendario:?Z ,oLpOa(I8/1>>1I>>>>>>>fa0 a-sta'o Q 1aP in ne4 stac&
II *xecuting Ys_macroIcalendario:BZ +otoIfOa(I8/1>>1I>>>>>>>fa0 a1jocupadoaP in ne4 stac&
II +oto OmacroIcalendario0s0AP
II *xecuting Ys_macroIcalendario:AZ %+IOa(I8/1>>1I>>>>>>>fa0 ^goog%etts.agiE^%a e3tension se
enc$entra oc$a'aE %%a9e 9as tar'e. 4racias^Ees^P in ne4 stac&
II Launched %+I (cript /var/lib/asteris&/agiIbin/googletts2agi
II 8laying b/tmp/A>eb1@BE??3d3abEAbE?BB1fbfBa:f1cb OescapeCdigits=P OsampleCoffset >P
::3
II d(I8/1>>1I>>>>>>>f"%+I (cript googletts2agi completed0 returning >
II *xecuting Ys_macroIcalendario:EZ 6angupOa(I8/1>>1I>>>>>>>fa0 aaP in ne4 stac&
10.3 CA=-#,A6;-V-#T
!omo ya se ha visto m#s arriba0 esta funcin permite extraer todas las informaciones relacionadas con
un evento2 '#s en detalle:
s$99ar1 G *l titulo del evento2
'escrition G La descripcin del evento
organizer G *l organiSador del evento
%ocation G (itio donde tiene lugar el evento
categories G !ategora del evento
riorit1 G 8rioridad asignada al evento
ca%en'ar G ,ombre del calendario asociado con el evento
$i' G numero Fnico que identifica el evento
start G .echa y hora de inicio de un evento
en' G .echa y hora en que termina el evento
($s1state G *l estado configurado para el evento
!on estos datos0 se pueden construir diferentes bloques de dialplan2 -n e$emplo es configurar un
evento de !onferencia y en la casilla lugar indicar un numero de cuarto de conferencia2
*n +oogle calendar sera:
::@
i8arece complicadoj La verdad no2 Lo importante es que cada persona que tiene o quiere participar a la
conferencia ponga en su calendario personal la misma informacin en los campos Ditulo y lugar2
*n en dialplan:
nano @etc@asterisk@e3tensions.con"
(e modifica este bloque:
KcalendarioL
exten =N calB(BNoOp!Llamada desde el calendario)
same =N nB/gi!googletts#agiB4EVC/L>N=/.5>R>N7!summar0)W#4Bes)
same =N nB/gi!googletts#agiB4a las EV7.87@?>!EVC/L>N=/.5>R>N7!start)WBB_OG_?)W#4Bes)
same =N nB:ait!()
same =N nB-la0bac+!goodb0e)
same =N nBOangup
8ara que quede:
KcalendarioL
exten =N calB(BNoOp!Llamada desde el calendario)
same =N nB3otoif!EKEV@N6LL!EVC/L>N=/.5>R>N7!location)W)W = 0 ^ 4E
VC/L>N=/.5>R>N7!summar0)W4 = 4Conferencia4LYconf)
same =N nB/gi!googletts#agiB4EVC/L>N=/.5>R>N7!summar0)W a las EV7.87@?>!EVC/L>N=/.5>R>N7!start)WBB_OG_?)W#4Bes)
same =N nB:ait!()
same =N nB-la0bac+!goodb0e)
same =N nBOangup
same =N n!conf)B/gi!googletts#agiB4EVC/L>N=/.5>R>N7!description)W4Bes)
same =N nBConfbridge!EVC/L>N=/.5>R>N7!location)WBc?!default))
same =N nBOangup
*n la linea dos se utiliSa la funcin I(,-LL que permite averiguar si una variable est# vaca2 (i la
variable est# vaca devuelve 1 sino >2 La lgica de la linea funciona de la siguiente manera: (i la
::?
variable `aCA=-#,A6;-V-#T8%ocation:b no est# vaca MyN Oel car#cter VP la variable \
fCA=-#,A6;-V-#T8s$99ar1: contiene el valor Con"erencia ir a la etiqueta conf sino continuar
con la linea que sigue2
*n la linea con la etiqueta conf se utiliSa el %+I de texto a voS de +oogle y se le anuncia a la extensin
la descripcin del evento2
*n la linea siguiente se utiliSa la aplicacin !onfBridge para crear una conferencia din#mica cuyo
numero es el que aparece en el campo lugar OlocationP del calendario y se enva la extensin a esa
conferencia2 (e profundiSar# el tema de las conferencias en el !apitulo H92
10.4 CA=-#,A6;P>-6V 1 CA=-#,A6;P>-6V;6-S>=T
*sta dos funciones sirven para hacer consultas en los calendarios configurados en %steris& y sacar los
datos de inter5s2 8ara saber que datos se pueden extraer0 desde la consola de %steris&:
asterisk .rvvvvvvvvvvvvvv
!LI" core s2ow "$nction CA=-#,A6;P>-6V;6-S>=T
getnum G numero de eventos que tendr#n lugar en el rango de tiempo indicado en la consulta
Oen este caso 1A> minutosP
summary G Ditulo del evento
description G /escripcin del evento
organiSer G LrganiSador del evento
location G Lugar del evento
categories G !ategora del evento
priority G 8rioridad del evento
calendar ^ ,ombre del calendario
uid G ,umero que identifica univocamente el evento
start G 6ora de inicio del evento
end G 6ora en que termina el evento
busystate G *l estado del calendario
La sintaxis de la funcin es:
C/L>N=/.5`6>.25.>6L7!idBfieldKBentr0L)
id G el valor obtenido con la funcin !%L*,/%;C)-*;Q
field G *l campos que se quiere extraer de un determinado evento
entry G en el caso que la funcin !%L*,/%;C)-*;Q haya almacenado en su id m#s de un
evento0 con esta opcin se define a que evento hace referencia el campo que se quiere extraer
8ara ver como funcionan0 se crean dos nuevos eventos:
::B
(e averigua que los eventos aparecen en %steris&:
8erfecto[ %hora se crea el dialplan para hacer una consulta al calendario:
nano @etc@asterisk@e3tensions.con"
*n el contexto internas se aade este bloque:
exten =N 5(B(BNoop!Consulta en el calendario)
same =N nBet!fin=EKEV>-OCOWX(0'00L)
same =N nBet!id=EVC/L>N=/.5`6>.2!campusvo,tovoiceBEV>-OCOWBEVfinW)W)
same =N nBet!numeve=EVC/L>N=/.5`6>.25.>6L7!EVidWBgetnum)W)
same =N nBet!num=()
same =N nB:*ile!EKEVnumeveW N 0L)
same =N nB/gi!googletts#agiB4EVC/L>N=/.5`6>.25.>6L7!EVidWBsummar0BEVnumW)W4Bes)
same =N nB/gi!googletts#agiB4a las EV7.87@?>!EVC/L>N=/.5`6>.25.>6L7!EVidWBstartBEVnumW)WBB_OG_?)W4Bes)
same =N nBet!numeve=EKEVnumeveW&(L)
same =N nBet!num=EKEVnumWX(L)
::<
same =N nB>nd1*ile
same =N nBOangup
Linea : G !omo en la configuracin de los calendarios se ha puesto como limite de consulta los
1A> minutos0 se aade a la variable ef*8L!6g el valor 1>A>> segundos que corresponden a
1A> minutos2 ,o se puede hacer consultas m#s all# de este tiempo sin cambiar la configuracin
del par#metro timeframe en calendar2conf
Linea 3 G se asigna a la variable id el resultado de la consulta en el calendario
campusvoStovoice indicando la ora de inicio y la hora final de la consulta0 es decir los eventos
que tendr#n lugar en lo prximos 1A> minutos
Linea @ G se asigna a la variable numeve el numero de eventos que tendr#n lugar en los
prximos 1A> minutos
Linea ? G se asigna a la variable num el valor 1
Linea B G la aplicacin D2i%e se usa para crear un ciclo y este ciclo se e$ecutar# hasta que la
variable `an$9eveb sea mayor que >
Linea < G con el %+I del DD( de +oogle se anuncia el titulo del evento OsummaryP de la entrada
cuyo numero es el contenido en la variable `an$9b
Linea A I con el %+I del DD( de +oogle se anuncia la hora OstartP de la entrada cuyo numero es
el contenido en la variable `an$9b
Linea E G se asigna a la variable `an$9eveb el valor de la misma variable menos 12 *$emplo: si
el calendario contiene dos eventos en los prximos 1A> minutos0 la variable `an$9eveb
contiene el valor :2 /espu5s de esta linea contendr# el valor 1
Linea 1> G (e asigna a la variable `an$9b el valor de la variable `an$9b h 12 !omo
inicialmente la variable contena el valor 10 despu5s de esta linea contendr# el valor :
Llinea 11 G !on la aplicacin -n'D2i%e se cierra el ciclo y el dialplan vuelve a la linea con la
aplicacin D2i%e2 %hora0 como la variable `an$9eveb es todava mayor que >0 el ciclo se repite
y se leer# el titulo y la hora del segundo evento2

La siguiente veS que se vuelve a la aplicacin =hile0 la variable `an$9eveb contendr# el valor cero
pues se saldr# del ciclo M=hile I *nd4hileN y se e$ecutar# la linea que sigue la aplicacin *nd=hile0 es
decir sa9e QK nECang$
/e esta forma si llegando a la oficina0 se quiere conocer los eventos programados en las prximas 3
horas0 basta marcar la extensin ?12 !laramente cada persona de la empresa puede tener su calendario
personal2
10.L CA=-#,A6;D6+T-
!on la funcin !%L*,/%;C=;ID*0 es posible crear nuevos eventos en el calendario desde %steris&2
*n este e$emplo se mostrar# como grabar las llamadas salientes con el proveedor Kustvoip en un
calendario2 8ara este e$emplo se utiliSar# un nuevo calendario2
/esde la pagina de administracin del calendario principal0 se entra en la pagina de configuracin y se
crea un nuevo calendario:
::A
(e presiona el botn M!rear un calendario nuevoN y en la nueva pagina se rellenas los campos:
(e concluye la creacin presionando el botn M!rear calendarioN2 (e entra en la configuracin del
nuevo calendario y se anota el siguiente dato:
!on el valor del I/ del nuevo calendario se configura %steris&:
nano @etc@asterisk@ca%en'ar.con"
al final del archivo se aade:
KllamadasL
t0pe=caldav
url=*ttpsG//111#google#com/calendar/dav/g+cb$avi+"5*ne$tg(0d"0sf(+Sgroup#calendar#google#com/events/
::E
user=fulanoSgmail#com
secret=pass1ord
refres*=(0
timeframe=('0
autoreminder=(0
c*annel=@-/(000
context=calendario
extension=cal
1aittime=;5
+M0O6TA#T-) 0ersona%izar %os 'atos 'e %a etiB$eta inicia%E e% ar!9etro $r%E e%
ar!9etro $ser 1 e% ar!9etro secret con %os 'atos 'e s$ c$enta 4oog%e.
(e guardan los cambios y se entra en la consola de %steris&:
asterisk .rvvvvvvvvvvvvvvvvvvv
(e recarga el modulo:
!LI" 9o'$%e re%oa' res;ca%en'ar.so
(i no aparecen errores y/o advertencias0 todo debera estar bien configurado2 !on el comando:
!LI" ca%en'ar s2ow ca%en'ars
Calendar (y#e 2tatus
-------- ---- ------
ca$#usvoTtovoice ical free
lla$adas caldav free
(e puede comprobar que efectivamente los dos calendarios est#n conectados2
Los datos de las llamadas que se guardar#n en el calendario son:
extensin que ha iniciado la llamada
I8 de la extensin
numero marcado
.echa de la llamada
8ara implementar est# solucin se abre el dialplan:
nano @etc@asterisk@e3tensions.con"
se modifica este bloque:
:3>
KinternacioL
exten =N 500Q#B(BNoOp
same =N nBet!3.O6-!voip)=<ustvoip)
same =N nBet!3.O6-!salida)=EVC/LL>.@=!num)W)
same =N nBet!trun+sal=EV3.O6-5CO6N7!<ustvoipSvoip)W)
same =N nBet!extsal=EV3.O6-5CO6N7!EVC/LL>.@=!num)WSsalida)W)
same =N nBNoOp!Oa0 EVextsalW llamadas desde la extension EVC/LL>.@=!num)W 0 EVtrun+salW con
el proveedor Pustvoip)
same =N nB3otoif!EKEVextsalW N " ] EVtrun+salW N "LYbus0)
same =N nB=ial!@-/<ustvoip/EV>Q7>NW)
same =N nBOangup
same =N n!bus0)B-la0bac+!all&outgoing&lines&unavailable)
same =N nBOangup
8ara que quede:
KinternacioL
exten =N 500Q#B(BNoOp
same =N nBet!C/L>N=/.5:.@7>!llamadasBsummar0BdescriptionBlocationBstart)=Llamada de E
VC/LL>.@=!num)W a EV>Q7>NWBLlamada desde la extension EVC/LL>.@=!num)W al numero E
V>Q7>NWB@- = EVCO/NN>L!peerip)WBEV>-OCOW)
same =N nBet!3.O6-!voip)=<ustvoip)
same =N nBet!3.O6-!salida)=EVC/LL>.@=!num)W)
same =N nBet!trun+sal=EV3.O6-5CO6N7!<ustvoipSvoip)W)
same =N nBet!extsal=EV3.O6-5CO6N7!EVC/LL>.@=!num)WSsalida)W)
same =N nBNoOp!Oa0 EVextsalW llamadas desde la extension EVC/LL>.@=!num)W 0 EVtrun+salW con
el proveedor Pustvoip)
same =N nB3otoif!EKEVextsalW N " ] EVtrun+salW N "LYbus0)
same =N nB=ial!@-/<ustvoip/EV>Q7>NW)
same =N nBOangup
same =N n!bus0)B-la0bac+!all&outgoing&lines&unavailable)
same =N nBOangup
(e ha aadido la linea : Oen amarilloP2 *l contenido de esa linea tiene que quedar en la mismo rengln2
!on esa linea se le dice a %steris& que guarde en el calendario MllamadasN los campos:
summary
description
location
start
*n la segunda parte de la linea se le asigna a cada campo un valor y m#s en detalle:
(ummary = Llamada de `aCA==-6+,8n$9:b a `a-XT-#b
/escription Q Llamada desde la extension `aCA==-6+,8n$9:b al numero `a-XT-#b
Location = I8 = `aCCA##-=8eeri:b
:31
(tart = `a-0OCCb
Las variables presentes:
`aCA==-6+,8n$9:b / !ontiene el numero de la extensin que ha llamado
`a-XT-#b / !ontiene el numero marcado
`aCCA##-=8eeri:b Q !ontiene la I8 de donde la extensin ha iniciado la llamada
`a-0OCCb Q !ontiene la fecha de inicio de la llamada en formato *8L!6 que es el requerido
por +oogle !alendar
*l resultado en +oogle !alendar ser#:
(i tenemos sincroniSado el calendario en un sistema %ndroid:
!laramente este es e$emplo muy sencillo2 (e puede elaborar m#s para sacar m#s datos de la llamada2
:3:
Ltro e$emplo para utiliSar esta funcin podra ser programar una conferencia a trav5s de un I9;
indicando las extensiones que deben participar y guardar los datos en el !alendario2
10.6 -nviar %as noti"icaciones 'e %os ca%en'arios a nZ9eros "i5os@ce%$%ares
*n la configuracin que se ha visto hasta el momento0 es posible asociar el calendario a una extensin y
llamar la extensin configurada para notificarle el comienSo de un evento2 -na forma m#s elaborada de
configurar el calendario y de consecuencia el dialplan0 es modificar el !%LL*;I/ antes de marcar a la
extensin y en el caso que no conteste0 desviar la llamada a un numero fi$o/celular2 8ara este tipo de
configuracin se utiliSar# el chanClocal2
8rimero se modifica la configuracin del calendario:
nano @etc@asterisk@ca%en'ar.con"
(e modifica esta linea:
c2anne%QS+0@1000
para que quede:
c2anne%Q=oca%@6L00*internas
(e guardan los cambios2 /e esta forma cuando se acerca un evento y %steris& enva la notificacin0
llamar# el canal Local0 extensin B?>>0 contexto internasU esa extensin hay que crearla en el dialplan:
nano @etc@asterisk@e3tensions.con"
*n el contesto internas se aaden las siguientes lineas:
exten =N $500B(Bet!C/LL>.@=!name)=Calendario)
same =N nBet!C/LL>.@=!num)=CampusRo,7oRoice)
same =N nB=ial!@-/(000B(5)
same =N nB3otoif!EKEV=@/L7/76W = /N:>.)LYcontestada)
same =N nB=ial!@-/<ustvoip/005CQQQQQQQQQQ)
same =N nB*angup
same =N n!contestada)BOangup
*n la primera linea se asigna al la variable !%LL*;I/OnameP la palabra !alendario
*n la segunda linea se asigna a la variable !%LL*;I/OnumP el nombre del calendario Oen este
caso !ampus9oSDo9oiceP
*n la tercera linea se marca a la extensin 1>>> por 1? segundos
(i la extensin contesta O+otoI. verdaderoP0 se va a la etiqueta OcontestadaP y se termina la
llamada
(i la extensin no contesta dentro de 1? segundos0 se marca al un numero fi$o o celular2
:33
(e guardan los cambios y se crea un nuevo evento en el calendario para probar la configuracin2 (e
reinicia %steris&:
service asterisk restart
(e espera la llamada del calendario2 8rimero timbrar# la extensin 1>>>:
(i no se contesta dentro de 1? segundos0 la llamada se enviar# al numero fi$o/celular configurado:
*n este caso el !%LL*;I/ no es el que se ha configurado en el dialplan ya que su envo/recepcin
depende del 8roveedor 9oI8 utiliSado2
:3@
Cait$%o X+
CCSS 8Ca%% Co9%etion S$%e9entar1 S1ste9: / 6e%%a9a'a
*l !!(( es una nueva funcionalidad de %steris& 12A2H que permite solicitar el servicio de rellamada
cuando el llamado no ha contestado y/o su extensin se encuentra ocupada2 *l sistema se basa en el
Internet /raft MdraftIietfIblissIcallIcompletionI>@N2 -n Internet /raft es una propuesta de
estandariSacin presentada a la I*D. OInternet *ngineering Das& .orceP para que sea analiSada y0 si es
el caso0 aprobada y transformada en un ;.! O;equest for !ommentP0 es decir0 un est#ndar de hecho2
*n este caso los desarrolladores de %steris& han optado por implementar un sistema que todava no es
un est#ndar de hecho2 *sto explica porque muchas veces no hay interoperabilidad entre dispositivos
(I8 de distintos productores aunque0 supuestamente0 todos utiliSan el protocolo (I82
%ctualmente la Fnica 8BH que utiliSa este /raft es %steris& y no hay sofphone ni tel5fonos (I8 que lo
implementen2 *s por este motivo que al momento de configurar esta funcionalidad0 se podr# utiliSar su
configuracin nativa solamente entre servidores %steris& Odesde la versin 12A2HP2 8ara su utiliSo entre
%steris& y los tel5fonos (I8 o softphone hay que optar por su configuracin gen5rica que realmente no
se basa en el /raft mencionado0 sino en un subIsistema que se apoya a la funcin /*9I!*C(D%D*2
i!mo funciona el sistemaj
*l sistema aplica a llamadas no contestadas !!,; O!all !ompletion on ,o ;esponseP o cuando la
extensin llamada se encuentra ocupada !!B; O!all !ompletion on Busy (ubscriberP y solamente
para canales (I82 (i para solicitar la rellamada se utiliSa el agente gen5rico0 habr# que utiliSar la
aplicacin !all!ompletion2 (i se utiliSa el agente nativo0 el mismo productor del dispositivo que
implementa el /raft0 indicar# como activarla2 ,ormalmente es a trav5s de una tecla del tel5fono o
presionando un botn ya programado para esta funcin2
-n e$emplo2 La extensin 1>>> llama la extensin 1>>12 (i la extensin 1>>1 no contesta0 la extensin
1>>> tendr# un tiempo predefinido para solicitar una rellamada2 La solicitud se efectFa utiliSando la
aplicacin !all!ompletion en el dialplan2 -na veS solicitada la rellamada0 se activar# un temporiSador
que definir# por cuanto tiempo la solicitud quedar# activa2 (i dentro de este tiempo la extensin 1>>1
efectFa una llamada0 %steris& la considerar# nuevamente activa y en cuanto termine la llamada0
marcar# primero la extensin 1>>> y luego la extensin 1>>12 (i la rellamada tiene 5xito0 la solicitud
sera eliminada2 (i la rellamada no tiene 5xito Ola extensin 1>>1 no contesta nuevamente o est#
hablandoP0 habr# que solicitar una nueva rellamada2 *n cualquier momento se puede anular una
solicitud de rellamada utiliSando en el dialplan la aplicacin !all!ompletion!ancel2
11.1 Con"ig$raci&n 'e% CCSS
i!mo se configura el sistema de rellamada en %steris&j
8rimero hay que configurar el archivo ccss2conf2 *n este archivo se define un Fnico par#metro que es el
numero m#ximo de solicitudes que pueden estar activas en la 8BH2 Los dem#s datos que se encuentran
el el archivo son para la configuracin de las extensiones2
(e renombra el archivo predefinido:
9v @etc@asterisk@ccss.con" @etc@asterisk@ccss.con".o%'
(e crea uno nuevo:
nano @etc@asterisk@ccss.con"
y copian las lineas que siguen:
KgeneralK
cc5max5reHuest="0
/e esta forma se limita a veinte el numero m#ximo de solicitudes activas en el sistema2
(e guardan los cambios2
%hora la parte dedicada a las extensiones0 donde se pueden configurar una serie de par#metros2 Los
par#metros que no se configuran0 tomar#n como valor el predefinido:
0ar!9etro ,escrici&n
ccCofferCtimer Diempo m#ximo0 en segundos0 para solicitar una
rellamada cuando una llamada no ha tenido 5xito2
9alor 20
ccbsCavailableCtimer Diempo de vida0 en segundos0 de una solicitud de
rellamada cuando le extensin llamada estaba
ocupada2 9alor 4800
ccnrCavailableCtimer Diempo de vida0 en segundos0 de una solicitud de
rellamada cuando la extensin llamada no ha
contestado2 9alor J200
ccCrecallCtimer !uando la extensin que ha solicitado la
rellamada0 recibe la llamada del sistema tendr# el
numero de segundos indicados en este par#metro
para contestar2 (i no lo hace la rellamada ser#
anulada2 9alor: 20
ccCagentCpolicy *ste par#metro describe el tipo de
comportamiento de %steris& cuando se
comunicar# con el llamante para una rellamada2
8uede ser:
never: deshabilita la posibilidad de
solicitar una rellamada para el llamante
generic: cuando no se utiliSa el /raft sino
el subIsistema basado en el
:3<
/*9I!*C(D%D*
native: cuando se utiliSa el /raft para el
sistema de rellamada Oel tel5fono del
llamante lo soportaP
ccCmonitorCpolicy *ste par#metro describe el tipo de
comportamiento de %steris& cuando se
comunicar# con el llamado para una rellamada2
8uede ser:
never: deshabilita la posibilidad de recibir
una rellamada
generic: activar# el monitoreo del llamado
utiliSando el subIsistema basado en el
/*9I!*C(D%D*
native: cuando se utiliSa el /raft para el
sistema de rellamada Oel tel5fono del
llamado lo soportaP
al4ays: cuando no se sabe si el tel5fono
soporta el /raft2 /e esta forma %steris&
intentar# utiliSar el sistema nativo y si no
funciona0 el gen5rico
ccCmaxCagents Limita el numero de rellamadas activas para el
llamante2 (i ccCagentCpolicy=generic0 este valor
no ser# tomado en consideracin2 9alor: L
ccCmaxCmonitors = ? Limita el numero de rellamadas que un dispositivo
puede aceptar2 9alor: L
8ara poder hacer una prueba se configurar# en las extensiones 1>>>01>>1 y 1>>: solamente dos
par#metros:
ccCagentCpolicy=generic
ccCmonitorCpolicy=generic
(e abre el archivo sip2conf
nano @etc@asterisk@si.con"
y al final del bloque de configuracin de cada extensin se pone:
cc5agent5polic0=generic
cc5monitor5polic0=generic
(e guardan los cambios2 !omo se va a utiliSar el sistema gen5rico0 en el dialplan hay que configurar
una extensin para la aplicacin !all!ompletion y otra para la aplicacin !all!ompletion!ancel
:3A
nano @etc@asterisk@e3tensions.con"
en el contexto internas se aaden las siguientes lineas:
exten =N Z%0B(BCallCompletion.eHuest
same =N nB/gi!googletts#agiB4.ellamada activada4Bes)
same =N nBOangup
exten =N Z%(B(BCallCompletionCancel
same =N nB/gi!googletts#agiB4.ellamada anulada4Bes)
same =N nBOangup
(e guardan los cambios y se recarga toda la configuracin de %steris&:
service asterisk re%oa'
11.2 CCSS 1e 0r$e(a
/esde la extensin 1>>> se llama la extensin 1>>12 !uando esta est5 timbrando0 se rechaSa la llamada:
% partir de ese momento0 la extensin 1>>> tendr# :> segundos para solicitar la rellamada2 (e puede
ver0 desde la consola de %steris&0 que la rellamada ha sido ofrecida por la extensin 1>>>:
!LI" cc reort stat$s
%hora para solicitarla desde la extensin 1>>> se marca ^3>2
!LI" cc reort stat$s
:3E
(iendo el tipo de solicitud !!,;0 tendr# un tiempo de vigencia de <:>> segundo Odos horasP0 como
indicado en ccnrCavailableCtimer como valor predefinido2 8ara que la rellamada se efectFe0 el sistema
esperar# que la extensin 1>>1 haga una llamada y de esta forma saber que ya est# activa nuevamente2
8ara averiguarlo0 desde la extensin 1>>1 se marca 1?> Otest de echoP y despu5s de unos segundos se
cuelga2 !asi en seguida entrar# una llamada a la extensin 1>>>:
!omo se puede ver el !allerI/ es la misma extensin 1>>> y esto indica que se trata de una rellamada2
!uando la extensin 1>>> contesta se pueden presentar dos escenarios:
la extensin 1>>1 no contesta nuevamente2 La rellamada corriente se anula y la extensin 1>>1
ofrece nuevamente a la extensin 1>>> la posibilidad de solicitar una rellamada2
la extensin 1>>1 contesta2 La rellamada solicitada se anula2
La extensin 1>>> tiene :> segundos para contestar la llamada entrante Ovalor predefinido del
par#metro ccCrecallCtimerP2 (i no lo hace0 la rellamada se considerar# terminada2
11.3 CCSS 2e 0r$e(a
/esde la extensin 1>>> se llama la extensin 1>>12 La extensin 1>>1 rechaSa la llamada2 La
extensin 1>>> solicita la rellamada marcando ^3>2 /espu5s de unos minutos0 decide que ya no la
necesita2 'arcando ^31 la anula2 Las distintas secuencias desde la consola de %steris&:
:@>
(i la solicitud de !! es anulada0 no se puede solicitar nuevamente2
11.4 CCSS 3e 0r$e(a
/esde la extensin 1>>> se llama la extensin 1>>12 La extensin 1>>1 contesta la llamada2 !uando la
conversacin termine0 la extensin 1>>>0 a pesar que la extensin 1>>1 ha contestado0 podr# solicitar
una rellamada2 *ste tipo de comportamiento tiene su lgica ya que el hecho que la llamada ha sido
contestada0 no significa que el llamante ha podido hablar con el llamado Ocomo en este casoP2 *sto
porque si en el dialplan se configura que si la extensin 1>>1 no contesta dentro de un tiempo0 la
llamada se pasa a un buSn de voS o a un I9;0 realmente la extensin 1>>> no ha podido hablar con la
extensin 1>>12 (i se mira la consola0 efectivamente la rellamada se est# ofreciendo:
:@1
Conse5os)
12 *l sistema de rellamada consuma bastante recursos del sistema2 8ara limitar este consumo es
buena practica:
configurar el par#metro ccCmaxCrequests con un valor ba$o
configurar el par#metro ccCofferCtime con un valor ba$o
*n el sip2conf0 por cada extensin0 configurar el par#metro ccCagentCpolicy con never y
activar el agente desde el dialplan utiliSando la funcin !%LL!L'8L*D*DIL,2 8ara
el bloque de las llamadas entre extensiones seria algo como:
exten =N 5(00K0&"LB(B?acro!disponible)
same =N nB?acro!calendario)
same =N nBet!C/LLCO?-L>7@ON!cc5agent5polic0)=generic)
same =N nB=ial!@-/EV>Q7>NWB;5B*O+It71:xQ)
same =N nBOangup
:2 la rellamada nativa funciona solamente si el paquete libxml:Idevel ha sido instalado en el
servidor Linux antes de compilar %steris&2 *sto porque el /raft se basa en un sistema de
(-B(!;IB*0 ,LDI.Q y 8-BLI(6 donde el cuerpo del paquete (I8 contiene la informacin
en ese formato OH'LP2
:@:
Cait$%o X++
Asterisk 6ea%ti9e
%;% ODhe %steris& ;ealtime %rchitectureP es un m5todo para almacenar los archivos de configuracin
de %steris& y/o ob$etos en una base de datos2 *xisten dos tipos de ;ealtime:
*st#tico
/in#mico
12.1 6ea%ti9e est!tico
!on el ;ealtime est#tico es posible guardar los archivos de configuracin de %steris& en una base de
datos2 (e dice est#tico porque cuando se efectFen cambios en la base de datos0 hay que recargar la
configuracin de %steris&2 (i las configuraciones se guardan en la base de datos0 ya no se podr#n
utiliSar los archivos de texto0 es decir que si por e$emplo se guarda la configuracin del dialplan en
;ealtime est#tico0 la 8BH no leer# el archivo extensions2conf2 *l archivo donde se configura el
;ealtime est#tico es extconfig2conf y la sintaxis es:
file.conf 7R driverDdata'ase0Dta'le4
file2conf: archivo de configuracin que se quiere guardar en la base de datos
driver: que motor de base de datos se va a utiliSar O'y()L0 L/B!0 8ostgres0 ()Lite3P
database: el nombre de la base de datos
table: el nombre de la tabla en la base de datos
Los Fnicos archivos de configuracin que no se pueden guardar con el ;ealtime est#tico son:
asteris&2conf
logger2conf
extconfig2conf
Ltros tres archivos se pueden guardar en la base de datos solamente si el modulo del motor que se va a
utiliSar se carga en el modules2conf antes de los dem#s mdulos2 *sto se hace con la declaracin
preload2 !omo se va a utiliSar L/B!0 la modifica que hay que hacer es:
nano @etc@asterisk@9o'$%es.con"
se buscan estas dos lineas:
Jpreload =N res5odbc#so
Jpreload =N res5config5odbc#so
y se modifican para que queden:
preload =N res5odbc#so
preload =N res5config5odbc#so
Los dos mdulos Oque se utiliSan para el ;ealtime con L/B!P0 se cargar#n antes de los dem#s mdulos
y de esta formas se podr#n guardar en ;ealtime tambi5n estos archivos:
manager2conf
cdr2conf
rtp2conf
i!ual es el procedimiento para configurar el ;ealtime est#tico en %steris& con L/B!j
12 (e crea una nueva base de datos
:2 (e crea la tabla para el ;ealtime est#tico
32 (e configurar el conector L/B!
@2 (e configura el archivo de configuracin de %steris& resCodbc2conf
?2 (e configura el archivo extconfig2conf
9isto gr#ficamente sera:
(e inicia creado una nueva base de datos:
91sB% .$ root .sesa9o
mysql" create 'ata(ase asteriskS
(e otorgan los permisos de acceso a la base de datos creada al usuario asteris&0 desde local:
:@?
mysql" 46A#T A== 06+V+=-4-S O# asterisk.T TO UasteriskU*U%oca%2ostU +,-#T+7+-,
<V Usesa9oUS
desde remoto:
mysql" 46A#T A== 06+V+=-4-S O# asterisk.T TO UasteriskU*UWU +,-#T+7+-, <V
Usesa9oUS
se crea la tabla para el ;ealtime est#tico:
mysql" $se asterisk
mysql" C6-AT- TA<=- fast;con"igf 8
fi'f int811: #OT #>== a$to;incre9entE
fcat;9etricf int811: #OT #>== 'e"a$%t U0UE
fvar;9etricf int811: #OT #>== 'e"a$%t U0UE
f"i%ena9ef varc2ar8128: #OT #>== 'e"a$%t UUE
fcategor1f varc2ar8128: #OT #>== 'e"a$%t U'e"a$%tUE
fvar;na9ef varc2ar8128: #OT #>== 'e"a$%t UUE
fvar;va%f varc2ar8128: #OT #>== 'e"a$%t UUE
fco99ente'f int811: #OT #>== 'e"a$%t U0UE
06+MA6V H-V 8fi'f:E
H-V f"i%ena9e;co99entf 8f"i%ena9efEfco99ente'f:
:S
*l nombre de la tabla es totalmente arbitrario y se puede personaliSar para volverlo m#s amigable2 -na
explicacin de los par#metros que aparecen en la tabla:
I/ G es un numero progresivo que se crea autom#ticamente
catCmetric G el peso de la categora o bloque dentro del archivo2 -n valor ba$o significa que la
categora aparecer# m#s arriba en el archivo de configuracin
varCmetric G el peso de un ob$eto o par#metro dentro de la categora2 -n valor ba$o significa
que el ob$eto aparecer# m#s arriba en la categora
filename G el nombre del archivo de configuracin de %steris& que se quiere guardar en la base
de datos
category G la categora o bloque del archivo de configuracin
varCname G el nombre del ob$eto o del par#metro que se est# configurando
varCval G el valor del ob$eto o par#metro
commented G si es cualquier valor diferente a cero0 la entrada en la base de datos aparecer#
como comentada2
8ara entender me$or como funciona0 se guardar# el archivo musiconhold2conf en ;ealtime est#tico2
mysql" +#S-6T +#TO ast;con"ig 8cat;9etricEvar;9etricE"i%ena9eEcategor1Evar;na9eEvar;va%:
VA=>-S 8U0UEU0UEU9$sicon2o%'.con"UEU'e"a$%tUEU9o'eUEU"i%esU:S
:@B
!on esta primera linea se crea la clase default y se define que el modo es files2
mysql" +#S-6T +#TO ast;con"ig 8cat;9etricEvar;9etricE"i%ena9eEcategor1Evar;na9eEvar;va%:
VA=>-S 8U0UEU1UEU9$sicon2o%'.con"UEU'e"a$%tUEU'irector1UEU@var@%i(@asterisk@9o2U:S
!on esta segunda linea se define que la carpeta que contiene los archivos audio para la clase default es
/var/lib/asteris&/moh
91sB%K +#S-6T +#TO ast;con"ig 8cat;9etricEvar;9etricE"i%ena9eEcategor1Evar;na9eEvar;va%:
VA=>-S 8U0UEU2UEU9$sicon2o%'.con"UEU'e"a$%tUEUran'o9UEU1esU:S
*n la ultima linea se define que los archivos audio de la mFsica de espera de la clase default se
reproducir#n aleatoriamente2 (e repiten las tres lineas para la mFsica de espera '83 Ocomo se haba
configurado en el p#rrafo :2?P:
mysql" +#S-6T +#TO ast;con"ig 8cat;9etricEvar;9etricE"i%ena9eEcategor1Evar;na9eEvar;va%:
VA=>-S 8U1UEU0UEU9$sicon2o%'.con"UEU93UEU9o'eUEU"i%esU:S
!omo se puede notar en esta primera linea el catCmetric es 1 e indica que estamos creando un segundo
bloque en el archivo de configuracin2
mysql" +#S-6T +#TO ast;con"ig 8cat;9etricEvar;9etricE"i%ena9eEcategor1Evar;na9eEvar;va%:
VA=>-S 8U1UEU1UEU9$sicon2o%'.con"UEU93UEU'irector1UEU@var@%i(@asterisk@9o293U:S
!on esta segunda linea se define que la carpeta que contiene los archivos audio para la clase mp3 es
/var/lib/asteris&/mohmp3
mysql" +#S-6T +#TO ast;con"ig 8cat;9etricEvar;9etricE"i%ena9eEcategor1Evar;na9eEvar;va%:
VA=>-S 8U1UEU2UEU9$sicon2o%'.con"UEU93UEUran'o9UEU1esU:S
*n la ultima linea se define que los archivos audio de la mFsica de espera de la clase mp3 se
reproducir#n aleatoriamente2
(e sale del cliente 'y()L:
mysql" B$it
!reada la base de datos y la tabla0 se configura el conector L/B!2 *sto se hace en dos archivos de
configuracin:
odbcinst2ini
odbc2ini
*n el primero se configuran las conexiones L/B! c libreras base de datos2 *n el segundo se
configuran las base de datos2 8ara iniciar se borra el archivo predefinido odbcinst2ini
:@<
r9 @etc@o'(cinst.ini
r$" re$ove re%ular file :/etc/od'cinst.ini.; y
se crea uno nuevo:
nano @etc@o'(cinst.ini
y para L/B! c 'y()L se ponen las siguientes lineas:
K?0`LL
=escription = O=FC para ?0`L
=river = /usr/lib/libm0odbc5#so
etup = /usr/lib/libodbcm0#so
8ile6sage = (
8ara una versin B@ bit de !entL( sera:
K?0`LL
=escription = O=FC para ?0`L
=river = /usr/lib$;/libm0odbc5#so
etup = /usr/lib$;/libodbcm0#so
8ile6sage = (
(e continua con odbc2ini
nano @etc@o'(c.ini
se copian las siguientes lineas que crean una conexin a la base de datos 'y()L asteris&:
Kasteris+L
=escription = ?0`L /steris+
=river = ?0`L
=atabase = asteris+
erver = local*ost
6ser = asteris+
-ass1ord = sesamo
-ort = %%0$
Option = %
(e guardan los cambios2 8ara probar la conexin entre L/B! y la base de datos asteris& se usa el
comando:
isB% asterisk asterisk sesa9o
asteris& G etiqueta que da inicio al bloque configurado en odbc2ini
:@A
asteris& G nombre del usuario que tiene acceso a la base de datos creada
sesamo G la contrasea del usuario asteris& creado en 'y()L
*l resultado:
/---------------------------------------/
5 ConnectedH 5
5 5
5 sMl-state$ent 5
5 hel# 0ta'lena$e4 5
5 Muit 5
5 5
/---------------------------------------/
La conexin entre L/B! y la base de datos 'y()L asteris& funciona perfectamente2 8ara salir:
()L" B$it
*l siguiente paso es configurar resCodbc2conf2 (e renombra el archivo predefinido y se crea uno nuevo:
9v @etc@asterisk@res;o'(c.con" @etc@asterisk@res;o'(c.con".o%'
nano @etc@asterisk@res;o'(c.con"
(e copian las siguientes lineas:
K>NRL
Kasteris+L
enabled =N 0es
dsn =N asteris+
username =N asteris+
pass1ord =N sesamo
pre&connect =N 0es
sanit0sHl =N select (
idlec*ec+ =N %$00
connect5timeout =N (0
La linea m#s importante es dsn =" asteris&2 *l valor asteris& es el que se ha configurado en el bloque
que se acaba de crear en el archivo odbc2ini
(e guardan los cambios y se modifica el ultimo archivo:
nano @etc@asterisk@e3tcon"ig.con"
despu5s de esta linea:
:@E
Jextensions#conf =N sHliteBasteris+Bast5config
se pone:
musicon*old#conf =N odbcBasteris+Bast5config
(e guardan los cambios2 *l nombre asteris& que aparece en la linea se refiere al nombre de la etiqueta
con que inicia la configuracin de la conexin en resCodbc2conf2 +r#ficamente:
%hora que se ha configurado la mFsica de espera en ;ealtime se renombra el archivo de texto:
9v @etc@asterisk@9$sicon2o%'.con" @etc@asterisk@9$sicon2o%'.con".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'(c s2ow a%%
<?LC ?2C 2ettin%s
-----------------
Ca$e" asterisk
?2C" asterisk
:?>
o'(c.ini
res;o'(c.con"
e3tcon"ig.con"
>ast connection atte$#t" 1+6+-12-31 1+"))"))
Fooled" Co
Connected" &es
se mira la configuracin de la mFsica de espera:
!LI" 9o2 s2ow c%asses
Class" default
9ode" files
?irectory" /var/li'/asterisk/$oh
Class" $#3
9ode" files
?irectory" /var/li'/asterisk/$oh$#3
8arece que todo est# bien2 /esde la extensin 1>>> se marca el numero :>> para probar la mFsica de
espera '83 en ;ealtime2
12.2 6ea%ti9e ,ina9ico
*l ;ealtime din#mico permite guardar ob$etos en una base de datos2 *stos ob$etos pueden ser:
extensiones0 colas de espera0 agentes0 buSones de voS0 etc2 !uando se hace un cambio en la base de
datos0 %steris& actualiSar# la configuracin en tiempo real2 % diferencia del ;ealtime est#tico0 los
ob$etos creados en la base de datos MconvivenN con aquellos presentes en los archivos de configuracin2
*$emplo: se pueden configurar las extensiones en el sip2conf y al mismo tiempo en la base de datos2 %l
recargar la configuracin (I80 funcionar#n ambas2
12.2.1 -3tensiones S+0 en 6ea%ti9e
La parte m#s complicada de la configuracin de (I8 en ;ealtime0 es la creacin de la tabla donde
almacenar los par#metros de las extensiones (I82 %lgunos campos de la tabla son opcionales mientras
otros son obligatorios2 -na tabla base debe contener por lo menos estos par#metro:
type
name
secret
context
host
ipaddr
port
regseconds
defaultuser
fulcontact
regserver
useragent
:?1
lastms
8ara crear una tabla m#s completa0 se puede tomar como referencia el resultado de este comando:
!LI" si s2ow eer 1000
Ca$e " 1)))
2ecret " S2etR
9?52ecret " SCot setR
1e$ote 2ecret" SCot setR
ConteBt " eBternas
2u'scr.Cont. " su'scri'e
>an%ua%e " es
3ccountcode " 1)))
393 fla%s " Enknown
(ransfer $ode" o#en
Callin%Fres " Fresentation 3llowedD Cot 2creened
Call%rou# " 1
Ficku#%rou# " 1
9<@ 2u%%est " default
9ail'oB " 1)))-default
P9 EBtension " asterisk
>ast9s%s2ent " )/)
Call li$it " 21*,*836*,
9aB forwards " )
?yna$ic " &es
Callerid " Wcallerid7NulanoW S1)))R
9aBCallL1 " 38* k'#s
EB#ire " 3*25
Ansecure " no
Norce r#ort " &es
3C> " Co
?irect9ed3C> " Co
(.38 su##ort " &es
(.38 EC $ode " NEC
(.38 9aB?t%r$" *))
?irect9edia " Co
Fro$isc1edir " Co
Eser7Fhone " Co
Pideo 2u##ort" &es
(eBt 2u##ort " Co
A%n 2?F ver " Co
(rust 1FA? " &es
2end 1FA? " &es
2u'scri#tions" &es
<verla# dial " &es
?(9N$ode " rfc2833
:?:
(i$er (1 " 5))
(i$er L " 32)))
(o@ost "
3ddr-RAF " 186.113.1*,.253"2385+
?efaddr-RAF " (null!
Fri$.(rans#. " E?F
3llowed.(rs# " E?F
?ef. Eserna$e" 1)))
2AF <#tions " re#laces re#lace
Codecs " )B811)8 (alaw5%,2+5%,225h263!
Codec <rder " (alaw"2)D%,22"2)D%,2+"2)!
3uto-Nra$in% " Co
2tatus " <= (132 $s!
Esera%ent "
1e%. Contact " si#"1)))-186.113.1*,.253"2385+]rinstance7d)11*+1de2)+'52c
Iualify NreM " 6)))) $s
2ess-(i$ers " 3cce#t
2ess-1efresh " uas
2ess-EB#ires " 18)) secs
9in-2ess " +) secs
1(F En%ine " asterisk
Farkin%lot "
Ese 1eason " &es
Encry#tion " Co
Dodos los par#metros que aparecen en la lista0 se pueden configurar en la tabla2
!LI" B$it
8ara empeSar se crea la tabla en la base de datos asteris&:
91sB% .$ root .sesa9o
mysql" $se asterisk
mysql" C.>/7> 7/FL> AsipextenA !
AnameA varc*ar!;0) NO7 N6LL default D DB
AsecretA varc*ar!;0) default N6LLB
Amd5secretA varc*ar!;0) default N6LLB
AremotesecretA varc*ar!;0) default N6LLB
At0peA varc*ar!(0) NO7 N6LL default D DB
AdefaultuserA varc*ar!;0) default N6LLB
AfromuserA varc*ar!;0) default N6LLB
AfromdomainA varc*ar!;0) default N6LLB
Aaut*A varc*ar!(0) default N6LLB
AmailboxA varc*ar!"0) default N6LLB
Asubscribem1iA varc*ar!(0) default N6LLB
:?3
AvmextenA varc*ar!"0) default N6LLB
AcalleridA varc*ar!;0) default N6LLB
Acid5numberA varc*ar!;0) default N6LLB
AcallingpresA varc*ar!"0) default N6LLB
AusereHp*oneA varc*ar!(0) default N6LLB
AlanguageA varc*ar!(0) default N6LLB
AcontextA varc*ar!;0) NO7 N6LL default D DB
AsubscribecontextA varc*ar!;0) default N6LLB
AamaflagsA varc*ar!"0) default N6LLB
AaccountcodeA varc*ar!"0) default N6LLB
Aallo1transferA varc*ar!"0) default N6LLB
AcallgroupA varc*ar!"0) default N6LLB
Apic+upgroupA varc*ar!"0) default N6LLB
AautoframingA varc*ar!(0) default N6LLB
Adisallo1A varc*ar!"0) default DallDB
Aallo1A varc*ar!"0) default N6LLB
AmaxcallbitrateA varc*ar!(5) default N6LLB
A*ostA varc*ar!;0) default Dd0namicDB
Aoutboundprox0A varc*ar!;0) default N6LLB
AipaddrA varc*ar!;5) NO7 N6LL default D DB
AdefaultipA varc*ar!"0) NO7 N6LL default D0#0#0#0DB
AportA int!$) NO7 N6LL default D0DB
AfullcontactA varc*ar!$0) default N6LLB
AinsecureA varc*ar!"0) default N6LLB
AHualif0A varc*ar!(5) default N6LLB
AregsecondsA int!(() NO7 N6LL default D0DB
AregextenA varc*ar!"0) default N6LLB
AregserverA varc*ar!"0) default N6LLB
ArtptimeoutA varc*ar!(5) default N6LLB
Artp*oldtimeoutA varc*ar!(5) default N6LLB
Artp+eepaliveA varc*ar!(5) default N6LLB
AlastmsA int!(() NO7 N6LL default D&(DB
AsetvarA varc*ar!"00) default N6LLB
AnatA varc*ar!%) NO7 N6LLB
AuseragentA varc*ar!;0) default N6LLB
A=irectmediaA varc*ar!%) default DnoDB
A=en0A varc*ar!%() default DDB
A-ermitA varc*ar!%() default N6LLB
AtransportA varc*ar!%) default DudpDB
Aencr0ptionA varc*ar!%) default DnoDB
-.@?/.2 I>2 !AnameA)B
I>2 A*ostA !A*ostABAportA)B
I>2 AipaddrA !AipaddrABAportA)
) J
Iuery <=D ) rows affected ().)1 sec!
(e sale del cliente 'y()L
:?@
mysql" B$it
Lye
*n este caso como la base de datos es la misma del ;ealtime est#tico0 no hay que modificar ni el
odbc2ini0 ni el resCodbc2ini2 *l Fnico archivo que hay que modificar es el extconfig2conf
nano @etc@asterisk@e3tcon"ig.con"
(e modifican esta linea:
Jsippeers =N odbcBasteris+
para que queden:
sippeers =N odbcBasteris+Bsipexten
(e guardan los cambios y se actualiSa la configuracin de %steris&:
@etc@init.'@asterisk re%oa'
%hora se puede configurar la primera extensin (I8 en ;ealtime2 8ara volver m#s sencillo el traba$o
con las bases de datos0 se pueden utiliSar distintos programas0 entre otros: 4ebmin e phpadmin2 *n este
caso se ha optado por =ebmin2 (e instalan unas dependencias Opara conexiones segurasP:
1$9 insta%% er%.#et.SS=ea1
(e descarga el paquete:
c' @$sr@src
wget 2tt)@@r'own%oa's.so$rce"orge.net@we(a'9in@we(9in.1.620.1.noarc2.r9
y se instala
r9 .iv2 we(9in.1.620.1.noarc2.r9
warnin%" we'$in-1.5,)-1.noarch.r#$" @eader P3 ?23 si%nature" C<=E&D key A? 11f63c51
Fre#arin%... 8888888888888888888888888888888888888888888 01))_4
<#eratin% syste$ is Cent<2 >inuB
1"we'$in 8888888888888888888888888888888888888888888 01))_4
Je'$in install co$#lete.
%ntes de entrar en la pagina de administracin de =ebmin hay que abrir el puerto 1>>>> en el fire4all:
nano @etc@s1scon"ig@ita(%es
/espu5s de esta linea:
:??
&/ @N-67 &p udp &m udp &&dport (0000G"0000 &< /CC>-7
se pone:
# :ebmin
&/ @N-67 &p tcp &m state &&state N>: &m tcp &&dport (0000 &< /CC>-7
(e guardan los cambios y se reinicia iptables:
service ita(%es restart
%hora desde un navegador =eb se pone la direccin para entrar en =ebmin2 (i es un servidor Linode
se pone el nombre de dominio del Linode sino la I8:
2tts)@@+0servi'or)10000
*n -sername se pone root y en 8ass4ord la contrasea del usuario root de Linux2 *n la pagina que
aparece0 en la derecha se escoge el menF M(erversN y luego M'y()L /atabase (erverN:
*n Login se pone root Oel usuario 'y()LP y como contrasea sesamo:
:?B
(e selecciona la base de datos %steris& y luego la tabla (ipexten2 %l fondo de la nueva pagina se
presiona el botn M9ie4 /ataN y luego M%dd ;o4N2 (e puede empeSar a crear la primera extensin en
;ealtime:
:?<
:?A
%l terminar se presiona el botn a(avea2 (i desde la consola de %steris& se escribe el comando:
asterisk .rvvvvvvvvvvvv
!LI" si s2ow eers
la nueva extensin configurada no aparecer#2 8ara ver la configuracin de la nueva extensin hay que
utiliSar el siguiente comando:
!LI" si s2ow eer 1004 %oa'
8ara la parte user:
!LI" si s2ow $ser 1004 %oa'
(e configura el HIlite para conectarse a la extensin 1>>@2 *n la consola de %steris& aparecer#:
(i se quiere ver el estado de la extensin en la consola de %steris& como si fuera configurada en el
archivo sip2conf y conocer su estado hay que modificar dos par#metros:
qualify=yes en la configuracin de la extensin
rtcachefriends=yes en la parte general del archivo sip2conf
+M0O6TA#T-) si se $ti%iza e% ar!9etro rtcac2e"rien'sQ1es %a con"ig$raci&n 'e %as
e3tensiones se cargaran en $na cac2e 'e 9e9oria 1 si se 9o'i"ica $n ara9etro 'e $na
e3tensi&n en %a (ase 'e 'atosE 2a(r! B$e act$a%izar %a con"ig$raci&n con C=+K si re%oa'
(e recarga la configuraci sip:
!LI" si re%oa'
y se mira si aparece:
!LI" si s2ow eers %ike 1004
*n la columna ;ealtime aparece M!ached ;DN que significa que la extensin est# configurada en
;ealtime y que se activ el par#metro rtcachefriends2 /esde la extensin 1>>@ se marca 1:3 para
probarla2
:?E
12.2.2 -3tensiones +AX en 6ea%ti9e
La configuracin de las extensiones I%H en realtime es bastante similar a la que se ha mostrado para
las extensiones (I82 8rimero hay que crear la tabla
91sB% .$ root .sesa9o
mysql" $se asterisk
mysql" C.>/7> 7/FL> AiaxextenA !
AnameA varc*ar!;0) NO7 N6LL default DDB
At0peA varc*ar!(0) NO7 N6LL default DfriendDB
AusernameA varc*ar!;0) N6LLB
AmailboxA varc*ar!;0) N6LLB
AsecretA varc*ar!;0) N6LLB
AdbsecretA varc*ar!;0) N6LLB
AcontextA varc*ar!;0) N6LLB
AregcontextA varc*ar!;0) N6LLB
A*ostA varc*ar!;0) N6LL default Dd0namicDB
AipaddrA varc*ar!"0) N6LLB
AportA int!5) N6LLB
AdefaultipA varc*ar!"0) N6LLB
AsourceaddressA varc*ar!"0) N6LLB
Amas+A varc*ar!"0) N6LLB
AregextenA varc*ar!;0) N6LLB
AregsecondsA int!(() N6LLB
AaccountcodeA varc*ar!"0) N6LLB
Amo*interpretA varc*ar!"0) N6LLB
Amo*suggestA varc*ar!"0) N6LLB
Ain+e0sA varc*ar!;0) N6LLB
Aout+e0A varc*ar!;0) N6LLB
AlanguageA varc*ar!(0) N6LLB
AcalleridA varc*ar!(00) N6LLB
Acid5numberA varc*ar!;0) N6LLB
AsendaniA varc*ar!(0) N6LLB
AfullnameA varc*ar!;0) N6LLB
Atrun+A varc*ar!%) N6LLB
Aaut*A varc*ar!"0) N6LLB
Amaxaut*reHA varc*ar!5) N6LLB
AreHuirecallto+enA varc*ar!;) N6LLB
Aencr0ptionA varc*ar!"0) N6LLB
AtransferA varc*ar!(0) N6LLB
A<itterbufferA varc*ar!%) N6LLB
Aforce<itterbufferA varc*ar!%) N6LLB
Adisallo1A varc*ar!;0) N6LLB
Aallo1A varc*ar!;0) N6LLB
:B>
Acodecpriorit0A varc*ar!;0) N6LLB
AHualif0A varc*ar!(0) N6LLB
AHualif0smoot*ingA varc*ar!(0) N6LLB
AHualif0freHo+A varc*ar!(0) N6LLB
AHualif0freHnoto+A varc*ar!(0) N6LLB
Atime,oneA varc*ar!"0) N6LLB
AadsiA varc*ar!(0) N6LLB
AamaflagsA varc*ar!"0) N6LLB
AsetvarA varc*ar!"00) N6LLB
-.@?/.2 I>2 !AnameA)B
@N=>Q name !nameB *ost)B
@N=>Q name" !nameB ipaddrB port)B
@N=>Q ipaddr !ipaddrB port)B
@N=>Q *ost !*ostB port)
)J
mysql" Huit
Luego se modifica el archivo extconfig2conf:
nano @etc@asterisk@e3tcon"ig.con"
se cambian estas dos lineas:
Sia3$sers QK o'(cEasterisk
Sia3eers QK o'(cEasterisk
para que queden:
ia3$sers QK o'(cEasteriskEia3e3ten
ia3eers QK o'(cEasteriskEia3e3ten
se guarda la configuracin y se crea una extensin I%H en ;ealtime desde =ebmin entrando en la tabla
iaxexten:
:B1
:B:
%l terminar se presiona el botn M(aveN2 !omo para el protocolo (I8 se cambia el par#metro
rtcachefriends en el iax2conf:
nano @etc@asterisk@ia3.con"
rtcac2e"rien'sQno
para que quede:
rtcac2e"rien'sQ1es
(e guarda la configuracin y se actualiSa %steris&:
service asterisk re%oa'
*n el cliente Joiper se configura el usuario mar&o: y se mira en la consola de %steris& si est#
registrado:
asterisk .rvvvvvvvvvvvvvv
!LI" ia32 s2ow eers
8ara terminar hay que modificar el dialplan para que se pueda marcar a la extensiones creadas en
;ealtime:
:B3
!LI" B$it
nano @etc@asterisk@e3tensions.con"
(e modifica este bloque:
exten =N 5(00K0&"LB(B?acro!disponible)
same =N nB?acro!calendario)
same =N nB=ial!@-/EV>Q7>NWB;5B*O+It71:xQ)
same =N nBOangup
para que quede:
exten =N 5(00K0&"B;LB(B?acro!disponible)
same =N nB?acro!calendario)
same =N nB=ial!@-/EV>Q7>NWB;5B*O+It71:xQ)
same =N nBOangup
siempre en el contexto internas se pone:
exten =N ("%5B(B=ial!@/Q"/mar+o"B%0)
same =N nBOangup
para terminar en el contexto subscribe se aade:
exten =N (00;B*intB@-/(00;
exten =N mar+o"B*intB@/Q"/mar+o"
(e guarda los cambios y se recarga el dialplan:
asterisk .r3 ^'ia%%an re%oa'^
10.2.3 ,ia%%an en 6ea%ti9e 'ina9ico
*ntre los ob$etos que se pueden guardar en ;ealtime din#mico0 est# el dialplan2 /e esta forma se
pueden crear distintos dialplan para distintos servidores %steris& conectados en ;ealtime a la base de
datos2 *sta puede ser una optima solucin cuando se quieren compartir partes de dialplan entre distintos
servidores %steris& o cuando se quiere tener el motor de la base de datos en otro servidor2
8ara iniciar se crea la tabla para guardar el dialplan en la base de datos:
91sB% .$ root .sesa9o
mysql" $se asterisk
mysql" C.>/7> 7/FL> AdialplanA !
:B@
AidA int!(() NO7 N6LL auto5incrementB
AcontextA varc*ar!"0) NO7 N6LL default DDB
AextenA varc*ar!"0) NO7 N6LL default DDB
Apriorit0A tin0int!;) NO7 N6LL default D0DB
AappA varc*ar!"0) NO7 N6LL default DDB
AappdataA varc*ar!("') NO7 N6LL default DDB
-.@?/.2 I>2 !AcontextABAextenABApriorit0A)B
I>2 AidA !AidA)
)J
ahora se crea en la tabla una extensin muy sencilla:
mysql" +#S-6T +#TO 'ia%%an 8conte3tEe3tenEriorit1EaEa'ata: VA=>-S
8UtestUEUJ0UEU1UEUAnswerUEU0U:S
mysql" +#S-6T +#TO 'ia%%an 8conte3tEe3tenEriorit1EaEa'ata: VA=>-S
8UtestUEUJ0UEU2UEU0%a1(ackUEU'e9o.congratsU:S
mysql" +#S-6T +#TO 'ia%%an 8conte3tEe3tenEriorit1EaEa'ata: VA=>-S
8UtestUEUJ0UEU3UEUCang$UEU0U:S
el resultado ser#:
mysql" se%ect T "ro9 'ia%%anS
(e sale del cliente 'y()L y se modifica el archivo extconfig2conf:
mysql" B$it
nano @etc@asterisk@e3tcon"ig.con"
(e busca esta linea:
Jextensions =N odbcBasteris+
y se modifica para que quede:
extensions =N odbcBasteris+Bdialplan
:B?
(e guardan los cambios y se pasa al dialplan
nano @etc@asterisk@e3tensions.con"
%ntes del contexto internas se aade este bloque que configura %steris& para que busque el contexto
test en la base de datos:
KtestL
s1itc* =N .ealtime
y se aade las lineas en negrita en los dos bloques que siguen:
YexternasZ
include =" internas
include =" internacio
include =" par&edcalls
inc%$'e QK test
YlocalesZ
include =" internas
include =" auten
include =" par&edcalls
inc%$'e QK test
/e esta forma las extensiones que tengan acceso al contexto externas o locales0 tendr#n acceso tambi5n
al contexto test2 (e guardan los cambios y se reinicia %steris&:
service asterisk restart
/esde la extensin 1>>> se marca el numero <> y se prueba el nuevo contexto creado en ;ealtime.
8ara averiguar que cuando se modifique el dialplan en realtime0 este sea activo en seguida0 se cambia el
numero de extensin presente en la tabla:
91sB% .$ root .sesa9o
mysql" $se asterisk
mysql" $'ate 'ia%%an set e3tenQ80 w2ere e3tenQUJ0US
mysql" se%ect T "ro9 'ia%%anS
:BB
(e sale del cliente 'y()L:
mysql" B$it
(in actualiSar el dialplan desde la extensin 1>>> se marca el numero A>:
asterisk .rvvvvvvvvvvvvv
-- EBecutin% 0'0Sexternas"14 3nswer(W2AF/1))*-)))))))2WD W)W!
-- EBecutin% 08)-eBternas"24 Flay'ack(W2AF/1))*-)))))))2WD Wde$o-con%ratsW!
-- S2AF/1))*-)))))))2R Flayin% .de$o-con%rats.%,22. (lan%ua%e .es.!
:B<
Cait$%o X+++
+V6 avanza'os / "$nc;o'(c.con"
La funcin funcCodbc permite hacer consultas en base de datos directamente desde el dialplan2 %l
mismo tiempo es posible actualiSar o modificar entradas de la base de datos2 *l archivo que se utiliSa
para este tipo de configuracin es el funcCodbc2conf2 *n este modulo0 se ilustrar#n cuatro 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
Bolsa de minutos
!onsultas que devuelven m#s de un resultado
13.1 -9%ea'os
La tabla de los empleados contendr# solamente dos campos:
12 numero de matricula
:2 nombre
(e crea la tabla en la base de datos %steris&:
91sB% .$ root .sesa9o
mysql" $se asterisk
mysql" C.>/7> 7/FL> AempleadosA !
AidA int!(() NO7 N6LL auto5incrementB
AnombreA varc*ar!"0) NO7 N6LLB
AmatriculaA int!;) NO7 N6LLB
-.@?/.2 I>2 !AnombreA)B
I>2 AidA !AidA)
)J
(e aaden a la tablas cuatro empleados:
mysql" +#S-6T +#TO e9%ea'os 8no9(reE9atric$%a: VA=>-S 8U"$%anoUEU1234U:E
8Uz$tanoUEU123LU:E8U9enganoUEU1236U:E8UerenganoUEU123JU:S
el resultado:
mysql" se%ect T "ro9 e9%ea'osS
%hora se crea el archivo funcCodbc2conf2 8rimero se renombra el predefinido:
9v @etc@asterisk@"$nc;o'(c.con" @etc@asterisk@"$nc;o'(c.con".o%'
se crea el nuevo:
nano @etc@asterisk@"$nc;o'(c.con"
y se copian las siguientes lineas:
K>mpleadosL
dsn=asteris+
readsHl=>L>C7 nombre 8.O? empleados :O>.> matricula=DEV`L5>C!EV/.3(W)WD
Y*mpleadosZ G *l nombre de la funcin que se est# creando
dsn G el nombre de la etiqueta definida al inicio del bloque configurado en el archivo
resCodbc2conf para la base de datos asteris&
readsql=(*L*!D nombre .;L' empleados =6*;* matricula=bef()LC*(!Oef%;+1gPgb G
la sentencia ()L para realiSar consultas en la base de datos asteris& Oen este caso la tabla
empleadosP
8ara interactuar con el usuario que llame para consultar la base de datos0 se utiliSar# otro sistema de
DD( Otext to (peechPU en este caso .estival2 *n %steris& hay un modulo dedicado a la conexin con un
servidor .estival2 Lo Fnico que hace falta es configurarlo2 8rimero se averigua si el modulo est#
compilado y funcionando:
asterisk .rvvvvvvvvvvvvvvv
!LI" 9o'$%e $n%oa' a;"estiva%.so
!LI" 9o'$%e %oa' a;"estiva%.so
77 Farsin% ./etc/asterisk/festival.conf." 77 Nound
77 1e%istered a##lication .Nestival.
>oaded a##festival.so 7R (2i$#le Nestival Anterface!
!LI" B$it
.estival viene con el ingl5s como idioma predefinido2 8ara configurarlo con el idioma espaol se
:<>
siguen estos pasos:
instalar las voces en espaol:
1$9 insta%% 2isavoces.a%.'i2one 2isavoces.s"%.'i2one
'odificar el archivo de configuracin de festival:
nano @$sr@s2are@"estiva%@%i(@"estiva%.sc9
se aaden estas lneas antes de la ultima linea del archivo
J!language55spanis*)
!setM voice5default Dvoice5Punta=e/ndalucia5es5sf5dip*one)
!define !tts5textasteris+ string mode)
4!tts5textasteris+ 7.@N3 ?O=>)
/ppl0 tts to 7.@N3# 7*is function is specificall0 designed for
use in server mode so a single function call ma0 s0nt*esi,e t*e string#
7*is function name ma0 be added to t*e server safe functions#4
!let !!1*oleutt !utt#s0nt* !eval !list D6tterance D7ext string)))))
!utt#1ave#resample 1*oleutt '000)
!utt#1ave#rescale 1*oleutt 5)
!utt#send#1ave#client 1*oleutt)))
(e guardan los cambios y se modifica el archivo de configuracin de festival en %steris&:
9v @etc@asterisk@"estiva%.con" @etc@asterisk@"estiva%.con".o%'
nano @etc@asterisk@"estiva%.con"
estas son la lneas que hay que aadir:
KgeneralL
*ost=local*ost
port=(%(;
festivalcommand=!tts5textasteris+ 4_s4 Dfile)!Huit)an
(e guardan las modificaciones2 (e actualiSa la configuracin de %steris&:
@etc@init.'@asterisk re%oa'
8ara iniciar el servidor .estival en autom#tico:
nano @etc@rc.%oca%
al final del archivo se aade esta linea:
:<1
@$sr@(in@"estiva%;server K @'ev@n$%% g
(e inicia el servidor festivalU
@$sr@(in@"estiva%;server K @'ev@n$%% g
(e controla que est5 corriendo:
s a$3 _ gre "estiva%
root 2*),1 ).) ).2 *6)) 1)+6 #ts/1 2 13"36 )")) /'in/sh /usr/'in/festivalserver
root 2*),, ).* 3.6 23*6* 1+32* #ts/1 2 13"36 )")) festival --server ./festivalserver.sc$
root 2*)81 ).) ).1 *)28 688 #ts/1 2/ 13"36 )")) %re# festival
(e modifica el /ialplan para crear una extensin que permita hacer una prueba del servidor .estival:
nano @etc@asterisk@e3tensions.con"
en el contexto internas se pone:
e3ten QK 6L0E1EAnswer8:
sa9e QK nE7estiva%8Asterisk 1 7estiva% tra(a5an 5$nto. C2evereXXX:
sa9e QK nECang$8:
(e actualiSa el dialplan desde la consola:
asterisk .rvvvvvvvvvvvvvvvvv
!LI" 'ia%%an re%oa'
/esde la extensin 1>>> se marca la extensin B?> para escuchar la frase que se acaba de configurar en
el dialplan2
!LI" B$it
Derminada la configuracin y la prueba de .estival se construye el dialplan para hacer consultas a la
tabla empleados:
nano @etc@asterisk@e3tensions.con"
en el contexto internas se pone:
exten =N $$0B(B/ns1er
same =N nB:ait!")
same =N nB8estival!-or favor ingrese los ; digitos de la matricula del empleado#)
same =N nB.ead!>?-N6?BbeepB;)
same =N nBet!>?-N/?>=EVO=FC5>mpleados!EV>?-N6?W)W)
same =N nB3oto@f!EKEV>Q@7!EV>?-N/?>W)WLYnombre)
:<:
same =N nB8estival!Ningun empleado encontrado# Oasta luego#)
same =N nBOangup
same =N n!nombre)B8estival!>l nombre del empleado es EV>?-N/?>W# Oasta luego#)
same =N nBOangup
-na explicacin de las lineas:
Linea1 G se contesta la llamada
Linea: G se esperan dos segundos
Linea3 G (e usa .estival para leer el texto y enviarlo como audio
Linea @ G !on la aplicacin ;ead se espera que el llamante digite @ nFmeros y se guardan en la
variable *'8,-'
Linea ? G (e realiSa la consulta en la tabla *mpleados como configurado en el archivo
funcCodbc2 /esde la lgica de 'y()L sera: select nombre from empleados 4here matricula=be
f*'8,-'gbU
LineaB G (i la consulta devuelve un valor se va a la etiqueta OnombreP0 si la consulta no
devuelve ningFn valor se continua en el dialplan Ola funcin *HI(D permite averiguar si una
determinada variable contiene un valor o est# vacaP
Linea< G *n el caso la consulta no haya tenido 5xito0 se anuncia al llamante que no se ha
encontrado ningFn empleado que tenga ese numero de matricula
LineaA G se termina la llamada
LineaE G (i la consulta ha tenido 5xito0 se anuncia al llamante el nombre del empleado
Linea1> G se termina la llamada
(e guardan los cambios y se recarga el dialplan:
asterisk .rvvvvvvvvvvvvvvvvvvvvvvvv
!LI" 'ia%%an re%oa'
/esde la extensin 1>>> se marca BB> y se hacen diferentes pruebas2 *n la consola:
EBecutin% 066)-eBternas"14 3nswer(W2AF/1)))-))))))1)WD WW! in new stack
-- EBecutin% 066)-eBternas"24 Jait(W2AF/1)))-))))))1)WD W2W! in new stack
-- EBecutin% 066)-eBternas"34 Nestival(W2AF/1)))-))))))1)WD WFor favor in%rese los * di%itos de
la $atricula del e$#leado.W! in new stack
77 Farsin% ./etc/asterisk/festival.conf." 77 Nound
-- EBecutin% 066)-eBternas"*4 1ead(W2AF/1)))-))))))1)WD WE9FCE9D'ee#D*W! in new stack
-- 3cce#tin% a $aBi$u$ of * di%its.
-- S2AF/1)))-))))))1)R Flayin% .'ee#.alaw. (lan%ua%e .es.!
-- Eser entered .123*.
-- EBecutin% 066)-eBternas"54 2et(W2AF/1)))-))))))1)WD WE9FC39E7fulanoW! in new stack
-- EBecutin% 066)-eBternas"64 QotoAf(W2AF/1)))-))))))1)WD W1;no$'reW! in new stack
-- Qoto (eBternasD66)D+!
-- EBecutin% 066)-eBternas"+4 Nestival(W2AF/1)))-))))))1)WD WEl no$'re del e$#leado es fulano.
@asta lue%o.W! in new stack
:<3
77 Farsin% ./etc/asterisk/festival.conf." 77 Nound
-- EBecutin% 066)-eBternas"1)4 @an%u#(W2AF/1)))-))))))1)WD WW! in new stack
77 2#awn eBtension (eBternasD 66)D 1)! eBited non-Tero on .2AF/1)))-))))))1).
13.2 -nc$esta
(e quiere suministrar una encuesta a los clientes de la empresa para medir el grado de satisfaccin de
los mismos2 La encuesta est# compuesta por @ preguntas2 Las preguntas se pueden grabar o0 como en
este caso0 se utiliSar# .estival2 Los pasos a seguir son:
crear la tabla para la encuesta
crear un nuevo bloque en el archivo funcCodbc2conf
crear un nuevo bloque de dialplan
(e inicia creando la tabla:
91sB% .$ root .sesa9o
mysql" $se asterisk
mysql" C.>/7> 7/FL> AencuestaA !
AidA bigint!"0) NO7 N6LL auto5incrementB
Afec*aA datetime default N6LLB
Aresp(A int!() default N6LLB
Aresp"A int!() default N6LLB
Aresp%A int!() default N6LLB
Aresp;A int!() default N6LLB
-.@?/.2 I>2 !AidA)
)J
se sale del cliente mysql:
mysql" B$it
se abre el archivo funcCodbc2conf
nano @etc@asterisk@"$nc;o'(c.con"
al final del archivo se aade el siguiente bloque:
K>ncuestaL
dsn=asteris+
1ritesHl=insert into encuesta !8ec*aBresp(Bresp"Bresp%Bresp;) values !4EV`L5>C!EVR/L(W)W4B4E
V`L5>C!EVR/L"W)W4B4EV`L5>C!EVR/L%W)W4B4EV`L5>C!EVR/L;W)W4B4EV`L5>C!E
VR/L5W)W4)
:<@
+M0O6TA#T-) -% conteni'o 'e %a sentencia writesB% tiene B$e estar en %a 9is9a %inea.
8ara terminar se modifica el dialplan:
nano @etc@asterisk@e3tensions.con"
en el contexto internas se pone:
e3ten QK 6J0E1E4oto8enc$estaEsE1:
sa9e QK nECang$
y despu5s del contexto internas se pone el siguiente bloque:
KencuestaL
exten =N sB(B/ns1er
same =N nB:ait!")
same =N nB8estival!-regunta uno)
same =N nB.ead!var(BB(BB(0)
same =N nB8estival!-regunta dos)
same =N nB.ead!var"BB(BB(0)
same =N nB8estival!-regunta tres)
same =N nB.ead!var%BB(BB(0)
same =N nB8estival!-regunta cuatro)
same =N nB.ead!var;BB(BB(0)
same =N nBet!O=FC5>ncuesta!)=EV7.87@?>!EV>-OCOWBB_0_m_d_O_?_)WBEVvar(WBEVvar"WBEVvar%WBEVvar;W)
same =N nB-la0bac+!t*an+&0ou&cooperation)
same =N nBOangup
*l bloque de dialplan es bastante comprensible2 (e presentan las cuatros preguntas2 (e guardan los
dgitos en @ variables distintas y al terminar la encuesta se guardan los resultados en la tabla encuesta a
trav5s de la funcin L/B!C*ncuesta que se acaba de crear en el archivo funcCodbc2conf2
(e guardan las modificaciones y se actualiSa %steris&:
service asterisk re%oa'
/esde unas de las extensiones conectadas a %steris& se marca el B<> y se contestan las preguntas2 (e
repite la operacin 3I@ veces2 8ara ver los resultados:
91sB% .$ root .sesa9o
mysql" $se asterisk
mysql" se%ect T "ro9 enc$estaS
:<?
Los resultados aparecen ordenados por I/ y fecha2
13.3 <o%sa 'e 9in$tos
(e quiere limitar las llamadas a celulares que realiSan las extensiones sobre base mensualU por e$emplo
las extensiones tienen 3>> minutos mensuales disponibles para llamar celulares2 8ara este caso tambi5n
se puede utiliSar la funcin funcCodbc y crear la consulta en la tabla !/; que contiene todos los
registros de las llamadas2 *n el plan de marcado se controlar# los minutos que una extensin ha
consumido para llamadas a celulares y0 si supera los admitidos0 se le comunicar#2
Lo primero que hay que hacer es crear una nueva conexin a la base de datos asteris&cdr en L/B!:
nano @etc@o'(c.ini
se copian las siguientes lineas:
Kasteris+cdrL
=escription = ?0`L /steris+C=.
=river = ?0`L
=atabase = asteris+cdr
erver = local*ost
6ser = asteris+
-ass1ord = sesamo
-ort = %%0$
Option = %
(e guardan los cambios y se averigua que la conexin est5 funcionando:
isB% asteriskc'r asterisk sesa9o
/---------------------------------------/
5 ConnectedH 5
5 5
5 sMl-state$ent 5
5 hel# 0ta'lena$e4 5
5 Muit 5
:<B
5 5
/---------------------------------------/
8erfecto2 Qa se puede salir del programa:
()L" B$it
%hora0 como se ha hecho para el %steris& ;ealtime0 si crea un nuevo bloque en el archivo
resCodbc2conf:
nano @etc@asterisk@res;o'(c.con"
al final de archivo0 se aade el siguiente bloque:
\c'r]
ena(%e' QK 1es
'sn QK asteriskc'r
$serna9e QK asterisk
asswor' QK sesa9o
re.connect QK 1es
sanit1sB% QK se%ect 1
i'%ec2eck QK 3600
connect;ti9eo$t QK 10
(e guardan los cambios y se crea la query OconsultaP en el archivo funcCodbc2conf:
nano @etc@asterisk@"$nc;o'(c.con"
al final del archivo se aaden las siguientes lineas:
KC=.L
dsn=cdr
readsHl=select sum!billsec) from cdr 1*ere calldate li+e DEV`L5>C!EV/.3(W)W_D and src=DE
V`L5>C!EV/.3"W)WD and dst li+e D005C%_D
*l campo billsec de la tabla !/; contiene la duracin de la llamada desde que ha sido contestada2 La
funcin sum de 'y()L permite sumar todos los valores encontrados en el campo billsec por el mes
seleccionado2
La consulta sera: suma todos los segundos de conversacin efectuados por la extensin H en el mes Q
Onormalmente el mes corrienteP para las llamadas hacia nFmeros que empiecen por >>?<3 Oen este caso
los celulares de !olombiaP2
-na veS creada la consulta hacia la base de datos se puede crear un nuevo bloque en el dialplan para
efectuar la consulta y utiliSar el valor restituido para definir el tipo de comportamiento2
(e abre el archivo del plan de marcado:
:<<
nano @etc@asterisk@e3tensions.con"
y en el contesto internacio se crea un nuevo bloque:
exten =N 5005C%#B(BNoop
same =N nBet!fec*a=EV7.87@?>!epoc*BB_2&_m)W_)
same =N nBet!consumo=EVO=FC5C=.!EVfec*aWBEVC/LL>.@=!num)W)W)
same =N nBet!minutos=EV?/7O!EVconsumoW / $0Bint)W)
same =N nBNoop!egundos EVconsumoW ?inutos EVminutosW)
same =N nB3otoif!EKEVminutosW N %00LYacaba)
same =N nB=ial!@-/<ustvoip/EV>Q7>NW)
same =N nBOangup
same =N n!acaba)B8estival!>stimado# No tienes m\s minutos de llamadas a celulares disponibles#
Contacte el administrador)
same =N nBOangup
*ste bloque se utiliSar# solamente para las llamadas a celulares Ode !olombiaP2 %steris& antes de
efectuar la llamada consulta la tabla !/; y suma todos los segundos utiliSados por la extensin que
est# llamando a celulares2 *l valor se divide por B> y del resultado se saca el numero entero Ocon la
funcin '%D6P2 (i los minutos utiliSados son m#s de 3>> se comunica a la extensin0 de lo contrario
se efectFa la llamada2
(e recarga la configuracin de %steris&:
service asterisk re%oa'
y se realiSa una llamada a un celular de !olombia2 *n la consola de %steris&:
EBecutin% 0))5,3163*35,*6-eBternas"14 Co<#(W2AF/1)))-))))))13WD WW! in new stack
EBecutin% 0))5,3163*35,*6-eBternas"24 2et(W2AF/1)))-))))))13WD Wfecha72)13-)3_W! in new
stack
EBecutin% 0))5,3163*35,*6-eBternas"34 2et(W2AF/1)))-))))))13WD Wconsu$o75W! in new stack
EBecutin% 0))5,3163*35,*6-eBternas"*4 2et(W2AF/1)))-))))))13WD W$inutos7)W! in new stack
EBecutin% 0))5,3163*35,*6-eBternas"54 Co<#(W2AF/1)))-))))))13WD 4egundos 5 ?inutos 04! in new
stack
EBecutin% 0))5,3163*35,*6-eBternas"64 QotoAf(W2AF/1)))-))))))13WD W);aca'aW! in new stack
EBecutin% 0))5,3163*35,*6-eBternas",4 ?ial(W2AF/1)))-))))))13WD W2AF/Gustvoi#/))5,3163*35,*6W! in new
stack
13.4 Cons$%tas con res$estas 9Z%ti%es
% veces se necesita realiSar consultas en una base de datos que devuelven m#s de un resultado2 -n
e$emplo podra ser averiguar cuantas veces un determinado numero de tel5fono est# presente en una
determinada tabla2 *n este parrafo se mostrar# como efectuar una consulta de este tipo en la tabla !/;
de la base de datos %steris& y anunciar al llamante la duracin de cada llamada2
:<A
!omo en el parrafo anterior ya se ha creado una conexin a la tabla !/; de la base de datos %steris&0
lo unico que hace falta es configurar el archivo funcCodbc2conf2 (e abre:
nano @etc@asterisk@"$nc;o'(c.con"
%l final se aade:
\%%a9a'a]
'snQc'r
9o'eQ9$%tirow
rea'sB%Qse%ect (i%%sec "ro9 c'r w2ere 'stQU`aSP=;-SC8`aA641b:bU
*l par#metro mode=multiro4 permite realiSar consultas que pueden devolver m#s de un resultado2 La
sentencia sera: selecciona el campo billsec Ola duracin de la llamada desde el momento en que se
contestaP desde la tabla cdr donde el campo dst Oque contiene el numero llamadoP es igual a la variable
que luego se pasar# a trav5s del dialplan2
(e guardan los cambios y se crea un nuevo bloque de dialplan para efectuar la consulta:
nano @etc@asterisk@e3tensions.con"
*n el bloque internas se pone:
exten =N $'0B(B/ns1er
same =N nB8estival!-or favor ingrese el numero de telefono a buscar 0 presione la tecla numero#)
same =N nB.ead!7>LN6?BbeepB"0)
same =N nBet!@==EVO=FC5llamada!EV7>LN6?W)W)
same =N nBNoO-!Columnas EVO=FC.O:W @= EV@=W)
same =N nBet!contar=EVO=FC.O:W)
same =N nB:*ile!EKEVcontarW N 0L)
same =N nBet!durac=EVO=FC58>7CO!EV@=W)W)
same =N nB8estival!Llamada de EVduracW segundos)
same =N nBet!contar=!EKEVcontarW & (L))
same =N nB>nd1*ile
same =N nBOdbc8inis*
same =N nBOangup
-na explicacin del bloque:
Linea 1 G se contesta la llamada
Linea : G (e solicita al llamante que ingrese el numero de telefono a buscar
Linea 3 G (e utiliSa la aplicacin ;ead para almacenar el numero digitado en la variable
D*L,-'
Linea @ G !uando se realiSa una consulta que puede devolver m#s de un resultado0 la aplicacin
devuelve un numero OI/P que contiene todos los resultados encontrados
Linea ? G (e devuelve a la consola de %steris& el numero de resultados encontrados a trav5s de
:<E
la variable efL/B!;L=(g y el I/ asignado a la consulta
Linea B G se asigna la variable contar el numero de resultados encontrados
Linea < G 6asta que la variable contar sea mayor que cero0 se e$ecutar# el ciclo que sigue
Linea A G se asigna la variable durac el valor de la duraccin de la llamada del primer resultado
encontrado2 efL/B!C.*D!6OefI/gPgP *sta funcin permite sacar el primer resultado
encontrado2
Linea E G (e anuncia la duracin del primer resultado encontrado
Linea 1> G (e asocia a la variable contar su valor menos 1
Linea 11 G (e cierra el ciclo y se vuelve a la linea del =hile2 (i el valor de la variable contar es
todava mayor que cero0 se procesa el ciclo nuevamente2
Linea 1: G !uando el ciclo termine con la aplicacin L/B!.inish se MlimpiaN el resultado de la
consulta efectuada2
Linea 13 G (e termina la llamada2
(e guardan los cambios y si actualiSa %steris&:
service asterisk re%oa'
%hora se puede efectuar una prueba llamando la extensin BA>2 !laramente este es un e$emplo muy
sencillo de este tipo de consultas pero es un buen punto de partida para escenario m#s comple$os2
:A>
Cait$%o X+V
<$z&n 'e voz / voice9ai%.con"
*n el archivo voicemail2conf es donde se configura todo lo relacionado con el buSn de voS2 (i se
recibe una llamada y no se contesta o la lnea est# ocupada0 siempre y cuando se configure el dialplan
oportunamente0 entrar# en funcin el buSn de voS0 grabar# el mensa$e de voS de$ado por quien llama y
enviar# una notificacin por correo electrnico al llamado2 %nexo al correo electrnico es posible
enviar el mensa$e de voS en distintos formatos audio2 % trav5s de la configuracin de este archivo es
posible0 adem#s0 crear distintos grupos de buSones de voS Odistintas empresaP y configurar distintas
Sonas horarias2
14.1 voice9ai%.con"
!omo por lo dem#s archivos de configuracin0 en la tabla a seguir se indicar#n los par#metros que se
van a configurar con una breve descripcin2 *n negrita los valores de cada par#metro2 %l final de la
tabla0 la configuracin completa del archivo2
0ar!9etro ,escrici&n
YgeneralZ Inicia la parte general
format Los formatos audio en que se grabar# cada mensa$e de voS2
9alor wav4R_gs9_wav
serveremail !orreo electrnico del remitente en la notificaciones de la
presencia de un nuevo mensa$e de voS2 9alor
($zon'evoz*'o9inio.co92 -n e$emplo para Linode:
buSondevoS_li3<>I13?2members2linode2com 8ersonaliSar
attach 1es = se anexa al correo electrnico el archivo audio que
contiene el mensa$e de voS2
maxmsg ,umero m#ximo de mensa$es de voS guardados para cada
buSn de voS2 9alor 100
maxsecs ,umero m#ximo de segundos que puede durar un mensa$e de
voS2 9alor L00
minsecs ,umero mnimo de segundos para que un mensa$e de voS sea
reconocido como tal y enviado al buSn de voS del
destinatario2 9alor 4
maxgreet /uracin m#xima0 en segundos0 del mensa$e de bienvenida que
cada propietario de un buSn de voS puede grabar para
presentarse2 9alor 180
s&ipms !uando se escuchan los mensa$e de voS0 se puede utiliSar el
teclado num5rico del tel5fono para adelantar o devolver el
mensa$e2 (e expresa en mili segundos2 9alor 3000
0ar!9etro ,escrici&n
maxsilence (i mientras se de$a un mensa$e en el buSn de voS hay un
silencio mayor al numero de segundos indicados en este
par#metro0 se termina la grabacin2 9alor 3 Dienes que ser un
valor menor del par#metro minsecs
silencethreshold *l numero indicado en este par#metro indica el nivel de ruido y
sirve para definir que se considera silencio2 '#s ba$o el
nFmero0 m#s sensible al ruido2 9alor 128
maxlogins ,umero m#ximo de intentos para marcar la clave asociada al
buSn de voS personal2 9alor 3
moveheard 1es = una veS escuchados los nuevos mensa$es de voS0 se
mueven a la carpeta LL/ (vieGos! en autom#ticoU si se
configura en no0 hay que hacerlo desde el menF del buSn de
voS
for4ardCurgentCauto yes = cada mensa$e de voS reenviado se considerar# urgente2
9alor no
Uexternnotify=/usr/bin/myapp si se quiere e$ecutar una aplicacin cada veS que llega un
nuevo mensa$e de voS0 hay que definirla en este par#metro2 (e
de$a comentado
Uexternpass=/usr/bin/myapp cada veS que se cambie la contrasea de un buSn de voS0 es
posible e$ecutar un script externo2 (e de$a comentado
Uexternpassnotify=/usr/bin/myapp !ada veS que se cambie la contrasea de un buSn de voS y se
configure el nombre de un script en este par#metro0 las
variables contexto0 mailbox y nueva contrasea se pasar#n al
scriptU si el par#metro anterior se ha configurado0 este no ser#
tomado en cuenta2
directoryintro La locucin de introduccin de la aplicacin directory2 (e
explicar# m#s adelante que es y como funciona2 9alor 'ir.intro
charset *l est#ndar I(L para los correo electrnicos que se enviar#n
para notificar la llegada de un nuevo mensa$e de voS2 9alor
+SO.88LR.1
pbxs&ip 1es = quita la sigla Y8BHZ en el asunto de los correos
electrnicos de notifica
fromstring ,ombre del remitente del los correos electrnicos2 9alor
<$z&n 'e Voz
usedirectory 1es = los mensa$es de voS que se reciben se pueden reenviar a
otros usuarios/extensiones del servidor %steris&2 Dambi5n se
pueden de$ar directamente mensa$es de voS a otros buSones2
*ste par#metro permite buscar en el directorio la persona a la
que se quiere de$ar o reenviar el mensa$e de voS
Uodbcstorage (e pueden guardar los mensa$es de voS en un base de datos
:A3
0ar!9etro ,escrici&n
usando el conector L/B!2 *n este par#metro se define el
nombre de la base de datos2 9alor asterisk Ose de$a comentadoP
Umensa$es *l nombre de la tabla de la base de datos donde guardar los
mensa$e de voS2 9alor: 9ensa5es Ose de$a comentadoP
emailsub$ect %sunto del correo electrnico de notificacin2 9alor2 #$evo
9ensa5e 'e voz `aVM;MS4#>Mb en e% ($zon 'e voz `
aVM;MA+=<OXb
emailbody !ontenido del correo electrnico2 Diene que estar todo en la
misma linea2 9alor: -sti9an'o `aVM;#AM-b)OnOnOt %e
esta9os envian'o este correo ara avisar%e B$e 2a reci(i'o
$n n$evo 9ensa5e
'e voz 'e `aVM;,>6b seg$n'os 8n$9ero `
aVM;MS4#>Mb:OnOn ($zon 'e voz `aVM;MA+=<OXb
'e% n$9ero `aVM;CA==-6+,bE e%
`aVM;,AT-b.OnOn =%a9e s$ ($zon 'e voz ara esc$c2ar%o.
4raciasXOnOnOtOtOtOt.T$ <$zon 'e VozOn #o9(re e9resa
8ersonaliSar segFn sus necesidades
emaildateformat .ormato de la hora y fecha del correo electrnico2 9alor WAE
W' W< WV at WC)WM)WS
mailcmd comando Linux para enviar el correo electrnico2 *n este caso
se utiliSa (endmail2 9alor @$sr@s(in@sen'9ai% .t
tS Sona horaria predefinida para indicar fecha y hora de llegada
del mensa$e de voS2 9alor centra% % partir de este par#metro
inicia la configuracin avanSada del archivo2
locale /esde la versin 12A de %steris& es posible configurar el
idioma para el formato de la fecha que aparece en el mensa$e
de notificacin2 (e pone el mismo valor configurado para el
idioma del sistema operativo Opara !olombiaP:
es5CO#iso''59(
attach 1es = se envan los nuevos mensa$es de voS anexos al correo
electrnico de notificacin2
attachfmt de los tres formatos audio en que se grabar#n los mensa$e de
voS Odefinidos en el par#metro formatP0 se escoge 5l que se
utiliSar# para anexar el audio al correo electrnico2 9alor wav
saycid 1es = antes de escuchar el mensa$e de voS se anuncia el
!allerI/ del llamante
cidinternalcontexts nombre del contexto del dialplan donde buscar el contexto de
los buSones de voS para anunciar en lugar del numero de
extensin el nombre de la persona que de$ el mensa$e2 9alor
internas
:A@
0ar!9etro ,escrici&n
sayduration 1es = anuncia la duracin del mensa$e de voS
saydurationm define la duracin mnima del mensa$e de voS para que sea
anunciado Oen minutosP2 9alor 2
dialout nombre del contexto del dialplan para efectuar llamadas
salientes desde el menF del buSn de voS Oopcin @ del menF
avanSadoP2 9alor e3ternas
sendvoicemail 8ermitir o no de enviar el mensa$e de voS a otra extensin
Oopcin ? del menF avanSadoP2 9alor 1es
Ucallbac&=fromvm ,ombre del contexto del dialplan para poder llamar el
remitente del mensa$e de voS2 (e de$a comentado
:exitcontext=fromvm ,ombre del contexto donde enviar el llamante si presiona una
tecla antes de de$ar un mensa$e2 (e de$a comentado
revie4 1es = 8ermite al llamante escuchar el mensa$e de voS que ha
grabado antes de enviarlo
Uoperador=yes permite al llamante presionar la tecla > para hablar con un
operador mientras se encuentra en el buSn de voS2 (e de$a
comentado
envelope 1es = antes de reproducir un mensa$e de voS0 se anuncian todos
los datos del mensa$e mismo Ofecha0 hora0 etc2P
delete no = no se borra el mensa$e de voS una veS que se ha enviado
anexo al correo electrnico de notificacin2
volgain permite subir el volumen de grabacin de los mensa$es de voS2
8ara que funcione se necesita que (LH sea instalado en el
servidor2 9alor 0.0
nextaftercmd 1es = en el caso de m#s de un mensa$e de voS presente en el
buSn de voS0 permite pasar al mensa$e siguiente presionando
las teclas < o E Oborrar/guardar el mensa$e respectivamenteP
forcename 1es = obliga cada usuario con un buSn de voS configurado a
grabar su nombre la primera veS que accede2 -n usuario se
considera nuevo si la contrasea del buSn de voS coincide con
el numero de extensin
forcegreeting no = obliga un nuevo usuario a grabar un mensa$e de
bienvenida para su buSn de voS
hidefromdir no = el usuario aparecer# en el directorio2 yes = el usuario no
aparecer# en el directorio
tempgreet4arn 1es = recuerda al usuario que el mensa$e de bienvenida que
est# usando es temporal hasta que no grabe uno personaliSado2
pass4ordlocation % partir de la versin 12A2H de %steris& es posible definir
:A?
0ar!9etro ,escrici&n
donde se guardar#n las contraseas para cada buSn de voS2
8osibles valores:
voice9ai%.con" I (e guardar#n en este archivo
spooldir G la contraseas se guardar#n en un archivo de
texto Osecret2confP que hay que crear en la carpeta
/var/spool/asteris&/voicemail/contexto/usuario donde
contexto es el nombre del contexto al que pertenece el
buSn de voS y usuario es el numero del buSn de voS
de la extensin
message4rap 1es = 'ientras se est#n escuchando los mensa$es de voS0
permite presionando la tecla B pasar del ultimo mensa$e
escuchado al primero0 presionando @ del primer mensa$e ir al
ultimo2
minpass4ord define una longitud mnima para la contrasea del buSn de
voS Oel numero de cifrasP2 9alor 4
UvmIpass4ord=customCsound
UvmIne4pass4ord=customCsound
UvmIpasschanged=customCsound
UvmIreenterpass4ord=customCsound
UvmImismatch=customCsound
UvmIinvalidIpass4ord=customCsound
UvmIplsItryIagain=customCsound
estos par#metros permiten personaliSar las locuciones2 (e
de$an comentadas
listenIcontrolIfor4ardI&ey d = tecla para el avance r#pido del mensa$e
listenIcontrolIreverse T = tecla para rebobinar el mensa$e
listenIcontrolIpauseI&ey 0 = tecla num5rica para poner en pausa/reanudar el mensa$e
listenIcontrolIrestartI&ey 2 = tecla num5rica para volver a escuchar el mensa$e desde el
inicio
listenIcontrolIstopI&ey 134L6J8R = teclas num5ricas para terminar la escucha de un
mensa$e de voS Otodas0 menos las ya configuradasP
bac&updeleted L0 = numero m#ximo de mensa$es de voS permitidos en la
carpeta de borrados
YSonemessagesZ a partir de esta etiqueta se configuran las distintas Sona
horarias que se podr#n configurar para cada buSn de voS2 /e
esta forma el propietario de cada buSn de voS0 escuchar# la
fecha y la hora en que se de$ el mensa$e de voS segFn el pas
en que se encuentre2 Lo mismo pasar# con el correo electrnico
de notificacin2 (iguen algunos e$emplos
eastern A9erica@#ew;Vork_Uv9.receive'U P U'igits@atU +M
central A9erica@C2icago_Uv9.receive'U P U'igits@atU +M
:AB
0ar!9etro ,escrici&n
european -$roe@Coen2agen_Uv9.receive'U a ' ( U'igits@atU CM
colombia A9erica@<ogota_Uv9.receive'U ae(V U'igits@atU CM
mexico A9erica@Me3ico;Cit1_Uv9.receive'U ae(V U'igits@atU CM
YdefaultZ a partir de esta etiqueta se configuran los contextos para los
buSones de voS2 *n el configuracin de las extensiones en el
sip2conf para el par#metro mailbox se ha puesto como valor
MdefaultN2 *se el el contexto que hay que configurar en el
voicemail2conf y la etiqueta lo define2 /espu5s del contexto0 se
configuran todos los buSones de voS0 uno por linea0 siguiendo
la sintaxis: #$9ero e3tensi&n QK contraseFaE no9(re
ae%%i'oE correo e%ectr&nicoE correo agerEociones
1>>> =" 1>>>0fulano de tal0fulano_gmail2com00tS=colombia
1>>1 =" 1>>10fulano de pascual0fulano_gmail2com00tS=colombia
1>>: =" 1>>:0Sutano pelado0Sutano_gmail2com00tS=european
1:3@ =" 1:3@0mar&o0fulano_gmail2com00tS=mexico
1:3? =" 1:3?0mar&o:0fulano_gmail2com00tS=central
+M0O6TA#T-) To'os %os 'atos 8no9(reE correo e%ectr&nico 1 zona 2oraria resentes en
e% arc2ivoE van ersona%iza'os.
/e esta forma se han definidos los buSones de voS para todas las extensiones configuradas en %steris&
menos la 1>>@2 !omo la contrasea es igual al numero de extensin0 la primera veS que el usuario
acceda a su buSn de voS0 se le pedir# de cambiar la contrasea y configurar su buSn de voS2
%hora se puede crear el archivo2 (e renombra el predefinido:
9v @etc@asterisk@voice9ai%.con" @etc@asterisk@voice9ai%.con".o%'
se crea uno nuevo:
nano @etc@asterisk@voice9ai%.con"
se copian las siguientes lineas:
\genera%]
"or9atQwav4R_gs9_wav
servere9ai%Q($zon'evoz*%i3J0.13L.9e9(ers.%ino'e.co9
attac2Q1es
9a39sgQ100
9a3secsQL00
9insecsQL
9a3greetQ180
:A<
ski9sQ3000
9a3si%enceQ4
si%encet2res2o%'Q128
9a3%oginsQ3
9ove2ear'Q1es
"orwar';$rgent;a$toQno
Se3ternnoti"1Q@$sr@(in@91a
Se3ternassQ@$sr@(in@91a
Se3ternassnoti"1Q@$sr@(in@91a
'irector1introQ'ir.intro
c2arsetQ+SO.88LR.1
(3skiQ1es
"ro9stringQ<$zon 'e Voz
$se'irector1Q1es
So'(cstorageQasterisk
So'(cta(%eQ9ensa5es
e9ai%s$(5ectQ#$evo 9ensa5e 'e voz `aVM;MS4#>Mb en e% ($zon 'e voz `aVM;MA+=<OXb
e9ai%(o'1Q-sti9an'o `aVM;#AM-b)OnOnOt %e esta9os envian'o este correo ara avisar%e B$e
2a reci(i'o $n n$evo 9ensa5e
'e voz 'e `aVM;,>6b seg$n'os 8n$9ero `aVM;MS4#>Mb:OnOn ($zon 'e voz `
aVM;MA+=<OXb 'e% n$9ero `aVM;CA==-6+,bE e%
`aVM;,AT-b.OnOn =%a9e s$ ($zon 'e voz ara esc$c2ar%o. 4raciasXOnOnOtOtOtOt.T$ <$zon 'e
VozOn #o9(re e9resa
S to'o e% te3to 'e% ara9etro ^e9ai%(o'1^ tiene B$e estar en %a 9is9a %inea
e9ai%'ate"or9atQWAE W' W< WV at WC)WM)WS
9ai%c9'Q@$sr@s(in@sen'9ai% .t
tzQcentra%
%oca%eQes5CO#iso''59(
attac2Q1es
attac2"9tQwav
sa1ci'Q1es
ci'interna%conte3tsQinternas
sa1'$rationQ1es
sa1'$ration9Q2
'ia%o$tQe3ternas
sen'voice9ai%Q1es
Sca%%(ackQ"ro9v9
)e3itconte3tQ"ro9v9
reviewQ1es
Soera'orQ1es
enve%oeQ1es
'e%eteQno
vo%gainQ0.0
ne3ta"terc9'Q1es
"orcena9eQ1es
:AA
"orcegreetingQno
2i'e"ro9'irQno
te9greetwarnQ1es
asswor'%ocationQvoice9ai%.con"
9essagewraQ1es
9inasswor'Q4
Sv9.asswor'Qc$sto9;so$n'
Sv9.newasswor'Qc$sto9;so$n'
Sv9.assc2ange'Qc$sto9;so$n'
Sv9.reenterasswor'Qc$sto9;so$n'
Sv9.9is9atc2Qc$sto9;so$n'
Sv9.inva%i'.asswor'Qc$sto9;so$n'
Sv9.%s.tr1.againQc$sto9;so$n'
%isten.contro%."orwar'.ke1Qd
%isten.contro%.reverseQT
%isten.contro%.a$se.ke1Q0
%isten.contro%.restart.ke1Q2
%isten.contro%.sto.ke1Q134L6J8R
(ack$'e%ete'QL0
\zone9essages]
S S$orte' va%$es)
S U"i%ena9eU "i%ena9e o" a so$n'"i%e 8sing%e ticks aro$n' t2e "i%ena9e
S reB$ire':
S `aVA6b varia(%e s$(stit$tion
S A or a ,a1 o" week 8Sat$r'a1E S$n'a1E ...:
S < or ( or 2 Mont2 na9e 8Yan$ar1E 7e(r$ar1E ...:
S ' or e n$9eric 'a1 o" 9ont2 8"irstE secon'E ...E t2irt1."irst:
S V Vear
S + or % Co$rE 12 2o$r c%ock
S C Co$rE 24 2o$r c%ock 8sing%e 'igit 2o$rs rece'e' (1 ^o2^:
S k Co$rE 24 2o$r c%ock 8sing%e 'igit 2o$rs #OT rece'e' (1 ^o2^:
S M Min$teE wit2 00 rono$nce' as ^oUc%ock^
S # Min$teE wit2 00 rono$nce' as ^2$n're'^ 8>S 9i%itar1 ti9e:
S 0 or AM or 0M
S P ^to'a1^E ^1ester'a1^ or A<'V
S 8Tnote) not stan'ar' str"ti9e va%$e:
S B ^^ 8"or to'a1:E ^1ester'a1^E week'a1E or A<'V
S 8Tnote) not stan'ar' str"ti9e va%$e:
S 6 24 2o$r ti9eE inc%$'ing 9in$te
easternQA9erica@#ew;Vork_Uv9.receive'U P U'igits@atU +M
centra%QA9erica@C2icago_Uv9.receive'U P U'igits@atU +M
e$roeanQ-$roe@Coen2agen_Uv9.receive'U a ' ( U'igits@atU CM
co%o9(iaQA9erica@<ogota_Uv9.receive'U ae(V U'igits@atU CM
9e3icoQA9erica@<ogota_Uv9.receive'U ae(V U'igits@atU CM
\'e"a$%t]
:AE
S ersona%izar no9(resE ae%%i'osE correos e%ectr&nicos 1 zona 2oraria
1000 QK 1000E"$%ano 'e ta%E"$%ano*g9ai%.co9EEtzQco%o9(ia
1001 QK 1001E"$%ano 'e asc$a%E"$%ano*g9ai%.co9EEtzQco%o9(ia
1002 QK 1002Ez$tano e%a'oEz$tano*g9ai%.co9EEtzQe$roean
1234 QK 1234E9arkoE"$%ano*g9ai%.co9EEtzQ9e3ico
123L QK 123LE9arko2E"$%ano*g9ai%.co9EEtzQcentra%
+M0O6TA#T-) ersona%izar e% ar!9etro servere9ai% con s$ no9(re 'e 'o9inio 1 %os
ar!9etros no9(reE correo e%ectr&nico 1 zona 2oraria 'e ca'a ($z&n 'e voz.
(e guardan los cambios y se recarga la configuracin del voicemail2conf:
asterisk .rvvvvvvvvvvvvvvvv
!LI" voice9ai% re%oa'
8ara ver los usuarios configurados y los mensa$es de voS presentes:
!LI" voice9ai% s2ow $sers
ConteBt 9'oB Eser Zone Cew9s%
default %eneral Cew Eser )
default 1))) fulano de tal colo$'ia )
default 1))1 fulano de #ascual colo$'ia )
default 1))2 Tutano de tal euro#ean )
default 123* $arko $eBico )
default 1235 $arko2 central )
8ara ver la Sonas horarias configuradas:
!LI" voice9ai% s2ow zones
Zone (i$eTone 9essa%e Nor$at
$eBico 3$erica/Lo%ota .v$-received. ae'& .di%its/at. @9
colo$'ia 3$erica/Lo%ota .v$-received. ae'& .di%its/at. @9
euro#ean Euro#e/Co#enha%en .v$-received. a d ' .di%its/at. @9
central 3$erica/Chica%o .v$-received. I .di%its/at. A9#
eastern 3$erica/Cew&ork .v$-received. I .di%its/at. A9#
(e sale la consola:
!LI" B$it
8ara que una llamada0 si no es contestada o si la extensin est# ocupada0 se enve al buSn de voS0 hay
que modificar el dialplan2 !omo esta parte es igual para todas las extensiones0 se crear# una 'acro2
(e abre el archivo del dialplan:
:E>
nano @etc@asterisk@e3tensions.con"
8rimero se aade la parte para llamar el buSn de voS en el contexto internas:
exten =N 9CB(B/ns1er
same =N nBRoice?ail?ain!EVC/LL>.@=!num)WSdefault)
same =N nBOangup
Linea1 G contesta la llamada
Linea: G enva la llamada al buSn de voS del llamante O!%LL*;I/OnumP y al contexto default
Oconfigurado en voicemail2confP
Linea: G cuelga la llamada
8ara entrar al buSn de voS general y luego digitar numero de buSn y contrasea:
e3ten QK R8E1EVoice9ai%Main
sa9e QK nECang$
8ara buscar un usuario en el directorio:
e3ten QK RRE1E,irector18'e"a$%tEinternasEe:
sa9e QK nECang$
se modifica estos tres bloques para que queden:
exten =N 5(00K0&"B;LB(B?acro!disponible)
same =N nB?acro!calendario)
same =N nB=ial!@-/EV>Q7>NWB;5B*O+It71:xQ)
same =N nBOangup
exten =N ("%;B(B=ial!@/Q"/mar+oB%0)
same =N nBOangup
exten =N ("%5B(B=ial!@/Q"/mar+o"B%0)
same =N nBOangup
para que queden:
exten =N 5(00K0&"B;LB(B=ial!@-/EV>Q7>NWB;5B*O+It71:xQ)
same =N nB?acro!voicemail)
same =N nBOangup
exten =N ("%;B(B=ial!@/Q"/mar+oB%0)
same =N nB?acro!voicemail)
same =N nBOangup
:E1
exten =N ("%5B(B=ial!@/Q"/mar+o"B%0)
same =N nB?acro!voicemail)
same =N nBOangup
Luego al final del archivo se crea la macro:
Kmacro&voicemailL
exten =N sB(B3oto!s&EV=@/L7/76WB()
exten =N s&F62B(BRoicemail!EV?/C.O5>Q7>NWSdefaultBb)
same =N nBOangup
exten =N s&C/NC>LB(BOangup
exten =N s&CON3>7@ONB(BCongestion
same =N nBOangup
exten =N 5s&#B(BRoicemail!EV?/C.O5>Q7>NWSdefaultBu)
same =N nBOangup
La aplicacin dial genera la variable /I%L(D%D-( que contiene uno de los siguientes valores:
!6%,-,%9%IL
!L,+*(DIL,
,L%,(=*;
B-(Q
%,(=*;
!%,!*L
/L,D!%LL
DL;D-;*
*n base al valor se enviar# la llamada a un determinado punto de la macro0 por e$emplo0 si el valor es
B-(Q0 la llamada se transferir# al buSn de voS anunciando al llamante que la extensin est# hablando2
(e guardan los cambios y se recarga el dialplan:
asterisk .rvvvvvvvvvvvvvvv
!LI" 'ia%%an re%oa'
La primera operacin es la de configurar el buSn de voS de la extensin 1>>>2 /esde esa extensin se
marca el numero E< y se siguen los pasos indicados por las locuciones2
Derminada esta operacin se marca desde la extensin 1>>> el numero EE para probar el directorio2 *n
el directorio se busca una persona digitando en el teclado del tel5fono las primeras tres letras del
apellido2 (i el apellido existe0 se podr# llamar directamente desde esta aplicacin2 6acer la prueba
marcando el apellido Ocomo configurado en el voicemail2confP de la extensin 1>>:2
!omo ultima prueba0 desde la extensin 1>>1 se marca la extensin 1>>> y no se contesta la llamada2
La extensin 1>>1 ser# transferida al buSn de voS de la extensin 1>>> donde se de$ar# un mensa$e2
:E:
*n la interfaS de HILite Oextension 1>>>P0 aparecer#:
La parte evidenciada indica que hay un mensa$e en el buSn de voS de la extensin 1>>>2 (e puede
comprobar tambi5n desde la consola:
!LI" voice9ai% s2ow $sers
!ontext 'box -ser Jone ,e4'sg
default 1>>> fulano de tal colombia 1
default 1>>1 fulano de pascual colombia >
default 1>>: Sutano pelado european >
default 1:3@ mar&o mexico >
default 1:3? mar&o: central >
< voicemail users configured2
y con el correo electrnico recibido:
*l anexo es el archivo audio con el mensa$e de voS2 (e puede escuchar el mensa$e llamando tambi5n el
:E3
numero E<2
Los tres archivos audio Oen los tres formatos definidos en voicemail2confP se encontrar#n en la carpeta:
%s .% @var@soo%@asterisk@voice9ai%@'e"a$%t@1000@+#<OX@
-rw-r--r-- 1 root root 1,12, <ct 1+ 2)"3, $s%)))).%s$
-rw-rw-rw- 1 root root 2,1 <ct 1+ 2)"3, $s%)))).tBt
-rw-r--r-- 1 root root 16612* <ct 1+ 2)"3, $s%)))).wav
-rw-r--r-- 1 root root 168+5 <ct 1+ 2)"3, $s%)))).J3P
*l archivo msg>>>>2txt contiene toda la informacin relacionada con el mensa$e de voS:
U
U 'essage Information file
U
YmessageZ
origmailbox=1>>>
context=macroIvoicemail
macrocontext=locales
exten=sIB-(Q
priority=1
callerchan=(I8/1>>:I>>>>>>3:
callerid=a'enganoa d1>>:"
origdate=Dhu Lct :> >1:3<:>< %' -D! :>11
origtime=131E><@B:<
category=
flag=
duration=1>
14.2 Mensa5es 'e voz en $na (ase 'e 'atos
Los mensa$e de voS0 ademas de guardarse en la carpeta indicada en el p#rrafo anterior0 pueden
guardarse en una base de datos2 *sto permite implementar aplicaciones que desde la =eb permitan
escuchar los mensa$es de voS y revisar todos los datos de los mismos2 *sta configuracin se basa en el
conector L/B! y una base de datos Oen este caso 'y()LP2 8ara que funcione0 hay que volver a
compilar %steris& con el soporte L/B! para el buSn de voS2
(e entra en la carpeta de las fuentes de %steris& y se siguen estos pasos:
c' @$sr@src@asterisk.1.8.20.1
9ake 'istc%ean
.@con"ig$re
:E@
9ake 9en$se%ect
!uando se recompila %steris&0 como ya se ha visto anteriormente0 hay que volver a seleccionar los
modulos %ddIons:
Luego en el menF M9oicemail Build LptionsN seleccionar ML/B!C(DL;%+*N:
(e guardan los cambios y se compila %steris&:
9ake
%ntes de instalar nuevamente los modulo de %steris&0 se para el servicio:
service asterisk sto
Luego se instala:
9ake insta%%
%hora0 para guardar los mensa$e de voS en la base de datos0 hay que crear la tabla2 *n algunos casos los
datos de las tablas se encuentran en la carpeta contrib/realtime/mysql de las fuentes de %steris& como
es el caso para los mensa$es de voS2
91sB% .$ root .sesa9o asterisk [ contri(@rea%ti9e@91sB%@voice9ai%;9essages.sB%
!reada la tabla hay que modificar dos par#metros en el archivo voicemail2conf:
nano @etc@asterisk@voice9ai%.con"
modificar estas dos lineas:
:E?
Jodbcstorage=asteris+
Jodbctable=mensa<es
para que queden:
odbcstorage=asteris+
odbctable=voicemail5messages
(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 .rvvvvvvvvvvvvvvvvvv
!LI" 9o'$%e $n%oa' a;voice9ai%.so
77 Enre%istered a##lication .Poice9ail.
77 Enre%istered a##lication .Poice9ail9ain.
77 Enre%istered a##lication .9ail'oBEBists.
77 Enre%istered a##lication .P93uthenticate.
77 Enre%istered a##lication .P92ayCa$e.
77 Enre%istered custo$ function 93A>L<OEOA2(2
77 9ana%er unre%istered action Poice$ailEsers>ist
!LI" 9o'$%e %oa' a;voice9ai%.so
>oaded a##voice$ail.so
77 Farsin% ./etc/asterisk/voice$ail.conf." 77 Nound
77 Farsin% ./etc/asterisk/users.conf." 77 Nound
77 1e%istered a##lication .Poice9ail.
77 1e%istered a##lication .Poice9ail9ain.
77 1e%istered a##lication .9ail'oBEBists.
77 1e%istered a##lication .P93uthenticate.
77 1e%istered a##lication .P92ayCa$e.
77 1e%istered custo$ function .93A>L<OEOA2(2.
77 9ana%er re%istered action Poice$ailEsers>ist
>oaded a##voice$ail.so 7R !Comedian ?ail !Roicemail 0stem) 1it* O=FC torage)
8or lo que aparece en negrita parece que si2 8ara probarlo0 desde la extensin 1>>1 o 1>>: se llama la
extensin 1>>> y se de$a un mensa$e en el buSn de voS2
8ara averiguar que el mensa$e ha sido guardado en la tabla:
91sB% .$ root .sesa9o
mysql" $se asterisk
:EB
mysql" se%ect 'irE9sgn$9Econte3tEca%%eri' "ro9 voice9ai%;9essagesS
/--------------------------------------------------/--------/-----------------/-----------------/
5 dir 5 $s%nu$ 5 conteBt 5 callerid 5
/--------------------------------------------------/--------/-----------------/-----------------/
5 /var/s#ool/asterisk/voice$ail/default/1)))/ACL<O 5 ) 5 $acro-voice$ail 5 WTutanoW S1))1R 5
/--------------------------------------------------/--------/-----------------/-----------------/
1 row in set ().)) sec!
8erfecto[[
14.3 <$zones 'e voz en $na (ase 'e 'atos
%dem#s de los mensa$es de voS0 tambi5n los buSones de voS se pueden guardar en una base de datos2
*n este caso se utiliSar# el ;ealtime din#mico2 La venta$a0 como ya se ha dicho anteriormente0 es que
esto permite modificar los valores directamente desde la base de datos o desde una aplicacin =eb que
traba$e con la base de datos22
Los pasos a seguir son:
crear la tabla en la base de datos
configurar el realtime din#mico
reiniciar asteris&
!omo para la tabla de los mensa$es de voS0 se utiliSar# la tabla presente en las fuentes de %steris&:
c' @$sr@src@asterisk.1.8.20.1@contri(@rea%ti9e@91sB%@
91sB% .$ root .sesa9o asterisk [ voice9ai%.sB%
!reada la tabla se configura el realtime din#mico:
nano @etc@asterisk@e3tcon"ig.con"
(e modifica esta linea:
Jvoicemail =N odbcBasteris+
para que quede:
voicemail =N odbcBasteris+Bvoicemail
(e guardan los cambios y se reinicia %steris&:
service asterisk restart
:E<
%hora se configura el buSn de voS de la extensin 1>>@ Ola extensin configurada en (I8 realtimeP en
la tabla voicemail a trav5s de =ebmin:
:EA
*n la tabla aparecen todas las opciones que se pueden configurar para un buSn de voS2 (e termina
presionando el botn M(aveN y desde la extensin 1>>@ se marca el E< para probar la configuracin2 (i
todo funciona0 ya se ha terminado con la configuracin de los buSones de voS2
:EE
Cait$%o XV
=as con"erencias a$'io
*n %steris& una funcionalidad bastante interesante es la de las conferencias audio2 8ara utiliSar esta
funcionalidad0 existen dos aplicaciones:
meetme
confbridge
La primera es la m#s conocida y ha sido implementada en %steris& desde las primeras versiones2
'eetme se apoya a /%6/I para generar la sincroniSacin de los canales audios presentes en la
conferencia creando una canal pseudoI/%6/I para cada una2 (in /%6/I instalado0 meetme no
funciona2 !onfbridge ha sido aadida a %steir&s a partir de la versin 12B212H y no necesita /%6/I
para funcionar0 pero implementa menos funciones y no se puede configurar en ;ealtime din#mico2 La
configuracin de meetme se efectFa a partir de un archivo dedicado mientras las conferencias creadas
con !onfbridge no necesitan configuracin previa2
1L.1 9eet9e.con"
!omo para los dem#s archivos de configuracin de %steris&0 se presentan los par#metros con una breve
descripcin2 *n negrita los valores que se asignar#n2 %l final de la tabla el archivo completo2
0ar!9etro ,escrici&n
YgeneralZ Inicia la parte general de configuracin
audiobuffers ,umero de paquetes audio de :>ms que ser#n
guardados en un buffer de memoria cuando
pertenecen a canales que no son /%/6I2 *sto
permite sincroniSar el audio de los distintos
participantes y evitar retrasos2 8uede ser un valor
entre : y 3:2 9alor 32
schedule *ste par#metro va configurado en yes solamente si
se usan las conferencias en realtime O%;%P2 *n
caso contrario hay que de$arlo en no
logmembercount (i las conferencias est#n configuradas en ;ealtime
este par#metro actualiSa la tabla cada veS que un
usuario entre o salga de la conferencia2 9alor 1es
fuSSystart 6ay una conferencia programada a las A de la
maana2 *ste par#metro se utiliSa para definir si
un usuario puede o no entrar en la conferencia si
5sta no ha empeSado2 3>> es el nFmero de
segundos2 *$emplo2 (i el usuario entra a la <:??
ser# aceptado porque puede entrar hasta ? minutos
0ar!9etro ,escrici&n
O300 segundosP antes del comienSo de la
conferencia2 (i entra a las <:?> ser# rechaSado2
.unciona solamente en ;ealtime
earlyalert *ste valor Osiempre en segundosP define si al
usuario que intenta entrar en una conferencia
programada le ser# anunciado o no que la
conferencia todava no ha empeSado2 !on el valor
en 36000 si entra cuando falta menos de una hora
recibir# este aviso2 (i entra m#s de una hora antes
se le anunciar# que la conferencia no existe2
endalert !uando falten los segundos indicados en este
par#metro para que termine una conferencia
programada0 a los usuario se les presentar# un
aviso2 9alor 120
YroomsZ a partir de esta etiqueta inicia la configuracin de
las conferencias2 La sintaxis es:
con" QK con"no\Ein]\Ea'9inin]
conf =" 3?>> (e configura la primera sala de conferencia sin
8I, de usuario y 8I, de administrador
conf =" 3?>101:3@ (e configura la segunda sala de conferencia con
8I, de usuario 1:3@ y sin 8I, de administrador
conf =" 3?>:01:3@0?B<A (e configura una tercera sala de conferencia con
8I, de usuario 1:3@ y 8I, de administrador ?B<A
(e renombra el archivo predefinido:
9v @etc@asterisk@9eet9e.con" @etc@asterisk@9eet9e.con".o%'
y se crea uno nuevo con los par#metros indicados en la tabla:
nano @etc@asterisk@9eet9e.con"
KgeneralL
audiobuffers=%"
sc*edule=no
logmembercount=0es
fu,,0start=%00
earl0alert=%$00
endalert=("0
KroomsL
conf =N %500
3>:
conf =N %50(B("%;
conf =N %50"B("%;B5$C'
(e guardan los cambios y se entra en la consola de %steris&:
asterisk .rvvvvvvvvvvvvvvvvvvvv
se recarga el modulo appCmeetme
!LI" 9o'$%e re%oa' a;9eet9e.so
se revisa la sintaxis de la aplicacin meetme:
!LI" core s2ow a%ication 9eet9e
!omo se puede ver hay muchos par#metros y opciones que se pueden configurar2
6ay otras aplicaciones relacionadas con las conferencias:
!LI" core s2ow a%ication 9eet9e Om#s la tecla tabuladorP
9eet9e 9eet9e3d$in 9eet9eChannel3d$in 9eet9eCount
Las aplicaciones disponibles son cuatro2 La primera es para entrar en una conferencia0 la segunda para
administrarla0 la tercera es para controlar un canal de la conferencia y la tercera para conocer el numero
de usuarios presentes en una conferencia2
!LI" B$it
%hora se modifica el dialplan para utiliSar las conferencias configuradas en el archivo meetme2conf:
nano @etc@asterisk@e3tensions.con"
despu5s del contexto internas se aade un nuevo contexto:
KconferenciasL
exten =N 5%50K0("LB(B?eetme!EV>Q7>NWBsc?!default))
same =N nBOangup
Llamando la extensin 3?>>03?>1 o 3?>: se entrar# en el cuarto de conferencia Ocomo configurado en
meetme2confP
Las tres opciones:
s I !on esta opcin se activa el menF del cuarto de conferencias para usuarios y
administradores2 'arcando la tecla asterisco se escuchar# el menF
3>3
c I %l entrar en un cuarto de conferencia se le anunciar# al usuario el nFmero de personas
presentes
'OdefaultP I !uando en el cuarto de conferencia est# solamente una persona0 5sta escuchara la
mFsica de espera de la clase defaultN
*xiste la posibilidad de crear cuartos de conferencias de forma din#mica Osin tener que configurarlos en
el archivo meetme2confP2 % seguir un e$emplo que se va a aadir al dialplan en el contexto
conferencias:
exten =N %5(0B(B?eetme!B=?!default))
same =N nBOangup
8rimero no se indica el nFmero del cuarto de conferencias y se usa la opcin / que permite definir la
extensin 3?1> como cuarto de la conferencia y un 8I, para entrar2 *l 8I, de la conferencia ser# el
digitado por la primera persona que entre2 (i en lugar de la opcin , se pone la opcin ' no se
necesitar# degitar un 8I, para el cuarto de conferencia2
Ltro e$emplo que se puede aadir al dialplan es crear una conferencia y definir como numero m#ximo
de participantes 1>2 *sto se hace con una 'acro2 *n el contexto conferencias se pone:
exten =N %5"0B(Bet!confmax=(0)
same =N nB?acro!meetme)
same =N nBOangup
y al final del archivo se aade la 'acro:
Kmacro&meetmeL
exten =N sB(B?eet?eCount!EV?/C.O5>Q7>NWBcount)
same =N nB3otoif!EKEVcountW N EVconfmaxWLYllena)
same =N nB?eet?e!EV?/C.O5>Q7>NWB=)
same =N nBOangup
same =N n!llena)B-la0bac+!conf&invalid)
same =N nBOangup
-na explicacin2 8rimero se asocia a la variable confmax el numero 1> Oel numero m#ximo de
participantes permitidos en la conferenciaP y luego se llama la macro meetme2 !on la primera lnea de
la macro se controla con la aplicacin 'eetme!ount cuantos usuarios est#n en la conferencia 3?:> y se
asocia ese valor a la variable count2 (i el numero contenido en la variable count es mayor al numero
contenido en la variable confmax O1>P se va a la lnea con la etiqueta OllenaP donde se comunicar# que
la conferencia no es valida y se colgar# la llamadaU si es menor el usuario podr# entrar al cuarto de
conferencias2
8ara terminar la configuracin del dialplan0 para que las extensiones tengan acceso al contexto
conferencias hay que aadir la linea en negrita al contexto externas y locales:
YexternasZ
3>@
include =" internas
include =" internacio
include =" par&edcalls
include =" test
inc%$'e QK con"erencias
YlocalesZ
include =" internas
include =" auten
include =" par&edcalls
include =" test
inc%$'e QK con"erencias
(e guardan los cambios y se actualiSa el dialplan:
asterisk .rvvvvvvvvvvvv
!LI" 'ia%%an re%oa'
%hora desde las extensiones 1>>> y 1>>1 se marca el numero 3?>> para entrar en la primera
conferencia configurada en el archivo meetme2conf2
8ara ver las extensiones presentes en la conferencia:
!LI" 9eet9e %ist 3L00
Eser 8" )1 1))) callerid7Nulano Channel" 2AF/1)))-)))))))3 (un$onitored! ))")2"*5
Eser 8" )2 1))1 Tutano Channel" 2AF/1))1-))))))), (un$onitored! ))"))"53
2 users in that conference.
8ara sacar un usuario de la conferencia:
!LI" 9eet9e kick 3L00 1
77 2ettin% %lo'al varia'le .9EE(9E3?9AC2(3(E2. to .<=.
-- S2AF/1)))-)))))))3R Flayin% .conf-kicked.alaw. (lan%ua%e .es.!
-- EBecutin% 035))-eBternas"24 @an%u#(W2AF/1)))-)))))))3WD WW! in new stack
)uedar#:
!LI" 9eet9e %ist 3L00
Eser 8" )2 1))2 9en%ano Channel" 2AF/1))2-)))))))5 (un$onitored! ))")*")+
1 user in that conference.
8ara probar la 'acro desde la extensin 1>>> se marca 3?:>2
3>?
1L.2 A%icaci&n Con"<ri'ge
8ara conocer la sintaxis de la aplicacin !onfBridge:
!LI" core s2ow a%ication Con"<ri'ge
-7 Anfo a'out a##lication .ConfLrid%e. 7-
02yno#sis4
Conference 'rid%e a##lication.
0?escri#tion4
Enters the user into a s#ecified conference 'rid%e. (he user can eBit the
conference 'y han%u# only.
(he Goin sound can 'e set usin% the .C<CNL1A?QEK<AC2<EC?. varia'le and
the leave sound can 'e set usin% the .C<CNL1A?QE>E3PE2<EC?. varia'le. (hese
can 'e uniMue to the caller.
C<(E" (his a##lication will not auto$atically answer the channel.
02yntaB4
ConfLrid%e(0confno40Do#tions4!
03r%u$ents4
confno
(he conference nu$'er
o#tions
a" 2et ad$in $ode.
3" 2et $arked $ode.
c" 3nnounce user(s! count on Goinin% a conference.
$" 2et initially $uted.
90(class!4" Ena'le $usic on hold when the conference has a sin%le
caller. <#tionallyD s#ecify
a $usiconhold class to use. Af one is not #rovidedD it will use the
channel.s currently set $usic classD or .default..
1" ?o not #lay $essa%e when first #erson enters
s" Fresent $enu (user or ad$in! when .6. is received
(send to $enu!.
w" Jait until the $arked user enters the conference.
3>B
M" Iuiet $ode (don.t #lay enter/leave sounds!.
02ee 3lso4
Cot availa'le
!omo esta aplicacin no contesta autom#ticamente el canal0 para configurarla en el dialplan hay que
iniciar el bloque con un %ns4er:
!LI" B$it
nano @etc@asterisk@e3tensions.con"
*n el contexto conferencias se aade:
exten =N %5%0B(B/ns1er
same =N nBConfFridge!%5%0B?cs)
same =N nBOangup
(e guardan los cambios y se actualiSa el dialplan:
asteris+ &rvvvvvvvvvvvvvvv
!LI" 'ia%%an re%oa'
%hora desde la extensin 1>>> se marca el numero 3?3>2 % diferencia de meetme0 con !onfBridge no
se puede0 desde la consola de %steris&0 controlar los participantes presentes0 ni hacer otros tipos de
operaciones2
1L.3 Meet9e en 6ea%ti9e ,in!9ico
!omo se ha comentado anteriormente0 es posible configurar las conferencias en ;ealtime din#mico2 Lo
primero es crear la tabla en la base de datos %steris&:
91sB% .$ root .sesa9o
mysql" $se asterisk
mysql" C.>/7> 7/FL> AmeetmeA !
AconfnoA c*ar!'0) NO7 N6LL default D0DB
AstarttimeA datetime NO7 N6LL default D0000&00&00 00G00G00DB
AendtimeA datetime default N6LLB
ApinA c*ar!"0) default N6LLB
AoptsA c*ar!(00) default N6LLB
AadminpinA c*ar!"0) default N6LLB
AadminoptsA c*ar!(00) default N6LLB
3><
AmembersA int!(() NO7 N6LL default D0DB
AmaxusersA int!(() NO7 N6LL default D0DB
-.@?/.2 I>2 !AconfnoABAstarttimeA)
)J
mysql" B$it
!reada la tabla0 se modifica el archivo extconfig2conf
nano @etc@asterisk@e3tcon"ig.con"
se busca esta linea:
Jmeetme =N m0sHlBgeneral
y se modifica para que quede:
meetme =N odbcBasteris+Bmeetme
(e guardan los cambios y se modifica el par#metro schedule del archivo meetme2conf para permitir la
creacin de conferencias programadas en ;ealtime:
nano @etc@asterisk@9eet9e.con"
sc*edule= no
se cambia a:
sc*edule=0es
(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 est#ndar de
%steris&0 hay que descargarlas:
c' @t9
wget 2tt)@@www.voztovoice.org@t9@con"ro9ts.tar
descomprimir el paquete:
tar .3" con"ro9ts.tar
y moverlas en la carpeta de la locuciones en ingles:
3>A
9v T.wav @var@%i(@asterisk@so$n's@en
%hora para la prueba se configuran dos conferencias a trav5s de =ebmin2 La idea es crear una que
inicie dentro de ?> minutos y otra que inicie dentro de ? minutos y que las dos tengan una duracin de
una hora2
(e guardan los datos presionando el botn (ave2 La segunda:
Las opciones que aparecen en las dos conferencias para los usuarios:
3>E
c G anuncia los usuarios presentes en la conferencia
I G obliga al usuario que entra a la conferencia a grabar su nombre
s G se activa la tecla M^N para entrar en un menF que permite modificar algunos par#metros
personales Ovolumen de la conferencia0 volumen del micrfono0 etc5teraP2
La Fnica diferencia con las opciones del administrador es la opcin a que activa el modo administrador2
8ara terminar hay que aadir las dos conferencias en el dialplan
nano @etc@asterisk@e3tensions.con"
en el contexto conferencias se aade el siguiente bloque:
exten =N 5500K0(LB(B?eetme!EV>Q7>NW)
same =N nBOangup
(e guardan los cambios y se actualiSa la configuracin
asterisk .rvvvvvvvvvvvvvvvvvv
!LI" 'ia%%an re%oa'
%hora se hace una prueba llamando primero la conferencia ?>>> y luego la ?>>12 *n el primer caso un
anuncio avisar# que la conferencia no ha empeSado0 en el segundo0 como faltan menos de ? minutos
para que empiece0 de$a entrar el usuario Ocomo configurado en el par#metro fuSSystart0 3>> segundosP2
1L.4 A%icaci&n 0age
La aplicacin 8age se utiliSa para crear conferencias instant#neas llamando un grupo de extensiones
simult#neamente2 /ependiendo del tipo de opciones configuradas0 se podr#n crear distintos tipos de
escenarios:
solamente quien ha iniciado la llamada podr# hablar
todas las extensiones podr#n hablar
como sistema de intercomunicacin para comunicar breves mensa$es a la persona llamada Oel
tel5fono del destinatario abrir# la linea en autom#ticoP
La sintaxis de la aplicacin es:
0age8Tec2no%og1@6eso$rce\gTec2no%og12@6eso$rce2\g...]]\Eotions\Eti9eo$t]]:
y las opciones disponibles:
d G audio en ambas direcciones
i G no se tomar#n en cuenta intentos de transferir la llamada
31>
q G modo silencioso0 el llamante no escuchar# un beep
r G se grabar# la conferencia en un archivo audio
s G solo se intentar# incluir en las conferencias las extensiones cuyo estado sea M,LDCI,-(*N
%OxP G enva un anuncio a todos los participantes de la conferencia2 x es el nombre del archivo
audio que contiene la locucin
n G no enva un anuncio a todos los participantes de la conferencia2 Implica que %OxP sea
presente
-na prima forma de probar la aplicacin es:
exten =N 50(B(B-age!@-/(00(^@-/(00")
same =N nBOangup
-na veS que las dos extensiones contesten0 solamente la 1>>> tendr# activado el audio2
-na variacin de este bloque es:
exten =N 50"B(B-age!@-/(00(^@-/(00"Bd)
same =N nBOangup
*n este caso todas las extensiones tendr#n el micrfono activado2
-tiliSar 8age como sistema de intercomunicacin puede ser muy Ftil0 por e$emplo0 en una empresa
donde se quiera comunicar a todos los empleados un anuncio2 *n este caso se conecta a %steris& una
%D% tipo el 8%1 de (,L'0 que a su veS se puede conectar a un sistema de amplificacin audio2
Llamando la extensin asociada al 8%10 este contestar# la llamada en autom#tico y el anuncio ser#
difundido por el sistema de parlantes conectados al %D%2
*l mismo sistema se utiliSa con los tel5fonos (I82 /ependiendo de la marca hay que enviar una
cabecera especifica en el I,9ID* para que el tel5fono mismo la reconoSca y conteste la llamada en
autom#tico activando el parlante Oalta voSP del tel5fono2 Las cabeceras se aaden a trav5s de la
aplicacin Sia''2ea'er de %steris&
*stas cabeceras cambian segFn la marca de los tel5fonos2 %lgunos e$emplos:
%astra I (I8%dd6eaderO%lertIInfo: info=alertIautoans4erP
8olycom I (I8%dd6eaderO%lertIInfo: ;ing %ns4erP
(nom I (I8%dd6eaderO!allIInfo: sip:domain2comXUans4erIafter=>P
!isco (8% I (I8%dd6eaderO!allIInfo:XUans4erIafter=>P
Qealin& I (I8%dd6eader O8I%utoIans4er: normalP
%hora in una hipot5tica oficina donde el gerente quiera hacer una anuncio a la secretaria y ambos est#n
utiliSando tel5fonos Qealin& cuya extensiones son 1>>> para el gerente y 1>>1 para la secretaria0 el
dialplan sera:
exten =N 50%B(B@-/ddOeader !-&/uto&ans1erG normal)
311
same =N nB-age!@-/(00(Bi)
same =N *angup
*l gerente marca ?>3 y hace el anuncio a la secretaria cuyo tel5fono habr# contestado en autom#tico
activando el parlante2
8ara terminar este p#rrafo se modifica el dialplan:
nano @etc@asterisk@e3tensions.con"
y en el contexto conferencias se aaden los dos bloques que siguen:
exten =N 50(B(B-age!@-/(00(^@-/(00")
same =N nBOangup
exten =N 50"B(B-age!@-/(00(^@-/(00"Bd)
same =N nBOangup
(e guardan los cambios y se actualiSa el dialplan:
asterisk .rvvvvvvvvvvvv
!LI" 'ia%%an re%oa'
/esde la extensin 1>>> se marca primero el numero ?>1 y luego el ?>: para probar la configuracin
31:
Cait$%o XV+
,istri($ci&n a$to9!tica 'e %%a9a'as / Co%as 'e esera
!uando se llama un centro de atencin al cliente0 sin saberlo0 se est# adentro de un sistema de
distribucin autom#tica de llamadas2 i!mo funcionaj !ada llamada que llega se pone en una cola de
espera respetando la prioridad con que ha llegado2 !uando uno de los operadores que atienden las
llamadas est# libre0 la llamada sera transferida a ese operador2 % lo largo de la espera0 segFn la
configuracin0 el llamante escuchar# distintos anuncios Oque posicin tiene en la cola0 el tiempo
estimado de espera y un largo etc5teraP2
)uiS#s este es el servicio m#s importante y estrat5gico para una empresa2 *n base a su calidad y el
tiempo promedio de espera0 los clientes estar#n evaluando la misma empresa2
*n %steris& la configuracin de las colas de espera se puede realiSar de dos formas distintas:
con agentes/operadores est#ticos
con agentes/operadores din#micos
La primera opcin ya se ha vuelto obsoleta porque obliga el agente a estar permanentemente conectado
a la cola sin poder efectuar otro tipo de actividad2 *n las configuraciones actuales0 se utiliSan casi
exclusivamente agente din#micos2 Las diferencias entre las dos soluciones se presentar#n en los
prximos p#rrafos2 (e empieSa este capitulo con una configuracin para agentes est#ticos que se realiSa
en el archivo agent2conf2
16.1 =os Agentes
8ara configurar los agentes que atender#n las llamadas entrantes a las distintas colas hay que modificar
el archivo agents2conf2 *n la tabla que sigue los distintos par#metros con una breve descripcin2 *n
negrita el valor asociado a cada par#metro2 %l final del la tabla el archivo completo de configuracin2
0ar!9etro ,escrici&n
YgeneralZ etiqueta que da inicio a la parte general del
archivo
multiplelogin /efine si est# permitido a una extensin
conectarse como agente mFltiple2 9alor no
YagentsZ % partir de esta etiqueta inicia la configuracin de
los agentes
maxlogintries ,umero de intentos permitidos a un agente para
autenticarse2 9alor 3
autologoff ,umero de segundos que un agente tiene para
contestar una llamada entrante2 (i no contesta
dentro de ese tiempo0 ser# desconectado de la
0ar!9etro ,escrici&n
cola2 9alor 1L
autologoffunavail 1es = si la extensin desde la cual el agente se
conecta se vuelve no disponible0 autom#ticamente
el agente ser# desconectado de la cola
ac&call 8ara atender una llamada un agente tiene que
presionar la tecla configurada en el prximo
par#metro2 9alor no Ono tiene que presionarlaP
acceptdtmf d
endcall 1es = permite al agente terminar una llamada
presionando la tecla configurada en el prximo
par#metro
enddtmf T
4rapuptime ,umero de mili segundos que %steris& esperar#
antes de volver a llamar un agente que acaba de
atender una llamada2 9alor L000
musiconhold 'Fsica de espera predefinida para el agente2 9alor
'e"a$%t
Ugoodbye=vmIgoodbye locucin que el agente escuchar# al terminar una
llamada2 (i se de$a comentado ser# la predefinida
OvmIgoodbyeP
updatecdr %ctualiSar o no el !/; con el nombre del agente2
9alor no
Ugroup obsoleto2 ,o usar
recordagentcalls grabar o no las llamadas de los agentes2 9alor no
recordformat .ormato audio de las llamadas grabadas2 9alor
wav
Uurlprefix=http://localhost/calls/ el prefi$o del nombre del los archivos grabados2
8uede ser una -;L2 *$emplo
http://4442voStovoice2org/calls2 (e de$a
comentado
Usavecallsin=/var/calls /e manera predefinida las llamadas grabadas se
guardan en la carpeta: /var/spool/asteris&/monitor
(i se quiere personaliSar la carpeta se indica en
este par#metro2 (e de$a comentado
customCbeep %visa al agente que est# conectado
permanentemente a la cola0 de la llegada de una
llamada2 9alor (ee
agent %hora se configuran los agentes2 Las sintaxis es:
31?
0ar!9etro ,escrici&n
agent =" agentid0agentpass4ord0name
9alor: 2000E1234E7$%ano
agent 2001E123LEc$tano
agent 2002E1236 Mengano
(e renombra el archivo predefinido:
9v @etc@asterisk@agents.con" @etc@asterisk@agents.con".o%'
se crea uno nuevo:
nano @etc@asterisk@agents.con"
y se aaden los par#metros de la tabla:
KgeneralL
multiplelogin=no
KagentsL
maxlogintries=%
autologoff=(5
autologoffunavail=0es
ac+call=no
acceptdtmf=#
endcall=0es
enddtmf=Z
1rapuptime=5000
musicon*old=default
Jgoodb0e=vm&goodb0e
updatecdr=0es
Jgroup
recordagentcalls=no
recordformat=1av
Jurlprefix=*ttpG//local*ost/calls/
Jsavecallsin=/var/calls
custom5beep=beep
agent =N "000B("%;B8ulano
agent =N "00(B("%5Bbutano
agent =N "00"B("%$B?engano
(e guardan los cambios2 (e entra en la consola de %steris& y se recarga el modulo c2an;agent.so:
asterisk .rvvvvvvvvvvvvvv
31B
!LI" 9o'$%e re%oa' c2an;agent.so
8ara ver la lista de los agentes configurados:
!LI" agent s2ow
2))) (Nulano! not lo%%ed in ($usiconhold is .default.!
2))1 (Zutano! not lo%%ed in ($usiconhold is .default.!
2))2 (9en%ano! not lo%%ed in ($usiconhold is .default.!
3 a%ents confi%ured 0) online D 3 offline4
!LI" B$it
8ara que los agentes puedan autenticarse y atender las colas de que son miembros0 se utiliSa en el
dialplan la aplicacin %gentlogin:
nano @etc@asterisk@e3tensions.con"
en el contexto internas0 se aade el siguiente bloque:
e3ten QK ;200\012]E1EAgent%ogin8`a-XT-#b:
sa9e QK nECang$
(e guardan los cambios y se actualiSa el dialplan2
asterisk .rvvvvvvvvvvvvvvvvvvvv
!LI" 'ia%%an re%oa'
%hora desde la extensin 1>>> se marca el numero :>>>0 y cuando el sistema lo pide0 se ingresa la
clave del agente :>>> O1:3@P seguida por la tecla numero W2 -na veS autenticado0 el agente empeSar# a
escuchar la mFsica de espera predefinida0 esperando de atender los clientes2
!LI" agent s2ow
2))) (8ulano) logged in on @-/(000&00000001 is idle ($usiconhold is .default.!
2))1 (Zutano! not lo%%ed in ($usiconhold is .default.!
2))2 (9en%ano! not lo%%ed in ($usiconhold is .default.!
3 a%ents confi%ured 01 online D 2 offline4
*s poco productivo tener una agente conectado permanentemente a una cola adem#s utiliSando parte de
la banda disponible2 *s mucho m#s lgico conectar los agentes de forma din#mica y que mientras
esperen las llamadas de los clientes0 puedan utiliSar el tel5fono para otro tipo de actividad2 *sta parte se
ver# en el ultimo p#rrafo de este capitulo2 *s hora de configurar las colas2

31<
16.2 =as co%as 'e esera / B$e$e.con"
*n el archivo queues2conf se configuran las distintas colas de espera2 *n la tabla que sigue los distintos
par#metros con una breve descripcin2 *n negrita el valor asociado a cada par#metro2 %l final de la
tabla el archivo completo2
0ar!9etro ,escrici&n
YgeneralZ *tiqueta que define la parte general del archivo
persistentmembers 1es = se guardan los datos de los miembros de la cola
activos en la base de datos interna de %steris&2 (i se
reinicia la 8BH los miembros ser#n reasignados a las
colas correspondientes2 9alido solamente para agentes
din#micos
autofill ,ormalmente una cola funciona de la siguiente manera2
6ay unos cuantos usuarios esperando por ser atendidos
por los agentes2 !uando el usuario que est# de primero
en la cola viene atendido el segundo se vuelve primero
e ser# atendido por el primer agente disponible2 *ste
comportamiento no tiene en cuenta que pueden haber
muchos agentes disponibles que podran atender los
clientes sin esperar que llegar#n a ser los primeros de la
cola de espera2 !on este par#metro se define otro tipo
de comportamiento2 Los clientes ser#n atendidos de
manera paralela hasta que haya agentes disponibles2 /e
esta forma se reducen considerablemente los tiempos
de espera2 9alor 1es
monitorItype el tipo de aplicacin utiliSada para grabar las
conversaciones de una cola2 8uede ser Mi39onitor o
monitor
updatecdr %ctualiSa o no el valor del campo dstchannel del !/;
Oel registro de las llamadasP con el nombre del agente2
9alor no
sharedClastcall (i un agente hace parte de m#s de una cola y se ha
definido su tiempo de descanso entre una llamada y
otra Oel par#metro 4raptimeP0 con este par#metro se
define si ese tiempo va respetado entre las distintas
colas de que el agente es miembro2 9alor 1es
YventasZ con esta etiqueta se define la primera cola de espera
que tendr# como nombre ventas
musiclass La mFsica de espera para los clientes en la cola2 9alor
'e"a$%t
Uannounce=queueIventas *ste par#metro permite crear un anuncio para que los
agentes que pertenecen a m#s de una cola sepan0 antes
31A
0ar!9etro ,escrici&n
de atender una llamada0 de que cola procede el cliente2
(e de$a comentado
strategy *n este par#metro se define la lgica con que se
transferir#n las llamadas presentes en una cola a los
agentes:
Leastrecent: %signa la siguiente llamada al
agente que m#s tiempo lleva sin atender una
llamada2
.e4estcalls: %signa la siguiente llamada al
agente que menos llamadas ha atendido2
;andom: %signa la siguiente llamada
aleatoriamente a cualquier agente disponible2
6inga%%: Llama todos los agentes disponibles a
la veS hasta que uno conteste2
;;'emory: /istribuye las llamadas Mpor
turnosN entre los agentes disponibles y
MrecuerdaN el Fltimo agente al que intent
llamar2
Linear) Llama los agentes siguiendo el orden
definido en este archivo de configuracin2 (i
son agentes din#micos segFn el orden con que
se han registrado a la cola
=random: asigna la llamada aleatoriamente
usando una m5trica basada en penalidades2
servicelevel 8ar#metro utiliSado para la estadsticas de la cola2 *n
base al numero de segundos configurados en este
par#metro0 en los reportes aparecer# el numero de
llamadas contestadas dentro del tiempo definido2 9alor
120
context (i el cliente en la cola antes de ser atendido presiona
una tecla del tel5fono ser# enviado al contexto definido
en este par#metro y a la prioridad correspondiente al
dgito que ha marcado2 9alor ventas.e3it
penaltymemberslimit *l sistema de penalidades se aplicar# solamente si los
agentes conectados a la cola son m#s que el numero
indicado en este par#metro2 9alor: 0
timeout *n la cola se pueden configurar dos distintos tipos de
tiempos de espera2 -no a nivel de aplicacin OdialplanP
define el tiempo m#ximo que un cliente podr# quedar
en la cola2 8asado ese tiempo sin ser atendido0 el
cliente saldr# de la cola y se e$ecutara la siguiente
prioridad presente en el dialplan2 *l segundo es el
31E
0ar!9etro ,escrici&n
tiempo m#ximo que timbrar# la extensin de un agente
antes de considerarlo no disponible y pasar al siguiente2
*ste par#metro y los siguientes dos se utiliSan para
definir que tipo de tiempo de espera tendr# prioridad2
*ste primer par#metro define por cuantos segundos
timbrar# la extensin del agente2 9alor: 1L
retry numero de segundos de espera antes de llamar otro
agente si el primero no ha contestado dentro de los 1?
segundos definidos en el par#metro anterior2 9alor: 4
timeoutpriority *n este par#metro se define si se toma en consideracin
el tiempo de espera definido a nivel de aplicacin o a
nivel de archivo de configuracin2 9alor a
OaplicacinP
4eight *l peso de la cola2 '#s alto el valor0 m#s prioridad
tendr# la cola2 (i hay agentes que atienden m#s de una
cola0 las colas con peso m#s alto ser#n atendidas con
mayor prioridad respecto a las colas con peso m#s ba$o2
9alor 0
4rapuptime Diempo de descanso de un agente entre una llamada y
otra Oen segundosP 9alor 1L
autofill *l mismo par#metro de la parte general del archivo se
puede configurar por cada cola separadamente2 9alor
1es
autopause 1es = lo agentes que no atender#n una llamada ser#n
puestos en pausa
maxlen ,umero m#ximo de personas que pueden estar
esperando en la cola2 9alor L0 (i se pone > no se fi$ar#
ningFn limite
setinterfacevar 1es = una serie de variables ser#n creadas $usto antes de
conectar un miembro de la cola con un cliente Ov5ase
archivo predefinido queues2confP
setqueueentryvar 1es = otra serie de variables ser#n creadas $usto antes
de conectar un miembro de la cola con un cliente
Ov5ase archivo predefinido queues2confP
setqueuevar 1es = otra serie de variables relacionadas con la cola
ser#n creadas $usto antes de conectar un miembro de la
cola con un cliente Ov5ase archivo predefinido
queues2confP
Umembermacro=macro %ntes de conectar el agente con el cliente se puede
e$ecutar la macro indicada en este par#metro2 (e de$a
3:>
0ar!9etro ,escrici&n
comentado
announceIfrequency !ada cuanto segundos anunciar al cliente en la cola su
posicin y tiempo estimado de espera2 9alor R0
minIannounceIfrequency 8ara evitar que cada veS que la posicin y/o el tiempo
estimado de espera de un cliente cambie se le presente
un anuncio0 este par#metro define un tiempo Oen
segundosP que se esperar# antes de comunicarle su
nueva posicin/tiempo estimado2 9alor 1L
UperiodicIannounceIfrequency=B> !ada cuantos segundos presentar un anuncio
personaliSado al cliente en la cola de espera2 (e de$a
comentado
UrandomIperiodicIannounce=no Los anuncios pueden ser presentados segFn un orden
aleatorioj (e de$a comentado
announceIholdtime anunciar $unto a la posicin en la cola el tiempo
estimado de espera2 8uede ser yes0 no0 u once Ouna sola
veSP
announceIposition %nuncia al cliente su posicin en la cola2 9alores:
yes G si
no G no se le anuncia
9ore I si la posicin del cliente en la cola de
espera es m#s alta del numero especificado en
el prximo par#metro0 se le anunciar# que hay
m#s de Mvalor del prximo par#metroN clientes
esperando en la cola
limit G solo los clientes con una posicin en la
cola de espera menor o igual al valor del
par#metro que sigue0 escuchar#n el anuncio de
su posicin en la cola de espera
announceIpositionIlimit L
announceIroundIseconds !on este par#metro se redondea los minutos y los
segundos de espera anunciados al cliente2 9alor 20
UqueueIyouarenext=queueIyouarenext % partir de esta linea se pueden personaliSar las
locuciones predefinidas de la cola de espera2
UqueueIthereare=queueIthereare
UqueueIcalls4aiting=queueIcalls4aiting
UqueueIholdtime=queueIholdtime
UqueueIminute=queueIminute
UqueueIminutes=queueIminutes
3:1
0ar!9etro ,escrici&n
UqueueIseconds=queueIseconds
UqueueIthan&you=queueIthan&you
UqueueIreporthold=queueIreporthold
UperiodicIannounce=queueIperiodicI
announce
UperiodicIannounce=anuncio10anuncio: en este par#metro se definen los anuncios peridicos
personaliSados separados por una coma2 (e de$a
comentado
UmonitorIformat=gsm]4av]4av@E formatos audio en que se grabar#n las conversaciones
de la cola de espera Osi se de$a comentado0 no se
grabaranP
monitorItype (e define la aplicacin para grabar la conversaciones2
8uede ser monitor y 9i39onitor
$oinempty *ste par#metro con el que sigue0 son los m#s
importantes en la configuracin de la cola2 %qu se
define si un cliente puede o no entrar a una cola de
espera si no hay agentes disponibles2 Los distintos
valores que se pueden utiliSar0 separados por una coma0
son:
paused G un agente es considerado no
disponible si est# en pausa
penalty G un agente es considerado no
disponible si el valor de su penalidad es menor
al valor asociado a la variable
)-*-*C'%HC8*,%LDQ
inuse G un agente es considerado no disponible
si el estado de su extensin es I,-(*
ringing G un agente es considerado no
disponible si su extensin est# timbrando
unavailable I un agente es considerado no
disponible si el estado de su extensin es
-,%9%IL%BL*
invalid I un agente es considerado no
disponible si el estado de su extensin es
I,9%LI/
un&no4n G un agente es considerado no
disponible si el estado de su extensin es
-,T,L=,
4rapup I un agente es considerado no
disponible si est# en su tiempo de descanso
O4raptimeP despu5s de haber atendido una
3::
0ar!9etro ,escrici&n
llamada
9alor: a$se'E$navai%a(%eEinva%i'E$nknown
leave4henempty este par#metro aplica a los clientes que ya est#n en la
cola de espera y en base a los valores indicados0 si
todos los agentes se vuelven no disponibles0 el cliente
ser# sacado de la cola2 9alor
a$se'E$navai%a(%eEinva%i'E$nknown
Uevent4hencalled = yes
Ueventmemberstatus = yes
*stos dos par#metros configurados en yes0 generan una
serie de eventos relacionados con la cola en el %'I de
%steris&
reportholdtime 1es = (e anuncia al agente0 antes de contestar la
llamada0 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 esperar# antes de
conectar el agente con el cliente2 /e esta forma aunque
hayan agentes disponibles0 el cliente esperar# ese
tiempo antes de ser conectado con un agente2 9alor L
timeoutrestart 1es = el tiempo de espera para que un agente conteste
una llamada se resetea si el estado de la extensin es
B-(Q o !L,+*(DIL,
Udefaultrule=myrule en el archivo queuerules2conf se configuran distintos
escenarios para mane$ar las colas con el sistema de
penalidades2 *n el caso que se haya configurado un
escenario para esta cola0 en este par#metro se define el
nombre2 (e de$a comentado
member =" %gent/:>>>
member =" %gent/:>>1
member =" %gent/:>>:
a partir de esta linea se definen los miembros de la
cola2 La sintaxis es:
member ="
tecnologa/extensin0penalidad0nombre0extensin
(e ponen los tres agentes configurados en el archivo
agent2conf
%hora se guardan los valores de la tabla en el archivo de configuracin de las colas2 (e renombra el
predefinido:
9v @etc@asterisk@B$e$es.con" @etc@asterisk@B$e$es.con".o%'
(e crea uno nuevo:
nano @etc@asterisk@B$e$es.con"
3:3
se aaden las siguientes lineas:
KgeneralL
persistentmembers=0es
autofill=0es
monitor&t0pe=mixmonitor
updatecdr=no
s*ared5lastcall=0es
KventasL
musicclass=default
Jannounce=Hueue&ventas
strateg0=ringall
servicelevel=("0
context=ventas&exit
penalt0memberslimit=0
timeout=(5
retr0=;
timeoutpriorit0=app
1eig*t=0
1rapuptime=(5
autofill=0es
autopause=0es
maxlen=50
setinterfacevar=0es
setHueueentr0var=0es
setHueuevar=0es
Jmembermacro=macro
announce&freHuenc0=90
min&announce&freHuenc0=(5
Jperiodic&announce&freHuenc0=$0
Jrandom&periodic&announce=no
announce&*oldtime=once
announce&position=more
announce&position&limit=5
announce&round&seconds=%0
JHueue&0ouarenext=Hueue&0ouarenext
JHueue&t*ereare=Hueue&t*ereare
JHueue&calls1aiting=Hueue&calls1aiting
JHueue&*oldtime=Hueue&*oldtime
JHueue&minute=Hueue&minute
JHueue&minutes=Hueue&minutes
JHueue&seconds=Hueue&seconds
JHueue&t*an+0ou=Hueue&t*an+0ou
JHueue&report*old=Hueue&report*old
Jperiodic&announce=anuncio(Banuncio"
3:@
Jmonitor&format=gsm]1av]1av;9
monitor&t0pe=mixmonitor
<oinempt0=pausedBunavailableBinvalidBun+no1n
leave1*enempt0=pausedBunavailableBinvalidBun+no1n
Jevent1*encalled = 0es
Jeventmemberstatus = 0es
report*oldtime=0es
ringinuse=no
memberdela0=5
timeoutrestart=0es
Jdefaultrule=m0rule
member =N /gent/"000
member =N /gent/"00(
member =N /gent/"00"
(e guardan los cambios y se recarga el modulo de la aplicacin de las colas en espera:
asterisk .rvvvvvvvvvvvvvvvvvvvvv
!LI" 9o'$%e re%oa' a;B$e$e.so
!LI" B$e$e s2ow ventas
ventas has ) calls ($aB 5)! in .rin%all. strate%y ()s holdti$eD )s talkti$e!D J")D C")D 3")D 2>").)_
within 12)s
9e$'ers"
3%ent/2))2 (Enavaila'le! has taken no calls yet
3%ent/2))) (Enavaila'le! has taken no calls yet
3%ent/2))1 (Enavaila'le! has taken no calls yet
Co Callers
!on queue sho4 ventas se muestran los datos de las colas2 Los comandos asociados a la aplicacin
queue:
!LI" 2e% B$e$e
Mueue add $e$'er 3dd a channel to a s#ecified Mueue
Mueue reload U#ara$eters5$e$'e 1eload MueuesD $e$'ersD Mueue rulesD or #ara$eters
Mueue re$ove $e$'er 1e$oves a channel fro$ a s#ecified Mueue
Mueue reset stats 1eset statistics for a Mueue
Mueue set #enalty 2et #enalty for a channel of a s#ecified Mueue
Mueue show 2how status of a s#ecified Mueue
Mueue U#ause5un#auseV $e$'er Fause or un#ause a Mueue $e$'er
Mueue show rules 2how the rules defined in Mueuerules.conf
!LI" B$it
(e sale de la consola y se pasa al dialplan:
3:?
nano @etc@asterisk@e3tensions.con"
en el contexto internas se ponen las siguientes lineas
e3ten QK 3000E1EAnswer
sa9e QK nEP$e$e8ventasE6:
sa9e QK nECang$
!on la opcin ;0 introducida con la versin 12A2H de %steris&0 cuando la llamada es enviada a un
agente0 el cliente de$ar# de escuchar la musca de espera y en su lugar escuchar# el tono de timbrado2
(e guardan los cambios y se recarga el dialplan:
asterisk .r3 ^'ia%%an re%oa'^
/esde la extensin 1>>> conectada a %steris&0 se marca la extensin 3>>>2 !omo no hay agentes
disponibles la llamada terminar# Oparte en negritaP:
II *xecuting Y3>>>_externas:1Z %ns4erOa(I8/1>>>I>>>>>>>?a0 aaP in ne4 stac&
II *xecuting Y3>>>_externas::Z )ueueOa(I8/1>>>I>>>>>>>?a0 aventas0;aP in ne4 stac&
=%;,I,+Y::>:?Z: appCqueue2c:B:>: queueCexec: >na(%e to 5oin B$e$e Uventasb
II *xecuting Y3>>>_externas:3Z 6angupOa(I8/1>>>I>>>>>>>?a0 aaP in ne4 stac&
%hora desde la extensin 1>>> se marca el numero :>>> Opara conectarse como agente a las colas de
esperaP2 -na veS conectado se entra a la consola de %steris&:
asterisk .rvvvvvvvvvvvvvvv
!LI" B$e$e s2ow ventas
ventas has > calls Omax ?>P in bringallb strategy O>s holdtime0 >s tal&timeP0 =:>0 !:>0 %:>0 (L:>2>\
4ithin 1:>s
'embers:
%gent/:>>: O-navailableP has ta&en no calls yet
Agent@2000 8#ot in $se: has ta&en no calls yet
%gent/:>>1 O-navailableP has ta&en no calls yet
,o !allers
*l agente :>>> est# disponible2 /esde la extensin 1>>1 se marca el numero 3>>>2 !uando el agente
Ola extensin 1>>>P reciba la llamada del cliente Ola extensin 1>>1P0 el estado de la cola de espera
ser#:
!LI" B$e$e s2ow ventas
ventas has ) calls ($aB 5)! in .rin%all. strate%y ()s holdti$eD )s talkti$e!D J")D C")D 3")D 2>").)_
within 12)s
9e$'ers"
3%ent/2))2 (Enavaila'le! has taken no calls yet
3%ent/2))) !Fus0) has taken no calls yet
3:B
3%ent/2))1 (Enavaila'le! has taken no calls yet
Co Callers
y al terminar la llamada:
!LI" B$e$e s2ow ventas
ventas has ) calls ($aB 5)! in .rin%all. strate%y ()s holdti$eD 28s talkti$e!D J")D C"1D 3")D 2>"1)).)_
within 12)s
9e$'ers"
3%ent/2))2 (Enavaila'le! has taken no calls yet
3%ent/2))) (Cot in use! has taken 1 calls (last was 2, secs a%o!
3%ent/2))1 (Enavaila'le! has taken no calls yet
Co Callers
!omo se ha visto0 si no hay agentes disponibles no se de$a entrar el cliente a la cola2 !omo se ha dicho
el llamante se enva a la prioridad que sigue2 (e puede crear otro escenario de este tipo:
nano @etc@asterisk@e3tensions.con"
en el contexto internas se pone
e3ten QK 3001E1EAnswer
sa9e QK nEP$e$e8ventas:
sa9e QK nEVoice9ai%81000*'e"a$%t:
sa9e QK nECang$
/e esta forma el llamante tendr# la oportunidad de de$ar un mensa$e en el buSn de voS2 (e guardan los
cambios y se recarga el dialplan2
asterisk .rvvvvvvvvvvvv
!LI" 'ia%%an re%oa'
/esde la extensin 1>>> se marca el 3>>1 Osin agentes conectadosP2
*xecuting Y3>>1_externas:1Z %ns4erOa(I8/1>>>I>>>>>>1<a0 aaP in ne4 stac&
*xecuting Y3>>1_externas::Z )ueueOa(I8/1>>>I>>>>>>1<a0 aventasaP in ne4 stac&
YLct :1 1B:?A:@EZ =%;,I,+Y1?:<>Z: appCqueue2c:?1B> queueCexec: -nable to $oin queue bventasb
*xecuting Y3>>1_externas:3Z VoiceMai%8^S+0@1000.0000001J^E ^1000*'e"a$%t^: in ne4 stac&
!omo no hay agentes disponibles0 la llamada ser# enviada al buSn de voS2
16.3 Agentes 'in!9icos
*n %steris& hay dos aplicaciones para aadir y quitar un miembro de una cola2 *stas dos aplicaciones
son:
3:<
%dd)ueue'ember
;emove)ueue'ember
i!ual es la diferencia con la aplicacin %gentloginj
La aplicacin %gentlogin es pensada para call center de grandes dimensiones2 *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 de la cola0 la aplicacin add)ueue'ember es mucho m#s funcional2
*n el plan de marcado0 contexto internas0 se aaden estos dos bloques:
nano @etc@asterisk@e3tensions.con"
e3ten QK TJ0E1EA''B$e$e9e9(er8ventasES+0@`aCA==-6+,8n$9:b:
sa9e QK nE0%a1(ack8agent.%oginok:
sa9e QK nECang$
e3ten QK TJ1E1E6e9oveB$e$e9e9(er8ventasES+0@`aCA==-6+,8n$9:b:
sa9e QK nE0%a1(ack8agent.%ogge'o"":
sa9e QK nECang$
!on el primer bloque las extensiones se aaden a la cola ventas0 con el segundo se quitan2
6ay dos aplicaciones m#s que permiten a los agentes din#micos ponerse en pausa y no atender las
llamadas para luego0 despu5s del MdescansoN volver a atender la cola2 6ay que acordarse que cuando un
agente se pone en pausa0 por como se ha configurado la cola0 el agente ser# considerado como no
disponible2 *stas dos aplicaciones se pueden aadir al plan de marcado de la siguiente forma:
e3ten QK TJ2E1E0a$seP$e$eMe9(er8ventasES+0@`aCA==-6+,8n$9:b:
sa9e QK nE0%a1(ack8(ee:
sa9e QK nECang$
e3ten QK TJ3E1E>na$seP$e$eMe9(er8ventasES+0@`aCA==-6+,8n$9:b:
sa9e QK nE0%a1(ack8(ee:
sa9e QK nECang$
Dodos los datos de las conexiones de los agentes din#micos se guardan en la base de datos interna de
%steris&2
(e guardan los cambios y se recarga el plan de marcado:
asterisk .rvvvvvvvvvvvvv
!LI" 'ia%%an re%oa'
3:A
%hora desde la extensin 1>>> se llama el numero ^<> y se mira lo que aparece en la base de datos de
%steris& y en la cola ventas:
!LI" 'ata(ase s2ow
/Iueue/Fersistent9e$'ers/ventas " 2AF/1)))])])]2AF/1)))]2AF/1)))
!LI" B$e$e s2ow ventas
ventas has ) calls ($aB 5)! in .rin%all. strate%y ()s holdti$eD 1s talkti$e!D J")D C"1D 3")D 2>"1)).)_
within 12)s
9e$'ers"
3%ent/2))2 (Enavaila'le! has taken no calls yet
3%ent/2))) (Enavaila'le! has taken 1 calls (last was 3+* secs a%o!
3%ent/2))1 (Enavaila'le! has taken no calls yet
2AF/1))) (dyna$ic! (Cot in use! has taken no calls yet
Co Callers
!LI" B$it
!omo en el archivos de las colas de espera se ha configurado el par#metro ersistent9e9(ersQ1es0 si
se reinicia %steris&0 los datos del agente deben permanecer en la base de datos2
service asterisk restart
asterisk .rvvvvvvvvvvvvvvvvvvvvvvv
!LI" 'ata(ase s2ow
/Iueue/Fersistent9e$'ers/ventas " 2AF/1)))])])]2AF/1)))]2AF/1)))
*l agente no se ha borrado de la cola de espera2 8ara probarlo desde la extensin 1>>1 se marca el
numero 3>>12
!omo el agente din#mico quiere almorSar0 se pone en pausa marcando el numero ^<:
(i se mira el estado de la cola:
!LI" B$e$e s2ow ventas
ventas has > calls Omax ?>P in bringallb strategy O:s holdtime0 :s tal&timeP0 =:>0 !:10 %:>0 (L:1>>2>\
4ithin 1:>s
'embers:
%gent/:>>: O-navailableP has ta&en no calls yet
%gent/:>>> O-navailableP has ta&en no calls yet
%gent/:>>1 O-navailableP has ta&en no calls yet
(I8/1>>> OdynamicP 8a$se': O,ot in useP has ta&en no calls yet
,o !allers
(e podr# comprobar que efectivamente el agente din#mico est# en pausa2 8ara volver activo desde la
3:E
extensin 1>>> se marca el numero ^<32 *l resultado:
!LI" B$e$e s2ow ventas
ventas has > calls Omax ?>P in bringallb strategy O:s holdtime0 :s tal&timeP0 =:>0 !:10 %:>0 (L:1>>2>\
4ithin 1:>s
'embers:
%gent/:>>: O-navailableP has ta&en no calls yet
%gent/:>>> O-navailableP has ta&en no calls yet
%gent/:>>1 O-navailableP has ta&en no calls yet
(I8/1>>> OdynamicP O,ot in useP has ta&en no calls yet
,o !allers
Derminada la prueba se quita la extensin 1>>> de la cola de espera llamando desde esa extensin el
numero: ^<1
(e averigua en la base de datos de %steris& que efectivamente el agente ya no est# registrado:
!LI" 'ata(ase s2ow
Qa no aparece la linea:
/Iueue/Fersistent9e$'ers/ventas " 2AF/1)))])])]2AF/1)))]2AF/1)))
16.4 -sta'Msticas 'e %as co%as
8or defecto todas las estadsticas de las colas se guardan en el archivo predefinido queueClog presente
en la carpeta /var/log/asteris&2 La mayora de los programas que permiten obtener gr#ficos de estas
estadsticas0 leen ese archivo2 *ntre ellos0 se pueden citar los dos m#s reconocidos Oel primero con una
versin Lite gratuita disponible y el segundo comercialP
%sternic !all !enter (tats
)ueue'etrics
i!mo se interpretan los datos presentes en este archivoj
!ada linea del archivo puede contener hasta 1> campos distintos separados por un pipe ] *stos son:
fecha y hora en formado *8L!6
identificador Fnico de la llamada
nombre de la cola
nombre del agente
evento que se ha presentado
campos de datos Ohasta ?P que contienen los valores devueltos por los eventos de la cola2
*n el caso que el evento no incluya todos los campos0 en lugar de los datos aparecer# el valor ,L,*2
33>
Los eventos que se pueden presentar son:
A<A#,O#: cuando un cliente abandona la cola sin ser atendido2 Kunto al evento aparecer# el
nombre de la cola0 la posicin que tena el cliente cuando abandon la cola0 la posicin que
tena al momento de entrar en la cola y el tiempo que esper antes de colgar2
A,,M-M<-6: cuando se aade un agente din#mico a la cola2 Kunto al evento aparecer# la
variable -,I)-*I/ de la llamada0 el nombre de la cola a la que se registr el agente y la
extensin con la que se registr2
*$emplo: 13:3BE1>>A]13:3BE1>>A2<]ventas](I8/1>>>]%//'*'B*;]
A4-#T,>M0) el agente ha rechaSado la llamada mientras el cliente estaba escuchando el
anuncio de la cola y antes de ser conectado con el cliente
A4-#T=O4+#: cuando un agente se conecta utiliSando la aplicacin %gentlogin2 Kunto al
evento aparecer# la variable -,I)-*I/ de la llamada0 *l numero del agente y el canal
utiliSado para el registro2
*$emplo: 13:3BAE<E@]13:3BAE<A?23],L,*]%gent/:>>>]%+*,DLL+I,](I8/1>>>I>>>>>>>3
A4-#T=O4O77: cuando un agente se desconecta2 Kunto al evento aparecer# la variable
-,I)-*I/ de la llamada0 el numero del agente0 el canal utiliSado cuando se registr y el
tiempo en segundos que ha quedado conectado2
*$emplo: 13:3BAEA:?]13:3BAE<A?23],L,*]%gent/:>>>]%+*,DLL+L..](I8/1>>>I>>>>>>>3]31
COM0=-T-A4-#T: cuando un agente que ha atendido una llamada cuelga2 Kunto al evento
aparecer# la variable -,I)-*I/0 el nombre de cola0 la extensin del agente0 el tiempo que
esper el cliente antes de ser atendido0 la duracin de la llamada y la posicin que tena el
cliente al entrar en la cola2
*$emplo: 13:3BE><1:]13:3BE>B?32@]ventas]%gent/:>>>]!L'8L*D*%+*,D]E]?>]1
COM0=-T-CA==-6: cuando un cliente atendido por un agente cuelga la llamada2 Kunto al
evento aparecer# 0 la variable -,I)-*I/0 el nombre de la cola0 la extensin del agente0 el
tiempo que esper el cliente antes de ser atendido0 la duracin de la llamada y la posicin inicial
que tena el cliente al entrar en la cola2
*$emplo: 13:3BE?A>>]13:3BE@:<@2:]ventas](I8/1>>>]!L'8L*D*!%LL*;]1B]:<]1
CO#7+46-=OA,: cuando se recarga la configuracin de %steris&2
*$emplo: 13:3?31@@E],L,*],L,*],L,*]!L,.I+;*LL%/]
331
CO##-CT: cuando un cliente es atendido por un agente2 Kunto al evento aparecer#0 el
-,I)-*I/ de la llamada del cliente0 el nombre de la cola0 la extensin del agente que ha
atendido el cliente0 el tiempo que ha esperado el cliente antes de ser atendido0 el -,I)-*I/ de
la llamada entre cliente y agente0 y el tiempo que timbr la extensin del agente2
*$emplo: 13:3BE>BB:]13:3BE>B?32@]ventas]%gent/:>>>]!L,,*!D]E]13:3BE>B?32?]>
-#T-6P>->-: cuando un cliente entra en la cola2 Kunto al evento aparecer#0 el -,I)-*I/
de la llamada0 el nombre de la cola0 la -;L Osi aplicaP y el !%LL*;I/ del cliente2
*$emplo: 13:3BE>B?3]13:3BE>B?32@]ventas],L,*]*,D*;)-*-*]]1>>1
-X+T-M0TV: cuando un cliente viene desconectado de la cola porque no hay agentes
disponibles2 Kunto al evento aparecer# el -,I)-*I/ de la llamada0 el nombre de la cola0
posicin inicial y final del cliente en la cola0 y el tiempo que ha esperado en la cola antes de ser
desconectado2
*$emplo: 13:3<1>3:>]13:3<1>:A121<]ventas],L,*]*HID*'8DQ]1]1]3A
-X+TD+TCH-V: el cliente mientras esperaba en la cola ha presionado una tecla2 Kunto al
evento aparecer# el -,I)-*I/ de la llamada0 el nombre de la cola0 el numero de la tecla
presionada Oen este caso AP0 y la posicin del cliente en la cola antes de presionar la tecla2
*$emplo: 13:3<1>A?>]13:3<1>A@@2:3]ventas],L,*]*HID=ID6T*Q]A]1
-X+TD+TCT+M-O>T: el cliente ha sido desconectado de la cola porque despu5s del tiempo
m#ximo permitido de espera0 ningFn agente lo ha atendido2 Kunto al evento aparecer# el
-,I)-*I/ de la llamada0 el nombre de la cola0 la posicin final y inicial del cliente en la cola0
y el tiempo que 5ste ha esperado antes de ser desconectado
0A>S-: cuando un agente se pone en pausa utiliSando la aplicacin 8ause)ueue'ember de
%steris&2 Kunto al evento aparecer# el nombre de la cola y la extensin del agente2 (i el agente
ha sido desconectado de la cola porque no ha atendido una llamada antes del tiempo
configurado0 aparecer# tambi5n el valor %utoI8ause
*$emplo1: 13:3<1:EB>],L,*]ventas](I8/1>>>]8%-(*]
*$emplo:: 13:3<1>?@1],L,*]ventas](I8/1>>>]8%-(*]%utoI8ause
P>->-STA6T: cuando %steris& ha sido reiniciado
*$emplo: 13:3@@<:@1],L,*],L,*],L,*])-*-*(D%;D]
6-MOV-M-M<-6: cuando una agente se desconecta de la cola con la aplicacin
;emovequeuemember2 Kunto al evento aparecer# el -,I)-*I/ de la llamada0 el nombre de la
cola y la extensin del agente2
33:
6+#4#OA#SD-6: cuando la extensin de un agente timbra y al agente no contesta dentro
del tiempo configurado2 Kunto al evento aparecer# el -,I)-*I/ de la llamada0 el nombre de la
cola0 la extensin del agente que no ha contestado la llamada y el tiempo Oen mili segundosP que
ha timbrado la extensin del agente:
*$emplo: 13:3<11?:A]13:3<11@A>231]ventas](I8/1>>>];I,+,L%,(=*;]@?>>>
SVSCOM0AT: la llamada ha sido contestada por un agente pero ha terminado porque los dos
canales Ocliente y agenteP no eran compatibles2
T6A#S7-6: cuando el cliente0 atendido por un agente0 ha sido transferido a otra extensin2
Kunto al evento aparecer# el -,I)-*I/ de la llamada0 el nombre de la cola0 la extensin del
agente que ha atendido la llamada0 el numero de la extensin donde ha sido transferida la
llamada0 el contexto utiliSado para la transferencia0 el tiempo que ha esperado el cliente en la
cola0 el tiempo de duracin de la llamada antes de la transferencia y la posicin del cliente al
entrar en la cola2
*$emplo: 13:3<1:BB3]13:3<1:B:<23@]ventas](I8/1>>>]D;%,(.*;]1>>:]externas]1:]:@]1
>#0A>S-: cuando un agente vuelve a conectarse a la cola utiliSando la aplicacin
-npause)ueue'ember2 Kunto al evento aparecer# el nombre de la cola y la extensin del
agente2
16.L Co%asE agentes 1 esta'Msticas en 6ea%ti9e 'in!9ico
!omo para las extensiones0 las conferencias0 los buSones de voS0 tambi5n para las colas es posible
traba$ar en ;ealtime2 *n este caso se puede guardar en ;ealtime:
la configuracin de las colas
los agentes
las estadsticas de la cola
!omo queda claro por lo arriba mencionado0 hay que crear tres tablas distintas0 una para cada tipo de
ob$ectos que se guardar#n2 (e inicia con la configuracin de las colas2 *n esta tabla se pueden
configurar todos los valores presentes para la definicin de la cola0 aunque el Fnico obligatorio es el
nombre de la cola misma2
se entra en 'y()L
91sB% .$ root .sesa9o
se escoge la base de datos asteris&:
mysql" $se asterisk
333
se crea la tabla para las colas:
mysql" C.>/7> 7/FL> AHueue5tableA !
AnameA varc*ar!("') NO7 N6LLB
Amusicon*oldA varc*ar!("') default N6LLB
AannounceA varc*ar!("') default N6LLB
AcontextA varc*ar!("') default N6LLB
Astrateg0A varc*ar!("') default N6LLB
AservicelevelA int!(() default N6LLB
Apenalt0memberslimitA int!(() default N6LLB
AtimeoutA int!(() default N6LLB
Aretr0A int!(() default N6LLB
Atimeoutpriorit0A varc*ar!("') default N6LLB
A1eig*tA int!(() default N6LLB
A1rapuptimeA int!(() default N6LLB
AautofillA varc*ar!("') default N6LLB
AautopauseA varc*ar!("') default N6LLB
AmaxlenA int!(() default N6LLB
AsetinterfacevarA varc*ar!%) default N6LLB
AsetHueueentr0varA varc*ar!%) default N6LLB
AsetHueuevarA varc*ar!%) default N6LLB
AmembermacroA varc*ar!("') default N6LLB
Aannounce&freHuenc0A int!(() default N6LLB
Amin&announce&freHuenc0A int!(() default N6LLB
Aperiodic&announce&freHuenc0A int!(() default N6LLB
Arandom&periodic&announceA varc*ar!%) default N6LLB
Arelative&periodic&announceA varc*ar!%) default N6LLB
Aannounce&*oldtimeA varc*ar!;) default N6LLB
Aannounce&positionA varc*ar!%) default N6LLB
Aannounce&position&limitA int!(() default N6LLB
Aannounce&round&secondsA int!(() default N6LLB
AHueue&0ouarenextA varc*ar!("') default N6LLB
AHueue&t*ereareA varc*ar!("') default N6LLB
AHueue&calls1aitingA varc*ar!("') default N6LLB
AHueue&*oldtimeA varc*ar!("') default N6LLB
AHueue&minuteA varc*ar!("') default N6LLB
AHueue&minutesA varc*ar!("') default N6LLB
AHueue&secondsA varc*ar!("') default N6LLB
AHueue&t*an+0ouA varc*ar!("') default N6LLB
AHueue&report*oldA varc*ar!("') default N6LLB
Aperiodic&announceA varc*ar!5(") default N6LLB
Amonitor&formatA varc*ar!("') default N6LLB
Amonitor&t0peA varc*ar!("') default N6LLB
A<oinempt0A varc*ar!("') default N6LLB
Aleave1*enempt0A varc*ar!("') default N6LLB
Aevent1*encalledA varc*ar!("') default N6LLB
AeventmemberstatusA varc*ar!("') default N6LLB
33@
Areport*oldtimeA varc*ar!("') default N6LLB
AringinuseA varc*ar!%) default N6LLB
Amemberdela0A int!(() default N6LLB
AtimeoutrestartA varc*ar!("') default N6LLB
AdefaultruleA varc*ar!("') default N6LLB
-.@?/.2 I>2 !AnameA)
)J
(e crea la tabla para los agentes de las colas:
mysql" C.>/7> 7/FL> Hueue5member5table !
uniHueid @N7!(0) 6N@3N>= -.@?/.2 I>2 /67O5@NC.>?>N7B
membername varc*ar!;0)B
Hueue5name varc*ar!("')B
interface varc*ar!("')B
penalt0 @N7!(()B
paused @N7!(()B
6N@`6> I>2 Hueue5interface !Hueue5nameB interface)
)J
y por ultimo se crea la tabla para guardar las estadsticas de las colas:
mysql" C.>/7> 7/FL> Hueue5log !
time datetimeB
callid c*ar!50)B
Hueuename c*ar!50)B
agent c*ar!50)B
event c*ar!"0)B
data( c*ar!50)B
data" c*ar!50)B
data% c*ar!50)B
data; c*ar!50)B
data5 c*ar!50)B
index b0date !time)B
index Hname !HueuenameBtime)
)J
(e sale de 'y()L y se modifica el archivo del realtime:
mysql" B$it
nano @etc@asterisk@e3tcon"ig.con"
se modifican estas tres lineas:
JHueues =N odbcBasteris+
JHueue5members =N odbcBasteris+
33?
JHueue5log =N m0sHlBgenera
para que queden:
Hueues =N odbcBasteris+BHueue5table
Hueue5members =N odbcBasteris+BHueue5member5table
Hueue5log =N odbcBasteris+BHueue5log
(e guardan los cambios y se reinicia %steris&:
service asterisk restart
%hora para probar el log de las colas en realtime0 desde la extensin 1>>> se marca ^<> para conectarse
a la cola ventas como agente din#mico y luego desde las dem#s extensiones se marca el 3>>12 *n la
base de datos:
91sB% .$ root .sesa9o
mysql" $se asterisk
mysql" se%ect ti9eEB$e$ena9eEagentEeventE'ata1E'ata2E'ata3 "ro9 B$e$e;%ogS
*l resultado:
(e sale del cliente 'y()L:
mysql" B$it
!omo segunda prueba se crea otra cola en realtime2 /esde =ebmin se entra a la tabla queueCtable y se
rellenan los campos:
33B
33<
33A
(e guarda la configuracin presionando el botn M(aveN2 (e vuelve a la consola de %steris& donde
aparecer# la nueva cola:
!LI" B$e$e s2ow co9ras
co$#ras has ) calls ($aB 5)! in .rin%all. strate%y ()s holdti$eD )s talkti$e!D J"1D C")D 3")D 2>").)_
within 12)s
Co 9e$'ers
Co Callers
que todava no tienes agentes configurados2 /esde el =ebmin se pasa a la tabla queueCmemberCtable y
se aaden dos agentes a la cola creada:
33E
(e vuelve nuevamente a la consola de %steris&:
!LI" B$e$e s2ow co9ras
co$#ras has ) calls ($aB 5)! in .rin%all. strate%y ()s holdti$eD )s talkti$e!D J"1D C")D 3")D 2>").)_
within 12)s
9e$'ers"
Nula$o (3%ent/2)))! (realti$e! (Enavaila'le! has taken no calls yet
2utano (3%ent/2))1! (realti$e! (Enavaila'le! has taken no calls yet
Co Callers
8ara terminar si desde la extensin 1>>> se marca :>>> para conectarse como agente :>>>2 -na veS
conectado en la consola de %steris&:
!LI" B$e$e s2ow
co$#ras has ) calls ($aB 5)! in .rin%all. strate%y ()s holdti$eD )s talkti$e!D J"1D C")D 3")D 2>").)_
within 12)s
9e$'ers"
8ulamo !/gent/"000) !realtime) !Not in use) *as ta+en no calls 0et
2utano (3%ent/2))1! (realti$e! (Enavaila'le! has taken no calls yet
Co Callers
ventas has ) calls ($aB 5)! in .rin%all. strate%y (1*s holdti$eD 1)s talkti$e!D J")D C"*D 3"1D 2>"1)).)_
within 12)s
9e$'ers"
3%ent/2))2 (Enavaila'le! has taken no calls yet
3@>
/gent/"000 !Not in use) *as ta+en no calls 0et
3%ent/2))1 (Enavaila'le! has taken no calls yet
2AF/1))) (dyna$ic! (An use! has taken * calls (last was +**3 secs a%o!
Co Callers
*l agente estar# conectado a las dos colas creadas Oen negritaP2
16.6 =a a%icaci&n C2an;S1
La aplicacin chanCspy es una funcionalidad que permite escuchar las conversaciones activas en la
centralita %steris&2 (egFn la configuracin permite escuchar sin que los canales espiados se den cuenta0
hablar con el canal espiado sin que el otro interlocutor pueda escuchar la conversacin0 hablar con los
dos McanalesN de la llamada2 !omo se puede entender0 es una aplicacin muy Ftil para ser
implementada en los !all !enter ya que permite poder controlar la calidad de las llamadas y al mismo
tiempo formar los operadores y/o ayudarlos en su quehacer cotidiano2
La sintaxis de la aplicacin es:
!LI" core s2ow a%ication C2anS1
Chan2#y(0chan#refiB40Do#tions4!
Las opciones:
b G espa solamente los canales que est#n en una conversacin
B G en lugar de hablar solamente con el canal espiado0 esta opcin permite hablar con ambos
cOdigitP G normalmente para pasar de un canal espiado a otro se utiliSa la tecla ^ OasteriscoP2 (i
se quiere modificar la tecla predefinida0 se indica en este par#metro
d G remplaSa los dgitos predefinidos para pasar de un canal espiado a otro y los dgitos
predefinidos para cambiar el modo de espiado:
@ G modo espiar
? G modo susurrar al canal espiado
B G modo hablar con ambos canales
eOextP G con esta opcin se podr#n espiar solamente las extensiones que aparecen en esta opcin
separadas por los dos punto Oe$emplo: eO1>>>:1>>1:1>>:P
* G termina la llamada cuando el canal espiado cuelga
gOgrpP G ser# permitido espiar solamente los canales que est#n presentes en el grupo definido a
trav5s de la variable ef(8Q+;L-8g
nOYmailboxZY_contextZP G al canal que est# espiando se le anunciar# el nombre del canal
espiado si este ha grabado su nombre cuando ha configurado su buSn de voS2
o G quien est# espiando escuchar# solamente el audio del canal espiado y no el audio de ambos
canales presentes en la conversacin
q G no se enviar# un beep al canal espiado cuando se empieSa a espiarlo
rObasenameP G con est# opcin se graba la llamada espiada y se guarda en la carpeta
3@1
/var/spool/asteris&/monitor si se indica un prefi$o ObasenameP0 con ese prefi$o empeSar# el
nombre del archivo donde se grab la llamada2 8redefinido es chanspy
s G no se anuncia el tipo de canal espiado O(I80 I%H:P cuando se anuncia el nombre asociado al
canal
( G se termina el modo espiar cuando no hay m#s canales disponibles para espiar
vOvalueP G a$usta el volumen del canal espiado2 8uede ser un valor que va de I@ a @
4 G activa el modo susurrar2 /e esta forma el canal que est# espiando puede hablar con el canal
espiado
= G activa el modo Msusurrar privadoN2 /e esta forma el canal que est# espiando puede hablar
con el canal espiado pero no puede escuchar la conversacin
xOdigitP G permite configurar un dgito que puede ser utiliSado para salir de la aplicacin
H G permite al canal que est# espiando0 digitando una tecla0 salir de la aplicacin y continuar en
el mismo contexto0 numero de extensin correspondiente a la tecla digitada2 (i se quiere enviar
el canal en otro contexto0 hay que especificarlo antes de utiliSar la aplicacin !han(py2
La opciones son muchas y a lo largo de este p#rrafo se ver# como utiliSarlas2 8ara empeSar0 se
configura la aplicacin en la forma m#s sencilla:
nano @etc@asterisk@e3tensions.con"
despu5s del contexto internas0 se crea un nuevo contexto con la primera extensin:
KespiarL
exten =N (0B(BNoOp!contexto C*anp0)
same =N nBC*anp0!all)
same =N nBOangup
(e podr# espiar cualquier extensin que est5 efectuando0 recibiendo una llamada2 %dem#s de esta forma
se puede decidir que extensiones tienen acceso al contexto espiar y que por ende pueden utiliSar la
aplicacin !han(py2 *n este caso este contexto se aade a los dos existentes:
YexternasZ
include =" internas
include =" internacio
include =" par&edcalls
include =" test
include =" conferencias
inc%$'e QK esiar
YlocalesZ
include =" internas
include =" auten
include =" par&edcalls
include =" test
include =" conferencias
inc%$'e QK esiar
3@:
(e guardan los cambios y se recarga el dialplan:
asterisk .rvvvvvvvvvvvvvvvvvvvvvv
!LI" 'ia%%an re%oa'
%hora desde la extensin 1>>1 se llama la extensin 1>>:2 !uando las dos extensiones est#n hablando0
desde la extensin 1>>> se marca el numero 1>2 *n la consola de %steris&:
-- EBecutin% 01)-eBternas"14 Co<#(W2AF/1)))-))))))1dWD WconteBto Chan2#yW! in new stack
-- EBecutin% 01)-eBternas"24 Chan2#y(W2AF/1)))-))))))1dWD WallW! in new stack
-- S2AF/1)))-))))))1dR Flayin% .'ee#.alaw. (lan%ua%e .es.!
-- S2AF/1)))-))))))1dR Flayin% .s#y-si#.alaw. (lan%ua%e .es.!
-- S2AF/1)))-))))))1dR Flayin% .di%its/1.alaw. (lan%ua%e .es.!
-- S2AF/1)))-))))))1dR Flayin% .di%its/).alaw. (lan%ua%e .es.!
-- S2AF/1)))-))))))1dR Flayin% .di%its/).alaw. (lan%ua%e .es.!
-- S2AF/1)))-))))))1dR Flayin% .di%its/1.alaw. (lan%ua%e .es.!
(e anunciar# el tipo de canal espiado O(I8P y el numero de extensin O1>>1P2 8ara pasar de un canal
espiado a otro se utiliSa la tecla ^2 (i se presiona:
S2AF/1)))-))))))1dR Flayin% .s#y-si#.alaw. (lan%ua%e .es.!
-- S2AF/1)))-))))))1dR Flayin% .di%its/1.alaw. (lan%ua%e .es.!
-- S2AF/1)))-))))))1dR Flayin% .di%its/).alaw. (lan%ua%e .es.!
-- S2AF/1)))-))))))1dR Flayin% .di%its/).alaw. (lan%ua%e .es.!
-- S2AF/1)))-))))))1dR Flayin% .di%its/2.alaw. (lan%ua%e .es.!
77 2#yin% on channel 2AF/1))2-))))))1a
(e pasa a espiar del canal 1>>: al canal 1>>1 Oque al final es la misma llamadaP2
(i no se quiere que el canal espiado escuche un beep que le anuncie que el canal est# siendo espiado0 el
mismo bloque del dialplan sera Oopcin qP:
exten =N ((B(BNoOp!contexto C*anp0)
same =N nBC*anp0!allBH)
same =N nBOangup
(i se quiere espiar solamente canales que est5n ya en una conversacin Oopcin bP:
exten =N ("B(BNoOp!contexto C*anp0)
same =N nBC*anp0!allBHb)
same =N nBOangup
(i se quiere espiar solamente canales (I8:
exten =N (%B(BNoOp!contexto C*anp0)
3@3
same =N nBC*anp0!@-BHb)
same =N nBOangup
(i se quiere espiar solamente los agentes configurados en el archivo agent2conf y al mismo tiempo
poder hablar con ellos sin que el otro interlocutor pueda escuchar la conversacin:
exten =N (;B(BNoOp!contexto C*anp0)
same =N nBC*anp0!/gentBHb1)
same =N nBOangup
*stos cuatros bloques se aaden al contexto YespiarZ2
*ntre las distintas opciones disponibles hay una que permite a la extensin que est# espiando de
presionar una tecla y MsaltarN a ese numero de extensin en el mismo contexto2 8ara probar la opcin0
se aade al contexto espiar el siguiente bloque:
exten =N (5B(BNoOp!contexto C*anp0)
same =N nBC*anp0!allBHbQ)
same =N nBOangup
exten =N 5B(B-la0bac+!goodb0e)
same =N nB*angup
*l resultado en la consola de %steris&:
EBecutin% 05SexternasG(4 Flay'ack(W2AF/1)))-))))))28WD W%ood'yeW! in new stack
-- S2AF/1)))-))))))28R Flayin% .%ood'ye.alaw. (lan%ua%e .es.!
-- EBecutin% 05-eBternas"24 @an%u#(W2AF/1)))-))))))28WD WW! in new stack
Ltra opcin interesante de la aplicacin !han(py es la posibilidad de definir la variable e
f(8Q+;L-8g que permite espiar solamente los canales que pertenecen a ese grupo2 (i0 por e$emplo0
se quiere espiar solamente los canales de una determianda cola de espera0 se modifica el dialplan:
nano @etc@asterisk@e3tensions.con"
(e crea un nuevo bloque para la cola de espera compras:
exten =N %00"B(B/ns1er
same =N nBet!-23.O6-=ventas)
same =N nB`ueue!ventasB.)
same =N nBOangup
y luego en el contexto espiar se aade el siguiente bloque:
exten =N ($B(BNoOp!contexto C*anp0)
same =N nBC*anp0!@-BHbg!ventas))
same =N nBOangup
3@@
(e guardan los cambios y se recarga el dialplan:
asterisk .rvvvvvvvvvvvvv
!LI" 'ia%%an re%oa'
/e esta forma llamando la extensin 1B se podr#n espiar solamente los canales de la cola de espera
ventas OgOventasPP2
8ara terminar este p#rrafo0 otra forma de espiar los canales es digitando directamente el canal que se
quiere espiar2 (e aade al contesto espiar el siguiente bloque:
exten =N 5Z(0QQQQB(BNoOp!contexto C*anp0)
same =N nBC*anp0!@-/EV>Q7>NG%WBH)
same =N nBOangup
/e esta forma se espiar# el canal digitado despu5s de ^1>2 *$emplo: si se digita ^1>1>>> el canal
espiado sera (I8/1>>> ya que los primeros tres dgitos marcados ser#n eliminados de la variable e
f*HD*,g2 !on la opcin ( si el canal no est# activo0 la llamada ser# terminada:
EBecutin% 061)1))2-eBternas"14 Co<#(W2AF/1)))-))))))2fWD WconteBto Chan2#yW! in new stack
-- EBecutin% 061)1))2-eBternas"24 Chan2#y(W2AF/1)))-))))))2fWD W2AF/1))2DM2W! in new stack
-- EBecutin% 061)1))2-eBternas"34 @an%u#(W2AF/1)))-))))))2fWD WW! in new stack
Llamada terminada ya que la extensin 1>>: no est# conversando:
EBecutin% 061)1))2-eBternas"14 Co<#(W2AF/1)))-))))))33WD WconteBto Chan2#yW! in new stack
-- EBecutin% 061)1))2-eBternas"24 Chan2#y(W2AF/1)))-))))))33WD W2AF/1))2DM2W! in new stack
77 2#yin% on channel 2AF/1))2-))))))3)
C<(ACE0256+54" a##chans#y.c"*8* starts#yin%" 3ttachin% 2AF/1)))-))))))33 to 2AF/1))2-
))))))3)
*xtensin 1>>: espiada ya que est# en una conversacin2
3@?
Cait$%o XV++
Asterisk 1 %os 7AX
6asta la versin 12B2:2H0 %steris& soportaba la recepcin y trasmisin de .%H a trav5s del modulo
appCfax2 % partir de la versin 12A2H hay dos nuevos mdulos:
resCfax
resCfaxCspandsp
La idea detr#s de este cambio es me$orar el soporte del protocolo D3A en %steris&2 *stos dos mdulos
se apoyan en las libreras (pan/(8 y permiten la recepcin y envo de .%H a trav5s de dos protocolos:
D3> OaudioP y D3A O.oI8 G .ax over I8P2 *n este capitulo se presentar# primero una solucin basada en
la combinacin del programa I%Hmodem con el servidor de .%H 6ylafax0 para luego abordar el tema
del protocolo D3A2
1J.1 +AX9o'e9
I%Hmodem es un mdem soft4are0 escrito en lengua$e ! que utiliSa un canal I%H: en lugar de una
lnea telefnica y un /(8 soft4are O(pan/(8P en lugar de un chip /(8 O/igital (ignal 8rocessingP2 (e
descargan las fuentes de I%Hmodem:
c' @$sr@src
wget 2tt)@@switc2.'%.so$rce"orge.net@so$rce"orge@ia39o'e9@ia39o'e9.1.2.0.tar.gz
(e descomprime el archivo
tar .3" ia39o'e9.1.2.0.tar.gz
(e entra en la carpeta:
c' ia39o'e9.1.2.0
(e compila:
.@con"ig$re
9ake
(e copia el programa compilado en la siguiente carpeta:
c ia39o'e9 @$sr@%oca%@s(in
!omo se van a crear dos mdem I%H:0 se crean algunas carpetas y archivos para el correcto
funcionamiento de I%Hmodem:
9k'ir @etc@ia39o'e9
9k'ir @var@%og@ia39o'e9
to$c2 @var@%og@ia39o'e9@tt1+AX1
to$c2 @var@%og@ia39o'e9@tt1+AX2
to$c2 @var@%og@ia39o'e9@ia39o'e9
*n la carpeta de las fuentes de I%Hmodem hay un archivo de configuracin predefinido para la
creacin de un mdem I%H2 (e puede tomar como referencia para la creacin de los dos mdem I%H
que se utiliSar#n para la recepcin y envo de .%H con %steris&2 (e configura el primero
c' @etc@ia39o'e9
nano tt1+AX1
La lineas son:
device /dev/tt0@/Q(
o1ner uucpGuucp
mode $$0
port ;5C0
refres* $0
server ("C#0#0#(
peername iaxmodem(
secret pbx5050
cidname Ro,7oRoice
cidnumber QQQQQQQQQQ
codec ala1
(e guardan los cambios2 *sta configuracin es valida si I%Hmodem est# instalado en el mismo servidor
donde se instal %steris&2 *n el caso de dos servidores distintos hay que indicar en la lnea server la
direccin I8 del servidor %steris&2 (e pone la contrasea en secret y en cidname y cidnumber nombre y
numero telefnico que usar# I%Hmodem para presentarse a %steris&2 8ara configurar distintos
I%Hmodem hay que modificar en la primera lnea el nombre del device0 en port el puerto y en
peername el nombre de la troncal2
+M0O6TA#T-) en %a %inea co'ec 2a1 B$e in'icar $n co'ec a$'io B$e no $ti%ice
a%gorit9os 'e co9resi&n. -sto orB$e e% rotoco%o T30 "$nciona so%a9ente con cana%es
a$'io no co9ri9i'os.
8ara el segundo I%Hmodem la configuracin ser#:
nano tt1+AX2
3@A
device /dev/tt0@/Q"
o1ner uucpGuucp
mode $$0
port ;5C(
refres* $0
server ("C#0#0#(
peername iaxmodem"
secret pbx505(
cidname Ro,7oRoice
cidnumber QQQQQQQQQQ
codec ala1
(e guardan los cambios2
%hora hay que modificar la configuracin de %steris& para aadir las dos extensiones I%H Oiaxmodem1
y iaxmodem:P en el archivo iax2conf
nano @etc@asterisk@ia3.con"
%l final del archivo se aaden los dos bloques que siguen:
Kiaxmodem(L
t0pe=friend
context=fax
disallo1=all
allo1=ala1
username=iaxmodem(
secret=pbx5050
Hualif0=0es
notransfer=0es
*ost=d0namic
reHuirecallto+en=auto
Kiaxmodem"L
t0pe=friend
context=fax
disallo1=all
allo1=ala1
username=iaxmodem"
secret=pbx505(
Hualif0=0es
notransfer=0es
*ost=d0namic
reHuirecallto+en=auto
(e guardan los cambios y se actualiSa la configuracin de I%H: en %steris&
3@E
asterisk .rvvvvvvvvvvvvvvvvvvv
!LI" ia32 re%oa'
(e abre otra ventana terminal o se crea otra sesin de 8uDDy y se realiSa una prueba para ver si la
conexin entre I%Hmodem y %steris& funciona:
c' @$sr@%oca%@s(in
.@ia39o'e9 tt1+AX1
debe aparecer:
02)11-1)-2* )+"**"3,4 9ode$ started
02)11-1)-2* )+"**"3,4 2ettin% device 7 ./dev/ttyA3O1.
02)11-1)-2* )+"**"3,4 2ettin% owner 7 .uuc#"uuc#.
02)11-1)-2* )+"**"3,4 2ettin% $ode 7 .66).
02)11-1)-2* )+"**"3,4 2ettin% #ort 7 *5,)
02)11-1)-2* )+"**"3,4 2ettin% refresh 7 6)
02)11-1)-2* )+"**"3,4 2ettin% server 7 .12,.).).1.
02)11-1)-2* )+"**"3,4 2ettin% #eerna$e 7 .iaB$ode$1.
02)11-1)-2* )+"**"3,4 2ettin% secret 7 .#'B5)5).
02)11-1)-2* )+"**"3,4 2ettin% cidna$e 7 .PoT(oPoice.
02)11-1)-2* )+"**"3,4 2ettin% cidnu$'er 7 .OOOOOOOO.
02)11-1)-2* )+"**"3,4 2ettin% codec 7 ulaw
02)11-1)-2* )+"**"3,4 <#ened #tyD slave device" /dev/#ts/*
02)11-1)-2* )+"**"3,4 Created /dev/ttyA3O1 sy$'olic link
A%norin% unknown infor$ation ele$ent .Enknown AE. (5*! of len%th )
02)11-1)-2* )+"**"3,4 .egistration completed successfull0.
(e controla que en la consola de %steris& apareSca la conexin de I%Hmodem Ovolviendo a la otra
ventana Derminal abiertaP:
8ara iniciar I%Hmodem en autom#tico se instala el script presente en la carpeta de las fuentes de
I%Hmodem:
c' @$sr@src@ia39o'e9.1.2.0
c ia39o'e9.init."e'ora @etc@init.'@ia39o'e9
se vuelve e$ecutable:
c29o' N3 @etc@init.'@ia39o'e9
3?>
e se configura para el inicio autom#tico:
c2kcon"ig ..a'' ia39o'e9
c2kcon"ig ia39o'e9 on
(e inicia el programa:
@etc@init.'@ia39o'e9 start
9olviendo a la consola de %steris&0 las dos extensiones deben estar registradas:
!LI" ia32 s2ow eers
Ca$e/Eserna$e @ost 9ask Fort 2tatus
$arko (Ens#ecified! (?! 255.255.255.255 ) (E! EC=C<JC
$arko2/$arko2 1+).253.162.2)6 (?! 255.255.255.255 1326+ (E! <= (1)2 $s!
iaB$ode$1/iaB$o 12,.).).1 (?! 255.255.255.255 *5,) (E! <= (1 $s!
iaB$ode$2/iaB$o 12,.).).1 (?! 255.255.255.255 *5,1 (E! <= (3 $s!
* iaB2 #eers 03 onlineD 1 offlineD ) un$onitored4
%hora que I%Hmodem ha sido instalado y configurado0 se puede continuar con la instalacin y
configuracin de 6ylafax2
1J.2 C1%a"a3
6ylafax es un servidor .%H diseado para sistemas Linux que se basa en un sistema clienteIservidor2
-n cliente O.%HP se conecta al servidor O6ylafaxP y a trav5s de 5l enva el .%H2
6ay que empeSar instalando algunas OdependenciasP requeridas por 6ylafax:
1$9 insta%% g2ostscrit g2ostscrit.'eve% s2ar$ti%s g2ostscrit."onts
*n la pagina de 6ylafax est#n presentes los paquetes para las distintas distribuciones de Linux:
(e descargan los paquetes para !entL( Ocliente y servidorP:
c' @$sr@src
wget "t)@@"t.21%a"a3.org@(inar1@%in$3@re'2at@6.0.6@21%a"a3.c%ient.6.0.6.1r2e%6.i686.r9
wget "t)@@"t.21%a"a3.org@(inar1@%in$3@re'2at@6.0.6@21%a"a3.server.6.0.6.1r2e%6.i686.r9
(e instalan:
r9 .iv2 21%a"a3T.r9
3?1
*l paso a seguir es la configuracin de de 6ylafax2 *sto se hace a trav5s de la utilidad faxsetup:
"a3set$
2hould an entry 'e added for the NaB9aster to /etc/aliases 0yes4; no
E#date /var/s#ool/hylafaB/status/any.info.
@ylaN3O confi%uration #ara$eters are"
014 Anit scri#t starts faBM" yes
024 Anit scri#t starts hfaBd yes
034 2tart #a%in% #rotocol" no
3re these ok 0yes4; 0es
(e contesta yes2 Luego inicia la configuracin de 6ylafax2 6ay que indicar los par#metros como
aparecen personaliSando el numero de tel5fono y el prefi$o del pas2 *n negrita los datos que se van
insertando desde el teclado2
'odem support functions 4ritten to /var/spool/hylafax/etc/setup2modem2
!onfiguration parameters 4ritten to /var/spool/hylafax/etc/setup2cache2
,o scheduler config file exists0 creating one from scratch2
!ountry code Y1Zj LJ
%rea code YZj L
Long distance dialing prefix Y1Zj 0
International dialing prefix Y>11Zj 00
/ial string rules file Orelative to /var/spool/hylafaxP Yaetc/dialrulesaZj
Dracing during normal server operation Y1Zj
/efault tracing during send and receive sessions Y>xffffffffZj
!ontinuation cover page Orelative to /var/spool/hylafaxP YZj
Dimeout 4hen converting 8ost(cript documents OsecsP Y1A>Zj
'aximum number of concurrent $obs to a destination Y1Zj
/efine a group of modems YZj
Dime of day restrictions for outbound $obs Ya%nyaZj
Dimeout before purging a stale --!8 loc& file OsecsP Y3>Zj
'ax number of pages to permit in an outbound $ob Y>xffffffffZj
(yslog facility name for (erverDracing messages YdaemonZj
Dhe nonIdefault scheduler parameters are:
!ountry!ode: ?<
%rea!ode: ?
Long/istance8refix: >
3?:
International8refix: >>
%re these o& YyesZj 1es
!reating ne4 configuration file /var/spool/hylafax/etc/config222
;estarting 6yla.%H server processes2
(hould I restart the 6yla.%H server processes YyesZj 1es
/etc/rc2d/init2d/hylafax start
(tarting 6yla.%H queue manager OfaxqP: Y LT Z
(tarting 6yla.%H server OhfaxdP: Y LT Z
;estarting 6yla.%H modem manager OfaxgettyP: Y LT Z
Qou do not appear to have any modems configured for use2 'odems are
configured for use 4ith 6yla.%H 4ith the faxaddmodemOA!P command2
/esde la linea que sigue se configura el primer .%H OttyI%H1P
/o you 4ant to run faxaddmodem to configure a modem YyesZj 1es
(erial port that modem is connected to \]h tt1+AX1
L&0 time to setup a configuration file for the modem2 Dhe manual
page configO?.P may be useful during this process2 %lso be a4are
that at any time you can safely interrupt this procedure2
;eading scheduler config file /var/spool/hylafax/etc/config2
,o existing configuration0 letbs do this from scratch2
!ountry code Y?<Zj
%rea code Y?Zj
8hone number of fax modem Yh12EEE2???21:1:Zj NLJL38L0R62
Local identification string Ofor D(I/!I+P Ya,othing(etupaZj C$rsoAsterisk
Long distance dialing prefix Y1Zj 0
International dialing prefix Y>11Zj 00
/ial string rules file Orelative to /var/spool/hylafaxP Yetc/dialrulesZj
Dracing during normal server operation Y1Zj
Dracing during send and receive sessions Y11Zj
8rotection mode for received facsimile Y>B>>Zj
8rotection mode for session logs Y>B>>Zj
8rotection mode for ttyI%H1 Y>B>>Zj
;ings to 4ait before ans4ering Y1Zj 2
'odem spea&er volume YoffZj
!ommand line arguments to getty program YaIh \l dxC\saZj
8athname of D(I access control list file Orelative to /var/spool/hylafaxP YaaZj
3?3
8athname of !allerII/ access control list file Orelative to /var/spool/hylafaxP YaaZj
Dag line font file Orelative to /var/spool/hylafaxP Yetc/lut;(1A2pcfZj
Dag line format string Ya.rom \\l]\c]8age \\8 of \\DaZj
Dime before purging a stale --!8 loc& file OsecsP Y3>Zj
6old --!8 loc&file during inbound data calls YQesZj
6old --!8 loc&file during inbound voice calls YQesZj
8ercent good lines to accept during copy quality chec&ing YE?Zj
'ax consecutive bad lines to accept during copy quality chec&ing Y?Zj
'ax number of pages to accept in a received facsimile Y:?Zj
(yslog facility name for (erverDracing messages YdaemonZj
(et -I/ to > to manipulate !LL!%L YaaZj
-se available priority $ob scheduling mechanism YaaZj
Dhe nonIdefault server configuration parameters are:
!ountry!ode: ?<
%rea!ode: ?
.%H,umber: h?<?3A?>EB:
Long/istance8refix: >
International8refix: >>
/ial(tring;ules: etc/dialrules
(essionDracing: 11
;ingsBefore%ns4er: :
(pea&er9olume: off
+etty%rgs: aIh \l dxC\sa
LocalIdentifier: !urso%steris&
DagLine.ont: etc/lut;(1A2pcf
DagLine.ormat: a.rom \\l]\c]8age \\8 of \\Da
'ax;ecv8ages: :?
%re these o& YyesZj 1es
,o4 4e are going to probe the tty port to figure out the type
of modem that is attached2 Dhis ta&es a fe4 seconds0 so be patient2
,ote that if you do not have the modem cabled to the port0 or the
modem is turned off0 this may hang O$ust go and cable up the modem
or turn it on0 or 4hateverP2
8robing for best speed to tal& to modem: 3A@>> LT2
%bout fax classes:
Dhe difference bet4een fax classes has to do 4ith ho4 6yla.%H interacts
4ith the modem and the fax protocol features that are used 4hen sending
or receiving faxes2 Lne class isnbt inherently better than anotherU
ho4ever0 one probably 4ill suit a userbs needs better than others2
3?@
!lass 1 relies on 6yla.%H to perform the bul& of the fax protocol2
!lass : relies on the modem to perform the bul& of the fax protocol2
!lass :2> is similar to !lass : but may include more features2
!lass 12> is similar to !lass 1 but may add 923@Ifax capability2
!lass :21 is similar to !lass :2> but adds 923@Ifax capability2
6yla.%H generally 4ill have more features 4hen using !lass 1/12> than
4hen using most modemsb !lass : or !lass :2> implementations2 +enerally
any problems encountered in !lass 1/12> can be resolved by modifications
to 6yla.%H0 but usually any problems encountered in !lass :/:2>/:21 4ill
require the modem manufacturer to resolve it2
-se !lass 1 unless you have a good reason not to2
Dhis modem loo&s to have support for !lass 12> and 12
6o4 should it be configured Y12>Zj
6mm0 this loo&s li&e a !lass 12> modem2
8roduct code O%DI>P is aspandspa2
Lther information O%DI3P is a4442softIs4itch2orga2
/D*I/!* flo4 control scheme YdefaultZj
'odem manufacturer is a-n&no4na2
'odem model is a-n&no4na2
-sing prototype configuration file class12>222
Dhere is no prototype configuration file for your modem0 so 4e 4ill
have to fill in the appropriate parameters by hand2 Qou 4ill need the
manual for ho4 to program your modem to do this tas&2 In case you are
uncertain of the meaning of a configuration parameter you should
consult the configO?.P manual page for an explanation2
,ote that modem commands must be specified exactly as they are to be
sent to the modem2 ,ote also that quote mar&s OaP 4ill not be displayed
and 4ill automatically be deleted2 Qou can use this facility to supply
null parameters as aa2
.inally0 be4are that the set of parameters is long2 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
a/var/spool/hylafax/etc/config2ttyI%H1a
after completing this procedure2
3??
!ommand to enter !lass 1 Y%Dh.!L%((=12>Zj
!ommand to stop and 4ait prior to sending 88' Y%Dh.D(=<Zj
!ommand to stop and 4ait prior to sending D!. Y%Dh.D(=<Zj
!ommand to stop and 4ait prior to sending *L8 Y%Dh.D(=EZj
*xtra bytes in a received 6/L! frame Y@Zj
'aximum time to 4ait for LT after aborting a receive OmsP Y:>>Zj
'aximum 4ait for initial identification frame OmsP Y@>>>>Zj
!ommand to ensure silence after receiving 6/L! and before sending Y%Dh.;(=<Zj
Dhe modem configuration parameters are:
!lass1!md: %Dh.!L%((=12>
!lass188'=ait!md: %Dh.D(=<
!lass1D!.=ait!md: %Dh.D(=<
!lass1*L8=ait!md: %Dh.D(=E
!lass1.rameLverhead: @
!lass1;ecv%bortLT: :>>
!lass1;ecvIdentDimer: @>>>>
!lass1(4itching!md: %Dh.;(=<
!lass1D!.'ax,onJero: 1>
!lass1D!.'in;un: 1>>>
%re these o& YyesZj 1es
!reating ne4 configuration file /var/spool/hylafax/etc/config222
222saving current file as /var/spool/hylafax/etc/config2sav2
/onbt forget to run faxmodemOA!P Oif you have a sendIonly environmentP
or configure init to run faxgetty on ttyI%H12
Derminada la configuracin del primer mdem0 el servidor 6yalafax preguntar# si se quiere instalar
otro2 (e contesta con yes y se configura el segundo mdem OttyI%H:P
/o you 4ant to run faxaddmodem to configure another modem YyesZj 1es
(erial port that modem is connected to YZj tt1+AX2
L&0 time to setup a configuration file for the modem2 Dhe manual
page configO?.P may be useful during this process2 %lso be a4are
that at any time you can safely interrupt this procedure2
;eading scheduler config file /var/spool/hylafax/etc/config2
,o existing configuration0 letbs do this from scratch2
!ountry code Y?<Zj
%rea code Y?Zj
3?B
8hone number of fax modem Yh12EEE2???21:1:Zj NLJL38L0R62
Local identification string Ofor D(I/!I+P Ya,othing(etupaZj C$rsoAsterisk
Long distance dialing prefix Y1Zj 0
International dialing prefix Y>11Zj 00
/ial string rules file Orelative to /var/spool/hylafaxP Yetc/dialrulesZj
Dracing during normal server operation Y1Zj
Dracing during send and receive sessions Y11Zj
8rotection mode for received facsimile Y>B>>Zj
8rotection mode for session logs Y>B>>Zj
8rotection mode for ttyI%H: Y>B>>Zj
;ings to 4ait before ans4ering Y1Zj 2
'odem spea&er volume YoffZj
!ommand line arguments to getty program YaIh \l dxC\saZj
8athname of D(I access control list file Orelative to /var/spool/hylafaxP YaaZj
8athname of !allerII/ access control list file Orelative to /var/spool/hylafaxP YaaZj
Dag line font file Orelative to /var/spool/hylafaxP Yetc/lut;(1A2pcfZj
Dag line format string Ya.rom \\l]\c]8age \\8 of \\DaZj
Dime before purging a stale --!8 loc& file OsecsP Y3>Zj
6old --!8 loc&file during inbound data calls YQesZj
6old --!8 loc&file during inbound voice calls YQesZj
8ercent good lines to accept during copy quality chec&ing YE?Zj
'ax consecutive bad lines to accept during copy quality chec&ing Y?Zj
'ax number of pages to accept in a received facsimile Y:?Zj
(yslog facility name for (erverDracing messages YdaemonZj
(et -I/ to > to manipulate !LL!%L YaaZj
-se available priority $ob scheduling mechanism YaaZj
Dhe nonIdefault server configuration parameters are:
!ountry!ode: ?<
%rea!ode: ?
.%H,umber: h?<?3A?>EB:
Long/istance8refix: >
International8refix: >>
/ial(tring;ules: etc/dialrules
(essionDracing: 11
;ingsBefore%ns4er: :
(pea&er9olume: off
+etty%rgs: aIh \l dxC\sa
LocalIdentifier: !urso%steris&
DagLine.ont: etc/lut;(1A2pcf
DagLine.ormat: a.rom \\l]\c]8age \\8 of \\Da
'ax;ecv8ages: :?
%re these o& YyesZj 1es
3?<
,o4 4e are going to probe the tty port to figure out the type
of modem that is attached2 Dhis ta&es a fe4 seconds0 so be patient2
,ote that if you do not have the modem cabled to the port0 or the
modem is turned off0 this may hang O$ust go and cable up the modem
or turn it on0 or 4hateverP2
8robing for best speed to tal& to modem: 3A@>> LT2
%bout fax classes:
Dhe difference bet4een fax classes has to do 4ith ho4 6yla.%H interacts
4ith the modem and the fax protocol features that are used 4hen sending
or receiving faxes2 Lne class isnbt inherently better than anotherU
ho4ever0 one probably 4ill suit a userbs needs better than others2
!lass 1 relies on 6yla.%H to perform the bul& of the fax protocol2
!lass : relies on the modem to perform the bul& of the fax protocol2
!lass :2> is similar to !lass : but may include more features2
!lass 12> is similar to !lass 1 but may add 923@Ifax capability2
!lass :21 is similar to !lass :2> but adds 923@Ifax capability2
6yla.%H generally 4ill have more features 4hen using !lass 1/12> than
4hen using most modemsb !lass : or !lass :2> implementations2 +enerally
any problems encountered in !lass 1/12> can be resolved by modifications
to 6yla.%H0 but usually any problems encountered in !lass :/:2>/:21 4ill
require the modem manufacturer to resolve it2
-se !lass 1 unless you have a good reason not to2
Dhis modem loo&s to have support for !lass 12> and 12
6o4 should it be configured Y12>Zj
6mm0 this loo&s li&e a !lass 12> modem2
8roduct code O%DI>P is aspandspa2
Lther information O%DI3P is a4442softIs4itch2orga2
/D*I/!* flo4 control scheme YdefaultZj
'odem manufacturer is a-n&no4na2
'odem model is a-n&no4na2
-sing prototype configuration file class12>222
Dhere is no prototype configuration file for your modem0 so 4e 4ill
have to fill in the appropriate parameters by hand2 Qou 4ill need the
manual for ho4 to program your modem to do this tas&2 In case you are
uncertain of the meaning of a configuration parameter you should
consult the configO?.P manual page for an explanation2
3?A
,ote that modem commands must be specified exactly as they are to be
sent to the modem2 ,ote also that quote mar&s OaP 4ill not be displayed
and 4ill automatically be deleted2 Qou can use this facility to supply
null parameters as aa2
.inally0 be4are that the set of parameters is long2 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
a/var/spool/hylafax/etc/config2ttyI%H:a
after completing this procedure2
!ommand to enter !lass 1 Y%Dh.!L%((=12>Zj
!ommand to stop and 4ait prior to sending 88' Y%Dh.D(=<Zj
!ommand to stop and 4ait prior to sending D!. Y%Dh.D(=<Zj
!ommand to stop and 4ait prior to sending *L8 Y%Dh.D(=EZj
*xtra bytes in a received 6/L! frame Y@Zj
'aximum time to 4ait for LT after aborting a receive OmsP Y:>>Zj
'aximum 4ait for initial identification frame OmsP Y@>>>>Zj
!ommand to ensure silence after receiving 6/L! and before sending Y%Dh.;(=<Zj
Dhe modem configuration parameters are:
!lass1!md: %Dh.!L%((=12>
!lass188'=ait!md: %Dh.D(=<
!lass1D!.=ait!md: %Dh.D(=<
!lass1*L8=ait!md: %Dh.D(=E
!lass1.rameLverhead: @
!lass1;ecv%bortLT: :>>
!lass1;ecvIdentDimer: @>>>>
!lass1(4itching!md: %Dh.;(=<
!lass1D!.'ax,onJero: 1>
!lass1D!.'in;un: 1>>>
%re these o& YyesZj 1es
!reating ne4 configuration file /var/spool/hylafax/etc/config2ttyI%H:222
!reating fifo /var/spool/hylafax/.I.L2ttyI%H: for faxgetty222 done2
/one setting up the modem configuration2
!hec&ing /var/spool/hylafax/etc/config for consistency222
222everything loo&s o&U leaving existing file unchanged2
/onbt forget to run faxmodemOA!P Oif you have a sendIonly environmentP
3?E
or configure init to run faxgetty on ttyI%H:2
6ylafax preguntar# si se quiere configurar otro mdem:
/o you 4ant to run faxaddmodem to configure another modem YyesZj no
(e contesta no2 *l servidor de .%H avisar# que para que las llamadas sean contestadas en autom#tico
hay que configurar faxgetty Ola utilidad que se encarga de esta tareaP y si se quiere iniciar faxmodem
para los dos .%H configurados Ose contesta yesP:
Qou do not appear to be using faxgetty to notify the 6yla.%H scheduler
about ne4 modems and/or their status2 Dhis means that you must use the
faxmodem program to inform the ne4 faxq process about the modems you
4ant to have scheduled by 6yla.%H2 Be4are that if you have modems that
require nonIdefault capabilities specified to faxmodem then you should
read faxmodemOA!P manual page and do this 4or& yourself Osince this
script is not intelligent enough to automatically figure out the modem
capabilities and supply the appropriate argumentsP2
(hould I run faxmodem for each configured modem YyesZj 1es
/usr/sbin/faxmodem ttyI%H1
/usr/sbin/faxmodem ttyI%H:
/one verifying system setup2
La configuracin de los dos mdem ha terminado2 %hora se configura faxgetty en !entL( de forma
que la utilidad se inicie al arrancar el servidor Linux:
nano @etc@init@"a3gett11.con"
se pegan las siguientes lineas:
start on runlevel "
start on runlevel %
start on runlevel ;
start on runlevel 5
stop on runlevel 0
stop on runlevel (
stop on runlevel $
respa1n
exec /usr/sbin/faxgett0 tt0@/Q(
(e sigue en mismo procedimiento para el segundo .%H:
nano @etc@init@"a3gett12.con"
3B>
start on runlevel "
start on runlevel %
start on runlevel ;
start on runlevel 5
stop on runlevel 0
stop on runlevel (
stop on runlevel $
respa1n
exec /usr/sbin/faxgett0 tt0@/Q"
(e inician los dos:
initct% start "a3gett11
faB%etty1 start/runnin%D #rocess 11865
initct% start "a3gett12
faB%etty2 start/runnin%D #rocess 1186,
(e averigua que faxgetty este corriendo para los dos .%H:
s a$3 _ gre tt1+AX
(e reinicia 6ylafax
@etc@init.'@21%a"a3 restart
2huttin% down @ylaN3O Mueue $ana%er (faBM!" 0 <= 4
2huttin% down @ylaN3O server (hfaBd!" 0 <= 4
2tartin% @ylaN3O Mueue $ana%er (faBM!" 0 <= 4
2tartin% @ylaN3O server (hfaBd!" 0 <= 4
1estartin% @ylaN3O $ode$ $ana%er (faB%etty!" 0 <= 4
2huttin% down @ylaN3O Mueue $ana%er (faBM!" 0 <= 4
Dodos los archivos de configuracin que se crear#n 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 .%H configurados se utiliSa este comando:
"a3stat
*l resultado es:
@ylaN3O scheduler on li3,)-135.$e$'ers.linode.co$" 1unnin%
9ode$ ttyA3O2 (/5,5385)+62!" 1unnin% and idle
9ode$ ttyA3O1 (/5,5385)+62!" 1unnin% and idle
3B1
8ara me$orar la recepcin y envo de los .%H0 se aade un pequeo retraso en la configuracin de los
mdem de forma que si se pierde la conexin0 se intentar# rea$ustarla:
nano @var@soo%@21%a"a3@etc@con"ig.tt1+AX1
al final del archivo se aade esta linea:
Class(1itc*ingCmdG 4Udela0GCN4
Lo mismo se hace con el mdem ttyI%H::
nano @var@soo%@21%a"a3@etc@con"ig.tt1+AX2
al final del archivo se aade esta linea:
Class(1itc*ingCmdG 4Udela0GCN4
8ara recibir una notificacin si el fax ha sido enviado hay que modificar el archivo de configuracin de
6ylafax Ola recibir# el usuario rootP:
nano @etc@21%a"a3@21%a.con"
si cambia esta linea:
#Notif0G =one
para que quede
Notif0G =one
8ara recibir los .%H entrantes a una direccin de correo electrnico externa al servidor:
nano @var@soo%@21%a"a3@etc@7a3,isatc2
se cambia esta linea:
>N=7O=8ax?aster
para que quede OpersonaliSar la direccin de correo electrnicoP:
>N=7O=fulanoSgmail#com
(e reinicia 6ylafax:
@etc@init.'@21%a"a3 restart

3B:
8or ultimo se indica que todos los mensa$es de correo electrnico para el usuario .axmaster se enven
al usuario root:
nano @etc@a%iases
despu5s de esta linea:
supportG postmaster
se pone:
8ax?asterG root
(e guardan los cambios y se recarga la configuracin:
newa%iases
0r$e(a envMo.
8ara el envo de los .%H se crea en extension2conf un contesto YfaxZ O*l mismo que se ha configurado
para las dos extensiones iaxmodem en iax2confP antes del contexto internas0 con las siguientes lneas:
nano @etc@asterisk@e3tensions.con"
KfaxL
exten =N 5Q#B(B=ial!@-/<ustvoip/EV>Q7>NW)
same =N nBOangup
exten =N ("%;B(B=ial!@/Q"/iaxmodem")
same =N nB*angup
*l primer bloque es para enviar .%H a nFmeros externos0 el segundo es para probar el fax en local2
*n la parte general del archivo sip2conf0 se ha configurado el par#metro faxdetect en yesU esto significa
que si el sistema detecta que la llamada est# llegando desde un .%H0 autom#ticamente Msaltar#N0 si
existe0 a la extensin fax2 8ara probarlo0 en el mismo contexto fax se aade otro bloque:
exten =N ("%5B(B/ns1er
same =N nB:ait!$)
same =N nB=ial!@-/(000B;5)
exten =N faxB(B=ial!@/Q"/iaxmodem")
same =N nB*angup
*l flu$o del dialplan es: se contesta la llamada entrante0 se esperan @ segundos para permitir a %steris&
reconocer si la llamada procede de un fax2 (i procede de un fax se va a la extensin fax0 prioridad 1
donde se contestar# con el modem .%H iaxmodem:0 sino se llamar# la extensin 1>>>2 (e guardan los
cambios y actualiSa el dialplan:
3B3
@etc@init.'@asterisk re%oa'
8ara enviar un fax con el cliente 6ylafax la sintaxis es:
sendfaB -h $ode$ -n -d SfaBnu$'erR Sfile.tBtR
(e crea el archivo de texto que se enviar#:
nano @t9@r$e(a"a3.t3t
y se pone:
Libro /steris+ (#'#Q
Nombre /pellido
(e guardan los cambios2 *n este caso con el mdem ttyI%H1 se enviar# el .%H y con el mdem
ttyI%H: se recibe2 6ay que tener en cuenta que cuanto se traba$a con pura lineas 9oI8 el envo y la
recepcin de los .%H no siempre funciona bien2 8or eso se realiSa esta prueba2
sen'"a3 .2 tt1+AX1*%oca%2ost .n .' n$9ero%oca% @t9@r$e(a"a3.t3t
-tiliSando el numero local sera:
sen'"a3 .2 tt1+AX1*%oca%2ost .n .' 1234 @t9@r$e(a"a3.t3t
*n lugar de MnumerolocalN se pone el numero definido en el contexto YfaxZ para la prueba en local2 (i
sale este error:
Esa%e" /usr/s'in/teBtf$t 0-14 0-24 0-L4 0-c4 0-?4 0-f fontna$e4 0-N fontdir(s!4 0-$ C4 0-o 84 0-# 84 0-r4
0-E4 0-9l78Dr78Dt78D'784 0-P 84 files... Rout.#s
?efault o#tions" -f Courier -1 -# 11'# -o )
2e ha #roducido un error al convertir el docu$ento] el co$ando fue W/usr/s'in/teBtf$t -L -f Courier-
Lold -9l7).*in -# 11 -s default R./t$#//sndfaBlLau+8. S./t$#/#rue'afaB.tBt.W
es porque hay un problema con los fonts de +hostscrpt2 8ara solucionarlo se abre el siguiente archivo:
nano @$sr@s2are@g2ostscrit@8.J0@6eso$rce@+nit@7ont9a.4S
y se modifica la linea E::
/Courier&Fold /Nimbus?onL&Fold J
8ara que quede:
/Courier&Fold !n0""00;l#pfa) J
3B@
(e guardan los cambios y se vuelve a enviar el fax:
sen'"a3 .2 tt1+AX1*%oca%2ost .n .' 1234 @t9@r$e(a"a3.t3t
reMuest id is 1 (%rou# id 1! for host localhost (1 file!
(e puede controlar el estado del envo con el siguiente comando:
"a3stat .s
@ylaN3O scheduler on li3,*-112.$e$'ers.linode.co$" 1unnin%
9ode$ ttyA3O2 (/5,5385)+62!" 1unnin% and idle
9ode$ ttyA3O1 (/5,5385)+62!" AnitialiTin% server
KA? Fri 2 <wner Cu$'er Fa%es ?ials ((2 2tatus
1 12, 1 root 123* )"1 )"12
(e entra en la consola de %steris& y se mira que aparece:
asterisk .rvvvvvvvvvvvvv
cuando termine la llamada se sale de la consola:
!LI" B$it
y se controla que ha pasado:
"a3stat .s
@ylaN3O scheduler on li3,*-112.$e$'ers.linode.co$" 1unnin%
9ode$ ttyA3O2 (/5,5385)+62!" 1unnin% and idle
9ode$ ttyA3O1 (/5,5385)+62!" 1unnin% and idle
Los registros del envo de .%H con 6alyfax se encuentran en la carpeta /var/spool/hylafax/log y una
veS enviado el fax0 deberan estar presentes dos archvos:
%s .% @var@soo%@21%a"a3@%og
total 16
-rw------- 1 uuc# uuc# 5)1, 9ar 2* 11"2+ c))))))))1
-rw------- 1 uuc# uuc# *)22 9ar 2* 11"2+ c))))))))2
-rw------- 1 uuc# uuc# 1 9ar 2* 11"2+ seMf
*l primero es el log del modem ttyI%H1 y el segundo del modem ttyI%H:2 (i se abren se podr#
averiguar que el fax se ha enviado2 i!mo puedo comprobarloj %briendo el correo del usuario root
Odesde terminal o =ebminP:
3B?
y comprobando que el fax enviado ha llegado al correo electrnico definido a lo largo de la
configuracin de 6ylafax:
3BB
%briendo el 8/.:
(i se quiere usar un cliente con interfaS gr#fica para el envo de fax0 una buena solucin es Qa$6.!
OQet another Kava 6yla.%H !lientP que siendo escrito completamente en K%9% funciona con cualquier
sistema operativo2 Ltra solucin m#s elaborada es %vant.%H2 *n este libro se mostrar# como instalar y
configurar =in8rint 6ylafax para =indo4s<2
8ara que el cliente pueda conectarse al servidor hay que abrir el puerto @??E D!8 Odonde el servidor
hylafax espera recibir las conexiones y un rango de puertos D!8 para los datos2 (e abre la
configuracin de I8tables:
nano @etc@s1scon"ig@ita(%es
y despu5s de esta linea:
.A +#0>T . $' .9 $' ..'ort 10000)20000 .5 ACC-0T
se aade:
d C1%a"a3
.A +#0>T . tc .9 state ..state #-D .9 tc ..'ort 4LLR .5 ACC-0T
.A +#0>T . tc .9 state ..state #-D .9 tc ..'ort 40000)60000 .5 ACC-0T
(e guardan los cambios y se reinicia I8tables:
service ita(%es restart
%dem#s para que el cliente pueda conectarse al servidor0 hay que crear las credenciales de acceso
Ousuario y contraseaP2 *sta operacin se realiSa con una utilidad presente en la instalacin de 6ylafax:
"a3a''$ser . sesa9o ca9$s
(e crea el usuario campus cuya contrasea ser# sesamo2 *stos datos se guardan autom#ticamente en el
archivo:
nano @var@soo%@21%a"a3@etc@2osts.2"a3'
ccampusSGGac,H1b31'<-m"
3B<
La contrasea ser# cifrada2 Derminada esta primera parte de la configuracin0 en el computador con
=indo4s< instalado0 se descarga el programa y se instala:
2tt)@@'own%oa's.so$rce"orge.net@ro5ect@w2""orwinJ@Din0rintC1%a"a3."or.Din'owsJ@set$@w2"3winJ;set$.e3e
% lo largo de la instalacin aparecer# esta ventana:
C1%a"a3 server) I8 del servidor Linode o del servidor donde est# instalado 6ylafax
>serna9e) nombre del usuario que se ha creado con la utilidad faxadduser
0asswor') contrasea del usuario que se ha creado con la utilidad faxadduser
-9ai%) correo electrnico donde recibir la notificaciones del 5xito o fracaso del envo del fax
Mo'e9) se indica el modem I%H que se quiere utiliSar OttyI%H1P
A''ress <ook ,irector1) una carpeta donde guardar el directorio de los clientes Onumeros de .%HP
0age Size) el formato de la pagina
6eso%$tion) la calidad de los .%H enviados2
-na veS terminada la configuracin se presiona el botn M%ceptarN2 (e sigue con los pasos indicados
por el programa para terminar la instalacin y luego se pasa a la configuracin de la impresora virtual2
3BA
*n =indo4s< se va a Inicio c /ispositivos e impresoras y en la nueva pagina se selecciona:
*n la nueva ventana se selecciona M%gregar una impresora localN y en la siguiente pagina:
(e selecciona M-sar un puerto existenteN y en el menF desplegable se selecciona M6.%H1: O=in8rint
6ylafax 8ortP2 (e continua presionando el botn M(iguienteN:
(e selecciona una impresora 8ost(cript Oen este caso una Herox 8haser B1:> 8(P y se presiona el botn
M(iguienteN:
*n la siguiente pagina se le asigna un nombre a la impresora y se presiona el botn M(iguienteN:
3BE
(e selecciona M,o compartir esta impresoraN y se presiona el botn M(iguienteN:
(e termina la configuracin presionando el Botn M.inaliSarN2 % partir de este momento se puede
utiliSar la impresora para enviar .%H a cualquier numero de tel5fono utiliSando el servidor 6ylafax2
8ara efectuar una prueba0 se crea un nuevo documento con el programa preferido y luego se manda a
imprimir2 *n la lista de impresoras disponibles0 se escoge M6ylafax ttyI%H1N
3<>
*n ,Fmero de .%H se pone 1:3@ Ola extensin configurada en %steris& para recibir los fax con el
modem ttyI%H:P y se presiona el botn M*nviar .%HN2 %l correo electrnico indicado a lo largo de la
instalacin0 se recibir# un correo electrnico indicando si el fax se ha enviado o no con 5xito:
%l correo electrnico configurado en el archivo /var/spool/hylafax/etc/.ax/ispatch el mensa$e con
anexo el .%H recibido:
*n el caso que se quiera instalar el cliente en distintos computadores de una empresa habr# que crear
m#s fax I%Hmodem en el servidor Linux y realiSar la configuracin con la utilidad faxaddmodem de
6ylafax2 Luego si se quiere diferenciar la direccin de correo electrnico segFn el mdem I%Hmodem
donde se ha recibido el fax0 hay que modificar la configuracin del archivo .ax/ispatch:
nano /var/spool/*0lafax/etc/8ax=ispatc*
3<1
8rimero se comenta esta linea:
>N=7O=fulanoSgmail#com
para que quede:
#>N=7O=fulanoSgmail#com
Luego al final del archivo se pone:
case 4E=>R@C>4 in
tt0@/Q() >N=7O=fulanoSgmail#com
tt0@/Q") >N=7O=,utanoSgmail#com
esac
(e guarda la configuracin y se reinicia 6ylafax:
@etc@init.'@21%a"a3 restart
8ara que esta configuracin funcione0 cada .%H debera tener su numero geogr#fico asociado para
tener la certeSa que el .%H se reciba en el mdem correcto2 Ltra solucin podra ser configurar un I9;
para la recepcin de .%H que diga M8ara enviar un .%H a administracin0 presione 10 para enviarlo a
ventas0 presione :N2
'ayores informaciones y guas para =in8rint 6ylafax para =indo4s<0 se encuentran en esta pagina:
2tt)@@w2""orwinJ.so$rce"orge.net@
1J.3 0rotoco%o T38
(e pone una ho$a en la MmaquinaN0 se marca el numero de tel5fono de destino y se espera que salga un
LT por algFn lado2 *sta sencilla operacin es la que se realiSa cuando se quiere enviar un .%H2 Dodo
lo que pasa en el MmientrasN es totalmente transparente2 Las dos maquinas .%H negocian todos los
pasa$es y para hacerlo utiliSan un protocolo2 *se protocolo ha sido definido por la MInternational
Delecommunication -nionN y tom como sigla D23>
*n 1EEA la misma organiSacin define un nuevo protocolo que permite recibir y enviar fax usando una
red a paquetes OInternetP2 La sigla de este protocolo es D23A2
i!mo funciona el protocolo D23Aj
)uiS#s la imagen que sigue ayuda para entender:
3<:
*l .%H est# conectado a la lnea telefnica y tambi5n a un +ate4ay con soporte D23A2 *se +ate4ay se
encarga de transformar el .%H en el formato requerido para ser enviado a trav5s de la red Internet2 *n
el lado opuesto otro +ate4ay D23A se encarga de MdecodificarN los paquetes que lleguen para luego
pasar el resultado al fax de destinacin2 -n +ate4ay D23A cl#sico funciona como se muestra en la
imagen que sigue:
Los datos del .%H D23> vienen analiSados y manipulados para luego ser transformados en paquetes
OI.8P2 Los paquetes se pueden enviar usando tres protocolos de transporte: -/8DL0 D!8 o ;D82 (er#
tarea de los +ate4ay D23A negociar el protocolo de trasporte2 *n el caso de %steris& el Fnico protocolo
de trasporte admitido es -/8DL que funciona de la siguiente forma:
3<3
!ada paquete -/8DL contiene encapsulado el paquete I.8 Oque contiene los datos del fax que se est#
enviando y un sistema de correccin de errores G .*! Yfor4ard error correctionZP2 8ara repetir los
paquetes perdidos y controlar que lleguen en el $usto orden hay disponibles dos sistemas:
!on el primero se repite el ultimo paquete enviado como .*! para el paquete que se est#
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 -/8DL corriente2
*l paquete -/8DL est# encapsulado en un paquete -/8 Oprotocolo de trasporteP que a su veS est#
encapsulado en un paquete I8 Oprotocolo que permite al paquete llegar a su destinoP2
%steris& 12A2H soporta el protocolo D23A solamente como pasarela0 es decir que no est# Men el medioN a
lo largo del envo del fax2 % un lado y al otro de la trasmisin deber#n estar dos +ate4ay D23A que se
hagan cargo de la tarea de enviar/recibir el fax2 *n %steris& el envo y recepcin de faxes es posible a
trav5s de la librera (pan/(8 y el modulo resCfax2
/esde la consola:
asterisk .rvvvvvvvvvvvvvvvv
(e controla la sintaxis de las dos aplicaciones que se activan con el modulo resCfax:
!LI" core s2ow a%ication 6eceive7a3
-7 Anfo a'out a##lication .1eceiveN3O. 7-
02yno#sis4
1eceive a N3O and save as a (ANN/N file.
0?escri#tion4
3<@
(his a##lication is #rovided 'y resfaBD which is a N3O technolo%y a%nostic
$odule that utiliTes N3O technolo%y resource $odules to co$#lete a N3O
trans$ission.
2ession ar%u$ents can 'e set 'y the N3O<F( function and to check results
of the 1eceiveNaB(! a##lication.
02yntaB4
1eceiveN3O(filena$e0Do#tions4!
03r%u$ents4
o#tions
d" Ena'le N3O de'u%%in%.
f" 3llow audio fall'ack N3O transfer on (.38 ca#a'le channels.
s" 2end #ro%ress 9ana%er events (overrides statusevents settin% in
resfaB.conf!.
!LI" core s2ow a%ication Sen'7a3
-7 Anfo a'out a##lication .2endN3O. 7-
02yno#sis4
2ends a s#ecified (ANN/N file as a N3O.
0?escri#tion4
(his a##lication is #rovided 'y resfaBD which is a N3O technolo%y a%nostic
$odule that utiliTes N3O technolo%y resource $odules to co$#lete a N3O
trans$ission.
2ession ar%u$ents can 'e set 'y the N3O<F( function and to check results
of the 2endNaB(! a##lication.
02yntaB4
2endN3O(0filena$e20Y...440Do#tions4!
03r%u$ents4
filena$e2
(ANN file to send as a N3O.
o#tions
d" Ena'le N3O de'u%%in%.
f" 3llow audio fall'ack N3O transfer on (.38 ca#a'le channels.
s" 2end #ro%ress 9ana%er events (overrides statusevents settin% in
resfaB.conf!.
T" Anitiate a (.38 reinvite on the channel if the re$ote end does
not.
3<?
y la funcin:
!LI" core s2ow "$nction 7AXO0T
02yno#sis4
Qets/sets various #ieces of infor$ation a'out a faB session.
0?escri#tion4
N3O<F( can 'e used to override the settin%s for a N3O session listed in W
resfaB.confWD it can also 'e used to retreive infor$ation a'out a N3O
session that has finished e%. #a%es/status.
02yntaB4
N3O<F((ite$!
03r%u$ents4
ite$
ec$ - 1/J Error Correction 9ode (EC9! ena'le with .yes.D disa'le
with .no..
error - 1/< N3O trans$ission error code u#on failure.
filena$e - 1/< Nilena$e of the first file of the N3O trans$ission.
filena$es - 1/< Nilena$es of all of the files in the N3O trans$ission
(co$$a se#arated!.
headerinfo - 1/J N3O header infor$ation.
localstationid - 1/J >ocal 2tation Adentification.
$inrate - 1/J 9ini$u$ transfer rate set 'efore trans$ission.
$aBrate - 1/J 9aBi$u$ transfer rate set 'efore trans$ission.
$ode$ - 1/J 9ode$ ty#e (v1,/v2,/v2+!.
#a%es - 1/< Cu$'er of #a%es transferred.
rate - 1/< Ce%otiated trans$ission rate.
re$otestationid - 1/< 1e$ote 2tation Adentification after trans$
ission.
resolution - 1/< Ce%otiated i$a%e resolution after trans$ission.
sessionid - 1/< 2ession A? of the N3O trans$ission.
status - 1/< 1esult 2tatus of the N3O trans$ission.
statusstr - 1/< Per'ose 1esult 2tatus of the N3O trans$ission.
%lgunos %D% comercialiSados soportan el protocolo D23A2 *n 9oipIinfo aparece una lista Oaunque no
muy actualiSadaP2
8ara el soporte D23A en %steris& hay que modificar este archivo:
9v @etc@asterisk@$'t%.con" @etc@asterisk@$'t%.con.o%'
nano @etc@asterisk@$'t%.con"
3<B
(e pone:
KgeneralL
udptlstart=;000
udptlend=;099
udptlc*ec+sums=0es
udptlfecentries = %
udptlfecspan = %
use5even5ports = no
(e guardan los cambios y se vuelve a iniciar %steris&:
@etc@init.'@asterisk restart
1J.3.1 A%icaci&n 6eceive7a3
8ara el test que se va a realiSar hay que modificar el dialplan:
nano @etc@asterisk@e3tensions.con"
se modifica este bloque:
exten =N ("%;B(B=ial!@/Q"/iaxmodem")
same =N nB*angup
8ara que quede:
exten =N ("%;B(B/ns1er
same =N nB.eceivefax!/tmp/EV6N@`6>@=W#tifBdf)
same =N nBOangup
exten =N *B(BNoop!8/Q7/76 EV8/QO-7!status)WB 8/Q>..O. EV8/QO-7!error)W)
same =N nBOangup
(e guardan los cambios2 !omo se ha activado la opcin de debug OdP0 para ver los datos en la consola
de %steris& hay que modificar el archivo logger2conf que es donde se configuran los distintos registros
de %steris&2 (e abordar# la configuracin del archivo de forma m#s detallada en el capitulo :>2
nano @etc@asterisk@%ogger.con"
se modifica esta linea:
console =N noticeB1arningBerror
para que quede:
console =N noticeB1arningBerrorBfax
3<<
(e guardan los cambios y se actualiSa la configuracin de %steris&:
service asterisk re%oa'
(e enva el mismo archivo txt utiliSado anteriormente:
sen'"a3 .2 tt1+AX1*%oca%2ost .n .' 1234 @t9@r$e(a"a3.t3t
entran en la consola de %steris& y miran los resultados del envo:
asterisk .rvvvvvvvvvvvvvvvvv
*ncontraremos todo el debug de la recepcin del fax con el protocolo D3>2 Las ultimas lineas:
09ar 23 ),"18")34 N3O011,),4" resfaB.c"655 astfaBlo%" N><J (.3) 2end co$#lete in #hase
(3)F@32EED state 2
09ar 23 ),"18")34 N3O011,),4" resfaB.c"655 astfaBlo%" N><J (.3) Chan%in% fro$ state 2 to 32
09ar 23 ),"18")34 N3O011,),4" resfaB.c"655 astfaBlo%" N><J (.3) Chan%in% fro$ #hase
(3)F@32EE to (3)F@32EC3>>NACA2@E?
09ar 23 ),"18")34 N3O011,),4" resfaB.c"655 astfaBlo%" N><J N3O 2et rB ty#e +
09ar 23 ),"18")34 N3O011,),4" resfaB.c"655 astfaBlo%" N><J N3O N3O eBchan%e co$#lete
09ar 23 ),"18")34 N3O011,),4" resfaB.c"655 astfaBlo%" N><J N3O 2et tB ty#e +
09ar 23 ),"18")34 N3O011,),4" resfaB.c"655 astfaBlo%" N><J N3O N3O eBchan%e co$#lete
-- EBecutin% 0123*-faB"34 @an%u#(WA3O2/iaB$ode$1-33*,WD WW! in new stack
77 2#awn eBtension (faBD 123*D 3! eBited non-Tero on .A3O2/iaB$ode$1-33*,.
-- EBecutin% 0h-faB"14 Co<#(WA3O2/iaB$ode$1-33*,WD W8/Q7/76 6CC>D N3OE11<1 W!
in new stack
-- EBecutin% 0h-faB"24 @an%u#(WA3O2/iaB$ode$1-33*,WD WW! in new stack
*l fax0 como indica la parte en negrita0 se ha recibido con 5xito2 (e entra en la carpeta /tmp y se mira si
efectivamente est# presente un archivo tiff:
%s @t9
13325)5)66.).tif
1J.3.2 A%icaci&n Sen'7a3
!omo se ha visto en el p#rrafo 1<230 la aplicacin para enviar .%H en %steris& es (end.ax2 La sintaxis
es muy sencilla:
Sen'7AX8\"i%ena9e2\g...]]\Eotions]:
*l problema es que con esta aplicacin no se puede llamar directamente un .%H en cuanto no hay
posibilidad de indicar el numero a marcar2
3<A
8ara solucionar este problema hay que hacer uso de un callfile2 -n callfile es un archivo de texto donde
se definen unas cuantas acciones que %steris& e$ecutaU una veS preparado se mueve Ono se copiaP en la
carpeta /var/spool/asteris&/outgoing2 %steris& controla peridicamente esta carpeta a trav5s del modulo
(3;soo%.so y si hay un archivo de este tipo lo procesa2
*n el escenario que se va a presentar se llamar# el numero de destino usando el chanClocal2 -na veS
que el destinatario conteste se enviar# el archivo tiff Ola aplicacin (end.ax solo acepta archivos tiffP2
*l callfile que se va a utiliSar:
C2anne%) =oca%@1234*"a3
Uel canal que se va a usar para efectuar la llamada y el numero a llamar2 *l canal Local es un pseudo
canal que permite llamar una extensin y un determinado contexto y0 cuando la extensin conteste0
pasar el procesamiento del dialplan a esa extensin2 *n este caso se llamar# la extensin 1:3@0 contexto
fax que es donde se ha configurado la aplicacin para recibir los .%H2
Ca%%eri') ^7AX^
U el identificativo del llamante
DaitTi9e) 30
U(e espera un respuesta por 3> segundos
Ma3retries)3
:se intentar# llamar el numero tres veces
6etr1Ti9e) 300
U entre un intento y otro se esperar#n 3>> segundos
Acco$nt) 1000
U en el registro de las llamadas O!/;P se contabiliSar# la llamada a la extensin 1>>>
A%ication) Sen'7a3
U una veS que el destinatario conteste se e$ecuta la aplicacin sendfax
,ata) @t9@132R843102.10.ti"
Uel nombre del archivo que se enviar# Ocambiar el nombre con el que hay en la carpeta /tmpP
*l resultado del archivo sin los comentarios ser#:
c' @t9
nano envio"a3
C*annelG Local/("%;Sfax
CalleridG 48/Q4
:ait7imeG %0
3<E
?axretriesG%
.etr07imeG %00
/ccountG (000
/pplicationG end8ax
=ataG /tmp/(%%"5050$$#0#tifBd,
%hora se mueve el archivo en la carpeta /var/spool/asteis&/outgoning
9v envio"a3 @var@soo%@asterisk@o$tgoing
(e entra en la consola de %steris&:
asterisk .rvvvvvvvvvvvvvvv
9ar 23 ),"26"514 N3O0118834" resfaB.c"655 astfaBlo%" N><J (.3) 2end co$#lete in #hase
(3)F@32EED state 2
09ar 23 ),"26"514 N3O0118834" resfaB.c"655 astfaBlo%" N><J (.3) Chan%in% fro$ state 2 to 32
09ar 23 ),"26"514 N3O0118834" resfaB.c"655 astfaBlo%" N><J (.3) Chan%in% fro$ #hase
(3)F@32EE to (3)F@32EC3>>NACA2@E?
09ar 23 ),"26"514 N3O0118834" resfaB.c"655 astfaBlo%" N><J N3O 2et rB ty#e +
09ar 23 ),"26"514 N3O0118834" resfaB.c"655 astfaBlo%" N><J N3O N3O eBchan%e co$#lete
09ar 23 ),"26"514 N3O0118834" resfaB.c"655 astfaBlo%" N><J N3O 2et tB ty#e +
09ar 23 ),"26"514 N3O0118834" resfaB.c"655 astfaBlo%" N><J N3O N3O eBchan%e co$#lete
-- EBecutin% 0123*-faB"34 @an%u#(W>ocal/123*-faB-ee6a]2WD WW! in new stack
77 2#awn eBtension (faBD 123*D 3! eBited non-Tero on .>ocal/123*-faB-ee6a]2.
-- EBecutin% 0h-faB"14 Co<#(W>ocal/123*-faB-ee6a]2WD W8/Q7/76 6CC>D N3OE11<1 W!
in new stack
-- EBecutin% 0h-faB"24 @an%u#(W>ocal/123*-faB-ee6a]2WD WW! in new stack
*sto significa que el fax se ha enviado con 5xito utiliSando el protocolo D3>2 (i se quiere probar el
envo con el protocolo D3A0 hay que utiliSar un proveedor 9oI8 que lo soporte0 cosa que no hace
Kustvoip como se puede ver con esta prueba:
nano envio"a3
C*annelG @-/<ustvoip/00%90C%%('C0;9;
CalleridG 48/Q4
:ait7imeG %0
?axretriesG%
.etr07imeG %00
/ccountG (000
/pplicationG end8ax
=ataG /tmp/(%%"5050$$#0#tifBd,
9v envio"a3 @var@soo%@asterisk@o$tgoing
*l resultado en la consola de %steris& Ola parte en negritaP:
3A>
II %ttempting call on (I8/$ustvoip/>>3E><331A<?1B3 for application
(end.axO/tmp/133:?>?>BB2>2tif0dP O;etry 1P
== -sing (I8 ;D8 !o( mar& ?
" !hannel (I8/$ustvoipI>>>>>>>1 4as ans4ered2
" Launching (end.axO/tmp/133:?>?>BB2>2tif0dP on (I8/$ustvoipI>>>>>>>1
II !hannel b(I8/$ustvoipI>>>>>>>1b sending .%H:
II /tmp/133:?>?>BB2>2tif
Y'ar :3 ><:33:?AZ =%;,I,+Y11E@?Z: resCfax2c:1EEB sendfaxCt3ACinit: A$'io 7AX not a%%owe' on
c2anne% US+0@5$stvoi.00000001U an' T.38 negotiation "ai%e'S a(orting.
Y'ar :3 ><:33:?AZ *;;L;Y11E@?Z: resCfax2c::::? sendfaxCexec: error initialiSing channel
b(I8/$ustvoipI>>>>>>>1b in D23A mode
Y'ar :3 ><:33:?AZ ,LDI!*Y11E@?Z: pbxCspool2c:3BB attemptCthread: !all completed to
(I8/$ustvoip/>>3E><331A<?1B3
*l discurso cambia si para recibir .%H se utiliSan las normales lineas telefnicas2 La calidad es mucho
me$or2 *n la configuracin del chanCdahdi2conf0 hay unos par#metro relacionados con los .%H:
J 8or fax detectionB uncomment one of t*e follo1ing lines# 7*e default is ZO88Z
J
Jfaxdetect=bot*
Jfaxdetect=incoming
Jfaxdetect=outgoing
Jfaxdetect=no
J :*en DfaxdetectD is usedB one could use DfaxbuffersD to configure t*e =/O=@
J transmit buffer polic0# 7*e default is ZO88Z# :*en t*is configuration
J option is usedB t*e faxbuffer polic0 1ill be used for t*e life of t*e call
J after a fax tone is detected# 7*e faxbuffer polic0 is reverted after t*e
J call is torn do1n# 7*e sample belo1 1ill result in $ buffers and a full
J buffer polic0#
J
Jfaxbuffers=N$Bfull
/e esta forma0 para cada canal se puede definir si tiene que reconocer los .%H en las llamadas
entrantes0 salientes o desactivar la opcin2
3A1
Cait$%o XV+++
Cone3iones entre servi'ores Asterisk
*ste capitulo es dedicado a las conexiones entre servidores %steris&2 -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 otra2 %dem#s0 si en una de las sedes est#n
instalados +ate4ay/Dar$etas .HL0 desde la otra sede se podr#n sacar las llamadas utiliSando esos
+ate4ay/Dar$etas2
(e presentar#n cinco tipos de conexiones:
!onexiones (I8 con nombre de usuario y contrasea
!onexiones I%H: con autentificacin sobre I8
!onexiones distribuidas con el protocolo /-,/i
!onexiones sobre Lpen98,
!onexiones (I8 con protocolo (I8 DL( y audio cifrado O(;D8P
18.1 Conectar 'os servi'ores Asterisk con e% rotoco%o S+0
6ay dos servidores %steris&0 % y B que se quieren conectar entre ellos utiliSando el protocolo (I8 para
llamar desde % las extensiones de B y desde B las extensiones de %2 Las extensiones del servidor % son
de @ cifras y empieSan por 10 en el servidor B son de @ cifras y empieSan por el mismo numero 12
Servi'or A
nano @etc@asterisk@si.con"
*n el bloque register se aade:
register QK serverA)ass1*+0server<@server<
*n lugar del I8serverB se pone la direccin I8 del servidor B2 %l final del archivo:
\server<]
t1eQ"rien'
re9otesecretQass2
conte3tQinternas
B$a%i"1Q1es
2ostQ'1na9ic
%ang$ageQes
'isa%%owQa%%
a%%owQgs9
a%%owQ$%aw
a%%owQa%aw
!on la lnea de register0 se conecta el servidor server% al servidor serverB2 !on las lneas que est#n
despu5s de la etiqueta YserverBZ se define una extensin (I8 que ser# aquella usada por el servidor B
para conectarse al servidor %2 !on contexto=internas0 el servidor B tendr# acceso a todo el dialplan
definido en ese contexto2 (i se quiere que el servidor B tenga acceso solamente a un determinado
contexto0 se modifica la linea context poniendo un nombre de contexto y0 si no existe0 se crea ese
contexto en el dialplan2
+M0O6TA#T-) c$an'o se conectan 'os servi'ores Asterisk entre e%%osE en %a
con"ig$raci&n 'e %a e3tensi&n 1a no se $ti%iza e% ar!9etro secret sino e% ar!9etro
re9otesecret 8esto 'es'e %a versi&n 1.6.1.X 'e Asterisk:
(e guardan los cambios y se pasa al servidor B2
Servi'or <
nano @etc@asterisk@si.con"
*n el bloque register se aade::
register QK server<)ass2*+0serverA@serverA
al final del archivo:
\serverA]
t1eQ"rien'
re9otesecretQass1
conte3tQinternas
2ostQ'1na9ic
%ang$ageQes
B$a%i"1Q1es
'isa%%owQa%%
a%%owQgs9
a%%owQ$%aw
a%%owQa%aw
%hora que los dos servidores est#n configurados hay que reiniciarlos2 *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 %:
C=+K si s2ow registr1
6+.16*.1+6.,3"5)6) C server3 1)5 1e%istered JedD 26 <ct 2)11 1)"1,"5*
3A@
C=+K si s2ow eers
serverL/server3 6+.16*.1+6.,3 ? C 5)6) <= (1 $s!
para el servidor B:
C=+K si s2ow registr1
+6.126.121.135"5)6) C serverL 1)5 1e%istered JedD 26 <ct 2)11 1)"18"*2
C=+K si s2ow eers
server3/serverL +6.126.121.135 ? 5)6) <= (2 $s!
%hora lo Fnico que hace falta es modificar el archivo extensions2conf de ambos servidores2
Servi'or A
nano @etc@asterisk@e3tensions.con"
*n el contexto internas Opara las llamadas a extensiones del servidor BP se aade:
exten =N 5Z(QQQB(BNoOp!)
same =N nB=ial!@-/serverF/EV>Q7>NG(WB%0)
same =N nBOangup!)
!on estas lneas se configura %steris& para que todas las llamadas con destino las extensiones cuyo
numero empiece por 1 y sean de @ cifras sean redirigidas hacia el servidor B2 8ara diferenciarlas de las
llamadas entre las extensiones locales del servidor % se aade un ^ delante de las cuatro cifras a marcar2
*$emplo: para marcar a la extensin 1>>> del servidor B0 hay que marcar el siguiente numero: ^1>>>
Servi'or <
nano @etc@asterisk@e3tensions.con"
*n el contexto internas Opara las llamadas a extensiones del servidor %P se aade:
exten =N 5Z(QQQB(BNoOp!)
same =N nB=ial!@-/server//EV>Q7>NG(WB%0)
same =N nBOangup!)
!on estas lneas se configura %steris& para que todas las llamadas con destino las extensiones cuyo
numero empiece por 1 y sean de @ cifras sean redirigidas hacia el servidor B2 8ara diferenciarlas de las
llamadas entre las extensiones locales del servidor % se aade un ^ delante de las cuatro cifras a marcar2
(e actualiSa la configuracin en los dos servidores:
asterisk .rvvvvvvvvvvvvvvv
3A?
C=+K 'ia%%an re%oa'
0r$e(a
/esde la extensin 1>>> del servidor % se marca ^1>>> para llamar la extensin 1>>> del servidor B y
se mira lo que pasa en la consola de %steris& del servidor B:
02)11-)1-25 22"*2"2*4 J31CACQ01*6+24" chansi#.c"128*+ checkauth" userna$e $is$atchD have
S1)))RD di%est has Sserver3R
02)11-)1-25 22"*2"2*4 C<(ACE01*6+24" chansi#.c"2)212 handlereMuestinvite" Nailed to
authenticate device WNulanoW Ssi#"1)))-1,8.,+.1**.2*,R]ta%7as2e5f,*a+
La llamada no funciona2
i8orqu5 pasa esoj
8orque el servidor B piensa que la llamada est# llegando desde la extensin 1>>> local y no logra
distinguir entre extensin 1>>> local y extensin 1>>> remota2 8ara solucionar el problema0 hay que
modificar el plan de marcado en ambos servidores2
Servi'or A
nano @etc@asterisk@e3tensions.con"
modificar este bloque
exten =N 5Z(QQQB(BNoOp!)
same =N nB=ial!@-/serverF/EV>Q7>NG(WB%0)
same =N nBOangup!)
para que quede:
exten =N 5Z(QQQB(B et!C/LL>.@=!num)=server/)
same =N nB=ial!@-/serverF/EV>Q7>NG(WB%0)
same =N nBOangup!)
Servi'or <
nano @etc@asterisk@e3tensions.con"
modificar estas lineas:
e3ten QK ;T1XXXE1E#oO8:
sa9e QK nE,ia%8S+0@serverA@`a-XT-#)1bE30:
sa9e QK nECang$8:
3AB
para que queden:
e3ten QK ;T1XXXE1E Set8CA==-6+,8n$9:Qserver<:
sa9e QK nE,ia%8S+0@serverA@`a-XT-#)1bE30:
sa9e QK nECang$8:
(e actualiSa el dialplan en ambos servidores y se intenta llamar nuevamente desde el servidor % el
numero ^1>>>2 *n la consola de %steris& del servidor % aparecer#:
EBecutin% 061)))-eBternas"14 2et(W2AF/1)))-)))))))*WD WC3>>E1A?(nu$!7server3W! in new stack
-- EBecutin% 061)))-eBternas"24 ?ial(W2AF/1)))-)))))))*WD W2AF/serverL/1)))D3)W! in new stack
77 Esin% 2AF 1(F Co2 $ark 5
77 Esin% 2AF P1(F Co2 $ark 6
77 Esin% E?F(> Co2 $ark 5
-- Called serverL/1)))
-- 2AF/serverL-)))))))5 is rin%in%
La llamada funciona2 *ste tipo de configuracin se necesita solamente si las extensiones de los dos
servidores %steris& tienen los mismos nFmeros asignados2 *n el caso de servidores %steris& con
nFmeros de extensiones distintos0 no hace falta modificar el !%LL*;I/ antes de marcar2
18.2 Conectar 'os servi'ores Asterisk con e% rotoco%o +AX2
*n este p#rrafo se ilustrar# como conectar dos servidor %steris& a trav5s del protocolo I%H: y la
autentificacin con direccin I82 La venta$a de I%H: est# en su caracterstica0 llamada trun&ing0 que
utiliSa el mismo trun& para el envo del audio de todas las llamadas2 /e esta forma cuando hay un
numero considerable de llamadas que est5n pasando por la troncal I%H:0 hay un notable ahorro de
banda2 *sta conexin se implementar# utiliSando las direcciones I8 publicas de los (ervidores2
(uponiendo que la direcciones I8 publicas sean:
Servi'or A)
I8: EB21:B21:?211:
nome trun&: servera
*xtensiones: 1>>>I1>>1I1>>:
Servi'or <)
I8: BB2::A2@E2:1B
nome trun&: serverb
*xtensiones: 1>>>I1>>1I1>>:
Servi'or A
(i abre el archivo iax2conf
nano @etc@asterisk@ia3.con"
3A<
al final del archivo se aaden las siguientes lineas:
KserverbL
t0pe=friend
*ost=$$#""'#;9#"($
trun+=0es
context=internas
Hualif0=0es
*s importante destacar que la I8 que se define es la del servidor BU adem#s se utiliSar# en la
configuracin la funcionalidad del trun&in& I%H:
*l mismo procedimiento se e$ecuta en el servidor B2
Servi'orr <
nano @etc@asterisk@ia3.con"
se aaden las lineas:
KserveraL
t0pe=friend
*ost=9$#("$#("5#(("
trun+=0es
context=internas
Hualif0=0es
(e actualiSa la configuracin en ambos servidores:
asterisk .rvvvvvvvvv
!LI" ia32 re%oa'
(e averigua que haya conexin entre los servidores Oservidor %P:
!LI" ia32 s2ow eers
server' 66.228.*+.216 (2! 255.255.255.255 *56+ ((! (E! <= (1 $s!
(ervidor B:
!LI" ia32 s2ow eers
servera +6.126.125.112 (2! 255.255.255.255 *56+ ((! (E! <= (1 $s!
!LI" B$it
*n el dialplan se crea un nuevo bloque que permita llamar de un servidor a otro:
3AA
Servi'or A
nano @etc@asterisk@e3tensions.con"
se aaden las siguientes lineas en el contexto internas:
exten =N 5Z((00QB(B=ial!@/Q"/serverb/EV>Q7>NG"W)
same =N nBOangup
se actualiSa el dialplan:
asterisk .r3 ^'ia%%an re%oa'^
Servi'or <
nano @etc@asterisk@e3tensions.con"
se aaden las siguientes lineas en el contexto internas:
exten =N 5Z((00QB(B=ial!@/Q"/servera/EV>Q7>NG"W)
same =N nBOangup
se actualiSa el dialplan:
asterisk .r3 ^'ia%%an re%oa'^
%hora se pueden efectuar las pruebas2 /esde la extensin 1>>> del servidor %0 se marca el numero
^11>>> y se averigua en la consola de %steris& que la llamada sea cursada correctamente al servidor B22
*n la consola %steris& del servidor % aparecer#:
-- EBecutin% 0611)))-eBternas"14 ?ial(W2AF/1)))-))))))))WD WA3O2/servera/1)))W! in new stack
-- Called A3O2/servera/1)))
-- Call acce#ted 'y +6.126.125.112 (for$at alaw!
-- Nor$at for call is alaw
-- A3O2/servera-1,5*2 answered 2AF/1)))-))))))))
18.3 -% rotoco%o ,>#,i
!uando hay que conectar un numero considerable de servidores %steris& y compartir las rutas y las
extensiones configuradas en cada uno de ellos0 la solucin m#s funcional es el protocolo /-,/i2
/-,/i O/istributed -niversal ,umber /iscoveryP es un protocolo que permite buscar y compartir
dialplan entre servidores %steris&2 *sto por medio de una red 8eerItoIpeer OpuntoIaIpuntoP en la cual no
existen roles fi$os de clientes y servidores0 sino que los servidores pueden asumir uno u otro rol segFn
el contexto2
3AE
% 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 volver#n disponibles a los dem#s servidores22
%unque la configuracin y puesta en marcha pueda parecer un poco complicada0 con algo de practica
se ir#n aclarando las ideas y los conceptos claves2
*l puerto predefino para el protocolo /-,/i es el @?:> -/82 6ay que abrirlo en el cortafuego de los
servidores donde se va a utiliSar /-,/i:
nano @etc@s1scon"ig@ita(%es
antes de esta linea:
&/ @N-67 &p udp &m udp &&dport ;5$9 &< /CC>-7
se aade:
# =6N=i
&/ @N-67 &p udp &m udp &&dport ;5"0 &< /CC>-7
(e guardan los cambios y se reinicia Iptables:
service ita(%es restart
*n el escenario que se presenta en este p#rrafo hay dos servidores %steris& con estas caractersticas:
Servi'or A)
I8: 1E:21BA21:E21@:
usuario: server1
*xtensiones: 1>>>I1>>1I1>>:
'%! Dar$eta de red: .::3!:E1:/.:?B:3*
Servi'or <)
I8: 1E:21BA21A:2:3B
usuario: server:
*xtensiones: 1>>>I1>>1I1>>:
'%! Dar$eta de red: .*:./:@?:%@:!@:@E
Los dos servidores est#n en la misma L%, pero pueden estar ubicados en cualquier punto de la red
Internet2
*l protocolo /-,/i se configura en el archivo dundi2conf2 *s en este archivo que se definen los
par#metros de conexin entre los servidores %steris& y los contextos que se van a compartir2 *n el
mismo archivo se define el tipo de protocolo que los dos servidores utiliSar#n para efectuar y recibir
llamadas Opuede ser I%H:0 (I8 o 63:3P2
3E>
Derminada la configuracin de dundi2conf0 se modifica el dialplan para definir cuales son las rutas o
contextos que se quiere compartir2
Servi'or A
*n la tabla que sigue se indican los par#metros que se configuran en el archivo dundi2conf con una
breve descripcin para cada uno de ellos2 *n la columna descripcin0 en negrita el valor de cada
par#metro2
0ar!9etro ,escrici&n
YgeneralZ inicia la configuracin general del archivo
department=*mpresa%
organiSation=*mpresa%
locality=(anta 'arta
stateprov='agdalena
country=!olombia
email=admin_servidor%2com
phone=h?<HHHHHHHHHH
*n estos par#metros se indican los datos de la empresa2
bindaddr /ireccin I8 que se quiere utiliSar con el protocolo /-,/i2 !on
0.0.0.0 todas las direcciones I8v@ disponibles en el servidor Linux
port 8uerto para las conexiones /-,/i O4L20 predefinidoP
entityid *l '%! address de la tar$eta de red utiliSada para las conexiones
/-,/i2 8ersonaliSar con el valor real2 -n e$emplo:
72)3C)R1),7)L<)3-
cachetime !uando se enva un solicitud para conocer la disponibilidad de una
ruta y se encuentra una disponible0 el resultado se guardar# por el
tiempo definido en este par#metro Oen segundosP en la base de datos
interna del %steris& que envi la solicitud2 9alor 3600
ttl Dime to Live es un numero que representa el tiempo de vida de la
solicitud2 '#s alto el numero m#s nodos se alcanSar# a consultar2
9alor 32
auto&ill 1es = si no se recibe una respuesta dentro de :>>> ms0 se anular# la
solicitud2 *sto permite evitar que las solicitudes queden abiertas por
un tiempo indeterminado
secretpath *l modulo pbxCdundi crea una clave0 con el nombre definido en este
par#metro0 que rotar# de manera autom#tica y que se guardar# en la
base de datos interna de %steris&2 9alor '$n'i
storehistory 1es = mantiene un registro de las ultimas solicitudes efectuadas con
los tiempos de respuesta de cada una2 /e esta forma es posible
averiguar cuales son los nodos lentos dentro de la red /-,/i
YmappingsZ a partir de esta etiqueta se definen los contextos que se va a compartir
con los dem#s servidores %steris&2 Las sintaxis de un contexto es:
3E1
0ar!9etro ,escrici&n
dundiCcontext =" localCcontext04eight0tech0destY0optionsZZ
dundiCcontext I el contexto /-,/i que se quiere compartir
con los dem#s nodos de la red /-,/i
localCcontext G el contexto local definido en el dialplan donde
se configuran las rutas o extensiones que se quieren compartir
4eight G el peso que se asigna a las rutas que se comparten2 (i
son extensiones locales se pone >0 si son rutas por las cuales
no hay una conexin directa o de alta calidad se pone un
numero m#s alto2 %l momento de efectuar una solicitud0 si
para el mismo numero requerido existen distintas rutas0 se
escoger# la ruta con menor peso
tech G protocolo usado para la conexin entre servidores
%steris& Ose usar# I%H:P
dest G cuando se realiSa una solicitud desde el servidor B y se
encuentra una ruta en el (ervidor %0 el (ervidor % utiliSar# esa
destinacin para recibir la llamada2 (implificando: se crea un
user en el iax2conf del servidor %steris& % y dest representa los
paramentos para conectarse a ese user
options G son las distintas opciones que se pueden aadir a
cada contexto /-,/i:
12 nounsolicited G llamadas de cualquier tipo que no
sean solicitadas no son permitidas en esta ruta
:2 nocomunsolicit G llamadas comerciales no
solicitadas no son permitidas en esta ruta
32 residential G el numero es de una residencia
@2 commercial G el numero es de una empresa
?2 mobile G el numero es un celular
B2 nopartial G no se har#n bFsquedas por nFmeros
incompletos
servera ="
servera.%oca%E0E+AX2Eserver1)`aS-C6-Tb*1R2.168.12R.142@`a#>M<-6b
*l que aparece arriba es el contexto que se va a definir:
servera =" I el contexto /-,/i que se va a compartir
serveraIlocal I el contexto definido en el dialplan que
contendr# todas las rutas que se van a compartir
I%H: I la tecnologa usada OprotocoloP para las llamadas
server1 I usuario que se configurar# en el el archivo iax2conf
ef(*!;*Dg I es la variable que contiene la clave que el
modulo /-,/i crea en autom#tico y que se usar# para
autenticar el usuario server1
1E:21BA21:E21@: I direccin I8 del (ervidor % OpersonaliSarP
3E:
0ar!9etro ,escrici&n
ef,-'B*;g: la variable que contendr# el numero que ha
sido solicitado
8ara terminar con la configuracin del archivo dundi2conf se definen los servidores %steris& con los
que se va a tener una conexin directa:
Y.*:./:@?:%@:!@:@EZ
model = symmetric
host = 1E:21BA21A:2:3B
in&ey = server:
out&ey = server1
include = all
permit = servera
qualify = yes
.*:./:@?:%@:!@:@E: '%! address de la tar$eta de red del (ervidor %steris& B con el que se
crea la conexin OpersonaliSarP
model: puede ser:
12 inbound: recibe solamente solicitudes
:2 outbound: solo efectFa solicitudes pero no las recibe
32 symmetric: recibe y efectFa solicitudes
host: direccin 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 tendr# acceso este nodo
qualify: se controlar# peridicamente que la conexin con el nodo est5 activa
(e crea el archivo dundi2conf2 8rimero se renombra el predefinido:
9v @etc@asterisk@'$n'i.con" @etc@asterisk@'$n'i.con".o%'
se crea uno nuevo:
nano @etc@asterisk@'$n'i.con"
y se copian los datos de configuracin:
KgeneralL
department=>mpresa/
organi,ation=>mpresa/
localit0=anta ?arta
stateprov=?agdalena
countr0=Colombia
3E3
email=adminSservidor/#com
p*one=X5CQQQQQQQQQQ
bindaddr=0#0#0#0
port=;5"0
entit0id=8"G%CG9(G=8G5FG%>
cac*etime=%$00
ttl=%"
auto+ill=0es
secretpat*=dundi
store*istor0=0es
KmappingsL
servera QK servera.%oca%E0E+AX2Eserver1)`aS-C6-Tb*1R2.168.12R.142@`a#>M<-6b
K8"G%CG9(G9$G>CG/%L
model = s0mmetric
*ost = (9"#($'#('"#"%$
in+e0 = server"
out+e0 = server(
include = all
permit = servera
Hualif0 = 0es
+M0O6TA#T-) 0ersona%izar %os sig$ientes ar!9etros) entit1i'E %a 'irecci&n +0 %oca%
resente (a5o %a etiB$eta \9aings]E e% 9ac a''ress 'e %a tar5eta 'e% servi'or <
conteni'o entre corc2etes 1 %a 'irecci&n i %oca% 'e% servi'or < en 2ost
(e guardan los cambios y se crea la clave ;(% para autenticar el (ervidor %steris& B2 8ara crear la
clave se utiliSar# una utilidad que viene con la instalacin de %steris&2 8rimero se entra en la carpeta
donde se guardar#n las claves:
c' @var@%i(@asterisk@ke1s
(e crea la clave:
astgenke1 .n server1
(his scri#t %enerates an 123 #rivate and #u'lic key #air
in FE9 for$at for use 'y 3sterisk. &ou will 'e asked to
enter a #asscode for your key $ulti#le ti$es. Flease
enter the sa$e code each ti$e. (he resultin% files will
need to 'e $oved to /var/li'/asterisk/keys if you want
to use the$D and any #rivate keys (.key files! will
need to 'e initialiTed at runti$e either 'y runnin%
3sterisk with the .-i. o#tionD or with the .init keys.
co$$and once 3sterisk is runnin%.
3E@
Fress EC(E1 to continue or `C to cancel.
Qeneratin% 22> key .server1."
Qeneratin% 123 #rivate keyD 1)2* 'it lon% $odulus
...............//////
....//////
e is 6553, ()B1)))1!
writin% 123 key
=ey creation successful.
Fu'lic key" server1.#u'
Frivate key" server1.key
(e crear#n dos archivosU uno contiene la clave publica y uno la clave privada2 La publica se copia en el
(ervidor %steris& B:
sc server1.$( root*1R2.168.182.236)@var@%i(@asterisk@ke1s
8ersonaliSar la direccin I8 local del servidor B2 %hora se puede aadir el usuario server1 al archivo
iax2conf
nano @etc@asterisk@ia3.con"
(e aaden las siguientes lineas al final del archivo:
Kserver(L
t0pe=user
dbsecret=dundi/secret
context=servera&local
Hualif0=0es
disallo1=all
allo1=ula1
allo1=ala1
Importante definir el par#metro context con el valor del contexto que se ha definido en nuestra ruta
OserveraIlocalP
*l ultimo archivo que hay que modificar es el dialplan:
nano @etc@asterisk@e3tensions.con"
%ntes del contexto internas se define el contexto serveraIlocal y se incluyen las rutas/extensiones que
se quiere compartir con el servidor B
Kservera&localL
exten =N "0B(B/ns1er!)
exten =N "0BnB-la0bac+!*ello&1orld)
exten =N "0BnBOangup!)
3E?
8ara las solicitudes remotas se crea otro contexto:
Kdundi&remotoL
s1itc* =N =6N=i/serverb
/e esta forma cuando se marca un numero y ese numero no est# presente en ningFn contexto del
dialplan0 %steris& consultar# el servidor remoto con que tiene una conexin /-,/i2 *l nombre serverb
es el contexto /-,/i que luego se crear# en el archivo dundi2conf del (ervidor %steris& B2
%adimos el contexto dundiIremoto a la lista de contextos disponibles para la extensiones configuradas
en el (ervidor %steris& % Oen negrita los cambiosP:
YexternasZ
include =" internas
include =" internacio
include =" par&edcalls
include =" test
include =" conferencias
inc%$'e QK '$n'i.re9oto
YlocalesZ
include =" internas
include =" auten
include =" par&edcalls
include =" test
include =" conferencias
inc%$'e QK '$n'i.re9oto
(e guardan los cambios y se continFa con la configuracin del (ervidor %steris& B
Servi'or <
9v @etc@asterisk@'$n'i.con" @etc@asterisk@'$n'i.con".o%'
nano @etc@asterisk@'$n'i.con"
!on los oportunos cambios0 la configuracin del servidor B ser#:
KgeneralL
department=>mpresaF
organi,ation=>mpresaF
localit0=anta ?arta
stateprov=?agdalena
countr0=Colombia
email=adminSservidorF#com
p*one=X5CQQQQQQQQ
3EB
bindaddr=0#0#0#0
port=;5"0
entit0id=8"G%CG9(G9$G>CG/%
cac*etime=%$00
ttl=%"
auto+ill=0es
secretpat*=dundi
store*istor0=0es
KmappingsL
serverb =N serverb&localB0B@/Q"Bserver"GEV>C.>7WS(9"#($'#('"#"%$/EVN6?F>.W
K8"G%CG9(G=8G5FG%>L
model = s0mmetric
*ost = (9"#($'#("9#(;"
in+e0 = server(
out+e0 = server"
include = all
permit = serverb
Hualif0 = 0es
+M0O6TA#T-) 0ersona%izar %os sig$ientes ar!9etros) entit1i'E %a 'irecci&n +0 %oca%
resente (a5o %a etiB$eta \9aings]Ee% 9ac a''ress 'e %a tar5eta 'e% servi'or <
conteni'o entre corc2etes 1 %a 'irecci&n i %oca% 'e% servi'or < en 2ost
(e crea la clave ;(% para el servidor B:
c' @var@%i(@asterisk@ke1s
astgenke1 .n server2
(his scri#t %enerates an 123 #rivate and #u'lic key #air
in FE9 for$at for use 'y 3sterisk. &ou will 'e asked to
enter a #asscode for your key $ulti#le ti$es. Flease
enter the sa$e code each ti$e. (he resultin% files will
need to 'e $oved to /var/li'/asterisk/keys if you want
to use the$D and any #rivate keys (.key files! will
need to 'e initialiTed at runti$e either 'y runnin%
3sterisk with the .-i. o#tionD or with the .init keys.
co$$and once 3sterisk is runnin%.
Fress EC(E1 to continue or `C to cancel.
Qeneratin% 22> key .server2."
Qeneratin% 123 #rivate keyD 1)2* 'it lon% $odulus
............//////
..........................//////
3E<
e is 6553, ()B1)))1!
writin% 123 key
=ey creation successful.
Fu'lic key" server2.#u'
Frivate key" server2.key
(e copia la clave publica en el (ervidor %steris& %
sc server2.$( root*1R2.168.12R.142)@var@%i(@asterisk@ke1s
8ersonaliSar la direccin I8 local del servidor %2 (e crea el usuario I%H:
nano @etc@asterisk@ia3.con"
Kserver"L
t0pe=user
Hualif0=0es
dbsecret=dundi/secret
context=serverb&local
disallo1=all
allo1=ula1
allo1=ala1
8ara terminar se modifica el plan de marcado:
nano @etc@asterisk@e3tensions.con"
Kserverb&localL
exten =N ;0B(B/ns1er!)
exten =N ;0BnB-la0bac+!*ello&1orld)
exten =N ;0BnBOangup!)
Kdundi&remotoL
s1itc* =N =6N=i/servera
(e incluye el contexto dundiIremoto de forma que sea accesible a las extensiones:
YexternasZ
include =" internas
include =" internacio
include =" par&edcalls
include =" test
include =" conferencias
inc%$'e QK '$n'i.re9oto
YlocalesZ
include =" internas
3EA
include =" auten
include =" par&edcalls
include =" test
include =" conferencias
inc%$'e QK '$n'i.re9oto
-na veS terminada la configuracin del (ervidor %steris& B en ambos se reinicia la 8BH:
@etc@init.'@asterisk restart
(e entra en la consola del servidor %steris& %:
asterisk .rvvvvvvvvvvvv
se mira la lista de comandos disponibles para /-,/i
!LI" 2e% '$n'i
dundi flush 0stats4 Nlush ?EC?i cache
dundi looku# >ooku# a nu$'er in ?EC?i
dundi #recache Frecache a nu$'er in ?EC?i
dundi Muery Iuery a ?EC?i EA?
dundi set de'u% Uon5offV Ena'le/?isa'le ?EC?i de'u%%in%
dundi show entityid ?is#lay Qlo'al Entity A?
dundi show $a##in%s 2how ?EC?i $a##in%s
dundi show #eers 0re%istered5i 2how defined ?EC?i #eers
dundi show #eer 2how info on a s#ecific ?EC?i #eer
dundi show #recache 2how ?EC?i #recache
dundi show reMuests 2how ?EC?i reMuests
dundi show trans 2how active ?EC?i transactions
dundi store history Uon5offV Ena'le/?isa'le ?EC?i historic records
(e controla que haya conexin entre los dos servidores:
!LI" '$n'i s2ow eers
EA? @ost Fort 9odel 3v%(i$e 2tatus
f2"3c"+1"+6"ec"a3 1+2.168.182.236 (2! *52) 2y$$etric Enavail <= (1 $s!
1 dundi #eers 01 onlineD ) offlineD ) un$onitored4
!on el comando:
!LI" 'ata(ase s2ow
/dundi/secret " MotIe/P#1L2Q,2+yoiTlF377]3o'Q'1ItvkEeciZs,r@5C377
/dundi/secreteB#iry " 125+212*)3
aparecer# la clave creada por el modulo pbxCdundi y el tiempo que falta para que caduque2
%hora se puede realiSar la primera consulta para controlar que efectivamente las rutas se est#n
3EE
compartiendo:
!LI" '$n'i %ook$ 40*server(
1. ) A3O2/server2"kQ&Tca'##I5,,EPAJc6eQI77-1+2.168.182.236/*) (EOA2(25C3C93(C@!
fro$ f2"3c"+1"+6"ec"a3D eB#ires in 36)) s
?EC?i looku# co$#leted in *5 ms
*n el servidor %steris& B las extensin compartidas es la @> y efectivamente enviando la solicitud0 la
respuesta es que la extensin existe2 *n el comando ademas de la extensin va indicado el contexto
como se ha definido en el bloque mappings del dundi2conf del servidor %steris& B2
(i se enva una solicitud para una ruta que no existe la respuesta ser#:
!LI" '$n'i %ook$ 20*server(
?EC?i looku# returned no results.
?EC?i looku# co$#leted in 3 $s
(e efectFa otra solicitud de prueba desde el (ervidor %steris& B
!LI" '$n'i %ook$ 20*servera
1. ) A3O2/server1",/+k(sda'@hfQCokZ/B2C%77-1+2.168.1*2.2*8/2) (EOA2(25C3C93(C@!
fro$ f2"3c"+1"df"5'"3eD eB#ires in 36)) s
?EC?i looku# co$#leted in , $s
8ara terminar las pruebas se conecta un softphone al servidor %steris& B y se intenta llamar la
extensin :> Oque es presente en el servidor %steris& %PU luego desde una extensin del servidor % se
marca el numero @>2
!omo se ha podido ver0 las potencialidades del protocolo /-,/i son realmente grandes2 *ste p#rrafo
es una pequea gua para que se pueda empeSar a implementarlas2
18.4 Conectar 'os servi'ores Asterisk con OenV0#
/esde la versin 12A2H es posible cifrar la sealiSacin (I8 y el flu$o media2 % pesar de la nueva
implementacin0 todava hay muchos problemas de compatibilidad entre %steris& y las distintas
marcas/modelos de tel5fonos actualmente en el mercado2 8or este motivo0 en algunos casos0 puede ser
m#s funcional crear una red 98, entre servidores Linux y luego utiliSarla para configurar troncales en
%steris&2 *n este p#rrafo se ver# como instalar y configurar Lpen98, en dos servidores %steris& y
como crear una conexin 98, entre los dos2
Servi'or A
8rimero se instala LZO0 una librera de compresin datos requerida por Lpen98,:
c' @$sr@src
@>>
(e descarga:
wget 2tt)@@www.o(er2$9er.co9@oenso$rce@%zo@'own%oa'@%zo.2.06.tar.gz
(e descomprime y se instala:
tar .3" %zo.2.06.tar.gz
c' %zo.2.06
.@con"ig$re ..re"i3Q@$sr
9ake
9ake insta%%
%hora se puede instalar la ultima versin disponible de OpenVPN pero primero se instala una
dependencia:
1$9 insta%% a9.'eve%
c' @$sr@src
se descarga:
wget 2tt)@@sw$'ate.oenvn.org@co99$nit1@re%eases@oenvn.2.3.0.tar.gz
se descomprime:
tar .3" oenvn.2.3.0.tar.gz
se entra en la carpeta creada:
c' oenvn.2.3.0
se compila:
.@con"ig$re
9ake
9ake insta%%
(e prepara el servidor Linux para crear las distintas claves O!%0 servidor0 clienteP0 se descarga unas
utilidades con +ID:
1$9 insta%% git
git c%one 2tts)@@git2$(.co9@OenV0#@eas1.rsa.git
c' eas1.rsa@eas1.rsa@2.0@
@>1
(e crea la carpeta donde se guardar#n las distintas claves:
9k'ir @$sr@%oca%@s(in@ke1s
nano vars
(e modifican las lneas que siguen2 *sto datos ser#n los predefinidos que se usaran al momento de la
generacin de las claves2 8ersonaliSar los datos de los par#metros que siguen:
e3ort H-V;,+6Q@$sr@%oca%@s(in@ke1s
e3ort H-V;CO>#T6VQ^CO^
e3ort H-V;06OV+#C-Q^MA4^
e3ort H-V;C+TVQ^SantaMarta^
e3ort H-V;O64Q^VozToVoice^
e3ort H-V;-MA+=Q^a'9in*voztovoice.org^
e3ort H-V;-MA+=Qa'9in*voztovoice.org
(e guardan los cambios y se prepara el programa para la generacin de las claves:
. .@vars
C<(E" Af you run ./clean-allD A will 'e doin% a r$ -rf on /usr/local/s'in/keys
+M0O6TA#T-) entre e% ri9er $nto 1 e% seg$n'o 2a1 $n esacio
.@c%ean.a%%
%hora se puede empeSar a generar las claves empeSando con la !% O!ertificate %uthorityP:
.@($i%'.ca
Qeneratin% a 2)*8 'it 123 #rivate key
.......................///
........................///
writin% new #rivate key to .ca.key.
-----
&ou are a'out to 'e asked to enter infor$ation that will 'e incor#orated
into your certificate reMuest.
Jhat you are a'out to enter is what is called a ?istin%uished Ca$e or a ?C.
(here are Muite a few fields 'ut you can leave so$e 'lank
Nor so$e fields there will 'e a default valueD
Af you enter ...D the field will 'e left 'lank.
-----
Country Ca$e (2 letter code! 0C<4"
2tate or Frovince Ca$e (full na$e! 09a%dalena4"
@>:
>ocality Ca$e (e%D city! 02anta9arta4"
<r%aniTation Ca$e (e%D co$#any! 0PoT(oPoice4"
<r%aniTational Enit Ca$e (e%D section! 0ad$in-voTtovoice.or%4"-FQ/
Co$$on Ca$e (e%D your na$e or your server.s hostna$e! 0PoT(oPoice C34"li"(5&";0#members#linode#com
Ca$e 0Easy1234"
E$ail 3ddress 0ad$in-voTtovoice.or%4"
*n M!ommon ,ameN se pone el nombre de dominio de Linode o del servidor Linux que se est#
utiliSando2 (e continua con la clave del servidor:
.@($i%'.ke1.server server
Qeneratin% a 2)*8 'it 123 #rivate key
..........................///
................///
writin% new #rivate key to .server.key.
-----
&ou are a'out to 'e asked to enter infor$ation that will 'e incor#orated
into your certificate reMuest.
Jhat you are a'out to enter is what is called a ?istin%uished Ca$e or a ?C.
(here are Muite a few fields 'ut you can leave so$e 'lank
Nor so$e fields there will 'e a default valueD
Af you enter ...D the field will 'e left 'lank.
-----
Country Ca$e (2 letter code! 0C<4"
2tate or Frovince Ca$e (full na$e! 09a%dalena4"
>ocality Ca$e (e%D city! 02anta9arta4"
<r%aniTation Ca$e (e%D co$#any! 0PoT(oPoice4"
<r%aniTational Enit Ca$e (e%D section! 0ad$in-voTtovoice.or%4"-FQ/
Co$$on Ca$e (e%D your na$e or your server.s hostna$e! 0server4"li"(5&";0#members#linode#com
Ca$e 0Easy1234"
E$ail 3ddress 0ad$in-voTtovoice.or%4"
Flease enter the followin% .eBtra. attri'utes
to 'e sent with your certificate reMuest
3 challen%e #assword 04"
3n o#tional co$#any na$e 04"
Esin% confi%uration fro$ /usr/src/o#env#n-2.3.)/easy-rsa/easy-rsa/2.)/o#enssl-1.).).cnf
Check that the reMuest $atches the si%nature
2i%nature ok
(he 2u'Gect.s ?istin%uished Ca$e is as follows
countryCa$e "F1AC(3L>E".C<.
state<rFrovinceCa$e "F1AC(3L>E".9a%dalena.
localityCa$e "F1AC(3L>E".2anta9arta.
or%aniTationCa$e "F1AC(3L>E".PoT(oPoice.
or%aniTationalEnitCa$e"F1AC(3L>E".FLO3.
co$$onCa$e "F1AC(3L>E".li215-2*).$e$'ers.linode.co$.
@>3
na$e "F1AC(3L>E".Easy123.
e$ail3ddress "A352(1ACQ".ad$in-voTtovoice.or%.
Certificate is to 'e certified until 9ar 22 22"1*"18 2)23 Q9( (365) days!
2i%n the certificate; 0y/n4"0
1 out of 1 certificate reMuests certifiedD co$$it; 0y/n40
Jrite out data'ase with 1 new entries
?ata Lase E#dated
8ara terminar se crea una clave para el cliente Oel servidor %steris& BP:
.@($i%'.ke1 c%iente(
Qeneratin% a 2)*8 'it 123 #rivate key
....................................///
................................................///
writin% new #rivate key to .cliente'.key.
-----
&ou are a'out to 'e asked to enter infor$ation that will 'e incor#orated
into your certificate reMuest.
Jhat you are a'out to enter is what is called a ?istin%uished Ca$e or a ?C.
(here are Muite a few fields 'ut you can leave so$e 'lank
Nor so$e fields there will 'e a default valueD
Af you enter ...D the field will 'e left 'lank.
-----
Country Ca$e (2 letter code! 0C<4"
2tate or Frovince Ca$e (full na$e! 09a%dalena4"
>ocality Ca$e (e%D city! 02anta9arta4"
<r%aniTation Ca$e (e%D co$#any! 0PoT(oPoice4"
<r%aniTational Enit Ca$e (e%D section! 0ad$in-voTtovoice.or%4"-FQ/
Co$$on Ca$e (e%D your na$e or your server.s hostna$e! 0cliente'4"
Ca$e 0Easy1234"
E$ail 3ddress 0ad$in-voTtovoice.or%4"
Flease enter the followin% .eBtra. attri'utes
to 'e sent with your certificate reMuest
3 challen%e #assword 04"
3n o#tional co$#any na$e 04"
Esin% confi%uration fro$ /usr/src/o#env#n-2.3.)/easy-rsa/easy-rsa/2.)/o#enssl-1.).).cnf
Check that the reMuest $atches the si%nature
2i%nature ok
(he 2u'Gect.s ?istin%uished Ca$e is as follows
countryCa$e "F1AC(3L>E".C<.
state<rFrovinceCa$e "F1AC(3L>E".9a%dalena.
localityCa$e "F1AC(3L>E".2anta9arta.
or%aniTationCa$e "F1AC(3L>E".PoT(oPoice.
@>@
or%aniTationalEnitCa$e"F1AC(3L>E".FLO3.
co$$onCa$e "F1AC(3L>E".cliente'.
na$e "F1AC(3L>E".Easy123.
e$ail3ddress "A352(1ACQ".ad$in-voTtovoice.or%.
Certificate is to 'e certified until 9ar 22 22"16")+ 2)23 Q9( (365) days!
2i%n the certificate; 0y/n4"0
1 out of 1 certificate reMuests certifiedD co$$it; 0y/n40
Jrite out data'ase with 1 new entries
?ata Lase E#dated
(i se tiene planeado utiliSar la conexin para conectar telefonos I8 y/o (oftphone0 se crean otras claves
cliente2 (e termina con la generacin del par#metro /iffie 6ellman
.@($i%'.'2
Qeneratin% ?@ #ara$etersD 2)*8 'it lon% safe #ri$eD %enerator 2
(his is %oin% to take a lon% ti$e
Lpen98, utiliSa como puerto predefinido el 11E@ Opuede ser -/8 o D!8 segFn la configuracinP2 6ay
que abrirlo en Iptables solamente para la I8 del servidor B2 (uponiendo que la I8 del servidor B es
BB2::A2@E2:1B0 se aaden las siguientes lineas en la configuracin:
nano @etc@s1scon"ig@ita(%es
despu5s de esta linea:
.A +#0>T . tc .9 state ..state #-D .9 tc ..'ort 1L000 .5 ACC-0T
se pone:
# OpenR-N
&/ @N-67 &p tcp &m state &&state N>: &m tcp &s $$#""'#;9#"($ &&dport ((9; &< /CC>-7
&/ @N-67 &p udp &m udp &s $$#""'#;9#"($ &&dport ((9; &< /CC>-7
(e guardan los cambios y se reinicia iptables:
service ita(%es restart
Lo siguiente es instalar el script de arranque presente en las fuentes de Lpen98,:
c' @$sr@src@oenvn.2.3.0@'istro@r9
c oenvn.init.'.r2e% @etc@rc.'@init.'@oenvn
c2kcon"ig ..a'' oenvn
@>?
c2kcon"ig oenvn on
(e crea la carpeta donde se guardar#n los archivos de configuracin de Lpen98,:
9k'ir @etc@oenvn
(e crea el archivo de configuracin para el servidor:
c' @etc@oenvn
nano server.con"
(e copian las siguientes lineas:
port ((9;
proto udp
dev tun
ca /usr/local/sbin/+e0s/ca#crt
cert /usr/local/sbin/+e0s/server#crt
+e0 /usr/local/sbin/+e0s/server#+e0
d* /usr/local/sbin/+e0s/d*"0;'#pem
server (0#'#0#0 "55#"55#"55#0
ifconfig&pool&persist ipp#txt
+eepalive (0 ("0
comp&l,o
max&clients %0
persist&+e0
persist&tun
log openvpn#log
log&append openvpn#log
verb %
management local*ost C505
8ara m#s informaciones sobre estos par#metros:
http://openvpn2net/index2php/openIsource/documentation/ho4to2htmlWexamples
(e guardan los cambios y se inicia Lpen98,
@etc@init.'@oenvn start
*n la configuracin de red del servidor aparecer# un nuevo dispositivo:
i"con"ig
@>B
Servi'or <
(e sigue el mismo procedimiento para el servidor B:
c' @$sr@src
(e descarga:
wget 2tt)@@www.o(er2$9er.co9@oenso$rce@%zo@'own%oa'@%zo.2.06.tar.gz
(e descomprime y se instala:
tar .3" %zo.2.06.tar.gz
c' %zo.2.06
.@con"ig$re /re"i3Q@$sr
9ake
9ake insta%%
%hora se puede instalar la ultima versin disponible de Lpen98,:
1$9 insta%% a9.'eve%
c' @$sr@src
se descarga:
wget 2tt)@@sw$'ate.oenvn.org@co99$nit1@re%eases@oenvn.2.3.0.tar.gz
se descomprime:
tar .3" oenvn.2.3.0.tar.gz
se entra en la carpeta creada:
c' oenvn.2.3.0
se compila:
.@con"ig$re
@><
9ake
9ake insta%%
(e prepara el servidor Linux para crear las distintas claves O!%0 servidor0 clienteP0 se descarga unas
utilidades con +ID:
1$9 insta%% git
git c%one 2tts)@@git2$(.co9@OenV0#@eas1.rsa.git
c' eas1.rsa@eas1.rsa@2.0@
(e crea la carpeta donde se guardar#n las distintas claves:
9k'ir @$sr@%oca%@s(in@ke1s
nano vars
(e modifican las lneas que siguen2 *sto datos ser#n los que se usaran como predefinidos al momento
de la generacin de las claves2 8ersonaliSar los datos desde la segunda linea en adelante:
e3ort H-V;,+6Q@$sr@%oca%@s(in@ke1s
e3ort H-V;CO>#T6VQ^CO^
e3ort H-V;06OV+#C-Q^MA4^
e3ort H-V;C+TVQ^SantaMarta^
e3ort H-V;O64Q^VozToVoice^
e3ort H-V;-MA+=Q^a'9in*voztovoice.co9^
e3ort H-V;-MA+=Qa'9in*voztovoice.co9
(e guardan los cambios y se prepara el programa para la generacin de las claves:
. .@vars
+M0O6TA#T-) entre e% ri9er $nto 1 e% seg$n'o 2a1 $n esacio
.@c%ean.a%%
%hora se puede empeSar a generar las claves empeSando con la !% O!ertificate %uthorityP:
.@($i%'.ca
Qeneratin% a 2)*8 'it 123 #rivate key
.......................///
........................///
writin% new #rivate key to .ca.key.
@>A
-----
&ou are a'out to 'e asked to enter infor$ation that will 'e incor#orated
into your certificate reMuest.
Jhat you are a'out to enter is what is called a ?istin%uished Ca$e or a ?C.
(here are Muite a few fields 'ut you can leave so$e 'lank
Nor so$e fields there will 'e a default valueD
Af you enter ...D the field will 'e left 'lank.
-----
Country Ca$e (2 letter code! 0C<4"
2tate or Frovince Ca$e (full na$e! 09a%dalena4"
>ocality Ca$e (e%D city! 02anta9arta4"
<r%aniTation Ca$e (e%D co$#any! 0PoT(oPoice4"
<r%aniTational Enit Ca$e (e%D section! 0ad$in-voTtovoice.or%4"-FQF
Co$$on Ca$e (e%D your na$e or your server.s hostna$e! 0PoT(oPoice C34"li"(5&%;0#members#linode#com
Ca$e 0Easy1234"
E$ail 3ddress 0ad$in-voTtovoice.or%4"
*n M!ommon ,ameN se pone el nombre de dominio de Linode o del servidor Linux que se est#
utiliSando2 (e continua con la clave del servidor:
.@($i%'.ke1.server server
Qeneratin% a 2)*8 'it 123 #rivate key
..........................///
................///
writin% new #rivate key to .server.key.
-----
&ou are a'out to 'e asked to enter infor$ation that will 'e incor#orated
into your certificate reMuest.
Jhat you are a'out to enter is what is called a ?istin%uished Ca$e or a ?C.
(here are Muite a few fields 'ut you can leave so$e 'lank
Nor so$e fields there will 'e a default valueD
Af you enter ...D the field will 'e left 'lank.
-----
Country Ca$e (2 letter code! 0C<4"
2tate or Frovince Ca$e (full na$e! 09a%dalena4"
>ocality Ca$e (e%D city! 02anta9arta4"
<r%aniTation Ca$e (e%D co$#any! 0PoT(oPoice4"
<r%aniTational Enit Ca$e (e%D section! 0ad$in-voTtovoice.or%4"-FQF
Co$$on Ca$e (e%D your na$e or your server.s hostna$e! 0server4"li"(5&%;0#members#linode#com
Ca$e 0Easy1234"
E$ail 3ddress 0ad$in-voTtovoice.or%4"
Flease enter the followin% .eBtra. attri'utes
to 'e sent with your certificate reMuest
3 challen%e #assword 04"
3n o#tional co$#any na$e 04"
@>E
Esin% confi%uration fro$ /usr/src/o#env#n-2.3.)/easy-rsa/easy-rsa/2.)/o#enssl-1.).).cnf
Check that the reMuest $atches the si%nature
2i%nature ok
(he 2u'Gect.s ?istin%uished Ca$e is as follows
countryCa$e "F1AC(3L>E".C<.
state<rFrovinceCa$e "F1AC(3L>E".9a%dalena.
localityCa$e "F1AC(3L>E".2anta9arta.
or%aniTationCa$e "F1AC(3L>E".PoT(oPoice.
or%aniTationalEnitCa$e"F1AC(3L>E".FLOL.
co$$onCa$e "F1AC(3L>E".li215-3*).$e$'ers.linode.co$.
na$e "F1AC(3L>E".Easy123.
e$ail3ddress "A352(1ACQ".ad$in-voTtovoice.or%.
Certificate is to 'e certified until 9ar 22 22"1*"18 2)23 Q9( (365) days!
2i%n the certificate; 0y/n4"0
1 out of 1 certificate reMuests certifiedD co$$it; 0y/n40
Jrite out data'ase with 1 new entries
?ata Lase E#dated
8ara terminar se crea una clave para el cliente Oel servidor %steris& BP:
.@($i%'.ke1 c%ientea
Qeneratin% a 2)*8 'it 123 #rivate key
....................................///
................................................///
writin% new #rivate key to .clientea.key.
-----
&ou are a'out to 'e asked to enter infor$ation that will 'e incor#orated
into your certificate reMuest.
Jhat you are a'out to enter is what is called a ?istin%uished Ca$e or a ?C.
(here are Muite a few fields 'ut you can leave so$e 'lank
Nor so$e fields there will 'e a default valueD
Af you enter ...D the field will 'e left 'lank.
-----
Country Ca$e (2 letter code! 0C<4"
2tate or Frovince Ca$e (full na$e! 09a%dalena4"
>ocality Ca$e (e%D city! 02anta9arta4"
<r%aniTation Ca$e (e%D co$#any! 0PoT(oPoice4"
<r%aniTational Enit Ca$e (e%D section! 0ad$in-voTtovoice.or%4"-FQF
Co$$on Ca$e (e%D your na$e or your server.s hostna$e! 0clientea4"
Ca$e 0Easy1234"
E$ail 3ddress 0ad$in-voTtovoice.or%4"
Flease enter the followin% .eBtra. attri'utes
to 'e sent with your certificate reMuest
@1>
3 challen%e #assword 04"
3n o#tional co$#any na$e 04"
Esin% confi%uration fro$ /usr/src/o#env#n-2.3.)/easy-rsa/easy-rsa/2.)/o#enssl-1.).).cnf
Check that the reMuest $atches the si%nature
2i%nature ok
(he 2u'Gect.s ?istin%uished Ca$e is as follows
countryCa$e "F1AC(3L>E".C<.
state<rFrovinceCa$e "F1AC(3L>E".9a%dalena.
localityCa$e "F1AC(3L>E".2anta9arta.
or%aniTationCa$e "F1AC(3L>E".PoT(oPoice.
or%aniTationalEnitCa$e"F1AC(3L>E".FLOL.
co$$onCa$e "F1AC(3L>E".clientea.
na$e "F1AC(3L>E".Easy123.
e$ail3ddress "A352(1ACQ".ad$in-voTtovoice.or%.
Certificate is to 'e certified until 9ar 22 22"16")+ 2)23 Q9( (365) days!
2i%n the certificate; 0y/n4"0
1 out of 1 certificate reMuests certifiedD co$$it; 0y/n40
Jrite out data'ase with 1 new entries
?ata Lase E#dated
(e termina con la generacin del par#metro /iffie 6ellman
.@($i%'.'2
Qeneratin% ?@ #ara$etersD 2)*8 'it lon% safe #ri$eD %enerator 2
(his is %oin% to take a lon% ti$e
!omo para el servidor %0 se abren los puertos en iptables para la I8 del servidor %
nano @etc@s1scon"ig@ita(%es
# OpenR-N
&/ @N-67 &p tcp &m state &&state N>: &m tcp &s $9#($;#"0(#(C' &&dport ((9; &< /CC>-7
&/ @N-67 &p udp &m udp &s $9#($;#"0(#(C' &&dport ((9; &< /CC>-7
(e guardan los cambios y se reinicia iptables:
service ita(%es restart
Lo siguiente es instalar el script de arranque presente en las fuentes de Lpen98,:
c' @$sr@src@oenvn.2.3.0@'istro@r9
c oenvn.init.'.r2e% @etc@rc.'@init.'@oenvn
c2kcon"ig ..a'' oenvn
@11
c2kcon"ig oenvn on
(e crea la carpeta donde se guardar#n los archivos de configuracin de Lpen98,:
9k'ir @etc@oenvn
(e crea el archivo de configuracin para el servidor:
c' @etc@oenvn
nano server.con"
(e copian las siguientes lineas:
port ((9;
proto udp
dev tun
ca /usr/local/sbin/+e0s/ca#crt
cert /usr/local/sbin/+e0s/server#crt
+e0 /usr/local/sbin/+e0s/server#+e0
d* /usr/local/sbin/+e0s/d*"0;'#pem
server (0#(0#0#0 "55#"55#"55#0
ifconfig&pool&persist ipp#txt
+eepalive (0 ("0
comp&l,o
max&clients %0
persist&+e0
persist&tun
log openvpn#log
log&append openvpn#log
verb %
management local*ost C505
(e guardan los cambios2 La diferencia con el archivo del (ervidor % es que se utiliSa otro rango de I8
local2 (e inicia Lpen98,
@etc@init.'@oenvn start
*n la configuracin de red del servidor aparecer# un nuevo dispositivo:
i"con"ig
@1:
%hora que los dos servidores est#n configurados0 hay que crear una conexin cliente en cada uno2 8ara
eso hay que copiar las siguientes claves de un servidor a otro:
(ervidor % c (ervidor B:
ca2crt
clienteb2crt
clienteb2&ey

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


(ervidor B c (ervidor %:
ca2crt
clientea2crt
clientea2&ey
La claves se copian en la carpeta /etc/openvpn del servidor %2
%hora en el servidor % se crea el archivo de configuracin cliente para conectarse al servidor B:
c' @etc@oenvn
nano c%ient.con"
se copian las siguientes lineas:
client
dev tun
proto udp
remote $$#""'#;9#"($ ((9;
resolv&retr0 infinite
nobind
persist&+e0
persist&tun
ca /etc/openvpn/ca#crt
cert /etc/openvpn/clientea#crt
+e0 /etc/openvpn/clientea#+e0
comp&l,o
@13
verb %
ns&cert&t0pe server
route&met*od exe
route&dela0 "
*n la linea @ se pone la direccin I8 del servidor B y el puerto O11E@P2 (e guardan los cambios y se
reinicia Lpen98,:
service oenvn restart
(i todo ha salido bien0 tendremos un nuevo dispositivo de red:
8ara que las llamadas puedan ser enrutadas correctamente por %steris&0 hay que aadir estas dos nuevas
redes en la configuracin del sip2conf:
nano @etc@asterisk@si.con"
/espu5s del primer par#metro localnet se aade:
localnet=(0#'#0#0/"55#"55#"55#0
localnet=(0#(0#0#0/"55#"55#"55#0
(e recarga la configuracin (I8:
asterisk .r3 ^si re%oa'^
(e sigue el mismo procedimiento para el servidor B:
c' @etc@oenvn
nano c%ient.con"
se copian las siguientes lineas:
client
dev tun
@1@
proto udp
remote 9$#("$#("5#((" ((9;
resolv&retr0 infinite
nobind
persist&+e0
persist&tun
ca /etc/openvpn/ca#crt
cert /etc/openvpn/clienteb#crt
+e0 /etc/openvpn/clienteb#+e0
comp&l,o
verb %
ns&cert&t0pe server
route&met*od exe
route&dela0 "
(e guardan los cambios y se reinicia Lpen98,:
service oenvn restart
(i todo ha salido bien0 tendremos un nuevo dispositivo de red:
8ara que las llamadas puedan ser enrutadas correctamente por %steris&0 hay que aadir estas dos nuevas
redes en la configuracin del sip2conf:
nano @etc@asterisk@si.con"
/espu5s del primer par#metro localnet se aade:
localnet=(0#'#0#0/"55#"55#"55#0
localnet=(0#(0#0#0/"55#"55#"55#0
(e recarga la configuracin (I8:
asterisk .r3 ^si re%oa'^
@1?
-na veS terminada la configuracin y la conexin Lpen98, entre los dos servidores0 se crea una
nueva troncal (I8 entre los dos2 *sta veS utiliSando la autentificacin por I82 8ara crear la troncal
podemos utiliSar o el rango de I8 1>2A2>21 o el rango de I8 1>21>2>21
Servi'or A
nano @etc@asterisk@si.con"
al final del archivo se pone:
KserverbvpnL
t0pe=peer
context=vpn
*ost=(0#'#0#$
disallo1=all
allo1=gC"9
allo1=ala1
language=es
Hualif0=0es
dtmfmode = rfc"'%%
Importante destacar la direccin I8 98, del servidor B en el par#metro host y el contexto OvpnP2 (e
guarda los cambios y se pasa al servidor B2
Servi'or <
nano @etc@asterisk@si.con"
al final del archivo se pone:
KserveravpnL
t0pe=peer
context=vpn
*ost=(0#'#0#(
disallo1=all
allo1=gC"9
allo1=ala1
language=es
Hualif0=0es
dtmfmode = rfc"'%%
(e recarga la configuracin (I8 en ambos servidores:
asterisk .r3 ^si re%oa'^
(e entra en la consola de ambos servidores y se averigua que la conexin este funcionando:
@1B
asterisk .rvvvvvvvvvv
Servi'or A)
!LI" si s2ow eers %ike server(vn
Ca$e/userna$e @ost ?yn Cat 3C> Fort 2tatus 1ealti$e
server'v#n 1).8.).6 C 5)6) <= (2 $s!
1 si# #eers 09onitored" 1 onlineD ) offline En$onitored" ) onlineD ) offline4
Servi'or <)
!LI" si s2ow eers %ike serveravn
Ca$e/userna$e @ost ?yn Cat 3C> Fort 2tatus 1ealti$e
serverav#n 1).8.).1 C 5)6) <= (2 $s!
1 si# #eers 09onitored" 1 onlineD ) offline En$onitored" ) onlineD ) offline4
8erfecto[[
8ara probar las llamadas entre los servidores0 utiliSando la red Lpen98,0 se modifica el dialplan
acord#ndose que el contexto que se ha definido en la troncal es vpn2 !omo para la prueba con la
conexin entre servidores %steris& con el protocolo (I80 hay que MengaarN %steris& para que acepte la
llamada ya que las extensiones configuradas en los dos servidores son las mismas2 *n el caso de
servidores con nFmeros de extensiones distintas0 no hace falta aadir la linea donde se modifica el
!%LL*;I/
Servi'or A
nano @etc@asterisk@e3tensions.con"
antes del contexto internas0 se crea el nuevo contexto vpn y se aaden las siguientes lineas:
KvpnL
exten =N C0B(B/ns1er
same =N nB-la0bac+!demo&congrats)
same =N nBOangup
y en el contexto internas se pone:
exten =N C0B(Bet!C/LL>.@=!num)=openvpna)
same =N nB=ial!@-/serverbvpn/EV>Q7>NW)
same =N nB*angup
Servi'or <
nano @etc@asterisk@e3tensions.con"
@1<
antes del contexto internas0 se crea el nuevo contexto vpn y se aaden las siguientes lineas:
KvpnL
exten =N C0B(B/ns1er
same =N nB-la0bac+!demo&congrats)
same =N nBOangup
y en el contexto internas se pone:
exten =N C0B(Bet!C/LL>.@=!num)=openvpnb)
same =N nB=ial!@-/serveravpn/EV>Q7>NW)
same =N nB*angup
(e guardan los cambios en ambos servidores y se recarga el dialplan
asterisk .r3 ^'ia%%an re%oa'^
8ara terminar0 se realiSa una prueba marcando desde la extensin 1>>> del servidor % la extensin <>2
*n la consola de %steris& de servidor % debera aparecer:
EBecutin% 0,)-eBternas"14 Co<#(W2AF/1)))-))))))*5WD WW! in new stack
EBecutin% 0,)-eBternas"24 2et(W2AF/1)))-))))))*5WD WC3>>E1A?(nu$!7o#env#naW! in new stack
-- EBecutin% 0,)-eBternas"34 Co<#(W2AF/1)))-))))))*5WD Wo#env#naW! in new stack
-- EBecutin% 0,)-eBternas"*4 ?ial(W2AF/1)))-))))))*5WD W2AF/server'v#n/,)W! in new stack
77 Esin% 2AF 1(F Co2 $ark 5
77 Esin% 2AF P1(F Co2 $ark 6
77 Esin% E?F(> Co2 $ark 5
-- Called server'v#n/,)
-- 2AF/server'v#n-))))))*6 answered 2AF/1)))-))))))*5
La comodidad de tener las dos redes 98, es que se pueden configurar otros clientes Lpen98, en los
computadores donde tenemos instalados los (oft8hone o los tel5fonos que soportan este protocolo
Oe$emplo Qealin& desde el modelo D:B para arribaP2
18.L Conectar 'os Servi'ores Asterisk con T=S 1 S6T0
*n esta parrafo se ver# como configurar una conexin (I8 entre dos servidores %steris& y utiliSar el
protocolo DL( para la sealiSacin (I8 y el cifrado media con el protocolo (;D82
8rimero hay que crear los certificados para el servidor % y el servidor B2 *sto se hace con una utilidad
presente en las fuentes de %steris&2 /esde el servidor %:
9k'ir @etc@asterisk@ke1s
8rimero se crea el certificado !% y el certificado para el servidor%:
@1A
c' @$sr@src@asterisk.1.8.20.1@contri(@scrits
.@ast;t%s;cert .' certs .C %i21L.240.9e9(ers.%ino'e.co9 .o serverA
,o config file specified0 creating bcerts/tmp2cfgb
Qou can use this config file to create additional certs 4ithout
reIentering the information for the fields in the certificate
!reating certs/ca2&ey
+enerating ;(% private &ey0 @>EB bit long modulus
2222222222hh
2222222222222222222222222222222222222hh
e is B??3< O>x1>>>1P
*nter pass phrase for certs/ca2&ey:
9erifying I *nter pass phrase for certs/ca2&ey:
!reating certs/ca2crt
*nter pass phrase for certs/ca2&ey:
!reating certs/server%2&ey
+enerating ;(% private &ey0 1>:@ bit long modulus
222222222222222hhhhhh
2222hhhhhh
e is B??3< O>x1>>>1P
!reating signing request
!reating certs/server%2crt
(ignature o&
sub$ect=/!,=li3<@I11:2members2linode2com/L=%steris&
+etting !% 8rivate Tey
*nter pass phrase for certs/ca2&ey:
!ombining &ey and crt into certs/server%2pem
*n la opcin I! se pone el nombre de dominio del servidor y cuando el script lo pide se ingresa una
contrasea Opor e$emplo serveraP
Luego se crea el certificado para el servidorB
.@ast;t%s;cert .' certs .C %i2R1.216.9e9(ers.%ino'e.co9 .o server<
Co confi% file s#ecifiedD creatin% .certs/t$#.cf%.
&ou can use this confi% file to create additional certs without
re-enterin% the infor$ation for the fields in the certificate
Creatin% certs/ca.key
Qeneratin% 123 #rivate keyD *)+6 'it lon% $odulus
........................//
.....................................................................................................................................................................
........................................................//
e is 6553, ()B1)))1!
Enter #ass #hrase for certs/ca.key"
Perifyin% - Enter #ass #hrase for certs/ca.key"
@1E
Creatin% certs/ca.crt
Enter #ass #hrase for certs/ca.key"
Creatin% certs/serverL.key
Qeneratin% 123 #rivate keyD 1)2* 'it lon% $odulus
....................//////
..................................//////
e is 6553, ()B1)))1!
Creatin% si%nin% reMuest
Creatin% certs/serverL.crt
2i%nature ok
su'Gect7/CC7li2+1-216.$e$'ers.linode.co$/<73sterisk
Qettin% C3 Frivate =ey
Enter #ass #hrase for certs/ca.key"
Co$'inin% key and crt into certs/serverL.#e$
!uando el script pide la contrasea0 se pone la misma que se ha utiliSado para crear las claves del
servidor% OserveraP
%hora se copian los siguientes archivos en la carpeta /etc/asteris&/&eys del servidor%:
c' certs
c ca.crt @etc@asterisk@ke1s@
c serverA.e9 @etc@asterisk@ke1s@
8ara terminar se modifica la configuracin del archivo sip2conf para activar el protocolo DL( y se crea
la troncal para el servidorB con autentificacin sobre I8:
nano @etc@asterisk@si.con"
al final de la parte general se pone:
tlsenable=0es
tlsbindaddr=9$#("$#("5#(("
tlscertfile=/etc/asteris+/+e0s/server/#pem
tlscafile=/etc/asteris+/+e0s/ca#crt
tlscapat*=/etc/asteris+/+e0s
tlsdontverif0server=0es
en tlsbindaddr se pone la direccin I8 del servidor%
al final del archivo se configura la troncal para el servidorB
\server(t%s]
t1eQeer
conte3tQ"ro9.t%s
2ostQ66.228.4R.216
@:>
'isa%%owQa%%
a%%owQa%aw
%ang$ageQes
B$a%i"1Q1es
transortQt%s
encr1tionQ1es
Los par#metros importantes:
context: nombre del contexto donde entrar#n las llamadas del servidoB
host: la direccin I8 del servidorB
transport: de define como trasporte de la sealiSacin (I8 el protocolo DL(
encryption: se activa el cifrado del flu$o media Oprotocolo (;D8P
*l protocolo DL( en %steris&0 utiliSa el puerto predefinido ?>B1 D!82 6ay que abrirlo en el fire4all
para la I8 del servidorB
nano @etc@s1scon"ig@ita(%es
despu5s de esta linea:
&/ @N-67 &p tcp &m state &&state N>: &m tcp &&dport 50$0 &< /CC>-7
se pone:
&/ @N-67 &p tcp &m state &&state N>: &m tcp &s $$#""'#;9#"($ &&dport 50$( &< /CC>-7
(e guardan los cambios y se reinicia iptables:
service ita(%es restart
*n el dialplan se crea el nuevo contexto antes del contexto internas:
nano @etc@asterisk@e3tensions.con"
Kfrom&tlsL
exten =N C(B(B/ns1er
same =N nBNoop!7L = EVCO/NN>L!secure5signaling)WB .7- = EVCO/NN>L!secure5media)W)
same =N nB-la0bac+!tt&mon+e0s)
same =N nBOangup
!on la segunda linea se lee la variable !6%,,*L para el cifrado de la sealiSacin y del flu$o media2
(i el valor es 1 significa que se est#n utiliSando0 si el valor es >0 significa que no est#n activos en el
canal en uso2
@:1
*n el contexto internas se aade2
exten =N C(B(Bet!C/LL>.@=!num)=serveratls)
same =N nB=ial!@-/serverbtls/EV>Q7>NW)
same =N nB*angup
Servi'or <
(e crea la carpeta para los certificados:
9k'ir @etc@asterisk@ke1s
(e vuelve al servidor % y se copian las dos claves:
sc ca.crt root*66.228.4R.216)@etc@asterisk@ke1s
sc server<.e9 root*66.228.4R.216)@etc@asterisk@ke1s
*sto suponiendo que la I8 publica del servidorB sea BB2::A2@E2:1B
(e abre el archivos sip2conf:
nano @etc@asterisk@si.con"
y al final de la parte general se pone:
tlsenable=0es
tlsbindaddr=$$#""'#;9#"($
tlscertfile=/etc/asteris+/+e0s/serverF#pem
tlscafile=/etc/asteris+/+e0s/ca#crt
tlscapat*=/etc/asteris+/+e0s
tlsdontverif0server=0es
en tlsbindaddr se pone la direccin I8 del servidorB2 %l final del archivo se configura la troncal para el
servidor%:
\serverat%s]
t1eQeer
conte3tQ"ro9.t%s
2ostQR6.126.12L.112
'isa%%owQa%%
a%%owQa%aw
%ang$ageQes
B$a%i"1Q1es
transortQt%s
encr1tionQ1es
@::
(e abre el puerto ?>B1 D!8 en el fire4all para la I8 del servidor%
nano @etc@s1scon"ig@ita(%es
despu5s de esta linea:
&/ @N-67 &p tcp &m state &&state N>: &m tcp &&dport 50$0 &< /CC>-7
se pone:
&/ @N-67 &p tcp &m state &&state N>: &m tcp &s 9$#("$#("5#((" &&dport 50$( &< /CC>-7
(e guardan los cambios y se reinicia iptables:
service ita(%es restart
(e pasa al dialplan:
nano @etc@asterisk@e3tensions.con"
%ntes del contexto internas se pone:
Kfrom&tlsL
exten =N C(B(B/ns1er
same =N nBNoop!7L = EVCO/NN>L!secure5signaling)WB .7- = EVCO/NN>L!secure5media)W)
same =N nB-la0bac+!tt&mon+e0s)
same =N nBOangup
*n el contexto internas se pone:
exten =N C(B(Bet!C/LL>.@=!num)=serverbtls)
same =N nB=ial!@-/serveratls/EV>Q7>NW)
same =N nB*angup
(e guardan los cambios y se recarga la configuracin de ambos servidores:
service asterisk re%oa'
(e averigua en el servidor% que el servidorB est5 conectado:
asterisk .rvvvvvvvvvvvvvvv
!LI" si s2ow eers
server'tls 66.228.*+.216 C 5)61 <= (1 $s!
(e hace la misma operacin en el servidorB:
@:3
!LI" si s2ow eers
serveratls +6.126.125.112 C 5)61 <= (2 $s!
%hora desde la extensin 1>>> del servidor% se marca el numero <1 y se mira que pasa en la consola
de ambos servidores:
Servi'or A)
*xecuting Y<1_externas:1Z (etOa(I8/1>>>I>>>>>>::a0 a!%LL*;I/OnumP=serveratlsaP in ne4 stac&
II *xecuting Y<1_externas::Z /ialOa(I8/1>>>I>>>>>>::a0 a(I8/server(t%s/<1aP in ne4 stac&
Servi'or <)
*xecuting Y<1_fromItls:1Z %ns4erOa(I8/serveratlsI>>>>>>1?a0 aaP in ne4 stac&
II *xecuting Y<1_fromItls::Z ,oLpOa(I8/serveratlsI>>>>>>1?a0 aT=S Q 1E S6T0 Q 1aP in ne4 stac&
II *xecuting Y<1_fromItls:3Z 8laybac&Oa(I8/serveratlsI>>>>>>1?a0 attImon&eysaP in ne4 stac&
II d(I8/serveratlsI>>>>>>1?" 8laying bttImon&eys2ula4b Olanguage besbP
II *xecuting Y<1_fromItls:@Z 6angupOa(I8/serveratlsI>>>>>>1?a0 aaP in ne4 stac&
!omo se puede ver en la consola del servidorB la llamada que llega tiene activado el protocolo DL( O1P
y el protocolo (;D8O1P2 *sto quiere decir que la sealiSacin y el flo$o media ser#n cifrados2
Ltra forma de averiguarlo es activar con ,grep la captura en el puerto ?>B1 en uno de los dos
servidores:
ngre .D (1%ine ort L061
%parecer#n puros bloques cifrados2
@:@
Cait$%o X+X
AM+ 1 A4+
1R.1 AM+ 8Asterisk Manager +nter"ace:
%'I O%steris& 'anager InterfaceP es una interfaS de monitoreo y gestin que interactFa con la 8BH
recibiendo eventos y/o enviando acciones que el sistema e$ecutar#2 8ara conectarse a la %'I0 como
cliente0 se puede utiliSar un soc&et D!8 Opuerto predefinido ?>3AP o el protocolo 6DD8 Opuerto
predefinido A>AAP2 *l %'I se configura en el archivo de configuracin manager2conf y en el caso que
se quiera utiliSar tambi5n el protocolo 6DD80 el archivo http2conf2
*n la tabla a seguir se indicar#n los par#metros que se van a configurar con una breve descripcin2 *n
negrita los valores de cada par#metro2 %l final de la tabla0 la configuracin completa del archivo2
0ar!9etro ,escrici&n
YgeneralZ *tiqueta que indica el inicio de la configuracin general del
archivo
enabled 1es / (e activa el acceso a la %'I
4ebenabled 1es = se activa el acceso a la %'I va 6DD8
port L038 G el puerto predefinido para la conexin a la %'I de
%steris& va D!8
bindaddr /ireccin I8 donde la %'I aceptar# conexiones2 9alor >2>2>2>
todas las direcciones I8 presentes en el servidor
Utlsenable=no
Utlsbindport=?>3E
Utlsbindaddr=>2>2>2>
Utlscertfile=/tmp/asteris&2pem
Utlsprivate&ey=/tmp/private2pem
*s posible configurar la %'I para que utilice el protocolo DL(2
*ste tipo de configuracin es aconse$ado en el caso que se
permita el acceso a la interfaS desde remoto2 Los par#metros
presentes son parecidos a la configuracin del protocolo DL(
en el archivo sip2conf2 (e de$an comentados2
allo4multiplelogin *ste par#metro define si por un usuario configurado en este
archivo se aceptan una o m#s conexiones simultaneas2 9alor
1es se aceptan
displayconnects 1es G *n la consola de %steris& cada veS que un usuario
configurado en el manager2conf se conecte o se desconecte
aparecer# una linea que lo notificar#2
timestampevents 1es G aade una fecha en formato *8L!6 para cada evento
Uchannelvars = var10var:0var3 permite configurar unas variables que aparecer#n cada veS que
se genere un evento relacionado con un canal2 /e de$a
comentado
debug no G no se activa el debug de la %'I de forma predefinida2 *s
posible activarlo y desactivarlo en cualquier momento desde la
0ar!9etro ,escrici&n
consola de %steris&
authtimeout es el tiempo0 expresado en segundos0 que tiene un cliente para
autenticarse2 9alor 60
authlimit define el numero m#ximo de sesiones simultaneas no
autenticadas que aceptar# la %'I2 9alor: 20
httptimeout define tres condiciones:
1. el tiempo m#ximo de vida del coo&ie http generado por
la %'I
:2 el tiempo que esperar# el servidor 4eb de la %'I al
recibir una accin de tipo M4aiteventN antes de cerrar la
solicitud
32 tiempo que la %'I esperar# antes de cerrar la sesin
con un cliente despu5s de haber enviado una respuesta
a la solicitud recibida
9alor: 60
YadminZ a partir de esta etiqueta se define el primer usuario que tendr#
acceso a la %'I de %steris&2 *l valor entre corchetes es el
nombre del usuario2
secret La contrasea que el usuario utiliSar# para conectarse a la %'I
de %steris&2 -tiliSar siempre contraseas fuertes2 8ara esta
configuracin de prueba el valor es sesa9o
deny con este par#metro se define un rango de I8 que no podr#n
acceder a la %'I de %steris& con las credenciales del usuario
configurado2 9alor 0.0.0.0@0.0.0.0 OtodasP
permit con este par#metro se define un rango de I8 que tendr#n acceso
a la %'I de %steris& con las credenciales del usuario
configurado2 9alor 12J.0.0.1@2LL.2LL.2LL.2LL *n este caso
solamente desde local2
Ueventfilter=*vent: ,e4channel
Ueventfilter=[!hannel: /%6/I^
*l par#metro eventfilter permite filtrar los eventos que recibir#
el usuario una veS que est5 conectado a la %'I de %steris&2
8ara los eventos se pueden crear dos tipos de configuraciones:
12 si el nombre del evento no empieSa con un punto
exclamativo0 el tipo de evento se enviar#
:2 si el nombre del evento empieSa con un punto
exclamativo0 se filtrar# y no ser# enviado al cliente
conectado a la %'I de %steris&
(e de$an comentadas2
4ritetimeout 9alor en mili segundos que esperar# %steris& para enviar los
datos al cliente conectado a la %'I2 (e utiliSa en el caso que el
cliente pierda la conexin con la %'I2 9alor: 100
@:<
-na veS configurado el usuario0 falta definir los permisos que el mismo usuario tendr# al conectarse
con la %'I de %steris&2 *stos permisos son de dos tipos:
lectura
escritura
*n la tabla que sigue la lista completa y el significado de cada uno de ellos:
0ar!9etro 6ea' Drite
all *l usuario puede leer todos los eventos de
la %'I
*l usuario tiene acceso a todas las acciones
de la %'I
system *l usuario recibe todos los eventos
relacionados con el funcionamiento de la
8BH
*l usuario puede enviar acciones de
sistema Oreiniciar la 8BH0 recargar la
configuracin0 etcP
call 8ermite al usuario recibir informaciones
relacionadas con los canales de la 8BH
8ermite al usuario modificar0 crear canales
en la 8BH
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 OH'88P
8ermite generar eventos relacionados con
las extensiones configuradas
config (olo escritura 8ermite al usuario leer0 actualiSar y
recargar los archivos de configuracin de
%steris&
command (olo escritura 8ermite al usuario e$ecutar comandos de la
consola de %steris&
/D'. permite al usuario recibir los eventos
relacionados con los tonos
(olo lectura
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
segFn la configuracin del archivo
cdrCmanager2conf
(olo lectura
dialplan permite al usuario recibir eventos cuando
se modifica una variable o se crea una
nueva extensin en el dialplan
(olo lectura
originate (olo escritura 8ermite al usuario crear una nueva llamada
utiliSando la accin Lriginate de la %'I
@:A
agi permite al usuario recibir eventos
generados por la e$ecucin de un %+I
8ermite al usuario generar acciones para la
gestin de los canales creados por un %+I
en modo asncrono
cc permite al usuario recibir eventos
relacionados con el sistema !!((
OrellamadaP
(olo lectura
aoc permite al usuario recibir eventos
relacionados con %L! Oadvice of chargeP
es decir el costo de la llamada corriente
'#s Informaciones en la 4i&i de %steris&
permite al usuario generar un mensa$e
%L! para una determinada llamada2
%hora se puede crear el archivo manager2conf2 (e renombra el predefinido:
9v @etc@asterisk@9anager.con" @etc@asterisk@9anager.con".o%'
se crea uno nuevo:
nano @etc@asterisk@9anager.con"
y se copian las siguientes lineas:
KgeneralL
enabled=0es
1ebenabled=0es
port=50%'
bindaddr=0#0#0#0
Jtlsenable=no
Jtlsbindport=50%9
Jtlsbindaddr=0#0#0#0
Jtlscertfile=/tmp/asteris+#pem
Jtlsprivate+e0=/tmp/private#pem
allo1multiplelogin=0es
displa0connects=0es
timestampevents=0es
Jc*annelvars = var(Bvar"Bvar%
debug=no
aut*timeout=$0
aut*limit="0
*ttptimeout=$0
KadminL
secret=sesamo
den0=0#0#0#0/0#0#0#0
permit=("C#0#0#(/"55#"55#"55#"55
Jeventfilter=>ventG Ne1c*annel
@:E
Jeventfilter=MC*annelG =/O=@Z
1ritetimeout=(00
read=s0stemBcallBagentBuserBdtmfBreportingBcdrBdialplanBagiBccBaoc
1rite=s0stemBcallBagentBuserBconfigBcommandBreportingBotiginateBagiBaoc
*n las dos lineas read y 4rite0 se ponen todos los valores posibles2 (e guardan los cambios y se entra en
la consola de %steris&:
asterisk .rvvvvvvvvvvvvvvvvv
Los comandos relacionados con la %'I de %steris&:
!LI" 2e% 9anager
$ana%er reload 1eload $ana%er confi%urations
$ana%er set de'u% 0on5off4 2howD ena'leD disa'le de'u%%in% of the $ana%er code
$ana%er show co$$and 2how a $ana%er interface co$$and
$ana%er show co$$ands >ist $ana%er interface co$$ands
$ana%er show connected >ist connected $ana%er interface users
$ana%er show eventM >ist $ana%er interface Mueued events
$ana%er show settin%s 2how $ana%er %lo'al settin%s
$ana%er show users >ist confi%ured $ana%er users
$ana%er show user ?is#lay infor$ation on a s#ecific $ana%er user
8rimero se recarga la configuracin:
!LI" 9anager re%oa'
luego se controla que el usuario configurado apareSca::
!LI" 9anager s2ow $sers
userna$e
--------
ad$in
-------------------
1 $ana%er users confi%ured.
*l usuario admin est# presente2 !on el comando:
!LI" 9anager s2ow co99an's
aparecer# una lista de todos los comandos que se pueden utiliSar desde la %'I de %steris&2 8or cada
comando0 en la columna 8rivilege0 aparecen los privilegios que se necesitan para e$ecutarlo2 *ntre ellos
est# el comando Login que permite conectarse a la %'I de %steris& y es el que se utiliSar# para hacer la
primera prueba2 8ara conocer la sintaxis:
!LI" 9anager s2ow co99an' =ogin
@3>
02yntaB4
3ction" >o%in
03ctionA?"4 SvalueR
Eserna$e" SvalueR
02ecret"4 SvalueR
02yno#sis4
>o%in 9ana%er.
0?escri#tion4
>o%in 9ana%er.
03r%u$ents4
3ctionA?
3ctionA? for this transaction. Jill 'e returned.
Eserna$e
Eserna$e to lo%in with as s#ecified in $ana%er.conf.
2ecret
2ecret to lo%in with as s#ecified in $ana%er.conf.
02ee 3lso4
Cot availa'le
8ara conectarse a la %'I de %steris& se utiliSar# el programa Delnet2 (e abre otra consola de Linux y se
instala telnet:
1$9 insta%% te%net
(e inicia el programa:
te%net
y se crea la conexin a la %'I de %steris&:
telnet" o %oca%2ost L038
(ryin% 12,.).).1...
Connected to localhost.
Esca#e character is .`4..
3sterisk Call 9ana%er/1.1
Action) =ogin
>serna9e) a'9in
Secret) sesa9o
-vents) O""
/espu5s de cada linea0 para pasar a la siguiente se presiona la tecla envo2 /espu5s de la ultima linea la
@31
tecla envo se presiona dos veces2 *l resultado ser#:
1es#onse" 2uccess
9essa%e" 3uthentication acce#ted
8ara salir de la %'I:
Action) =ogo""
1es#onse" Qood'ye
9essa%e" (hanks for all the fish.
Connection closed 'y forei%n host.
*n la consola de %steris& aparecer#:
77 9ana%er .ad$in. lo%%ed on fro$ 12,.).).1
77 9ana%er .ad$in. lo%%ed off fro$ 12,.).).1
Ltra prueba que se se puede hacer es ver la configuracin de la extensin 1>>>
te%net
telnet" o %oca%2ost L038
(ryin% 12,.).).1...
Connected to localhost.
Esca#e character is .`4..
3sterisk Call 9ana%er/1.1
Action) =ogin
>serna9e) a'9in
Secret) sesa9o
-vents) On
1es#onse" 2uccess
9essa%e" 3uthentication acce#ted
Event" NullyLooted
Frivile%e" syste$Dall
2tatus" Nully Looted
*n este caso0 con *vents:Ln0 se activa la recepcin de todos los eventos generados por la %'I2 Luego
se e$ecuta la accin para ver la configuracin de la extensin 1>>>
Action) S+0s2oweer
0eer) 1000
@3:
1es#onse" 2uccess
Channelty#e" 2AF
<'GectCa$e" 1)))
Chan<'Gect(y#e" #eer
2ecretEBist" &
1e$ote2ecretEBist" C
9?52ecretEBist" C
ConteBt" eBternas
>an%ua%e" es
3ccountcode" 1)))
393fla%s" Enknown
CA?-Callin%Fres" Fresentation 3llowedD Cot 2creened
Call%rou#" 1
Ficku#%rou#" 1
9<@2u%%est" default
Poice9ail'oB" 1)))-default
(ransfer9ode" o#en
>ast9s%s2ent" -1
9aBforwards" )
Call-li$it" 2
Lusy-level" )
9aBCallL1" 38* k'#s
?yna$ic" &
Callerid" Wcallerid7NulanoW S1)))R
1e%EB#ire" -1 seconds
2AF-3uthAnsecure" no
2AF-Norcer#ort" &
3C>" C
2AF-Can1einvite" C
2AF-?irect9edia" C
2AF-Fro$isc1edir" C
2AF-EserFhone" C
2AF-Pideo2u##ort" &
2AF-(eBt2u##ort" C
2AF-(.382u##ort" &
2AF-(.38EC" NEC
2AF-(.389aB?t%r$" *))
2AF-2ess-(i$ers" 3cce#t
2AF-2ess-1efresh" uas
2AF-2ess-EB#ires" 18))
2AF-2ess-9in" +)
2AF-1(F-En%ine" asterisk
2AF-Encry#tion" C
2AF-?(9N$ode" rfc2833
(o@ost"
3ddress-AF" (null!
3ddress-Fort" )
@33
?efault-addr-AF" (null!
?efault-addr-#ort" )
?efault-Eserna$e" 1)))
Codecs" )B8)1)c (ulaw5alaw5%,2+5h263!
Codec<rder" alawDulawD%,2+
2tatus" EC=C<JC
2AF-Esera%ent" O->ite * release *.1 sta$# 6321*
1e%-Contact" si#"1)))-1+).6,.23*.11"136*2]rinstance7c25'')cf558f3,''
IualifyNreM" 6)))) $s
Farkin%lot"
2AF-Ese-1eason-@eader" &
Action) =ogo""
Connection closed 'y forei%n host.
-na ultima prueba es conectarse a la %'I y mirar cuales eventos se generan a lo largo de una llamada
entre la extensin 1>>> y la extensin 1>>1:
te%net %oca%2ost L038
(ryin% 12,.).).1...
Connected to localhost.
Esca#e character is .`4..
3sterisk Call 9ana%er/1.1
Action) =ogin
>serna9e) a'9in
Secret) sesa9o
-vents) On
1es#onse" 2uccess
9essa%e" 3uthentication acce#ted
Event" NullyLooted
Frivile%e" syste$Dall
2tatus" Nully Looted
-na veS conectado a la %'I desde la extensin 1>>> se llama la extensin 1>>1 y se mira lo que
aparece en la consola de Linux2 (e ver#n toda una serie de informaciones relacionadas con la llamadaU
adem#s aparecer#n los eventos relacionados con el !!((2 Qa se puede salir de la %'I:
Action)=ogo""
1es#onse" Qood'ye
9essa%e" (hanks for all the fish.
@3@
Connection closed 'y forei%n host.
!laramente utiliSar la %'I de esta forma es poco practico2 ,ormalmente se hace escribiendo cdigo en
distintos lengua$es de programacin0 desde script bash hasta script en ;uby2 /e hecho existen muchas
libreras que simplifican est# operacin: *ntre ellas:
868: 868agi
8ython: (tarpy
8erl: %steris&Iperl
Kava: %steris&I$ava
;uby: %dhearsion
!omo se ha dicho al inicio de este p#rrafo0 es posible interactuar con la %'I de %steris& va 6DD82 /e
hecho hay soluciones que utiliSan este tipo de conexin2 *ntre ellas hay que citar la +-I para %steris&
de /igium0 cuya instalacin se explicar# en el capitulo HH9I0 y .L8: O.lash Lperator 8anel :P que es
un sistema que permite monitorear las actividad de las llamadas de %steris& y al mismo tiempo efectuar
algunas acciones entre las cuales: transferir una llamada0 espiar una llamada0 ver la actividad de una
cola2
1R.2 A4+ 8Asterisk 4atewa1 +nter"ace:
*l %steris& +ate4ay Interface O%+IP permite desarrollar aplicaciones externas que pueden interactuar
con %steris&2 *stas aplicaciones pueden estar escritas en distintos lengua$es de programacin y de
hecho existen libreras en 8erl0 8680 8ython0 ;uby que simplifican su escritura2 !omo para la %'I0
tambi5n para el %+I es posible conocer los comandos disponibles desde la consola de %steris&:
asterisk .rvvvvvvvvvvvvvvv
y se escribe:
!LI" 2e% agi
a%i du$# ht$l ?u$#s a list of 3QA co$$ands in @(9> for$at
a%i eBec 3dd 3QA co$$and to a channel in 3sync 3QA
a%i set de'u% 0on5off4 Ena'le/?isa'le 3QA de'u%%in%
a%i show co$$ands 0to#ic4 >ist 3QA co$$ands or s#ecific hel#
8ara una lista de los comandos que se pueden utiliSar en un %+I:
!LI" agi s2ow co99an's
i!mo .uncionaj
La comunicacin entre %steris& y el %+I se apoya a los Mfiles descriptorsN del sistema operativo Linux
que permiten una comunicacin entre el Ternel y la aplicacin que quiere acceder a un determinado
archivo/programa2 *n Linux2 Los tres est#ndar que se utiliSan son:
@3?
(D/I,
(D/L-D
(D/*;;
9isto de forma gr#fica:
*sto permite0 como ya se ha dicho0 escribir el %+I utiliSando pr#cticamente cualquier lengua$e de
programacin2 8ara los e$emplos a seguir0 se utiliSar#n la librera 868%+I y 8682 8ara 868%+I0
primero se instala php:
1$9 insta%% 2.T
luego de descarga la librera:
c' @$sr@src
wget 2tt)@@'own%oa's.so$rce"orge.net@ro5ect@2agi@2agi@2.20@2agi.2.20.tgz
(e descomprime:
tar .3" 2agi.2.20.tgz
se entra en la carpeta creada:
c' 2agi.2.20
y se copian las dos libreras para %+I en la carpeta de agiIbin de %steris&:
c 2agi.2 @var@%i(@asterisk@agi.(in
c 2agi.as9anager.2 @var@%i(@asterisk@agi.(in
@3B
se vuelven los archivos e$ecutables:
c29o' JLL @var@%i(@asterisk@agi.(in@2agi.2
c29o' JLL @var@%i(@asterisk@agi.(in
868%+I se apoya a un archivo de configuracin que hay que crear en la carpeta /etc/asteris&2
nano @etc@asterisk@2agi.con"
se copian las siguientes lineas:
Kp*pagiL
debug=false
error5*andler=true
admin=fulanoSgmail#com
*ostname=li%C;&(("#members#linode#com
tempdir=/var/spool/asteris+/tmp/
KasmanagerL
server=local*ost
port=50%'
username=admin
secret=sesamo
KfastagiL
setuid=true
basedir=/var/lib/asteris+/agi&bin/
KfestivalL
text"1ave=/usr/bin/text"1ave
*l primer bloque del archivo es dedicado al la configuracin de 868%+I para la e$ecucin de script
%+I2 8ersonaliSar los par#metros admin con un correo electrnico real y hostname con el nombre de
dominio o la I8 del servidor Linux2
*n en segundo bloque YasmanagerZ0 se configura los datos de acceso a la %'I de %steris& para el
usuario admin anteriormente creado2
*l tercer bloque es para la configuracin de .ast%+I Ocuando se e$ecutan los script %+I sobre una
conexin D!8P
8or ultimo0 para utiliSar .estival como sistema de texto a voS0 se indica la ubicacin del archivo
text:4ave2
(e guardan los cambios y se crea el primer %+I:
@3<
nano @var@%i(@asterisk@agi.(in@r$e(a$'io.2
#M/usr/bin/p*p &H
UYp*p
reHuire!Dp*pagi#p*pD)J
error5reporting!>5/LL)J
Eagi = ne1 /3@!)J
Eagi&N ans1er!)J
Eagi&N stream5file!Ddemo&congratsD)J
Eagi&N *angup!)J
YN
(e vuelve e$ecutable el archivo:
c29o' N3 @var@%i(@asterisk@agi.(in@r$e(a$'io.2
(e modifica el dialplan para aadir el %+I:
nano @etc@asterisk@e3tensions.con"
en el contexto internas se aade:
exten =N "50B(B/gi!pruebaudio#p*p)
same =N nBOangup
(e guardan los cambios0 se entra en la consola de %steris& y se recarga el dialplan:
asterisk .rvvvvvvvvvvvv
!LI" 'ia%%an re%oa'
la sintaxis de la aplicacin %+I:
!LI" core s2ow a%ication agi
02yntaB4
3QA(co$$and0Dar%10Dar%20D...444!
/esde la extensin 1>>> se marca el numero :?>2 *n la consola aparecer#:
-- EBecutin% 025)-eBternas"14 3QA(W2AF/1)))-))))))5)WD Wpruebaudio#p*pW! in new stack
-- >aunched 3QA 2cri#t /var/li'/asterisk/a%i-'in/#rue'audio.#h#
-- Flayin% .de$o-con%rats. (esca#edi%its7! (sa$#leoffset )!
-- S2AF/1)))-))))))5)R3QA 2cri#t #rue'audio.#h# co$#letedD returnin% *
77 2#awn eBtension (eBternasD 25)D 1! eBited non-Tero on .2AF/1)))-))))))5).
(i se activa el debug agi:
@3A
!LI" agi set 'e($g on
*l resultado ser#:
II *xecuting Y:?>_externas:1Z %+IOa(I8/1>>>I>>>>>>?1a0 apruebaudio2phpaP in ne4 stac&
II Launched %+I (cript /var/lib/asteris&/agiIbin/pruebaudio2php
d(I8/1>>>I>>>>>>?1"%+I Dx "" agiCrequest: pruebaudio2php
d(I8/1>>>I>>>>>>?1"%+I Dx "" agiCchannel: (I8/1>>>I>>>>>>?1
d(I8/1>>>I>>>>>>?1"%+I Dx "" agiClanguage: es
d(I8/1>>>I>>>>>>?1"%+I Dx "" agiCtype: (I8
d(I8/1>>>I>>>>>>?1"%+I Dx "" agiCuniqueid: 1331::<>B<2A1
d(I8/1>>>I>>>>>>?1"%+I Dx "" agiCversion: 12A2A2:
d(I8/1>>>I>>>>>>?1"%+I Dx "" agiCcallerid: 1>>>
d(I8/1>>>I>>>>>>?1"%+I Dx "" agiCcalleridname: callerid=.ulano
d(I8/1>>>I>>>>>>?1"%+I Dx "" agiCcallingpres: >
d(I8/1>>>I>>>>>>?1"%+I Dx "" agiCcallingani:: >
d(I8/1>>>I>>>>>>?1"%+I Dx "" agiCcallington: >
d(I8/1>>>I>>>>>>?1"%+I Dx "" agiCcallingtns: >
d(I8/1>>>I>>>>>>?1"%+I Dx "" agiCdnid: :?>
d(I8/1>>>I>>>>>>?1"%+I Dx "" agiCrdnis: un&no4n
d(I8/1>>>I>>>>>>?1"%+I Dx "" agiCcontext: externas
d(I8/1>>>I>>>>>>?1"%+I Dx "" agiCextension: :?>
d(I8/1>>>I>>>>>>?1"%+I Dx "" agiCpriority: 1
d(I8/1>>>I>>>>>>?1"%+I Dx "" agiCenhanced: >2>
d(I8/1>>>I>>>>>>?1"%+I Dx "" agiCaccountcode: 1>>>
d(I8/1>>>I>>>>>>?1"%+I Dx "" agiCthreadid: I1::EEA><A@
d(I8/1>>>I>>>>>>?1"%+I Dx ""
d(I8/1>>>I>>>>>>?1"%+I ;x dd %,(=*;
d(I8/1>>>I>>>>>>?1"%+I Dx "" :>> result=>
d(I8/1>>>I>>>>>>?1"%+I ;x dd (D;*%' .IL* demoIcongrats aa >
II 8laying bdemoIcongratsb OescapeCdigits=P OsampleCoffset >P
d(I8/1>>>I>>>>>>?1"%+I Dx "" :>> result=> endpos=313<<B
d(I8/1>>>I>>>>>>?1"%+I ;x dd 6%,+-8
d(I8/1>>>I>>>>>>?1"%+I Dx "" :>> result=1
II d(I8/1>>>I>>>>>>?1"%+I (cript pruebaudio2php completed0 returning @
== (pa4n extension Oexternas0 :?>0 1P exited nonISero on b(I8/1>>>I>>>>>>?1b
%steris&0 antes de procesar el agi0 enva todas las variables relacionadas con el canal2 Ltro e$emplo
podra ser devolver al llamante su !allerI/
nano @var@%i(@asterisk@agi.(in@ca%%eri'.2
#M/usr/bin/p*p &H
UYp*p
reHuire!Dp*pagi#p*pD)J
error5reporting!>5/LL)J
Eagi = ne1 /3@!)J
@3E
Eagi&N ans1er!)J
Ecallerid = Eagi&NreHuestKDagi5calleridDLJ
Eagi&Ntext"1av!4Oola extension Ecallerid4)J
Eagi&N *angup!)J
YN
c29o' N3 @var@%i(@asterisk@agi.(in@ca%%eri'.2
nano @etc@asterisk@e3tensions.con"
exten =N "5(B(B/gi!callerid#p*p)
same =N nBOangup
asterisk .rvvvvvvvvvvvv
!LI" 'ia%%an re%oa'
/esde la extensin 1>>> se marca :?12
*l ultimo e$emplo es un despertador que no utiliSa la librera 868%+I sino 868 MpuroN:
c' @$sr@src
wget 2tt)@@www.voztovoice.org@t9@wake$.2.0.tar
(e descomprime:
tar .3" wake$.2.0.tar
(e entra en la carpeta:
c' wake$.2.0
(e vuelve e$ecutable el archivo 4a&eup2php:
c29o' N3 wake$.2
se copia en la carpeta agiIbin de asteris&:
c wake$.2 @var@%i(@asterisk@agi.(in@
Derminada esta primera parte se modifica el /ialplan para crear una nueva extensin que se usar# para
programar el despertador
nano @etc@asterisk@e3tensions.con"
(e aaden las siguientes dos lneas en el contexto internas:
@@>
exten =N CCB(Bet!CO/NN>L!language)=es)
same =N nBagi!1a+eup#p*p)
same=N nBOangup
(e guarda el archivo y se recarga el dialplan:
asterisk .rvvvvvvvvvvv
!LI" 'ia%%an re%oa'
%hora desde un extensin 1>>> se marca el numero << y se siguen las instrucciones para programar el
despertador2 -na veS programado si desde la misma extensin se marca otra veS la extensin << se
tendr# la opcin de poder modificar la hora del despertador2 !uando llega la llamada del despertador0
en el softphone aparecer#:
1R.3 =as variantes A4+
%demas de la aplicacin %+I que se acaba de ilustrar0 existen una variantes que se utiliSan en algunos
escenarios muy especficos2 *stas son:
*%+I
.ast%+I
%sync %+I
6asta la versin 12@2H de %steris& exista tambi5n la aplicacin /ead%+I que normalmente se utiliSaba
en un canal que haba sido terminado2 *sta aplicacin desde la versin 12B2H es MdeprecatedN y va
sustituida con la normal aplicacin %+I
1R.3.1 -A4+
La gran diferencia entre %+I y *%+I es que el segundo0 ademas de comunicarse con %steris& a trav5s
de (D/I, y (D/L-D0 utiliSa un file descriptor para la creacin de un flu$o audio procedente del canal
que ha llamado la aplicacin2
%lgunos datos:
@@1
!LI" core s2ow a%ication -A4+
-7 Anfo a'out a##lication .E3QA. 7-
02yno#sis4
EBecutes an E3QA co$#liant a##lication.
0?escri#tion4
Esin% .E3QA. #rovides enhanced 3QAD with inco$in% audio availa'le out of 'and
on file descri#tor 3.
EBecutes an 3sterisk Qateway Anterface co$#liant #ro%ra$ on a channel. 3QA
allows 3sterisk to launch eBternal #ro%ra$s written in any lan%ua%e to control
a tele#hony channelD #lay audioD read ?(9N di%itsD etc. 'y co$$unicatin% with
the 3QA #rotocol on 6stdin6 and 6stdout6. 3s of .1.6.).D this channel will
not sto# dial#lan eBecution on han%u# inside of this a##lication. ?ial#lan
eBecution will continue nor$allyD even u#on han%u# until the 3QA a##lication
si%nals a desire to sto# (either 'y eBitin% orD in the case of a net scri#tD
'y closin% the connection!. 3 locally eBecuted 3QA scri#t will receive 2AQ@EF
on han%u# fro$ the channel eBce#t when usin% ?ead3QA. 3 fast 3QA server will
corres#ondin%ly receive a @3CQEF inline with the co$$and dialo%. Loth of theses
si%nals $ay 'e disa'led 'y settin% the \U3QA2AQ@EFV channel varia'le to .no.
'efore eBecutin% the 3QA a##lication.
Ese the C>A co$$and .a%i show co$$ands. to list availa'le a%i co$$ands.
(his a##lication sets the followin% channel varia'le u#on co$#letion"
\U3QA2(3(E2V" (he status of the atte$#t to the run the 3QA scri#t teBt strin%D
one of"
2ECCE22
N3A>E1E
C<(N<EC?
@3CQEF
02yntaB4
E3QA(co$$and0Dar%10Dar%20D...444!
03r%u$ents4
Cot availa'le
02ee 3lso4
3QA(!D ?ead3QA(!
1R.3.2 7astA4+
.ast%+I traba$a sobre una conexin D!8 que se realiSa con un servidor .ast%+I2 *l control sobre el
canal se realiSa va D!8 y no requiere iniciar un nuevo proceso para cada llamada2 La sintaxis es:
%+IOagi://I8servidor.ast%+I:puertoP
@@:
*l puerto predefinido es el @?<3
*n las fuentes de %steris& es presente un servidor .ast%+I para efectuar una prueba2 8rimero se
modifica el dialplan:
nano @etc@asterisk@e3tensions.con"
*n el contexto internas se aade el siguiente bloque:
exten =N "5"B(BNoop
same =N nB/3@!agiG//("C#0#0#(G;5C%)
same =N nBOangup
(e guardan los cambios y se recarga el dialplan:
asterisk .rvvvvvvvvvvvvv
!LI" 'ia%%an re%oa'
(e cambian los permisos del servidor .ast%+I:
c29o' JLL @$sr@src@asterisk.1.8.20.1@agi@"astagi.test
y se inicia:
@$sr@src@asterisk.1.8.20.1@agi@"astagi.test
/esde la extensin 1>>> se marca el numero :?:2 %parecer#:
!onsola %steris&:
-- EBecutin% 0253-eBternas"14 Co<#(W2AF/1)))-))))))11WD WW! in new stack
-- EBecutin% 0253-eBternas"24 3QA(W2AF/1)))-))))))11WD WagiG//("C#0#0#(G;5C%W! in new stack
-- S2AF/1)))-))))))11R3QA 2cri#t a%i"//12,.).).1"*5,3 co$#letedD returnin% )
-- EBecutin% 0253-eBternas"34 @an%u#(W2AF/1)))-))))))11WD WW! in new stack
77 2#awn eBtension (eBternasD 253D 3! eBited non-Tero on .2AF/1)))-))))))11.
!onsola del servidor .ast%gi:
3QA Environ$ent ?u$# fro$ 5+836 --
-- accountcode 7 1)))
-- callerid 7 1)))
-- calleridna$e 7 callerid7Nulano
-- callin%ani2 7 )
-- callin%#res 7 )
@@3
-- callin%tns 7 )
-- callin%ton 7 )
-- channel 7 2AF/1)))-))))))11
-- conteBt 7 eBternas
-- dnid 7 253
-- enhanced 7 ).)
-- eBtension 7 253
-- lan%ua%e 7 es
-- network 7 yes
-- #riority 7 2
-- rdnis 7 unknown
-- reMuest 7 a%i"//12,.).).1"*5,3
-- threadid 7 -122*8525+2
-- ty#e 7 2AF
-- uniMueid 7 13312*2231.21
-- version 7 1.8.8.2
1. (estin% .sendfile....F322 ()!
2. (estin% .sendteBt....F322 ()!
3. (estin% .sendi$a%e....F322 ()!
*. (estin% .saynu$'er....F322 ()!
5. (estin% .waitdt$f....F322 ()!
6. (estin% .record....F322 ()!
6a. (estin% .record. #lay'ack...F322 ()!
777777777777777777 Co$#lete 7777777777777777777777
, tests co$#letedD , #assedD ) failed
77777777777777777777777777777777777777777777777777
-n Mframe4or&N que utiliSa .ast%+I es %dhearsion2
1R.3.3 As1nc A4+
%sync %+I permite el envo de los comandos a trav5s de la %'I de %steris&2 /e esta forma es posible
abrir un canal y luego desde la %'I enviar los comandos al canal abierto2
/esde el punto de vista del dialplan la sintaxis es muy sencilla:
%+IOagi:asyncP
8ara poder enviar las acciones %+I a la %'I de %steris&0 el usuario configurado en el manager2conf
deber tener los permisos de lectura y escritura para el par#metro agi0 cosa que se hiSo cuando se
configur el usuario admin en el manager2conf2
8ara probar la funcionalidad de modifica el dialplan:
nano @etc@asterisk@e3tensions.con"
@@@
y se aade el bloque que sigue:
exten =N "5%B(BNoop
same =N nB/3@!agiGas0nc)
same =N nBOangup
(e guardan los cambios y se recarga el dialplan:
asterisk .rvvvvvvvvvvvv
!LI" 'ia%%an re%oa'
%ntes de marcar la extensin :?30 se abre otra ventana terminal y se crea una conexin manual a la
%'I de %steris&:
te%net %oca%2ost L038
(ryin% 12,.).).1...
Connected to localhost.
Esca#e character is .`4..
3sterisk Call 9ana%er/1.1
(e autentica el usuario admin:
/ctionGlogin
6sernameGadmin
ecretGsesamo
>ventsGoff
1es#onse" 2uccess
9essa%e" 3uthentication acce#ted
(e e$ecuta la primera accin agi para contestar el canal Oel numero de canal aparece en la consola de
%steris&P:
/ctionG/gi
C*annelG@-/(000&000000(C
CommandG/ns1er
1es#onse" 2uccess
9essa%e" 3dded 3QA co$$and to Mueue
(e enva la mFsica de espera al canal:
/ctionG/gi
C*annelG@-/(000&000000(C
CommandG>xec startmusicon*old
@@?
1es#onse" 2uccess
9essa%e" 3dded 3QA co$$and to Mueue
(e para la mFsica de espera en el canal:
/ctionG/gi
C*annelG@-/(000&000000(C
CommandG>xec stopmusicon*old
1es#onse" 2uccess
9essa%e" 3dded 3QA co$$and to Mueue
(e termina la llamada:
/ctionG/gi
C*annelG@-/(000&000000(C
CommandG*angup
1es#onse" 2uccess
9essa%e" 3dded 3QA co$$and to Mueue
*n la consola de %steris& aparecer#:
-- EBecutin% 025*-eBternas"14 Co<#(W2AF/1)))-))))))1,WD WW! in new stack
-- EBecutin% 025*-eBternas"24 3QA(W2AF/1)))-))))))1,WD Wa%i"asyncW! in new stack
S2AF/1)))-))))))1,R3QA (B RR a%ireMuest" async
S2AF/1)))-))))))1,R3QA (B RR a%ichannel" 2AF/1)))-))))))1,
S2AF/1)))-))))))1,R3QA (B RR a%ilan%ua%e" es
S2AF/1)))-))))))1,R3QA (B RR a%ity#e" 2AF
S2AF/1)))-))))))1,R3QA (B RR a%iuniMueid" 13312*68+*.2,
S2AF/1)))-))))))1,R3QA (B RR a%iversion" 1.8.8.2
S2AF/1)))-))))))1,R3QA (B RR a%icallerid" 1)))
S2AF/1)))-))))))1,R3QA (B RR a%icalleridna$e" callerid7Nulano
S2AF/1)))-))))))1,R3QA (B RR a%icallin%#res" )
S2AF/1)))-))))))1,R3QA (B RR a%icallin%ani2" )
S2AF/1)))-))))))1,R3QA (B RR a%icallin%ton" )
S2AF/1)))-))))))1,R3QA (B RR a%icallin%tns" )
S2AF/1)))-))))))1,R3QA (B RR a%idnid" 25*
S2AF/1)))-))))))1,R3QA (B RR a%irdnis" unknown
S2AF/1)))-))))))1,R3QA (B RR a%iconteBt" eBternas
S2AF/1)))-))))))1,R3QA (B RR a%ieBtension" 25*
S2AF/1)))-))))))1,R3QA (B RR a%i#riority" 2
S2AF/1)))-))))))1,R3QA (B RR a%ienhanced" ).)
S2AF/1)))-))))))1,R3QA (B RR a%iaccountcode" 1)))
S2AF/1)))-))))))1,R3QA (B RR a%ithreadid" -1225)+8352
S2AF/1)))-))))))1,R3QA (B RR
S2AF/1)))-))))))1,R3QA (B RR 2)) result7)
@@B
-- /3@ cript >xecuting /pplicationG !startmusicon*old) OptionsG !)
-- 2tarted $usic on holdD class .default.D on 2AF/1)))-))))))1,
S2AF/1)))-))))))1,R3QA (B RR 2)) result7)
-- /3@ cript >xecuting /pplicationG !stopmusicon*old) OptionsG !)
-- 2to##ed $usic on hold on 2AF/1)))-))))))1,
S2AF/1)))-))))))1,R3QA (B RR 2)) result7)
S2AF/1)))-))))))1,R3QA (B RR 2)) result71
77 2#awn eBtension (eBternasD 25*D 2! eBited non-Tero on .2AF/1)))-))))))1,.
@@<
Cait$%o XX
=os registros en Asterisk
%steris& guarda toda una serie de registros relacionados con su actividad en distintos archivos2 -na
parte est#n relacionados con las llamadas y otra parte con el funcionamiento de la 8BH2 *n este
capitulo se hablar# de:
!/; O!all /etail ;ecordP
!*L O!hannel *vent LoggingP
Logger2conf
20.1 C,6 8Ca%% ,etai% 6ecor':
*n el p#rrafo 12< se ha visto como crear una base de datos 'y()L y una tabla OcdrP para guardar los
registros de las llamadas2 'irando una entrada en la tabla !/;0 se ver#n los siguientes datos:
*n orden:
calldate: fecha y hora de la llamada
clid: callerI/ del llamante
src: numero de la extensin que ha iniciado la llamada
dst: numero de destino
dcontext: contexto que se ha utiliSado
channel: nombre del canal de quien ha originado la llamada
dstchannel: nombre del canal de destino
lastapp: aplicacin utiliSada
lastdata: opciones de la aplicacin utiliSadas
duration: duracin total de la llamada
billsec: duracin de la llamada despu5s de que ha sido contestada
disposition: resultado de la aplicacin e$ecutada Oen este caso B-(QP
amaflags: par#metro utiliSado para la facturacin de la llamada
accountcode: numero de cuenta para facturacin de la llamada
peeraccount: cuenta del usuario Olado peerP
uniqueid: numero Fnico que identifica la llamada
lin&edid: numero Fnico que identifica la llamada y que mantiene el mismo valor en el caso la
llamada sea transferida0 parqueada0 enviada a una cola0 etc22 ltil para hacerle seguimiento a la
llamada
userfield: campo personaliSable por el usuario2
-na primera cosa que se puede hacer es utiliSar el campo userfield para guardar la I8 de donde se
origin la llamada2 8ara esta configuracin se utiliSa la funcin !6%,,*L que permite leer muchos
datos de un determinado canal0 entre ellos MpeeripN2
(e abre el dialplan:
nano @etc@asterisk@e3tensions.con"
y en el contexto internacio0 despu5s de esta linea:
exten =N 500Q#B(BNoOp
se aade:
same =N nBet!C=.!userfield)=EVCO/NN>L!peerip)W)
y despu5s de esta linea:
exten =N 5005C%#B(BNoop
se aade:
same =N nBet!C=.!userfield)=EVCO/NN>L!peerip)W)
!on estas lineas se asocia al campo userfield del !/;0 la I8 del canal que est# originando la llamada2
(e guardan los cambios y se recarga el dialplan:
asterisk .rvvvvvvvvvvvvv
!LI" 'ia%%an re%oa'
%hora desde la extensin 1>>> se llama un numero de tel5fono fi$o/celular2 Derminada la llamada se
vuelve a =ebmin y se mira la ultima entrada de la tabla !/;2 *n el campo userfield aparecer# la I8 de
donde se origin la llamada:
*ste tipo de solucin puede ser muy Ftil para conocer en cualquier momento de donde las extensiones
est#n originando sus llamadas y de esta forma monitorear si se est#n presentando ataques exitosos a la
8BH2
@?>
Los mismos datos se guardan tambi5n en distintos archivos !(9 presentes en la la carpeta
/var/log/asteris&2y algunas subIcarpetas Oen negritaP2
%s .% @var@%og@asterisk
total 1+2
drwBr-Br-B 2 root root *)+6 9ar 22 11"*2 cdr&csv
drwBr-Br-B 2 root root *)+6 9ar 2) 1)"11 cdr&custom
drwBr-Br-B 2 root root *)+6 9ar 2) 1)"11 cel-custo$
-rw-r--r-- 1 root root 2*5,6 9ar 23 15"21 master#db
-rw-r--r-- 1 root root 1*+285 9ar 23 15"2, $essa%es
-rw-r--r-- 1 root root 2)22 9ar 22 1,"35 Mueuelo%
La carpeta cdrIcsv contiene el archivo 'aster2csv0 que contiene la lista de todas las llamadas
efectuadas0 y un archivo por cada extensin/cuenta2
total ,2
-rw-r--r-- 1 root root 188*, 9ar 2* 11"1) 1))).csv
-rw-r--r-- 1 root root 8)55 9ar 22 1,"** 1))1.csv
-rw-r--r-- 1 root root 1)5+ 9ar 22 1,"*5 1))2.csv
-rw-r--r-- 1 root root 1113 9ar 23 16"26 $arko2.csv
-rw-r--r-- 1 root root 321*+ 9ar 2* 11"1) 9aster.csv
-rw-r--r-- 1 root root 261 9ar 21 11")+ 9en%ano.csv
20.1.1 c'r.con"
Lo que se guarda y como se guardan los datos en el !/; depende de la configuracin del archivo
cdr2conf2 *n la tabla que sigue los distintos par#metros con una descripcin2 *n negrita el valor
asignado a cada par#metro2
0ar!9etro ,escrici&n
YgeneralZ *tiqueta que indica el inicio de la parte general de la configuracin
enable 1es = se habilita el registro !/;
unans4ered yes = reporta todas las llamadas no contestadas con mFltiples
destinos y una sola origen2 *$emplo: cuando desde una extensin se
marca a un grupo de extensiones2
no = reporta todas las llamadas incluyendo la no contestadas siempre
y cuando el destino sea un solo numero/extensin
endbeforehexten no = los datos se guardan en el !/; cuando ambos canales se hayan
terminado2 yes = se guardan antes de la extensin h Osi presenteP2
initiatedseconds %steris& para determinar la duracin de una llamada realiSa un
calculo entre los segundos totales de la llamada menos los segundos
@?1
0ar!9etro ,escrici&n
desde que la llamada ha sido contestada2 *$emplo:
segundos de la llamada :> G segundos desde que se contest 1> =
tiempo de conversacin 1>
*sto porque a pesar de que guarde los datos en micro segundos0
redondea a los nFmeros enteros2
!on yes el calculo tendr# en cuenta los micro segundos2 *$emplo:
segundos de la llamada :>0:::::: G segundos desde que se contest
1>0111111 = tiempo de conversacin 1>0111111 redondeado = 11
*sto resuelve el desenlace que a veces se encuentra entre la duracin
de la llamada presente en el !/; y la duracin que factura el
proveedor 9oI82 9alor: 1es
batch no = los datos se guardan en el !/; cada veS que una llamada
termine2 yes = los datos se guardan en un buffer de memoria y se
escriben solamente cuando se alcance el numero o el tiempo
definidos en el prximos dos par#metros2 (i la 8BH va en error o el
proceso se termina0 los datos en el buffer se perder#n2 >ti%izar con
c$i'a'o.
UsiSe=1>> cuando en el buffer de memoria se alcancen 1>> registros0 estos se
guardar#n en los distintos archivos/base de datos2 (e de$a comentado2
Utime=3>> cada cuantos segundos guardar los registros del !/; presentes en el
buffer de memoria2 *ste par#metro tiene prioridad sobre el par#metro
siSe2 (e de$a comentado2
Uscheduleronly=no si el par#metro siSe es mayor que 1>0 este par#metro se pone igual a
no2 8ara un valor inferior a 1> se pone igual a yes2 se de$a
comentado2
Usafeshutdo4n=yes yes = si se para %steris&0 la 8BH antes de cerrarse guardar# los
registros !/; presentes en el buffer de memoria
YcsvZ *n este bloque se define como se guardar#n los registros !/; en los
archivos csv2
usegmtime no = no se guarda la hora en +'D sino en el huso horario
configurado en el servidor
loguniqueid 1es = en el archivo csv se guarda el campo uniqueI/
loguserfield 1es = en el archivo csv se guarda el campo userfield
accountlogs 1es = se crear# un archivo para cada accountcode configurado en
%steris&2
(e renombra el archivo predefinido:
9v @etc@asterisk@c'r.con" @etc@asterisk@c'r.con".o%'
se crea uno nuevo:
@?:
nano @etc@asterisk@c'r.con"
y se copian las lineas que siguen:
KgeneralL
enable=0es
unans1ered=no
endbefore*exten=no
initiatedseconds=0es
batc*=no
Jsi,e=(00
Jtime=%00
Jsc*eduleronl0=no
Jsafes*utdo1n=0es
KcsvL
usegmtime=no
loguniHueid=0es
loguserfield=0es
accountlogs=0es
(e guardan los cambios y se recarga la configuracin de %steris&:
service asterisk re%oa'
(e entra en la consola de %steris&:
asterisk .rvvvvvvvvvvvvvvvvvvv
y se revisa la configuracin con el comando:
!LI" c'r s2ow stat$s
Call ?etail 1ecord (C?1! settin%s
----------------------------------
>o%%in%" Ena'led
9ode" 2i$#le
>o% unanswered calls" Co
6 1e%istered Lackends
-------------------
$ysMl
csv
cdrsMlite3custo$
cdr-custo$
3da#tive <?LC
@?3
20.1.2 c'r;9anager.con"
!omo se ha visto en el p#rrafo 1E210 en la configuracin del los usuarios en el manager2conf0 entre los
permisos que se pueden configurar0 hay el par#metro McdrN que permite recibir0 en la %'I de %steris&0
los eventos relacionados con los registros !/;2 8or defecto esta funcionalidad no est# activada2 8ara
volverla disponible0 se abre el siguiente archivo:
nano @etc@asterisk@c'r;9anager.con"
y se modifica esta linea:
enabled=no
para que quede:
enabled=0es
(e guardan los cambios y se reinicia el modulo desde la consola de %steris&:
!LI" 9o'$%e re%oa' c'r;9anager.so
(i se controla el estado del !/; se notar# que la nueva funcionalidad est# activada Oen negritaP:
!LI" c'r s2ow stat$s
Call ?etail 1ecord (C?1! settin%s
----------------------------------
>o%%in%" Ena'led
9ode" 2i$#le
>o% unanswered calls" Co
6 1e%istered Lackends
-------------------
cdr5manager
$ysMl
csv
cdrsMlite3custo$
cdr-custo$
3da#tive <?LC
(e puede realiSar una prueba entrando en la %'I de asteris&:
te%net %oca%2ost L038
autentic#ndose:
@?@
Action)=ogin
>serna9e)a'9in
Secret)sesa9o
y efectuando una llamada desde la extensin 1>>> a la extensin 1>>12 %l terminar la llamada0 entre los
distintos eventos0 en la %'I aparecer#:
Event" Cdr
Frivile%e" cdrDall
(i$esta$#" 13325*2),+.+3,863
3ccountCode" 1)))
2ource" 1)))
?estination" 1))1
?estinationConteBt" eBternas
CallerA?" Wcallerid7NulanoW S1)))R
Channel" 2AF/1)))-)))))))8
?estinationChannel" 2AF/1))1-)))))))+
>ast3##lication" ?ial
>ast?ata" 2AF/1))1D*5Dh@k=t(wJBO
2tart(i$e" 2)12-)3-23 1,"3*"26
3nswer(i$e" 2)12-)3-23 1,"3*"2+
End(i$e" 2)12-)3-23 1,"3*"3+
?uration" 13
Lilla'le2econds" 11
?is#osition" 3C2JE1E?
393Nla%s" ?<CE9EC(3(A<C
EniMueA?" 13325*2)66.1)
EserNield"
20.1.3 C,6 a'ative
!omo el modulo cdrImysql en la ultima versin de la rama 12A ha sido etiquetado como MdeprecatedN0
pronto ese modulo no estar# disponible para la instalacin2 8ara obviar este problema0 una solucin es
utiliSar el modulo cdrCadaptiveCodbc que permite utiliSar el conector L/B! para conectarse a una
tabla de una base de datos y guardar los registros de las llamadas2
8ara probarlo0 primero se crea una segunda tabla en la base de datos asteris&cdr:
91sB% .$ root .sesa9o
mysql" $se asteriskc'r
mysql" C.>/7> 7/FL> cdr" !
id bigint!"0) NO7 N6LL auto5incrementB
calldate datetime NO7 N6LL default D0000&00&00 00G00G00DB
@??
clid varc*ar!'0) NO7 N6LL default DDB
src varc*ar!'0) NO7 N6LL default DDB
dst varc*ar!'0) NO7 N6LL default DDB
dcontext varc*ar!'0) NO7 N6LL default DDB
c*annel varc*ar!'0) NO7 N6LL default DDB
dstc*annel varc*ar!'0) NO7 N6LL default DDB
lastapp varc*ar!'0) NO7 N6LL default DDB
lastdata varc*ar!'0) NO7 N6LL default DDB
duration int!(() NO7 N6LL default D0DB
billsec int!(() NO7 N6LL default D0DB
disposition varc*ar!;5) NO7 N6LL default DDB
amaflags int!(() NO7 N6LL default D0DB
accountcode varc*ar!"0) NO7 N6LL default DDB
peeraccount varc*ar!"0) NO7 N6LL default DDB
uniHueid varc*ar!%") NO7 N6LL default DDB
lin+edid varc*ar!'0) NO7 N6LL default DDB
userfield varc*ar!"55) NO7 N6LL default DDB
-.@?/.2 I>2 !AidA)B
I>2 callerid !clid)
)J
(e sale del cliente 'y()L y se configura el odbc2ini:
mysql" B$it
nano @etc@o'(c.ini
%l final del archivo se aaden las siguientes lineasOsi ya no se ha hecho en el p#rrafo 1323P:
Kasteris+cdrL
=escription = ?0`L /steris+C=.
=river = ?0`L
=atabase = asteris+cdr
erver = local*ost
6ser = asteris+
-ass1ord = sesamo
-ort = %%0$
Option = %
(e pasa al archivo resCodbc:
nano @etc@asterisk@res;o'(c.con"
y al final del archivo0 se copian las siguientes lineas:
Kasteris+cdrL
enabled =N 0es
@?B
dsn =N asteris+cdr
username =N asteris+
pass1ord =N sesamo
pre&connect =N 0es
sanit0sHl =N select (
idlec*ec+ =N %$00
connect5timeout =N (0
8or ultimo se configura el archivo cdrCadaptiveCodbc2conf:
9v @etc@asterisk@c'r;a'ative;o'(c.con" @etc@asterisk@c'r;a'ative;o'(c.con".o%'
se crea uno nuevo:
nano @etc@asterisk@c'r;a'ative;o'(c.con"
y se copian las siguientes lineas:
Kcdr"L
connection=asteris+cdr
table=cdr"
alias start =N calldate
\c'r2]: un nombre que se le asigna a la conexin
connectionQasteriskc'r) en este par#metro hay que poner la etiqueta que define el bloque
creado en resCodbc2conf
ta(%eQc'r2: la tabla 'y()L donde se guardar#n los datos
a%ias start QK ca%%'ate: en cdrCadaptive hay tres campos donde se guardan diferentes
momentos de la llamada: cuando inicia0 cuando se contesta y cuando se termina2 Los nombres
de estos campos son respectivamente start0 ans4er y end2 *l campo calldate no existe2 8or este
motivo para que este campo contenga un valor hay que escoger unos de los tres que crea
cdrCadaptive2 *sto se realiSa indicando un alias y definiendo que el campo calldate contendr# el
valor del campo start de cdrCadaptive Ocuando la llamada iniciaP2
(e guardan los cambios y se entra en la consola de %steris&:
asterisk .rvvvvvvvvvvvvvvvvv
se recarga el moudlo resCodbc y luego el modulo cdr adaptive:
!LI" 9o'$%e re%oa' res;o'(c.so
-- 1eloadin% $odule .resod'c.so. (<?LC resource!
77 Farsin% ./etc/asterisk/resod'c.conf." 77 Nound
C<(ACE02,1+14" resod'c.c"1531 od'co'Gconnect" Connectin% asterisk
C<(ACE02,1+14" resod'c.c"1563 od'co'Gconnect" resod'c" Connected to asterisk 0asterisk4
C<(ACE02,1+14" resod'c.c"+2) loadod'cconfi%" 1e%istered <?LC class .asterisk. dsn-R0asterisk4
@?<
C<(ACE02,1+14" resod'c.c"1531 od'co'Gconnect" Connectin% cdr
C<(ACE02,1+14" resod'c.c"1563 od'co'Gconnect" resod'c" Connected to cdr 0asteriskcdr4
C<(ACE02,1+14" resod'c.c"+2) loadod'cconfi%" 1e%istered <?LC class .cdr. dsn-R0asteriskcdr4
C<(ACE02,1+14" resod'c.c"1531 od'co'Gconnect" Connectin% asteriskcdr
C<(ACE02,1+14" resod'c.c"1563 od'co'Gconnect" resod'c" Connected to asteriskcdr 0asteriskcdr4
C<(ACE02,1+14" resod'c.c"+2) loadod'cconfi%" 1e%istered <?LC class .asteriskcdr. dsn-R0asteriskcdr4
!LI" 9o'$%e re%oa' c'r;a'ative;o'(c.so
1eloadin% $odule .cdrada#tiveod'c.so. (3da#tive <?LC C?1 'ackend!
77 Farsin% ./etc/asterisk/cdrada#tiveod'c.conf." 77 Nound
-- Nound ada#tive C?1 ta'le cdr2-asteriskcdr.
R Nound id colu$n with ty#e -5 with len 1+D octetlen 1+D and nu$len ()D1)!
-- Nound alias start for colu$n calldate in cdr2-asteriskcdr
R Nound calldate colu$n with ty#e +3 with len 1+D octetlen 1+D and nu$len ()D1)!
R Nound clid colu$n with ty#e 12 with len 8)D octetlen 8)D and nu$len ()D)!
R Nound src colu$n with ty#e 12 with len 8)D octetlen 8)D and nu$len ()D)!
R Nound dst colu$n with ty#e 12 with len 8)D octetlen 8)D and nu$len ()D)!
R Nound dconteBt colu$n with ty#e 12 with len 8)D octetlen 8)D and nu$len ()D)!
R Nound channel colu$n with ty#e 12 with len 8)D octetlen 8)D and nu$len ()D)!
R Nound dstchannel colu$n with ty#e 12 with len 8)D octetlen 8)D and nu$len ()D)!
R Nound lasta## colu$n with ty#e 12 with len 8)D octetlen 8)D and nu$len ()D)!
R Nound lastdata colu$n with ty#e 12 with len 8)D octetlen 8)D and nu$len ()D)!
R Nound duration colu$n with ty#e * with len 1)D octetlen 1)D and nu$len ()D1)!
R Nound 'illsec colu$n with ty#e * with len 1)D octetlen 1)D and nu$len ()D1)!
R Nound dis#osition colu$n with ty#e 12 with len *5D octetlen *5D and nu$len ()D)!
R Nound a$afla%s colu$n with ty#e * with len 1)D octetlen 1)D and nu$len ()D1)!
R Nound accountcode colu$n with ty#e 12 with len 2)D octetlen 2)D and nu$len ()D)!
R Nound #eeraccount colu$n with ty#e 12 with len 2)D octetlen 2)D and nu$len ()D)!
R Nound uniMueid colu$n with ty#e 12 with len 32D octetlen 32D and nu$len ()D)!
R Nound linkedid colu$n with ty#e 12 with len 8)D octetlen 8)D and nu$len ()D)!
R Nound userfield colu$n with ty#e 12 with len 255D octetlen 255D and nu$len ()D)!
%hora se puede efectuar una primera prueba2 /esde la extensin 1>>> se marca a la extensin 1>>12 %l
terminar la llamada0 en la consola de %steris& aparecer#:
0AC2E1( AC(< cdr2
(calldateDclidDsrcDdstDdconteBtDchannelDdstchannelDlasta##DlastdataDdurationD'illsecDdis#ositionDa$afla%
sDaccountcodeDuniMueidDlinkedid! P3>EE2 (U ts .2)12-)3-2, 15"*+"1,. VD.Wcallerid7NulanoW
S1)))R.D.1))).D.1))1.D.eBternas.D.2AF/1)))-)))))))f.D.2AF/1))1-
))))))1).D.?ial.D.2AF/1))1D*5Dh@k=t(wJBO.D12D1)D.3C2JE1E?.D3D.1))).D.133288135,.1,.D.13328813
5,.1,.!4
)ue indica que los datos de la llamada se han guardado en la tabla !/;:2 *n la tabla:
@?A
La misma entrada estar# en la tabla !/;2 Ltra cosa que se puede hacer con el modulo !/; %daptive
es filtrar los datos que se van a guardar en la tabla2 *n el e$emplo que sigue se guardar# en una nueva
tabla solamente las llamadas originadas por la extensin 1>>>2
91sB% .$ root .sesa9o
mysql" $se asteriskc'r
mysql" C.>/7> 7/FL> cdr% !
id bigint!"0) NO7 N6LL auto5incrementB
calldate datetime NO7 N6LL default D0000&00&00 00G00G00DB
clid varc*ar!'0) NO7 N6LL default DDB
src varc*ar!'0) NO7 N6LL default DDB
dst varc*ar!'0) NO7 N6LL default DDB
dcontext varc*ar!'0) NO7 N6LL default DDB
c*annel varc*ar!'0) NO7 N6LL default DDB
dstc*annel varc*ar!'0) NO7 N6LL default DDB
lastapp varc*ar!'0) NO7 N6LL default DDB
lastdata varc*ar!'0) NO7 N6LL default DDB
duration int!(() NO7 N6LL default D0DB
billsec int!(() NO7 N6LL default D0DB
disposition varc*ar!;5) NO7 N6LL default DDB
amaflags int!(() NO7 N6LL default D0DB
accountcode varc*ar!"0) NO7 N6LL default DDB
peeraccount varc*ar!"0) NO7 N6LL default DDB
uniHueid varc*ar!%") NO7 N6LL default DDB
lin+edid varc*ar!'0) NO7 N6LL default DDB
userfield varc*ar!"55) NO7 N6LL default DDB
-.@?/.2 I>2 !AidA)B
I>2 callerid !clid)
)J
(e sale del cliente 'y()L:
mysql" B$it
Luego se modifica el archivo cdrCadaptiveCodbc2conf:
nano @etc@asterisk@c'r;a'ative;o'(c.con"
%l final del archivo se aade el siguiente bloque:
@?E
Kcdr%L
connection=asteris+cdr
table=cdr%
alias start =N calldate
filter src =N (000
"i%ter src QK 1000: en la tabla se guardar#n solamente los registros de las llamadas originadas
por la extensin 1>>>
(e guardan los cambios y se entra en la consola de %steris&:
asterisk .rvvvvvvvvvvvvvvvvvvv
*n este caso se recarga solamente el modulo !/; adaptive:
!LI" 9o'$%e re%oa' c'r;a'ative;o'(c.so
!on la consola abierta desde la extensin 1>>1 se llama la extensin 1>>>2 %l finaliSar la llamada en la
consola aparecer#:
R C=. column DsrcD 1it* value D(00(D does not matc* filter of D(000D# Cancelling t*is C=.#
!omo el campo src tiene como valor 1>>1 y el filtro se ha creado para el valor 1>>>0 la llamada no se
guardar# en la tabla !/;32
(i ahora desde la extensin 1>>> se llama la extensin 1>>1:
0AC2E1( AC(< cdr3
(calldateDclidDsrcDdstDdconteBtDchannelDdstchannelDlasta##DlastdataDdurationD'illsecDdis#ositionDa$afla%
sDaccountcodeDuniMueidDlinkedid! P3>EE2 (U ts .2)12-)3-2, 16")1"52. VD.Wcallerid7NulanoW
S1)))R.D.1))).D.1))1.D.eBternas.D.2AF/1)))-))))))15.D.2AF/1))1-
))))))16.D.?ial.D.2AF/1))1D*5Dh@k=t(wJBO.D11D8D.3C2JE1E?.D3D.1))).D.1332882112.23.D.133288211
2.23.!4
Los datos de la llamada se guardar#n en la tabla !/;3
20.2 C-= 8C2anne% -vent =ogging:
%unque pareSca que el !/; responda a todas las necesidades de los administradores de la 8BH0 tiene
unas cuantas limitaciones2 *sto porque su lgica se basa en tres eventos principales:
inicio de la llamada
duracin de la conversacin
finaliSacin de la llamada
@B>
*l tiempo que se facturar# es la diferencia entre la duracin total de la llamada y el duracin de la
conversacin2 *l problema es que con este tipo de lgica0 es muy complicado tener una traSa de todos
los eventos que se pueden presentar a lo largo de la llamada2 %lgunos e$emplos:
transferencia de la llamada a otra extensin
transferencia de la llamada a una conferencia
parqueo y/o captura de la llamada por otra extensin
e$ecucin de un %+I a lo largo de la llamada2
Dodos estos tipos de eventos0 dificultan una correcta facturacin y seguimiento de llamada2 *s por eso
que desde la versin 12A de %steris& se ha aadido un nueva funcionalidad: el !*L O!hannel *vent
LoggingP2 *l !*L0 a diferencia del !/;0 basa su lgica sobre el canal de la llamada y va guardando
todos los eventos que se van generando desde ese canal2 /e esta forma es posible tener un registro
mucho m#s detallado de las llamadas2 *l !*L0 en su desarrollo actual0 no sustituye el !/;0 sin
embargo la combinacin de los dos permite un control y monitoreo de las llamadas muchos m#s
detallado y completo2 *n este p#rrafo se ilustrar# la configuracin del modulo y como guardar los
eventos en una tabla de una base de datos utiliSando el conector L/B!2
Lo primero es configurar el archivo cel2conf2 *n la tabla que sigue los distintos par#metros con una
descripcin2 *n negrita el valor asignado a cada par#metro2
0ar!9etro ,escrici&n
YgeneralZ inicia la parte general de la configuracin del archivo
enable 1es Q se activa el registro de los eventos del modulo !*L
apps en este par#metro se especifica la lista de las aplicaciones por las
cuales se quiere recibir los eventos2 (i se indica MallN se recibir#n los
eventos de todas las aplicaciones2 -tiliSar con cuidado ya que puede
afectar el rendimiento de la 8BH 9alor: 'ia%EarkEB$e$eE9eet9e
events *n este par#metro se indica una lista de eventos0 separados por una
coma0 de los que se quieres tener traSa *stos son:
%LL: todos
!6%,C(D%;D: fecha en que se ha creado el canal
!6%,C*,/: fecha en que el canal se ha terminado
%,(=*;: fecha en que el canal ha sido contestado
6%,+-8: fecha en que se ha presentado un 6angup Ocierre
del canalP
!L,.C*,D*;: fecha en que un canal ha sido enviado a una
conferencia audio
!L,.C*HID: fecha en que un canal ha salido de una
conferencia audio
!L,.C(D%;D: fecha en que el primer usuario ha entrado a
una conferencia
@B1
0ar!9etro ,escrici&n
!L,.C*,/: fecha en que el ultimo usuario presente ha
de$ado una conferencia audio Oy posiblemente apagado todas
las luces :P
%88C(D%;D: fecha en que la aplicacin se ha iniciado
%88C*,/: fecha en que la aplicacin ha terminado
8%;TC(D%;D: fecha en que el canal ha sido parqueado
8%;TC*,/: fecha en que el canal ha sido sacado del MslotN
de parqueo
B;I/+*C(D%;D: fecha en que el canal ha sido conectado
con otro canal
B;I/+*C*,/: fecha en que ha terminado la conexin con
otro canal
3=%QC(D%;D: fecha en que ha iniciado una conferencia a 3
Onormalmente con una transferencia asistidaP
3=%QC*,/: fecha en que una conferencia a 3 ha sido
terminada
BLI,/D;%,(.*;: fecha en que ha iniciado una
transferencia ciega
%DD*,/*/D;%,(.*;: fecha en que ha iniciado una
transferencia asistida
D;%,(.*;: fecha en que se ha iniciado una transferencia
6LLT.L%(6: fecha en que se ha iniciado un Mdescolgado
relampagoN en un canal /%6/I Onormalmente utiliSado para
contestar llamadas en espera o para activar la conferencia a 3P
-(*;C/*.I,*/: evento personaliSado que se puede enviar
desde el dialpla a trav5s de la aplicacin !*L+en-ser*vent
8ara esta prueba se recibir#n todos los eventos2 9alor: A%%
dateformat *l formato de la fecha presente por cada evento2 9alor: W7 WT
YmanagerZ a partir de esta etiqueta inicia la configuracin de !*L para la %'I
de %steris&
enabled 1es Q se activa el envo de los eventos a la %'I de %steris&
!on estos datos0 se puede crear el archivo de configuracin para !*L2 (e renombra el predefinido:
9v @etc@asterisk@ce%.con" @etc@asterisk@ce%.con".o%'
se crea uno nuevo:
nano @etc@asterisk@ce%.con"
y se aaden las siguientes lineas:
@B:
KgeneralL
enable=0es
apps=dialBpar+BHueueBmeetme
events=all
dateformat=_8 _7
KmanagerL
enabled=0es
(e guardan los cambios y se recarga la configuracin de %steris&:
service asterisk re%oa'
%hora falta crear la tabla y luego crear una conexin a la misma a trav5s de L/B!2 (e entra en cliente
mysql:
91sB% .$ root .sesa9o
(e crea la base de datos0 la tabla y el usuario con los permisos:
mysql" create 'ata(ase asteriskce%S
mysql" $se asteriskce%
mysql" C.>/7> 7/FL> cel!
eventtime 7@?>7/?- NO7 N6LL B
userdeft0pe R/.CO/.! "55 ) NO7 N6LL B
cid5name R/.CO/.! '0 ) NO7 N6LL B
cid5num R/.CO/.! '0 ) NO7 N6LL B
cid5ani R/.CO/.! '0 ) NO7 N6LL B
cid5rdnis R/.CO/.! '0 ) NO7 N6LL B
cid5dnid R/.CO/.! '0 ) NO7 N6LL B
exten R/.CO/.! '0 ) NO7 N6LL B
context R/.CO/.! '0 ) NO7 N6LL B
c*anname R/.CO/.! '0 ) NO7 N6LL B
appname R/.CO/.! '0 ) NO7 N6LL B
appdata R/.CO/.! '0 ) NO7 N6LL B
accountcode R/.CO/.! "0 ) NO7 N6LL B
peeraccount R/.CO/.! "0 ) NO7 N6LL B
uniHueid R/.CO/.! (50 ) NO7 N6LL B
lin+edid R/.CO/.! (50 ) NO7 N6LL B
amaflags @N7 NO7 N6LL B
userfield R/.CO/.! "55 ) NO7 N6LL B
peer R/.CO/.! '0 ) NO7 N6LL
)J
mysql" 46A#T A== 06+V+=-4-S O# asteriskce%.T TO UasteriskU*U%oca%2ostU +,-#T+7+-,
@B3
<V Usesa9oUS
(e sale del cliente:
mysql" B$it
%hora los pasos a seguir son:
!rear uno nuevo bloque en el archvo odbc2ini
!rear un nuevo bloque en el archivo resCodbc2conf
!onfigurar el archivo celCodbc2conf
(e abre el archivo odbc2ini:
nano @etc@o'(c.ini
y al final se aade el siguiente bloque:
Kasteris+celL
=escription = ?0`L /steris+C>L
=river = ?0`L
=atabase = asteris+cel
erver = local*ost
6ser = asteris+
-ass1ord = sesamo
-ort = %%0$
Option = %
(e guarda los cambios y se prueba la nueva conexin:
isB% asteriskce% asterisk sesa9o
hIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIh
] !onnected[ ]
] ]
] sqlIstatement ]
] help YtablenameZ ]
] quit ]
] ]
hIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIh
()L" B$it
(e pasa al archivo resCodbc2conf:
nano @etc@asterisk@res;o'(c.con"
se aade el siguiente bloque:
@B@
Kasteris+celL
enabled =N 0es
dsn =N asteris+cel
username =N asteris+
pass1ord =N sesamo
pre&connect =N 0es
sanit0sHl =N select (
idlec*ec+ =N %$00
connect5timeout =N (0
*l valor que aparece en el par#metro dns tiene que ser el mismo con que inicia el bloque que se acaba
de configurar en el archivo odbc2ini
8or ultimo se modifica el archivo celCodbc2conf:
9v @etc@asterisk@ce%;o'(c.con" @etc@asterisk@ce%;o'(c.con".o%'
nano @etc@asterisk@ce%;o'(c.con"
(e copian las siguientes lineas:
KC>L(L
connection=asteris+cel
table=cel
C-=1:nombre que se quiere asignar a la conexin
asteriskce%: tiene que ser el mismo valor con que inicia el bloque que se ha configurado en el
archivo resCodbc2conf
ce%: nombre de la tabla que se ha creado y donde se guardar#n los nuevos registros
(e guarda los cambios y se entra en la consola de %steirs&:
asterisk .rvvvvvvvvvvvv
(e recarga primero el module resCodbc2so:
!LI" 9o'$%e re%oa' res;o'(c.so
(e averigua que haya conexin con L/B!:
!LI" o'(c s2ow
<?LC ?2C 2ettin%s
-----------------
@B?
Ca$e" asterisk
?2C" asterisk
>ast connection atte$#t" 1+6+-12-31 1+"))"))
Fooled" Co
Connected" &es
Ca$e" cdr
?2C" asteriskcdr
>ast connection atte$#t" 1+6+-12-31 1+"))"))
Fooled" Co
Connected" &es
Ca$e" asteriskcdr
?2C" asteriskcdr
>ast connection atte$#t" 1+6+-12-31 1+"))"))
Fooled" Co
Connected" &es
Ca$e" asteriskcel
?2C" asteriskcel
>ast connection atte$#t" 1+6+-12-31 1+"))"))
Fooled" Co
Connected" &es
(e recarga el modulo celCodbc2so
!LI" 9o'$%e re%oa' ce%;o'(c.so
%hora desde la extensin 1>>1 se llama la extensin 1>>> y utiliSando el botn MDransferN del
softphone 3!H se transfiere la llamada a la conferencia numero 3?>>2 !uando la extensin 1>>> est5
en la conferencia0 desde la extensin 1>>1 se marca el mismo numero de conferencia O3?>>P2 -na veS
que las dos extensiones est5n en la conferencia0 primero cuelga la 1>>> y luego la 1>>12 *l resultado en
la tabla !*L ser#:
!LI" B$it
91sB% .$ root .sesa9o
mysql" $se asteriskce%
mysql" se%ect eventti9eEe3tenEconte3tEc2anna9eEana9eEa'ataE$niB$ei'E%inke'i' "ro9 ce%S
@BB
20.3 =ogger.con"
%dem#s de las llamadas0 es posible tener traSa del funcionamiento de %steris& Oerrores0 advertenciasP
en archivos de texto que se guardan en la carpeta /var/log/asteris&2
)ue tipo de archivos y que tipo de registros se quieren guardar0 se define en el archivo logger2conf2
*n la tabla que sigue los distintos par#metros con una descripcin2 *n negrita el valor asignado a cada
par#metro2
0ar!9etro ,escrici&n
YgeneralZ inicia la parte general de la configuracin del archivo
dateformat formato de la fecha2 8redefinido I(L AB>1 I W7 WT
appendhostname si se quiere aadir o no al nombre del archivo el nombre del dominio
del servidor2 9alor no
queueClog define si se quiere guardar o no las estadsticas de las colas de espera
en un archivo2 9alor 1es
queueClogCname *l nombre del archivo donde guardar las estadsticas de la colas de
espera2 9alor B$e$e;%og
queueClogCtoCfile 1es = las estadsticas de las colas se siguen guardando en el archivo
queueClog aunque est5n configuradas en ;ealtime2
rotatestrategy ,ormalmente los archivos de Log pueden alcanSar un tamao
considerable que dificulta su consulta2 8ara evitarlo se pueden MrotarN
y con este par#metro se define que tipo de rotacin se va a utiliSar:
@B<
0ar!9etro ,escrici&n
secuential G se renombran los archivos siguiendo un orden
donde el m#s reciente tendr# un numero m#s alto2
rotate G se renombran los archivos siguiendo un orden donde
el m#s vie$o tendr# el numero m#s alto
timestamp G se renombran los archivos aadiendo al nombre
la fecha en que se archivaron
YlogfilesZ esta etiqueta define el inicio de la configuracin de los archivos de
registro2 !ada archivo puede contener los siguientes valores:
debug
notice
4arning
error
verbose
dtmf
fax Odesde la versin 12A de %steris&P
debug =" 'e($g / se crea un archivo donde se guardar# solamente el debug de
la actividad de %steris&
verbose =" ver(ose / se crea un archivo donde guardar muy en detalle los
registros de la actividad de %steris&
fax =" "a3 / se crea un archivo donde se guardar#n los registros de actividad
del envo/recepcin de .%H
console =" noticeEwarningEerrorE'e($gE't9"E"a3 *l archivo console no es
propiamente un archivo2 (e indica que tipo de registros aparecer#n en
la consola de %steris&2
messages =" noticeEwarningE't9" *n el archivo messages se guardar#n solamente
los registros relacionados con noticias0 advertencias0 /D'. y fax
error =" error *n el archivo error se guardar#n solamente los errores2
8ara crear el nuevo archivo0 se renombra el predefinido:
9v @etc@asterisk@%ogger.con" @etc@asterisk@%ogger.con".o%'
y se crea uno nuevo:
nano @etc@asterisk@%ogger.con"
(e copian las siguientes lineas:
KgeneralL
dateformat=_8 _7
append*ostname=no
@BA
Hueue5log=0es
Hueue5log5name=Hueue5log
Hueue5log5to5file=0es
rotatestrateg0=rotate
KlogfilesL
debug =N debug
verbose =N verbose
fax =N fax
console =N noticeB1arningBerrorBdebugBdtmfBfax
messages =N noticeB1arningBdtmf
error =N error
(e guardan los cambios y se pasa a la definicin de las poltica de rotacin de los archivos de registro2
8ara definir estas polticas hay que instalar el programa Logrotate que se encarga de este tipo de tarea2
1$9 insta%% %ogrotate
-na veS instalado se crea un nuevo archivo donde se va a definir la rotacin de los archivos de Log de
%steris&:
nano @etc@%ogrotate.'@asterisk
(e copian las siguientes lneas:
/var/log/asteris+/messages
/var/log/asteris+/error
/var/log/asteris+/debug
/var/log/asteris+/verbose V
missingo+
rotate C
dail0
postrotate
/usr/sbin/asteris+ &rx Dlogger reloadD N /dev/null "N /dev/null
endscript
W
/var/log/asteris+/Hueue5log V
missingo+
rotate 5
si,e=(000+
postrotate
/usr/sbin/asteris+ &rx Dlogger reloadDN /dev/null "N /dev/null
endscript
W
*l primer bloque define la rotacin para los archivos messages0 error0 debug y verbose La rotacin ser#
@BE
diaria y se crear#n un m#ximo de < archivos secuenciales Oarchivo21 archivo2: 0 etc2P2 *l m#s antiguo
tendr# el numero secuencial m#s alto2 /espu5s de la rotacin OpostrotateP se actualiSa la configuracin
del archivo logger2conf en asteris&2
*l segundo bloque define la poltica de rotacin del archivo de registro queueClog Olas estadsticas de
las colas de esperaP2 *n este caso el archivo rotar# cuando alcanSar# un tamao de 1>>> Tbyte y se
creer#n un m#ximo de ? archivos secuenciales2
8ara testar el archivo de configuracin creado el procedimiento es:
c' @etc@%ogrotate.'
%ogrotate ."v asterisk
8ara aplicar los cambios desde la consola de %steris&:
asterisk .rvvvvvvvvvvvvvv
se escribe:
!LI" %ogger re%oa'
8ara ver la configuracin del archivo:
!LI" %ogger s2ow c2anne%s
Channel (y#e 2tatus Confi%uration
------- ---- ------ -------------
/var/lo%/asterisk/error Nile Ena'led - E11<1
/var/lo%/asterisk/$essa%es Nile Ena'led - C<(ACE J31CACQ ?(9N
Console Ena'led - ?ELEQ C<(ACE J31CACQ E11<1 ?(9N N3O
/var/lo%/asterisk/faB Nile Ena'led - N3O
/var/lo%/asterisk/de'u% Nile Ena'led - ?ELEQ
/var/lo%/asterisk/ver'ose Nile Ena'led - PE1L<2E
!LI" B$it
(e reinicia %steris&
service asterisk restart
*n la carpeta /var/log/asteris& estar#n presentes los archivos configurados en logger2conf y se podr#n
revisar los errores en el archivo error:
nano @var@%og@asterisk@error
/e esta forma en cualquier momento se tendr# ba$o control el funcionamiento de %steris&2
@<>
20.3.1 ,e($g
!uando algo no est# funcionando en %steris&0 hay la posibilidad de aumentar el nivel de debug de la
consola para buscar el problema que est# afectando el funcionamiento de la 8BH2 *sto se realiSa con
un comando especifico:
asterisk .rvvvvvvvvvvvvvvvvvvvvv
!LI" core set 'e($g R
*l nivel de debug va de > OningFn debugP a E Om#ximo debugP2 /e esta forma las informaciones que se
reciben acerca de las operaciones efectuadas por %steris& son mucho m#s detalladas y en la mayora de
los casos permite solucionar el problema2
!omo en el logger2conf se ha definido que el debug se guardar# en el archivo MdebugN0 ademas de la
consola0 se puede utiliSar este archivo para encontrar eventuales errores2
/e hecho si se vuelve a desactivar el debug:
!LI" core set 'e($g 0
se sale de la consola de %steris&:
!LI" B$it
y se abre el archivo:
nano @var@%og@asterisk@'e($g
se ver# que ese archivo contiene todo el debug generado desde que se ha activado en la consola2 La
consulta de estos archivos puede ser bastante complicada ya que se generan una cantidad considerable
de registros2 8ara buscar algo especifico se puede utiliSar el programa McatN $unto al programa MgrepN2
*l primero lee un archivo y devuelve su contenido en la ventana terminal de Linux0 grep permite buscar
una determinada palabra o frase en un archivo2 -n e$emplo:
cat @var@%og@asterisk@'e($g _ gre o'(c
/e esta forma todas la lineas del archivo debug que contengan la palabra odbc aparecer#n en la ventana
terminal2 (i se quiere enviar el resultado a un archivo:
cat @var@%og@asterisk@'e($g _ gre o'(c K o'(c
*n el caso el problema sea con la sealiSacin (I80 desde la consola se puede activar el debug de este
protocolo con el siguiente comando:
@<1
asterisk .rvvvvvvvvvvvvvvvvvvvvv
!LI" si set 'e($g on
(i se quiere limitar el debug solamente a una determinada extensin0 troncal:
!LI" si set 'e($g eer 5$stvoi
!omo se ha visto en el p#rrafo 32@ 0 se puede utiliSar tambi5n la utilidad ngrep2
(i el problema est# relacionado con el audio Ono hay audio en ambos canales o solamente unoP se puede
utiliSar el siguiente comando:
!LI" rt set 'e($g on
*ste comando no es muy selectivoU es mucho me$or activarlo solamente para la I8 del dispositivo que
est# teniendo problemas:
!LI" rt set 'e($g i 1.2.3.4
sustituir 12:232@ con la I8 del dispositivo2
@<:
Cait$%o XX+
Seg$ri'a' en Asterisk
21.1 6eg%as 'e oro
6ay unas reglas de oro que se necesita seguir en la configuracin de %steris&2 *stas reglas permiten
me$orar la seguridad de la 8BH y evitar ataques exitosos:
12 utiliSar siempre contraseas bastantes largas y difciles de memoriSar2
:2 no utiliSar la misma contrasea para todas las extensiones
32 no aceptar llamadas entrantes de invitados2 *sto se configura con el par#metro a%%owg$estQno
en la parte general del sip2conf2 (i se decide aceptar llamadas entrantes de invitados Osin
autentificacinP0 el contexto definido en la parte general del sip2conf no debe permitir el acceso
a troncales (I8 y/o lineas telefnicas tradicionales2
@2 configurar en la parte general del sip2conf el par#metro a%wa1sa$t2re5ectQ1es2 /e esta forma
cualquier intento de registro sin 5xito a extensiones existentes en la centralita0 recibir# como
respuesta que la extensin no existe0 evitando dar traSas al atacante
?2 ,o permitir el acceso al %'I de %steris& desde remoto Oteniendo cerrado el puerto ?>3A D!8
del servidor Linux2 *n el caso que se necesite utiliSar el %'I desde remoto0 configurar Iptables
de modo que acepte el trafico solo desde determinadas direcciones I82 -n e$emplo es esta linea:
.A +#0>T . tc .9 state ..state #-D .9 tc ..'ort L038 .s 1R2.168.142.200 .5 ACC-0T
!on esta linea se podr# conectar desde remoto al %'I de %steris& solamente la maquina con I8
1E:21BA21@:2:>>2 Ltra forma es utiliSar el protocolo DL(2
B2 -tiliSar nFmeros o nombres de extensiones largos y no f#cilmente memoriSables2
<2 -tiliSar las funciones +;L-8 y +;-8C!L-,D para limitar las llamadas salientes de las
extensiones2
%demas de estas < reglas0 es posible instalar en el servidor %steris& .ail:Ban20 un programa que lee los
registros de %steris& del archivo /var/log/asteris&/messages y si hay un numero determinado de intentos
de conexin sin 5xito0 bloquea la I8 de donde se han originados0 interactuando con iptables
OcortafuegosP2
21.2 7ai%2(an
(e descarga el programa:
c' @$sr@src
wget 2tt)@@'own%oa's.so$rce"orge.net@ro5ect@"ai%2(an@"ai%2(an.sta(%e@"ai%2(an.0.8.4@"ai%2(an.
0.8.4.tar.(z2
se descomprime:
tar .3" "ai%2(an.0.8.4.tar.(z2
se entra en la carpeta:
c' "ai%2(an.0.8.4
y se instala:
1t2on set$.1 insta%%
(e activa el script para arrancarlo como servicio:
c @$sr@src@"ai%2(an.0.8.4@"i%es@re'2at.init' @etc@init.'@"ai%2(an
c2kcon"ig ..a'' "ai%2(an
c2kcon"ig "ai%2(an on
(e configura para que lea los registros de %steris&:
c' @etc@"ai%2(an@"i%ter.'
nano asterisk.con"
y se aaden estas lneas:
# 8ail"Fan configuration file
#
K@NCL6=>L
# .ead common prefixes# @f an0 customi,ations available && read t*em from
# common#local
#before = common#conf
K=efinitionL
#5daemon = asteris+
# OptionG failregex
# Notes#G regex to matc* t*e pass1ord failures messages in t*e logfile# 7*e
# *ost must be matc*ed b0 a group named 4*ost4# 7*e tag 4UOO7N4 can
# be used for standard @-/*ostname matc*ing and is onl0 an alias for
# !YGGGfV;B$WG)Y!Y-U*ostNaX)
# RaluesG 7>Q7
#
failregex = NO7@C>#Z #ZG .egistration from D#ZD failed for DUOO7N!GK0&9LV(B5W)YD & :rong pass1ord
NO7@C>#Z #ZG .egistration from D#ZD failed for DUOO7N!GK0&9LV(B5W)YD & No matc*ing peer found
NO7@C>#Z #ZG .egistration from D#ZD failed for DUOO7N!GK0&9LV(B5W)YD & 6sername/aut* name mismatc*
NO7@C>#Z #ZG .egistration from D#ZD failed for DUOO7N!GK0&9LV(B5W)YD & =evice does not matc* /CL
NO7@C>#Z #ZG .egistration from D#ZD failed for DUOO7N!GK0&9LV(B5W)YD & -eer is not supposed to register
NO7@C>#Z #ZG UOO7N failed to aut*enticate as D#ZDE
NO7@C>#Z #ZG No registration for peer D#ZD a!from UOO7Na)
NO7@C>#Z #ZG Oost UOO7N failed ?=5 aut*entication for D#ZD !#Z)
NO7@C>#Z #ZG 8ailed to aut*enticate user #ZSUOO7N#Z
NO7@C>#Z #ZG ending fa+e aut* re<ection for device #ZSUOO7N#Z
@<?
# OptionG ignoreregex
# Notes#G regex to ignore# @f t*is regex matc*esB t*e line is ignored#
# RaluesG 7>Q7
#
ignoreregex =
!on estas lneas se configura fail:ban para que controle eventuales accesos indeseados que aparecen en
el archivo de registro de %steris&2
(e termina modificando el archivo de configuracin general de fail:ban:
c' @etc@"ai%2(an
nano 5ai%.con"
al final del archivo se aaden las lineas que siguen:
\asterisk.ita(%es]
ena(%e' Q tr$e
"i%ter Q asterisk
action Q ita(%es.a%%orts\na9eQAST-6+SHE rotoco%Qa%%]
sen'9ai%.w2ois\na9eQAST-6+SHE 'estQroot*%oca%2ostE sen'erQ"ai%2(an*(3.'1n'ns.org]
%ogat2 Q @var@%og@asterisk@9essages
9a3retr1 Q L
(anti9e Q 1800
*n la lnea logpath aparece el archivo de registros que fail:ban leer# para averiguar intentos frustrados
de conexin a %steris&2 *n la configuracin hay que modificar la direccin de correo electrnico2 *n
lugar de root_localhost se pone la direccin de correo electrnico donde se quiere recibir las
notificaciones2 *n sender0 en lugar de fail:ban_pbx2dyndns2org se pone fail:ban_nombrededominio
del servidor donde est# instalado %steris&2 8ara enviar los correos0 fail:ban est# configurado con
(endmail2 !on esta configuracin cuando se verifiquen ? ataques del mismo tipo procedentes de la
misma I80 .ail:ban bloquear# el I8 insertando una nueva linea en el archivo de configuracin de
Iptables y la mantendr# bloqueada por 1A>> segundos2
8ara que funcione hay que averiguar que en el archivo de configuracin de %steris&
nano @etc@asterisk@%ogger.con"
en la siguiente linea est5 presente el valor notice Oconfiguracin predefinidaP:
console =" notice04arning0error0debug0dtmf0fax
(e inicia fail:ban:
@etc@init.'@"ai%2(an start
2tartin% fail2'an" 0 <= 4
@<B
+M0O6TA#T-) ca'a vez B$e se reinicie +ta(%esE 2a1 B$e reiniciar ta9(i?n e% servicio 'e
7ai%2<an) service ita(%es restart / service "ai%2(an restart
(e averigua que no haya errores en el log de fail:ban:
tai% ." @var@%og@"ai%2(an.%og
(i se quiere efectuar una prueba se configura en HIlite una extensin que no existe en el sistema y se
intenta registrarla a %steris&:
La I8 de donde se est# intentando registrarse ser# bloqueada2 %ccediendo a la consola del servidor
remoto desde otra direccin I8 con el comando:
ita(%es .=
se ver# la I8 bloqueada:
/esde el log de fail:ban:
(i por error se bloquea la I8 del propio computador0 la Fnica forma de quitar el bloqueo es parar y
reiniciar Iptables o reiniciar el servidor Linux2
21.3 <%oB$ear +0 or aMses
,ormalmente las extensiones configuradas en la centralita son casi siempre de una determinada a5rea
geogr#fica o0 de todas formas0 siempre habr#n pases desde donde no se esperar#n conexiones a la
8BH2 *n estos caso0 para me$orar la seguridad de %steris&0 es posible bloquear todas la I8 de un
@<<
determinado pas y de esta forma evitar que se presenten ataques procedentes del pas mismo2
*ste tipo de solucin se apoya a una base de datos que contiene todas las I8 del mundo0 divididas por
pases0 y HtablesIaddons que contiene una serie de mdulos adicionales para I8tables entre los cuales
se encuentra 5l que permite interactuar con la base de datos2
Los requerimientos para este tipo de instalacin son:
iptables "= 12@23
&ernelIsource "= :2B2:E
8erl
8rimero se instalan algunos paquetes necesarios para la compilacin de HtablesIaddons:
1$9 insta%% 3z ita(%es.'eve% zi $nzi
8ara instalar el paquete perlIDextI!(9CH( se necesita tener los repositorios epel:
c' @$sr@src
r9 .iv2 2tt)@@"t.re'iris.es@9irror@"e'ora.ee%@6@i386@ee%.re%ease.6.J.noarc2.r9
8or defecto se desactiva2 (e activar# solamente cuando se necesiten instalar determinados paquetes:
nano @etc@1$9.reos.'@ee%.reo
se modifica en el primer bloque esta linea:
ena(%e'Q1
para que quede:
ena(%e'Q0
%hora se instala el paquete activando el repositorio:
1$9 ..ena(%ereoQee% insta%% er%.Te3t.CSV;XS
La primera veS que se utiliSa0 aparecerm:
warnin%" r#$ts@drNro$Ndno" @eader P3 123/2@3256 2i%natureD key A? )6)8'8+5" C<=E&
1etrievin% key fro$ file"///etc/#ki/r#$-%#%/1F9-QFQ-=E&-EFE>-6
A$#ortin% QFQ key )B)6)8L8+5"
Eserid " EFE> (6! Se#el-fedora#roGect.or%R
Facka%e" e#el-release-6-,.noarch (installed!
Nro$ " /etc/#ki/r#$-%#%/1F9-QFQ-=E&-EFE>-6
@<A
As this ok 0y/C4" 0
(e continua aceptando la clave del respositorio y luego se descargan las fuentes de HtablesIaddons:
c' @$sr@src
wget 2tt)@@'own%oa's.so$rce"orge.net@ro5ect@3ta(%es.a''ons@Xta(%es.a''ons@1.43@3ta(%es.a''ons.1.43.tar.3z
(e descomprime:
tar .3" 3ta(%es.a''ons.1.43.tar.3z
(e entra en la carpeta creada0 se compila e instala:
c' 3ta(%es.a''ons.1.43
.@con"ig$re ..re"i3Q@$sr
9ake
9ake insta%%
(e entra en la carpeta donde est#n presentes los script que permiten descargar la base de datos de
+eoI8:
c' geoi
(e descarga la base de datos en formato !(9:
.@3t;geoi;'%
/esde la base de datos se crean los archivos de las I8 por pases:
.@3t;geoi;($i%' 4eo+0Co$ntr1D2ois.csv
*l resultado ser# la creacin de dos carpetas que contienen las I8 por pases en el formato que I8tables
puede leer2 (e crea la carpeta predefinida donde I8tables buscar# las I8:
9k'ir . @$sr@s2are@3t;geoi@
y se copian las dos carpetas:
c .r a<-E=-b @$sr@s2are@3t;geoi@
8ara bloquear las direcciones I8 de un determinado pas en I8tables0 la sintaxis es:
.A +#0>T .9 geoi ..src.cc C# .5 ,6O0
!, es la sigla del pas Oen este caso !hinaP
@<E
(e puede hacer una prueba bloqueando todas las I8 de su proprio 8as Oen este caso !olombiaP para el
puerto ?>B>2 (e abre el archivo de configuracin de I8tables:
nano @etc@s1scon"ig@ita(%es
antes de esta linea:
&/ @N-67 &p udp &m udp &&dport 50$0 &< /CC>-7
se pone:
&/ @N-67 &p udp &&dport 50$0 &m geoip &&src&cc CO &< =.O-
(e guardan las modificaciones y se reinicia I8tables:
service ita(%es restart
service "ai%2(an restart
%hora se intenta conectarse a %steris& con las credenciales de unos de los clientes configurados en
%:Billing2 *l registro no funcionar# y en I8tables se ver#0 en la linea que se acaba de crear0 que todos
los paquetes han sidos rechaSados
ita(%es .= .v
(i se quiere invertir la configuracin0 es decir aceptar conexiones solamente desde !olombia0 la linea
cambiara de:
&/ @N-67 &p udp &&dport 50$0 &m geoip &&src&cc CO &< =.O-
a
&/ @N-67 &p udp &&dport 50$0 &m geoip &&src&cc CO &< /CC>-7
!laramente esto si los clientes y los proveedores 9oI8 son solamente de !olombia2 *n el caso que el
proveedor 9oI8 sea de otro pas Oe$emplo *stados -nidosP habra que aadir otra linea despu5s de la de
@A>
!olombia:
&/ @N-67 &p udp &&dport 50$0 &m geoip &&src&cc 6 &< /CC>-7
(i se quiere actualiSar la lista de las I8 de +eoI8 de forma autom#tica cada primer da del mes:
c' @root
nano .(as2;ro"i%e
%l final del archivo se aade:
e3ort -,+TO6Q@$sr@(in@nano
(e guardan los cambios y se recarga la configuracin de la shell bash:
so$rce .(as2;ro"i%e
(e crea el script en bash:
nano @2o9e@geoi.s2
se copian las siguientes lineas:
#M/bin/bas*
/usr/src/xtables&addons&(#;%/geoip/xt5geoip5dl
/usr/src/xtables&addons&(#;%/geoip/xt5geoip5build 3eo@-Countr0:*ois#csv
acp &rf VF>BL>W /usr/s*are/xt5geoip/
/etc/init#d/iptables restart
/etc/init#d/fail"ban restart
(e guardan los cambios y se vuelve e$ecutable el archivo creado:
c29o' N3 @2o9e@geoi.s2
(e configura un cron$ob para que e$ecute el script cada primer da del mes:
cronta( .e
se aade la siguiente linea:
0 0 ( Z Z /*ome/geoip#s*
@A1
(e guardan los cambios2 (i se quiere efectuar una prueba para ver si todo funciona como esperado:
@2o9e@geoi.s2
que terminar# con:
i#ta'les" Nlushin% firewall rules" 0 <= 4
i#ta'les" 2ettin% chains to #olicy 3CCEF(" filter 0 <= 4
i#ta'les" Enloadin% $odules" 0 <= 4
i#ta'les" 3##lyin% firewall rules" 0 <= 4
2to##in% fail2'an" 0 <= 4
2tartin% fail2'an" 0 <= 4
@A:
Cait$%o XX++
Monitorear Asterisk
*n este capitulo se ilustrar# como monitorear %steris& y el servidor Linux a trav5s de dos distintos
programas:
'onit
,agios y el protocolo (,'8
(e ilustrar# tambi5n como monitorear la calidad de las llamadas desde la consola de %steris& y a trav5s
del programa 9oI8monitor y como acceder a todas las estadisticas de las llamadas a trav5s del
programa !/;I(D%D(
22.1 Monit
'onit es un programa Lpen (ource para la gestin y el monitoreo de procesos0 programas0 archivos0
carpetas y particiones de un sistema Linux2 8ermite programar tareas de mantenimiento y de correccin
de errores cuando se verifiquen problemas en el sistema2
(e instala desde las fuentes:
c' @$sr@src
wget 2tt)@@99onit.co9@9onit@'ist@9onit.L.L.tar.gz
tar .3" 9onit.L.L.tar.gz
c' 9onit.L.L
(e compila y se instala:
.@con"ig$re ..re"i3Q@$sr
9ake
9ake insta%%
(e termina la instalacin con la copia y activacin del script de inicio de monit:
c' contri(
c rc.9onit @etc@init.'@9onit
c29o' N3 @etc@init.'@9onit
c2kcon"ig ..a'' 9onit
c2kcon"ig 9onit 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:
4%o(a% SectionU aqu se pone la configuracin general del programa
ServicesU donde se configuran los servicios
+nc%$'es: permite incluir a la configuracin de 'onit otros archivo que contienen a su veS la
configuracin de otros procesos2
nano @etc@9onitrc
set daemon $0
W Indica cada cuantos segundos 'onit controla los servicios Oen este caso cada B>P
1it* start dela0 %0
W %l iniciar el programa el primer ciclo de control se e$ecutar# despu5s de 3> segundos
set logfile /var/log/monit#log
W ,ombre del archivo donde se guardar#n todos los registros de 'onit
set idfile /var/#monit#id
W ,ombre de la carpeta y archivo donde se guardar# el numero del proceso de 'onit
set mailserver local*ost
W nombre del host del servidor de correo electrnico que 'onit utiliSar# para enviar las alertas
set eventHueue basedir /var/monit slots (00
W (i por alguna raSn el servidor de correo electrnico no est5 funcionando se puede indicar a 'onit de
W guardar todas las alerta en una determinada carpeta2 !uando el servidor volver# a funcionar0 todas las
W alertas ser#n enviadas siguiendo el orden cronolgico en que se guardaron
set mail&format V
8romG monitSlibroasteris+#org
ub<ectG monit alerta && E>R>N7 E>.R@C>
?essageG E>R>N7 ervicio E>.R@C>
8ec*aG E=/7>
@A?
/ccionG E/C7@ON
OostG EOO7
=escripcionG E=>C.@-7@ON
7u devoto empleadoB
?onit
W
W !on el bloque de arriba0 se define como tiene que ser enviado el correo electrnico de alerta
set alert adminSgmail#com
W !on esta lnea se define el correo electrnico que recibir# todas las alertas 8ersona%izar:
set *ttpd port "'("
allo1 adminGsesamo
W 'onit viene con un servidor =eb2 *n las dos lineas de arriba se activa en el puerto :A1:
W Oque hay que abrir en el cortafuegosP y se define nombre de usuario y contrasea para ingresar a la
W pagina
W 'onitoreo (ervidor Linux
c*ec+ s0stem cursoasteris+#org
if loadavg !(min) N ; t*en alert
if loadavg !5min) N " t*en alert
if memor0 usage N C5_ t*en alert
if cpu usage !user) N C0_ t*en alert
if cpu usage !s0stem) N %0_ t*en alert
if cpu usage !1ait) N "0_ t*en alert
W 'onitoreo %steris&
c*ec+ process asteris+ 1it* pidfile /var/run/asteris+/asteris+#pid
start program = 4/etc/init#d/asteris+ start4 1it* timeout $0 seconds
stop program = 4/etc/init#d/asteris+ stop4 1it* timeout $0 seconds
if failed *ost ("C#0#0#( port 50%' t*en restart
if 5 restarts 1it*in 5 c0cles t*en timeout
W 'onitoreo Droncal (I8
c*ec+ *ost Pustvoip 1it* address sip#<ustvoip#com
if failed port 50$0 t0pe udp protocol @-
and target usuarioSsip#<ustvoip#com maxfor1ard (0
t*en alert
W 'onitoreo (end'ail
c*ec+ process sendmail 1it* pidfile /var/run/sendmail#pid
group mail
start program = 4/etc/init#d/sendmail start4
stop program = 4/etc/init#d/sendmail stop4
if failed port "5 protocol smtp t*en restart
if 5 restarts 1it*in 5 c0cles t*en timeout
@AB
W 'onitoreo 'y()L
c*ec+ process m0sHl 1it* pidfile /var/run/m0sHld/m0sHld#pid
group database
start program = 4/etc/init#d/m0sHld start4
stop program = 4/etc/init#d/m0sHld stop4
if failed port %%0$ protocol m0sHl t*en restart
if 5 restarts 1it*in 5 c0cles t*en timeout
(e guardan los cambios y se cambian los permisos del archivo de configuracin:
c29o' J00 @etc@9onitrc
(e inicia 'onit:
@etc@init.'@9onit start
*n el cortafuegos0 hay que abrir el puerto :A1: D!8 para tener acceso al servidor =eb interno de
'onit:
nano @etc@s1scon"ig@ita(%es
antes de este bloque:
# =6N=i
&/ @N-67 &p udp &m udp &&dport ;5"0 &< /CC>-7
se aade)
# ?onit
&/ @N-67 &p tcp &m state &&state N>: &m tcp &&dport "'(" &< /CC>-7
(e guardan los cambios y se reinicia iptables y fail:ban:
service ita(%es restart
service "ai%2(an restart
/espu5s de unos minutos se puede acceder a la pagina de administracin de 'onit:
2tt)@@iservi'or)2812
@A<
,ombre de usuario: a'9in
!ontrasea: sesa9o
-na veS entrados en la =eb de 'onit0 el pagina principal aparecer#n todos los procesos/programas
monitoreados:
y en el caso del servidor Linux:
@AA
!ualquier problema se presente con el servidor y/o con los procesos/programas configurados0 se
recibir# una notificacin al correo electrnico configurado2
22.2 S#M0
-na definicin del protocolo (,'8 tomada de =i&ipedia: M*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 red2 *s parte de la familia de protocolos D!8/I82 (,'8 permite a
los administradores supervisar el funcionamiento de la red0 buscar y resolver sus problemas0 y planear
su crecimiento2N /e hecho a trav5s de este protocolo se monitorean servidores0 router0 s4itch y casi
cualquier tipo de dispositivo conectado a la red Olocal o remotaP2 %steris& implementa el protocolo
(,'8 y0 a trav5s de ese protocolo0 es posible monitorear muchos par#metros de la 8BH2
8ara empeSar se averigua si el modulo resCsnmp est# instalado y cargado en %steris&:
asterisk .rvvvvvvvvvvvvvvv
!LI" 9o'$%e s2ow %ike sn9
(ignifica que el modulo est# instalado2
(e sale de la consola de %steris&:
@AE
!LI" B$it
(e configura el modulo:
9v @etc@asterisk@res;sn9.con" @etc@asterisk@res;sn9.con".o%'
nano @etc@asterisk@res;sn9.con"
(e aaden las siguientes lineas:
KgeneralL
subagent = 0es
enabled = 0es
(e guardan los cambios y se descargan los LI/ de %steris& en la carpeta de (,'82 -n LI/
Oidentificador de ob$etoP es una cadena alfanum5rica que se utiliSa para identificar de forma Fnica un
ob$eto que en el caso del protocolo (,'8 representa un determinado par#metro del dispositivo que se
quiere monitorear2 *$emplo: se puede conocer el numero de llamadas totales cursadas por la centralita
desde su ultimo arranque2
c' @$sr@s2are@sn9@9i(s
wget 2tt)@@www.voztovoice.org@t9@asterisk.9i(.t3t
wget 2tt)@@www.voztovoice.org@t9@'igi$9.9i(.t3t
%hora se configura (,'8 de modo que pueda interactuar con %steris&:
c' @etc@sn9
(e renombra el archivo de configuracin predefinido:
9v sn9'.con" sn9'.con".o%'
y se crea uno nuevo:
nano sn9'.con"
donde se ponen las siguientes lneas:
master agentx
agentQ-erms 0$$0 0550 root root
com"sec local local*ost public
com"sec remote QQQ#QQQ#QQQ#QQQ public
group asteris+ v( local
group asteris+ v"c local
@E>
group Net:or+ v( remote
group Net:or+ v"c remote
vie1 all included #(
access asteris+ 44 an0 noaut* exact all none none
access Net:or+ 44 an0 noaut* exact all none none
-na explicacin2 8rimero se define el agente y los permisos de acceso2 Luego se definen dos
comunidades2 -na tiene acceso local y otra remoto OFtil si se quiere efectuar consultas desde otro
servidorP2 6ay que sustituir HHH2HHH2HHH2HHH con la I8 del servidor remoto2 Luego se definen dos
grupos y que tipo de consultas pueden realiSar Oen este caso (,'8 versin 1 y versin :c2 (e define el
tipo de ob$etos que pueden consultar Oen este caso todosP y los permisos que cada grupo tiene2
(e guardan los cambios y se reinicia %steris&:
@etc@init.'@asterisk restart
se inicia snmp:
@etc@init.'@sn9' start
se vuelve el arranque autom#tico:
c2kcon"ig sn9' on
8ara ver los resultados con la descripcin de los LI/ en lugar de los nFmeros de los ob$etos:
e3ort M+<SQa%%
%hora ya se puede efecutar una consulta utiliSando el LI/ raS de %steris&:
sn9wa%k .OT .c $(%ic .v 2c %oca%2ost .1.3.6.1.4.1.22J36
/e todas las lineas que aparecen0 las que interesan son estas tres:
%(D*;I(TI'IB::ast!hanDype,ame21: = (D;I,+: /%6/I
%(D*;I(TI'IB::ast!hanDype,ame2< = (D;I,+: I%H:
%(D*;I(TI'IB::ast!hanDype,ame2B = (D;I,+: (I8
(e anotan los valores que aparecen en negrita y el tipo de canal asociado0 es decir:
,AC,+ 12
+AX2 J
S+0 6
@E1
(e pasa a la instalacin y configuracin de ,agios2
22.3 #agios
8ara la instalacin de ,agios se utiliSa el repositorio *pel2 8ara ver los paquetes disponibles:
1$9 ..ena(%ereoQee% searc2 nagios
(e instalan los siguientes paquetes Oel programa0 los plugins0 una utilidad para guardar los registros de
,agios en una base de datos0 unas libreras en 8erl para utiliSar el protocolo H'880 una aplicacin para
el envo de los correo electrnicos desde ,agios utiliSando una linea de comandoP:
1$9 ..ena(%ereoQee% insta%% nagios nagios.%$gins.a%% er%.#et.Ya((er O
er%.+O.Socket.SS= n'o$ti%s 9ai%3 n'o$ti%s.91sB%
!entL( se har# cargo de instalar tambi5n todas las dependencias necesarias2 (e crear# el grupo y
usuario ,agios0 unas carpetas donde se guardar#n los registros y los archivo necesarios para que
,agios funcione0 un archivo para la integracin con el servidor =eb OapacheP2 -na veS terminada la
instalacin0 se empieSa con la configuracin de ,agios2
*l archivo principal donde se definen los par#metros para el programa es nagios2cfg y se encuentra en
la carpeta /etc/nagios2
8ara este tipo de instalacin no hace falta realiSar algFn tipo de modifica es ese archivo2
Los archivos de configuracin de ,agios que hay que modificar son los siguientes y se encuentran en
la carpeta /etc/nagios/ob$ects:
commands2cfg
localhost2cfg
contact2cfg
template2cfg
(e inicia con contact2cfg:
nano @etc@nagios@o(5ects@contacts.c"g
*n este archivo se cambian estas lneas:
define contactV
contact5name nagiosadmin
use generic&contact
alias Nagios /dmin
email nagiosSlocal*ost
@E:
W
para que queden:
define contactV
contact5name nagiosadmin
use generic&contact
alias Nagios /dministrador
email fulanoSgmail#com
address( fulano
W
fulano_gmai2com es la direccin de correo electrnico donde ,agios enviar# las notificaciones
OpersonaliSarP2 %ddress1 es el usuario +oogleDal& donde ,agios enviar# las notificaciones va mensa$e
instant#neo2 ,agiosadmin es el nombre del administrador predefinido en ,agios2 !ada veS que aparece
una lnea que empieSa con MuseN0 hace referencia a un template definido en el archivo templates2cfg2
(e guardan los cambios y se abre el archivo templates2cfg2 *n este archivo el bloque del genericI
contact es:
nano @etc@nagios@o(5ects@te9%ates.c"g
define contactU
na$e genericIcontact
servicenotification#eriod 2*B,
hostnotification#eriod 2*B,
servicenotificationo#tions wDuDcDrDfDs
hostnotificationo#tions dDuDrDfDs
servicenotificationco$$ands notify-service-'y-e$ailDnotif0&service&<abber
hostnotificationco$$ands notify-host-'y-e$ailDnotif0&*ost&<abber
re%ister )
V
*n este bloque se aaden las dos partes en negrita2 *sto para enviar las notificaciones tambi5n va
+oogleDal&2
6ay una explicacin de estos par#metros en la documentacin oficial de ,agios 32>
*n el servidor hay servicios que no son crticos y que se pueden monitorear cada ? minutos Oel tiempo
predefinido en ,agiosP2 8ara %steris&0 a veces0 estos cinco minutos pueden ser demasiados2 8or eso al
final del archivo se aade el siguiente bloque que define que para todos los servicios de %steris& el
control se efectuar# cada : minutos Ose puede personaliSarP:
define serviceV
name asteris+
use generic&service
max5c*ec+5attempts ;
@E3
normal5c*ec+5interval "
retr05c*ec+5interval (
register 0
W
%hora se modifica el tercer archivo Ocommands2cfgP donde se definen los comandos que luego se
utiliSar#n para la configuracin del monitoreo del servidor local2 Los plugins de ,agios se instalan
en /usr/lib/nagios/plugins2 8ara monitorear %steris&0 se usar# el plugin chec&Csnmp y otro que se
descargar#2 8ara monitorear las troncales0 se descargar# un plugin del repositorio de ,agios y por
ultimo0 para enviar las notificaciones via +oogleDal& se descargar# otro plugin2
(e entra en la carpeta /usr/lib/nagios/plugins y se descargan los plugin que hacen falta:
c' @$sr@%i(@nagios@%$gins
wget 2tt)@@www.voztovoice.org@ca9$s@a2(@c2eck;asterisk;eers
wget 2tt)@@www.voztovoice.org@ca9$s@a2(@noti"1;via;5a((er.%
wget 2tt)@@www.voztovoice.org@ca9$s@a2(@c2eck;asterisk.%
(e cambian los permisos para que se pueda e$ecutar:
c29o' N3 c2eck;asterisk;eers
c29o' N3 noti"1;via;5a((er.%
c29o' N3 c2eck;asterisk.%
,otifyCviaC$abber2pl es el Fnico que tiene que ser modificado2 (e abre:
nano noti"1;via;5a((er.%
se modifican estas dos lineas:
m0 Eusername = 4usuario3oogle7al+4J
m0 Epass1ord = 4pass1ord4J
para que queden:
m0 Eusername = 4sutano4J
m0 Epass1ord = 4pass1ord4J
sutano es el usuario googletal& y pass4ord su contrasea Ono hace falta poner _gmail2comP2
-na par5ntesis2 *l plugin funciona de la siguiente manera2 *n este archivo se configura el usuario de
+oogleDal& que enviar# las notificaciones2 *l usuario configurado en el contact2cfg serm 5l que las
recibe siempre y cuando aadir# el usuario configurado en el plugin en su lista de amigos2 *sto quiere
decir que para que el sistema funcione se necesita tener dos cuentas de +oogleDal&2
8ara conocer la sintaxis de un plugin de ,agios el comando es:
@E@
c' @$sr@%i(@nagios@%$gins
.@c2eck;sn9 .2
8ara aadir los comandos en ,agios se modifica el archivo commands2cfg
nano @etc@nagios@o(5ects@co99an's.c"g
8rimero se configura el comando para enviar las notificaciones va mensa$e instant#neo2 *sto se hace
para los servidores Oen este caso unoP y los servicios2 /espu5s del bloque notifyIserviceIbyIemail se
aade:
# D*ost&notif0&b0&<abberD command definition
define commandV
command5name notif0&*ost&<abber
command5line /usr/lib/nagios/plugins/notif05via5<abber#pl ECON7/C7/==.>(E
4Oost DEOO7/L@/ED is EOO77/7>E & @nfoG EOO7O67-67E4
W
# Dservice&notif0&b0&<abberD command definition
define command V
command5name notif0&service&<abber
command5line /usr/lib/nagios/plugins/notif05via5<abber#pl ECON7/C7/==.>(E
4ENO7@8@C/7@ON72->E EOO7N/?>E E>.R@C>=>CE E>.R@C>7/7>E
E>.R@C>O67-67E ELON3=/7>7@?>E4
W
+M0O6TA#T-) to'o %o B$e aarece en %a %inea co99an'.%ine 'e(e estar en %a 9is9a
%inea
(e continua con el plugin chec&Csnmp para monitorear %steris& a trav5s del protocolo (',82 (e
buscan estas lineas:
d Uc2eck;sn9U co99an' 'e"inition
'e"ine co99an'a
co99an';na9e c2eck;sn9
co99an';%ine `>S-61`@c2eck;sn9 .C `COSTA,,6-SS` `A641`
b
y se modifican para que queden:
'e"ine co99an'a
co99an';na9e c2eck;sn9
co99an';%ine `>S-61`@c2eck;sn9 .C `COSTA,,6-SS` .C $(%ic .o `A641` .0 2c .%
`A642` .w `A643` .c `A644`
@E?
b
+M0O6TA#T-) to'o %o B$e aarece en %a %inea co99an'.%ine 'e(e estar en %a 9is9a
%inea
Co99an' na9e) nombre del comando
Co99an' %ine: los par#metros que se pasar#n al comando:
La macro OvariableP e-(*;1e contiene el valor /usr/lib/nagios/plugins como especificado en el
archivo /etc/nagios/resource2cfg
chec&Csnmp G ,ombre del plugin
I6 e6L(D%//;*((e G la opcin G6 define el servidor que se va a consultar y
e6L(D%//;*((e es una macro OvariableP predefinida que contiene el nombre del servidor
como se definir# luego en localhost2cfg
I! public G es la comunidad que se va a utiliSar para la conexin al agente como definido en el
archivo /etc/snmp/snmp2conf
Io G la LI/ que se consultar#
I8 :c G versin de (,'8 utiliSada para la consulta
Il la etiqueta que luego se definir#
I4 G est# por =arning
Ic G est# por !ritical
e%;+1e e%;+:e e%;+3e %;+@e son las macros OvariablesP cuyo valor ser# asignado desde
la configuracin de localhost2cfg
%l verificarse el evento =arning y/o !ritical0 ,agios enviar# una notificacin por correo electrnico y
va mensa$e instant#neo2
*l segundo plugin se define de la siguiente forma Oaadir las lineas despu5s del bloque anteriorP:
define commandV
command5name c*ec+5asteris+
command5line E6>.(E/c*ec+5asteris+#pl &* EOO7/==.>E &m mgr &u nagios &p sesamo
W
nagios y sesamo indican respectivamente el usuario y la contrasea para conectarse al %'I de %steris&2
8ara definirlos0 luego hay que modificar el manager2conf de %steris&:
!omo el servidor ((6 est# escuchando en el puerto 1?>>>0 se busca este bloque:
# Dc*ec+5ss*D command definition
define commandV
command5name c*ec+5ss*
command5line E6>.(E/c*ec+5ss* E/.3(E EOO7/==.>E
W
y se modifica para que quede:
@EB
# Dc*ec+5ss*D command definition
define commandV
command5name c*ec+5ss*
command5line E6>.(E/c*ec+5ss* &p E/.3(E EOO7/==.>E
W
*l ultimo plugin que se define en el archivo command2cfg0 es el que permite monitorear las troncales:
define commandV
command5name c*ec+5<ustvoip
command5line sudo /usr/lib/nagios/plugins/c*ec+5asteris+5peers &t sip &p E/.3(E
W
(e guardan los cambios2
!omo se puede ver este plugin se activa con el programa sudo que permite e$ecutar un comando con
los permisos del usuario root2 *sto porque el programa ,agios se inicia con usuario nagios y ese
usuario no tiene los permisos para e$ecutar el plugin2 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 root:
vis$'o
primero se modifica esta linea:
=efaults reHuirett0
para que quede:
# =efaults reHuirett0
luego se aade al final del archivo:
nagios /LL=!/LL) NO-/:=G /usr/lib/nagios/plugins/c*ec+5asteris+5peers
(e guardan los cambios2
!omo se haba dicho el plugin chec&Casteris&2pl funciona conect#ndose a la %'I de %steris&2 8ara que
funcione hay que modifica el archivo manager2conf de %steris&:
nano @etc@asterisk@9anager.con"
%l final del archivo se aade:
KnagiosL
secret = sesamo
den0=0#0#0#0/0#0#0#0
@E<
permit=("C#0#0#(/"55#"55#"55#"55
read=s0stemBcallBagentBuserBdtmfBreportingBcdrBdialplanBagiBcc
1rite=s0stemBcallBagentBuserBconfigBcommandBreportingBotiginateBagi
(e guardan los cambios y se actualiSa la configuracin de %steris&:
@etc@init.'@asterisk re%oa'
8ara terminar la configuracin de ,agios se modifica el archivo localhost2cfg donde se realiSar# la
configuracin del monitoreo del servidor Linux2 (e mueve el predefinido:
9v @etc@nagios@o(5ects@%oca%2ost.c"g @etc@nagios@o(5ects@%oca%2ost.c"g.o%'
se crea uno nuevo:
nano @etc@nagios@o(5ects@%oca%2ost.c"g
(e aaden las siguientes lineas:
define *ostV
use linux&server
*ost5name Libro/steris+
alias Libro/steris+
address ("C#0#0#(
W
define serviceV
use asteris+
*ost5name Libro/steris+
service5description @-
c*ec+5command c*ec+5snmpM/7>.@I&?@FGGastC*an70peC*annels#$M4Canales @- /ctivos4M'M($
W
(i los canales (I8 activos son m#s de A se recibir# un =%;,I,+0 si son mas de 1B un !;IDI!%L2 (e
continua copiando las lineas que siguen:
define serviceV
use asteris+
*ost5name Libro/steris+
service5description @/Q"
c*ec+5command c*ec+5snmpM/7>.@I&?@FGGastC*an70peC*annels#CM4Canales @/Q" /ctivos4M;M'
W
define serviceV
use asteris+
*ost5name Libro/steris+
@EA
service5description =/O=@
c*ec+5command c*ec+5snmpM/7>.@I&?@FGGastC*an70peC*annels#("M4Canales =/O=@ /ctivos4M;M'
W
define serviceV
use asteris+
*ost5name Libro/steris+
service5description /steris+5c*ec+
c*ec+5command c*ec+5asteris+
W
define serviceV
use asteris+
*ost5name Libro/steris+
service5description 7roncal5Pustvoip
c*ec+5command c*ec+5<ustvoipM<ustvoip
W
-na pequea explicacin2 *n el primer bloque se define el nombre del servidor0 un alias y la direccin
I8 Oen este caso siendo ,agios y %steris& instalados en el mismo servidor se indica 1:<2>2>21 o
localhostP2
*n los tres bloques que siguen se controla a trav5s del plugin chec&Csnmp0 los canales (I80 I%H: y
/%6/I activos2 (e asignan a las cuatros macros OvariablesP0 que se han visto al momento de la
configuracin del comando Oe%;+1e e%;+:e e%;+3e %;+@eP0 los respectivos valores separados
por el caracter [ Las LI/ se toman interrogando %steris& con (,'8 como hemos visto en el p#rrafo
anterior2
*n el bloque que sigue se utiliSa el plugin chec&Casteris&2pl y a trav5s del %'I de %steris& se controla
que est5 corriendo2
*l ultimo bloque se utiliSan para monitorear la troncal (I8 Kustvoip2 *n la segunda linea de cada bloque
aparece el par#metro Muse asteris&N que representa el template Ola plantillaP configurada en
templates2cfg que se utiliSa para estos comandos2
(i se quiere controlar tambi5n algunos servicios b#sicos del servidor Ousuarios0 procesos0 carga0 etc7P0
se aaden estas lneas:
define serviceV
use local&service
*ost5name Libro/steris+
service5description -@N3
c*ec+5command c*ec+5pingM(00#0B"0_M500#0B$0_
W
define serviceV
use local&service
@EE
*ost5name Libro/steris+
service5description Current 6sers
c*ec+5command c*ec+5local5usersM"0M50
W
define serviceV
use local&service
*ost5name Libro/steris+
service5description 7otal -rocesses
c*ec+5command c*ec+5local5procsM"50M;00M.b=7
W
define serviceV
use local&service
*ost5name Libro/steris+
service5description Current Load
c*ec+5command c*ec+5local5loadM5#0B;#0B%#0M(0#0B$#0B;#0
W
define serviceV
use local&service
*ost5name Libro/steris+
service5description O
c*ec+5command c*ec+5ss*M(5000
W
%ntes de iniciar ,agios hay una forma para controlar que todos los archivos de configuracin est5n
exentes de errores:
nagios .v @etc@nagios@nagios.c"g
(i la respuesta termina con:
(otal Jarnin%s" )
(otal Errors" )
(hin%s look okay - Co serious #ro'le$s were detected durin% the #re-fli%ht check
(ignifica que la configuracin est# bien2 *n caso contrario ,agios indicar# el archivo y la lnea donde
se encuentra el error2
*l acceso a la pagina =eb de administracin de ,agios est# protegido y para poder acceder hay que
configurar la contrasea del usuario predefinido0 nagiosadmin0 de la siguiente forma:
2tassw' .(c @etc@nagios@assw' nagiosa'9in sesa9o
3ddin% #assword for user na%iosad$in
*ste comando crear# una archivo pass4d que contendr# los datos de acceso para el usuario predefinido
?>>
nagiosadmin Oen este caso la contrasea es sesamoP
(e configuran ,agios para que arranque en autom#tico:
c2kcon"ig nagios on
(e inicia apache y luego se inicia ,agios:
@etc@init.'@2tt' start
@etc@init.'@nagios start
%ntes de entrar a la pagina de administracin de ,agios0 hay que abrir el puerto A> D!8 Oservidor
=*BP en Iptables:
nano @etc@s1scon"ig@ita(%es
%ntes de este bloque:
# ?onit
&/ @N-67 &p tcp &m state &&state N>: &m tcp &&dport "'(" &< /CC>-7
se aade:
# O77-
&/ @N-67 &p tcp &m state &&state N>: &m tcp &&dport '0 &< /CC>-7
(e guardan los cambios y se reinicia Iptables y fail:ban:
service ita(%es restart
service "ai%2(an restart
8ara entrar en la pagina de ,agios:
2tt)@@+0servi'or@nagios
%parecer# una ventana donde habr# que insertar las credenciales de acceso es decir:
usuario: nagiosadmin
contrasea: sesamo
?>1
(e presiona el botn %ceptar2 %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:
?>:
Dodos est#n bien2
22.3.1 #,O$ti%s
8ara utiliSar ,/Lutils para guardar todos los datos de ,agios en una base de datos 'y()L0 lo primero
que hay que hacer es crear la base de datos:
91sB% .$ root .sesa9o
mysql" create 'ata(ase nagiosS
se asigna al usuario nagios los permisos para la base de datos creada:
mysql" 46A#T A== 06+V+=-4-S O# nagios.T TO UnagiosU*U%oca%2ostU +,-#T+7+-, <V
Usesa9oUS
mysql" "%$s2 rivi%egesS
mysql" B$it
(e crean las tablas en la base de datos nagios desde un archivo instalado con el paquete ,/Lutils:
91sB% .$ root .sesa9o nagios [ @$sr@s2are@'oc@n'o$ti%s.91sB%.1.4@'(@91sB%.sB%
%hora falta modificar dos archivos de configuracin: nagios2cfg y ndo:db2cfg2 8rimero se modifica
nagios2cfg
nano @etc@nagios@nagios.c"g
al final del archivo se aaden las siguientes lineas:
event5bro+er5options=&(
bro+er5module=/usr/lib/nagios/bro+ers/ndomod#so config5file=/etc/nagios/ndomod#cfg
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:db2cfg:
nano @etc@nagios@n'o2'(.c"g
/espu5s de estas dos lineas:
ndo"db5user=nagios
ndo"db5group=nagios
?>3
se aade:
loc+5file=/var/log/nagios/ndo"db#loc+
en dbCuser y dbCpass4ord se pone:
db5user=nagios
db5pass=sesamo
se guardan los cambios y se inicia ,/Lutils:
@etc@init.'@n'o2'( start
(e configura para que arranque en autom#tico:
c2kcon"ig n'o2'( on
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:
!on instalado =ebmin se puede controlar que las tablas se han ido llenando de nuevas entradas como0
por e$emplo0 la tabla nagiosCcommands:
?>@
Dodo est# funcionando como debera2 *ncuentran distintos tipos de consultas de las tablas en la
carpeta /usr/share/doc/ndoutilsImysqlI12@/db/queries2
22.3.2 0#04#A4+OS
(eguramente ,agios es un optimo programa para el monitoreo de servidores0 s4itch y dispositivos0
8ero le hace falta algo que la mayora de los programas de monitoreo tienen: los gr#ficos2 8asa suplir
esta falta existe el programa 8,8@,agios2 *n este p#rrafo se ver# como instalarlo y complementarlo
con ,agios2
;equisitos previos:
8erl "= ?2x y los paquetes perlIDimeI6i;es rrdtoolIperl
;;/tool "= 12x0 me$or 12: pero no obligatorio
868 "= ?212B para el frontal 4eb basado en Tohana
,agios "= :2x o Icinga
Tohana necesita que el mdulo de %pache MmodCre4riteN est5 habilitado2
(e instala el paquete perlIDimeI6i;es:
1$9 insta%% er%.Ti9e.Ci6es rr'too%.er% er%.-3t>ti%s.MakeMaker
;;/tool se instala desde las fuentes:
c' @$sr@src
wget 2tt)@@oss.oetiker.c2@rr'too%@$(@rr'too%.1.4.J.tar.gz
tar .3" rr'too%.1.4.J.tar.gz
c' rr'too%.1.4.J
.@con"ig$re ..re"i3Q@$sr
9ake
9ake insta%%
Derminada la instalacin de ;;/Dool ya se puede instalar 8,8@,agios:
c' @$sr@src
wget 2tt)@@'own%oa's.so$rce"orge.net@ro5ect@n4nagios@0#0.0.6@n4nagios.0.6.1R.tar.gz
tar .3" n4nagios.0.6.1R.tar.gz
c' n4nagios.0.6.1R
?>?
.@con"ig$re
%parecer#:
8,8@,agios detectar# de forma autom#tica ;;/Dool y estar# listo para la instalacin2 (e continua
con:
9ake a%%
9ake "$%%insta%%
Derminada la instalacin los pasos a seguir son:
'odificar el templates2cfg de ,agios
'odificar el commands2cfg de ,agios
'odificar la configuracin general de ,agios
'odificar la configuracin del servidor localhost y los servicios monitoreados
;einiciar ,agios
;einiciar el (ervidor =eb
(e inicia modificando el archivo templates2cfg:
nano @etc@nagios@o(5ects@te9%ates.c"g
al final del archivo se aade:
define *ost V
name *ost&pnp
action5url /pnp;nagios/index#p*p/grap*Y*ost=EOO7N/?>E^srv=5OO75
register 0
W
?>B
define service V
name srv&pnp
action5url /pnp;nagios/index#p*p/grap*Y*ost=EOO7N/?>E^srv=E>.R@C>=>CE
register 0
W
(e guardan los cambios y se continua con el archivo commands2cfg
nano @etc@nagios@o(5ects@co99an's.c"g
/espu5s de este bloque de comentario:
dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
d
d SAM0=- 0-67O6MA#C- ,ATA COMMA#,S
d
d T2ese are sa9%e er"or9ance 'ata co99an's t2at can (e $se' to sen' er"or9ance
d 'ata o$t$t to two te3t "i%es 8one "or 2ostsE anot2er "or services:. +" 1o$
d %an on si9%1 writing er"or9ance 'ata o$t to a "i%eE consi'er $sing t2e
d 2ost;er"'ata;"i%e an' service;er"'ata;"i%e otions in t2e 9ain con"ig "i%e.
ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
se borran los dos bloques que siguen y se sustituyen con los siguientes:
define command V
command5name process&service&perfdata
command5line /usr/bin/perl /usr/local/pnp;nagios/libexec/process5perfdata#pl
W
define command V
command5name process&*ost&perfdata
command5line /usr/bin/perl /usr/local/pnp;nagios/libexec/process5perfdata#pl &d OO7->.8=/7/
W
*stos dos comandos son los que se encargan de recolectar los datos para luego crear los gr#ficos2 (e
guardan los cambios y se pasa al archivo nagios2cfg:
nano @etc@nagios@nagios.c"g
(e buscan estas lineas:
process5performance5data=0
#*ost5perfdata5command=process&*ost&perfdata
#service5perfdata5command=process&service&perfdata
y se modifican para que queden:
?><
process5performance5data=(
*ost5perfdata5command=process&*ost&perfdata
service5perfdata5command=process&service&perfdata
%l final del archivo se aade la siguiente linea:
bro+er5module=/usr/local/pnp;nagios/lib/npcdmod#o config5file=/usr/local/pnp;nagios/etc/npcd#cfg
(e guardan los cambios2
*l modulo npcdmod2o es el que se encarga de pasar los datos de ,agios a 8,8@,%+IL(U para activar
el servicio:
c2kcon"ig ..a'' nc'
c2kcon"ig nc' on
(e inicia:
@etc@init.'@nc' start
8ara activar 8,8@,%+IL( para cada host y servicio monitoreado0 se abre el archivo localhost2cfg:
nano @etc@nagios@o(5ects@%oca%2ost.c"g
se modifica el primer bloque:
define *ostV
use linux&server
*ost5name Libro/steris+
alias Libro/steris+
address ("C#0#0#(
W
para que quede:
define *ostV
use linux&serverB*ost&pnp
*ost5name Libro/steris+
alias Libro/steris+
address ("C#0#0#(
W
8ara los dem#s bloques al final de la linea $se se aade una coma y srvIpnp2 *$emplo:
define serviceV
use asteris+Bsrv&pnp
*ost5name Libro/steris+
?>A
service5description @-
c*ec+5command c*ec+5snmpM/7>.@I&?@FGGastC*an70peC*annels#$M4Canales @- /ctivos4M
'M($
W
-na veS modificado todo el archivo0 se guardan los cambios y se reinicia ,agios:
service nagios restart
%ntes de reiniciar el servidor 4eb0 se modifica el archivo de configuracin de 8,8@,%+IL( para el
servidor 4eb:
nano @etc@2tt'@con".'@n4nagios.con"
(e cambia esta linea:
A$t2>ser7i%e @$sr@%oca%@nagios@etc@2tassw'.$sers
para que quede:
A$t2>ser7i%e @etc@nagios@assw'
(e guardan los cambios y se reinicia el servidor 4eb:
service 2tt' restart
(i se vuelve a entrar en la pagina de administracin de ,agios:
% lado de cada servicio aparecer# un icono de un gr#fico2 (i se presiona el icono de la linea 8I,+ se
abrir# otra pestaa en el navegador donde 8,8@,%+IL( averiguar# que la configuracin est5 sin
errores2 (i todo est# bien0 al final de la pagina aparecer#:
?>E
!omo indicado se borra el archivo:
r9 @$sr@%oca%@n4nagios@s2are@insta%%.2
(e recarga la pagina:
(e ver# el gr#fico del servicio 8I,+2 !omo el servicio se controla cada ? minutos0 habr# que esperar un
poco para ver los datos en el gr#fico2 (i se quiere personaliSar la configuracin de 8,8@,agios hay que
modificar el siguiente archivo:
nano @$sr@%oca%@n4nagios@etc@con"ig.2
22.4 Monitoreo ca%i'a' %%a9a'as
!omo se ha dicho al inicio de este capitulo0 es posible monitorear la calidad de las llamadas de distintas
formas2 La primera es desde la consola de %steris&:
22.4.1 Monitoreo ca%i'a' %%a9a'as 'es'e %a conso%a 'e Asterisk
(e entra en la consola de %steris&:
asterisk .rvvvvvvvvvvvvvvvvvv
(i activan las estadsticas del protocolo ;D!8 O;eal Dime !ontrol 8rotocolP definido en el ;.!3??>2
!LI" rtc set 'e($g on
1(CF ?e'u%%in% Ena'led
?1>
8ara ver como funciona0 desde la extensin 1>>> se llama la extensin 1>>:2 (e contesta la llamada2 *n
la consola de %steris& empeSar#n a aparecer todas una serie de bloques relacionados con el flu$o media2
*n estos bloques es posible identificar si hay perdida de paquetes y el tiempo de latencia entre los dos
dispositivos involucrados en la llamada2
Ltra forma de hacerlo es con el comando:
!LI" si s2ow c2anne%stats
para verlo en accin0 se vuelve a marcar desde la extensin 1>>> la extensin 1>>12 !uando las dos
extensiones est#n hablando0 se vuelve a e$ecutar el comando:
!LI" si s2ow c2anne%stats
*n las lineas aparecen todos los datos relacionados con las llamadas corrientes Oen este caso unaP:
8eer: la I8 de las extensiones
!all I/: el identificador Fnico 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 las extensiones a %steris&
\: porcenta$e de paquetes perdidos
Kitter : Kitter entre las extensiones y %steris&
(end: 8ac&: paquete enviados por %steris&
Lost: paquetes perdidos de %steris& a las extensiones
\: 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 1\0 la calidad de la llamada es muy
buena2 *ntre el 1 y el ?\0 aceptable2
22.4.2 Monitoreo ca%i'a' %%a9a'as con Vo+0Monitor
9oI8monitor es un programa que permite guardar todos los datos relacionados con la calidad de las
llamadas en una base de datos2 /e este programa existen dos versiones2 -na Lpen (ource sin la +-I
para ver la estadsticas desde un navegador =eb0 una comercial que incluye la +-I2
*l programa analiSa y captura todos los paquetes (I8 OsealiSacinP y ;D8 Oflu$o mediaP2 /e cada
llamada0 para ambos canales0 guarda los siguientes datos:
?11
.echa de la llamada
/uracin
!allerI/ llamante
!allerI/ llamado
)uien de los dos canales ha colgado
!odec Llamante
!odec Llamado
8aquetes recibidos0 enviados0 perdidos
Kitter canal llamante
Kitter canal llamado
Kitter promedio de la llamada
'L( O'ean Lpinion (coreP llamante
'L( O'ean Lpinion (coreP llamado
8re requisitos para la compilacin e instalacin:
una versin de Libpcap "= 12>
Librera 'y()Lhh
8rimero se averigua la versin de libpcap instalada:
1$9 in"o %i(ca
!omo el numero de versin es 10 se puede continuar con 'y()Lhh:
c' @$sr@src
wget 2tt)@@tangentso"t.net@91sB%NN@re%eases@91sB%NN.3.1.0.tar.gz
tar .3" 91sB%NN.3.1.0.tar.gz
c' 91sB%NN.3.1.0
.@con"ig$re ..re"i3Q@$sr
9ake
(i a lo largo del ma&e sale este error:
$ake" 666 0ssMlsBlat%env2.o4 Error 1
(e modifica el archivo genv:2cpp:
?1:
nano ss3@genv2.c
%adiendo antes de esta linea:
#include 4genv"#*4
esta linea:
#include Ustring#*N
(e guardan los cambio y se e$ecuta nuevamente el ma&e:
9ake
(i todo sale bien0 se instala:
9ake insta%%
Instalados los pre requisitos ya se puede compilar e instalar 9oI8'onitor2 8rimero se descarga:
c' @$sr@src
svn co 2tts)@@voi9onitor.svn.so$rce"orge.net@svnroot@voi9onitor@tr$nk voi9onitor.svn
(e entra en la carpeta creada:
c' voi9onitor.svn
(e crea un enlace simbolico al archivo pcap2h:
%n .s @$sr@inc%$'e@ca@ca.2 @$sr@inc%$'e@ca.2
(e compila y se instala:
.@con"ig$re ..re"i3Q@$sr
9ake
9ake insta%%
(e crea la carpeta donde se guardar#n todos los datos de las llamadas Oarchivo pcap0 archivo audio de la
llamada si se utiliSa el codec audio +<11P:
9k'ir @var@soo%@voi9onitor
(e crea la base de datos donde se guardar#n los datos de las llamadas:
91sB% .$ root .sesa9o
?13
mysql" create 'ata(ase voi9onitorS
mysql" 46A#T A== 06+V+=-4-S O# voi9onitor.T to Uvoi$serU*U%oca%2ostU +,-#T+7+-,
<V Usesa9oUS
mysql" "%$s2 rivi%egesS
mysql" B$it
(e cargan las tablas en la base de datos:
91sB% .$ root .sesa9o voi9onitor [ c'rta(%e.sB%
(e crea un archivo de configuracin para el programa:
nano @etc@voi9onitor.con"
(e copian las lineas que siguen:
\genera%]
W inicia la parte general de la configuracin
inter"aceQan1
W el programa se pondr# a la escucha en todas las tar$etas de red presentes en el servidor
9anagerortQL02R
W puerto D!8 para gestionar el programa
siortQL060
siortQL061
W puertos (I8 donde voipmonitor se pondr# a la escucha2 (e indica uno por linea
d ring($""erQ10
W 8ar#metro valido solamente para versiones del Ternel "= :2B231
5itter($""er;"1Q1es
5itter($""er;"2Q1es
5itter($""er;a'atQ1es
W tipos de $itterbuffer utiliSados para el calculo del 'L(
rt."irst%egQno
W se capturar# el flu$o media de ambos canales
si.registerQno
W no se guardar#n en la captura (I80 los mensa$es de ;*+I(D*;
noc'rQno
W 9oI8'onitos guardar# los !/; de las llamadas
savesiQ1es
W 9oI8'onitos guardar# los datos (I8 en un archivo
savertQ1es
W9oI8'onitor guardar# los paquetes ;D8 en un archivo
savegra2Q%ain
W (e guardar#n los datos de los graficos en un archivo Oen el caso se utilice la +-IP
?1@
soo%'irQ@var@soo%@voi9onitor
W !arpeta donde se guardar#n los datos de las llamadas
91sB%2ostQ%oca%2ost
W direccin I8 o nombre de dominio del servidor 'y()L
91sB%'(Qvoi9onitor
W ,ombre de la base de datos
91sB%ta(%eQc'r
W ,ombre de la tabla
91sB%$serna9eQvoi$ser
W ,ombre del usuario 'y()L con los permisos para la base de datos
91sB%asswor'Qsesa9o
W 8ass4ord del usuario voipuser
(e guardan los cambios y se instala lo script para iniciar el servicio en autom#tico:
c con"ig@init.'@voi9onitor @etc@init.'@
c29o' N3 @etc@init.'@voi9onitor
c2kcon"ig ..a'' voi9onitor
c2kcon"ig voi9onitor on
(e inicia el servicio:
service voi9onitor start
e se efectFa una llamada desde la extensin 1>>> a la extensin 1>>12 Derminada la llamada se mira las
entradas en la base de datos voipmonitor0 tabla cdr Oser#n dosP2
22.L C,6.STATS
*l programa !/;I(D%D( permite analiSar todas las entradas presentes en la tabla !/; O!all /etail
;ecordsP0 que se ha creado en el p#rrafo 12< de este libro0 y con los datos presentes crear reportes
?1?
gr#ficos muy detallados2 Implementa tambi5n un sistema de an#lisis de las llamadas que permite crear
alarmas con relativas notificaciones en el caso el sistema detecte trafico anmalo hacia determinadas
destinaciones2
La instalacin se basa en un script que se hace cargo de instalar todos los paquetes y dependencias
necesarias para la instalacin y configuracin del programa2 8ara empeSar0 se descarga el archivo:
c' @$sr@src
wget /no.c2eck.certi"icate 2tts)@@raw.git2$(.co9@Star2<i%%ing@c'r.stats@9aster@insta%%@insta%%.
c'r.stats.asterisk.s2 .O insta%%.c'r.stats.asterisk.s2
(e vuelve e$ecutable:
c29o' N3 insta%%.c'r.stats.asterisk.s2
y se inicia:
.@insta%%.c'r.stats.asterisk.s2
(e presiona la tecla *nter/*nvo2 %parecer#:
(his scri#t is only intended to run on E'untu >(2 1).)* / 12.)* or Cent<2 6.2/6.3
!omo la versin instalada de !entL( es la B2@ hay que efectuar las siguientes modificaciones:
nano insta%%.c'r.stats.asterisk.s2
(e eliminan estas dos lineas:
1get &&no&c*ec+&certificate *ttpsG//ra1#git*ub#com/tar"Filling/cdr&stats/EF./NCO/install/bas*&
common&functions#s* &O bas*&common&functions#s*
1get &&no&c*ec+&certificate *ttpsG//ra1#git*ub#com/tar"Filling/cdr&stats/EF./NCO/install/cdr&
stats&functions#s* &O cdr&stats&functions#s*
(e guardan los cambios y se pasa al siguiente archivo:
nano (as2.co99on."$nctions.s2
(e modifica esta linea:
if K 4E!a1+ DVprint E%WD /etc/red*at&release)4 M= 4$#"4 L ^^ K 4E!a1+ DVprint E%WD /etc/red*at&
release)4 M= 4$#%4 L J t*en
?1B
para que quede:
if K 4E!a1+ DVprint E%WD /etc/red*at&release)4 M= 4$#%4 L ^^ K 4E!a1+ DVprint E%WD /etc/red*at&
release)4 M= 4$#;4 L J t*en
(e guardan los cambios y se e$ecuta nuevamente el script de instalacin:
.@insta%%.c'r.stats.asterisk.s2
(e presiona la tecla *nter/*nvo2 %parecer#:
(e escribe Q*( y se presiona la tecla *nter:
(e escribe 1 OInstalla %llP y se presiona la tecla *nter2 *mpeSar# la instalacin del programa y de todas
las dependencias:
(e presiona la tecla *nter:
?1<
!uando el programa de instalacin lo solicite0 se ingresan todos los datos de configuracin de la base
de datos donde se ha creado la tabla !/; Oasteris&cdrP y se continua presionando la tecla *nter:
!uando el programa de instalacin lo solicite0 se escoge un nombre de usuario0 un correo electrnico y
una contrasea para acceder a la pagina de administracin de !/;I(D%D(:
Derminada la instalacin aparecer# la imagen de arriba indicando que el proceso ha tenido 5xito2 (e
presiona la tecla *nter:
?1A
cuando se vuelve a este menF se digita > y la tecla *nter2 (e volver# al prompt de la consola de Linux2
!omo hay que personaliSar la configuracin0 se para el proceso de cdrIstats:
@etc@init.'@c'r.stats.ce%er1' sto
y se abre el archivo de configuracin:
nano @$sr@s2are@c'r;stats@settings;%oca%.1
se modifica esta linea:
7@?>5bON> = D>tc/67CD
para que quede Opara !olombiaP:
7@?>5bON> = D/merica/FogotaD
se continua con este bloque:
=>8/6L758.O?5>?/@L = DC=.&tats Ucdr&statsSmiodominio#orgND
>?/@L5F/CI>N= = Dd<ango#core#mail#bac+ends#smtp#>mailFac+endD
>?/@L56>57L = 7rue
>?/@L5OO7 = Dsmtp#gmail#comD
>?/@L5-O.7 = 5'C
>?/@L5OO756>. = DfulanoSgmail#comD
>?/@L5OO75-/:O.= = Dpass1ordD
>?/@L56FP>C75-.>8@Q = DKC=.&tatsL D
(e personaliSan los datos con su nombre de dominio0 cuenta +mail y contrasea de la cuenta2 (e
modifica:
LOC/L5=@/LCO=> = (
!on el prefi$o de su pas:
LOC/L5=@/LCO=> = 5C
?1E
*n:
-.>8@Q57O5@3NO.> = 4XB0B00B000B0000B00000B0((B55555B999994
(i es el caso se aaden los prefi$os que se utiliSa para sacar las llamadas con los distintos proveedores
9oI8:
-.>8@Q57O5@3NO.> = 4XB0B00B000B0000B00000B0000(B0((B55555B999994
(e modifica la linea:
LOC/L5:@7CO5@- = D@-ervidorD
8ara que quede:
LOC/L5:@7CO5@- = Dlocal*ostD
*stas tres lineas:
/7>.@I5?/N/3>.5OO7 = Dlocal*ostD
/7>.@I5?/N/3>.56>. = Dcdrstats5userD
/7>.@I5?/N/3>.5>C.>7 = Dcdrstats5secretD
8ermiten a !/;I(D%D( de conectaste a la %'I de %steris& con nombre de usuario y contrasea que
aparecen respectivamente en la segunda y tercera linea2 (e guardan las modificaciones y se modifica el
archivo manager2conf de %steris&:
nano @etc@asterisk@9anager.con"
y al final se aade el siguiente bloques:
Kcdrstats5userL
secret=cdrstats5secret
den0=0#0#0#0/0#0#0#0
permit=("C#0#0#(/"55#"55#"55#"55
read = s0stemBcallBlogBverboseBagentBuserBconfigBdtmfBreportingBcdrBdialplan
1rite = s0stemBcallBagentBuserBconfigBcommandBreportingBoriginate
(e guardan los cambios y se recarga la configuracin de %steris&:
service asterisk re%oa'
%hora se puede iniciar nuevamente el programa:
@etc@init.'@c'r.stats.ce%er1' start
%ntes de acceder a la pagina de administracin de !/;I(D%D( hay que abrir los puertos A>>A y E>>>
?:>
tcp en el .ire4all:
nano @etc@s1scon"ig@ita(%es
despu5s de esta linea:
&/ @N-67 &p tcp &m state &&state N>: &m tcp &&dport '0 &< /CC>-7
se aade:
# C=.&7/7
&/ @N-67 &p tcp &m state &&state N>: &m tcp &&dport '00' &< /CC>-7
&/ @N-67 &p tcp &m state &&state N>: &m tcp &&dport 9000 &< /CC>-7
(e guardan los cambios y se reinicia iptables y fail:ban:
service ita(%es restart
service "ai%2(an restart
ya se puede acceder a la pagina de administracin con nombre de usuario y contrasea definidos a lo
largo de la instalacin:
http://I8servidor:A>>A
(e presiona el botn Login y se entrar# en la pagina de los reportes de !/;I(D%D(2 8ara asegurarse
que el sistema est5 funcionando sin problemas0 en el menF %dmin:
?:1
*n la nueva pagina debe aparecer:
Las Sonas evidenciadas son las que indican que el programa est# funcionando bien2 8ara ver las
estadsticas de las llamadas y/o efectuar bFsquedas:
8ara profundiSar algunos temas de la configuracin de !/;I(D%D(0 se aconse$a descargar el manual
del programa2
?::
Cait$%o XX+++
Conectar $n So"t2one 8<%ink: 'e "or9a seg$ra) S+0 T=S 1 S6T0
*n algunos contextos la privacidad de las comunicaciones es un factor importante para el desarrollo de
las actividades de la empresa0 m#s aun si los datos que se intercambian a lo largo de las conversaciones
son datos sensibles tipo: nFmeros de tar$etas de cr5dito0 datos de cuentas bancarias0 secretos
industriales0 etc222 Las conversaciones seguras eran importantes en las comunicaciones tradicionales y
m#s aun lo son en la voS sobre I82 !on la versin de %steris& 12A2H se han implementados dos nuevos
protocolos:
(I8 DL( para el cifrado de la sealiSacin (I8
(;D8 para el cifrado del flu$o media2
%unque se puedan utiliSar separadamente0 no tendra mucho sentido0 por las siguientes raSones:
(i se utiliSa solamente el protocolo (I8 DL(0 el flu$o media seguir# via$ando en claro y podra
ser interceptado
Las claves que intercambian el cliente y el servidor para instaurar el cifrado del flu$o media0 se
envan a trav5s de la sealiSacin (I82 (i no se utiliSa el cifrado del protocolo (I8 y alguien
logra interceptar este trafico0 podr# tener acceso a las claves y de esta forma descifrar el flu$o
media2
*l Fnico (oftphone con una versin gratuita que soporta los protocolos (I8 DL( Q (;D8 es Blin&2 /e
este producto existen versiones para Linux0 '%! L( y =indo4s2 %ntes de instalarlo hay que
configurar %steris& para activar el protocolo (I8 DL( y (;D82
23.1 Creaci&n 'e %os certi"ica'os
*l primer paso es crear los certificado cliente0 servidor y de la autoridad de certificacin2 (e crea la
carpeta donde se guardar#n las claves:
9k'ir @etc@asterisk@ke1s
y se entra en la carpeta de las fuentes de %steris& que contiene uno script para la generacin de los
certificados:
c' @$sr@src@asterisk.1.8.20.1@contri(@scrits@
8rimero se crea el certificado de la autoridad de certificacin y del servidor %steris&:
.@ast;t%s;cert .C %i21L.240.9e9(ers.%ino'e.co9 .O ^=i(ro VozToVoice^ .' @etc@asterisk@ke1s
con la opcin I! se indica el nombre de dominio o la I8 del servidor %steris&
con la opcin IL se indica el nombre de la empresa o de la institucin
con la opcin Id se indica la ruta donde se guardar#n los certificados
Co confi% file s#ecifiedD creatin% ./etc/asterisk/keys/t$#.cf%.
&ou can use this confi% file to create additional certs without
re-enterin% the infor$ation for the fields in the certificate
Creatin% /etc/asterisk/keys/ca.key
Qeneratin% 123 #rivate keyD *)+6 'it lon% $odulus
............//
..........................................................................//
e is 6553, ()B1)))1!
Enter #ass #hrase for /etc/asterisk/keys/ca.key"
Perifyin% - Enter #ass #hrase for /etc/asterisk/keys/ca.key"
Creatin% /etc/asterisk/keys/ca.crt
Enter #ass #hrase for /etc/asterisk/keys/ca.key"
Creatin% /etc/asterisk/keys/asterisk.key
Qeneratin% 123 #rivate keyD 1)2* 'it lon% $odulus
....................................//////
.........//////
e is 6553, ()B1)))1!
Creatin% si%nin% reMuest
Creatin% /etc/asterisk/keys/asterisk.crt
2i%nature ok
su'Gect7/CC7li3,*-112.$e$'ers.linode.co$/<7Ca$#us PoT(oPoice
Qettin% C3 Frivate =ey
Enter #ass #hrase for /etc/asterisk/keys/ca.key"
Co$'inin% key and crt into /etc/asterisk/keys/asterisk.#e$
!uando el sistema lo solicita0 se indica una contrasea que tiene que ser la misma a lo largo de todo el
proceso2 *n este caso se utiliSar# la contrasea server. !on esta operacin se crear#n el certificado de
la autoridad de certificacin con relativa clave y el certificado del servidor %steris& con relativa clave2
*l segundo paso es crear la clave del softphone utiliSando la misa autoridad de certificacin:
.@ast;t%s;cert .9 c%ient .c @etc@asterisk@ke1s@ca.crt .k @etc@asterisk@ke1s@ca.ke1 .C (%ink1.%i21L.
240.9e9(ers.%ino'e.co9 .O ^=i(ro VozToVoice^ .' @etc@asterisk@ke1s .o (%ink1
con la opcin Im se indica el tipo de certificado2 *n este caso un certificado cliente
con la opcin Ic se indica la ruta del certificado de la autoridad de certificacin
con la opcin I& se indica la ruta de la clave del certificado de la autoridad de certificacin
con I! se indica el nombre de dominio o la I8 de donde se conectar# el softphone2 !omo en este
caso el computador desde donde se conectar# el softphone no tiene un nombre de dominio o una
I8 fi$a0 se pone un nombre que identifique el softphone y al mismo tiempo el dominio del
servidor %steris&
con la opcin IL se indica el nombre de la empresa o de la institucin
con la opcin Id se indica la ruta donde se guardar#n los certificados
?:?
Co confi% file s#ecifiedD creatin% ./etc/asterisk/keys/t$#.cf%.
&ou can use this confi% file to create additional certs without
re-enterin% the infor$ation for the fields in the certificate
Creatin% /etc/asterisk/keys/'link1.key
Qeneratin% 123 #rivate keyD 1)2* 'it lon% $odulus
.....................//////
.....//////
e is 6553, ()B1)))1!
Creatin% si%nin% reMuest
Creatin% /etc/asterisk/keys/'link1.crt
2i%nature ok
su'Gect7/CC7'link1.li3,*-112.$e$'ers.linode.co$/<7Ca$#us PoT(oPoice
Qettin% C3 Frivate =ey
Enter #ass #hrase for /etc/asterisk/keys/ca.key"
Co$'inin% key and crt into /etc/asterisk/keys/'link1.#e$
!uando el sistema lo solicite0 se ingresa la misma contrasea utiliSada en la fase anterior0 es decir0
server.
-na veS creados los certificados se modifica la configuracin del archivo sip2conf de %steris&:
nano @etc@asterisk@si.con"
al final de la parte general se aaden las siguientes lineas:
tlsenable=0es
tlsbindaddr=0#0#0#0
tlscertfile=/etc/asteris+/+e0s/asteris+#pem
tlscafile=/etc/asteris+/+e0s/ca#crt
tlscapat*=/etc/asteris+/+e0s
tlsdontverif0server=0es
Linea 1: se activa el protocolo (I8 DL(
Linea :: %steris& se pondr# a la escucha en todas las direcciones I8 presentes en el servidor
Linea 3: ruta y nombre del certificado del servidor %steris&
Linea @: ruta y nombre del certificado de la autoridad de certificacin
Linea ?: ruta donde se encuentran todos los certificados de las distintas autoridades de
certificacin
Linea B: como el softphone no utiliSa un nombre de dominio propio0 con este par#metro en yes0
se indica que el servidor %steris& no deber# verificar el certificado del cliente
%l final del archivo se crea una nueva extensin:
K(005L
t0pe=friend
accountcode=(005
?:B
language=es
secret=pbx9095
Hualif0=0es
mailbox=(005Sdefault
*ost=d0namic
dtmfmode=rfc"'%%
context=externas
directmedia=no
callerid=-erengano U(005N
callgroup=(
pic+upgroup=(
disallo1=all
allo1=ula1
allo1=ala1
allo1=gC"9
allo1=*"$%
cc5agent5polic0=generic
cc5monitor5polic0=generic
transport=tls
encr0ption=0es
Las ultimas dos lineas indican que para la extensin 1>>?0 %steris& aceptar# solamente conexiones con
el protocolo (I8 DL( y el cifrado del flu$o media2
(e guardan los cambios y se recarga la configuracin (I8:
asterisk .rvvvvvvvvvvvvv
!LI" si re%oa'
(i todo sale bien0 entre las varias lineas aparecer#:
22> certificate ok
!omo el protocolo (I8 DL( utiliSa el puerto ?>B1 D!80 hay que abrirlo en el cortafuegos:
nano @etc@s1scon"ig@ita(%es
/espu5s de esta linea:
&/ @N-67 &p tcp &m state &&state N>: &m tcp &&dport 50$0 &< /CC>-7
se pone:
&/ @N-67 &p tcp &m state &&state N>: &m tcp &&dport 50$( &< /CC>-7
(e guardan los cambios y se reinicia iptables y fail:ban:
?:<
service ita(%es restart
service "ai%2(an restart
8ara terminar esta primera parte0 hay que trasferir los certificado en el computador donde se instalar# el
(oftphone Blin&2 Los archivos que hay que descargar son:
ca2crt
blin&12pem
8ara esta operacin0 en =indo4s se puede utiliSar el programa 4inscp2 Ba$o Linux el comando scp2
23.2 Con"ig$raci&n So"t2one <%ink
%steris& ya est# configurado para el soporte (I8 DL( y (;D82 %hora se puede descargar el (oftphone
Blin& segFn el sistema operativo utiliSado2 -na veS descargado se instala y se inicia la configuracin
entrando en el menF Blin& c %ccounts c %dd %ccount:
/isplay name: un nombre que se le asigna a la cuenta
(I8 address: numero de extensin y dominio del servidor %steris&
?:A
8ass4ord: contrasea de la extensin 1>>?
(e presiona el botn %// y se va al menF Blin& c %ccount c 'anage accounts2 *n la pestaa
M'ediaN:
(e selecciona el protocolo (;D8 como obligatorio MmandatoryN2
*n la pestaa M(erver settingsN:
se configura como aparece en la imagen de arriba y se continua con la pestaa M%dvancedN:
(e selecciona el certificado blin&12pem descargado del servidor %steris& y se selecciona la casilla
M9erify serverN2 (e pasa al icono %dvanced:
?:E
(e selecciona el certificado de la autoridad de certificacin descargado del servidor %steris&: (e vuelve
a la pantalla principal del softphone y se averigua en la consola de %steris& que est5 registrado:
!LI" si s2ow eers
0r$e(a %%a9a'as
8ara probar la configuracin0 hay que modificar el dialplan:
nano @etc@asterisk@e3tensions.con"
(e modifica este bloque:
exten =N 5(00K0&"B;LB(B=ial!@-/EV>Q7>NWB;5B*O+It71:xQ)
same =N nB?acro!voicemail)
same =N nBOangup
para que quede:
exten =N 5(00K0&"B;&5LB(BNoop!-rotocolo @-7L = EVCO/NN>L!secure5signaling)W)
same =N nBNoop!-rotocolo .7- = EVCO/NN>L!secure5media)W)
same =N nB=ial!@-/EV>Q7>NWB;5B*O+It71:xQ)
same =N nB?acro!voicemail)
same =N nBOangup
*n la primera linea se lee el valor asociado a la variable de canal MsecureCsignalingN (i es ugual a 1
significa que la llamada ha sido iniciada por una extensin configurada con el protocolo (I8 DL(2 *n la
segunda linea se lee el valor asociado a la variable de canal MsecureCmediaN2 (i es igual a 1 significa
que la llamada ha sido iniciada por una extensin configurada con el protocolo (;D8 activado2
(e guardan los cambios y se recarga el dialplan:
asterisk .rvvvvvvvvvvvvvvvvv
!LI" 'ia%%an re%oa'
%hora se hacen dos llamadas:
12 desde la extensin 1>>> a la extensin 1>>?
:2 desde la extensin 1>>? a la extensin 1>>>
Los resultados:
*xecuting Y1>>?_externas:1Z ,oLpOa(I8/1>>>I>>>>>>1>a0 a0rotoco%o S+0T=S Q aP in ne4 stac&
II *xecuting Y1>>?_externas::Z ,oLpOa(I8/1>>>I>>>>>>1>a0 a0rotoco%o S6T0 Q aP in ne4 stac&
II *xecuting Y1>>?_externas:3Z /ialOa(I8/1>>>I>>>>>>1>a0 a(I8/1>>?0@?0h6&TtD4=xHaP
?3>
!omo la extensin 1>>> O(oftphone HILiteP no soporta (I8 DL( y (;D80 las dos variables de canal
estar#n vacas pero en el (oftphone aparecer#:
*l candado aSul indica que entre Blin& y %steris& se est# utiliSando el cifrado de la sealiSacin O(I8
DL(P2 *l canda naran$ado indica que entre Blin& y %steris& el flu$o media via$a cifrado2
La llamada del Blin& a la extensin 1>>>:
II *xecuting Y1>>>_externas:1Z ,oLpOa(I8/1>>?I>>>>>>1@a0 a0rotoco%o S+0T=S Q 1aP in ne4 stac&
II *xecuting Y1>>>_externas::Z ,oLpOa(I8/1>>?I>>>>>>1@a0 a0rotoco%o S6T0 Q 1aP in ne4 stac&
II *xecuting Y1>>>_externas:3Z /ialOa(I8/1>>?I>>>>>>1@a0 a(I8/1>>>0@?0h6&TtD4=xHaP
!omo la extensin 1>>? O(oftphone Blin&P soporta (I8 DL( y (;D80 las dos variables de canal tendr#n
el valor 12
Consi'eraciones "ina%es
!omo se ha comentado en otro modulo0 %steris& siempre est# en el medio de una llamada para la
sealiSacin (I82 8ara el flu$o media depende de la configuracin del par#metro 'irect9e'ia y si las
extensiones se registran detr#s de un ,%D o no2 *sto implica que es posible que se presenten estos
escenarios:
So"t02one <%ink .....................K Asterisk .........................K So"t02one X.=ite
o:
So"t02one X.=ite .....................K Asterisk .........................K So"t02one <%ink
*n el primer caso0 aunque la segunda pata de la llamada no es segura0 no implica que no se deban
implementar los protocolo (I8 DL( y (;D8 cuando sea posible2 Lo mismo vale para el segundo caso2
?31
(I8 D(L I (;D8
(I8 I ;D8
(I8 D(L I (;D8
(I8 I ;D8
Cait$%o XX+V
Oen"ire 1 Asterisk
24.1 +nsta%aci&n 'e Oen"ire
Lpenfire es un servidor Kabber2 !on Lpenfire instalado se tendr# un servidor de mensa$era instant#nea
sin tener que acudir a servicios de terceros2 *sto implica tener una red de mensa$era instant#nea
privada0 f#cilmente mane$able y segura gracias al uso del protocolo DL(2 i8orque Lpenfirej2 *ntre
tantos servidores con protocolo H''8 Lpenfire se destaca por la sencilleS de la instalacin0 la
administracin desde una p#gina =eb0 su multiplicidad de funciones y la posibilidad de ser integrado
con %steris&2 Lpenfire es escrito en $ava y0 para que funcione0 hay que instalar la K/T OKava (*
/evelopment TitP o instalar Ola opcin que se usar#P la versin Lpen(ource del $ava development Tit
1$9 insta%% 5ava.1.J.0.oen5'kT
Derminada la instalacin se controla la versin instalada:
5ava .version
Gava version W1.,.))+-icedteaW
<#enK?= 1unti$e Environ$ent (rhel-2.3.8.).el6*-i386!
<#enK?= Client P9 ('uild 23.,-')1D $iBed $odeD sharin%!
(e descarga el servidor $abber Lpenfire:
c' @ot
wget 2tt)@@www.igniterea%ti9e.org@'own%oa'Serv%eth"i%ena9eQoen"ire@oen"ire;3;8;1.tar.gz
se descomprime
tar .3" oen"ire;3;8;1.tar.gz
(e copia el archivo de configuracin en la carpeta /etc/sysconfig:
c oen"ire@(in@e3tra@re'2at@oen"ire.s1scon"ig @etc@s1scon"ig@oen"ire
(e modifica:
nano @etc@s1scon"ig@oen"ire
se modifican estas lineas:
#O->N8@.>5OO?>=44
#O->N8@.>56>.=4daemon4
#O->N8@.>5O-7=4&Qmx(0";m4
#P/R/5OO?>=/usr/<ava/default
para que queden:
O->N8@.>5OO?>=4/opt/openfire4
O->N8@.>56>.=4root4
O->N8@.>5O-7=4&Qmx"5$m4
P/R/5OO?>=/usr/lib/<vm/<ava&(#C#0&open<d+
(e guardan los cambios y se inicia:
@ot@oen"ire@(in@oen"ire start
(e averigua que est5 corriendo
@ot@oen"ire@(in@oen"ire stat$s
(i aparece:
(he dae$on is runnin%.
*l servidor est# funcionando2
%hora hay que configurarlo2 Lpenfire para registrar los datos puede utiliSar una base de datos interna o
externa2 *n este caso se usar# 'y()L2
(e crea la base de datos en 'y()L
91sB%a'9in create oen"ire .$ root .sesa9o
(e entra en el cliente de mysql:
91sB% .$ root .sesa9o
(e crea un usuario y se le otorgan todos los permisos para mane$ar la base de datos Lpenfire
mysql" 46A#T A== 06+V+=-4-S O# oen"ire.T TO Uoen"ireU*U%oca%2ostU +,-#T+7+-, <V
Usesa9oUS
Iuery <=D ) rows affected ().)1 sec!
mysql" "%$s2 rivi%egesS
Iuery <=D ) rows affected ().)) sec!
mysql" B$it
Lye
?3@
sesamo es la contrasea del usuario openfire
%hora se importan las tablas para la base de datos
91sB% oen"ire [ @ot@oen"ire@reso$rces@'ata(ase@oen"ire;91sB%.sB% .$ root .sesa9o
8ara que Lpenfire sea accesible desde afuera de la red local hay que abrir unos puertos en el
cortafuegos2
nano @etc@s1scon"ig@ita(%es
/espu5s de este bloque:
# ?onit
&/ @N-67 &p tcp &m state &&state N>: &m tcp &&dport "'(" &< /CC>-7
(e aade:
# Openfire
&/ @N-67 &p tcp &m state &&state N>: &m tcp &&dport 5"""G5""% &< /CC>-7
&/ @N-67 &p tcp &m state &&state N>: &m tcp &&dport 5"$9 &< /CC>-7
&/ @N-67 &p tcp &m state &&state N>: &m tcp &&dport 5"C5 &< /CC>-7
&/ @N-67 &p tcp &m state &&state N>: &m tcp &&dport C0C0 &< /CC>-7
&/ @N-67 &p tcp &m state &&state N>: &m tcp &&dport C;;% &< /CC>-7
&/ @N-67 &p tcp &m state &&state N>: &m tcp &&dport 9090 &< /CC>-7
&/ @N-67 &p tcp &m state &&state N>: &m tcp &&dport 909( &< /CC>-7
(e guardan los cambios y se reinicia iptables y fail:ban:
service ita(%es restart
service "ai%2(an restart
-na veS configurado el fire4all se accede a la pagina de configuracin de Lpenfire2 *n la barra de la
direcciones del navegador se escribe:
2tt)@@+0servi'or)R0R0
en lugar de I8servidor se pone la direccin I8 del servidor Linux o0 si se tiene un dominio registrado0
el nombre O*$2 4442e$emplo2comP
aparecer# una pagina de configuracin:
?3?
se elige el idioma
(e configura el nombre del dominio o la direccin I8:
(e elige el tipo de base de datos que se utiliSar#:
?3B
(e configura el acceso a 'y()L y la base de datos:
*n seteos de perfil se elige la opcin Mpor defectoN
?3<
(e configura el correo electrnico y la cuenta del administrador:
*l servidor est# listo para funcionar2
?3A
%ntes de entrar en la p#gina de administracin de Lpenfire hay que parar y volver a arrancar el
servidor:
@ot@oen"ire@(in@oen"ire sto
@ot@oen"ire@(in@oen"ire start
%hora se puede configurar el servidorU crear usuarios0 instalar plugins0 crear conferencias y otras
cuantas funciones2
8ara probar la conexin el cliente predefinido de Lpenfire es (par& Oen este caso para =indo4sP2 6ay
que descargarlo0 instalarlo y abrirlo2 (e pone come usuario admin0 que es el que se ha creado a lo largo
de la configuracin de Lpenfire0 se pone la contrasea del usuario admin y se presiona Login:
/espu5s de unos segundos:
?3E
(e pueden configurar m#s usuarios y grupos desde la pagina de administracin
(i se quiere iniciar Lpenfire en autom#tico:
c @ot@oen"ire@(in@e3tra@re'2at@oen"ire @etc@init.'@oen"ire'
se vuelve e$ecutable:
c29o' N3 @etc@init.'@oen"ire'
y se aade a los servicios:
c2kcon"ig ..a'' oen"ire'
c2kcon"ig oen"ire' on
8ara averiguar si Lpenfire arranca en autom#tico se hace un un reboot de la maquina Linux2
re(oot
(e vuelve a entrar en el servidor y se averigua que openfire est5 corriendo:
@etc@init.'@oen"ire' stat$s
o#enfire is runnin%
?@>
24.2 +nsta%ar e% 0%$gin S+002one en Oen"ire
*n este p#rrafo se ver# come instalar el plugin (I88hone para Lpenfire2 *ste plugin permite asociar a
un usuario registrado en Lpenfire una cuenta (I8 o extensin %steris&2 Luego se instala el mismo
plugin en el cliente (par& y desde 5ste se podr#n efectuar llamadas usando el dialplan configurado en
%steris&2
/esde un navegador =eb entramos en la pagina de administracin2
*n el menF 8lugins se escoge %vailable 8lugins en el menF de la iSquierda2 /ependiendo de los plugins
que ya se instalaron0 aparecer# una lista de los plugins disponibles entre los cuales:
(e presiona el botn a la derecha del plugin para instalarlo2 (e presiona el botn (erver en la barra del
menF2 *n la segunda lnea del menF habr# un nuevo menF: M8honeN2 (e presiona para entrar en el
menF de configuracin del plugin2
(e escoge M%gregar nuevo mapeoN y se rellenan los campos:
?@1
#o9(re 'e $s$ario XM00 : el nombre del usuario openfire
#o9(re 'e $s$ario : el numero o nombre de la extensin
>s$ario 'e A$torizaci&n : el numero o nombre de la extensin
#$9ero 'e te%?"ono a 9ostrar : el numero que aparecer# al llamado
C%ave: la contrasea asociada a la extensin
Servi'or: el nombre del dominio o I8 del servidor %steris&
O$t(o$n' 0ro31 : si se utiliSa 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&
#$9ero Correo 'e voz : como en el dialplan se ha definido que para acceder al buSn de voS
se utiliSa la extensin E<0 se pone aqu el numero
(e presionas el botn M!rearN para guardar la configuracin2 (e repite la misma operacin para todos
los usuarios que se quiere asociar a una extensin de %steris&2 -na veS terminado hay que configurar el
cliente (par& que es el Fnico que funciona con este plugin2
(e abre el cliente (par& y se abre una conexin con el nombre de usuario configurado arriba Oen este
caso adminP2
*n el menF del cliente (par& se elige (par& c 8lugins y en 8lugins disponibles 8hone client y se
instala:
?@:
!uando se termina de descargar el plugin0 se cierra el cliente y se vuelve a iniciar2 *n el menF acciones
se elige 8hone *nabled2 %parecer# el cliente (I8 en una nueva lnea del menF de (par& y se podr#
empeSar a usarlo para hacer llamadas2
?@3
%hora se puede realiSar una primera prueba2 /esde la extensin 1>>1 se marca la extensin 1>>>2
(par& debera empeSar a timbrar:
(i se quiere usar un Fnico programa para chatear0 hacer llamadas 9oI8 y0 como se ver# en el prximo
p#rrafo0 monitorear las extensiones0 esta es una buena solucin2
24.3 -% 0%$gin Asterisk.+M
%steris&II' permite asociar a cada usuario Lpenfire una extensin (I8 configurada en sip2conf2 /e
este modo cuando esa extensin est# hablando0 en el cliente $abber (par& el estado del usuario
Lpenfire asociado con la extensin cambiar# de disponible a Mon the phoneN2
;equisitos:
haber instalado openfire con una base de datos externa O'ysqlP
haber configurado el par#metro callevents=yes en la parte general del archivo sip2conf
haber configurado un usuario en el archivo manager2conf
?@@
(e modifica el archivo manager2conf:
nano @etc@asterisk@9anager.con"
%l final del archivo se aade un nuevo usuario:
KopenfireL
secret = sesamo
den0=0#0#0#0/0#0#0#0
permit=("C#0#0#(/"55#"55#"55#"55
read=s0stemBcallBagentBuserBdtmfBreportingBcdrBdialplanBagiBccBaoc
1rite=s0stemBcallBagentBuserBconfigBcommandBreportingBotiginateBagiBaoc
(e actualiSa la configuracin de %steris&:
@etc@init.'@asterisk re%oa'
(e instala el plugin en Lpenfire2 /esde un navegador =eb se abre la pagina de administracin de
Lpenfire y se va al menF 8lugins2 (e presiona el menF M%vailable 8luginsN
8ara instalarlo se presiona el botn que aparece al fondo de la lnea del plugin2 -na veS instalado en el
barra de los menF0 habr# una nueva voS0 %steris& I'2
(e escoge el menF %steris&II' y luego +eneral (ettings2 (e configura siguiendo las pautas indicadas
en la imagen que sigue:
?@?
(e presiona el botn (%9*2 *n la misma ventana se escoge el menF %dd (erver y se configura la
conexin al %steris& 'anager
*n la pagina que aparece se configura como en la imagen que sigue:
?@B
Server #a9e) un nombre que se quiere asignar al servidor
Server A''ress) direccin I8 o nombre de dominio del servidor %steris& Oen este caso como se
encuentra en el mismo servidor Linux0 se pone localhost
0ort) el puerto para conectarse a la %'I de %steris&
>serna9e) el nombre de usuario definido en el archivo manager2conf
0asswor') la contrasea configurada en el manager2conf
(e presiona el botn M!reate (erverN2 La bolita verde a la iSquierda indica che hay conexin con
%steris&2
8ara averiguar que efectivamente el usuario Lpenfire est5 conectado al %steris& 'anager se entra en la
consola de %steris&:
asterisk .rvvvvvvvvvvvvvv
se digita el comando:
!LI" 9anager s2ow connecte'
Eserna$e AF 3ddress 2tart Ela#sed Nile?es @tt#Cnt 1ead Jrite
o#enfire 12,.).).1 132381,682 ,+ 1) ) )*),+ )*851
?@<
(e guardan los cambios y se entra en el menF 8hone 'appings:
(e configuran todos los usuarios de Lpenfire que se quiere asociar con una extensin (I8 presente en el
servidor %steris&2 8ara guardar los cambios0 se presiona el botn M%ddN2
/esde el cliente (par& se abre una conexin con el usuario admin que se ha configurado en 8hone
'appings2
/esde el cliente (par& se marca el E< para entrar en la buSn de voS0 en el cliente (par& cambiar# el
estado del usuario admin:
24.4 Asterisk co9o c%iente en Oen"ire
La configuracin de %steris& como cliente $abber en Lpenfire es parecida a la de +oogleDal& Op#rrafo
?21P2 (e empieSa con la modifica del archivo $abber2conf presente en la carpeta /etc/asteris&2
nano @etc@asterisk@5a((er.con"
%l final del archivo0 se copian las siguientes lineas:
Kasteris+L
U etiqueta que define la conexin Oimportante para las funciones Kabberstatus y Kabbersend de %steris&P
?@A
t0pe=client
U %steris& actuar# como un cliente Olas opciones son cliente0 componente y serverP
server*ost=local*ost
U el nombre de dominio o I8 del servidor Lpenfire
username=asteris+Slocal*ost/openfire
U ,ombre del usuario Lpenfire del servidor asteris&
secret=sesamo
U la contrasea
priorit0=(0
U el nivel de prioridad que tiene en cliente en caso de conflictos Oe$: dos conexiones simultaneas del
mismo usuarioP
port=5"""
U el puerto D!8 del servidor Lpenfire usado para conectarse
usetls=0es
U -sar el protocolo DL(
usesasl=0es
U -sar el protocolo (%(L
budd0=adminSlocal*ost
U la lista de amigos0 uno por lnea
statusmessage=/steris+ server
U un mensa$e personaliSado del usuario
timeout=(00 U
(e guardan los cambios y antes de actualiSar la configuracin de %steris& se configura este usuario en
Lpenfire2 /esde un navegador =eb se entra en la pagina de administracin de Lpenfire:
?@E
*n la barra de menF se escoge M-sers/+roupsN y luego en el menF vertical en la iSquierda M!reate ,e4
-serN
>serna9e: el nombre de usuario Lpenfire
#a9e) el nombre completo o un apodo
-9ai%) la direccin del correo electrnico del usuario OpersonaliSarP
0asswor') la contrasea creada en el $abber2conf OsesamoP
Con"ir9 0asswor') otra veS la contrasea
(e termina presionando el botn M!reate -serN2
Qa se puede recargar la configuracin de %steris&:
@etc@init.'@asterisk re%oa'
(e averigua el resultado desde la consola de %steris&
asterisk .rvvvvvvvvvvvv
!LI" 5a((er s2ow connecte'
Ka''er Esers and their status"
Eser" asterisk-localhost/o#enfire - Connected
8ara ver la lista de amigos:
!LI" 5a((er s2ow ($''ies
Client" asterisk-localhost/o#enfire
Luddy" ad$in-localhost
??>
1esource" Cone
*n el menF M(essionsN de Lpenfire:
(e inicia el cliente (par& y se aade el usuario asteris&:
*l resultado ser#:
??1
24.L Conectar 'os servi'ores Oen"ire
(i se conectan dos servidores Lpenfire entre ellos0 los usuarios de uno podr#n agregar en su lista de
amigos usuarios del otro servidor2 8ara lograr este tipo de comportamiento hay que modificar la
configuracin en los dos servidor:
Los dos servidores est#n instalados en dos computadores de la misma L%,:
Lpenfire % dominio: li11?I1<A2members2linode2com
Lpenfire B dominio: li3@>I1B2members2linode2com
8rimero: si hay un cortafuegos por el medio0 hay que abrir el puerto ?:BE D!8 en ambos
(egundo: se entra en la pagina de administracin del servidor % y se escoge el menF (erver c
(erver (ettings c (erver to (erver
(e configura la p#gina como sigue:
??:
Luego se pasa al menF (erver " (erver settings " (ecurity settings y ba$o el cuadro (erver !onnection
(ecurity se selecciona la casilla:
??3
(e guardan los cambios y se sigue el mismo procedimiento en el servidor B indicando el dominio:
li3@>I1B2members2linode2com en la =hite List2
(e guardan los cambios2 La conexin se activa solamente cuando de un servidor se enva una solicitud
a otro servidor2 8ara probarla en el servidor B se crea un nuevo usuario OmenF -sers/+roups c !reate
,e4 -serP:
%hora desde el cliente (par& conectado al servidor %0 se aade a la lista de amigos el usuario servidorb:
??@
(e entra en el menF (essions " (erver (ession de ambos servidores donde debera aparecer:
(ervidor %:
(ervidor B:
???
(i no aparece ninguna conexin se puede usar el programa Telnet para averiguar si el puerto ?:BE
D!8 est5 efectivamente abierto2 /esde la consola de Linux del servidor % se escribe:
1$9 insta%% te%net
te%net
telnet" o .a %i340.16.9e9(ers.%ino'e.co9 L26R
(ryin% +6.126.115.16...
Connected to li3*)-16.$e$'ers.linode.co$.
Esca#e character is .`4..
U/streamGstreamNConnection closed 'y forei%n host.
(i aparece la expresin en negrita todo est# bien2
8ara tres o m#s servidores Lpenfire0 que queremos conectar entre ellos0 se sigue el mismo
procedimiento2
24.6 Oen"ire Connection Manager
(i hay que mane$ar un numero considerable de usuarios Om#s de 1>>> en linea a la veSP0 hay que
recurrir al !onnection 'anager2 *ste programa se configura delante del servidor Lpenfire y gestiona
las conexiones y las autenticaciones de los usuarios2 (e pueden instalar uno o m#s !onnection 'anager
segFn el numero de usuarios2 !ada !onnection 'anager es capaS de mane$ar cinco mil usuarios2 *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 veS est#n conectados con el servidor Lpenfire2 Los clientes tendr#n que conectarse a ese servidor y
luego ser#n enrutados por el !onnection 'anager al servidor Lpenfire2
(e descarga el programa:
??B
c' @ot
wget 2tt)@@www.voztovoice.org@t9@connection;9anager;3;6;3.tar.gz
(e descomprime:
tar .3" connection;9anager;3;6;3.tar.gz
(e entra en la carpeta de configuracin y se modifica el archivo manager2xml
c' @ot@connection;9anager@con"
nano 9anager.39%
Las lneas que hay que modificar son:
'o9ain) el nombre de dominio del servidor Lpenfire Oe$: miodominio2orgP
2ostna9e) la direccin I8 del servidor Lpenfire
ort) el puerto configurado en el servidor Lpenfire para aceptar las conexiones del !onnection
'anager O?:B: predefinidoP
asswor') la contrasea que se ha definido en el servidor Lpenfire para aceptar las conexiones
del !onnection 'anager
na9e) un nombre que se quiere asignar a el !onnection 'anager Omuy Ftil si se tiene planeado
instalar m#s de unoP2
inter"ace) direccin I8 o nombre de dominio donde el !onnection 'anager aceptar# las
conexiones2
(e guardan los cambios2
8ara terminar se instala el MscriptN para iniciar !onnection 'anager en autom#tico:
c' @ot@connection;9anager@(in@e3tra
nano c9anager'
(e modifican las siguientes lneas:
export C?/N/3>.5OO?>=/opt/connection5manager
export C?/N/3>.56>.=root
??<
C?==4#/cmanager#s* E(4
(e guardan los cambios y se termina:
c c9anager' @etc@init.'@
c29o' N3 @etc@init.'@c9anager'
c2kcon"ig /a'' c9anager'
c2kcon"ig c9anager' on
%ntes de arrancar el !onnection 'anager hay que modificar la configuracin del servidor Lpenfire2
/esde la pagina di administracin del servidor Lpenfire ba$o el menF M(erver settingsN se elige
M!onnection 'anagerN2 *n la pagina que aparece se activa el servicio0 se escoge el puerto y se define
una contrasea2
(e presiona el botn M(ave (ettingsN2 (e abre el puerto ?:B: D!8 en el cortafuegos2
%hora se puede arrancar el !onnection 'anager2 *n el servidor Linux donde se instal se escribe:
@etc@init.'@c9anager' start
(e averigua que est5 corriendo:
@etc@init.'@c9anager' stat$s
runnin% #id is 5,*,
Connection 9ana%er 3.6.3 0Ne' 6D 2)1) 5")2"1, 394
y en la pagina de administracin de Lpenfire se verifica que est# conectado:
??A
/esde un cliente H'88 se abre una conexin usando como direccin I8 o nombre de /ominio la que
se ha configurado en la linea MinterfaceN del archivo manager2xml
??E
Cait$%o XXV
Asterisk 1 a%ta 'isoni(i%i'a'
*l servidor %steris& ya est# instalado y traba$ando2 %hora se quiere tener una copia de la base de datos
actualiSada en tiempo real para hacer frente a cualquier tipo de evento que pueda afectar la integridad
de los registros de las llamadas o de las configuraciones en ;ealtime2 *n este tipo de escenario hay
disponible una funcionalidad de 'y()LU la posibilidad de replicar los datos en un servidor 'y()L
instalado en otro computador2 6ay dos formas de replicar los datos:
configurar una replicacin masterIslave OmaestroIesclavoP
configurar una replicacin masterImaster OmaestroImaestroP
!omo no se pueden tener los dos tipos de configuraciones activas a la veS0 antes de empeSar0 habr# que
escoger el tipo que se quier implementar
2L.1 6e%icaci&n M1SP= Master.S%ave
*n este p#rrafo se ver# como crear una replicacin 'y()L 'asterI(lave2 La replicacin masterIslave
no es una copia de bac&up de la base de datos0 de hecho si se borra una entrada en el 'y()L maestro0
autom#ticamente se borrar# tambi5n en el esclavo2 La idea es tener siempre una copia de bac&up y
adem#s crear la replicacin maestroIesclavo2
(e puede utiliSar el esclavo para efectuar consultas desde otros programas y de esta manera no cargar
demasiado el 'aestro2 -n e$emplo puede ser cuando se generan reportes mensuales de las llamadas2 *n
veS de realiSar las consultas en el maestro0 se efectFan en el esclavo2
*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 actualiSacin de la base de datos2
i!omo funciona la replicacin 'y()L 'asterIslavej
*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:
Servi'orA)
I8 L%,: 1E:21BA21:A21@@
Base de datos a replicar: asteris&
'aster
Servi'or<)
I8 L%,: 1E:21BA21:A21@?
*sclavo
Base de datos replicada: asteris&cdr
Servi'or A)
(e crea una carpeta donde guardar los Binary log:
9k'ir @var@%og@91sB%
(e cambian los permisos de modo que 'y()L pueda escribir y leer en esa carpeta:
c2own 91sB%)91sB% @var@%og@91sB%
(e entra en el cliente mysql
91sB% .$ root .sesa9o
y se crean los privilegios de replicacin para un nuevo usuario que luego se configurar# en el
servidorB:
?B:
myslq" 46A#T 6-0=+CAT+O# S=AV- O# T.T TO UasteriskU*U1R2.168.128.14LU +,-#T+7+-,
<V Usesa9oUS
(e actualiSan los privilegios y se sale del cliente 'y()L:
mysql" "%$s2 rivi%egesS
mysql" B$it
%hora se modifica el archivo de configuracin de 'y()L para configurar los par#metros necesarios
para la replicacin:
nano @etc@91.cn"
Ba$o la etiqueta YmysqldZ se aaden las siguientes lneas:
server&id = (0
log5bin = /var/log/m0sHl/m0sHl&bin#log
expire5logs5da0s = (0
max5binlog5si,e = (00?
binlog5do5db = asteris+cdr
s0nc5binlog=(
-na pequea explicacin de los par#metros:
server.i': identifica el servidor 'y()L
%og;(in: nombre del archivo donde se guardar# el Binary log
e3ire;%og;'a1s: especifica que los archivos Binary log m#s vie$os de 1> das se pueden borrar
9a3;(in%og;size: el tamao m#ximo de un Binary log
(in%o';'o;'(: el nombre de la base de datos que se va a replicar
s1nc;(in%og: cada evento generado en el 'aster ser# escrito inmediatamente en el Binary log2
%umenta la carga del 'aster a cambio de una replicacin m#s precisa
(e guardan los cambios y se reinicia 'y()L
@etc@init.'@91sB%' 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:
91sB% .$ root .sesa9o
8rimero se selecciona la base de datos asteris&cdr:
mysql" $se asteriskc'r
?B3
(egundo se bloquea la lectura de todas las tablas de todas las bases de datos:
mysql" 7=>SC TA<=-S D+TC 6-A, =OCHS
8or ultimo se mira el estado del 'aster:
mysql" SCOD MAST-6 STAT>SS
%parecer# algo por el estilo:
/------------------/----------/--------------/------------------/
5 Nile 5 Fosition 5 Linlo%?o?L 5 Linlo%A%nore?L 5
/------------------/----------/--------------/------------------/
5 $ysMl-'in.)))))1 +8 5 asteriskcdr 5 5
/------------------/----------/--------------/------------------/
1 row in set ().)) sec!
(e anotan los datos que aparecen en la columna .ile OmysqlIbin2>>>>>1P y en la columna 8osition OEAP2
(in cerrar esta ventana0 se abre otra ventana terminal o otra conexin al servidor Linux y se crea una
copia de la base de datos asteris&cdr:
c' @t9
91sB%'$9 .$ root .sesa9o asteriskc'r K asterisks%ave.sB%
se copia el archivo en el servidoB en la carpeta tmp:
sc asterisks%ave.sB% root*1R2.168.128.14L)@t9
(e cierra esta ventana y se vuelve a la primera2 (e desbloquean las tablas:
mysql" >#=OCH TA<=-SS
y se sale del cliente:
mysql" B$it
Servi'or <
(i 'y()L0 no est# instalado se instala:
1$9 insta%% 91sB% 91sB%.server 91sB%.'eve%
(e inicia:
@etc@init.'@91sB%' start
?B@
(e crea una contrasea para el usuario root:
91sB%a'9in /$ root asswor' sesa9o
(e modifica el archivo de configuracin de 'y()L
nano @etc@91.cn"
ba$o la etiqueta YmysqldZ se pone:
server&id="0
master&connect&retr0=$0
replicate&do&db=asteris+cdr
s+ip5slave5start
read5onl0
Los par#metros:
server.i': numero que identifica el servidor 'y()L del servidorB
9aster.connect.retr1: si el esclavo pierde la conexin con el maestro0 cada B> segundos
intentar# restablecerla
re%icate.'o.'(: la base de datos que vamos a replicar
ski;s%ave;start: evita que el esclavo se reinicie en el caso de un crash del servidor
rea';on%1) 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.'@91sB%' restart
(e crea la base de datos asteris&cdr:
91sB%a'9in .$ root .sesa9o create asteriskc'r
se recuperan tablas y datos de la copia que est# en la carpeta /tmp:
c' @t9
91sB% .$ root .sesa9o asteriskc'r [ asterisks%ave.sB%
% este punto se crean los datos de acceso al servidor 'y()L 'aster:
91sB% .$ root .sesa9o
mysql" CO/N3> ?/7>. 7O ?/7>.5OO7=D(9"#($'#("'#(;;DB
?B?
?/7>.56>.=Dasteris+DB
?/7>.5-/:O.==DsesamoDB
?/7>.5LO358@L>=Dm0sHl&bin#00000(DB
?/7>.5LO35-O=9'J
*n '%(D*;CLL+C.IL* Q '%(D*;CLL+C8L(0 se ponen los datos del servidor 'y()L % que se
haban anotado2
%ntes de iniciar el esclavo0 hay que abrir el puerto D!8 33>B en el servidor %2 (e hace indicando que la
Fnica I8 que podr# conectarse ser# la del (ervidor B:
nano @etc@s1scon"ig@ita(%es
/espu5s de este bloque:
# ?onit
&/ @N-67 &p tcp &m state &&state N>: &m tcp &&dport "'(" &< /CC>-7
(e pone:
# ?0`L
&/ @N-67 &p tcp &m state &&state N>: &m tcp &s (9"#($'#("'#(;5 &&dport %%0$ &< /CC>-7
(e guardan los cambios y se reinicia iptables:
service ita(%es restart
(e vuelve a la ventana del servidorB y se inicia el esclavo:
mysql" STA6T S=AV-S
(e controla el estado de la conexin con el 'aster:
mysql" SCOD S=AV- STAT>SO4
666666666666666666666666666 1. row 666666666666666666666666666
2laveA<2tate" Jaitin% for $aster to send event
9aster@ost" 1+2.168.1*2.2*8
9asterEser" fulano
9asterFort" 33)6
Connect1etry" 6)
9aster>o%Nile" $ysMl-'in.)))))1
1ead9aster>o%Fos" +8
1elay>o%Nile" $ysMld-relay-'in.)))))2
1elay>o%Fos" 235
1elay9aster>o%Nile" $ysMl-'in.)))))1
2laveA<1unnin%" &es
2lave2I>1unnin%" &es
?BB
1e#licate?o?L" asteriskcdr
1e#licateA%nore?L"
1e#licate?o(a'le"
1e#licateA%nore(a'le"
1e#licateJild?o(a'le"
1e#licateJildA%nore(a'le"
>astErrno" )
>astError"
2ki#Counter" )
EBec9aster>o%Fos" +8
1elay>o%2#ace" 235
EntilCondition" Cone
Entil>o%Nile"
Entil>o%Fos" )
9aster22>3llowed" Co
9aster22>C3Nile"
9aster22>C3Fath"
9aster22>Cert"
9aster22>Ci#her"
9aster22>=ey"
2econdsLehind9aster" )
1 row in set ().)) sec!
(e sale del cliente:
mysql" B$it
%hora se efectFa una llamada de prueba2 /esde la extensin 1>>> conectada al servidor% se llama el
buSn de voS2 %ntes de hacerlo se activa en el servidorB la captura de paquetes con ,grep para el
puerto 33>B y la red local:
ngre .' et20)1 .D (1%ine ort 3306 K @t9@esc%avo
Derminada la llamada0 se cierra la captura de paquetes y se mira que contiene el archivo /tmp/esclavo
*l servidor% O1E:21BA21:A21@@P ha enviado tres paquetes al servidorB O1E:21BA21:A21@?P para
actualiSar las tablas !/;0 !/;: y !/;3 de la base de datos asteris&cdr del servidor B2
2L.2 6e%icaci&n M1SP= Master.Master
*n el p#rrafo anterior se ha visto como usar la replicacin 'y()L 'asterI(lave para la base de datos
de asteris&cdr2 *n 5ste se ver# como utiliSar la replicacin 'y()L 'asterI'aster para la base de datos
asteris&cdr solamente para la tabla !/;2
i)u5 diferencia hay entra una replicacin 'aestroI*sclavo y una 'aestroI'aestroj
?B<
*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 'aestro2 *n el segundo caso la configuracin se
utiliSa para la alta disponibilidad en %steris&2 *$emplo: hay dos servidores %steris&: % y B2 (i % se cae
B toma su lugar2 !uando % vuelve a funcionar0 B vuelve a ser el servidor de respaldo2 !omo se ver# en
los prximos p#rrafos0 para la alta disponibilidad en %steris&0 adem#s de la replicacin 'asterI'aster0
se necesitar# configurar otros programas2
*scenario:
Servi'orA)
I8 1E:21BA21:A21@@
Base de datos a replicar: asteris&cdr G Dabla: cdr
'aster% (lave%
Servi'or<)
I8 1E:21BA21:A21@?
Base de datos a replicar: asteris&cdr G Dabla: cdr
'asterB (laveB
La tabla !/; en el (ervidor% ya existe y tiene unos cuantos datos registrados2 *l problema principal
de la replicacin 'asterI'aster es el conflicto que se puede presentar en las entradas de la tabla2
*$emplo: el servidor% se cae y toma su lugar el servidorB2 (e registran unos cuantos datos en la tabla
cdr del servidorB2 'ientras el servidor% vuelve a funcionar y antes que el servidorB pueda actualiSar
los datos de la tabla !/; en el servidor%0 este empieSa a grabar nuevas entradas en la misma tabla2 *n
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 progresivoP2
8ara solucionar este tipo de problema se utiliSar#n estos dos par#metros:
autoCincrementCincrement
autoCincrementCoffset
Servi'orA
(e entra en el cliente 'y()L y se consultan las fechas de las llamadas de la extensin 1>>>:
91sB% .$ root .sesa9o
mysql" $se asteriskc'r
mysql" se%ect i'Eca%%'ate "ro9 c'r w2ere 'stQ1000S
/----/---------------------/
5 id 5 calldate 5
/----/---------------------/
5 21 5 2)11-12-1* 13"21"*2 5
?BA
5 55 5 2)11-12-15 )+")1"5, 5
5 56 5 2)11-12-15 )+")3"1) 5
5 5, 5 2)11-12-15 )+")3"28 5
5 58 5 2)11-12-15 )+")3"56 5
/----/---------------------/
5 rows in set ().)) sec!
(e crea una carpeta donde guardar los Binary log de 'y()L y se cambia usuario y grupo que tiene los
permisos en la carpeta creada:
9k'ir @var@%og@91sB%
c2own 91sB%)91sB% @var@%og@91sB%
(e regresa al cliente 'y()L y se crean los privilegios de replicacin para un nuevo usuario:
91sB% .$ root .sesa9o
mysql" 46A#T 6-0=+CAT+O# S=AV- O# T.T TO U9aster(U*U1R2.168.128.14LU +,-#T+7+-,
<V Usesa9oUS
mysql" "%$s2 rivi%egesS
mysql" B$it
(e modifica el archivo de configuracin de 'y()L:
nano @etc@91.cn"
ba$o la etiqueta YmysqldZ se pone:
server&id = (0
auto5increment5increment = (0
auto5increment5offset = (
log5bin = /var/log/m0sHl/m0sHl&bin#log
expire5logs5da0s = (0
max5binlog5si,e = (00?
replicate&do&table =asteris+cdr#cdr
s0nc5binlog =(
Los par#metros:
!on autoCincrementCincrement a 1> cada entrada en la tabla cdr tendr# un I/ progresivo que
ir# de 1> en 1>2
!on autoCincrementCoffset a 1 cada entrada usar# el entero 1
?BE
*n el caso de tres entradas en la tabla el resultado ser#:
I/ 1
I/ 11
I/ :1
!on replicateIdoItable se define que la replicacin es solamente para la tabla cdr de la base de
datos asteris&cdr
(e reinicia mysql:
@etc@init.'@91sB%' 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:
91sB% .$ root .sesa9o
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" 7=>SC TA<=-S D+TC 6-A, =OCHS
8or ultimo se mira el estado del 'aster:
mysql" SCOD MAST-6 STAT>SS
%parecer# algo por el estilo:
hIIIIIIIIIIIIIIIIIIhIIIIIIIIIIhIIIIIIIIIIIIIIhIIIIIIIIIIIIIIIIIIh
] .ile ] 8osition ] BinlogC/oC/B ] BinlogCIgnoreC/B ]
hIIIIIIIIIIIIIIIIIIhIIIIIIIIIIhIIIIIIIIIIIIIIhIIIIIIIIIIIIIIIIIIh
] mysqlIbin2>>>>>1 ] EA ] asteris& ] ]
hIIIIIIIIIIIIIIIIIIhIIIIIIIIIIhIIIIIIIIIIIIIIhIIIIIIIIIIIIIIIIIIh
1 ro4 in set O>2>> secP
(e anotan los datos que aparecen en la columna .ile OmysqlIbin2>>>>>1P y en la columna 8osition OEAPU
sin cerrar esta ventana0 se abre otra ventana terminal o otra conexin al servidor Linux y se crea una
copia de la base de datos asteris&cdr:
c' @t9
91sB%'$9 .$ root .sesa9o asteriskc'r K c'r.sB%
se copia el archivo en el servidorB en la carpeta tmp:
?<>
sc c'r.sB% root*1R2.168.128.14L)@t9
(e cierra esta ventana y se regresa a la primera2 (e desbloquean las tablas:
mysql" >#=OCH TA<=-SS
y se sale del cliente:
mysql" B$it
Servi'or<
(e crea la carpeta para guardar los Bynary log con los permisos para el usuario mysql:
9k'ir @var@%og@91sB%
c2own 91sB%)91sB% @var@%og@91sB%
(e entra en el cliente mysql y se crea la base de datos asteris&:
91sB% .$ root .sesa9o
mysql" create 'ata(ase asteriskc'rS
mysql" B$it
(e importa la tabla cdr:
c' @t9
91sB% .$ root .sesa9o asteriskc'r [ c'r.sB%
(e averigua que efectivamente las tabla y los datos presentes se han guardado:
91sB% .$ root .sesa9o
mysql" $se asteriskc'r
mysql" se%ect i'Eca%%'ate "ro9 c'r w2ere 'stQ1000S
/----/---------------------/
5 id 5 calldate 5
/----/---------------------/
5 21 5 2)11-12-1* 13"21"*2 5
5 55 5 2)11-12-15 )+")1"5, 5
5 56 5 2)11-12-15 )+")3"1) 5
?<1
5 5, 5 2)11-12-15 )+")3"28 5
5 58 5 2)11-12-15 )+")3"56 5
/----/---------------------/
5 rows in set ().)) sec!
%parecer#n las mismas entradas del servidor%2 (e crea un nuevo usuarios con los permisos de
replicacin:
mysql" 46A#T 6-0=+CAT+O# S=AV- O# T.T TO U9asteraU*U1R2.168.128.144U +,-#T+7+-,
<V Usesa9oUS
mysql" "%$s2 rivi%egesS
mysql" B$it
%hora se modifica el archivo de configuracin de 'y()L:
nano @etc@91.cn"
ba$o la etiqueta YmysqldZ se pone:
server&id = "0
auto5increment5increment = (0
auto5increment5offset = "
log5bin = /var/log/m0sHl/m0sHl&bin#log
expire5logs5da0s = (0
max5binlog5si,e = (00?
replicate&do&table =asteris+cdr#cdr
s0nc5binlog =(
*l autoCincrementCoffset es igual a :2 *n el caso de tres entradas el I/ sera:
I/ :
I/ 1:
I/ ::
!omo se puede ver0 de esta forma no se presentar#n conflictos en las entradas de la tabla !/;2 (e
reinicia 'ysql:
@etc@init.'@91sB%' restart
Q ahora como para el servidor% se mira el Binary log y se anotan los datos:
91sB% .$ root .sesa9o
mysql" 7=>SC TA<=-S D+TC 6-A, =OCHS
?<:
mysql" SCOD MAST-6 STAT>SS
hIIIIIIIIIIIIIIIIIIhIIIIIIIIIIhIIIIIIIIIIIIIIhIIIIIIIIIIIIIIIIIIh
] .ile ] 8osition ] BinlogC/oC/B ] BinlogCIgnoreC/B ]
hIIIIIIIIIIIIIIIIIIhIIIIIIIIIIhIIIIIIIIIIIIIIhIIIIIIIIIIIIIIIIIIh
] mysqlIbin2>>>>>1 ] EA ] ] ]
hIIIIIIIIIIIIIIIIIIhIIIIIIIIIIhIIIIIIIIIIIIIIhIIIIIIIIIIIIIIIIIIh
1 ro4 in set O>2>> secP
mysql" B$it
8ara dar acceso a la base de datos al servidor%0 hay que abrir el puerto D!8 33>B solamente para esa I8
local:
nano @etc@s1scon"ig@ita(%es
*n la seccin filter se aade:
# ?0`L
&/ @N-67 &p tcp &m state &&state N>: &m tcp &s (9"#($'#("'#(;; &&dport %%0$ &< /CC>-7
(e reinicia el servicio:
service ita(%es restart
%hora se conecta el servidorB al servidor%:
91sB% .$ root .sesa9o
mysql" CO/N3> ?/7>. 7O ?/7>.5OO7=D(9"#($'#("'#(;;DB
?/7>.56>.=DmasterbDB
?/7>.5-/:O.==DsesamoDB
?/7>.5LO358@L>=Dm0sHl&bin#00000(DB
?/7>.5LO35-O=9'J
Iuery <=D ) rows affected ().)) sec!
(e inicia el esclavo:
mysql" STA6T S=AV-S
)uery LT0 > ro4s affected O>2>> secP
y se mira el resultado:
mysql" SCOD S=AV- STAT>SO4
666666666666666666666666666 1. row 666666666666666666666666666
2laveA<2tate" Jaitin% for $aster to send event
9aster@ost" 1+2.168.1*2.2*8
?<3
9asterEser" $aster'
9asterFort" 33)6
Connect1etry" 6)
9aster>o%Nile" $ysMl-'in.)))))1
1ead9aster>o%Fos" +8
1elay>o%Nile" $ysMld-relay-'in.)))))2
1elay>o%Fos" 235
1elay9aster>o%Nile" $ysMl-'in.)))))1
2laveA<1unnin%" &es
2lave2I>1unnin%" &es
1e#licate?o?L"
1e#licateA%nore?L"
1e#licate?o(a'le" asteriskcdr.cdr
1e#licateA%nore(a'le"
1e#licateJild?o(a'le"
1e#licateJildA%nore(a'le"
>astErrno" )
>astError"
2ki#Counter" )
EBec9aster>o%Fos" +8
1elay>o%2#ace" 235
EntilCondition" Cone
Entil>o%Nile"
Entil>o%Fos" )
9aster22>3llowed" Co
9aster22>C3Nile"
9aster22>C3Fath"
9aster22>Cert"
9aster22>Ci#her"
9aster22>=ey"
2econdsLehind9aster" )
1 row in set ().)) sec!
(e sigue el mismo procedimiento para el (ervidor%:
91sB% .$ root .sesa9o
mysql" CO/N3> ?/7>. 7O ?/7>.5OO7=D(9"#($'#("'#(;5DB
?/7>.56>.=DmasteraDB
?/7>.5-/:O.==DsesamoDB
?/7>.5LO358@L>=Dm0sHl&bin#00000(DB
?/7>.5LO35-O=9'J
Iuery <=D ) rows affected ().1) sec!
mysql" STA6T S=AV-S
mysql" SCOD S=AV- STAT>SO4
?<@
666666666666666666666666666 1. row 666666666666666666666666666
2laveA<2tate" Jaitin% for $aster to send event
9aster@ost" 1+2.168.1*6.+)
9asterEser" $astera
9asterFort" 33)6
Connect1etry" 6)
9aster>o%Nile" $ysMl-'in.)))))1
1ead9aster>o%Fos" +8
1elay>o%Nile" $ysMld-relay-'in.)))))2
1elay>o%Fos" 235
1elay9aster>o%Nile" $ysMl-'in.)))))1
2laveA<1unnin%" &es
2lave2I>1unnin%" &es
1e#licate?o?L"
1e#licateA%nore?L"
1e#licate?o(a'le" asterisk.cdr
1e#licateA%nore(a'le"
1e#licateJild?o(a'le"
1e#licateJildA%nore(a'le"
>astErrno" )
>astError"
2ki#Counter" )
EBec9aster>o%Fos" +8
1elay>o%2#ace" 235
EntilCondition" Cone
Entil>o%Nile"
Entil>o%Fos" )
9aster22>3llowed" Co
9aster22>C3Nile"
9aster22>C3Fath"
9aster22>Cert"
9aster22>Ci#her"
9aster22>=ey"
2econdsLehind9aster" )
1 row in set ().)) sec!
=a r$e(a
(e para el 'y()L del servidorB y se efectFan dos llamadas desde la extensin 1>>> del %steris& % al
buSn de voS2
*l resultado en la base de datos:
91sB% .$ root .sesa9o
mysql" $se asteriskc'r
?<?
mysql" se%ect i'Eca%%'ate "ro9 c'r w2ere 'stQRJS
/----/---------------------/
5 id 5 calldate 5
/----/---------------------/
5 32 5 2)11-12-1* 18")6")6 5
5 5* 5 2)11-12-15 )8"51"2) 5
5 61 5 2)11-12-15 )+"33"23 5
5 ,1 5 2)11-12-15 )+"33"*8 5
/----/---------------------/
* rows in set ().)) sec!
'ientras antes el I/ era progresivo0 las ultimas dos entradas tienen un salto de 1> y cada una termina
con el numero 12
Derminada la operacin0 se para 'y()L en el servidor% y se inicia 'y()L en el servidorB efectuando
dos llamadas al buSn de voS usando el %steris& del servidorB2
*l resultado en la base de datos:
91sB% .$ root .sesa9o
mysql" $se asteriskc'r
mysql" se%ect i'Eca%%'ate "ro9 c'r w2ere 'stQRJS
/----/---------------------/
5 id 5 calldate 5
/----/---------------------/
5 32 5 2)11-12-1* 18")6")6 5
5 5* 5 2)11-12-15 )8"51"2) 5
5 61 5 2)11-12-15 )+"33"23 5
5 ,1 5 2)11-12-15 )+"33"*8 5
5 ,2 5 2)11-12-15 )+"38"), 5
5 82 5 2)11-12-15 )+"3+"1* 5
/----/---------------------/
6 rows in set ().)) sec!
*l I/ progresivo en el servidorB cambia con saltos de 1> y cada entrada termina con el numero :2
%hora se inicia 'y()L en el servidor% y se mira que pasa en los dos servidores:
(ervidor%
91sB% .$ root .sesa9o
mysql" $se asteriskc'r
mysql" se%ect i'Eca%%'ate "ro9 c'r w2ere 'stQRJS
/----/---------------------/
?<B
5 id 5 calldate 5
/----/---------------------/
5 32 5 2)11-12-1* 18")6")6 5
5 5* 5 2)11-12-15 )8"51"2) 5
5 61 5 2)11-12-15 )+"33"23 5
5 ,1 5 2)11-12-15 )+"33"*8 5
5 ,2 5 2)11-12-15 )+"38"), 5
5 82 5 2)11-12-15 )+"3+"1* 5
/----/---------------------/
6 rows in set ().)) sec!
Servi'or<
91sB% .$ root .sesa9o
mysql" $se asteriskc'r
mysql" se%ect i'Eca%%'ate "ro9 c'r w2ere 'stQRJS
hIIIIhIIIIIIIIIIIIIIIIIIIIIh
] id ] calldate ]
hIIIIhIIIIIIIIIIIIIIIIIIIIIh
] 3: ] :>11I1:I1@ 1A:>B:>B ]
] ?@ ] :>11I1:I1? >A:?1::> ]
] B1 ] :>11I1:I1? >E:33::3 ]
] <1 ] :>11I1:I1? >E:33:@A ]
] <: ] :>11I1:I1? >E:3A:>< ]
] A: ] :>11I1:I1? >E:3E:1@ ]
hIIIIhIIIIIIIIIIIIIIIIIIIIIh
B ro4s in set O>2>> secP
Los datos se han replicado y no hubo ningFn tipo de conflicto en la tabla cdr gracias al uso de:
autoCincrementCincrement
autoCincrementCoffset
2L.3 ,6<, . 6ai'1 vMa TC0
/;B/ es un programa que permite conectar particiones presentes en distintos servidores y tenerlas
sincroniSadas2 .unciona en el mismo modo de un sistema ;%I/1 con la sencilla diferencias que las
copias de los datos se realiSan a trav5s de la red utiliSando el protocolo D!82 (e ver# como instalar
/;B/ en dos servidores 98( en Linode y de esta forma crear un sistema de alta disponibilidad para
%steris&2 Lo mismo se puede hacer con dos servidores locales con las modificaciones oportunas2
%l momento de configurar el servidor Linode0 hay que crear @ particiones:
?<<
La ultimas dos es las que se utiliSar#n para /;/B2 !laramente las mismas particiones tienen que ser
creadas en el segundo servidor de respaldo2 -na veS terminada esta operacin0 los dos servidores
Linode estar#n listos para la instalacin y configuracin de /;B/2
Servi'or A
I8 publico: BE21B@2:>121<A
I8 Lan: 1E:21BA21:A21@@
/ominio: li11?I1<A2members2linode2com
Servi'or <
I8 publico: EB21:B211?21B
I8 Lan: 1E:21BA21:A21@?
/ominio: li3@>I1B2members2linode2com
(e inicia la configuracin de los dos servidores para que cada uno sepa a que direccin I8 encontrar el
otro:
Servi'or A
nano /etc/hosts
%l final de archivo se aaden las siguientes lneas:
(9"#($'#("'#(;; li((5&(C'#members#linode#com
(9"#($'#("'#(;5 li%;0&($#members#linode#com
(e guardan los cambios y se averigua que efectivamente se logra localiSar el servidor B:
ing %i340.16.9e9(ers.%ino'e.co9
FACQ li3*)-16.$e$'ers.linode.co$ (1+2.168.128.1*5! 56(8*! 'ytes of data.
6* 'ytes fro$ li3*)-16.$e$'ers.linode.co$ (1+2.168.128.1*5!" ic$#seM71 ttl76* ti$e7).6,1 $s
6* 'ytes fro$ li3*)-16.$e$'ers.linode.co$ (1+2.168.128.1*5!" ic$#seM72 ttl76* ti$e7).*3) $s
6* 'ytes fro$ li3*)-16.$e$'ers.linode.co$ (1+2.168.128.1*5!" ic$#seM73 ttl76* ti$e7).*)5 $s
6* 'ytes fro$ li3*)-16.$e$'ers.linode.co$ (1+2.168.128.1*5!" ic$#seM7* ttl76* ti$e7).*,+ $s
?<A
6* 'ytes fro$ li3*)-16.$e$'ers.linode.co$ (1+2.168.128.1*5!" ic$#seM75 ttl76* ti$e7).518 $s
6* 'ytes fro$ li3*)-16.$e$'ers.linode.co$ (1+2.168.128.1*5!" ic$#seM76 ttl76* ti$e7).*83 $s
--- li3*)-16.$e$'ers.linode.co$ #in% statistics ---
6 #ackets trans$ittedD 6 receivedD )_ #acket lossD ti$e *++,$s
rtt $in/av%/$aB/$dev 7 ).*)5/).*+,/).6,1/).)8+ $s
(e efectFa el mismo procedimiento en el servidor B
Servi'or <
nano @etc@2osts
(e aaden las siguientes lneas:
(9"#($'#("'#(;; li((5&(C'#members#linode#com
(9"#($'#("'#(;5 li%;0&($#members#linode#com
ing %i11L.1J8.9e9(ers.%ino'e.co9
FACQ li115-1,8.$e$'ers.linode.co$ (1+2.168.128.1**! 56(8*! 'ytes of data.
6* 'ytes fro$ li115-1,8.$e$'ers.linode.co$ (1+2.168.128.1**!" ic$#seM71 ttl76* ti$e7).58, $s
6* 'ytes fro$ li115-1,8.$e$'ers.linode.co$ (1+2.168.128.1**!" ic$#seM72 ttl76* ti$e7).*22 $s
6* 'ytes fro$ li115-1,8.$e$'ers.linode.co$ (1+2.168.128.1**!" ic$#seM73 ttl76* ti$e7).5*2 $s
6* 'ytes fro$ li115-1,8.$e$'ers.linode.co$ (1+2.168.128.1**!" ic$#seM7* ttl76* ti$e7).*2) $s
6* 'ytes fro$ li115-1,8.$e$'ers.linode.co$ (1+2.168.128.1**!" ic$#seM75 ttl76* ti$e7).386 $s
6* 'ytes fro$ li115-1,8.$e$'ers.linode.co$ (1+2.168.128.1**!" ic$#seM76 ttl76* ti$e7).525 $s
--- li115-1,8.$e$'ers.linode.co$ #in% statistics ---
6 #ackets trans$ittedD 6 receivedD )_ #acket lossD ti$e *++6$s
rtt $in/av%/$aB/$dev 7 ).386/).*8)/).58,/).),6 $s
-na veS 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 2tt)@@oss.%in(it.co9@'r('@8.4@'r('.8.4.3.tar.gz
tar .3" 'r('.8.4.3.tar.gz
c' 'r('.8.4.3
.@con"ig$re ..re"i3Q@ ..wit2.k9
(e compila utiliSando la ultimas versin de las fuentes del Ternel instalado en el servidor0 es decir:
?<E
$na9e .r
2.6.32-358.2.1.el6.i686
9ake H,+6Q@$sr@src@kerne%s@2.6.32.3L8.2.1.e%6.i686
9ake insta%%
(e mueve la configuracin predefinida que viene con la instalacin de /;B/
9v @etc@'r('.con" @etc@'r('.con".o%'
se crea una nueva:
nano @etc@'r('.con"
(e copian las lineas que siguen en ambos servidores:
global V
usage&count 0esJ
W
common V
protocol CJ
W
resource data V
net V
allo1&t1o&primariesJ
W
startup V
become&primar0&on bot*J
W
on li((5&(C'#members#linode#com V
device /dev/drbd(J
dis+ /dev/xvdcJ
address (9"#($'#("'#(;;GCC'9J
meta&dis+ /dev/xvddK0LJ
W
on li%;0&($#members#linode#com V
device /dev/drbd(J
dis+ /dev/xvdcJ
address (9"#($'#("'#(;5GCC'9J
meta&dis+ /dev/xvddK0LJ
W
W
/e esta forma se crean dos nodos primarios usando el protocolo ! y se nombra este recurso creado
MdataN2
?A>
*l nodo 1 ser# li11?I1<A2members2linode2com cuya I8 local es 1E:21BA21:A21@@ (e utiliSar#n 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 sincroniSarse con el segundo nodo2
*l nodo : ser# li3@>I1B2members2linode2com cuya I8 local es 1E:21BA21:A21@?2
%hora se crean los metaIdatos en la particin xvdd de ambos servidores:
'r('a'9 create.9' 'ata
,ormalmente sale este error:
Nound eBt3 filesyste$
(his would corru#t eBistin% data.
Af you want $e to do thisD you need to Tero out the first #art
of the device (destroy the content!.
&ou should 'e very sure that you $ean it.
<#eration refused.
Co$$and .dr'd$eta 1 v)8 /dev/Bvdd ) create-$d. ter$inated with eBit code *)
(e soluciona destruyendo todos los datos presentes en la particin:
'' i"Q@'ev@zero o"Q@'ev@3v'' (sQ1M co$ntQ128
128/) records in
128/) records out
13*21,,28 'ytes (13* 9L! co#iedD 1D21,6 secondsD 11) 9L/s
(e e$ecuta otra veS el comando:
'r('a'9 create.9' 'ata
Jritin% $eta data...
initialiTin% activity lo%
C<( initialiTin% 'it$a#
Cew dr'd $eta data 'lock successfully created.
success
(e configurara el programa para que el servicio arranque en autom#tico:
c2kcon"ig ..a'' 'r('
c2kcon"ig 'r(' on
8ara crear una primera sincroniSacin entre los datos de las dos particiones de los dos servidores se
carga el modulo /;B/ en el Ternel:
?A1
9o'ro(e 'r('
se averigua que efectivamente est5 corriendo:
%s9o' _ gre 'r('
dr'd 25136* )
%hora se crea la conexin entre los dos servidores:
'r('a'9 attac2 'ata
'r('a'9 s1ncer 'ata
'r('a'9 connect 'ata
(e efectFa una primera sincroniSacin de los datos:
Servi'or A
'r('a'9 .. ..overwrite.'ata.o".eer ri9ar1 'ata
*sta operacin puede durar bastante tiempo dependiendo del tamao de los discos2 (e puede controlar
en cualquier momento a que punto ha llegado con el comando:
cat @roc@'r('
version" 8.3., (a#i"88/#roto"86-+1!
QA(-hash" ea+e28d'ff+8e331a62'c'cc63a61358)8fe2+1, 'uild 'y root-li115-
1,8.$e$'ers.linode.co$D 2)11-12-15 11"2*"58
1" cs"2ync2ource ro"Fri$ary/2econdary ds"E#(o?ate/Anconsistent C r----
ns"36,2 nr") dw") dr"36,2 al") '$") lo"6 #e") ua"6 a#") e#"1 wo"' oos"815528
0R....................4 sync.ed" 1.)_ (815528/81+2))!=
finish" )"*2"28 s#eed" 252 (2**! =/sec
!uando el proceso termine0 aparecer#:
cat @roc@'('
version" 8.3., (a#i"88/#roto"86-+1!
QA(-hash" ea+e28d'ff+8e331a62'c'cc63a61358)8fe2+1, 'uild 'y root-li115-
1,8.$e$'ers.linode.co$D 2)11-12-15 11"2*"58
1" cs"Connected ro"Fri$ary/2econdary ds"E#(o?ate/E#(o?ate C r----
ns"81+2)) nr") dw") dr"81+2)) al") '$"5) lo") #e") ua") a#") e#"1 wo"' oos")
?A:
(e reinician ambos servidores:
re(oot
Servi'or A
(e crea una nueva carpeta donde se copiar#n los datos que se quiere sincroniSar:
9k'ir @2o9e@'ata
(e monta la particin de los datos:
9o$nt @'ev@'r('1 @2o9e@'ata
se crean unos cuantos archivos de prueba:
to$c2 @2o9e@'ata@"i%e1
to$c2 @2o9e@'ata@"i%e2
to$c2 @2o9e@'ata@"i%e3
%s @2o9e@'ata
file1 file2 file3 lost/found
(e desmonta la particin:
$9o$nt @2o9e@'ata
y se averigua el resultado en el servidor B
Servi'or <
9k'ir @2o9e@'ata
9o$nt @'ev@'r('1 @2o9e@'ata
%s @2o9e@'ata
file1 file2 file3 lost/found
$9o$nt @2o9e@'ata
*n el caso que se quiera tener sincroniSados los archivos de configuracin de %steris&0 se copian
directamente la carpeta de esta forma:
?A3
Servi'or A
9o$nt @'ev@'r('1 @2o9e@'ata
9k'ir @2o9e@'ata@etc
c' @etc
9v asterisk @2o9e@'ata@etc@asterisk
8ara terminar se crea un enlace simblico a la nueva carpeta:
%n .s @2o9e@'ata@etc@asterisk asterisk
Lo mismo con /%6/I:
9v 'a2'i @2o9e@'ata@etc@'a2'i
%n .s @2o9e@'ata@etc@'a2'i 'a2'i
$9o$nt @2o9e@'ata
Servi'or <
9o$nt @'ev@'r('1 @2o9e@'ata
c' @etc
r9 ."r asterisk
r9 ."r 'a2'i
%n .s @2o9e@'ata@etc@asterisk asterisk
%n .s @2o9e@'ata@etc@'a2'i 'a2'i
$9o$nt @2o9e@'ata
Qa est# configurado y funcionando /;B/2 ,o hace falta de$ar la particin montada en ninguno de los
dos servidores porque0 como se ver# en el prximo p#rrafo0 6eartbeat se encargar# de hacerlo segFn el
servidor que est5 activo en ese momento2
2L.4 Ceart(eat
(e termina el capitulo dedicado a %steris& y alta disponibilidad con la instalacin y configuracin de
?A@
6eartbeat2 6eartbeat se necesita para que los dos servidores sepan el estado del otro2 !uando el master
se cae0 el slave toma el control cargando la particin de /;B/ donde hemos guardado los datos de
configuracin de %steris&0 poniendo activo el I8 compartido y arrancando dahdi y asteris&2 !uando se
utiliSa %steris& alta disponibilidad con este tipo de configuracin0 habr# un I8 publico compartido que
es 5l que se utiliSar# para registrar las extensiones2 *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 utiliSar# la misma configuracin que se present en el p#rrafo :?232 8ara resumir:
Servi'or A
I8 publico: BE21B@2:>121<A
I8 Lan: 1E:21BA21:A21@@
Servi'or <
I8 publico: EB21:B211?21B
I8 Lan: 1E:21BA21:A21@?
8rimero se compra en Linode un segundo I8 publico para el servidor % Ocosto: un dlar al mesP que
ser# el I8 MvirtualN que compartir#n los dos servidores2 -na veS comprado0 hay que configurarlo en una
nueva tar$eta de red virtual:
nano @etc@s1scon"ig@network.scrits@i"c"g.et20)2
(e copian las siguientes lineas:
=>R@C>=et*0G"
FOO7-.O7O=none
ONFOO7=0es
@-/==.=(C%#"55#(9$#(9(
N>7?/I="55#"55#"55#0
1<32:??21EB21E1 es la nueva I8 adquirida2 (e reinicia el servidor:
re(oot
Luego en la pagina de administracin de Linode del servidor B se configura el failover2 *sto permite
que al caerse el servidor %0 el servidor B tomar# la gestin de ese I82 *n el menF M;emote %ccessN de
la pagina de administracin del Linode:
?A?
(e escoge el enlace MI8 .ailoverN2 *n la nueva pagina:
(e selecciona la nueva I8 adquirida y se presiona el botn M(ave !hangesN2
%hora hay que instalar 6eartbeat2 *ste programa es presente en los repositorios epel:
1$9 ..ena(%ereoQee% insta%% 2eart(eat
%hora hay que crear tres archivos de configuracin:
ha2cf
auth&eys
haresources
(e empieSa con el que se encarga de controlar el estado de los servidores2
Servi'or A)
nano /etc/ha2d/ha2cf
se pegan las siguientes lneas:
debugfile /var/log/*a&debug
logfile /var/log/*a&log
logfacilit0 local0
+eepalive "
deadtime ("0
initdead ("0
ucast et*0 (9"#($'#("'#(;5
udpport $9;
auto5failbac+ on
node li((5&(C'#members#linode#com
node li%;0&($#members#linode#com
?AB
Servi'or <)
nano @etc@2a.'@2a.c"
debugfile /var/log/*a&debug
logfile /var/log/*a&log
logfacilit0 local0
+eepalive "
deadtime ("0
initdead ("0
ucast et*0 (9"#($'#("'#(;;
udpport $9;
auto5failbac+ on
node li((5&(C'#members#linode#com
node li%;0&($#members#linode#com
%hora en ambos servidores se crea el archivo que utiliSar# 6eartbeat para el intercambios de llaves de
autentificacin y el archivo donde se indicar# la I8 virtual compartida y los servicios que heartbeat
deber# gestionar2 *stos archivos tienen que ser iguales en ambos servidores:
nano @etc@2a.'@a$t2ke1s
aut* %
% md5 sesamo
(e usa como m5todo de cifrado '/? y despu5s se pone la contrasea que se quiere utiliSar Oen este
caso sesamoP2
%hora hay que cambiar los permisos de este archivo para que sea accesible Oen lectura y escrituraP
solamente para el usuario root:
c29o' 600 @etc@2a.'@a$t2ke1s
8ara terminar el archivo de los recursos:
nano @etc@2a.'@2areso$rces
(e pone:
li((5&(C'#members#linode#com @-addr"GG(C%#"55#(9$#(9( drbddis+GGdata
8iles0stemGG/dev/drbd(GG/*ome/dataGGext% da*di asteris+
+M0O6TA#T-) tiene B$e estar to'o e% %a 9is9a %Mnea
(e define como servidor 'aster %i11L.1J8.9e9(ers.%ino'e.co9 y se indica como I8 virtual la que se
?A<
acaba de comprar2 drbddis& es el script que se encarga de montar la particin donde se han guardado los
archivos de configuracin de %steris&0 en este caso /dev/drbd12 8or ultimo se indican los servicios que
6eartbeat tiene que iniciar0 en este caso dahdi y asteris&2
*stos servicios tienen que ser indicados en la carpeta etc/ha2d/resource2d. 8ara hacerlo se crea un enlace
simblico:
c' @etc@2a.'@reso$rce.'
%n .s @etc@init.'@asterisk asterisk
%n .s @etc@init.'@'a2'i 'a2'i
%hora el problema2 Dodo pareca funcionar bien pero heartbeat no montaba la particin /dev/drbd1 y
%steris& no poda funcionar2
;evisando las cosas el script drbddis& Oque viene con la instalacin de 6eartbeatP estaba mal
configurado2 (e resuelve de la siguiente forma:
nano @etc@2a.'@reso$rce.'@'r(''isk
(e cambia esta linea:
=>8/6L78@L>=4/etc/default/drbd4
para que quede:
=>8/6L78@L>=4/etc/drbd#conf4
indicando donde efectivamente se encuentra el archivo de configuracin de drbd2 8ara terminar la
configuracin los Fltimos cambios en ambos servidores:
c2kcon"ig asterisk o""
c2kcon"ig 'a2'i o""
*sto porque es 6eartbeat que se encarga de iniciar los dos programas2
c2kcon"ig ..a'' 2eart(eat
c2kcon"ig 2eart(eat on
(e abre el puerto -/8 BE@ que permite a los servicios 6ertbeat instalados en los dos servidores de
comunicarse entre ellos:
Servi'or A
nano @etc@s1scon"ig@ita(%es
despu5s de este bloque:
?AA
# O77-
&/ @N-67 &p tcp &m state &&state N>: &m tcp &&dport '0 &< /CC>-7
se aade:
# Oeartbeat
&/ @N-67 &p udp &m udp &s (9"#($'#("'#(;5 &&dport $9; &< /CC>-7
(e reinicia iptables:
service ita(%es restart
Servi'or <
nano @etc@s1scon"ig@ita(%es
despu5s de este bloque:
# O77-
&/ @N-67 &p tcp &m state &&state N>: &m tcp &&dport '0 &< /CC>-7
se aade:
# Oeartbeat
&/ @N-67 &p udp &m udp &s (9"#($'#("'#(;; &&dport $9; &< /CC>-7
(e reinicia iptables:
service ita(%es restart
!on esta ultima operacin se ha terminado la configuracin de 6eartbeat2 (olo falta reiniciar los dos
servidores y mirar si todo funciona:
re(oot
(i se hace una captura de paquetes en el (ervidor %0 puerto BE@:
ngre .' et20)1 .D (1%ine ort 6R4
(e ver#n una serie de paquetes de este tipo:
6 (9"#($'#("'#(;5G5;00" &N (9"#($'#("'#(;;G$9;
NNN
t=status
st=active
dt=(d;c0
?AE
protocol=(
src=li%;0&($#members#linode#com
!()srcuuid=9+uC@0?HCu?RmPpcNs7Cg==
seH="C;
*g=;eea;a$"
ts=;eea;ec9
ld=0#0C 0#0$ 0#0C (/('9 '''%
ttl=%
aut*=% %feC"eec(f'c;df$($b'0$Cce%$'f';C
UUU
/onde 6eartbeat comunica al (ervidor B su estado2 (i en algFn momento el servidor % se cae0
autom#ticamente el servidor B tomar# su lugar2 Dodas las extensiones tendr#n que conectarse a la nueva
I8 compartida0 es decir: 1<32:??21EB21E12
?E>
CA0+T>=O XXV+
Asterisk 4>+
%steris& +-I es una interfaS gr#fica desarrollada para la gestin y la configuracin de %steris& desde
un navegador =eb2 (implifica el mane$o de %steris& siempre y cuando se tenga un conocimiento
b#sico del funcionamiento de la 8BH2 %l arrancar la +-I0 5sta aade macros y extensiones al plan de
marcado pero no lee totalmente la configuracin ya presentes en la carpeta /etc/asteris&U para evitar de
perder el traba$o que se ha hecho hasta el momento0 es buena practica efectuar una copia de todos los
archivo de configuracin de %steris& presentes en la carpeta /etc/asteris&:
9k'ir @t9@asterisk
c @etc@asterisk@T @t9@asterisk@
8ara descargar la ultima versin disponible hay que instalar el programa SUBVESION2
1$9 insta%% s$(version
c' @$sr@src
(e descargan los archivos de la +-I
svn co 2tt)@@svn.asterisk.org@svn@asterisk.g$i@(ranc2es@2.0
(e entra en la carpeta:
c' 2.0@
(e compila y instala:
.@con"ig$re
9ake
9ake insta%%
8ara terminar con la instalacin hay que modificar dos archivos de configuracin de %steris&2 8rimero
el manager2conf Osi ya se ha configurado como indicado en el p#rrafo 1E210 se aade solamente al final
del archivo el nuevo usuarioP:
nano @etc@asterisk@9anager.con"
(e averigua que todos los par#metros que siguen tengan el valor indicado:
KgeneralL
enabled=0es
1ebenabled=0es
port=50%'
bindaddr=0#0#0#0
Jtlsenable=no
Jtlsbindport=50%9
Jtlsbindaddr=0#0#0#0
Jtlscertfile=/tmp/asteris+#pem
Jtlsprivate+e0=/tmp/private#pem
allo1multiplelogin=0es
displa0connects=0es
timestampevents=0es
Jc*annelvars = var(Bvar"Bvar%
debug=no
aut*timeout=$0
aut*limit="0
*ttptimeout=$0
(e crea un usuario que sera 5l que se usar# para entrar en la pagina de administracin de la +-I de
%steris&
Kasteris+L
secret=sesamo
1ritetimeout=(00
read=s0stemBcallBagentBuserBdtmfBreportingBcdrBdialplanBagiBccBaoc
1rite=s0stemBcallBagentBuserBconfigBcommandBreportingBotiginateBagiBaoc
(e guardan los cambios y se sigue con el archivo http2conf
9v @etc@asterisk@2tt.con" @etc@asterisk@2tt.con".o%'
nano @etc@asterisk@2tt.con"
KgeneralL
enabled = 0es
enablestatic = 0es
bindaddr=0#0#0#0
bindport='0''
(e guardan los cambios y se reinicia %steris&
@etc@init.'@asterisk restart
%hora hay que abrir el puerto A>AA D!8 en el cortafuegos
nano @etc@s1scon"ig@ita(%es
/espu5s de este bloque:
# O77-
?E3
&/ @N-67 &p tcp &m state &&state N>: &m tcp &&dport '0 &< /CC>-7
(e aaden las siguientes linea:
# /steris+ 36@
&/ @N-67 &p tcp &m state &&state N>: &m tcp &&dport '0'' &< /CC>-7
(e guardan los cambios y se reinicia el cortafuegos y fail:bn:
service ita(%es restart
service "ai%2(n restart
%hora se averigua que todo est5 bien configurado
9ake c2eckcon"ig
^ !hec&ing for http2conf: LT
^ !hec&ing for manager2conf: LT
^ !hec&ing if 6DD8 is enabled: LT
^ !hec&ing if 6DD8 static support is enabled: LT
^ !hec&ing if manager is enabled: LT
^ !hec&ing if manager over 6DD8 is enabled: LT
III *verything loo&s good III
T 4>+ s2o$%' (e avai%a(%e at 2tt)@@%i11L.1J8.9e9(ers.%ino'e.co9)8088@asterisk@static@con"ig@in'e3.2t9%
% pesar que apareSca la linea en negrita como direccin para acceder a la +-I0 la direccin exacta es:
2tt)@@%i11L.1J8.9e9(ers.%ino'e.co9)8088@static@con"ig@in'e3.2t9%
/esde un navegador =eb se visita la pagina de administracin de la +-I de %steris&2
>serna9e) asteris&
0asswor') sesamo
(e presiona el botn MLoginN
/espu5s de unos segundos aparecer#:
?E@
(e vuelve a la ventana terminal del servidor y se para y reinicia %steris&:
service asterisk sto
service asterisk start
(e vuelve a la pagina de administracin de %steris& y se presiona el Botn %ceptar2 (e vuelve a poner
-sername y pass4ord presionando el botn MLoginN2 *l %steris& +-I leer# algunas configuraciones
Ocolas de espera0 conferenciasP desde los archivos presentes en la carpeta /etc/asteris&2 Las extensiones
configuradas en el sip2conf no aparecer#n porque %steris& +-I las lee y guarda en el archivo users2conf
%qu van algunas im#genes de la interfaS gr#fica
*l orden para configurar la +-I es:
!rear las troncales en el menF Tr$nks
!rear los contextos para las llamadas saliente en el menF O$tgoing Ca%%ing 6$%es
?E?
!rear el dialplan en el menF ,ia% 0%ans
!rear las extensiones en el menF >sers
-na veS que que se ha probado la +-I de %steris& y se quiere volver a la configuracin anterior0 se
copian los dos archivos modificados y se recarga la configuracin guardada:
c' @etc@asterisk
c 9anager.con" @t9@asterisk
c 2tt.con" @t9@asterisk
r9 ."r T
c @t9@asterisk@T @etc@asterisk
@etc@init.'@asterisk restart
La diferencia entre esta +-I y otras es que no utiliSa muchos recursos del sistema para funcionar
porque no necesita un servidor =eb externo O%pacheP2 8ara pequeas instalaciones con configuraciones
b#sicas0 es la m#s indicada2
?EB
CA0+T>=O XXV++
7ree0<X
8ersonalmente no soy partidario de la instalaciones de %steris& con InterfaS gr#fica2 !omo entiendo
que a muchos puede interesar el tema0 en este capitulo se ver# como instalar la +-I .ree8BH2
!omo la +-I se basa en 8680 si no se ha ya instalado0 se instala ahora $unto al servidor %pache y el
modulo modCssl:
1$9 insta%% 2.T 2tt' 9o';ss%
se instala tabi5n phpIpearI/B desde los repositorios epel:
1$9 ..ena(%ereoQee% insta%% 2.ear.,<
(e aade el usuario %steris& con home directory /var/lib/asteris&:
$sera'' .c ^Asterisk 0<X^ .' @var@%i(@asterisk asterisk
useradd" aviso" el directorio #ersonal ya eBiste.
Co se co#ia nin%an fichero del directorio skel en bl.
(e cambian los permisos en todas las carpetas creadas por la instalacin de %steris& asign#ndolos al
usuario asteris& que se acaba de crear:
c2own .6 asterisk @var@r$n@asterisk
c2own .6 asterisk @var@%og@asterisk
c2own .6 asterisk @var@%i(@asterisk@9o2
c2own .6 asterisk @var@%i(@2@session
c2own .6 asterisk @var@soo%@asterisk
c2own .6 asterisk @etc@asterisk
!omo para la mFsica en espera %steris& h .ree8BH utiliSan archivos en formato 4av0 si se quiere
utiliSar archivos mp3 hay que instalar mpg1:3 Osi ya no se ha hecho en el p#rrafo 1>21P que se
encargar# de convertir los archivos mp3 en 4av:
c' @$sr@src
wget 2tt)@@'own%oa's.so$rce"orge.net@ro5ect@9g123@9g123@1.13.4@9g123.1.13.4.tar.(z2
tar .3" 9g123.1.13.4.tar.(z2
c' 9g123.1.13.4
.@con"ig$re ..re"i3Q@$sr
9ake
9ake insta%%
(e cambia el usuario y grupo predefinido del servidor =*B de apache a asteris&:
se' .i ^s@>ser aac2e@>ser asterisk@^ @etc@2tt'@con"@2tt'.con"
se' .i ^s@4ro$ aac2e@4ro$ asterisk@^ @etc@2tt'@con"@2tt'.con"
8ara prevenir problemas de acceso se modifica el par#metro %llo4Lverride de %ll a ,one:
se' .i ^s@A%%owOverri'e A%%@A%%owOverri'e #one@^ @etc@2tt'@con"@2tt'.con"
(e entra en el cliente 'y()L y se crean dos bases de datos y los respectivos permisos Osi no existenP:
91sB% .$ root .sesa9o
Jelco$e to the 9y2I> $onitor. Co$$ands end with ] or c%.
&our 9y2I> connection id is 5
2erver version" 5.).,, 2ource distri'ution
(y#e .hel#]. or .ch. for hel#. (y#e .cc. to clear the 'uffer2
mysql" create 'ata(ase asteriskS
Iuery <=D 1 row affected ().)2 sec!
mysql" create 'ata(ase asteriskc'r'(S
Iuery <=D 1 row affected ().)) sec!
mysql" 46A#T A== 06+V+=-4-S O# asteriskc'r'(.T TO asterisk$ser*%oca%2ost
+,-#T+7+-, <V Usesa9oUS
Iuery <=D ) rows affected ().)) sec!
mysql" 46A#T A== 06+V+=-4-S O# asterisk.T TO asterisk$ser*%oca%2ost +,-#T+7+-, <V
Usesa9oUS
Iuery <=D ) rows affected ().)) sec!
mysql" "%$s2 rivi%egesS
Iuery <=D ) rows affected ().)) sec!
mysql" B$it
Lye
(e descarga la ultima versin estable de .ree8BH:
c' @$sr@src
wget 2tt)@@9irror."ree(3.org@"ree(3.2.10.0.tar.gz
(e descomprime el paquete y se entra en la carpeta creada:
tar .3" "ree(3.2.10.0.tar.gz
c' "ree(3.2.10.0
(e crean las tablas para las bases de datos asteris& y asteris&cdrdb:
?EE
91sB% .$ root .sesa9o asterisk [ SP=@newinsta%%.sB%
91sB% .$ root .sesa9o asteriskc'r'( [ SP=@c'r;91sB%;ta(%e.sB%
(e reinicia %steris&:
@etc@init.'@asterisk restart
(e reinicia el servidor %pache y se configura para que arranque en autom#tico:
service 2tt' restart
c2kcon"ig 2tt' on
(e lanSa el script de instalacin de .ree8BH:
.@insta%%;a9
(e insertan los datos como aparecen en la imagen y al terminar se para .ree8BH:
@$sr@s(in@a9orta% sto
B>>
(e entra en el archivo de configuracin de .ree8BH y se modifican estas tres lneas Opass4ord para el
administrador de la pagina de los buSones de voS personales0 tipo de autentificacin para acceder a la
pagina de administracin del .ree8BH y la direccin I8 publica del servidor Linux0 respectivamenteP:
nano @etc@a9orta%.con"
/.@5/=?@N5-/:O.==ari5pass1ord
/?-:>F/==.>=
para que queden:
/.@5/=?@N5-/:O.==sesamo
/?-:>F/==.>=@-servidor !poner la @- publica del servidor Linux)
(e guardan los cambios y se inicia nuevamente .ree8BH:
@$sr@s(in@a9orta% start
*n el archivo rc2local se copia esta lnea para que el arranque sea autom#tico:
nano @etc@rc.%oca%
@$sr@s(in@a9orta% start
(e guardan los cambios y se entra a la pagina 4eb para administrar .ree8BH utiliSando la siguiente
direccin:
http://I8servidor
(e selecciona el enlace M.ree8BH %dminsitrationN:
B>1
(e pone como usuario admin y como contrasea admin2 8rimero en el menF %dmin c %dminisitrators
se cambia la contrasea del usuario admin:
(e pone la nueva contrasea y se presiona el botn M(ubmit !hangesN2 Luego desde el menF se
selecciona %dmin c 'odule %dmin2 (e averigua si hay actualiSaciones y se instalan:
B>:
/e la misma forma se pueden instalar los mdulos que se necesiten2 (e selecciona el menF ;eports c
.ree8BH (ystem (tatus y se controla que no hayan avisos0 errores de configuracin:
-na veS que se hayan corregido todos los avisos/errores:
B>3
Qa se puede empeSar con la configuracin de %steris& a trav5s de la +-I .ree8BH2
B>@
A?n'ice A
+nsta%ar CentOS 6.4 en $na 9aB$ina virt$a% con Virt$a%<o3
*n esta gua se ilustrar# como instalar el sistema operativo !entL( B2@ 3:bit en un maquina virtual
creada con el sistema de virtualiSacin 9irtualBLH2 *sta maquina se puede utiliSar como laboratorio
para traba$ar con el libro2
8ara iniciar se descarga 9irtualbox desde esta pagina:
https://4442virtualbox2org/4i&i//o4nloads
Luego se instala y se continua con la descarga de la I(L de !entL(:
http://centos2arcticnet4or&2ca/B2@/isos/i3AB/!entL(IB2@Ii3ABInetinstall2iso
-na veS terminada la descarga se crea la maquina virtual:
(e abre 9itualBox y se presiona el icono M,uevaN2 *n la ventana que aparecer#0 se selecciona el botn
M(iguienteN y se siguen los pasos mostrados en las im#genes:
#o9(re) !entL(Local
Siste9a Oerativo) Linux
Versi&n) ;ed 6at
*n la memoria ;%' para el sistema hu5sped0 hay que poner por lo menos ?1: 'b2 (i el sistema lo
permite0 seleccionar 1+B O1>:@ 'bP
B><
B>A
B>E
(e selecciona el icono marcado con el circulo y en la ventana que aparece se escoge la iso de !entL(
que se acaba de ba$ar2 /ebe quedar:
B1>
(e pasa a la configuracin de red:
(e habilita un %daptador y se escogen las opciones como aparecen en la pagina2 *n ,ombre hay que
poner la tar$eta de red instalada en el computador2 8ara terminar se presiona el botn M%ceptarN2
ya se puede iniciar la maquina2
B11
(e continua presionando la tecla *nter O*nvoP:
,o se realiSa el test del !/:
B1:
(e escoge el idioma2
*l tipo de teclado2
B13
*l tipo de instalacin Ova -;LP:
(e activa la tar$eta de red para las direcciones I8v@ y I8vB
la -;L: 2tt)@@9irror.centos.org@centos@6.3@os@i386
B1@
Inicia la descarga del sistema base:
-na veS terminada:
B1?
Derminada la primera fase se iniciar# la configuracin del sistema:
(e indica que los dispositivo utiliSando OdiscosP son comunes:
B1B
(e borran todos los datos presentes en el disco duro:
(e pone un nombre de dominio:
B1<
(e selecciona el huso horario:
(e configura la contrasea para el usuario root:
(e utiliSa todo el espacio disponible en el disco duro para la instalacin:
B1A
(e escriben los cambios en el disco duro:
(e escoge como tipo de instalacin M'inimalN:
B1E
Inicia la instalacin del sistema operativo2
!uando termine se presiona el botn reiniciar2 *l sistema se reiniciar# y como el !d todava est#
presente0 volver# a presentar la pagina de instalacin del sistema operativo2 (e cierra la ventana a
trav5s del menF 'aquina c !errar:
B:>
(e vuelve a la configuracin de la maquina virtual2 (e entra en el menF %lmacenamiento:
(e selecciona el icono evidenciado y en el menF que aparece se escoge la opcin M*liminar disco de la
unidad virtualN0 para que quede:
B:1
%hora se puede iniciar nuevamente la maquina virtual2 %l primer arranque se entra con nombre de
usuario root y la contrasea que se ha configurado a lo largo de la instalacin2 ,ormalmente cuando
!entL( se instala en local0 el cortafuegos viene configurado por defecto y arranca con una
configuracin b#sica2 (i se quiere0 se puede mover la configuracin predefinida:
9v @etc@s1scon"ig@ita(%es @etc@s1scon"ig@ita(%es.o%'
y reiniciar iptables:
service ita(%es restart
Ltra opcin es desactivar el cortafuegos y utiliSar el router para definir los puertos que se querr# de$ar
abiertos2
Ltra operacin que hay que e$ecutar es desactivar (elinux:
8rimero se instala el editor ,%,L:
1$9 insta%% nano
luego se abre el archivo de configuracin de (elinux:
nano @etc@se%in$3@con"ig
'odificar las distintas opciones de forma que el archivo quede de la siguiente manera:
8 (his file controls the state of 2E>inuB on the syste$.
8 2E>ACEO7 can take one of these three values"
8 enforcin% - 2E>inuB security #olicy is enforced.
8 #er$issive - 2E>inuB #rints warnin%s instead of enforcin%.
8 disa'led - Co 2E>inuB #olicy is loaded.
2E>ACEO7disa'led
8 2E>ACEO(&FE7 can take one of these two values"
8 tar%eted - (ar%eted #rocesses are #rotectedD
8 $ls - 9ulti >evel 2ecurity #rotection.
2E>ACEO(&FE7tar%eted
(e guardan los cambios y se actualiSa el sistema:
1$9 $'ate .1
(i se quiere configurar el servidor con una I8 est#tica se instala la relativa utilidad:
1$9 insta%% s1ste9.con"ig.network.t$i
y se e$ecuta:
B::
s1ste9.con"ig.network
*n la ventana que aparece se escoge Mdevice configurationN:
(e selecciona la tar$eta de red instalada en el servidor:
(e configura la I8 est#tica:
Static +0) direccin I8 que se quiere asignar al servidor Otiene que estar dentro del rango configurado
en el routerP
#et9ask) normalmente el valor es :??2:??2:??2>
,e"a$%t 4atewa1 +0) direccin I8 del router
B:3
0ri9ar1 ,#S Server) direccin I8 del router
Secon'ar1 ,#S Server) se puede de$ar en blanco
(e presiona el botn L& y se vuelve a la pagina anterior donde se escoge el botn (ave y en la pagina
principal se escoge /,( configuration:
*n la pagina que sigue se escoge un nombre de dominio y se configura nuevamente el /,( primario:
(e presiona el botn LT y en la pagina que sigue el botn (aveV)uit2 /e esta forma se sale de la
aplicacin2 8ara terminar0 se activa una /'J en el router para la I8 del servidor Linux2 -n e$emplo:
(e vuelve a la maquina virtual y se actualiSa el sistema:
B:@
1$9 .1 $'ate
(e reinicia el servidor
re(oot
-na veS que se acceda nuevamente al sistema se retoma el libro a partir del p#rrafo 12:2
B:?
A?n'ice <
=icencia 4#> 7,=
%&' Free (ocu)entation *icense
+ersion 1$,, , &ove)-er 200.
&opyright '&( )***, )**1, )**), )**+, )**, Free #oft$are Foundation, -nc.
.http///fsf.org/0
1"eryone is permitted to copy and distribute "erbatim copies
of this !icense document, but changing it is not a!!o$ed.
*. P21345L1
6he purpose of this License is to ma7e a manua!, te8tboo7, or other
functiona! and usefu! document 9free9 in the sense of freedom/ 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 $or7, $hi!e not being considered responsib!e
for modifications made by others.
6his License is a 7ind of 9copy!eft9, $hich means that deri"ati"e
$or7s 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 documentation/ a free
program shou!d come $ith manua!s pro"iding the same freedoms that the
soft$are does. 5ut this License is not !imited to soft$are manua!s%
it can be used for any te8tua! $or7, regard!ess of sub;ect matter or
$hether it is pub!ished as a printed boo7. :e recommend this License
principa!!y for $or7s $hose purpose is instruction or reference.
1. 3PPL-&35-L-6< 3ND D1F-N-6-=N#
6his License app!ies to any manua! or other $or7, 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
$or7 under the conditions stated herein. 6he 9Document9, be!o$,
refers to any such manua! or $or7. 3ny member of the pub!ic is a
!icensee, and is addressed as 9you9. <ou accept the !icense if you
copy, modify or distribute the $or7 in a $ay re?uiring permission
under copyright !a$.
3 94odified Version9 of the Document means any $or7 containing the
Document or a portion of it, either copied "erbatim, or $ith
modifications and/or trans!ated into another !anguage.
3 9#econdary #ection9 is a named appendi8 or a front>matter section of
the Document that dea!s e8c!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. '6hus, if the Document is in
part a te8tboo7 of mathematics, a #econdary #ection may not e8p!ain
any mathematics.( 6he 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.
6he 9-n"ariant #ections9 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. 6he Document may contain Aero
-n"ariant #ections. -f the Document does not identify any -n"ariant
#ections then there are none.
6he 9&o"er 6e8ts9 are certain short passages of te8t that are !isted,
as Front>&o"er 6e8ts or 5ac7>&o"er 6e8ts, in the notice that says that
the Document is re!eased under this License. 3 Front>&o"er 6e8t may
be at most B $ords, and a 5ac7>&o"er 6e8t may be at most )B $ords.
3 96ransparent9 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 te8t editors or 'for images composed of
pi8e!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 te8t formatters or
for automatic trans!ation to a "ariety of formats suitab!e for input
to te8t formatters. 3 copy made in an other$ise 6ransparent fi!e
format $hose mar7up, or absence of mar7up, has been arranged to th$art
or discourage subse?uent modification by readers is not 6ransparent.
3n image format is not 6ransparent if used for any substantia! amount
of te8t. 3 copy that is not 96ransparent9 is ca!!ed 9=pa?ue9.
18amp!es of suitab!e formats for 6ransparent copies inc!ude p!ain
3#&-- $ithout mar7up, 6e8info input format, La6eC input format, #G4L
or C4L using a pub!ic!y a"ai!ab!e D6D, and standard>conforming simp!e
D64L, Post#cript or PDF designed for human modification. 18amp!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, #G4L or C4L for $hich the D6D and/or
processing too!s are not genera!!y a"ai!ab!e, and the
machine>generated D64L, Post#cript or PDF produced by some $ord
processors for output purposes on!y.
6he 96it!e Page9 means, for a printed boo7, 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 $or7s in
formats $hich do not ha"e any tit!e page as such, 96it!e Page9 means
the te8t near the most prominent appearance of the $or7@s tit!e,
preceding the beginning of the body of the te8t.
6he 9pub!isher9 means any person or entity that distributes copies of
the Document to the pub!ic.
3 section 91ntit!ed C<F9 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
B:A
te8t that trans!ates C<F in another !anguage. 'Dere C<F stands for a
specific section name mentioned be!o$, such as 93c7no$!edgements9,
9Dedications9, 91ndorsements9, or 9Distory9.( 6o 9Preser"e the 6it!e9
of such a section $hen you modify the Document means that it remains a
section 91ntit!ed C<F9 according to this definition.
6he Document may inc!ude :arranty Disc!aimers ne8t to the notice $hich
states that this License app!ies to the Document. 6hese :arranty
Disc!aimers are considered to be inc!uded by reference in this
License, but on!y as regards disc!aiming $arranties/ any other
imp!ication that these :arranty Disc!aimers may ha"e is "oid and has
no effect on the meaning of this License.
). V12536-4 &=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 ma7e or distribute. Do$e"er, you may accept
compensation in e8change 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 GU3N6-6<
-f you pub!ish printed copies 'or copies in media that common!y ha"e
printed co"ers( of the Document, numbering more than 1**, and the
Document@s !icense notice re?uires &o"er 6e8ts, you must enc!ose the
copies in co"ers that carry, c!ear!y and !egib!y, a!! these &o"er
6e8ts/ Front>&o"er 6e8ts on the front co"er, and 5ac7>&o"er 6e8ts on
the bac7 co"er. 5oth co"ers must a!so c!ear!y and !egib!y identify
you as the pub!isher of these copies. 6he 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 te8ts 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 1**, you must either inc!ude a machine>readab!e 6ransparent
copy a!ong $ith each =pa?ue copy, or state in or $ith each =pa?ue copy
a computer>net$or7 !ocation from $hich the genera! net$or7>using
pub!ic has access to do$n!oad using pub!ic>standard net$or7 protoco!s
a comp!ete 6ransparent copy of the Document, free of added materia!.
-f you use the !atter option, you must ta7e reasonab!y prudent steps,
$hen you begin distribution of =pa?ue copies in ?uantity, to ensure
B:E
that this 6ransparent 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
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. 4=D-F-&36-=N#
<ou may copy and distribute a 4odified Version of the Document under
the conditions of sections ) and abo"e, pro"ided that you re!ease
the 4odified Version under precise!y this License, $ith the 4odified
Version fi!!ing the ro!e of the Document, thus !icensing distribution
and modification of the 4odified Version to $hoe"er possesses a copy
of it. -n addition, you must do these things in the 4odified Version/
3. Use in the 6it!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.
5. List on the 6it!e Page, as authors, one or more persons or entities
responsib!e for authorship of the modifications in the 4odified
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 6it!e page the name of the pub!isher of the
4odified Version, as the pub!isher.
D. Preser"e a!! the copyright notices of the Document.
1. 3dd 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 4odified Version under the
terms of this License, in the form sho$n in the 3ddendum be!o$.
G. Preser"e in that !icense notice the fu!! !ists of -n"ariant #ections
and re?uired &o"er 6e8ts gi"en in the Document@s !icense notice.
D. -nc!ude an una!tered copy of this License.
-. Preser"e the section 1ntit!ed 9Distory9, Preser"e its 6it!e, and add
to it an item stating at !east the tit!e, year, ne$ authors, and
pub!isher of the 4odified Version as gi"en on the 6it!e Page. -f
there is no section 1ntit!ed 9Distory9 in the Document, create one
stating the tit!e, year, authors, and pub!isher of the Document as
gi"en on its 6it!e Page, then add an item describing the 4odified
Version as stated in the pre"ious sentence.
E. Preser"e the net$or7 !ocation, if any, gi"en in the Document for
pub!ic access to a 6ransparent copy of the Document, and !i7e$ise
the net$or7 !ocations gi"en in the Document for pre"ious "ersions
it $as based on. 6hese may be p!aced in the 9Distory9 section.
<ou may omit a net$or7 !ocation for a $or7 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 1ntit!ed 93c7no$!edgements9 or 9Dedications9,
Preser"e the 6it!e of the section, and preser"e in the section a!!
B3>
the substance and tone of each of the contributor ac7no$!edgements
and/or dedications gi"en therein.
L. Preser"e a!! the -n"ariant #ections of the Document,
una!tered in their te8t and in their tit!es. #ection numbers
or the e?ui"a!ent are not considered part of the section tit!es.
4. De!ete any section 1ntit!ed 91ndorsements9. #uch a section
may not be inc!uded in the 4odified Version.
N. Do not retit!e any e8isting section to be 1ntit!ed 91ndorsements9
or to conf!ict in tit!e $ith any -n"ariant #ection.
=. Preser"e any :arranty Disc!aimers.
-f the 4odified 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. 6o do this, add their tit!es to the
!ist of -n"ariant #ections in the 4odified Version@s !icense notice.
6hese tit!es must be distinct from any other section tit!es.
<ou may add a section 1ntit!ed 91ndorsements9, pro"ided it contains
nothing but endorsements of your 4odified Version by "arious
parties>>for e8amp!e, statements of peer re"ie$ or that the te8t 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 6e8t, and a
passage of up to )B $ords as a 5ac7>&o"er 6e8t, to the end of the !ist
of &o"er 6e8ts in the 4odified Version. =n!y one passage of
Front>&o"er 6e8t and one of 5ac7>&o"er 6e8t may be added by 'or
through arrangements made by( any one entity. -f the Document a!ready
inc!udes a co"er te8t 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 e8p!icit
permission from the pre"ious pub!isher that added the o!d one.
6he 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 4odified Version.
B. &=45-N-NG D=&U41N6#
<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 $or7 in its
!icense notice, and that you preser"e a!! their :arranty Disc!aimers.
6he combined $or7 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, ma7e 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 7no$n, or e!se a uni?ue number.
4a7e the same ad;ustment to the section tit!es in the !ist of
-n"ariant #ections in the !icense notice of the combined $or7.
B31
-n the combination, you must combine any sections 1ntit!ed 9Distory9
in the "arious origina! documents, forming one section 1ntit!ed
9Distory9% !i7e$ise combine any sections 1ntit!ed 93c7no$!edgements9,
and any sections 1ntit!ed 9Dedications9. <ou must de!ete a!! sections
1ntit!ed 91ndorsements9.
J. &=LL1&6-=N# =F D=&U41N6#
<ou may ma7e 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 e8tract 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 e8tracted document, and fo!!o$ this
License in a!! other respects regarding "erbatim copying of that
document.
+. 3GG21G36-=N :-6D -ND1P1ND1N6 :=2I#
3 compi!ation of the Document or its deri"ati"es $ith other separate
and independent documents or $or7s, in or on a "o!ume of a storage or
distribution medium, is ca!!ed an 9aggregate9 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! $or7s permit.
:hen the Document is inc!uded in an aggregate, this License does not
app!y to the other $or7s in the aggregate $hich are not themse!"es
deri"ati"e $or7s of the Document.
-f the &o"er 6e8t 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 6e8ts may be p!aced on
co"ers that brac7et 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 brac7et the $ho!e
aggregate.
,. 623N#L36-=N
6rans!ation is considered a 7ind of modification, so you may
distribute trans!ations of the Document under the terms of section H.
2ep!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! 1ng!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!.
B3:
-f a section in the Document is 1ntit!ed 93c7no$!edgements9,
9Dedications9, or 9Distory9, the re?uirement 'section H( to Preser"e
its 6it!e 'section 1( $i!! typica!!y re?uire changing the actua!
tit!e.
K. 6124-N36-=N
<ou may not copy, modify, sub!icense, or distribute the Document
e8cept as e8press!y pro"ided under this License. 3ny 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 e8p!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
J* days after the cessation.
4oreo"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 $or7( from that
copyright ho!der, and you cure the "io!ation prior to * days after
your receipt of the notice.
6ermination 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.
1*. FU6U21 21V-#-=N# =F 6D-# L-&1N#1
6he 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
http///$$$.gnu.org/copy!eft/.
1ach "ersion of the License is gi"en a distinguishing "ersion number.
-f the Document specifies that a particu!ar numbered "ersion of this
License 9or any !ater "ersion9 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 pro8y can decide $hich future "ersions of this
License can be used, that pro8y@s pub!ic statement of acceptance of a
"ersion permanent!y authoriAes you to choose that "ersion for the
Document.
11. 21L-&1N#-NG
B33
94assi"e 4u!tiauthor &o!!aboration #ite9 'or 944& #ite9( means any
:or!d :ide :eb ser"er that pub!ishes copyrightab!e $or7s and a!so
pro"ides prominent faci!ities for anybody to edit those $or7s. 3
pub!ic $i7i that anybody can edit is an e8amp!e of such a ser"er. 3
94assi"e 4u!tiauthor &o!!aboration9 'or 944&9( contained in the site
means any set of copyrightab!e $or7s thus pub!ished on the 44& site.
9&&>5<>#39 means the &reati"e &ommons 3ttribution>#hare 3!i7e .*
!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.
9-ncorporate9 means to pub!ish or repub!ish a Document, in $ho!e or in
part, as part of another Document.
3n 44& is 9e!igib!e for re!icensing9 if it is !icensed under this
License, and if a!! $or7s that $ere first pub!ished under this License
some$here other than this 44&, and subse?uent!y incorporated in $ho!e or
in part into the 44&, '1( had no co"er te8ts or in"ariant sections, and
')( $ere thus incorporated prior to No"ember 1, )**,.
6he operator of an 44& #ite may repub!ish an 44& contained in the site
under &&>5<>#3 on the same site at any time before 3ugust 1, )**K,
pro"ided the 44& is e!igib!e for re!icensing.
3DD1NDU4/ Do$ to use this License for your documents
6o 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 page/
&opyright 'c( <132 <=U2 N341.
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 6e8ts, and no 5ac7>&o"er 6e8ts.
3 copy of the !icense is inc!uded in the section entit!ed 9GNU
Free Documentation License9.
-f you ha"e -n"ariant #ections, Front>&o"er 6e8ts and 5ac7>&o"er 6e8ts,
rep!ace the 9$ith...6e8ts.9 !ine $ith this/
$ith the -n"ariant #ections being L-#6 6D1-2 6-6L1#, $ith the
Front>&o"er 6e8ts being L-#6, and $ith the 5ac7>&o"er 6e8ts being L-#6.
-f you ha"e -n"ariant #ections $ithout &o"er 6e8ts, or some other
combination of the three, merge those t$o a!ternati"es to suit the
situation.
-f your document contains nontri"ia! e8amp!es of program code, $e
recommend re!easing these e8amp!es in para!!e! under your choice of
free soft$are !icense, such as the GNU Genera! Pub!ic License,
to permit their use in free soft4are2
B3@

Vous aimerez peut-être aussi