0% encontró este documento útil (1 voto)
338 vistas239 páginas

Libro Asterisk VozToVoice

Cargado por

Ivan Rojas
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (1 voto)
338 vistas239 páginas

Libro Asterisk VozToVoice

Cargado por

Ivan Rojas
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Curso Asterisk 1.6.0.X v. 1.

0
Enero 2010

By

VozToVoice

[Link]

Convenciones tipogrficas.
Negrita = 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 librer a Cursiva: respuesta del servidor Linux a los comandos !LI" indica que estamos traba#ando en la consola de $steris% mysql" indica que estamos traba#ando en el cliente &y'(L

i encuentran a!guna incorrecci"n o errata pue#en escri$ir a! autor% asannucci&[Link].

)ste documento se publica ba#o la *+, -ree .ocumentation License/ versin 012 o sucesivas/ publicadas por la -ree 'oft3are -oundation1 )st4 permitido copiar/ distribuir y/o modificar este documento ba#o los t5rminos indicados en la licencia1 ,na copia integral de la licencia es presente en la ap5ndice . de este libro1

Copyright (C)

2010-2015

Andrea Sannucci

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1. or any !ater "ersion pub!ished by the Free #oft$are Foundation% $ith no &n"ariant #ections, no Front'(o"er )e*ts, and no +ac,'(o"er )e*ts.

ii

'N('CE
Capitu!o ' ) 'nsta!aci"n #e Asterisk 6111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 0 010 ,tilidades/ librer as/ dependencias 017 .$8.i 01710 .$8.i en Linode 01717 .$8.i en un servidor !ent:' 012 -$</ *oogle=al%/ $steris% 01? $steris% $ddons @ &y'(L/ &A2/ !hanBmobile 01?10 !hanBmobile 0 9 9 ; > 07 0C

Capitu!o '' ) Configuraci"n #e Asterisk 6111111111111111111111111111111111111111111111111111111111111111111111111111111111 0> 710 Instalar y configurar un cortafuego 717 !arpetas y archivos 712 &Dsica en espera y &A2 71? 'ip1conf Eprotocolo 'IAF 71C )xtensions1conf Eplan de llamadasF 71C10 )l contexto subscribe 71C17 <Hlite y el plan de llamadas 71C12 Llamadas entre extensiones 71C1? Las &acros 719 Joicemail1conf @ buKn de voK 71G Iax1conf @ Arotocolo I$<7 71; -eatures1conf 71;10 Integracin de features1conf con la aplicacin .ial 71> Logger1conf 710I -ollo3me1conf EsiguemeF 7100 )+,& 7107 Las conferencias Emeetme1confF 7102 $steris% *,I 710? La gestin de las colas 710?10 Los agentes 710?17 queues1conf 0> 77 7? 7G 2? 2> ?I ?7 ?2 ?9 C2 C9 92 9; G0 GC G; ;7 ;C ;9 ;G

Capitu!o ''' ) Asterisk * !a + TN 6111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 >0 210 Instalacin dispositivo <0IIA 217 !onfiguracin <0IIA en $steris% >7 >2

Capitu!o 'V , 'V- 61111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 >G ?10 *rabacin de las locuciones ?17 Alan de llamadas y IJL >G >> iii

Capitu!o V ) Asterisk * .AX 611111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 0I7 C10 $steris% con I$<modem y 8ylafax C17 $steris% y el protocolo =2; C12 )nv o de -$< 0I7 007 00;

Capitu!o V' ) Asterisk -ea!ti/e 6111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 070 910 Joicemail y :.B! 917 :.B! y !.L 912 &eet&e Lealtime 070 02? 029

Capitu!o V'' ) Asterisk * TT 0te1t to speec23 61111111111111111111111111111111111111111111111111111111111111111111111 0?I G10 -estival G17 !epstral 0?I 0?7

Capitu!o V''' ) Cone1iones entre servi#ores Asterisk 61111111111111111111111111111111111111111111111111111111111 0?9 ;10 !onectar dos servidores $steris% con el protocolo 'IA ;17 !onectar dos 'ervidor $steris% con el protocolo I$<7 ;12 .,+.i 0?9 0?; 0C0

Capitu!o 'X ) 4penfire * Asterisk 6111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 097 >10 Instalacion de :penfire >17 Instalar el Alugin 'IAAhone en :penfire >12 )l Alugin $steris%HI& >1? $steris% como cliente en :penfire >1C !onectar dos servidores :penfire >19 :penfire !onnection &anager 097 0GI 0G9 0;7 0;C 0;;

Capitu!o X ) +otpourri 6111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 0>7 0I10 -uncBodbc1conf H :.B! y Base de datos 0I17 $steris% y *oogle=al% 0I12 $*I y despertador 0I1? -ail7ban Ap5n#ice A @ $steris% $plicaciones Ap5n#ice 6 @ $steris% -unciones Ap5n#ice C @ Alan de llamadas Ap5n#ice ( @ *+, -ree .ocumentation License 0>7 0>? 0>; 0>> 7I7 702 770 77G iv

Capitu!o '
'nsta!aci"n #e Asterisk
1.1 7ti!i#a#es8 !i$rer9as * #epen#encias

Asterisk es el programa m4s usado y conocido para mane#ar una AB< 01 Aara una lista completa de las funcionalidades brindadas visiten la p4gina de los desarrolladores71 )ntre ellas: Legistro de llamadas .esv o de llamadas =rasferencia de llamadas !onferencias )+,&2 &Dsica en espera *estin de colas Ecall centerF 'oporte para tar#etas -<:?/ -<'C y digitales

)ste manual abarca la instalacin de $steris% en un JA' E'ervidor Jirtual ArivadoF y es valida para cualquier 'ervidor Linux !ent:'1 !on el JA' la venta#a es tener una AB< siempre activa/ independiente de la banda ancha disponible en la casa/oficina y evita tener una computadora dedicada y siempre encendida1 8ay empresas que ofrecen JA' a costos relativamente ba#os1 )ntre todas hay dos que tienen una ptima relacin calidad/precio1 La primera es 'lice8ost9 que con 7I dlares mensuales brinda un JA' de 7C9 &egabyte de memoria L$&/ 0I *igabyte de disco duro/ 0II *igabyte de trafico1 La segunda empresa es LinodeG que con 0>/>C dlares mensuales brinda una JA' de 29I &egabyte de memoria L$&/ 09 *igabyte de disco duro y 7II *igabyte de trafico1 La distribucin Linux que se utiliKar4 para la instalacin de $steris% es CentOS8/ porque es la m4s conocida/ utiliKada y funcional para los fines de este manual1
0 ,n +6X o +A6X Esiglas en ingl5s de Private Branch Exchange y Private Automatic Branch Exchange para A$B<F cuya traduccin al espaol ser a Central secundaria privada automtica/ es cualquier central telefnica conectada directamente a la red pDblica de tel5fono por medio de l neas troncales para gestionar/ adem4s de las llamadas internas/ las entrantes y/o salientes con autonom a sobre cualquier otra central telefnica1 )ste dispositivo generalmente pertenece a la empresa que lo tiene instalado y no a la compa a telefnica/ de aqu el ad#etivo privado a su denominacin1 EMi%ipediaF 7 3331asteris%1org/features 2 [Link] ? .X4 EForeign Exchange OfficeF es un dispositivo de computador que permite conectar 5ste a la red telefnica conmutada y mediante un soft3are especial/ realiKar y recibir llamadas de tel5fono1 C .X [Link] E1c2ange tationF es el conector en una central telefnica o en la pared de nuestro hogar/ que permite conectar un tel5fono analgico est4ndar1 9 3331slicehost1com G 3331linode1com ; 3331centos1org

Aara mane#ar el servidor Linux desde una computadora con sistema operativo &icrosoft Mindo3s se debe utiliKar el programa Putty>1 'e descarga y se abre dando clic dos veces en el icono del programa1 $parecer4 la siguiente ventana:

'e coloca la direccin IA del JA' en la casilla N8ost name/ or IAaddressO/ se de#a en Aort el numero 77 y se presiona el botn :pen1 $parecer4 una nueva ventana:

> )s un cliente ''8/ =elnet/ rlogin y =!A ra3 distribuido ba#o una licencia libre1

'e introducen las credenciales para acceder al servidor remoto1 'e digita root y se presiona la tecla env o1 !uando el sistema lo pide/ se digita la contrasea1 Aara la conexin desde un servidor Linux el comando es: ss2 root&ipservi#orre/oto 'i no se usa el puerto est4ndar E77F habr4 que indicarlo de la siguiente forma: ss2 )p 20000 root&ipservi#orre/oto ,na veK dentro del servidor Linux se puede empeKar con la instalacin de $steris%1 $ntes que nada se necesita instalar un buen editor de textos como NANO/ indispensable para modificar los archivos de configuracin de $steris% y en general para crear/modificar cualquier archivo de texto1 Aara instalar +$+: el comando es: *u/ insta!! nano YUM es un programa que permite gestionar todos los paquetes precompilados para la distribucin Linux !ent:'1 Aara una lista de las opciones disponibles se usa el siguiente comando: *u/ ))2e!p ,na buena practica es actualiKar el sistema: *u/ up#ate 'e continua con la instalacin de Vorbis Eun codificador/decodificador de archivos audioF y las relativas 2

librer as: *u/ insta!! !i$vor$is !i$vor$is)#eve! vor$is)too!s !i$ogg !i$ogg)#eve! Aara instalar la funcin CURL: *u/ insta!! cur! cur!)#eve! !i$i#n)#eve! 'e sigue con unas cuantas utilidades y librer as necesarias para la compilacin de las fuentes: *u/ insta!! gcc ncurses ncurses)#eve! /ake gcc)c:: !i$ter/cap !i$ter/cap)#eve! z!i$ z!i$)#eve! !i$too! $ison $ison)#eve! openss!)#eve! $zip2 $zip2)#eve! wget newt newt)#eve! 'i se quiere utiliKar MySQL0I como base de datos predefinida: *u/ insta!! /*s;! /*s;!)server /*s;!)#eve! OD C!! para crear conexiones a bases de datos: *u/ insta!! uni14(6C uni14(6C)#eve! /*s;!)connector)o#$c !i$too!)!t#!)#eve! ,n sintetiKador vocal EfestivalF: *u/ insta!! festiva! festiva!)#eve! Spee"!# es un codificador decodificador espec ficamente diseado para la compresin de la voK1 'e instalar4 partiendo de las fuentes: c# <usr<src wget 2ttp%<<#own!oa#[Link]<re!eases<spee1<spee1)[Link] Aara descomprimirlo: tar )1f spee1)[Link] 'e entra en la carpeta creada y se compila: c# spee1)1.2rc1 .<configure ))prefi1=<usr /ake /ake insta!!
0I >* ?@ es un sistema de gestin de base de datos relacional/ multihilo y multiusuario1 EMi%ipediaF1 La pagina principal del programa: [Link] 00 [Link] 07 [Link]

Aara terminar se actualiKan las librer as: !#config )v 'e continua con un decodificador/codificador &A2 H Lame1 Ptil para usar mDsica en espera en formato &A21 c# <usr<src wget 2ttp%<<ufpr.#!.[Link]<sourceforge<!a/e<!a/e)ABC)[Link] 'e descomprime: tar )1f !a/e)ABC)[Link] 'e entra en la capeta de Lame: c# !a/e)ABC)2 'e compilan las fuentes: .<configure ))prefi1=<usr /ake /ake insta!! 'e termina con el comando: !#config )v para actualiKar las librer as1 Aara NmanipularO los archivos &A2 Epor e#emplo para ba#ar la calidad del samplingF antes de compilar ':< se necesita la librer a $ibma%1 Aara instalarla: c# <usr<src wget 2ttp%<<pr#own!oa#[Link]</a#<!i$/a#)0.1D.1$.[Link] tar )1f !i$/a#)0.1D.1$.[Link] c# !i$/a#)0.1D.1$ .<configure ))prefi1=<usr /ake /ake insta!! C

$ctualiKar las librer as: !#config )v Aara terminar esta primera parte se instalar4 el programa ':<02 E'ound e<changeF muy Dtil para convertir archivos audio de un formato a otro1 c# <usr<src wget 2ttp%<<ufpr.#!.[Link]<sourceforge<so1<so1)[Link] se descomprime: tar )1f so1)[Link] 'e )ntra en la carpeta: c# so1)1E.A.0 y se compila: .<configure ))prefi1=<usr /ake /ake insta!! 'e actualiKan las librer as: !#config )v 1.2 (AF(' )l paquete DAD&' [Link] $steris% 8ard3are .evice InterfaceF permite cargar los drivers y configurar distintos tipos de tar#etas en $steris% Eanalgicas/ digitales/ L.'I/I'.+/ cancelador de )!8:F1 $steris%/ adem4s/ se apoya en .$8.I para la generacin del NtimingO indispensable para las conferencias y el trun%ing I$<71 1.2.1 (AF(' en @ino#e Los JA' alquilados en Linode utiliKan como sistema de virtualiKacin <)+0?1 Aor eso para una correcta instalacin de .$8.I se tendr4 que seguir el procedimiento que sigue1 Arimero se averigua la versin del %ernel que se est4 usando: una/e )r
02 [Link] 0? [Link]

,n e#emplo del resultado del comando es: [Link]-linode22 'e crea la carpeta donde se guardar4n las fuentes del %ernel: /k#ir <usr<src<kerne! se entra en la carpeta c# <usr<src<kerne! 'e descargan las fuentes desde la pagina dedicada de Linode0C1 Aara el e#emplo arriba mencionado ser a: wget 2ttp%<<www.!ino#[Link]/<src<2.6.1C.C)!ino#[Link].$z2 'e descomprime: tar )1f 2.6.1C.C)!ino#[Link].$z2 'e crea un lin% simblico a las fuentes descargadas: c# <!i$</o#u!es<2.6.1C.C)!ino#e22< !n )s <usr<src<kerne!<2.6.1C.C)!ino#e22< $ui!# 'e preparan las fuentes para la instalacin de .$8.I: c# <usr<src<kerne!<2.6.1C.C)!ino#e22 /ake )f >akefi!e c!ean /ake )f >akefi!e o!#config /ake )f >akefi!e scripts<genks*/s< /ake )f >akefi!e prepare =erminada esta operacin empieKa el proceso de instalacin de .$8.I: c# <usr<src wget 2ttp%<<#own!oa#[Link]<pu$<te!ep2on*<#a2#i)!inu1<#a2#i)!inu1)[Link] tar )1f #a2#i)!inu1)[Link] c# #a2#i)!inu1)2.2.1 /ake /ake insta!! 0C [Link] G

(AF(' Too!s% c# <usr<src wget 2ttp%<<#own!oa#[Link]<pu$<te!ep2on*<#a2#i)too!s<#a2#i)too!s)[Link] tar )1f #a2#i)too!s)[Link] c# #a2#i)too!s)2.2.1 .<configure /ake /ake insta!! /ake config 'e modifican dos par4metros en el script de arranque de .$8.I nano <etc<init.#<#a2#i estas dos l neas: modprobe dahdi modprobe dahdi_dummy 2> /dev/null para que queden: modprobe -f dahdi modprobe -f dahdi_dummy 2> /dev/null 1.2.2 (AF(' en Cent4 erver

'i se est4 utiliKando un servidor !ent:' en lugar de un JA' ELinodeF los pasos a seguir son: c# <usr<src *u/ insta!! kerne!)#eve! kerne!)2ea#ers wget 2ttp%<<#own!oa#[Link]<pu$<te!ep2on*<#a2#i)!inu1<re!eases<#a2#i)!inu1)[Link].[Link] tar )1f #a2#i)!inu1)[Link].[Link] c# #a2#i)!inu1)[Link] /ake /ake insta!! 'e 'igue con dadhiHtools: c# <usr<src

wget 2ttp%<<#own!oa#[Link]<pu$<te!ep2on*<#a2#i)too!s<re!eases<#a2#i)too!s)[Link] tar )1f #a2#i)too!s)[Link] c# #a2#i)too!s)2.2.0 .<configure /ake /ake insta!! Aara que arranque en autom4tico: /ake config 1.A .AX8 Goog!eTa!k8 Asterisk Aara el soporte fax hay que instalar 'pan.'A091 'pan.'A es un procesador de seales digitales y en $steris% su funcin es permitir el env o y la recepcin de faxes1 =raba#a con archivos =iff y para compilarlo hay que instalar esas librer as: *u/ insta!! !i$tiff !i$tiff)#eve! 'e puede continuar con la descarga y instalacin de 'pan.'A c# <usr<src wget 2ttp%<<[Link])[Link]<#own!oa#s<span#sp<span#sp)[Link] tar )1f span#sp)[Link] c# span#sp)0.0.6 .<configure ))prefi1=<usr /ake /ake insta!! 'e termina actualiKando las librerias: !#config )v $steris% tiene la posibilidad de conectarse a (oog$e)a$k0G o a otro servidor de tipo Qabber0; como cliente1 Aara que sea posible se debe instalar (nut$s y 'kseme$1 *nutls permite crear conexiones basadas en el protocolo =L'0>1 )n !ent:' est4n disponibles los paquetes precompilados:
09 0G 0; 0> [Link] [Link] [Link] [Link]

>

*u/ insta!! gnut!s gnut!s)#eve! gnut!s)uti!s $hora se puede instalar i%semel: c# <usr<src wget 2ttp%<<ikse/e!.goog!eco#[Link]/<fi!es<ikse/e!)[Link] tar )1f ikse/e!)[Link] c# ikse/e!)1.E .<configure ))prefi1=<usr /ake /ake c2eck !on ma%e chec% se verifica que la compilacin est5 sin errores1 )l comando e#ecuta una serie de test y devuelve el resultado1 Aara completar la instalacin: /ake insta!! 'e actualiKan las librer as: !#config )v Instalamos Sen%mai$/ un servidor de correo electrnico1 $steris% lo utiliKa para enviar correos de notificacin cada veK que llegue un correo de voK a las casillas configuradas en el buKn de voK1 *u/ insta!! sen#/ai! sen#/ai!)#eve! sen#/ai!)cf :penL.$A es la versin open source del protocolo Light3eight .irectory $ccess1 +ormalmente se utiliKa para crear un directorio de usuarios que puede ser consultado y/o modificado desde remoto1 &uchos programas implementan la posibilidad de conectarse a un servidor :penL.$A y $steris%/ desde la versin 0191</ presenta esta posibilidad: *u/ insta!! co/pat)open!#ap open!#ap open!#ap)c!ients open!#ap)#eve! open!#ap)servers '+&A es el Arotocolo 'imple de $dministracin de Led y sirve para controlar y monitorear el desempeo de nuestro servidor Linux1 )n $steris% permite monitorear/ entre otras cosas/ los canales y las llamadas1 *u/ insta!! net)sn/p net)sn/p)#eve! net)sn/p)!i$s net)sn/p)per! net)sn/p)uti!s p2p)sn/p

0I

$hora se puede empeKar con la instalacin de $steris% Eversin 0191<F1 Arimero se descargan las fuentes: c# <usr<src wget 2ttp%<<#own!oa#[Link]<pu$<te!ep2on*<asterisk<asterisk)1.6.0)[Link] se descomprime: tar )1f asterisk)1.6.0)[Link] 'e entra en la carpeta: c# asterisk)1.6.0.2D 'e compila: .<configure /ake /enuse!ect $parecer4:

.esde este menD se pueden configurar todos los mdulos que se quiere que $steris% instale1 'e averigua si el modulo Qabber est4 seleccionado1 Ba#ar con los cursores del teclado hasta NLesource &odulesO y averiguar que a lado de resB#abber haya un asterisco1 'i no lo hay y aparecen tres <<< significa que no se puede instalar Ehubo seguramente algDn problema con la instalacin de i%semelF1 00

'e puede navegar entre los varios menDs para seleccionar/deseleccionar los mdulos1 Aara guardar los cambios desde el menD principal hundir el botn N'ave R )xitO1 $hora se compila e instala $steris%: /ake /ake insta!! Aara los archivos de configuracin de muestra: /ake sa/p!es Aara el arranque autom4tico al boot de Linux: /ake config 1.E Asterisk A##ons , >* ?@8 >+A8 C2anI/o$i!e $steris% $ddons es un paquete que aade cuatro funcionalidades principales a la centralita $steris%: 01 71 21 ?1 La posibilidad de tener un registro de las llamadas en una base de datos &y'(LS ,tiliKar archivos &A27I para la mDsica en espera $adir el protocolo 827270 Eversin propietariaF )l canal chanBmobile que permite conectar/ via bluetooth/ un celular a la centralita y usarlo como *ate3ay *'& y/ si el celular lo soporta/ env o de '&'1

$ntes de empeKar arrancar el servidor &y'(L )l comando es: <etc<init.#</*s;!# start Aara que arranque cada veK que se inicia el servidor Linux: c2kconfig /*s;!# on 'e crea una contrasea para el usuario root:

7I

P!"-# Audio $ayer %/ m4s conocido como >+A/ es un formato de audio digital comprimido con p5rdida desarrollado por el &oving Aicture )xperts *roup E&A)*F para formar parte de la versin 0 Ey posteriormente ampliado en la versin 7F del formato de v deo &A)*1 )l mp2 est4ndar es de ?? %8K y un bitrate de 07; %bps por la relacin de calidad/tamao1 'u nombre es el acrnimo de &A)*H0 $udio Layer 2 y el t5rmino no se debe confundir con el de reproductor !"1 70 F.A2A es una recomendacin del I=,H= EInternational =elecommunication ,nionF/ que define los protocolos para proveer sesiones de comunicacin audiovisual sobre paquetes de red1

07

/*s;!a#/in )u root passwor# sesa/o 'i el servidor Linux tiene un dispositivo bluetooth hay que instalar estos paquetes: *u/ insta!! $!uez)uti!s $!uez)!i$s $!uez)!i$s)#eve! $!uez)2ci#u/p 'e descarga el paquete de $steris% addons en la carpeta /usr/src: c# <usr<src wget 2ttp%<<#own!oa#[Link]<pu$<te!ep2on*<asterisk<asterisk)a##ons)1.6.0)[Link] 'e descomprime: tar )1f asterisk)a##ons)1.6.0)[Link] 'e entra la carpeta reci5n creada: c# asterisk)a##ons)1.6.0.E 'e compila: .<configure /ake /ake insta!! Aara los archivos de muestra: /ake sa/p!es $hora para que la centralita tenga un registro de todas las llamadas en &y'(L hay que seguir este procedimiento1 !rear una base de datos: /*s;!a#/in create asteriskc#r )u root )psesa/o )ntrar en el cliente &y'(L como usuario root y la contrasea que se ha creado anteriormente: /*s;! )u root )psesa/o !rear la tabla para registrar las llamadas en la base de datos: mysql" use asteriskc#r mysql" C-EATE TA6@E c#r 0 ca!!#ate #ateti/e N4T N7@@ #efau!t J0000)00)00 00%00%00J8 c!i# varc2ar0C03 N4T N7@@ #efau!t JJ8 src varc2ar0C03 N4T N7@@ #efau!t JJ8 02

#st varc2ar0C03 N4T N7@@ #efau!t JJ8 #conte1t varc2ar0C03 N4T N7@@ #efau!t JJ8 c2anne! varc2ar0C03 N4T N7@@ #efau!t JJ8 #stc2anne! varc2ar0C03 N4T N7@@ #efau!t JJ8 !astapp varc2ar0C03 N4T N7@@ #efau!t JJ8 !ast#ata varc2ar0C03 N4T N7@@ #efau!t JJ8 #uration int0113 N4T N7@@ #efau!t J0J8 $i!!sec int0113 N4T N7@@ #efau!t J0J8 #isposition varc2ar0ED3 N4T N7@@ #efau!t JJ8 a/af!ags int0113 N4T N7@@ #efau!t J0J8 accountco#e varc2ar0203 N4T N7@@ #efau!t JJ8 uni;uei# varc2ar0A23 N4T N7@@ #efau!t JJ8 userfie!# varc2ar02DD3 N4T N7@@ #efau!t JJ 3K !rear un nuevo usuario y darle todos los privilegios para mane#ar la base de datos desde local y remoto: mysql" G-ANT A@@ +-'V'@EGE 4N asteriskc#r.L T4 JasteriskJ&J!oca!2ostJ '(ENT'.'E( 6M Jsesa/oJK mysql" G-ANT A@@ +-'V'@EGE 4N asteriskc#r.L T4 JasteriskJ&JNJ '(ENT'.'E( 6M Jsesa/oJK mysql" f!us2 privi!egesK mysql" ;uit Lo Dnico que falta es aadir unas l neas en el archivo de configuracin de $steris% que se encarga de conectarse a la base de datos creada1 'e abre el siguiente archivo de texto con nano: nano <etc<asterisk<c#rI/*s;!.conf y se modifican estas l neas: Og!o$a!P 2ostna/e=!oca!2ost #$na/e=asteriskc#r ta$!e=c#r passwor#=sesa/o user=asterisk port=AA06 sock=<var<!i$</*s;!</*s;!.sock 'e guardan los cambios E!=LLH: !=LLH<F1 #hora se vuelve a arrancar el servidor $inux.

0?

re$oot =erminada la operacin de arranque se entra en el servidor y se verifica que todo est5 funcionando: Aara .ahdi: <etc<init.#<#a2#i status %%% &pan 1' (#)(*+(, Aara $steris%: asteris4 0pid 256"1 is running... Aara la base de datos: asterisk )rvvvvv !LI" c#r /*s;! status .ebe aparecer: Connected to asteris4cdr7localhost8 port ""66 using ta9le cdr for 5: seconds. ;rote 6 records since last restart. !LI" ;uit Executing last minute cleanups 1.E.1 C2anI/o$i!e Aara conectar nuestro celular a $steris% primero hay que modificar el archivo hcid1conf: /v <etc<$!uetoot2<2ci#.conf 2ci#.conf.o!# nano <etc<$!uetoot2<2ci#.conf Aegar las siguientes l neas: & & 'C( daemon )onfiguration file* & & 'C(d options options + autoinit yes, se)urity auto, pairing multi, pass-ey .#2%/., 0 & 1efault settings for 'C( devi)es 0C -.1 /(#)(*+(, -.1 0source' $inux261 1/ 0 #&2E31

devi)e + name .2h-2d., )lass 3x#23#3/, is)an enable, ps)an enable, lm a))ept, lp rs4it)h5hold5sniff5par-, 0 'e guardan los cambios y se arranca el servicio: <etc<init.#<$!uetoot2 start *niciando los servicios de <luetooth' = O> ?

,na veK que el servicio est5 activo se vuelve el computador visible a otros dispositivos bluetooth: #$us)sen# ))s*ste/ ))t*pe=/et2o#Ica!! ))print)rep!* ))#est=org.$!uez <org<$!uez<2ci0 org.$!uez.A#apter. et>o#e string%#iscovera$!e .esde el celular Edependiendo de la marca y modeloF se buscan otros dispositivos bluetooth y cuando aparece el nombre del computador se selecciona y se hacee el NpairingO Ese asociaF1 $ lo largo del procedo de asociacion preguntar4 por la clave1 'e deber4 digitar N072?O y configurar esta asociacin como autom4tica1 $hora se busca el &$!address77 del dispositivo bluetooth del computador: 2citoo! #ev hci6 66'1F'E2'E(':E'E@ 'e abre el archivo de configuracin de $steris% para el chanBmobile y configura este dispositivo: nano /etc/asteris%/mobile1conf 'e copia el &$! address en esta l nea: TadapterU id=blue address=336#76!26!168!6!9 'e guardan los cambios y se vuelve a arrancar $steris%: <etc<init.#<asterisk restart
77 La #irecci"n >AC Esiglas en ingl5s de >e#ia Access Contro! o control de acceso al medioF es un identificador de ?; bits E9 octetosF que corresponde de forma Dnica a una ethernet de red1 )s individual/ cada dispositivo tiene su propia direccin &$! determinada y configurada por el I))) E!os Q!ti/os 2E $itsF y el fabricante E!os pri/eros 2E $its3. Mi%ipedia

09

.esde la consola de $steris% se busca el celular: asterisk )rvvvvvvvvvvvvvvvvvv !LI" /o$i!e searc2 )l resultado ser4: #ddress Aame 66'2:'58'6F'F1'66 Ao4ia EC1 ,sa9le 2Bpe !ort -es !hone 1

)l comando devuelve el &$! $ddress del celular/ indicando si es utiliKable en $steris% y el puerto que hay que usar para la configuracin1 'e vuelve a entrar en el archivo chanBmobile: nano <etc<asterisk</o$i![Link] 'e aaden las siguientes l neas: :No-ia !;#< address=336286/>6?767#633 port=# )ontext=in)oming-)elular adapter=blue group=# 'e guardan los cambios y se arranca $steris% otra veK: <etc<init.#<asterisk restart .esde la consola se mira si el celular est4 conectado: asterisk )rvvvvvvvvvvvvvvv !LI" /o$i!e s2ow #evices *( Ao4ia EC1 #ddress Droup #dapter Connected &tate & & 66'2:'58'6F'F1'66 1 9lue -es Free Ao

)l +o%ia )G0 est4 conectado al servidor $steris%1 Va se puede usar para hacer llamadas pero no para el env o de '&'1 Aara efectuar llamadas usando como gate3ay el celular hay que modificar el .ialplan Eplan de llamadasF: nano /etc/asteris%/extensions1conf

0G

)n el contexto externas se ponen estas lineas: :externas< , $lamadas via No-ia !;# exten => _%@@@@@@@@@5#51ialA obile/No-ia!;#/B+!@C!N05/8D exten => _%@@@@@@@@@5n5'angup )sta configuracion es para los celulares de !olombia que empieKan todos con el numero 21

0;

Capitu!o ''
Configuraci"n #e Asterisk
2.1 'nsta!ar * configurar un cortafuegos Aara proteger el servidor Linux de accesos no autoriKados hay que instalar un fire3all Ecortafuegos 72F y abrir los puertos que $steris% necesita para aceptar conexiones externas1 )sta es la parte m4s delicada de la configuracin del servidor porque es donde se definen los puertos y los servicios que son accesibles desde Internet1 )n el caso del JA' Linode se instalar4 y !onfigurar4 IAtables1 'i $steris% se encuentra instalado en un computador conectado a Internet a trav5s de un router hay dos opciones: $brir los puertos desde la pagina de administracin del router1 !onfigurar una .&W en el router y luego gestionar los puertos directamente con IAtables

Aara instalar iptables: *u/ insta!! ipta$!es Iptables se encarga de gestionar todos los paquetes que entren y salgan del servidor Linux1 Aara eso se utiliKan tres tipos de tablas: la tabla fi!ter donde pasan todos los paquetes en entrada y salida1 La tabla filter acepta tres tipos de opciones EcadenasF I+A,= para los paquetes en entrada :,=A,= para los paquetes en salida -:LM$L. para redireccionar los paquetes la tabla NAT se utiliKa para rescribir las direcciones o los puertos de los paquetes la tabla >ANG@E se utiliKa para modificar algunos par4metros de los paquetes Eun e#emplo es marcar los paquetes para que vengan procesados y enviados con una prioridad m4s altaF

Las reglas se definen una por linea y ser4n procesadas por iptables siguiendo la misma secuencia1 !uando no se especifica diversamente/ todas las reglas se aplicar4n a la tabla filter: 'e acepta todo el trafico en entrada direccionado a la interfaK loo%pac% ipta$!es )A 'N+7T )i !o )R ACCE+T 'e rechaKa EL)Q)!=F todo el trafico entrante direccionado a las IA 07G1I1I1I/07G17CC17CC17CC menos que para la interfaK Hlo ipta$!es )A 'N+7T )i S !o )# 12H.0.0.0<C )R -ETECT
72 [Link]

'e aceptan todos los paquetes en entrada de conexiones ya establecidas/ o relacionados con conexiones establecidas1 J5ase protocolo =!A ipta$!es )A 'N+7T )/ state ))state E TA6@' FE(8-E@ATE( )R ACCE+T 'e de#a pasar todos los paquetes salientes1 ipta$!es )A 47T+7T )R ACCE+T 'e de#a pasar todo el trafico en entrada para el protocolo ''8 Epuerto 77 tcpF ipta$!es )A 'N+7T )p tcp )/ state ))state NEU )/ tcp ))#port 22 )R ACCE+T 'e de#a pasar todo el trafico en entrada destinado al puerto udp ?C9> Eprotocolo I$<7F ipta$!es )A 'N+7T )p u#p ))#port ED6B )R ACCE+T 'e de#a pasar todo el trafico en entrada destinado al puerto udp CI9I Eprotocolo 'IAF ipta$!es )A 'N+7T )p u#p ))#port D060 )R ACCE+T 'e de#a pasar todo el trafico en entrada destinado a los puertos udp que van de 0IIII a 7IIII Eprotocolo L=AF ipta$!es )A 'N+7T )p u#p ))#port 10000%20000 )R ACCE+T 'e de#an pasar las solicitudes de ping ipta$!es )A 'N+7T )p ic/p )/ ic/p ))ic/p)t*pe C )R ACCE+T $ este punto/ que se han definido los puertos base que se necesitan abiertos/ se bloquea todo el trafico restante1 ipta$!es )A 'N+7T )R -ETECT ipta$!es )A .4-UA-( )R -ETECT 'e averigua el estado de las reglas definidas con el comando: ipta$!es )@ $parecer4: Chain *A!,2 0policB #CCE!21 target prot opt source destination #CCE!2 all -- anBEhere anBEhere 3EFEC2 all -- anBEhere 12C.[Link] #CCE!2 all -- anBEhere anBEhere

reGect-Eith icmp-port-unreacha9le state 3E$#2E(8E&2#<$*&)E( 7I

#CCE!2 #CCE!2 #CCE!2 #CCE!2 #CCE!2 3EFEC2

tcp -- anBEhere udp -- anBEhere udp -- anBEhere udp -- anBEhere icmp -- anBEhere all -- anBEhere

anBEhere anBEhere anBEhere anBEhere anBEhere anBEhere

state AE; tcp dpt'ssh udp dpt'iax udp dpt'sip udp dpts'ndmp'dnp icmp echo-reHuest reGect-Eith icmp-port-unreacha9le

Chain FO3;#3( 0policB #CCE!21 target prot opt source destination 3EFEC2 all -- anBEhere anBEhere Chain O,2!,2 0policB #CCE!21 target prot opt source destination #CCE!2 all -- anBEhere anBEhere Aara guardar los cambios: service ipta$!es save &aving fireEall rules to .[Link].ipta9les' 'e arranca el servicio: service ipta$!es start 'i aparece este error:

reGect-Eith icmp-port-unreacha9le

= O> ?

$oading additional ipta9les modules' ip+conntrac4+net9ios+ns 'e comenta esta linea: '+TA6@E I>4(7@E =VipIconntrackInet$iosInsV en el archivo <etc<s*sconfig<ipta$!es)config Aara que quede: W'+TA6@E I>4(7@E =VipIconntrackInet$iosInsV 'e vuelve a arrancar iptables: service ipta$!es restart Aara arrancar iptables autom4ticamente: c2kconfig ipta$!es on

=F#*$E(?

Aara terminar hay que configurar $steris% para que use los puertos ,.A desde 0IIII hasta 7IIII para 70

el protocolo L=A7? Ees el que se encarga/ una veK establecida la conexin entre dos canales/ del flu#o audio/videoF 'e edita el archivo: nano <etc<asterisk<[Link] )n los archivos de configuracin de $steris%/ los par4metros pueden estar comentados con un punto y coma por delante1 'i se quiere utiliKarlos hay que quitar el punto y coma1 'e quita el punto y coma antes de Ogenera!P )n rtpstart se pone 0IIII y en rtpend 7IIII: rtpstart=#3333 rtpend=23333 'e guardan los cambios efectuados y se recarga la configuracin de $steris%: <etc<init.#<asterisk restart 2.2 Carpetas * arc2ivos $l terminar la instalacin de $steris% unas cuantas carpetas nuevas ser4n creadas1 <etc<asterisk !ontiene todos los archivos de configuracin de $steris%1 <usr<!i$<asterisk</o#u!es !ontiene todos los mdulos compilados y utiliKables en $steris%1 <var<!i$<asterisk (ue a su veK contiene las siguientes carpetas: agi)$in< donde poner los script $*I1 fir/ware< .onde se guardan los firm3are de las tar#etas en uso1 i/ages<
7? [Link]

77

.onde las aplicaciones ir4n a buscar las im4genes cuando se comuniquen con tel5fonos que suportan esta funcin1 ke*s< !laves publicas y privadas que $steris% necesita para autenticarse con otros servidores o servicios E)#: .,+.iF1 /o2/pA< !arpeta con archivos mp2 que se pueden usar como mDsica en espera si se tienen instalados los asteris%Haddons1 soun#s< !ontiene todas las locuciones que se pueden usar en el plan de llamadas 0dialplan11 /o2< La mDsica en espera que viene con la instalacin de $steris% 0no mp"1. !icences< Las licencias de uso que se han adquirido 0EG' para el codec audio gC2@11 <var<spoo!<asterisk (ue contiene: #ictate< .onde se guardar4n los archivos audio creados con la aplicacin .ictateEF1 /eet/e< .onde se guardar4n las grabaciones de las conferencias1 /onitor< 'i se graba una llamada/ esta es la carpeta donde se guardar4n los archivos audio1 outgoing< .onde hay que mover los archivo de llamadas 0call files11 J5ase el archivo callfiles1txt en la carpeta doc de las fuentes de $steris% para una explicacin del funcionamiento de estos archivos1 s*ste/< 72

!arpeta para archivos temporales creados por la aplicacin 'ystemEF1 t/p< !arpeta donde se guardan los archivos temporales creados por algunas aplicaciones A!E* )ontestadorD* voice/ai!< .onde se guardar4n los archivos audio de los mensa#es de voK de#ados en el contestador y los mensa#es audio personaliKados de cada usuario1 <var<run !ontiene la I. del proceso de $steris% cuando est5 corriendo1 <var<!og<asterisk .onde se guardar4n todos los registros de $steris% 0llamadas8 mensaGes B eventos1. .e revisar cuando se tengan problemas con $steris%1 2.A >Qsica en espera * >+A ,na de las funcionalidades de $steris% es la mDsica en espera1 )n muchos servicios de asistencia al cliente es t pico escucharla mientras se espera que algDn operador nos atienda1 )n este p4rrafo se mostrar4 la configuracin de la mDsica en espera con archivos &A21 $l usar archivos &A2 hay que tener en cuenta los problemas relacionados con el derecho de autor1 Arimero se crea/ sino existe/ la carpeta donde guardar los archivos &A2: /k#ir <var<!i$<asterisk</o2/pA $hora hay que copiar un archivo mp2 en la carpeta creada1 .esde Linux: 'i lo hacemos desde un sistema con Linux utiliKaremos el comando: scp arc2ivo./pA root&/io#o/[Link]/%<var<!i$<asterisk</o2/pA scp H )l comando que permite copiar archivos de un servidor Linux a otro1 arc2ivo./pA H )l nombre del archivo1 root&/io#o/[Link]/ H )l nombre de usuario y nombre de dominio del servidor remoto1 var<!i$<asterisk</o2/pA ) La carpeta donde se copiar4 el archivo en el servidor remoto1 'i el puerto predefino para el protocolo ''8 no es el 77/ habr4 que indicarlo en el comando1 )n el caso 7?

que sea/ por e#emplo/ el 7CIII: scp )+ 2D000 arc2ivo./pA root&/io#o/inio%<var<!i$<asterisk</o2/pA .esde Mindo3s: 'e descarga el programa Minscp7C/ se instala/ se configura para la conexin al servidor Linux y se abre la conexin1 )sta es la ventana de traba#o de Minscp:

=erminada la copia del fichero &A2/ el paso que sigue es configurar el archivo musiconhold1conf1 Lo editamos de la siguiente manera: nano <etc<asterisk</usicon2o!#.conf 'e aaden las siguientes l neas al final del archivo: :mp%< mode=files dire)tory=/var/lib/asteris-/mohmp% random=yes

7C [Link]

7C

'e accede a la consola de $steris%: asterisk )rvvvvvvvvvvvvv 'e escribe: !LI" /o2 re!oa# Aara recargar la configuracin de la mDsica en espera1 !LI" /o2 s2ow c!asses Aara ver las clases de mDsica en espera configuradas1 $parecer4: Class' default localhos ode' files localhos(irectorB' .[Link] Class' mp" ode' files (irectorB' .[Link]" !LI" ;uit ,sando archivos &A2 para la mDsica de espera hay que tener en cuenta que el sistema necesitar4 utiliKar bastante recursos de la !A,1 )sto porque los archivo &A2 tendr4n que ser convertidos en el formato audio 0codec1 requerido por el canal que est4 accediendo al servicio1 !onsiderando que los tel5fonos IA no tienen un sistema de audio de alta calidad se puede ba#ar la frecuencia de sampling de los archivos &A2 sin perder en calidad del audio escuchado1 )l programa que permite este tipo de operacin es ':<1 )#emplo: c# <var<!i$<asterisk</o2/pA so1 arc2ivo./pA )V )r 220D0 )c 1 arc2ivo1./pA Hc 0 pasamos el archivo de est5reo a mono 0un canal1. Hr 77ICI frecuencia de sampling de ??0II 8/K a 77ICI 8K1 archivo01mp2 H el resultado del sampling1

,sando la opcin HJ aparecer4 en la pantalla todo el proceso: sox' &oI v15.".6 *nput File ' [Link]"K 79

Channels '2 &ample 3ate ' 55166 !recision ' 16-9it (uration ' 66'6:'61."8 L 1"2@68:8 samples L 2266".: C((# sectors File &iMe ' C.25 <it 3ate ' 1@24 &ample Encoding' !ED audio 0laBer *8 ** or ***1 Output File ' [Link]"K Channels '1 &ample 3ate ' 226:6 !recision ' 16-9it (uration ' 66'6:'61."8 L 665:52@ samples N 2266".: C((# sectors &ample Encoding' !ED audio 0laBer *8 ** or ***1 Comment ' J!rocessed 9B &oIK sox *AFO sox' effects chain' input 55166)M 2 channels sox *AFO sox' effects chain' channels 55166)M 1 channels sox *AFO sox' effects chain' rate 226:6)M 1 channels sox *AFO sox' effects chain' dither 226:6)M 1 channels sox *AFO sox' effects chain' output 226:6)M 1 channels Aara probar la nueva configuracin se necesita crear una extensin en el archivo extensions1conf 0el dialplan o plan de llamadas1 que se presentar4 en el parrafo 71?: '/portante% cada veK que se modifican o aaden nuevo archivos en la carpeta hay que recargar la configuracin de la mDsica en espera1 2.E [Link] 0protoco!o '+3 )l archivo sip1conf es donde se definen las extensiones 'IA/ los proveedores 'IA y/ en general/ todo lo relacionado con el protocolo 'IA791 )l archivo sip1conf est4 estructurado en tres bloques1 ,na parte general donde se define la configuracin global del protocolo 'IA/ el bloque central donde se configura el registro a los proveedores JoIA y/o otros servidores $steris%/ y la parte final donde se configuran las extensiones internas y externas1 8ay que pensar en $steris% como un conmutador que quiK4s algDn d a hemos visto en la recepcin de un 8otel o una empresa1 $steris% tiene las mismas funcionalidades y muchas m4s1 !on las extensiones configuradas se podr4n llamar una con otra/ se podr4n enrutar las llamadas a tel5fonos fi#os/ celulares/ hacia nuestros proveedores 'IA y utiliKar los t picos servicios de estos como llamadas en espera/ desv o de llamadas/ llamada a tres/ contestador autom4tico1 La configuracin que sigue abarca los par4metros m4s importantes del sip1confS cada l nea del archivo viene acompaada de una breve explicacin1 'i delante del par4metro hay un punto y coma significa que el par4metro no ser4 tomado en consideracin al momento en que el sip1conf ser4 cargado al
79 [Link]

7G

arrancar $steris%1 nano <etc<asterisk<[Link] :general< S etiqueta que introduce la parte general de la configuracin1 allo4guest=no S +o permite llamadas entrantes de extensiones 'IA remotas no autentificadas1 ,n par4metro que aumenta la seguridad de $steris%1 bindport=83?3 S )l puerto utiliKado para conectarse al servidor $steris% 0protocolo ,(!11 bindaddr=3*3*3*3 S La direccin IA para conectarse al servidor $steris% 0en este caso cualHuier direcciOn *! de la computadora donde est instalado #steris4 sea tarGeta de red local o Ean o P!A1. ,t)penable=yes S .esde la versin 019 es posible configurar el servidor para que permita tambi5n conexiones con protocolo =!A1 ,t)pbindaddr=3*3*3*368389 S .ireccin y puerto para las conexiones 'IA con protocolo =!A1 )allevents=yes S 'i est4 en yes cuando el estado de una extensin cambia/ el $steris% &anager genera el correspondiente evento7G EDtil para programas externos tipo -:AF1 )ontext=default S )l contexto predefinido que todas las extensiones utiliKar4n si no viene especificado diversamente en cada extensin1 domain=sip*miodominio*)om S el dominio local para el servidor $steris%1 domain=#92*#?>*#*%2 S 'i queremos conectarnos a $steris% usando un segundo dominio 0eGemplo una red local11 'i tenemos distintos dominios que apuntan a la misma direccin IA podemos especificarlos con este par4metro indic4ndolos uno por linea1 subs)ribe)ontext = subs)ribe S )ste par4metro define el contexto que se utiliKar4 para permitir a las extensiones acceder al estado de otras1

7G [Link]

7;

a!!owsu$scri$e=*es S )sto permite suscribirse desde una extensin a otra para tener acceso a su estado 0disponi9le8 tim9rando8 ha9lando8 etcQ1. notifyringing=yes S +otifica si la extensin est4 timbrando1 notifyhold=yes S +otifica si la extensin est4 en espera1 )all)ounter = yes S !uenta el numero de llamadas simultaneas que est4 efectuando una extensin1 )ounteronpeer = yes S !uenta el numero de llamadas simultaneas en las extensiones de tipo peer o en la parte peer de una extensin tipo friend 0una extensiOn de tipo friend es al mismo tiempo user B peer1. .e este modo en una extensin de tipo friend/ si se ha definido un limite de 7 llamadas simultaneas/ se diferenciar4n segDn sean salientes o entrantes1 disallo4=all S .eshabilita todos los codecs 0audio B vRdeo11 allo4=ula4 S 8abilita el codec audio ula3 para todas las extensiones1 allo4=ala4 S 8abilita el codec ala3 para todas las extensiones1 useragent=@-$ite S $steris% se presentar4 con este nombre al momento de comunicarse con otros servidores proveedores 'IA1 $ veces algunos proveedores 'IA no permiten conexiones directas de servidores $steris%1 )n este modo nos presentamos como si fu5ramos el softphone <HLite1 realm=sip*voFtovoi)e*)om S )ste par4metro representa el nombre que se utiliKar4 para la Nautenticacin codificadaO que es parte del proceso de autenticacin de una extensin presente en las especificaciones del protocolo 'IA1 'e usa tambi5n para crear las contraseas de las extensiones usando algoritmo de reduccin criptogr4fico &.C t%>pt_udptl=yes S Aermite el uso del protocolo =2; 0fax so9re *!1 pero solo en modo pasarela/ es decir/ entre dos extensiones que soporten el protocolo1 .esde la versin 0191I170/ $steris% NnegociaO directamente los par4metros para la recepcin de los faxes y ya no actDa solamente como pasarela1 $demas/ desde la misma versin es posible indicar directamente en la misma linea el tipo de correccin de error utiliKado y el tamao de los paquetes que contienen el fax1 La misma linea se puede escribir tambi5n de esta forma:

7>

t%>pt_udptl = yes5fe)5maxdatagram=/33 faxdete)t=yes S permite la deteccin de faxes en canales 'IA1 Aermite diferenciar el tratamiento de las llamadas entrantes segDn sea un fax o una llamada de voK videosupport=yes S Aara permitir v deo llamadas1 srvloo-up=yes S Aermite hacer bDsquedas de registros .+' 'LJ basadas en los nombres de dominio para llamadas 'IA salientes del tipo: 'IA/usuarioZdominio1 al4aysauthreEe)t = yes S !uando un I+JI=) o L)*I'=)L entrante es rechaKado/ $steris% enviar4 siempre como respuesta que el usuario o la contrasea no son validas y no la raKn verdadera del rechaKo1 $umenta la seguridad1 $hora viene la parte del registro con nuestros proveedores de llamadas1 'i los vamos a usar solo para las llamadas salientes no hace falta configurar esta parte1 'iguen algunos e#emplos a modo de explicacin1 register => fulano6sesamoGsip*provider#*)om Aara el registro con el proveedor el username ser4 fulano/ la contrasea sesamo y el dominio sip1provider01com1 'i el proveedor usa un puerto que no es el CI9I hay que especificarlo al final de la l nea de esta forma: register => fulano6sesamoGsip*provider#*)om683?# )n los casos descritos arriba las llamadas entrantes llegaran a la extensin s y al contexto que se define en la configuracin de la extension1 'i queremos que las llamadas entre a una extensin definida/ tenemos que aadir al final de la linea el numero1 )ste numero puede ser arbitrario siempre y cuando los proveedores 'IA no especifiquen diversamente1 register => fulano6)ontraseHaGsip*provider#*)om/#2%/ La ultima parte es dedicada a la configuracin de las extensiones: :#333< S +umero de la extensin1 a))ount)ode=#333 S )l cdigo que aparecer4 en el registro de llamadas para esta extensin1 language=es S 'i hemos instalado las locuciones en m4s de un idioma/ aqu se puede definir el idioma para la 2I

extension1 type=friend S =ipo de extensin1 Auede ser friend/ user o peer1 Iser: una extensin que se registra al servidor $steris% usando el campo -rom para hacer llamadas1 Peer: una extensin que usamos para hacer y recibir llamadas y que reconocemos a trav5s del campo 8ost1 7riend: es a la veK user Y peer1

se)ret=)ontraseHa S La contrasea que la extensin usar4 para autenticarse al servidor $steris%1 Jualify=yes S )ste par4metro se utiliKa para mantener activa la conexin de una extensin que se conecta al servidor $steris% detr4s de una +$= E+et3or% $ddress =ranslationF7; mailbox=#333Gdefault S 'i este par4metro es configurado/ cuando la extensin se conecte al servidor $steris%/ 5ste controlar4 si hay mensa#es de voK pendientes y en caso positivo se lo comunicar4 usando &MI = &essage Maiting Indicator1S es una seal audio o v deo que puede ser recibida por la mayor a de los tel5fonos IA o 'oftphone1 host=dynami) S 'i la extensin se conecta remotamente cambiando continuamente su direccin IA se pone este par4metro a dynamic1 )n caso contrario se indica la direccin IA1 dtmfmode=rf)2>%% S )l protocolo para enviar los tonos .=&-17> )ontext=phones S )l contexto que usar4 la extensin1 )anreinvite=no S +ormalmente $steris% actDa como B7B,$2I entre las extensiones y esto permite usar toda una series de funcionalidades cuando $steris% quede en el medio de las llamadas1 !on este par4metro en KnoL este es el comportamiento normal1 'e pone KyesL si se quiere que flu#o audio/video vaya directamente de una extensin a otra1 )n los casos que la extensiones est5n detr4s de un +$=/ canreinvite=yes no
7; 'u uso m4s comDn es permitir utiliKar direcciones privadas Edefinidas en el L-! 0>0;F y aDn as proveer conectividad con el resto de Internet1 )xisten rangos de direcciones privadas que pueden usarse libremente y en la cantidad que se quiera dentro de una red privada EMi%ipediaF 7> )n telefon a/ el sistema de /arcaci"n por tonos/ tambi5n llamado sistema multifrecuencial o (T>. [Link]=one &ultiH -requencyF/ consiste en lo siguiente: !uando el usuario pulsa en el teclado de su tel5fono la tecla correspondiente al d gito que quiere marcar/ se env an dos tonos/ de distinta frecuencia: uno por columna y otro por fila en la que est5 la tecla/ que la central descodifica a trav5s de filtros especiales/ detectando instant4neamente que d gito se marc1 2I )l B7B,$ es una aplicacin para controlar llamadas entre usuarios 'IA1

20

funciona1 nat=*es S 'i la extensin se encuentra detr4s de un +$= hay que poner SBesT1 )allerid=7ulano M#333> S )l nombre y el numero de identificacin de la extensin1 disallo4=all S .eshabilitar todos los codecs1 allo4=gsm S 8abilita el codec audio *'& 0el primero Hue se intentar utiliMar durante la negociaciOn de la llamada1. allo4=ula4 S 8abilita el codec audio ula31 allo4=ala4 S 8abilita el codec audio ala31 allo4=g;29 S 8abilita el codec audio gG7>1 allo4=h2?% S 8abilita el codec v deo h7921 )all-limit=2 S !on este par4metro definimos que la extensin puede usar solamente dos canales a la veK1 )ste par4metro desde la versin 0191<1< de $steris% es NdeprecatedO/ eso significa que se puede utiliKar pero que pronto ser4 tachado de las nuevas versiones de $steris%1 )n su lugar/ para limitar el numero de llamadas para una extensin/ se usan las funcines *L:,A y *L:,AB!:,+= !onfiguramos una segunda extensin: :#33#< type=friend a))ount)ode=#33# language=es se)ret=)ontraeHa Jualify=yes mailbox=#33#Gdefault host=dynami) dtmfmode=rf)2>%% )ontext=phones )anreinvite=no nat=yes 27

)allerid=Nutano M#33#> disallo4=all allo4=gsm , allo4=ula4 allo4=ala4 allo4=g;29 allo4=h2?% )all-limit=2 $hora un e#emplo para un proveedor de llamadas 'IA1 :Eustvoip< S +ombre que le asignamos al proveedor1 type=peer S Lo vamos a utiliKar solo para llamadas salientes ApeerD1 host=sip*Eustvoip*)om S )l nombre del dominio del proveedor1 fromdomain=sip*Eustvoip*)om )ste parametro permite definir el nombre de dominio que aparecer4 en la campo -rom: de la cabecera 'IA1 &ucho proveedores lo exigen para autenticarse fromuser=fulano S Los datos que nos pide el proveedor para conectarnos Ausuario y )ontraseHaD1 defaultuser=fulano se)ret=)ontraseHa Jualify=yes )anreinvite=no dtmfmode=rf)2>%% )ontext=from-Eustvoip S )l contexto de utiliKar en extensions1conf si usamos el proveedor tambi5n para las llamadas entrantes1 )all-limit=2 S +umero de canales que brinda el proveedor1 !anguage=es #isa!!ow=a!! a!!ow=u!aw a!!ow=a!aw 22

a!!ow=gH2B !ada veK que se modifica la configuracin del sip1conf hay que recargarla1 'e entra en la consola de $steris%: asterisk )rvvvvvvvvvv 'e escribe el comando: !LI" sip re!oa# 3eloading &*! La lista de los comandos disponibles en la consola para las extensiones 'IA se obtiene escribiendo: !LI" 2e!p sip sip notifB &end a notifB pac4et to a &*! peer sip prune realtime =peerUuserU !rune cached 3ealtime [Link] sip reload 3eload &*! configuration sip set de9ug VonUoffUipUpeerW Ena9le.(isa9le &*! de9ugging sip set historB VonUoffW Ena9le.(isa9le &*! historB sip shoE VchannelsUsu9scriptio $ist active &*! channels.su9scriptions sip shoE channel &hoE detailed &*! channel info sip shoE domains $ist our local &*! domains sip shoE historB &hoE &*! dialog historB sip shoE inuse $ist all [Link] sip shoE o9Gects $ist all &*! o9Gect allocations sip shoE peers $ist defined &*! peers sip shoE peer &hoE details on specific &*! peer sip shoE registrB $ist &*! registration status sip shoE settings &hoE &*! glo9al settings sip shoE tcp $ist 2C! Connections sip shoE users $ist defined &*! users sip shoE user &hoE details on specific &*! user sip unregister ,nregister 0force expiration1 a &*! peer from the registrB !on el comando sip s2ow settings se tendr4 una vista m4s completa de todos los valores asignados a los par4metros presentes en el archivo de configuracin sip1conf1 2.D [Link] 0p!an #e !!a/a#as3 )l archivo de configuracin estensions1conf es el m4s importante para la puesta en marcha de $steris%1 )n 5l se define el plan de llamadas1 !ualquier nDmero marcado desde una extensin ser4 procesado dentro de este archivo1 $l igual que el archivo sip1conf est4 dividido en tres bloques:

2?

La parte general donde se configuran algunos par4metros generales1 La parte globals donde se definen las variables globales que se van a utiliKar en $steris% y que son validas para todos los canales1 ,na ultima parte donde queda toda las configuracin del plan de llamada1

nano <etc<asterisk<[Link] La parte general: :general< stati)=yes S 'i static es SBesT y 3riteprotect es SnoT/ para guardar los cambios hechos en el plan de llamadas/ desde la consola de $steris% habr4 que escribir el comando dialplan reload1 4riteprote)t=no S )n caso contrario se actualiKar4 autom4ticamente pero se perder4n todos los comentarios presentes en el archivo1 autofallthrough=yes S 'i es SBesT cuando alguna llamada se sale del plan de llamadas se terminar41 priorityEumping=yes S $lgunas aplicaciones y/o funciones tienen la capacidad/ ba#o algunas circunstancias/ de NsaltarO desde la prioridad donde se encuentran a una prioridad que normalmente es n= Y0I0 donde n es el numero de la prioridad que se est4 e#ecutando1 'i est4 en X*esY har4 ese salto sino no1 Og!o$a!sP NOP = N(P/#333 7I$ = N(P/338;%#3333333 PINC = N(P/Eustvoip )n Dlo9als se configuran las variables globales que queremos usar en el dialplan/ 'i se efectDan llamadas frecuentes a un numero y se quiere configurar con una sigla o un nombre/ en esta parte del archivo se puede hacer1 Las tres l neas muestran tres casos distintos1 Aara llamar la extensin 0III 0configurada en sip.conf1 se podr4 usar la variable ':A/ para llamar el numero de celular de mi amigo fulano en veK de poner el numero por extenso podr5 indicar la variable -,LS para concluir si para las llamadas uso el proveedor 'IA Qustvoip se podr4 usar la variable Q,'=1 )n la tercera parte es donde se configura el verdadero dialplan o plan de marcado1 )l dialplan se compone de contextos y dentro de cada contexto van las extensiones y prioridades1 !ada extensin y prioridad puede contener una aplicacin o una funcin 0para una lista completa de las aplicaciones B funciones disponi9les vXase el apXndice # B <11 Aara empeKar/ se definir4n dos contextos/ uno para las llamadas internas y otro para las llamadas externas1 :internas< 2C

S )sta etiqueta indica que todo lo que aparece a partir de esta l nea se considerar4 perteneciente al contexto internas1 exten => #2%5#5Ans4erAD =odas las l neas de configuracin est4n estructuradas de la siguiente manera: e1ten =Z en cada l nea1 12A es el numero de extensin 0cuando se marcar este numero desde un telXfono *!8 hardEare o softEare8 #steris4 procesar la llamada empeMando por esta lRnea1. 1 es la prioridad1 $steris% procesa las l neas secuencialmente/ del numero m4s ba#o al m4s alto1 Answer es la aplicacin que permite contestar la llamada1 exten => #2%5 25Playba)-Ahello-4orldD )sta es la segunda l nea que ser4 procesada1 072 la misma extensin de la primera l nea/ 7 es la prioridad 0progresiva11 Alaybac% es la aplicacin que le permite a $steris% usar las vocesS en este caso el archivo audio es helloH3orld que hace parte de las voces que vienen con la instalacin de $steris%1 exten => #2%5%5'angup )sta es la tercera l nea1 072 la extensin/ 2 la prioridad/ )angup la aplicacin que sirve para colgar una llamada1 'i se efectDa una llamada al nDmero 072/ $steris% abrir4 un canal para la llamada 0#nsEer1/ escucharemos la locucin 8ello Morld y luego la llamada se terminar41 :internas< exten => #2%5#5Ans4erAD exten => #2%525Playba)-Ahello-4orldD exten => #2%5%5'angupAD :tra forma de es: :internas< exten => #2%5#5Ans4erAD exten => #2%5n5Playba)-Ahello-4orldD exten => #2%5n5'angupAD )n la segunda y tercera l nea en el numero de la prioridad aparece una XnYS la XnY significa next y sirve para no tener que escribir en cada l nea el numero progresivo de la prioridad1 )sto es muy cmodo cuando se modifica el dialplan porque al insertar una nueva l nea no se tendr4 que volver a numerar todas las dem4s1 $hora se definir4 un contexto muy sencillo para las llamadas externas1 :externas< exten => _338;*5#51ialAB+PINC0/B+!@C!N0D 29

La primera l nea le dice a $steris% que para todos los nDmeros marcados que empiecen por IICG deber4 usar esta parte del dialplan1 )l signo B 0guion 9aGo1 se pone cuando no se indica el numero exacto sino solamente una parte1 )l 1 0punto1 indica que despu5s del IICG pueden haber cualquier numero de cifras1 .ial es la aplicacin que se utiliKa para hacer una llamada1 )n otro p4rrafo 02.8.11 se explicar4 de forma m4s detallada las variables y opciones que usa esta aplicacin1 Aor ahora es importante saber que [ \Q,'=] es la variable configurada en el bloque glo9als y corresponde a 'IA/#ustvoip/ es decir el proveedor de llamadas 'IA1 [\)<=)+] es una variable interna de $steris% donde se almacena el numero que se est4 marcando1 exten => _338;*5n5Playba)-Aall-outgoing-lines-unavailableD 'i por algDn motivo la llamada no tiene exito/ se procesar4 la segunda l nea donde se escuchar4 una voK que avisar4 que todas las l neas est4n ocupadas o no disponibles1 exten => _338;*5n5'angupAD !on la tercera l nea la llamada se terminar41 $hora se definir4n dos contextos m4s/ uno para las extensiones que tienen acceso a las l neas externas y uno para aquellas que solo pueden hacer llamadas internas1 )stos contextos hay que definirlos en la configuracin de cada extensin 0vease sip.conf1 para definir cuales extensiones tienes acceso a determinados contextos1 :solo-internas< in)lude => internas !on esto se define que todas las extensiones configuradas en sip1conf ba#o el contexto soloHinternas tendr4n acceso solo a la parte del dialplan contenido ba#o la etiqueta OinternasP :phones< in)lude => internas in)lude => externas !on estas l neas se define que todas las extensiones configuradas con el contexto phones tendr4n acceso a los contextos del dialplan OinternasP y Oe1ternasP1 )n la configuracin del sip1conf 0parrafo 2.51 las dos extensiones que se han configurado les hemos asignado el contexto phones1 $ trav5s de los contextos podemos crear grupos distintos de extensiones y hasta grupos cerrados de usuarios/ es decir grupos donde las extensiones solo se puedan llamarse entre ellas1 $adiendo las l neas para escuchar la mDsica en espera en formato &A2 el dialplan ser4: :general< stati)=yes 2G

4riteprote)t=no autofallthrough=yes priorityEumping=yes :globals< NIP = N(P/#333 7I$ = N(P/338;%#3333333 PINC = N(P/Eustvoip :internas< exten => #2%5#5Ans4erAD exten => #2%525Playba)-Ahello-4orldD exten => #2%5%5'angupAD exten => #335#5Ans4er exten => #335n5 usi)On'oldAmp%5?3D exten => #335n5'angup :externas< exten => _338;*5#51ialAB+PINC0/B+!@C!N0D exten => _338;*5n5Playba)-Aall-outgoing-lines-unavailableD exten => _338;*5n5'angupAD :solo-internas< in)lude => internas :phones< in)lude => internas in)lude => externas Aara actualiKar la configuracin desde la consola de $steris%: asterisk )rvvvvvvvvvv 'e escribe el comando: !LI" #ia!p!an re!oa# La lista de los comando relacionados con el dialplan se obtiene: !LI" 2e!p #ia!p!an dialplan add extension #dd neE extension into context dialplan add ignorepat #dd neE ignore pattern dialplan add include *nclude context in other context dialplan reload 3eload extensions and onlB extensions dialplan remove extension 3emove a specified extension 2;

dialplan remove ignorepat 3emove ignore pattern from context dialplan remove include 3emove a specified include from context dialplan set extenpatternmatch ,se the Old extension pattern matching algorithm. dialplan set extenpatternmatch ,se the AeE extension pattern matching algorithm. dialplan shoE &hoE dialplan 2.D.1 E! conte1to su$scri$e !omo se ha indicado a lo largo de la configuracin del archivo sip1conf hay la posibilidad de suscribirse a una extensin para conocer su estado1 )sto es posible configurando el contexto subscribe en el plan de llamadas: nano /et)/asteris-/extensions*)onf 'e aaden las siguientes l neas Eusando la prioridad hintF: :subs)ribe< exten => #3335hint5N(P/#333 exten => #33#5hint5N(P/#33# $hora se incluye este contexto en los dos contextos que creados: :solo-internas< in)lude => internas in)lude => subs)ribe :phones< in)lude => internas in)lude => externas in)lude => subs)ribe 'e guardan los cambios y desde la consola de $steris% se actualiKa el plan de llamadas: asterisk )rvvvvvvvvvvvv !LI" #ia!p!an re!oa# !on el comando: !LI" core s2ow 2ints H= Legistered $steris% .ial Alan 8ints =H 0II0Zsubscribe : 'IA/0II0 0IIIZsubscribe : 'IA/0III 'tate:Idle 'tate:Idle Matchers I Matchers I

2>

2.D.2 X)@ite * e! p!an #e !!a/a#as ,na veK configurado un plan de llamadas b4sico se puede empeKar haciendo algunas pruebas1 Arimero se configurar4 un 'oftAhone E<HLiteF para conectarlo a nuestro $steris% para hacer las primeras llamadas1 'e descarga el 'oftphone <HLite desde la p4gina Meb de la empresa que lo desarrolla20 y se instala1 Aara Linux podemos usar el 'oftAhone )%iga271 ,na veK instalado se abre el programa y se configura Emenu N'ip account settingsOF:

'e usan los datos que de configuracin puestos en el sip1conf1 )n domain se pone la direccin IA del servidor $steris%1 !uando se ha terminado/ se presiona el botn $plicar y luego $ceptar1 )l 'oftAhone se registrar4 en nuestro $steris%: ,na veK finaliKado con 5xito el registro de nuestra extensin se puede hacer la primera llamada1 .esde el teclado num5rico del <HLite marcamos la extensin 0721 'e escuchar4 la locucin 2e!!o)wor!# y la llamada terminar41 Llamando la extensin 0II se escuchar4 la mDsica en espera basada en el archivo mp2 que se ha cargado en el servidor $steris%1
20 [Link] 27 [Link]

?I

Aara subscribir la extensin configurada en el <HLite al estado de otra extensin se abre el panel lateral derecho/ y se aade la extensin 0II0 en contactos de esta forma:

'i la extensin se encuentra registrada al servidor $steris% veremos su estado:

?0

2.D.A @!a/a#as entre e1tensiones * ap!icaci"n Ec2o )n $steris% se han configurado dos extensiones 01666 B 166111 Aara hacer llamadas de una a otra hay que modificar el plan de llamadas: nano <etc<asterisk<[Link] .entro del contexto internas se aaden las siguientes l neas: exten => _#33@5#51ialAN(P/B+!@C!N05/8D exten => _#33@5n5'angup $naliKando las dos l neas: I100X estos caracteres indican el nDmero de la extensin a llamar: )l primer car4cter y el Dltimo en $steris% se llaman Aattern &atching y #untos a otros tienen este significado: <: Auede ser un nDmero de I a >1 W: Auede ser un nDmero de 0 a >1 +: Auede ser un nDmero de 7 a >1 B : 'i el numero de extensin que se indica no es exacto se pone delante del numero mismo este signo1 1: )l punto representa cualquier numero de cifras1 ^: el punto exclamativo representa cualquier numero de cifras Eincluyendo I cifrasF

(ia! es la aplicacin que se usa en $steris% para iniciar una llamada1 ?7

[\EXTEN] es el nombre de la variable de canal donde se almacena el numero que se marca1 ED es el nDmero de segundos que timbrar4 la extensin llamada1 'i dentro de este tiempo nadie contesta/ $steris% procesar4 la siguiente l nea/ es decir/ colgar4 la llamada 0ap!icaci"n Fangup31 $hora se aadir4n otras l neas para configurar la aplicacin )cho en el dialplan1 )sta aplicacin se usa para probar el audio de una extensin y averiguar si hay problemas de configuracin1 )stas son las l neas que hay que aadir al contexto internas: exten => #835#5Ans4er exten => #835n5Playba)-Ae)ho-testD exten => #835n5!)ho exten => #835n5'angup 'e guardan los cambios en el plan de llamadas y se recarga la configuracin: asterisk )rvvvvvvvvvvvvvvvvvvvv !LI" #ia!p!an re!oa# $hora desde el 'oftAhone se marca el numero 0CI y se procede con el test de )cho1 2.D.E @as >acros 'i en el plan de llamadas algunas acciones se repiten muy a menudo/ $steris% brinda la posibilidad de crear una &acro que permite simplificar estas operaciones1 La sintaxis de la aplicacin &acro: asterisk )rvvvvvvvvvvvv !LI" core s2ow app!ication >acro -L *nfo a9out application J acroK L=&Bnopsis? acro *mplementation =(escription? acro0macroname8arg18arg2...1' Executes a macro using the context Jmacro-YmacronameZK8 Gumping to the JsK extension of that context and executing each step8 then returning Ehen the steps end. 2he calling extension8 context8 and prioritB are stored in [V #C3O+EI2EAW8 [V #C3O+COA2EI2W and [V #C3O+!3*O3*2-W respectivelB. #rguments 9ecome [V#3D1W8 [V#3D2W8 etc in the macro context. ?2

*f Bou Doto out of the acro context8 the acro Eill terminate and control Eill 9e returned at the location of the Doto. *f [V #C3O+OFF&E2W is set at termination8 acro Eill attempt to continue at prioritB #C3O+OFF&E2 \ A \ 1 if such a step exists8 and A \ 1 otherEise. ;#3A*AD' <ecause of the EaB acro is implemented 0it executes the priorities contained Eithin it via su9-engine18 and a fixed per-thread memorB stac4 alloEance8 macros are limited to C levels of nesting 0macro calling macro calling macro8 etc.1. *t maB 9e possi9le that stac4-intensive applications in deeplB nested macros could cause #steris4 to crash earlier than this limit. *t is advised that if Bou need to deeplB nest macro calls8 that Bou use the Dosu9 application 0noE alloEs arguments li4e a acro1 Eith explict 3eturn01 calls instead. ,se of the application ;aitExten Eithin a macro Eill not function as expected. !lease use the 3ead application in order to read (2 F from a channel currentlB executing a macro. )l comando seria: &acroEnombreBdeBlaBmacro/ argumento0/argumento7/argumento+F Argu/entoN es un valor o una variable que se pasa a la macro al momento de llamarla desde el plan de llamadas1 'e crear4n las siguientes variables: [\&$!L:B)<=)+] contendr4 el numero marcado1 [\&$!L:B!:+=)<=] contendr4 el contexto de donde se ha llamado la &acro1 [\&$!L:BALI:LI=V] contendr4 la prioridad de la l nea de donde se ha llamado la &acro [\$L*0]/ [\$L*7]/ [\$L*+F son las variables que contienen los argumentos que se han enviado a la &acro1

Aara empeKar a utiliKar la aplicacin &acro se crear4 una muy sencilla que antes de marcar una extensin controle que 5sta est5 disponible: Arimero hay que salir de la consola y modificar el plan de llamadas: !LI" ;uit nano <etc<asterisk<[Link] $l final del archivo se aaden estas l neas: :ma)ro-disponible< exten => s5#5Chan(sAvailAN(P/B+ ACQO_!@C!N0D exten => s5n5"otoifAB:B+ARA($NCACIN0 = /<S/6%D ??

exten => s5n5 a)ro!xit exten => s5n5Playba)-Aall-)ir)uits-busy-no4D exten => s5n5'angup ,na explicacin de las aplicaciones nueva que aparecen en las lineas de la &acro: C2an'sAvai!: controla si una extensin est4 disponible y retorna la variable [\AVA'@ TAT7 ] que puede contener estos valores: I $'=B.)JI!)B,+_+:M+ @ )l canal es valido pero su estado no es conocidoO1 0 $'=B.)JI!)B+:=BI+,') H N+o se est4 usandoO1 7 $'=B.)JI!) I+ ,') H N)l canal est4 en usoO1 2 $'=B.)JI!)BB,'V H N)l canal est4 ocupadoO1 ? $'=B.)JI!)BI+J$LI. H N)l canal es invalidoO1 C $'=B.)JI!)B,+$J$IL$BL) H N)l canal no est4 disponible 0no est registrado a #steris41T. 9 $'=B.)JI!)BLI+*I+* H N)l canal est4 timbrandoO1

Gotoif: literalmente es Nve a la prioridad indicada si se presenta una determinada condicinO/ de otra forma ve a otra prioridad1 >acroE1it: sale de la macro y vuelve al mismo contexto/ extensin prioridad Y 0 de donde se llam1 Aara insertar la &acro en el plan de llamadas creado modificamos la parte utiliKada para llamar una extensin: exten => _#33@5#51ialAN(P/B+!@C!N05/8D exten => _#33@5n5'angup Aara que quede: exten => _#33@5#5 a)roAdisponibleD exten => _#33@5n51ialAN(P/B+!@C!N05/8D exten => _#33@5n5'angup 'e guardan los cambios y se actualiKa el plan de llamadas: asterisk )rvvvvvvvvvvvvvvv !LI" #ia!p!an re!oa# $hora se marca de una extensin a otra y se controla lo que aparece en la consola de $steris% para controlar el comportamiento de la &acro1

?C

2.6 Voice/ai!.conf , 6uz"n #e voz )n el archivo voicemail1conf es donde se configura todo lo relacionado con el buKn de voK1 'i se recibe una llamada y no se contesta o la l nea est4 ocupada/ siempre y cuando se configura el plan de llamadas oportunamente/ entrar4 en funcin el contestador/ grabar4 el mensa#e de voK de#ado por quien llama y enviar4 un correo electrnico de aviso al llamado1 )s posible anexar el archivo audio al correo electrnico en distintos formatos audio1 )l voicemail1conf se encuentra en la carpeta /etc/asteris%1 nano <etc<asterisk<voice/ai!.conf :general< S )mpieKa la parte general1 format=gsmT4av S )l codec audio utiliKado para grabar los mensa#es de voK de#ados en el contestador1 serveremail= fulanoGmiodominio*)om S )l remitente del correo electrnico que avisa de una nuevo mensa#e de voK1 attac2=*es S 'i attach est4 en SBesT el mensa#e de voK se enviar4 como anexo al correo electrnico1 maxmsg=#33 S +umero m4ximo de mensa#es de voK para cada buKn de voK configurado1 maxse)s=%33 S +umero m4ximo de segundos de durada de un mensa#e de voK1 minse)s=% S +umero m nimo de segundos para que un mensa#e de voK sea reconocido como tal y sea enviado al buKn de voK del destinatario1 maxgreet=?3 S 'e puede grabar un mensa#e de bienvenida para nuestro buKn de voK personal1 )ste par4metro define la duracin m4xima del mensa#e 0en segundos11 skip/s=A000 S !uando se escuchan los mensa#e de voK/ si lo hemos configurado previamente/ podemos usar el teclado num5rico del tel5fono para adelantar o devolver el mensa#e mismo1 )#emplo: presionando el nDmero ; se adelantar4 de 2III milisegundos/ es decir 2 segundos/ con el > nos devolvemos de 2 segundos1 maxsilen)e=#3 S 'i mientras se graba un mensa#e de voK hay un silencio de 0I segundos/ la llamada se termina y tambi5n la grabacin1 si!encet2res2o!#=12C ?9

S )ste numero representa el nivel de audio y sirve para definir que se considera silencio1 &4s ba#o el nDmero/ m4s sensible al ruido 1 maxlogins=% S +umero m4ximo de intentos permitidos cuando se marca la contrasea asociada al buKn de voK personal1 moveheard=yes S ,na veK escuchados los mensa#es de voK se mueven a la carpeta :L. 0vieGos1 en autom4tico si se configura en no/ hay que hacerlo desde el menD del contestador1 users)ontext=default S )l contexto predefinido para los usuarios del buKn de voK1 ,externnotify=/usr/bin/myapp S 'i cada veK que se recibe un mensa#e de voK se quiere arrancar un programa hay que configurarlo usando este par4metro1 ,externpass=/usr/bin/myapp S 'i se desea que un programa arranque cada veK que se cambia la contrasea de nuestro buKn de voK hay que configurarlo usando este par4metro1 ,externpassnotify=/usr/bin/myapp S 'i externpass est4 configurado y queremos que la contrasea se actualice tambi5n en voicemail1conf hay que configurar este par4metro1 dire)toryintro=dir-intro S )l mensa#e de introduccin de la aplicacin directory 0para 9uscar las extensiones configuradas en #steris41. )harset=(NO->>89-# S )l est4ndar I': para los mensa#es de texto que se enviaran para notificar la llegada de un nuevo mensa#e de voK1 pbxs-ip=yes S (uitar la la abreviacin TAB<U en el asunto del mensa#e1 fromstring=RoFCoRoi)e S )l nombre que aparecer4 como remitente del correo electrnico1 use#irector*=*es S Los mensa#es de voK que se reciben se pueden reenviar a otros usuarios/extensiones del servidor $steris%1 =ambi5n se pueden de#ar directamente mensa#es de voK en determinados buKones1 )ste par4metro permite buscar en el directorio la persona a la que queremos de#ar o reenviar el mensa#e de voK1 Ko#$cstorage=asterisk ?G

S 'e pueden guardar los mensa#es de voK en un base de datos usando el conector :.B!1 $qu es donde hay que configurar el nombre de la base de datos1 Ko#$cta$!e=voice/essages S )l nombre de la tabla de la base de datos donde guardar los mensa#es de voK1 K C2ange t2e fro/8 $o#* an#<or su$Rect8 varia$!es% S J&B+$&)/ J&B.,L/ J&B&'*+,&/ J&B&$ILB:</ J&B!$LL)LI./ J&B!I.+,&/ S J&B!I.+$&)/ J&B.$=) S S +ote: =he emailbody config ro3 can only be up to C07 characters due to a S limitation in the $steris% configuration subsystem1 Semailsub#ect=TAB<U: +e3 message [\J&B&'*+,&] in mailbox [\J&B&$ILB:<] S =he follo3ing definition is very close to the default/ but the default sho3s S #ust the !I.+$&)/ if it is not null/ other3ise #ust the !I.+,&/ or Nan un%no3n S callerO/ if they are both null1 Semailbody=.ear [\J&B+$&)]:`n`n`t#ust 3anted to let you %no3 you 3ere #ust left a [\J&B.,L] long message Enumber [\J&B&'*+,&]F`nin mailbox [\J&B&$ILB:<] from [ \J&B!$LL)LI.]/ on [\J&B.$=)]/ so you might`n3ant to chec% it 3hen you get a chance1 =han%s^`n`n`t`t`t`ta$steris%`n =odo el bloque de arriba representa las variables y el texto del correo electrnico que se enviar4 para notificar la llegada de un nuevo mensa#e de voK1 'e puede modificar para adaptarlo a las exigencias especificas de cada instalacin1 pagerfromstring=RoFCoRoi)e S 'i se env a una notifica tambi5n a un localiKador Aager esta l nea define el remitente del mensa#e1 pagersubEe)t=Nuevo R S )l ob#eto del mensa#e al Aager1 pagerbody=Nuevo mensaEe de B+R _1IQ0 de dura)iUn en la )asilla B+R _ A($BO@0Vnde B +R _CA$$!Q(105 en B+R _1AC!0 S )l cuerpo del mensa#e1 e/ai!#atefor/at=NA8 N# N6 NM at NF%N>%N S !on este par4metro se configura la hora de llegada del correo en el formato 7?81 mail)md=/usr/sbin/sendmail -t S 'endmail es el programa predefinido para enviar los correos electrnicos1 'i en lugar :.B! se quiere usar el protocolo I&$A22 para guardar los mensa#es de voK/ aqu va indicada su configuracin1 ,imapgreetings=no
22 I&$A Mi%ipedia

?;

S Aara guardar el mensa#e de bienvenida en la carpeta de I&$A1 Igual a no si no se usa I&$A1 ,greetingsfolder=(NBO@ S 'i imapgreetings es igual a SBesT aqu es donde se define la carpeta donde guardar el mensa#e audio de bienvenida1 ,imapparentfolder=(NBO@ S 'i se quiere crear una carpeta dentro de la carpeta I+B:< para cada buKn de voK1 tz=centra! S ,so horario predefinido para indicar la fecha y la hora del correo de voK recibido1 atta)h=yes S 'i es SBesT el mensa#e de voK se anexar4 al correo electrnico de notifica1 atta)hfmt=4av S )l formato audio definido para el env o del mensa#e audio anexo al correo electrnico1 say)id=yes S 'i es a SBesT antes de escuchar el correo de voK se anunciar4 el identificativos 0numero de telXfono o extensiOn1 de quien lo de#1 sayduration=no S $nunciar o no la duracin del correo de voK1 saydurationm=2 S .efinir la duracin m nima del correo de voK para que sea anunciada 0en minutos1. dialout=phones S !ontexto de utiliKar para efectuar llamadas desde el menD del contestador Topcin ? del menD avanKadoU1 sendvoi)email=yes S Aermitir o no de enviar un correo de voK a otra extensin Topcin C del menD avanKadoU1 , )allba)-=fromvm S !ontexto para llamar desde el menD del buKn de voK al remitente de un mensa#e de voK1 , exit)ontext=fromvm S !ontexto donde enviar el usuario si mientras usa los menD del buKn presiona la tecla b o I1 revie4=yes S 'i es SBesT permite a quien est4 de#ando un correo de voK de escucharlo antes de enviarlo1 , operator=yes S Aermite a quien llama de presionar I 0cero1 antes/despu5s/mientras est4 de#ando un correo de voK para buscar una operadora1 ?>

, envelope=no S $ntes de reproducir el mensa#e audio/ reproduce los datos del mensa#e1 , delete=yes S 'i es SBesT una veK que se notifique la llegada de un correo de voK/ 5ste se borrar4 del servidor1 , volgain=3*3 S 'i el correo de voK se grab con un volumen muy ba#o con esta opcin podemos me#orar su calidad1 Aara que se pueda utiliKar se debe haber instalado ':<1 , nextafter)md=yes S Ir al correo de voK que sigue si se presiona las teclas G o > [Link] el mensaGe Hue se esta escuchando1. for)ename=yes S :bliga cada usuario con buKn de voK configurado a grabar su nombre la primera veK que accede1 ,n usuario se considera nuevo si su contrasea coincide con el nDmero de su extensin1 for)egreetings=no S :bliga el nuevo usuario a grabar un mensa#e de bienvenida1 hidefromdir=no S )l usuario no aparecer4 en el directorio1 tempgreet4arn=yes S Lecuerda al usuario que el mensa#e de bienvenida que esta usando es temporal1 ,vm-pass4ord=)ustom_sound S !onfigurar una locucin alternativa para pedir la contrasea del buKn1 , vm-ne4pass4ord=)ustom_sound S !onfigurar una locucin alternativa cuando se avisa de insertar una nueva contrasea para el buKn de voK1 , vm-pass)hanged=)ustom_sound S locucin alternativa para decir N=u contrasea ha sido cambiadaO1 , vm-reenterpass4ord=)ustom_sound S locucin alternativa para decir NIntroduce nuevamente tu contrasea seguida del botn numeral o gato1 , vm-mismat)h=)ustom_sound S locucin alternativa de Nla contrasea insertada y repetida no son igualesO1 listen-)ontrol-for4ard--ey=& S =ecla num5rica para adelantar el mensa#e que se est4 escuchando1 CI

listen-)ontrol-reverse--ey=W S =ecla num5rica para ir atr4s en el mensa#e que se est4 escuchando1 listen-)ontrol-pause--ey=3 S =ecla num5rica para poner en pausa el mensa#e1 listen-)ontrol-restart--ey=2 S =ecla num5rica para volver a escuchar el mensa#e desde el inicio1 listen-)ontrol-stop--ey=#%/8?;>9 S =eclas num5ricas para parar el mensa#e y volver al menD del contestador1 ba)-updeleted=#33 S +umero m4ximo de mensa#es en la carpeta NborradosO1 :Fonemessages< )olombia=Ameri)a/BogotaTXvm-re)eivedX aebY Xdigits/atX ' eastern=Ameri)a/Ne4_Yor-TXvm-re)eivedX Z Xdigits/atX ( p )entral=Ameri)a/Chi)agoTXvm-re)eivedX Z Xdigits/atX ( p )entral2/=Ameri)a/Chi)agoTXvm-re)eivedX J Xdigits/atX ' N XhoursX military=[uluTXvm-re)eivedX J Xdigits/atX ' N XhoursX Xphoneti)/F_pX european=!urope/CopenhagenTXvm-re)eivedX a d b Xdigits/atX ' )n el bloque de arriba se definen las Konas horarias que podemos usar en el contestador1 'i por e#emplo hay usuarios de distintos continentes/ se pueden definir por cada uno de ellos su huso horario y de esta forma configurar la fecha y hora en que recibieron los mensa#es de voK1 :default< S $qu empieKa la configuracin de los buKones de voK para los usuarios pertenecientes al contexto default1 ,maxmsg=83 S .efine el numero m4ximo de correos de voK por cada carpeta de un determinado contexto 0en este caso el contexto es default11 S !ada buKn de voK sigue estas reglas Numero extensiUn => )ontraseHa5 nombre apellido5 )orreo ele)trUni)o5 )orreo pager5op)iones separadas por el signo coma1 'igue la configuracin de los buKones de voK para la extensiones configuradas en el sip1conf1 #333 => #33357ulano5fulanoGmiodominio*)om55tF=Colombia #33# => #33#5Nutano5sutanoGmiodominio*)om55tF=Colombia

C0

$lgunos e#emplos m4s: ,/233 => 9>885 ar- Npen)er5mar-sterGlinux-support*net5mypagerGdigium*)om5atta)h=noT serveremail=myaddyGdigium*)omTtF=)entralTmaxmsg=#3 ,/%33 => %/8?5Ben Qigas5benGameri)an-)omputer*net ,/%#3 => -8/%25Nales5salesGmar-o*net55tF=)olombia ,/3?9 => ?8225 att Broo-s5mattGmar-o*net55TtF=)entralTatta)h=yesTsay)id=yesToperator=yesT moveheard=yesTsayduration=yesTsaydurationm=# ,/3;% => #3995Bian)a Paige5bian)aGbian)apaige*)om55delete=# ,/##3 => %//%5Qob 7lynn5rflynnGblueridge*net ,/2%8 => #2%/5Pim 'olmes5EimGastri)on*ips55CF=european :other< ,other es otro )ontexto )on sus op)iones y sus usuarios Apor eEemplo si el mismo servidor est\ siendo utiliFado por dos empresas distintas D* ,dire)toryintro=dir-)ompany2, mensaEe de bienvenida del dire)torio de la empresa 2 ,#2%/ => 8?;>5Company2 Iser5rootGlo)alhost ,:a)me< , ter)ero )ontexto para otra empresa ,tF=eastern ,### => ;%>%5Pete5peteGa)me-4idgets*)om55tF=)entral ,##2 => ?2?25Nan)y5nan)yGa)me-4idgets*)om 'e guardan los cambios y se vuelve a arrancar $steris%: <etc<init.#<asterisk restart ,na veK configurado el contestador hay que modificar el archivo extensions1conf y aadir algunos bloques que permiten acceder al buKn de voK y de#ar un mensa#e en el mismo1 nano <etc<asterisk<[Link] :internas< exten => 9;5#5Ans4erS abre el canal 0contesta11 exten => 9;5n5Roi)e ail ainAB+CA$$!Q(1AnumD0GdefaultDS env a la llamada directamente al buKn de voK de la extensin que est4 llamando en el contexto default1 exten => 9;5n5'angup, termina la llamada1 BH es el nDmero que desde el tel5fono IA o 'oftphone hay que marcar para acceder al buKn de voK personal1 'e aade otro bloque en el plan de llamadas de modo que si una extensin no est4 disponible o ocupada la llamada entre directamente al buKn de voK de la extensin llamada: e1ten =Z I100X818>acro0#isponi$!e3 e1ten =Z I100X8n8(ia!0 '+<[\EXTEN]8ED3 e1ten =Z I100X8n8Goto'f0[OX[\('A@ TAT7 ]Y = X67 MYP^$us*%unavai!3S segDn si la extensin est5 ocupada o nadie contesta se continuar4 en el dialplan en las prioridades definidas con las etiquetas unavail/ Eno disponibleF/ o busy/ EocupadoF1 e1ten =Z I100X8n0unavai!38Voice/ai!0[\EXTEN]&#efau!t8u3S se activar4 el buKn de voK C7

anunciando que la extensin llamada no est4 disponible 0opciOn u1 y despu5s del tono se podr4 de#ar un mensa#e1 e1ten =Z I100X8n8FangupK se terminar4 la llamada1 e1ten =Z I100X8n0$us*38Voice>ai!0[\EXTEN]&#efau!t8$3K se activar4 el buKn de voK anunciando que la extensin llamada est4 ocupada 0opciOn 91 y que despu5s del tono se podr4 de#ar un mensa#e1 e1ten =Z I100X8n8FangupK se terminar4 la llamada1 'e guardan los cambios y se actualiKa el plan de llamadas: asterisk )rvvvvvvvvvvvvvv !LI" #ia!p!an re!oa# $hora desde el <Hlite se llama la extensin >G para probar el menD del Joice&ail 09uMOn de voM11 2.H '[Link] , protoco!o 'AX Va se ha presentado la parte relacionada con la configuracin de las extensiones 'IA 0prrafo 2.511 )n este p4rrafo se ver4 como configurar otras extensiones usando el protocolo I$<7 2?1 )l archivo que hay que modificar es el iax1conf y se encuentra/ en la carpeta /etc/asteris%1 nano <etc<asterisk<[Link] Ogenera!P $in#port=ED6B S )l puerto ,.A usado por este protocolo1 )ste par4metro va configurado antes del bindaddr1 $in#a##r=[Link] S IA que $steris% usar4 para NescucharO los pedidos de conexiones1 I1I1I1I para todos los IA del computador1 #e!a*reRect=*es S &e#ora la seguridad contra Nbrute force pass3ord attac%sO retrasando el env o de los rechaKos de autenticacin1 srv!ookup=*es S Aermite hacer bDsquedas de registros .+' 'LJ basadas en los nombres de dominio para llamadas I$< salientes del tipo I$<7/usuarioZdominio1 a))ount)ode=lss3#3# S *enera una cuenta general con la cual grabar las llamadas1
2? I$< E*nter-#steris4 eIchange protocolF es uno de los protocolos utiliKado por $steris%/ un servidor AB< Ecentral telefnicaF de cdigo abierto patrocinado por .igium1 )s utiliKado para mane#ar conexiones JoIA entre servidores $steris%/ y entre servidores y clientes que tambi5n utiliKan protocolo I$<1 Mi%ipedia

C2

language=en S Lengua#e predefinido para las locuciones 0ingles1. disallo4=all S .esactivamos todos los codecs 0audio B video1. allo4=ala4 allo4=gsm , minregexpire = ?3 , maxregexpire = ?3 Stiempo m nimo y m4ximo de expiracin de la registracin de las peers $ partir de esta parte del archivo se definen los proveedores I$<7 u otros AB< $steris% con los que nos queremos registrar1 ,register => mar-o6se)retpassGtormenta*linux-support*net S Legistro con nombre usuario/ contrasea y dominio1 ,register => EoeGremotehost68?8? S Legisto con nombre/ dominio y puerto remoto 0sin contrase]a1. ,register => mar-o6:tor-ey<Gtormenta*linux-support*net S Legistro con nombre/ clave L'$2C 0tor4eB1 y dominio1 $hora inicia la configuracin de las extensiones I$<7 :guest< S .e#amos esta parte si queremos configurar un usuario hu5sped 0sin contrase]a11 type=user S Auede solo recibir llamadas1 )ontext=default S )l contexto que usar4 en extensions1conf1 )allerid=L"uest (A@ IserL S el identificador del usuario hu5sped1 'e configura una extensin de prueba para luego usarla para una conexin desde desde un cliente I$<71 :mar-o< S +ombre de la extensin1
2C )l siste/a criptogrfico con c!ave pQ$!ica - A es un algoritmo asim5trico cifrador de bloques/ que utiliKa una clave pDblica/ la cual se distribuye Een forma autenticada preferentementeF/ y otra privada/ la cual es guardada en secreto por su propietario1

C?

type=friend S =ipo friend es peer y user a la veK1 host=dynami) S 'i el cliente no se conecta siempre desde un IA determinado hay que indicar dynamic1 se)ret=pass4ord S !ontrasea1 )ontext=phones S !ontexto asociado a este usuario en extensions1conf1 mailbox=#2%/Gdefault S BuKn de los correo de voK del usuario1 Jualify=yes S Aara averiguar peridicamente con un +:=I-V si el usuario est4 conectado al servidor $steris%1 )allerid = Kmar-oL S Identificador de llamada del usuario1 reJuire)allto-en=auto S )n septiembre del 7II> hubo una actualiKacin del protocolo I$<7 para me#orar la seguridad1 &uchos 'oftphone y tel5fonos I$<7 todav a no soportan los cambios1 )n este caso para tener la certeKa de que sea posible conectarlos a $steris% hay que configurar este par4metro en +: o $,=:1 'e guardan los cambios y se actualiKa la configuracin de $steris%: asterisk )rvvvvvvvvvvvvvvv !LI" ia12 re!oa# Aara conectar a la extensin reci5n creada en el archivo iax1conf se utiliKar4 el softphone Woiper291 ,na veK instalado se abre y se entra en la ventana de opciones1 'e elige N!uenta nueva de iaxO y se pone el nombre de la cuenta1

29 3331Koiper1com

CC

)n la siguiente pantalla se insertan los datos de la cuenta como definidos en iax1conf1

)n la barra de la cuenta aparecer4: mar%o 0-egistra#o3 0'AX3 $hora se puede hacer llamadas a extensiones internas y nDmeros externos1 $unque todav a no haya muchos proveedores JoIA que brindan conexiones I$<7/ es un protocolo destinado a crecer en los prximos aos siempre y cuando resuelvan alguno bugs que parece padecer1 2.C .[Link] )l archivo features1conf es donde se configura el parqueo de las llamadas y se asigna una funcin a una determinada combinacin de teclas1 )s aqu / por e#emplo/ donde se definen cuales son las teclas que tenemos que presionar para transferir una llamada/ grabarla/ lanKar una aplicacin C9

nano <etc<asterisk<[Link] S S -eatures1conf S :general< par-ext => ;33 S La extensin donde transferir las llamadas para parquearlas1 par-pos => ;3#-;#3 S )l numero de extensiones reservadas para parquear las llamadas1 par-inghints = no S si est4 en yes podemos controlar el estado de las extensiones donde se parquean las llamadas sino tenemos que aadir las extensiones reservadas para el parqueo de las llamadas en el dialplan/ contexto subscribe par-ingtime => /8 S +umero de segundos despu5s de los cuales la llamada parqueada viene transferida a la extensin definida por el prximo par4metro )omeba)-toorigin = yes S si est4 en yes la llamada parqueada/ despu5s del par%ingtime/ vuelve a la extensin que la parqueS si est4 en no la llamada ser4 transferida al contexto par%edcallstimeout/ extensin csd/prioridad c0d que habr4 que crear en extensions1conf )ourtesytone = beep S )l sonido que ser4 enviado a la llamada parqueada cuando alguien la llama o cuando empieKa y termina la grabacin de la misma par-edplay = both S .efine a quien enviar el beep cuando se llama la extensin parqueada1 Auede ser: par%edEcanal parqueadoF callerEllamanteF bothEambosF

par-ed)alltransfers = )aller S 8abilita o deshabilita la secuencia de tonos para transferir la llamada cuando es una llamada parqueada1 Auede ser: calleeEllamadoF caller EllamanteF both EambosF no CG

par-ed)allrepar-ing = )aller S 8abilita o deshabilita la secuencia de tonos para parquear una llamada cuando era ya una llamada parqueada1 Auede ser: calleeEllamadoF caller EllamanteF bothEambosF no1 Kparke#ca!!2angup = ca!!er S 8abilita o deshabilita la secuencia de tonos para terminar una llamada cuando es una llamada parqueada1 Auede ser: calleeEllamadoF caller EllamanteF bothEambosF no1 Kparke#ca!!recor#ing = ca!!er S 8abilita o deshabilita la secuencia de tonos para grabar una llamada cuando es una llamada parqueada1 Auede ser: calleeEllamadoF caller EllamanteF bothEambosF no1 par-edmusi))lass=default S La clase de mDsica en espera que escuchar4 la extensin que ha sido parqueada transferdigittimeout => 8 S +umero de segundos de espera entre cada d gito cuando se esta transfiriendo una llamada xfersound = beep S )l sonido que indicar4 que la transferencia de la llamada NasistidaO se complet xferfailsound = beeperr S )l sonido que indicar4 que la transferencia de la llamada no se pudo completar pi)-upexten = W> S )n la configuracin de las extensiones 'IA se pueden configurar dos par4metros: callgroup y pic%upgroup1 !uando dos o m4s extensiones pertenecen al mismo callgroup y una de ellas timbra/ se puede contestar la llamada desde una de las extensiones que en pic%upgroup tienen configurado el callgroup de la extension1 featuredigittimeout = 2333 S numero de milisegundos entre cada d gito cuando se activan le funcionalidades definidas m4s adelante

C;

atxfernoans4ertimeout = #8 S =iempo m4ximo disponible para contestar una llamada transferida con el m5todo NasistidoO Een segundosF atxferdrop)all = no S 'i quien transfiere una llamada con el m5todo NasistidoO cuelga antes que la llamada sea transferida completamente/ $steris% devuelve la llamada a quien la estaba transfiriendo1 'i est4 en yes la llamada no se devuelve y se considera terminada1 atxferloopdelay = #3 S +umero de segundos de espera antes de devolver la llamada Esi atxferdropcall = noF atxfer)allba)-retries = 2 S Las veces que se intentar4 devolver la llamada La mapa de las funcionalidades que aparecen aqu aba#o solo funcionan si $steris% hace de puente entre las llamadas1 'i por e#emplo en la configuracin de las extensiones en sip1conf se configura canreinvite=yes es probable que estas funcionalidades no resulten :featuremap< blindxfer => & S la tecla que hay que presionar para empeKar la transferencia de una llamada dis)onne)t => W3 S la secuencia de teclas que hay que presionar para terminar la llamada automon => W# S La secuencia de teclas que hay que presionar para grabar la llamada Een dos archivos audio/ uno para cada canalF atxfer => W2 S La secuencia de teclas que hay que presionar para una transferencia de llamada NasistidaO1 e(ue diferencia hay entre blindxfer y atxferf $l terminar este bloque la explicacin1 par-)all => W; S La secuencia de teclas que hay que presionar para parquear la llamada1 Aodemos usar esta secuencia o transferir directamente la llamada a la extensin GII automixmon => W% S La secuencia de teclas que hay que presionar para grabar la llamada en un Dnico archivo audio meKclando las voces de los dos interlocutores $!in1fer $ lo largo de una conversacin se quiere transferir la llamada a otra extensin1 8ay que presionar la tecla g y luego el numero de la extensin1 La llamada ser4 transferida y nuestra llamada terminar4 C>

at1fer $ lo largo de una conversacin queremos transferir la llamada a otra extensin1 Aresionamos la secuencia b7 y luego el numero de la extensin donde se quiere transferir la llamada1 'e escuchar4 timbrar la extension y una veK que el interlocutor descuelgue se podr4 hablar con 5l Epor e#emplo para anunciar la llamada que se va a transferirF1 'olamente cuando colgaremos las dos extensiones ser4n conectadas entre ellas1 :appli)ationmap< S en esta parte del archivo se pueden aadir funcionalidades personaliKadas que luego ser4n disponibles en el plan de llamadas1 La sintaxis para estas funcionalidades es:
_.eatureNa/eZ =Z _(T>.Ise;uenceZ8_Activate4nZO<_Activate#6*ZP8_App!icationZO8_AppArgu/entsZO8>4FIC!assPP

-eature+ame: )l nombre de la funcionalidadS .=&-Bsequence: la secuencia de teclas para activar la funcionalidadS $ctivate:n: aqu se define para quien activar la funcionalidad1 Los valores son self y peer1 !on self la funcionalidad se activa para quien la activa/ con peer para el otro canal $ctivatedBy: )ste par4metro define quien tiene acceso a la funcionalidad1 Las opciones son: caller EllamanteF/ callee EllamadoF/ both EambosF $pplication: La aplicacin que se va a e#ecutar $pp$rguments: Las opciones asociadas a la aplicacin &:8B!lass: la clase de mDsica en espera que escuchar4 el canal libre mientras se e#ecuta la funcionalidad

)#emplo: test# => W95peer5Playba)-5tt-mon-eys5default S Aresionando la secuencia b> desde un canal/ el otro escuchar4 la locucin ttHmon%eys mientras el canal que activ la funcionalidad/ escuchar4 mDsica en espera1 'e guardan los cambios1 Aara volver disponibles estas funciones hay que modificar el plan de llamadas1 'e va a recoger la configuracin del archivo as como se de# en el p4rrafo 71C )n negrita aparecen las partes que hay que aadir1 nano <etc<asterisk<[Link] TgeneralU static=yes 3riteprotect=no autofallthrough=yes priority#umping=yes TglobalsU ',A = 'IA/0III -,L = 'IA/IICG20IIIIIII Q,'= = 'IA/#ustvoip (MNA>'CI.EAT7-E =test1W$!in#1ferWauto/onW#isconnectWat1ferWparkca!!Wauto/i1/on 9I

TinternasU exten =" >G/0/$ns3erEF exten =" >G/n/Joice&ail&ainE[\!$LL)[Link]]ZdefaultF exten =" >G/n/8angupEF exten =" 072/0/$ns3erEF exten =" 072/7/Alaybac%EhelloH3orldF exten =" 072/2/8angupEF exten =" 0II/0/$ns3er exten =" 0II/n/&usic:n8oldEmp2/2IIF exten =" 0II/n/8angup exten =" 0CI/0/$ns3er exten =" 0CI/n/Alaybac%EechoHtestF exten =" 0CI/n/)choE0CF exten =" 0CI/n/8angup exten =" B0II</0/&acroEdisponibleF exten =" B0II</n/.ialE'IA/[\)<=)+]/?CF exten =" B0II</n/*otoIfE[T[\.I$L'=$=,'] = B,'VUfbusy:unavailF exten =" B0II</nEunavailF/JoicemailE[\)<=)+]Zdefault/uF exten =" B0II</n/8angup exten =" B0II</nEbusyF/Joice&ailE[\)<=)+]Zdefault/bF exten =" B0II</n/8angup TexternasU exten =" B2<<<<<<<<</0/.ialE&obile/+o%ia)G0/[\)<=)+]/?CF exten =" B2<<<<<<<<</n/8angup exten =" BIICG21/0/.ialE[\Q,'=]/[\)<=)+]F exten =" BIICG21/n/Alaybac%EallHoutgoingHlinesHunavailableF exten =" BIICG21/n/8angupEF TsubscribeU exten =" 0III/hint/'IA/0III exten =" 0II0/hint/'IA/0II0 e1ten =Z H0182int8park%H01&parke#ca!!s e1ten =Z H0282int8park%H02&parke#ca!!s e1ten =Z H0A82int8park%H0A&parke#ca!!s e1ten =Z H0E82int8park%H0E&parke#ca!!s e1ten =Z H0D82int8park%H0D&parke#ca!!s e1ten =Z H0682int8park%H06&parke#ca!!s e1ten =Z H0H82int8park%H0H&parke#ca!!s e1ten =Z H0C82int8park%H0C&parke#ca!!s e1ten =Z H0B82int8park%H0B&parke#ca!!s 90

e1ten =Z H1082int8park%H10&parke#ca!!s TsoloHinternasU include =" internas include =" subscribe inc!u#e =Z parke#ca!!s TphonesU include =" internas include =" externas include =" subscribe inc!u#e =Z parke#ca!!s TmacroHdisponibleU exten =" s/0/!hanIs$vailE'IA/[\&$!L:B)<=)+]F exten =" s/n/*otoifE[T[\$J$IL'=$=,'] = ?Uf?:2F exten =" s/n/&acro)xit exten =" s/n/Alaybac%EallHcircuitsHbusyHno3F exten =" s/n/8angup Aara que las funcionalidades configuradas en features1conf sean activas hay que definir la variable .V+$&I!B-)$,=,L)' y aadirle todas las funcionalidades que se han configurado1 .espu5s de la etiqueta TsubscribeU se han aadido dieK l neas para poder controlar el estado de las extensiones usadas para parquear las llamadas1 .e esta forma siempre se podr4 saber cuantas llamadas est4n parqueadas Een los tel5fonos IA soft3are y hard3are que prev5n esta posibilidadF1 Aara terminar en las etiquetas TphonesU y TsoloHinternasU se ha aadido el contexto par%edcalls1 =odos la extensiones que tengan acceso al contexto phones/ adem4s de tener acceso al contexto internas/ externas y subscribe/ tendr4n acceso al contexto par%edcalls es decir podr4n llamar una extension parqueada1 8ay tres aplicaciones relacionadas con el parqueo de llamadas que se pueden utiliKar en el plan de llamadas: Aar% Aar%$nd$nnounce Aar%ed!all

'e guardan los cambios y se reinicia $steris%: <etc<init.#<asterisk restart .esde la consola de $steris% podemos ver las funcionalidades activadas1 asterisk )rvvvvvvvvvvvv !LI" features s2ow 97

<uiltin Feature (efault Current --------------- ------- ------!ic4up ^8 ^8 <lind 2ransfer % % #ttended 2ransfer ^2 One 2ouch onitor ^1 (isconnect Call ^ ^6 !ar4 Call ^C One 2ouch ix onitor ^" (Bnamic Feature (efault Current --------------- ------- ------test1 no def ^@ Call par4ing -----------!ar4ing extension' C66 !ar4ing context' par4edcalls !ar4ed call extensions' C61-C16 2.C.1 'ntegraci"n #e [Link] con !a ap!icaci"n ('A@ Va se ha presentado EA4rrafo 71;F la configuracin del archivo features conf y como se definen el parqueo de las llamadas y otras aplicaciones1 )n este p4rrafo se ver4 como integrar esas funcionalidades en el dialplan de $steris% usando la aplicacin .ial1 La sintaxis de la aplicacin .ial: .ialE=echnology/resourceTR=ech7/resource7111UT/timeoutUT/optionsUT/,LLUF: .ial: el nombre de la aplicacin que nos permite en el dialplan hacer una llamada =echnology: el protocolo o la tecnolog a usada para hacer la llamada Ee#: 'IA/ I$<7F resource: el recurso usado para hacer la llamada o el numero de extensin a llamar timeout: define los segundos dentro de los cuales la llamada tiene que ser contestada1 options: son las opciones que podemos aadir a la aplicacin ,LL: para enviar una direccin Meb a la extensin llamada Esi dicha extensin tiene la capacidad para recibirlaF

$lgunos e#emplos: exten => #3335#51ialAN(P/#3335/8D exten => #333525'angup 'i se marca la extensin 0III $steris% llamar4 dicha extensin usando el protocolo 'IA/ esperar4 2I segundos1 'i la extensin 0III no contesta dentro de los treinta segundos/ $steris% procesar4 la l nea siguiente del dialplan/ es decir terminar4 la llamada1

92

exten => 338;%33#3333335#51ialAN(P/Eustvoip/338;%33#3333335/8D exten => 338;%33#333333525'angup )n este caso si desde un 'oftAhone o IA Ahone conectados a la centralita se marca el numero IICG2II0IIIII/ $steris% llamar4 dicho numero usando un proveedor JoIA Een este caso especifico QustvoipF1 )sperar4 una respuesta por ?C segundos y si nadie contesta terminar4 la llamada1 !omo tecnolog a se ha indicado 'IA porque #ustvoip usa solo este tipo de protocolo1 )n el caso de proveedores que utilicen el protocolo I$<7 ser a: exten => 338;%33#3333335#51ialA(A@2/Eustvoip/338;%33#3333335/8D exten => 338;%33#333333525'angup Aara configurar las funcionalidades definidas en el archivo features1conf se tendr4 que utiliKar unas opciones de la aplicacin .ial1 exten => #3335#51ialAN(P/23335%35h'D Las opciones presentes en la linea aqu presentada son dos: h: permite al llamado colgar la llamada usando la tecla bI 8: permite al llamante colgar la llamada usando la tecla bI

exten => #3335#51ialAN(P/23335%35-]D %: permite al llamado parquear la llamada presionando la secuencia de teclas definida en features1conf _: permite al llamante parquear la llamada presionando la secuencia de teclas definida en features1conf

exten => #3335#51ialAN(P/23335%35tCD t: permite al llamado transferir la llamada presionando la secuencia de teclas definida en features1conf =: permite al llamante transferir la llamada presionando la secuencia de teclas definida en features1conf

exten => #3335#51ialAN(P/23335%354^D 3: permite al llamado empeKar la grabacin de la llamada presionando la secuencia de teclas definida en features1conf1 $steris%/ en este caso/ crear4 dos archivos audio/ uno por cada interlocutor1 M: permite al llamante empeKar la grabacin de la llamada presionando la secuencia de teclas definida en features1conf1 $steris%/ en este caso/ crear4 dos archivos audio/ uno por cada interlocutor1

exten => #3335#51ialAN(P/23335%35x@D 9?

x: permite al llamado empeKar la grabacin de la llamada presionando la secuencia de teclas definida en features1conf1 La diferencia con las opciones 3 y M es que en este caso los dos canales Ellamante y llamadoF se grabaran en un Dnico archivo audio <: lo mismo de arriba pero para el llamante1

'i se quiere/ por e#emplo/ activar todas estas opciones a la veK/ la aplicacin .ial aparecer4 de esta forma: exten => _#33@5#51ialAN(P/ B+!@C!N05/85h'-]tC4^x@D $ seguir se presentar4n algunos registros como aparecen en la consola de $steris% al activar o desactivar las funcionalidades descritas1 asterisk )rvvvvvvvvvvvvvvv !LI" _ &*!1666-66@1d886 ansEered &*!1661-66@2@2e6 -- &topped music on hold on &*!.1661-66@2@2e6 LL Extension Changed 2166=internal? neE state *n,se for AotifB ,ser 1666 =Aov 6 16'55'28? (2 F="62"8?' channel.c'2628 ++ast+read' (2 F 9egin J%K received on &*!.216666@1d886 =Aov 6 16'55'28? (2 F="62"8?' channel.c'26"8 ++ast+read' (2 F 9egin passthrough J%K on &*!.2166-66@1d886 =Aov 6 16'55'28? (2 F="62"8?' channel.c'2:56 ++ast+read' (2 F end J%K received on &*!.216666@1d8868 duration 166 ms =Aov 6 16'55'28? (2 F="62"8?' channel.c'2:@6 ++ast+read' (2 F end accepted Eith 9egin J%K on &*!.2166-66@1d886 =Aov 6 16'55'28? (2 F="62"8?' channel.c'2612 ++ast+read' (2 F end passthrough J%K on &*!.2166-66@1d886 -- &tarted music on hold8 class JdefaultK8 on &*!.2"66-66@2@2e6 -- Y&*!.1666-66@1d886Z !laBing [Link] 0language JitK1 =Aov 6 16'55'"6? (2 F="62"8?' channel.c'2628 ++ast+read' (2 F 9egin JCK received on &*!.166666@1d886 =Aov 6 16'55'"6? (2 F="62"8?' channel.c'26"2 ++ast+read' (2 F 9egin ignored JCK on &*!.166666@1d886 =Aov 6 16'55'"6? (2 F="62"8?' channel.c'2:56 ++ast+read' (2 F end JCK received on &*!.166666@1d8868 duration 166 ms =Aov 6 16'55'"6? (2 F="62"8?' channel.c'2612 ++ast+read' (2 F end passthrough JCK on &*!.1666-66@1d886 =Aov 6 16'55'"1? (2 F="62"8?' channel.c'2628 ++ast+read' (2 F 9egin J6K received on &*!.166666@1d886 =Aov 6 16'55'"1? (2 F="62"8?' channel.c'26"2 ++ast+read' (2 F 9egin ignored J6K on &*!.166666@1d886 =Aov 6 16'55'"1? (2 F="62"8?' channel.c'2:56 ++ast+read' (2 F end J6K received on &*!.166666@1d8868 duration 126 ms 9C

=Aov 6 16'55'"1? (2 F="62"8?' channel.c'2612 ++ast+read' (2 F end passthrough J6K on &*!.1666-66@1d886 =Aov 6 16'55'"2? (2 F="62"8?' channel.c'2628 ++ast+read' (2 F 9egin J6K received on &*!.166666@1d886 =Aov 6 16'55'"2? (2 F="62"8?' channel.c'26"2 ++ast+read' (2 F 9egin ignored J6K on &*!.166666@1d886 =Aov 6 16'55'"2? (2 F="62"8?' channel.c'2:56 ++ast+read' (2 F end J6K received on &*!.166666@1d8868 duration 126 ms =Aov 6 16'55'"2? (2 F="62"8?' channel.c'2612 ++ast+read' (2 F end passthrough J6K on &*!.1666-66@1d886 -- &topped music on hold on &*!.1661-66@2@2e6 -- &tarted music on hold8 class JdefaultK8 on &*!.1666-66@2@2e6 LL !ar4ed &*!.1661-66@2@2e6 on C617par4edcalls. ;ill timeout 9ac4 to extension =phones? 16668 1 in 5: seconds -- Y&*!.1666-66@1d886Z !laBing [Link] 0language JitK1 -- Y&*!.1666-66@1d886Z !laBing [Link] 0language JitK1 -- Y&*!.1666-66@1d886Z !laBing [Link] 0language JitK1 -- #dded extension JC61K prioritB 1 to par4edcalls 06x82"6a61 LL Extension Changed C61=internal? neE state *n,se for AotifB ,ser 1661 LL Extension Changed C61=internal? neE state *n,se for AotifB ,ser 1666 )n este e#emplo la llamada de la extensin 0III a la extensin 0II0 viene contestada1 .esde la extensin 0III se presiona la tecla numeral g y luego se parquea la llamada presionando la secuencia GII Ecomo configurado en el archivo features1conf1 La locucin de $steris% nos dir4 en que posicin ha sido parqueada la llamada Een este caso la extensin GI0F1 La llamada quedar4 en espera para ?C segundos y luego $steris% devolver4 la llamada a la extensin 0III1 !omo se puede ver en las dos ultimas l neas/ $steris% notificar4 tambi5n a las extensiones 0III y 0II0 que la extensin GI0 est4 en uso1 )sto porque en los softphone de estas dos extensiones se han aadido/ en la lista de contactos/ dicha extensin1 _ &*!.1666-668e"@@6 ansEered &*!.1661-66@2@2e6 -- &topped music on hold on &*!.1661-66@2@2e6 LL Extension Changed 1666=internal? neE state *n,se for AotifB ,ser 1666 =Aov 6 16'::'22? (2 F="625@?' channel.c'2628 ++ast+read' (2 F 9egin J^K received on &*!.166166@2@2e6 =Aov 6 16'::'22? (2 F="625@?' channel.c'26"8 ++ast+read' (2 F 9egin passthrough J^K on &*!.1661-66@2@2e6 =Aov 6 16'::'22? (2 F="625@?' channel.c'2:56 ++ast+read' (2 F end J^K received on &*!.166166@2@2e68 duration 166 ms =Aov 6 16'::'22? (2 F="625@?' channel.c'2:@6 ++ast+read' (2 F end accepted Eith 9egin J^K on &*!.2"66-66@2@2e6 =Aov 6 16'::'22? (2 F="625@?' channel.c'2612 ++ast+read' (2 F end passthrough J^K on &*!.1661-66@2@2e6 =Aov 6 16'::'22? (2 F="625@?' channel.c'2628 ++ast+read' (2 F 9egin J2K received on &*!.166166@2@2e6 =Aov 6 16'::'22? (2 F="625@?' channel.c'26"8 ++ast+read' (2 F 9egin passthrough J2K on &*!.1661-66@2@2e6 99

=Aov 6 16'::'2"? (2 F="625@?' channel.c'2:56 ++ast+read' (2 F end J2K received on &*!.166166@2@2e68 duration 166 ms =Aov 6 16'::'2"? (2 F="625@?' channel.c'2:@6 ++ast+read' (2 F end accepted Eith 9egin J2K on &*!.1661-66@2@2e6 =Aov 6 16'::'2"? (2 F="625@?' channel.c'2612 ++ast+read' (2 F end passthrough J2K on &*!.1661-66@2@2e6 -- Y&*!.1661-66@2@2e6Z !laBing [Link] 0language JitK1 -- ,ser hit J^"K to record call. filename' auto-122:@86@2"-2"66-2166 LL <egin ix onitor 3ecording &*!.1666-668e"@@6 =Aov 6 16'::'26? (2 F="625@?' channel.c'2628 ++ast+read' (2 F 9egin J^K received on &*!.166166@2@2e6 =Aov 6 16'::'26? (2 F="625@?' channel.c'26"8 ++ast+read' (2 F 9egin passthrough J^K on &*!.1661-66@2@2e6 =Aov 6 16'::'26? (2 F="625@?' channel.c'2:56 ++ast+read' (2 F end J^K received on &*!.166166@2@2e68 duration 166 ms =Aov 6 16'::'26? (2 F="625@?' channel.c'2:@6 ++ast+read' (2 F end accepted Eith 9egin J^K on &*!.1661-66@2@2e6 =Aov 6 16'::'26? (2 F="625@?' channel.c'2612 ++ast+read' (2 F end passthrough J^K on &*!.1661-66@2@2e6 =Aov 6 16'::'2C? (2 F="625@?' channel.c'2628 ++ast+read' (2 F 9egin J2K received on &*!.166166@2@2e6 =Aov 6 16'::'2C? (2 F="625@?' channel.c'26"8 ++ast+read' (2 F 9egin passthrough J2K on &*!.1661-66@2@2e6 =Aov 6 16'::'2C? (2 F="625@?' channel.c'2:56 ++ast+read' (2 F end J2K received on &*!.166166@2@2e68 duration 126 ms =Aov 6 16'::'2C? (2 F="625@?' channel.c'2:@6 ++ast+read' (2 F end accepted Eith 9egin J2K on &*!.1661-66@2@2e6 =Aov 6 16'::'2C? (2 F="625@?' channel.c'2612 ++ast+read' (2 F end passthrough J2K on &*!.1661-66@2@2e6 -- Y&*!.1661-66@2@2e6Z !laBing [Link] 0language JitK1 -- ,ser hit J^"K to stop recording call. LL End ix onitor 3ecording &*!.1666-668e"@@6 )n este e#emplo la extensin 0II0 llama la extensin 0III1 La llamada viene contestada1 Aresionando la secuencia b2 desde la extensin 0II0 se empeK4 a grabar la llamada en la modalidad &ix&onitor/ es decir en un Dnico archivo audio1 Aresionando b2 otra veK la grabacin terminar41 Aara terminar se modificar4 el plan de llamadas para incluir estas funciones en las llamadas entre extensiones1 Een negrita los cambiosF: exten =" B0II</0/&acroEdisponibleF exten =" B0II</n/.ialE'IA/[\)<=)+]/?C/2Fk`tTwU1XF exten =" B0II</n/*otoIfE[T[\.I$L'=$=,'] = B,'VUfbusy:unavailF exten =" B0II</nEunavailF/JoicemailE[\)<=)+]Zdefault/uF exten =" B0II</n/8angup exten =" B0II</nEbusyF/Joice&ailE[\)<=)+]Zdefault/bF exten =" B0II</n/8angup 9G

2.B @[Link] )n el archivo logger1conf es donde se configuran todos los registros de las actividades de $steris%1 'e abre el archivo: nano <etc<asterisk<![Link] :general< dateformat=27 2C S formato I': ;9I0 para las fechas appendhostname = yes S si se quiere que el nombre de cada archivo de registro termine con el nombre del dominio hay que activar este parametro Jueue_log = yes S con queueBlog se indica si se quiere tener un registro de las colas de espera Epredefinido es yesF Jueue_log_name = Jueue_log S )l nombre del archivo donde se guardar4 los registros de las colas en espera Epredefinido queueBlogF S Los archivos de registros se pueden volver de un tamao bastante grande volviendo un poco incmoda su consulta1 Aara evitar esto se puede usar el programa logrotate1 )n esta parte del archivo se indica como se quiere NrotarO los archivos rotatestrategy = rotate S de este modo el archivo m4s vie#o tendr4 el numero secuencial m4s alto1 event_log = yes S .e manera predefinida asteris% registra en un archivo los eventos gen5ricos Saqu aba#o empieKa la parte dedicada a la definicin de lo que se quiere registrar en cada archivo Eincluida la consolaF :logfiles< S S 'e puede registrar en cada archivo y consola los siguientes eventos: S debug S notice S 3arning S error S verbose S dtmf S 9;

S )sta es una buena configuracin: debug> debug )onsole => noti)e54arning5error5dtmf5debug messages => noti)e54arning full => error S en la consola aparecer4n las noticias/ los avisos/ los errores/ el debug y los tonos dtmf presionados1 S en el archivo messages las noticias/ los avisos y el debug S en el archivo full solamente los errores 'e guardan los cambios y se pasa a la definicin de las pol tica de rotacin de los archivos de registro1 Aara definir esta pol ticas hay que instalar el programa Logrotate que se encarga de este tipo de tarea1 *u/ insta!! !ogrotate ,na veK instalado se crea un nuevo archivo donde se van a definir la rotacin de los archivos nano <etc<!ogrotate.#<asterisk 'e pegan las siguientes l neas: /var/log/asteris-/messages /var/log/asteris-/full + missingorotate ; daily postrotate /usr/sbin/asteris- -rx Xlogger reloadX > /dev/null 2> /dev/null ends)ript 0 /var/log/asteris-/Jueue_log + missingorotate 8 siFe=#33postrotate /usr/sbin/asteris- -rx Xlogger reloadX> /dev/null 2> /dev/null ends)ript 0 )l primer bloque define la rotacin para el archivo messages y el archivo full1 La rotacin ser4 diaria y se crear4n un m4ximo de G archivos secuenciales Emessages10 messages17 / etc1F1 )l m4s antiguo tendr4 el numero secuencial m4s alto1 .espu5s de la rotacin EpostrotateF se actualiKa la configuracin del archivo logger1conf en asteris%1 )l segundo bloque define la pol tica de rotacin del archivo de registro queueBlog1 )n este caso el archivo rotar4 cuando alcanKar4 un tamao de 0II _byte y se creer4n un m4ximo de C archivos secuenciales1 9>

Aara testar el archivo de configuracin creado el procedimiento es: c# <etc<!ogrotate.# !ogrotate )fv asterisk La respuesta ser4: reading config file asteris4 reading config info for .[Link] .[Link] reading config info for .[Link]+log )andling 2 logs rotating pattern' .[Link] .[Link] forced from command line 0C rotations1 emptB log files are rotated8 old logs are removed considering log .[Link] log .[Link] does not exist`s4ipping considering log .[Link] log .[Link] does not exist`s4ipping not running postrotate script8 since no logs Eere rotated not running postrotate script8 since no logs Eere rotated rotating pattern' .[Link]+log forced from command line 0: rotations1 emptB log files are rotated8 old logs are removed considering log .[Link]+log log needs rotating rotating log .[Link]+log8 log-ZrotateCount is : renaming .[Link]+log.: to .[Link]+log.6 0rotatecount :8 logstart 18 i :18 old log .[Link]+log.: does not exist renaming .[Link]+log.5 to .[Link]+log.: 0rotatecount :8 logstart 18 i 518 old log .[Link]+log.5 does not exist renaming .[Link]+log." to .[Link]+log.5 0rotatecount :8 logstart 18 i "18 old log .[Link]+log." does not exist renaming .[Link]+log.2 to .[Link]+log." 0rotatecount :8 logstart 18 i 218 old log .[Link]+log.2 does not exist renaming .[Link]+log.1 to .[Link]+log.2 0rotatecount :8 logstart 18 i 118 renaming .[Link]+log.6 to .[Link]+log.1 0rotatecount :8 logstart 18 i 618 old log .[Link]+log.6 does not exist log .[Link]+log.6 doesnKt exist`EonKt trB to dispose of it renaming .[Link]+log to .[Link]+log.1 running postrotate script Aara aplicar los cambios desde la consola de $steris%: asterisk )rvvvvvvvvvvvvvv

GI

se escribe: !LI" !ogger re!oa# 2.10 .o!!ow/[Link] 0s9gue/e3 )l archivo follo3me permite hacer una cosa muy sencilla: definir una serie de nDmeros Eextensiones internas/ fi#os o celularesF donde desviar la llamada si en la extensin predefinida nadie contesta o si ha sido activada esta opcin1 'i el desv o es hacia otras extensiones internas no tendr4 ningDn costo/ si se hace hacia nDmeros fi#os y/o celulares para hacer la llamada habr4 que utiliKar proveedores JoIA y pagar la relativa tarifa1 !omo se ha visto para el desv o de llamada sencillo Ep4rrafo 71;F/ se podr4 activar y desactivar la aplicacin segDn como se necesite1 'e modifica el archivo de configuracin: nano <etc<asterisk<fo!!ow/[Link] )l archivo empieKa con una parte general que es igual para todas las extensiones configuradas1 Luego/ se personaliKa la configuracin para cada extensin1 :general< featuredigittimeout=>8333 S numero de milisegundos disponibles para el llamado para aceptar o rechaKar la llamada ta-e)all=># S para aceptar la llamada/ el llamado/ despu5s de descolgar/ tendr4 que hundir la tecla 0 del tel5fono de)line)all=>2 S para rechaKarla la tecla 7 )all-from-prompt=>follo4me/)all-from S este es la locucin predefinida que escuchar4 el llamado anunci4ndole quien lo est4 llamando nore)ording-prompt=>follo4me/no-re)ording S la locucin predefinida si el llamante no ha registrado el propio nombre o si la opcin para registrarlo no ha sido acticvada options-prompt=>follo4me/options S esta locucin anunciar4 al llamado que tendr4 que digitar 0 para aceptar la llamada y dos para rechaKarla pls-hold-prompt=>follo4me/pls-hold-4hile-try S )l llamante escuchar4 esta locucin que le dir4 que espere en l nea mientras se intentar4 localiKar el G0

llamado status-prompt=>follo4me/status S )sta locucin anunciar4 al llamante que la persona llamada no se encuentra al momento en su oficina/casa/etc1 sorry-prompt=>follo4me/sorry S si al final de todos los desv os nadie contestar4 la llamada/ esta locucin anunciar4 al llamante que no se ha podido localiKar la persona buscada $hora empieKa la configuracin especifica de cada extensin que se quiere incluir en este archivo1 )n este e#emplo se definir4 los nDmeros que se llamar4n si la extensin 0III no contesta :#333< S numero de la extensin a configurar musi))lass=>default S tipo de mDsica en espera que escuchar4 el llamante mientras se intentar4 localiKar el destinatario de la llamada )ontext=>phones S el contexto que usar4 la aplicacin follo3me para localiKar el llamado1 'i se han incluido nDmeros fi#os y celulares este contexto debe tener acceso a las llamadas externas1 number=>#33#5#8 S $qu empieKa la lista de nDmeros que se intentar4 llamar para localiKar el destinatario de la llamada1 )n este e#emplo si el destinatario no contesta a la extensin 0III se llamar4 como segunda opcin la extensin 0II0 por 0C segundos1 number=> 338;8#33333335#8 S si a la extensin 0II0 nadie contesta se intentar4 llamar el numero fi#o que aparece en esta l nea por otros 0C segundos number=> 338;%#33333335#8 S si al numero fi#o tampoco contestan se intentar4 llamar al celular ta-e)all=># S ahora siguen los mismo par4metros que se han configurado en la parte general1 'e pueden personaliKar para cada extensin de)line)all=>2 )all-from-prompt=>follo4me/)all-from follo4me-nore)ording-prompt=>follo4me/no-re)ording follo4me-options-prompt=>follo4me/options follo4me-pls-hold-prompt=>follo4me/pls-hold-4hile-try follo4me-status-prompt=>follo4me/status follo4me-sorry-prompt=>follo4me/sorry G7

,na veK terminada la configuracin para la extensin 0III se puede seguir con la 0II0 y as siguiendo1 T0II0U 661 'e guardan los cambios y se recarga la configuracin de $steris%: <etc<init.#<asterisk re!oa# Aara m4s informacin se puede mirar la sintaxis de la aplicacin follo3me1 .esde la consola: asterisk )rvvvvvvvvvvvvvvvvvvvvv 'e escribe el comando: !LI" core s2ow app!ication fo!!ow/e -L *nfo a9out application JFolloE eK L=&Bnopsis? Find- [Link]- e application =(escription? FolloE e0folloEmeid=8options?1' 2his application performs Find- [Link]- e functionalitB for the caller as defined in the profile matching the YfolloEmeidZ parameter in [Link]. *f the specified YfolloEmeidZ profile doesnKt exist in folloEme.conf8 execution Eill 9e returned to the dialplan and call execution Eill continue at the next prioritB. Options' s - !laB9ac4 the incoming status message prior to starting the folloE-me step0s1 a - 3ecord the callerKs name so it can 9e announced to the callee on each step n - !laB9ac4 the unreacha9le status message if EeKve run out of steps to reach the or the callee has elected not to 9e reacha9le. 3eturns -1 on hangup )l uso de la aplicacin es muy sencillo1 )n el plan de llamadas ba#o el contexto internas se aaden la linea en negrita: !LI" ;uit nano <etc<asterisk<[Link] exten =" B0II</0/&acroEdisponibleF exten =" B0II</n/.ialE'IA/[\)<=)+]/?C/h8%_t=3Mx<F e1ten =Z I100X8n8.o!!ow/e0[\EXTEN]8san3 exten =" B0II</n/*otoIfE[T[\.I$L'=$=,'] = B,'VUfbusy:unavailF exten =" B0II</nEunavailF/JoicemailE[\)<=)+]Zdefault/uF G2

exten =" B0II</n/8angup exten =" B0II</nEbusyF/Joice&ailE[\)<=)+]Zdefault/bF exten =" B0II</n/8angup 'i alguien/ por e#emplo/ llama la extensin 0III y nadie contesta dentro de ?C segundos se activar4 la aplicacin -ollo3me que empeKar4 a llamar todos los nDmeros configurados para la extensin 0III para localiKar el destinatario de la llamada1 Las tres opciones configuradas significan: s @ se anunciar4 al llamante el estado de la extensin 0III antes de empeKar los distintos pasos configurados en el archivo follo3me1conf a @ el llamante podr4 grabar su propio nombre para que sea anunciado al llamado cuando conteste y de esta forma tenga la posibilidad de decidir si quiere o no aceptar la llamada n @ ,na veK que se hayan llamados todos los nDmeros y no se logre localiKar la persona buscada/ el llamante escuchar4 una locucin que le dir4 que no ha sido posible localiKar el destinatario de la llamada1

e!omo podemos hacer para que el -ollo3me se active solamente cuando el NdueoO de la extensin 0III quiere activarlaf !on unas lineas que permitan al usuario decidir cuando activar el follo3me1 )n el dialplan/ contexto internas/ aadimos: !on unas lineas que permitan al usuario decidir cuando activar el follo3me1 )n el dialplan/ contexto internas/ aadimos: exten => #3#5#5Ans4er exten => #3#5n5NetA1BAB+CA$$!Q(1AnumD0/7O$$O^ !D=#D exten => #3#5n5'angup !on estas tres l neas/ usando la base de datos internas de $steris%/ asociamos a la variable [\!$LL)[Link]]/-:LL:M&)F el valor uno1 )n el caso de la extensin 0III seria: 0III/-:LL:M&)=0 Luego cada veK que llamamos la extensin 0III se controlar4 si esta variable tiene asociado el valor uno Ees decir el follo3me activadoF :ma)ro-follo4me< exten => s5#5NetA7 =B+1BAB+ ACQO_!@C!N0/7O$$O^ !D0D exten => s5n5NoOpAB+7 0D exten => s5n5"oto(fAB:.B+7 0. = .#.<Sfollo4me6exitD exten => s5nAfollo4meD57ollo4meAB+ ACQO_!@C!N05sanD exten => s5nAexitD5 a)roexit 'e aade la linea en negrita al siguiente bloque y se quita la linea exten =" B0II</n/-ollo3meE[ G?

\)<=)+]/sanF : e1ten =Z I100X818>acro0fo!!ow/e3 exten =" B0II</n/&acroEdisponibleF exten =" B0II</n/.ialE'IA/[\)<=)+]/?C/h8%_t=3Mx<F exten =" B0II</n/*otoIfE[T[\.I$L'=$=,'] = B,'VUfbusy:unavailF exten =" B0II</nEunavailF/JoicemailE[\)<=)+]Zdefault/uF exten =" B0II</n/8angup exten =" B0II</nEbusyF/Joice&ailE[\)<=)+]Zdefault/bF exten =" B0II</n/8angup Aara desactivar el follo3me la extensin 0III tendr4 que llamar la extensin 0I7 exten => #325#5Ans4er exten => #325n5NetA1BAB+CA$$!Q(1AnumD0/7O$$O^ !D=3D exten => #325n5'angup 'e actualiKa el plan de llamadas: asterisk )rvvvvvvvvv !LI" #ia!p!an re!oa# )ste es solamente un e#emplo1 8ay distintas formas de configurar el follo3me segDn las necesidades1 7.11 EN7> )+,& o mapeo de nDmeros telefnicos/ est4 constituido por una serie de protocolos que permiten crear una convergencia entre la red telefnica tradicional y Internet1 Aermite asociar EutiliKando el protocolo .+'2GF un numero telefnico a una serie de servicios t picos de la red internet EJoIA/ correo electrnico/ pagina 3eb/ etc1F1 e!mo funcionaf 'e ha creado una nueva #erarqu a de dominios ba#o el .+' e09?1$LA$ donde se almacenan los servicios asociados a un determinado numero telefnico1 ,n e#emplo: =enemos un nDmero telefnico: YCG072?C9G; )ste se almacenar4 ba#o la #erarqu a e09?1$LA$ siguiendo un orden inverso y poniendo entre cada digito un punto:
2G ,n servidor .+' permite conectarse con la m4quina sin necesidad de usar su direccin IAS basta con ingresar el dominio para que el servidor .+' resuelva y estableKca una conexin1 Mi%ipedia

GC

;1G191C1?1217101G1C1e09?1arpa )ste nDmero estar4 asociado a unos registros .+' espec ficos E+ame $uthority Aointer o +$A=LF que podr4n conocerse a trav5s de una consulta: [:LI*I+ ;1G191C1?1217101G1C1e09?1arpa1 I+ +$A=L 0II 0I NuO N)7,YsipO N^h1b[^sip:phonemeZexample1net^O I+ +$A=L 0I7 0I NuO N)7,YmailtoO N^h1b[^[Link] )n este caso dos: una 'IA ,LI2; un correo electrnico

(ueda claro que una veK que se tengan estos datos ser4 posible usarlos en $steris%S llamando directamente la 'IA ,LI en lugar del nDmero telefnico Eahorrando los costos de llamadasF o enviar un correo electrnico1 Aara hacer una prueeba se registra un numero telefnico y se asocia a distintos servicios Internet a trav5s de )09?1org2>/ un directorio )+,& publico1 EN7> * Asterisk Arimero tenemos que modificar el fichero enum1conf nano <etc<asterisk<enu/.conf :general< sear)h => e#?/*arpa sear)h => e#?/*org h%2%driver => '%2% 'e ponen estas l neas que nos permitir4n hacer bDsqueda en la #erarqu a .+' e09?1arpa y e09?1org 'e guardan los cambios y se vuelve a arrancar $steris%: <etc<init.#<asterisk restart )sta es una lista de las funciones disponibles en $steris% para hacer consultas )+,&: EN7>@44`7+ permite hacer una consulta de los registros +$A=L asociados a un determinado numero telefnico EN7>?7E-M permite hacer una consulta de los registros +$A=L pero/ al contrario de )+,&L::_,A generar4 como resultado un I. que luego se podr4 usar con la funcin )+,&L)',L=

2; [Link] 2> [Link]

G9

EN7>-E 7@T permite consultar los resultados generados por )+,&(,)LV usando el I. creado por )+,&(,)LV

EN7>@44`7+ 'intaxis: )+,&L::_,AEnumberT/&ethodHtypeT/optionsT/recordgT/KoneHsuffixUUUUF )#emplos: exten => _33*5#5NetA!num#=B+!NI $OO]IPA_B+!@C!N6205N(P5)55e#?/*orgD0D )l e#emplo funciona si para marcar un numero se usa el formato internacional: II Y cdigo pa s Y cdigo ciudad Y numero1 'e asigna el resultado de la consulta a la variable )num0 )+,&L::_,A el nombre de la funcin de $steris% Y[\)<=)+:7] se quitan del numero marcado los primeros dos d gitos EIIF y se pone al frente un Y Eel resultado ser4: YCG072?C9G; que es el formato requerido para hacer consultas )+,&F 'IA los resultados ser4n solamente 'IA ,LI c: con esta opcin se recibir4 como respuesta el numero de 'IA ,LI asociadas al numero telefnico indicado 8acemos la consulta en la #erarqu a .+' e09?1org

)l resultado de la consulta ser4 un nDmero entero que indicar4 cuantos 'IA ,LI est4n asociados al nDmero telefnico indicado exten => _33*5#5NetA!num#=B+!NI $OO]IPA_B+!@C!N6205A$$5)55e#?/*orgD0D parecido al e#emplo precedente con la Dnica diferencia que la consulta restituir4 todos los +$A=Ls asociados al numero telefnico indicado1 EN7>?7E-M 'intaxis: )+,&(,)LVEnumberT/&ethodHtypeT/KoneHsuffixUUF )#emplos: exten => _33*5#5NetA!num#=B+!NI ZI!QYA_B+!@C!N6205N(P5e#?/*orgD0D )l resultado de la consulta ser4 un numero EI.F que se utiliKar4 con la funcin )+,&L)',L= EN7>-E 7@T GG

'intaxis: )+,&L)',L=Eid/resultnumF )#emplos: exten => _33*5#5NetANI =B+!NI Q!NI$CAB+!num#05#D0D !on esta l nea se mira el primer +$A=L resultado de la consulta hecha con )+,&(,)LV1 La variable [\)num0] es la que contiene el I. de la consulta y es la misma que hay que indicar como I. en la funcin )+,&L)',L= .I$LAL$+ EAlan de llamadasF $ continuacin se presenta como construir el plan de llamadas de modo que antes de llamar cualquier nDmero Enacional o internacionalF haga una consulta en )+,& para ver si es posible usar una 'IA ,LI en lugar del nDmero telefnico: exten => _33*5#5NetA!num#=B+!NI $OO]IPA_B+!@C!N6205sip5)D0T)ounter=3D exten => _33*525"oto(fAB:LB+)ounter0LMLB+!num#0L<S%6?D exten => _33*5%5NetA)ounter=B:B+)ounter0_#<D exten => _33*5/51ialAN(P/B+!NI $OO]IPA_B+!@C!N6205sip55B+)ounter0D0D exten => _33*585"oto(fAB:LB+)ounter0LMLB+sip)ount0L<S%6?D exten => _33*5?51ialAN(P/ yproveedorRo(P/B+!@C!N0D exten => _33*5;5'angup Lo mismo se puede hacer para el protocolo I$<: exten => _33*5#5NetA!num#=B+!NI $OO]IPA_B+!@C!N6205iax25)D0T)ounter=3D exten => _33*525"oto(fAB:LB+)ounter0LMLB+!num#0L<S%6?D exten => _33*5%5NetA)ounter=B:B+)ounter0_#<D exten => _33*5/51ialA(A@2/B+!NI $OO]IPA_B+!@C!N6205sip55B+)ounter0D0D exten => _33*585"oto(fAB:LB+)ounter0LMLB+sip)ount0L<S%6?D exten => _33*5?51ialAN(P/ yproveedorRo(P/B+!@C!N0D exten => _33*5;5'angup 'e puede construir una macro que se ocupe de las consultas )+,& y si no hubiera resultados volver al dialplan y efectuar la llamada v a proveedor 'IA o a trav5s de la l nea telefnica tradicional1 2.12 @as conferencias 0>eet/e.conf3 (uiK4s una de las caracter sticas m4s interesantes de $steris% es la posibilidad de crear conferencias audio1 )n este p4rrafo se ver4 como configurar el archivo meetme1conf y algunos e#emplos de como usar una conferencia1

G;

8ay que empeKar con la configuracin del archivo meetme1conf: nano <etc<asterisk</eet/[Link] :general< audiobuffers=%2 S +umero de paquetes audio de 7Ims que ser4n guardados en un buffer de memoria cuando pertenecen a canales que no son .$.8I1 )sto permite sincroniKar el audio de los distintos participantes y evitar retrasos1 Auede ser un valor entre 7 y 27 s)hedule=yes S este par4metro va configurado con yes solamente si se usan las conferencias en realtime?I1 )n caso contrario hay que de#arlo en no logmember)ount=yes S este par4metro se utiliKa para tener una cuenta de los usuarios presenten en una conferencia actualiKando la base de datos usada ErealtimeF fuFFystart=%33 S 8ay una conferencia programada a las ; de la maana1 )ste par4metro se utiliKa para definir si un usuario puede o no entrar en la conferencia si esta no ha empeKado1 2II es el nDmero de segundos1 )#emplo1 'i el usuario entra a la G:CC ser4 aceptado porque puede entrar hasta C minutos E2II segundosF antes del comienKo de la conferencia1 'i entra a las G:CI ser4 rechaKado1 earlyalert=%?33 S )ste valor Esiempre en segundosF define si al usuario que intenta entrar en una conferencia programada le ser4 anunciado o no que la conferencia todav a no ha empeKado1 'i entra cuando falta menos de una hora recibir4 este aviso1 'i entra m4s de una hora antes se le anunciar4 que la conferencia no existe1 endalert=#23 S cuando faltar4n 07I segundos para terminar la conferencia programada/ se le anunciar4 a todos los participantes1 :rooms< S desde esta etiqueta empieKa la configuracin de las conferencias S S la sintaxis es conf =" confnoT/pinUT/adminpinU S )onf => %833 )onf => %83#5#2%/ )onf => %8325#2%/58?;> ,na explicacin de los tres e#emplos1
?I$steris% Lealtime

G>

)n el primero se define un cuarto de conferencias cuya extensin es 2CII y todos los usuarios tienen el permiso para entrar1 )n el segundo la extensin es la 2CI0 y para entrar los usuarios tendr4n que digitar el AI+ 072?1 )n la tercero la extensin es la 2CI71 Los usuarios tendr4n que usar el AI+ 072? y los administradores el AI+ C9G;1 'e guardan los cambios y se vuelve a arrancar $steris%: /et)/init*d/asteris- restart ,na lista de las aplicaciones disponibles para gestionar las conferencias1 .esde la consola: asterisk )rvvvvvvvvvvvvvvv 'e escribe !LI" core s2ow app!ication /eet/e Em4s la tecla tabF eet e eet e#dmin eet eChannel#dmin eet eCount

Las aplicaciones disponibles son cuatro1 La primera es para entrar en una conferencia/ la segunda para administrarla/ la tercera es para controlar un canal de la conferencia y la tercera para conocer el numero de usuarios presentes en una conferencia1 'e sigue con la configuracin del plan de llamadas1 'e define un contexto dedicado a las conferencias y ah se configuran los cuartos nano <etc<asterisk<[Link] :)onferen)ias< exten => _%83:3#2<5#5 eetmeAB+!@C!N05s) AdefaultDD exten => _%83:3#2<5n5'angup Llamando la extensin 2CII se entrar4 en el cuarto de conferencia 2CII Ecomo configurado en meetme1confF Las tres opciones: s H !on esta opcin se activa el menD del cuarto de conferencias para usuarios y administradores1 &arcando la tecla asterisco se escuchar4 el menD1 c H $l entrar en un cuarto de conferencia se le anunciar4 al usuario el nDmero de personas presentes1 ;I

&EdefaultF H !uando en el cuarto est4 solamente una persona/ 5sta escuchara la mDsica en espera de la clase defaultO

)xiste la posibilidad de crear cuartos de conferencias de forma din4mica Esin tener que configurarlos en el archivo meetme1confF1 para hacerlo hay que crear estas l neas en el extensions1conf exten => %8#35#5 eetmeA51 AdefaultDD exten => %8#35n5'angup Arimero no se indica el nDmero del cuarto de conferencias y se usa la opcin . que permite definir la extensin 2C0I como cuarto de la conferencia y un AI+ para entrar a ella1 'i en lugar de la opcin . se pone la opcin d no se necesitar4 definir un AI+ para el cuarto de conferencia1 Aara tener una lista completa de las opciones disponibles desde la consola de $steris%: !LI" core s2ow app!ication >eet>e 'i se quiere definir un nDmero m4ximo de usuarios que pueden participar en una conferencia podemos usar esta macro Econ la aplicacin &eet&e!ountF: exten => %8235#5NetA)onfmax=#3D exten => %823525 a)roAmeetmeD exten => %8235%5'angup :ma)ro-meetme< exten => s5#5 eet eCountAB+ ACQO_!@C!N05)ountD exten => s525"otoifAB:B+)ount0 > B+)onfmax0<S#3%D exten => s5%5 eet eAB+ ACQO_!@C!N051D exten => s5/5'angup exten => s5#3%5Playba)-A)onf-invalidD exten => s5#3/5'angup Arimero se asocia a la variable confmax el numero 0I Eel numero m4ximo de participantes permitidos en la conferenciaF y luego se llama la macro meetme1 !on la primera l nea de la macro controlamos cuantos usuarios est4n en la conferencia 2C7I y se asocia ese nDmero a la variable count1 'i el numero contenido en la variable count es mayor del numero contenido en la variable confmax E0IF vamos a la l nea con prioridad 0I2 donde se comunicar4 que la conferencia no es valida y se colgar4 la llamadaS si es menor el usuario entrar4 al cuarto de conferencias1 !on este comando: !LI" 2e!p /eet/e ,sage' meetme 0un1loc4U0un1muteU4ic4Ulist =concise? YconfnoZ Yusernum9erZ Executes a command for the conference or on a conference se mane#a desde la consola de $steris% muchas de las opciones disponibles para una conferencia1 ;0

!LI" /eet/e !ist AD00 meetme list ":66 ,ser %' 61 1666 Fulano Channel' &*!.1166-9C8":e26 0unmonitored1 66'66'"" ,ser %' 62 1661 &utano Channel' &*!.1666-9C85Cce6 0unmonitored1 66'66'22 $parecer4 la lista de usuarios presentes en el cuarto de conferencia 2CII1 'e recarga la configuracin de $steris%: <etc<init.#<asterisk re!oa# La lineas modificadas en el dialplan Een negrita los cambiosF: OconferenciasP e1ten =Z IAD0O012P818>eet/e0[\EXTEN]8sc>0#efau!t33 e1ten =Z IAD0O012P8n8Fangup e1ten =Z AD10818>eet/e08(>0#efau!t33 e1ten =Z AD108n8Fangup TphonesU include =" internas include =" externas include =" subscribe include =" par%edcalls inc!u#e =Z conferencias .esde la consola de $steris%: asterisk )rvvvvvvvvvvvvv 'e actualiKa el dialplan: !LI" #ia!p!an re!oa# 2.1A Asterisk G7' $steris% *,I es una interfaK gr4fica desarrollada para la gestin y la configuracin de $steris% desde un navegador Meb1 'implifica el mane#o de $steris% siempre y cuando se tenga un conocimiento b4sico del funcionamiento de la AB<1 $l arrancar la *,I/ 5sta aade macros y extensiones al plan de llamadasS para evitar de perder el traba#o que se ha hecho es buena practica hacer una copia de todos los archivo de configuracin de $steris% presentes en la carpeta /etc/asteris%: /k#ir <t/p<asterisk cp <etc<asterisk<L <t/p<asterisk ;7

Aara descargar la ultima versin disponible hay que instalar el programa Sub*ersion1 *u/ insta!! su$version c# <usr<src 'e descargan los archivos de la *,I svn co 2ttp%<<[Link]<svn<asterisk)gui<$ranc2es<2.0 'e entra en la carpeta: c# 2.0< 'e compila y instala: .<configure /ake /ake insta!! Aara terminar con la instalacin hay que modificar dos archivos de configuracin de $steris%1 Arimero el manager1conf nano <etc<asterisk</[Link] :general< enabled = yes 4ebenabled = yes port = 83%> httptimeout = ?3 bindaddr = 3*3*3*3 display)onne)ts = yes 'e crea un usuario que sera 5l que se usar4 para entrar en la pagina de administracin de la *,I de $steris% :admin< se)ret = sesamo read = system5)all5log5verbose5agent5user5)onfig5dtmf5reporting5)dr5dialplan 4rite = system5)all5agent5user5)onfig5)ommand5reporting5originate 'e guardan los cambios y se sigue con el archivo http1conf nano <etc<asterisk<[Link] :general< ;2

enabled = yes enablestati) = yes bindaddr=3*3*3*3 bindport=>3>> 'e guardan los cambios y se reinicia $steris% <etc<init.#<asterisk restart $hora hay que abrir los puertos CI2; =!A y ;I;; =!A en el cortafuegos nano /etc/sysconfig/iptables 'e aaden estas l neas en la seccin bfilter: & Asteris- anager -A (NPIC -p t)p -m t)p --dport 83%> -E ACC!PC & Asteris- http -A (NPIC -p t)p -m t)p --dport >3>> -E ACC!PC 'e reinicia el cortafuegos: service ipta$!es restart $hora se averigua que todo est5 bien configurado /ake c2eckconfig --- Chec4ing #steris4 configuration to see if it Eill support the D,* --^ Chec4ing for [Link]' O> ^ Chec4ing for [Link]' O> ^ Chec4ing if )22! is ena9led' O> ^ Chec4ing if )22! static support is ena9led' O> ^ Chec4ing if manager is ena9led' O> ^ Chec4ing if manager over )22! is ena9led' O> --- EverBthing loo4s good -- D,* should 9e availa9le at http'..[Link]'[Link] .esde un navegador Meb se visita la pagina de configuracin de la *,I de $steris% Ecambiar example1com con la direccin IA del servidor asteris%F1 2ttp%<<www.e1a/p![Link]/%C0CC<static<config<cfg$asic.2t/! 'i esta no funciona prueben:

;?

$qu van algunas im4genes de la interfaK gr4fica

2.1E @a gesti"n #e !as co!as $steris%/ entre sus funcionalidades/ permite crear y administrar colas de espera1 +ormalmente este tipo de configuracin se usa en los call center y permite redirigir las llamadas entrantes a los agentes que se encargar4n de atenderlas1 e!omo se configura en $steris% la gestin de las colasf $ trav5s de dos archivos: agents1conf queues1conf

;C

)n el primero configuramos/ definiendo algunas variables y par4metros/ los agentes que atender4n las colas1 )n el queues1conf se configuran las colas Epueden ser una o m4sF/ cuales agentes y/o grupos son miembros de una determinada cola y que tipo de estrategia se utiliKar4n para enrutar las llamadas a los distintos agentes1 2.1E.1 @os Agentes Aara configurar los agentes que atender4n las llamadas entrantes a las distintas colas hay que modificar el archivo agents1conf nano <etc<asterisk<[Link] :general< S empieKa la parte general persistentagents=yes S define si el callbac%login tiene que ser almacenado en la base de datos interna de $steris%1 .e esta forma cuando se vuelve a arrancar $steris% estos datos ser4n recargados multiplelogin=yes S define si est4 permitido a una misma extensin conectarse como agente mDltiple :agents< S desde aqu comienKa la configuracin de los agentes maxlogintries=% S numero m4ximo de intentos que tiene un agente para conectarse autologoff=#8 S si un agente no contesta una llamada dentro de 0C segundos ser4 autom4ticamente desconectado autologoffunavail=yes S si la extensin desde la cual el agente se conecta se vuelve no disponible/ autom4ticamente el agente ser4 desconectado end)all=yes S un agente puede terminar una llamada presionando la tecla b musi)onhold => default S la clase de musica en espera que escuchar4 el agente cuando est5 conectado 'e define un grupo para los agentes que se configurar4n: group=# La Dltima parte es dedicada a la configuracin de los agentes siguiendo la sintaxis: ;9

agent =" [Link]/contraseaagente/nombre .os e#emplos: agent => 23335#2%/57ulano agent => 233#52%/85Nutano 'e guardan los cambios1 Aara que un agente se pueda loguear hay que escribir estas l neas en el plan de llamadas Econtexto internasF: nano <etc<asterisk<[Link] exten => _233:3#<5#5AgentloginAB+!@C!N0D exten => _233:3#<5n5'angup 'e recarga la configuracin de $steris%: <etc<init.#<asterisk re!oa# .esde la consola asterisk )rvvvvvvvvvvvvv !LI" agent s2ow 2666 0Fulano1 not logged in 0musiconhold is JdefaultK1 2661 0&utano1 not logged in 0musiconhold is JdefaultK1 2 agents configured =6 online 8 2 offline? Los dos agentes est4n configurados pero no conectados1 2.1E.2 ?[Link] Aara terminar la configuracin dedicada a las colas hay que modificar el archivo queues1conf nano <etc<asterisk<;[Link] :general< S empieKa la parte general persistentmembers = yes S si se usan agentes din4micos su configuracin se guardar4 en la base de datos de $steris%1 .e esta forma si $steris% se vuelve a arrancar/ cada agente ser4 enrutado a su correspondiente cola1 ;G

-eepstats = no S mantiene las estad sticas de la cola durante un NreloadO de asteris% autofill = yes S normalmente una cola funciona de la siguiente manera1 8ay unos cuantos usuarios esperando por ser atendidos por los agentes1 !uando el usuario que est4 de primero en la cola viene atendido el segundo se vuelve primero e ser4 atendido por el primer agente disponible1 )ste comportamiento no tiene en cuenta que pueden haber muchos agentes disponibles pero que cada usuario tendr4 que esperar de volverse el primero de la lista para ser atendido1 !on este par4metro definimos otro tipo de comportamiento1 Los usuarios ser4n atendidos de manera paralela hasta que haya agentes disponibles1 .e esta forma se reducen considerablemente los tiempos de espera1 monitor-type = ix onitor S si se elige grabar las conversaciones/ con este par4metro los archivos audios de los dos canales ser4n meKclados en uno solo shared_last)all=yes S en el caso de agentes que pertenecen a m4s de una cola poniendo a yes este par4metro se respetar4n los tiempos de espera entre las distintas colas :ventas< S el nombre de una cola de espera1 .esde esta l nea empieKa su configuracin musi))lass = default S la clase de la mDsica en espera ,announ)e = Jueue-ventas S se puede crear un anuncio para indicar a los agentes Ecuando contestan una llamadaF a que cola pertenece el usuario que est4n atendiendo EDtil en el caso de agentes que atienden m4s de una cola a la veKF1 strategy = ringall S con strategy se define que tipo de estrategia hay que utiliKar para atender las colas1 Aosibles opciones son: @eastrecent: $signa la siguiente llamada al agente que m4s tiempo lleve sin atender una llamada1 .ewestca!!s: $signa la siguiente llamada al agente que menos llamadas haya atendido1 -an#o/: $signa la siguiente llamada aleatoriamente a cualquier agente disponible1 -inga!!: Llama a todos los agentes a la veK y el primero que descuelgue ser4 quien atienda la llamada1 -->e/or*: .istribuye las llamadas Npor turnosO entre los agentes disponibles y NrecuerdaO el Dltimo agente al que intent llamar1 @inear% contacto los agentes siguiendo el orden definido en este archivo de configuracin1 ;;

Mrandom: asigna la llamada aleatoriamente usando una m5trica basada en penalidades1

timeout = #8 S este el tiempo/ en segundos/ pasado el cual la llamada se considerar4 no contestada por el agente1 retry = 8 S tiempo/ en segundos/ antes de volver a llamar todos los agentes 4eight=3 S cada cola puede tener un peso1 Las colas con un valor alto tendr4n prioridad respecto a aquellas con un peso m4s ba#o autopause=no S si un agente non contesta una llamada ser4 puesto en pausa maxlen = 3 S con este par4metro se define el numero m4ximo de usuarios que pueden entrar en la cola de espera EI = ningDn limiteF announ)e-freJuen)y = 93 S !ada cuantos segundos se anunciar4 al usuario en la cola su posicin y/o tiempo estimado de espera min-announ)e-freJuen)y = #8 S para evitar que cada veK que la posicin y/o el tiempo estimado de un usuario cambie se le presente un anuncio/ este par4metro define un tiempo Een segundosF que se esperar4 antes de comunicarle su nueva posicin/tiempo estimado1 ,periodi)-announ)e-freJuen)y=?3 S este par4metro representa cada cuantos segundos a un usuarios en la cola se le presentar4 un anuncio Epor e#emplo relacionado con algDn producto de la empresaF1 announ)e-holdtime = on)e S anunciar #unto a la posicin en la cola el tiempo estimado de espera1 Auede ser yes/ no/ u once Euna sola veKF announ)e-position = yes S peridicamente se le anunciar4 al usuario en la cola/ su posicin en la misma announ)e-round-se)onds = #3 S el tiempo de espera estimado ser4 redondeado a las decenas reportholdtime = yes S $ntes que el agente conteste una llamada se le anunciar4 el tiempo de espera del usuario que va a atender Eoinempty = yes S permite a los usuarios acceder a la cola aunque no haya agentes disponibles ;>

ringinuse = no S con este par4metro en no/ no se timbrar4n las extensiones de los agentes que est4n en uso Esolo protocolo 'IAF Aara terminar la configuracin de esta cola se definen los agentes que son parte de ella1 'e puede hacer de dos formas: Indicando un agente por l nea Indicando un grupo de agentes

,n agente por l nea: member => Agent/2333 member => Agent/233# ,n grupo de agentes: , member => Agent/G# ,na veK terminada la configuracin del archivo/ se guardan los cambios y se aaden unas l neas al archivo extensions1conf para configurar la cola en el plan de llamadas: nano <etc<asterisk<[Link] )n el contexto internas se pone: exten => %3335#5ZueueAventasD exten => %3335n5'angup 'e guardan los cambios y se actualiKa la configuracin de $steris%: <etc<init.#<asterisk re!oa# .esde un 'oftAhone conectado a $steris%/ se marca la extensin 2III para ver el resultado de la configuracin de la cola en espera1

>I

Capitu!o '''
Asterisk * !a + TN
,na de las posibilidades brindadas por $steris% es la de conectarlo/ a trav5s de dispositivos 8ard3are/ a la red telefnica conmutada EL=BF?01 Los dispositivos pueden ser de distintos tipos: .ispositivos -<: .ispositivos -<' .ispositivos &ixtas E-<:/-<'F .ispositivos BLI EI'.+F .ispositivos ALI E)0/ =0/ Q0F

.X4 EForeign Exchange OfficeF es un dispositivo de computador que permite conectar 5ste a la L=B/ y mediante un soft3are especial/ realiKar y recibir llamadas de tel5fono1 .X EForeign Exchange &tationF es el conector en una central telefnica o en la pared de nuestro hogar/ que permite conectar un tel5fono analgico est4ndar1 Los dispositivos &ixtos .X4<.X combinan los dos tipos de conexiones segDn las necesidades del adquirente1 ,n e#emplo de dispositivo -<:/-<' es la tar#eta .igium?7 =.&?IIA que permite instalar un total ? mdulos/ sean -<: o -<'1

Los dispositivos 6-' E<asic rate interface3 permiten conectar una linea ' (N E*ntegrated &ervices (igital AetEor4F al servidor Linux1 Las lineas I'.+ est4n compuestas de dos canales audio Ede 9?_bit/s cada unoF y un canal . que se utiliKa para la sealiKacion con la central telefnica Ede 09 _bit/sF1 Los dispositivos E18 T18 T1/ que tambi5n se pueden denominar primarios/ son lineas digitales que segDn el tipo brindan de 7? E=0F a 2? E)0F canales de voK1 La diversa nomenclatura de estas lineas est4 relacionada con los pa ses donde se usan1 =0 son la lineas disponibles en )stados ,nidos/ )0 en )uropa y Q0 en Qapn1

?0 Led =elefnica !onmutada ?7 .igium

)l tipo de dispositivos a utiliKar estar4 relacionado con el tipo de instalacin que se est4 haciendo Ecasa/ oficina/ pequea empresa/ etc1F )n este capitulo se ver4 como instalar un dispositivo -<: en el computador y como configurarlo en $steris% para efectuar y recibir llamadas1 A.1 'nsta!aci"n #ispositivo X100+ )l dispositivo <0IIA es una tar#eta A!I?2 con un canal -<: disponible1

Aara la instalacin de la tar#eta en un servidor Linux/ distribucin !ent:' estos son los pasos a seguir: 01 71 21 ?1 C1 91 G1 ;1 $pagar el computador .esconectar el cable de alimentacin $brir el chasis del !omputador Insertar la tar#eta en una ranura A!I disponible Jolver a poner el chasis del computador !onectar el cable de alimentacin al computador !onectar la linea telefnica al puerto -<: de la tar#eta a trav5s de un normal cable telefnico Arender el computador

+ormalmente !ent:' reconoce autom4ticamente la nueva tar#eta instalada y le asigna un IL( ?? para que pueda comunicarse con el procesador del computador1 ,na veK arrancado el sistema comprobamos que efectivamente la tar#eta ha sido reconocida por el sistema: !spci )v 'egDn el modelo y marca en la pantalla tendremos una salida de este tipo: 62'68.6 Communication controller' 2iger Fet AetEor4 *nc. 2iger"II odem.*&(A interface &u9sBstem' *ntel Corporation (igium I166!.I161! analogue !&2A FIO interface Flags' 9us master8 medium devsel8 latencB 658 *3a 261
?2 A!I ?? IL(

>7

*.O ports at d866 =siMeL2:6? emorB at fdc66666 0"2-9it8 non-prefetcha9le1 =siMeL5>? Capa9ilities' =56? !oEer anagement version 2 'e comprueba el IL( cat <proc<interrrupts 261' ""6:@68C: *O-#!*C-level Ecfxo A.2 Configuraci"n X100+ en Asterisk )l programa/librer a que se encarga de detectar y configurar el puerto -<: en $steris% es .$8.I1 .$8.I traba#a NencimaO de $steris% y por eso hay que arrancarlo siempre antes de $steris%1 Aara la configuracin de la tar#eta se usar4n algunas utilidades presentes en el paquete .$8.IHtools1 La primera utilidad que se usar4 es dahdiBgenconf que reconoce el tipo de tar#eta instalado y crea/modifica dos archivos: .[Link] .[Link] #a2#iIgenconf )v )l resultado: (efault parameters from .[Link]+parameters Denerating .[Link] Denerating .[Link] $hora se abren los dos archivos para ver que cambios hiKo esta utilidad: nano <etc<#a2#i<s*ste/.conf g $utogenerated by /usr/sbin/dahdiBgenconf on &on +ov 2I I>:0>:I; 7II> g If you edit this file and execute /usr/sbin/dahdiBgenconf again/ g your manual changes 3ill be L:'=1 g .ahdi !onfiguration -ile g g =his file is parsed by the .ahdi !onfigurator/ dahdiBcfg g g 'pan 0: M!-<:/I i*eneric !lone Board 0i E&$'=)LF L). fxs-s=# Sel tipo de sealiKacion utiliKada por el canal1 )n este caso protocolo -<' _oolstart >2

e)ho)an)eller=mg25# Sel tipo de cancelacin del echo soft3are Emg7F y el canal Een este caso existe solamente el 0F loadFone =us defaultFone=us S Kona predefinida para la sealiKacion Etono de llamada/ tono de ocupado/ etc11F )l Dnico cambio que hay que hacer es modificar los dos Dltimos par4metros con el cdigo de su propio pa s/ siempre y cuando los par4metro de sealiKacin est5n presentes en el archivo indications1conf 'e guardan los cambios1 )l segundo archivo: nano <etc<asterisk<#a2#i)c2anne![Link] S 'pan 0: M!-<:/I i*eneric !lone Board 0i E&$'=)LF L). SSS line=i0 M!-<:/I/I -<'_' EIn useF E'M)!: &*7Fi signalling=fxs_-s S el tipo de sealiKacion del canal1 +ormalmente es el contrario del puerto instalado1 'i el puerto es -<: la sealiKacion es -<' y viceversa1 )allerid=asre)eived S aqu se puede configurar el callerid completo para la linea telefnica conectada al puerto -<:1 'i se de#a el par4metro en NasreceivedO se presentar4 al llamante el numero telefnico asignado a la linea por la compa a telefnica1 group=# S si se disponen de muchos canales se pueden crear grupos1 )ste tipo de par4metro ser4 Dtil al momento de configurar el dialplan )ontext=from-pstn S es el contexto en donde entrar4n las llamadas procedentes de la linea telefnica1 )hannel => # S numero de canales disponibles en la tar#eta Een este caso 0F Aara que el archivo dahdiHchannels sea le do por $steris% tenemos que poner un include en el archivo chanBdahdi1conf nano <etc<asterisk<c2anI#a2#[Link] el fondo del archivo se aade la linea: &in)lude dahdi-)hannels*)onf

>?

'e guardan los cambios1 .esde la consola de $steris% recargamos la configuracin de .$8.I asterisk )rvvvvvvvvvvvvvvvvvvv !LI" #a2#i restart 'i no sale ningDn error significa que la configuracin es correcta1 )l estado de los canales .$8.I !LI" #a2#i s2ow status (escription Deneric Clone <oard 1 #larms *3a 9pviol C3C5 Fra Codi Options $<O O> 6 6 6 C#& ,n4 -E$ 6 d9 0C&,1.6-1"" feet 0(&I-11

,na serie de informaciones acerca del canal configurado: !LI" #a2#i s2ow c2anne! 1 Channel' 1 File (escriptor' 1: &pan' 1st Extension' (ialing' no Context' from-pstn Caller *(' Calling 2OA' 6 Caller *( name' ail9ox' noneZ (estroB' 6 *n#larm' 6 &ignalling 2Bpe' FI& >eElstart 3adio' 6t OEner' YAoneZZ 3eal' YAoneZ CallEait' YAoneZ 2hreeEaB' YAoneZ Confno' -1 !ropagated Conference' -1 3eal in conference' 6 (&!' nost <usB (etection' no 2((' nost 3elax (2 F' no ([Link]#&' 6.6 >C

(efault laE' ulaE Fax )andled' no !ulse phone' no (A(' nost Echo Cancellation' localhos128 taps localhoscurrentlB OFF #ctual Confinfo' Aum.68 ode.6x6666 #ctual Confmute' Ao )oo4state 0FI& onlB1' Onhoo4 ,ltima parte de la configuracin es crear en el plan de llamadas un contexto para las llamadas entrantes de la linea telefnica y unas lineas en el contexto externas: Aara hacer llamadas desde una extensin conectada a $steris% en el contexto externas se pone:

exten => _9*5#51ialA1A'1(/g#/B+!@C!N6#05/8D exten => _9*5n5'angup Aara todas las llamadas locales y nacionales se usar4 la linea telefnica1 Aara diferenciar estas llamadas de las internacionales se ha puesto el numero > que representa el valor a marcar antes de cualquier numero local o nacional1 !on g0 se indica el grupo Eel puerto -<: pertenece al grupo 0F1 :tra forma puede ser: exten => _9*5#51ialA1A'1(/#/B+!@C!N6#05/8D exten => _9*5n5'angup )n lugar de g0 se pone 0 que es el canal del puerto -<: Aara las llamadas en entrada desde la linea telefnica: :from-pstn< exten => s5#51ialAN(P/#3335/8D exten => s5n5'angup =odas las llamadas que entran a trav5s de la linea telefnica se desv an a la extensin 0III1 'e guardan los cambios y se reinicia $steris% <etc<init.#<asterisk restart Aara m4s puertos -<: el procedimiento es casi id5ntico1

>9

Capitu!o 'V
'VIJL es la sigla de Interactive Joice Lesponse/ que se traduce del ingl5s como Lespuesta de JoK Interactiva1 !onsiste en un sistema telefnico que es capaK de recibir una llamada e interactuar con el usuario a trav5s de grabaciones de voK y el reconocimiento de respuestas a trav5s del uso de la tecla del tel5fono1 )s un sistema automatiKado de respuesta interactiva/ orientado a entregar y/o capturar informacin a trav5s del tel5fono/ permitiendo el acceso a servicios de informacin u otras operaciones1 $steris% permite configurar cualquier tipo de IJL y en este capitulo se mostrar4 come crear un IJL b4sico1 E.1 Gra$aci"n #e !as !ocuciones% )n $steris% existe la aplicacin Lecord que nos permite grabar archivos audios para luego utiliKarlos en la creacin de un IJL1 Aara implementarla hay que modificar el plan de llamadas1 nano <etc<asterisk<[Link] )n el contexto internas se pone: exten => _??@@5#5Ans4erAD exten => _??@@5n5^aitA2D exten => _??@@5n5Qe)ordA/tmp/promptB+!@C!N62064avD exten => _??@@5n5^aitA2D exten => _??@@5n5Playba)-A/tmp/promptB+!@C!N620D exten => _??@@5n5^aitA2D exten => _??@@5n5'angupAD L nea 0: contesta la llamada L nea 7: espera 7 segundos L nea 2: *raba el archivo audio en la carpeta /tmp con nombre prompt<< donde << son los Dltimos dos d gitos de la extensin que hemos llamado desde nuestro softphone1 )#1 'i llamamos la extensin 99CI el archivo audio tendr4 el nombre promptCI13a3 L nea ?: espera 7 segundos L nea C: devuelve el archivo reci5n grabado L nea 9: espera 7 segundos L nea G: cuelga la llamada

'i la grabacin no nos satisface/ se vuelve a grabar marcando el mismo numero1 La nueva grabacin remplaKar4 la vie#a1 'e actualiKa el dialplan y se graban las locuciones:

asterisk )rvvvvvvvvvvvvvvvv !LI" #ia!p!an re!oa# !LI" ;uit )sta solucin permite grabar hasta >> archivos audio1 ,na veK que se tengan los archivos listos vamos a copiarlos en la carpeta de las locuciones de $steris%1 /k#ir <var<!i$<asterisk<soun#s<custo/ c# <t/p /v pro/ptL <var<!i$<asterisk<soun#s<custo/ La sinopsis de la aplicacin: -L *nfo a9out application J3ecordK L=&Bnopsis? 3ecord to a file =(escription? 3ecord0filename.format8silence=8maxduration?=8options?1 3ecords from the channel into a given filename. *f the file exists it Eill 9e overEritten. - JformatK is the format of the file tBpe to 9e recorded 0Eav8 gsm8 etc1. - JsilenceK is the num9er of seconds of silence to alloE 9efore returning. - JmaxdurationK is the maximum recording duration in seconds. *f missing or 6 there is no maximum. - JoptionsK maB contain anB of the folloEing letters' JaK ' append to existing recording rather than replacing JnK ' do not ansEer8 9ut record anBEaB if line not Bet ansEered JHK ' Huiet 0do not plaB a 9eep tone1 JsK ' s4ip recording if the line is not Bet ansEered JtK ' use alternate J^K terminator 4eB 0(2 F1 instead of default J%K JxK ' ignore all terminator 4eBs 0(2 F1 and 4eep recording until hangup *f filename contains JbdK8 these characters Eill 9e replaced Eith a num9er incremented 9B one each time the file is recorded. # channel varia9le named 3ECO3(E(+F*$E Eill also 9e set8 Ehich contains the final filemname. ,se Jcore shoE file formatsK to see the availa9le formats on Bour sBstem ,ser can press J%K to terminate the recording and continue to the next prioritB. *f the user should hangup during a recording8 all data Eill 9e lost and the application Eill teminate.

>;

E.2 +!an #e !!a/a#as e 'V)n el p4rrafo precedente se ha mostrado como grabar los archivos audio para la creacin de un IJL1 Aara el e#emplo a seguir se han registrados tres archivos que contienen las siguientes frases: espeng13av H Nfor english press one/ para espaol marque dosO espmenu13av H Npara efectuar un test de echo marque 0/ para escuchar la mDsica en espera marque 7/ para la oficina de ventas marque 2F engmenu13av H Nfor echo test press 0/ for music on hold press 7/ for sales office/ press 2F

Lo archivos se han copiado en la carpeta /var/lib/asteris%/sounds/custom1 $hora se puede empeKar con la construccin del dialplan para la creacin del IJL: nano <etc<asterisk<'V:(RQ< exten => s5#5^aitA#D Sespera un segundo exten => s525NetAC'ANN!$AlanguageD=esD S pone como predefinidas las locuciones en espaol exten => s5%5NetAC( !OICAdigitD=;D S G segundos es el tiempo que espera entre el primer d gito y los sucesivos exten => s5/5NetAC( !OICAresponseD=#3D S 0I segundos es el tiempo que espera para que el llamante presione una tecla exten => s585Ba)-"roundA)ustom/espengD S presenta el menD vocal y al mismo tiempo escucha si el llamante presiona alguna tecla exten => s5?5^ait!xtenAD S espera que el llamante presione alguna tecla exten => #5#5gotoA(RQ#5s5#D S si presiona 0 va al contexto IJL0/ extensin s/ prioridad 0 exten => 25#5gotoA(RQ25s5#D S si presiona 7 va al contexto IJL7/ extensin s/ prioridad 0 exten => i5#5Playba)-AinvalidD S si el numero digitado no es valido Eni 0 ni 7F comunica el error exten => i525Playba)-AgoodbyeD S se despide exten => i5%5'angup S cuelga la llamada exten => t5#5gotoA(RQ5s52D S si dentro de 0I segundo el llamante no presiona ninguna tecla vuelve a presentar el menu vocal exten => h5#5'angup S si el llamante cuelga e#ecuta la extensin h TIJL0U exten => s5#5NetAC( !OICAdigitD=;D S exten => s525NetAC( !OICAresponseD=#3D exten => s5%5NetAC'ANN!$AlanguageD=enD S define como idioma predefinido el ingles y usas las locuciones en este idioma exten => s5/5Ba)-"roundA)ustom/engmenuD S presenta en menD en ingles exten => s585^ait!xtenAD S )spera que el llamante presione una tecla exten => #5#5Playba)-Ademo-e)hotestD S 'i presiona 0 efectu4 el test de echo exten => #525!)hoAD exten => 25#5 usi)On'old S 'i presiona 7 escuchar4 la mDsica en espera predefinida exten => %5#5Playba)-Apls-4ait-)onne)t-)allD S 'i presiona 2 lo pone en comunicacin con la oficina de ventas Eextensin 2IIIF >>

exten => %525"otoAinternas5%3335#D exten => i5#5Playba)-AinvalidD exten => i525Playba)-AgoodbyeD exten => i5%5hangup exten => t5#5gotoA(RQ#5s5#D exten => h5#5'angup :(RQ2< exten => s5#5NetAC( !OICAdigitD=;D exten => s525NetAC( !OICAresponseD=#3D exten => s5%5NetAC'ANN!$AlanguageD=esD exten => s5/5Ba)-"roundA)ustom/espmenuD exten => s585^ait!xtenAD exten => #5#5Playba)-Ademo-e)hotestD exten => #525!)hoAD exten => 25#5 usi)On'old exten => %5#5Playba)-Apls-4ait-)onne)t-)allD exten => %525"otoAinternas5%3335#D exten => i5#5Playba)-AinvalidD exten => i525Playba)-AgoodbyeD exten => i5%5hangup exten => t5#5gotoA(RQ#5s5#D exten => h5#5'angup )l menD IJL7 es totalmente igual al IJL0 solamente que es en espaol1 Aara incluir este archivo en el diaplan Eplan de llamadasF: nano <etc<asterisk<[Link] 'i se quieres que todas las llamadas externas sean atendidas por el IJL/ en el contexto donde entran las llamadas externas se pone: :from-PNCN< exten => s5#5Ans4er exten => s5n5^aitA#D exten => s5n5"otoA(RQ5s5#D Aara probarlo se aaden estas lineas en el contexto internas: exten => 835#5Ans4er exten => 835n5^aitA#D exten => 835n5"otoA(RQ5s5#D y al final del archivo aadimos &in)lude .(RQ. 0II

)l comando ginclude en el archivo extensions1conf toma un archivo de texto y lo engloba al plan de llamadas1 'e guardan los cambios y desde la consola de $steris%: !LI" #ia!p!an re!oa# $l momento de crear un IJL/ las posibilidades son pr4cticamente infinitas1 )#emplos: un IJL que gestione colas de espera diferenciadas por departamento Eventas/ compras/ asistencia t5cnica/ etc1F un IJL que permita marcar directamente una extensin o/ en el caso que no se marque ninguna/ env e la llamada a una operadora1

0I0

Capitu!o V
Asterisk * .AX
.esde la versin 0191</ $steris% soporta la recepcin y trasmisin de -$< a trav5s del modulo appBfax1 )ste modulo se apoya en las librer as 'pan.'A que hay que instalar antes de compilar $steris%1 )n este capitulo se presentar4 una solucin basada en el modulo appBfax y una basada en la combinacin del programa 'A+mo%em con el servidor de -$< &y$a,a"1 D.1 Asterisk con 'AX/o#e/ * F*!afa1 )sta solucin se basa en el uso de I$<modem como extensin I$<7 y 8ylafax como servidor de -$<1 'AX/o#e/ I$<modem es un modem soft3are/ escrito en lengua#e ! que utiliKa un canal I$<7 Euno de los protocolos presentes en $steris%F en lugar de una l nea telefnica y utiliKa un .'A soft3are en lugar de un chip .'A [Link] 'ignal ArocessingF?C1 'e descargan las fuentes de I$<modem: c# <usr<src wget 2ttp%<<switc2.#!.[Link]<sourceforge<ia1/o#e/<ia1/o#e/)[Link] 'e descomprime el archivo tar )1f ia1/o#e/)[Link] 'e entra en la carpeta: c# ia1/o#e/)1.2.0 'e compila: .<configure /ake 'e copia el programa compilado en la siguiente carpeta: cp ia1/o#e/ <usr<!oca!<s$in 'e crean algunas carpetas y archivos para I$<modem: /k#ir <etc<ia1/o#e/ /k#ir <var<!og<ia1/o#e/
?C .'A Mi%ipedia

touc2 <var<!og<ia1/o#e/<tt*'AX touc2 <var<!og<ia1/o#e/<ia1/o#e/ 'e modifica el archivo de configuracin predefinido que viene con las fuentes: nano ia1/o#e/)[Link]*'AX )ste es un e#emplo de configuracin: devi)e /dev/tty(A@ o4ner uu)p6uu)p mode ??3 port /8;3 refresh %33 server #2;*3*3*# peername iaxmodem se)ret pass4ord )idname RoFCoRoi)e )idnumber @@@@@@@@@@ )ode) ula4 )sta configuracin es valida si I$<modem est4 instalado en el mismo computador donde se instal $steris%1 )n el caso de dos computadores distintos hay que indicar en la l nea server la direccin IA del servidor $steris%1 Aongan la contrasea en secret y en cidname y cidnumber nombre y numero telefnico que usar4 I$<modem para presentarse a $steris%1 'e pueden configurar cuantos I$<modem se quieran cambiando en la primera l nea el nombre del device/ en port el puerto y en peername el nombre1 !ada archivo tendr4 un nombre distinto/ ttyI$<7 ttyI$<2/ etc1 'e guardan los cambios y se copia el archivo en la carpeta /etc/iaxmodem que se ha creado: cp ia1/o#e/)[Link]*'AX <etc<ia1/o#e/<tt*'AX $hora se modifica la configuracin de $steris% para insertar la nueva extensin I$<: nano <etc<asterisk<[Link] Oia1/o#e/P t*pe=frien# conte1t=fa1 #isa!!ow=a!! a!!ow=u!aw userna/e=ia1/o#e/ secret=passwor# ;ua!if*=*es notransfer=*es 2ost=#*na/ic 0I2

re;uireca!!token=auto 'e guardan los cambios y se actualiKa la configuracin de I$<7 en $steris% asterisk )rvvvvvvvvvvvvvvvvvvv 'e escribe !LI" ia12 re!oa# 'e sale de la consola !LI" ;uit $hora se puede hacer una prueba para ver si la conexin entre I$<modem y $steris% funciona: c# <usr<!oca!<s$in .<ia1/o#e/ tt*'AX deber a aparecer: =266@-66-68 12'6"'"@? odem started =266@-66-68 12'6"'"@? &etting device L [Link]*#Ic =266@-66-68 12'6"'"@? &etting oEner L cuucp'uucpc =266@-66-68 12'6"'"@? &etting mode L c666c =266@-66-68 12'6"'"@? &etting port L 5:C6 =266@-66-68 12'6"'"@? &etting refresh L "66 =266@-66-68 12'6"'"@? &etting server L c12C.6.6.1c =266@-66-68 12'6"'"@? &etting peername L ciaxmodemc =266@-66-68 12'6"'"@? &etting secret L cpassEordc =266@-66-68 12'6"'"@? &etting cidname L cPoM2oPoiceK =266@-66-68 12'6"'"@? &etting cidnum9er L cIIIIIIIIIc =266@-66-68 12'6"'"@? &etting codec L ulaE =266@-66-68 12'6"'"@? Opened ptB8 slave device' .[Link].5 =266@-66-68 12'6"'"@? Created .[Link]*#I sBm9olic lin4 Aer salir presionamos !=LLH! =266@-66-68 12'6"'5:? 2erminating on signal 2... $ntes de hacerlo se controla que en la consola de $steris% apareKca la conexin de I$<modem Een otra ventana =erminalF

0I?

Aara arrancar I$<modem en autom4tico se instala el script presente en la carpeta de las fuentes de I$<modem: c# <usr<src<ia1/o#e/)1.2.0 /v ia1/o#e/.[Link]#ora <etc<init.#<ia1/o#e/ se vuelve e#ecutable: c2/o# :1 <etc<init.#<ia1/o#e/ e se configura para el arranque autom4tico: c2kconfig ))a## ia1/o#e/ c2kconfig ia1/o#e/ on 'e arranca el programa: <etc<init.#<ia1/o#e/ start F*!afa1 8ylafax es un servidor -$< diseado para sistemas Linux que usa un sistema clienteHservidor1 ,n cliente E-$<F se conecta al servidor E8ylafaxF y a trav5s de el env a el -$< 8ay que empeKar instalando algunas EdependenciasF requeridas por 8ylafax: *u/ insta!! g2ostscript g2ostscript)#eve! s2aruti!s g2ostscript)fonts )n la pagina de 8ylafax est4n presentes los paquetes para las distintas distribuciones de Linux: 'e descargan los paquetes para !entos C Ecliente y servidorF: cd /usr/src wget ftp%<<ftp.2*![Link]<$inar*<!inu1<re#2at<6.0.E<2*!afa1)server)6.0.E)1r2e![Link]/ wget ftp%<<ftp.2*![Link]<$inar*<!inu1<re#2at<6.0.E<2*!afa1)c!ient)6.0.E)1r2e![Link]/ 'e instalan: rp/ )iv 2*![Link]/ 'e aade el faxgetty Efaxgetty es el programa que realmente contesta las llamadasF al inittab E)l fichero inittab describe que procesos se inician al arrancar el 'ervidor LinuxF

0IC

nano <etc<initta$ 'e aade esta l nea: fa1%2AED%respawn%<usr<s$in<fa1gett* tt*'AX 'e guardan los cambios y se vuelve a a arrancar inittab: init ; 'e empieKa con la configuracin de 8ylafax: fa1setup ,pdate .[Link]. )BlaF#I configuration parameters are' =1? *nit script starts faxH' Bes =2? *nit script starts hfaxd Bes ="? &tart old protocol' no =5? &tart paging protocol' no #re these o4 =Bes?d 'e contesta yes odem support functions Eritten to .[Link]. Configuration parameters Eritten to .[Link]. Ao scheduler config file exists8 creating one from scratch. CountrB code =1?d :C #rea code =?d 1 $ong distance dialing prefix =1?d 6 *nternational dialing prefix =611?d 66 (ial string rules file 0relative to .[Link].hBlafax1 =/[Link]/?d 2racing during normal server operation =1?d (efault tracing during send and receive sessions =6xffffffff?d Continuation cover page 0relative to .[Link].hBlafax1 =?d 2imeout Ehen converting !ost&cript documents 0secs1 =186?d aximum num9er of concurrent Go9s to a destination =1?d (efine a group of modems =?d 2ime of daB restrictions for out9ound Go9s =/#nB/?d !athname of destination controls file 0relative to .[Link].hBlafax1 =?d 2imeout 9efore purging a stale ,,C! loc4 file 0secs1 ="6?d ax num9er of pages to permit in an out9ound Go9 =6xffffffff?d &Bslog facilitB name for &erver2racing messages =daemon?d 2he non-default scheduler parameters are'

0I9

CountrBCode' :C #reaCode' 1 $ong(istance!refix' 6 *nternational!refix' 66 #re these o4 =Bes?d Bes Creating neE configuration file .[Link]... 3estarting )BlaF#I server processes. &hould * restart the )BlaF#I server processes =Bes?d .[Link] start &tarting )BlaF#I Hueue manager 0faxH1' = O> ? &tarting )BlaF#I server 0hfaxd1' = O> ? 3estarting )BlaF#I modem manager 0faxgettB1' = O> ? 1o you 4ant to run faxaddmodem to )onfigure a modem :yes<S &erial port that modem is connected to =?d tty(A@ O48 time to setup a configuration file for the modem. 2he manual page config0:F1 maB 9e useful during this process. #lso 9e aEare that at anB time Bou can safelB interrupt this procedure. 3eading scheduler config file .[Link]. Ao existing configuration8 letcs do this from scratch. CountrB code =1?d :C #rea code =51:?d 1 !hone num9er of fax modem =\1.@@@.:::.1212?d \:C1IIIIIIII $ocal identification string 0for 2&*.C*D1 =/Aothing&etup/?d RoFCoRoi)e $ong distance dialing prefix =1?d 6 *nternational dialing prefix =611?d 66 (ial string rules file 0relative to .[Link].hBlafax1 =[Link]?d 2racing during normal server operation =1?d 2racing during send and receive sessions =11?d !rotection mode for received facsimile =6666?d !rotection mode for session logs =6666?d !rotection mode for ttB*#I =6666?d 3ings to Eait 9efore ansEering =1?d 2 odem spea4er volume =off?d Command line arguments to gettB program =/-h bl dx+bs/?d !athname of 2&* access control list file 0relative to .[Link].hBlafax1 =//?d !athname of Caller-*( access control list file 0relative to .[Link].hBlafax1 =//?d 2ag line font file 0relative to .[Link].hBlafax1 =etc.lut3&[Link]?d 2ag line format string =/From bblUbcU!age bb! of bb2/?d 2ime 9efore purging a stale ,,C! loc4 file 0secs1 ="6?d )old ,,C! loc4file during in9ound data calls =-es?d )old ,,C! loc4file during in9ound voice calls =-es?d 0IG

!ercent good lines to accept during copB HualitB chec4ing =@:?d ax consecutive 9ad lines to accept during copB HualitB chec4ing =:?d ax num9er of pages to accept in a received facsimile =2:?d &Bslog facilitB name for &erver2racing messages =daemon?d &et ,*( to 6 to manipulate C$OC#$ =//?d ,se availa9le prioritB Go9 scheduling mechanism =//?d CountrBCode' :C #reaCode' 1 F#IAum9er' \:C1IIIIIIII $ong(istance!refix' 6 *nternational!refix' 66 (ial&tring3ules' [Link] &ession2racing' 11 3ings<efore#nsEer' 2 &pea4erPolume' off DettB#rgs' /-h bl dx+bs/ $ocal*dentifier' /PoM2oPoice/ 2ag$ineFont' etc.lut3&[Link] 2ag$ineFormat' /From bblUbcU!age bb! of bb2/ ax3ecv!ages' 2: #re these o4 =Bes?d AoE Ee are going to pro9e the ttB port to figure out the tBpe of modem that is attached. 2his ta4es a feE seconds8 so 9e patient. Aote that if Bou do not have the modem ca9led to the port8 or the modem is turned off8 this maB hang 0Gust go and ca9le up the modem or turn it on8 or Ehatever1. !ro9ing for 9est speed to tal4 to modem' "8566 O>. #9out fax classes' 2he difference 9etEeen fax classes has to do Eith hoE )BlaF#I interacts Eith the modem and the fax protocol features that are used Ehen sending or receiving faxes. One class isnct inherentlB 9etter than anothere hoEever8 one pro9a9lB Eill suit a usercs needs 9etter than others. Class 1 relies on )BlaF#I to perform the 9ul4 of the fax protocol. Class 2 relies on the modem to perform the 9ul4 of the fax protocol. Class 2.6 is similar to Class 2 9ut maB include more features. Class 1.6 is similar to Class 1 9ut maB add P."5-fax capa9ilitB. Class 2.1 is similar to Class 2.6 9ut adds P."5-fax capa9ilitB. )BlaF#I generallB Eill have more features Ehen using Class 1.1.6 than Ehen using most modemsc Class 2 or Class 2.6 implementations. DenerallB anB pro9lems encountered in Class 1.1.6 can 9e resolved 9B modifications to )BlaF#I8 9ut usuallB anB pro9lems encountered in Class [Link].1 Eill reHuire the modem manufacturer to resolve it. 0I;

,se Class 1 unless Bou have a good reason not to. 2his modem loo4s to have support for Class 1 and 1.6. )oE should it 9e configured =1?d )mm8 this loo4s li4e a Class 1 modem. Produ)t )ode AAC(3D is .spandsp.* Other information AAC(%D is .444*soft-s4it)h*org.* (2E-(CE floE control scheme =default?d odem manufacturer is /spandsp/. odem model is /*#Imodem/. ,sing prototBpe configuration file iaxmodem... 2he modem configuration parameters are' odem3esetCmds' /#2)1fn#2\PC*(L1/ #re these o4 =Bes?d Creating neE configuration file .[Link]*#I... (one setting up the modem configuration. Chec4ing .[Link] for consistencB... ...some parameters are different. 2he non-default scheduler parameters are' CountrBCode' :C #reaCode' 1 $ong(istance!refix' 6 *nternational!refix' 66 (ial&tring3ules' [Link] #re these o4 =Bes?d Creating neE configuration file .[Link]... ...saving current file as .[Link]. (onct forget to run faxmodem08C1 0if Bou have a send-onlB environment1 or configure init to run faxgettB on ttB*#I. (o Bou Eant to run faxaddmodem to configure another modem =Bes?d no $oo4s li4e Bou have some faxgettB processes running 0!*(s are1' 1"2"6 *t is usuallB a good idea to restart these processes after running faxsetupe especiallB if have Gust installed neE softEare. *f these processes are 9eing started 9B init08C1 then sending each of them a a,*2 message Eith the faxHuit command should cause them to 9e restarted. *s it o4 to send a a,*2 command to each process =Bes?d .[Link] ttB*#I 'e vuelve a arrancar 8ylafax 0I>

<etc<init.#<2*!afa1 restart &hutting doEn )BlaF#I Hueue manager 0faxH1' = O> ? &hutting doEn )BlaF#I server 0hfaxd1' = O> ? &tarting )BlaF#I Hueue manager 0faxH1' = O> ? &tarting )BlaF#I server 0hfaxd1' = O> ? 3estarting )BlaF#I modem manager 0faxgettB1' = O> ? =odos los archivos de configuracin que se crearan a lo largo del proceso de configuracin de 8ylafax se guardaran en la carpeta /var/spool/hylafax/etc +rue$a 'e tiene un numero geogr4fico de )uteliaJoIA y la posibilidad de enviar faxes desde internet con otro operador1 )l trun% )utelia para las llamadas entrantes est4 configurado con el contexto fromHeutelia )n la configuracin del extensions1conf para este contexto se han aadido estas l neas: :from-eutelia< exten => s5#5NoOpA Call from !utelia D exten => s5n5Ans4er exten => s5n5^aitA%D exten => s5n51ialAN(P/#3335/8D exten => s5n5'angup exten => fax5#51ialA(A@2/iaxmodemD exten => fax5n5'angup 'i $steris% reconoce que est4 llamando un fax saltar4 a la extensin fax sino llamar4 la extensin 'IA/0III1 'e guardan los cambios y se reinicia $steris% <etc<init.#<asterisk restart .esde la pagina 3eb de un proveedor que permita enviar fax se env a un fax al numero geogr4fico configurado de )uteliaJoIA1 )ste es el resultado del env o1 Lado $steris%:

00I

!orreo electrnico recibido:

-ax&aster es el usuario predefinido que 8ylafax usa para enviar el fax a un correo electrnico1 'i se quiere/ se puede cambiar modificando el archivo -[Link] que se encuentra en la carpeta /var/spool/hylafax/etc 'i se quiere recibir el correo electrnico con el texto en espaol siempre en el mismo archivo se aade esta l nea: TE>+@ATE=es Aara el env o de los faxes se crea en extension1conf un contesto TfaxU E)l mismo que se ha configurado para la extension iaxmodem en iax1confF con las siguientes l neas:

000

:fax< exten => _@*5#51ialAN(P/Eustvoip/B+!@C!N0D exten => _@*5n5'angup 'e $ctualiKa el dialplan: <etc<init.#<asterisk re!oa# .esde el terminal de Linux se escribe: sen#fa1 )n )# _fa1nu/$erZ _fi!e.t1tZ )#emplo: sen#fa1 )n )# 00DHXXXXXXXX <t/p<fu!ano.p#f 'i se quieres usar un cliente con interfaK gr4fica para el env o de fax/ una buena solucion es Ya-&.C/0 EVet another Qava 8yla-$< !lientF que siendo escrito completamente en Q$J$ funciona en sistemas operativos Linux y Mindo3s1 )l caso que se utilice un cliente remoto en el cortafuegos hay que abrir el puerto ?CC> =!A Eusado por 8ylafaxF y los puertos desde el 2IIII hasta el 9CIII =!A para los datos1 D.2 Asterisk * e! protoco!o TAC 'e pone una ho#a en la NmaquinaO/ se marca el numero de tel5fono de destino y se espera que salga un :_ por algDn lado1 )sta sencilla operacin es la que se hace cuando se quiere enviar un -$<1 =odo lo que pasa en el NmientrasO es totalmente transparente1 Los dos -axes negocian todos los pasa#es y para hacer eso usan un protocolo1 )ste protocolo ha sido definido por la NInternational =elecommunication ,nionO y tom como sigla =12I )n 0>>; la misma organiKacin define un nuevo protocolo que permite recibir y enviar faxes usando una red a paquetes EInternetF1 La sigla de este protocolo es =12;1 e!mo funciona el protocolo =12;f (uiK4s la imagen que sigue ayuda para entender:

?9 Va#8-!

007

)l -$</ conectado a la l nea telefnica est4 tambi5n conectado a un *ate3ay con soporte =12;1 )ste *ate3ay se encarga de transformar el -$< en el formato requerido para luego ser enviado a trav5s de la red Internet1 )n el lado opuesto otro *ate3ay =12; se encarga de NdecodificarO los paquetes que lleguen para luego pasar el resultado al fax de destinacin1 ,n *ate3ay =12; cl4sico funciona como se muestra en la imagen que sigue:

Los datos del -$< =12I vienen analiKados y manipulados para luego ser transformados en paquetes EI-AF1 'e pueden enviar usando tres protocolos de transporte: ,.A=L/ =!A o L=A1 'er4 tarea de los *ate3ay =12; negociar el protocolo de trasporte1 )n el caso de $steris% el Dnico protocolo de trasporte permitido es ,.A=L que funciona de la siguiente forma:

002

!ada paquete ,.A=L contiene encapsulado el paquete I-A Eque contiene los datos del fax que se est4 enviando y un sistema de correccin de errores @ -)! Tfor3ard error correctionUF1 Aara repetir los paquetes perdidos y controlar que lleguen en el #usto orden hay a disposicin dos sistemas: !on el primero se repite el ultimo paquete enviado como -)! para el paquete que se est4 enviando !on el segundo se crea un paquete de paridad para un numero determinado de paquetes I-A y se incluye esta informacin en el paquete ,.A=L corriente1

)l paquete ,.A=L est4 encapsulado en un paquete ,.A Eprotocolo de trasporteF que a su veK est4 encapsulado en un paquete IA Eprotocolo que permite al paquete llegar a destinacinF1 $steris% soporta el protocolo =12; solamente como pasarela/ es decir que no est4 Nen el medioO a lo largo del env o del fax1 $ un lado y al otro de la trasmisin deber4n estar dos *ate3ay =12; que se hagan cargo de la tarea de enviar/recibir el fax1 )n $steris% el env o y recepcin de faxes es posible a trav5s de la librer a 'pan.'A y el modulo appBfax1 .esde la consola asterisk ,rvvvvvvvvvvvvvvvv 'e controla la sintaxis de las dos aplicaciones contenidas en el modulo appBfax !LI" core s2ow app!ication -eceive.a1 H= Info about application jLeceive-$<j =H =&Bnopsis? 3eceive a F#I =(escription? 00?

3eceiveF#I0filename=Uoptions?1' 3eceives a fax from the channel into the given filename overEriting the file if it alreadB exists. File created Eill have 2*FF format. 2he option string maB contain Mero or more of the folloEing characters' ccc -- ma4es the application 9ehave as a calling machine 2he default 9ehaviour is to 9ehave as an ansEering machine. 2his application uses folloEing varia9les' $OC#$&2#2*OA*( to identifB itself to the remote end. $OC#$)E#(E3*AFO to generate a header line on each page. 2his application sets the folloEing channel varia9les upon completion' F#I&2#2,& - status of operation' &,CCE&& U F#*$E( F#IE33O3 - Error Ehen F#*$E( F#I O(E - ode used' audio U 2"8 3E O2E&2#2*OA*( - C&*( of the remote side. F#I!#DE& - num9er of pages sent. F#I<*23#2E - transmition rate. F#I3E&O$,2*OA - resolution. 3eturns -1 in case of user hang up or anB channel error. 3eturns 6 on success. !LI" core s2ow app!ication en#.a1 -L *nfo a9out application c&endF#Ic L=&Bnopsis? &end a F#I =(escription? &endF#I0filename=Uoptions?1' &end a given 2*FF file to the channel as a F#I. 2he option string maB contain Mero or more of the folloEing characters' cac - ma4es the application 9ehave as an ansEering machine 2he default 9ehaviour is to 9ehave as a calling machine. 2his application uses folloEing varia9les' $OC#$&2#2*OA*( to identifB itself to the remote end. $OC#$)E#(E3*AFO to generate a header line on each page. 2his application sets the folloEing channel varia9les upon completion' F#I&2#2,& - status of operation' &,CCE&& U F#*$E( F#IE33O3 - Error Ehen F#*$E( 00C

F#I O(E

- ode used' audio U 2"8 3E O2E&2#2*OA*( - C&*( of the remote side. F#I!#DE& - num9er of pages sent. F#I<*23#2E - transmition rate. F#I3E&O$,2*OA - resolution. 3eturns -1 in case of user hang up or anB channel error. 3eturns 6 on success. $lgunos $=$ comercialiKados soportan el protocolo =12;1 )n JoipHinfo?G aparece una lista Eaunque no muy actualiKadaF1 Aara el soporte =12; en $steris% hay que modificar dos archivos: nano <etc<asterisk<[Link] en la parte general se busca la l nea que sigue y si est4 comentada se quita el punto y coma por delante: t%>pt_udptl = yes57!C5maxdatagram=/33 'e guardan los cambios y se continua con el segundo archivo: nano <etc<asterisk<u#pt!.conf 'e pone: :general< udptlstart=/333 udptlend=/399 udptl)he)-sums=yes udptlfe)entries = % udptlfe)span = % use_even_ports = no 'e guardan los cambios y se vuelve a arrancar $steris%: <etc<init.#<asterisk restart Aara el test que se va a presentar se ha configurado un numero geogr4fico de )utelia JoIA Eque soporta el protocolo =12; a trav5s de un *ate3ay 'erver !iscoF y se ha modificado el plan de llamadas de la siguiente forma nano <etc<asterisk<[Link]

?G $steris% =2;

009

:from-eutelia< exten => s5#5Ans4er exten => s5n5^aitA2D exten => s5n5Qe)eivefaxA/tmp/B+IN(ZI!(10*tifD exten => s5n5NoopA7A@NCACIN B+7A@NCACIN05 7A@!QQOQ B+7A@!QQOQ05 7A@ O1! B +7A@ O1!0D exten => s5n5'angup 'e guardan los cambios y se actualiKa el dialplan: asterisk ,rvvvvvvvvvvvvvv !LI" #ia!p!an re!oa# )n el primer test se ha usado para la llamada saliente Qustvoip y se ha enviado el fax a trav5s de la combinacin 8ylafax/I$<modem: Executing =66"@6C""18C6::@7fax-out'1? (ial0/*#I2.iaxmodem2-@61/8 /&*!.Gustvoip.66"@6C""18C6::@/1 in neE stac4 -- Called Gustvoip.66"@6C""18C6::@ -- &*!.Gustvoip-682e69"8 is ma4ing progress passing it to *#I2.iaxmodem2-@61 -- Executing =6C""18C6::@7from-eutelia'1? #nsEer0/&*!.eutelia"-961:6d66/8 //1 in neE stac4 -- Executing =6C""18C6::@7from-eutelia'2? ;ait0/&*!.eutelia"-961:6d66/8 /2/1 in neE stac4 -- &*!.Gustvoip-682e69"8 ansEered *#I2.iaxmodem2-@61 -- Executing =6C""18C6::@7from-eutelia'"? 3eceiveF#I0/&*!.eutelia"-961:6d66/8 /.tmp.12::6:662@.[Link]/1 in neE stac4 -- Executing =6C""18C6::@7from-eutelia'5? AoOp0/&*!.eutelia"-961:6d66/8 /F#I&2#2,& &,CCE&&8 F#IE33O3 8 7A@ O1! C%>83E O2E&2#2*OA*( PoM2oPoice/1 in neE stac4 -- Executing =6C""18C6::@7from-eutelia':? )angup0/&*!.eutelia"-961:6d66/8 //1 in neE stac4 LL &paEn extension 0from-eutelia8 6C""18C6::@8 :1 exited non-Mero on c&*!.eutelia"-961:6d66c LL &paEn extension 0fax-out8 66"@6C""18C6::@8 11 exited non-Mero on c*#I2.iaxmodem2-@61c -- )ungup c*#I2.iaxmodem2-@61c !omo se puede notar el fax ha llegado sin problemas y se ha usado el protocolo =12; )n la segundo test se ha usado para la llamada #ustvoip con 8ylafax/I$<modem y como numero geogr4fico en recepcin un .I. de !heapnet Executing =6::55:16187from-cheapnet'1? #nsEer0/&*!.cheapnet-9:a268e6/8 //1 in neE stac4 -- Executing =6::55:16187from-cheapnet'2? ;ait0/&*!.cheapnet-9:a268e6/8 /2/1 in neE stac4 =Oct 1C 66'1C'::? AO2*CE=265C5?' channel.c'2@26 ++ast+read' (ropping incompati9le voice frame on &*!.cheapnet-9:a268e6 of format ulaE since our native format has changed to 6x8 0alaE1 -- &*!.Gustvoip-682f28"8 ansEered *#I2.iaxmodem2-2@" -- Executing =6::55:16187from-cheapnet'"? 3eceiveF#I0/&*!.cheapnet-9:a268e6/8 /.tmp.12::C:66C:[email protected]/1 in neE stac4 =Oct 1C 66'1C':C? ;#3A*AD=265C5?' app+fax.c'"8" transmit+audio' channel c&*!.cheapnet9:a268e6c refused to negotiate 2."8 00G

=Oct 1C 66'18'62? AO2*CE=2685?' chan+iax2.c'166@@ soc4et+process' !eer ciaxmodem2c is noE 3E#C)#<$Eg 2ime' " -- ast+get+srv' &3P loo4up for c+sip.+,(!.[Link] mapped to host [Link].it8 port :666 -- Executing =6::55:16187from-cheapnet'5? AoOp0/&*!.cheapnet-9:a268e6/8 /F#I&2#2,& &,CCE&&8 F#IE33O3 8 7A@ O1! audio83E O2E&2#2*OA*( PoM2oPoice/1 in neE stac4 -- Executing =6::55:16187from-cheapnet':? )angup0/&*!.cheapnet-9:a268e6/8 //1 in neE stac4 )n este caso el NmodoO ha sido audio/ es decir =12I Los dos test indican que en $steris% es posible enviar faxes T.A0 02*!afa13 ,Z Asterisk ,Z Eute!ia [Link] y no se necesita tener en ambos lados un *ate3ay =12; La misma aplicacin Leceivefax sirve tambi5n para un escenario de este tipo: T.A0 02*!afa13 ,Z Asterisk ,Z C2eapnet T.A0 D.A Env9o #e .AX !omo se ha visto en el p4rrafo ;17 la aplicacin para enviar -$< en $steris% es 'end-ax1 La sintaxis es muy sencilla: Nend7A@Afilename:Toptions<D6 )l problema es que con esta aplicacin no podemos llamar directamente un -$< en cuanto no hay posibilidad de indicar el numero a marcar1 Aara solucionar el problema hay que hacer uso de un callfile1 ,n callfile es un archivo de texto donde se definen unas cuantas acciones que $steris% tiene que e#ecutarS una veK que est5 completado se mueve en la carpeta /var/spool/asteris%/outgoing1 $steris% controla peridicamente esta carpeta y si hay un archivo de este tipo lo procesa1 )n el escenario que se va a presentar se llamar4 el numero de destino Eun servicio que permite recibir -$< y luego los env a a un correo electrnico definidoF usando come proveedor para la llamada #ustvoip1 ,na veK que el destinatario conteste se enviar4 el archivo prueba1tif Esolo funciona con archivos tiffF presente en la carpeta /tmp1 c# <t/p nano enviofa1 'e aaden las siguientes lineas: Channel6 N(P/Eustvoip/33%9@@@@@@@@@@@ Sel canal que se va a usar para efectuar la llamada Callerid6 .7A@. S el identificativo del llamante ^aitCime6 %3 00;

S'e espera un respuesta por 2I segundos axretries6% :se intentar4 llamar el numero per tres veces QetryCime6 %33 S entre un intento y otro se esperar4n 2II segundos A))ount6 #333 S en el registro de las llamadas E!.LF cobramos la llamada a la extensin 0III Appli)ation6 Nend7ax S una veK que el destinatario conteste se e#ecuta la aplicacin sendfax 1ata6 /tmp/prueba*tif Sel nombre del archivo que se enviar4 )l resultado del archivo sin los comentarios ser4: Channel6 N(P/Eustvoip/33%9@@@@@@@@@@@ Callerid6 .7A@. ^aitCime6 %3 axretries6% QetryCime6 %33 A))ount6 #333 Appli)ation6 Nend7ax 1ata6 /tmp/prueba*tif 'e guardan los cambios y se mueve el archivo en la carpeta /var/spool/asteis%/outgoning /v enviofa1 <var<spoo!<asterisk<outgoing )ste es el resultado en la consola de $steris%: #ttempting call on &*!.Gustvoip.66"@6C""555:62" for application &[Link].prue9a.tif1 03etrB 11 Z Channel &*!.Gustvoip-685c82d6 Eas ansEered. Z $aunching &[Link].prue9a.tif1 on &*!.Gustvoip2-685c82d6 =Aov 26 1:'5:'"2? AO2*CE=C6"6?' p9x+spool.c'":C attempt+thread' Call completed to &*!.Gustvoip2.66"@6C""555:62" )ste es el correo electrnico recibido:

00>

07I

Capitu!o V'
Asterisk -ea!ti/e
$L$ E=he $steris% Lealtime $rchitectureF es un m5todo para almacenar los archivos de configuracin de $steris% en una base de datos1 )xisten dos tipos de realtime: )st4ticoS .in4micoS

)l realtime est4tico se usa para guardar los archivos de configuracin de $steris% en una base de datos que $steris% leer4 al momento de iniciarse1 )l realtime din4mico se utiliKa para guardar en la base de datos/ Nob#etosO que se necesitan modificar y actualiKar al instante: usuarios 'IA o I$<7/ las colas de espera y los agentes/ los correo de voK1 Los cambios se actualiKar4n en tiempo real en la base de datos y esta es la gran diferencia entre la versin est4tica y la din4mica1 )n la primera si se modifican los datos hay que recargar la configuracin de $steris%/ en la segunda se leen/ se escriben y se actualiKan en tiempo real1 )n este capitulo se presentar4n algunos e#emplos de utiliKacin del realtime en $steris%1 6.1 Voice/ai! * 4(6C )n $steris% es posible almacenar los mensa#es de voK en realtime din4mico usando una base de datos &y'(L y el conector :.B!1 ,na veK configurada la base de datos se podr4n hacer consulta desde cualquier tipo de programa que soporte :.B!1 Aara averiguar si los mdulos est5n compilados y cargados en $steris% desde la consola: asterisk )rvvvvvvvvvvvvv !LI" /o#u!e s2ow !ike o#$c odule (escription ,se Count res+config+[Link] 3ealtime O(<C configuration 6 res+[Link] O(<C resource 6 func+[Link] O(<C loo4ups 6 cdr+adaptive+[Link] #daptive O(<C C(3 9ac4end 6 cdr+[Link] O(<C C(3 <ac4end 6 : modules loaded !LI" ;uit La respuesta de $steris% indica que todos los mdulos est4n instalados1 'i no fuera as hay que seguir este procedimiento: Aarar $steris% y volver a compilarlo con el soporte :.B! de Joicemail

<etc<init.#<asterisk stop Jolver a compilar e instalar $steris% c# <usr<src<asterisk)[Link] /ake #istc!ean .<configure /ake /enuse!ect 'eleccionar la opcin :.B!B'=:L$*) en el menD Joicemail

salir presionando la tecla < para guardar la configuracin1 /ake /ake insta!! Jolver a arrancar $steris% y averiguar/ a trav5s de la consola/ que apareKcan los mdulos como mostrado arriba <etc<init.#<asterisk start 'e crea la base de datos en &y'(L y la tabla para guardar los mensa#es de voK1 'e crea la base de datos: /*s;!a#/in )u root )p create asteriskvoice la tabla voicemessages: /*s;! )u root )psesa/o ;elcome to the B&a$ monitor. Commands end Eith e or fg. -our B&a$ connection id is 81 077

&erver version' :.6.5: &ource distri9ution 2Bpe JhelpeK or JfhK for help. 2Bpe JfcK to clear the 9uffer. mysql" use asteriskvoice .atabase changed mysql" C-EATE TA6@E avoice/essagesa 0 ai#a int0113 N4T N7@@ autoIincre/ent8 a/sgnu/a int0113 N4T N7@@ #efau!t J0J8 a#ira varc2ar0C03 #efau!t JJ8 aconte1ta varc2ar0C03 #efau!t JJ8 a/acroconte1ta varc2ar0C03 #efau!t JJ8 aca!!eri#a varc2ar0E03 #efau!t JJ8 aorigti/ea varc2ar0E03 #efau!t JJ8 a#urationa varc2ar0203 #efau!t JJ8 a/ai!$o1usera varc2ar0C03 #efau!t JJ8 a/ai!$o1conte1ta varc2ar0C03 #efau!tJJ8 arecor#inga !ong$!o$8 +-'>A-M `EM 0ai#a38 `EM a#ira 0a#ira3 3K auerB O>8 6 roEs affected 06.1" sec1 'e crea un nuevo usuario y se le otorgan todos los privilegios para mane#ar la base de datos voicemail1 .esde local: &ysql" G-ANT A@@ +-'V'@EGE 4N asteriskvoice.L T4 JasteriskJ&J!oca!2ostJ '(ENT'.'E( 6M Jsesa/oJK auerB O>8 6 roEs affected 06.66 sec1 mysql" G-ANT A@@ +-'V'@EGE 4N asteriskvoice.L T4 JasteriskJ&JNJ '(ENT'.'E( 6M Jsesa/oJK auerB O>8 6 roEs affected 06.66 sec1 mysql" f!us2 privi!egesK mysql" ;uit <Be ,na veK creada la base de datos/ la tabla y el usuario que tiene los privilegios para administrarla/ hay que configurar :.B! para que pueda conectarse a &y'(L y a la base de datos reci5n creada1 Aara este efecto hay que crear dos archivo en la carpeta /etc: nano <etc<o#$[Link] 072

y se aaden estas l neas: : yNZ$< 1es)ription = O1BC for yNZ$ 1river = /usr/lib/libmyodb)%*so Netup = /usr/lib/libodb)myN*so 7ileIsage = # nano <etc<o#$[Link] OasteriskvoiceP (escription = >* ?@ voice/ai! (river = >* ?@ (ata$ase = asteriskvoice erver = !oca!2ost 7ser = asterisk +asswor# = sesa/o +ort = AA06 4ption = A )l archivo extconfig1conf es donde se configura el Lealtime en $steris% Eest4tico y din4micoF1 8ay que modificarlo para indicar que los mensa#es de voK se guardar4n en una base de datos: nano <etc<asterisk<[Link] 'e aade en la parte final del archivo esta l nea: voi)email => odb)5asteris-5voi)emessages 'e guardan los cambios y se sigue con la modifica del archivo voicemail1conf nano <etc<asterisk<voice/ai!.conf 8ay que buscar las dos l neas que aparecen aba#o y quitar el punto y coma que tienen por delante: odb)storage=asterisodb)table=voi)emessages )l valor del par4metros odbcstorace es el que se ha indicado en extconfig1conf y voicemessages es la tabla de la base de datos donde se guardar4n los mensa#es de voK1 'e guardan los cambios y se termina momificando el archivo resBodbc1conf que es el que se encarga de hacer la conexin entre $steris% y :.B!: nano <etc<asterisk<resIo#$[Link]

07?

'e aaden las siguientes lineas: :asteris-< enabled => yes dsn => asteris-voi)e username => asterispass4ord => sesamo pre-)onne)t => yes )n dsn aparece la etiqueta que se ha configurado en el archivo odbc1ini1 'e vuelve a arrancar $steris%: <etc<init.#<asterisk restart y se averigua que la conexin est5 funcionando: asterisk )rvvvvvvvvvvvvvvvv !LI" o#$c s2ow O(<C (&A &ettings ----------------Aame' asteris4 (&A' asteris4voice !ooled' Ao Connected' -es Aara probar configuracin se llama una extensin y se de#a un mensa#e en el contestador1 $hora en un computador con Mindo3s <A/7III/Jista y &icrosoft )xcel o &icrosoft $ccess se va a crear una conexin a la base de datos1 Arimero hay que abrir el puerto 22I9 =!A en el cortafuego de Linux aadiendo la siguiente linea en la seccion bfilter: nano <etc<s*sconfig<ipta$!es -A (NPIC -p t)p -m t)p --dport %%3? -E ACC!PC 'e reinicia iptables: service ipta$!es restart Luego hay que instalar el conector mysql para :.B! versin Mindo3s1 'e descarga/ segDn la versin de Mindo3s/ desde esta pagina:

07C

[Link] =erminada la descarga se instala1 >icrosoft E1ce! 'e abre el )xcel y en el menD datos se selecciona :btener datos externos " +ueva consulta de base de datos:

'e selecciona k+uevo origen de datos" y se presiona el botn $ceptar:

'e escoge un nombre para la origen de datos y se escoge el tipo:

079

'e indican los datos necesarios Ehost del servidor &ysql H usuario/ contrasea y nombre de la base de datosF

07G

'e regresa a la ventana precedente y se selecciona la tabla " voicemessages y $ceptar

)n la ventana que aparece se escoge $steris%Hvoicemail y se presiona $ceptar

'e escogen las columnas que se quieren incluir en la consulta:

07;

y si se quiere se puede filtrar los datos:

'e ordenan los datos:

07>

'e devuelven a &icrosoft )xcel:

$hora los registros de la base de datos aparecer4n en )xcel:

02I

>icrosoft Access 'e arranca &icrosoft $ccess y se crea un nuevo archivo " base de datos en blanco

:btener datos externos " Importar

020

'e escoge en la lista Nbase de datos :.B!O

027

$steris%HJoicemal1dsn Eque encontramos ah porque ya la hemos creada con )xcelF

'e ponen los mismos datos de conexin usados por )xcel:

022

'e escoge la tabla voicemessages:

)ste es el resultado:

6.2 4(6C * C()n este p4rrafo se mostrar4 como guardar los registros de las llamadas Eque ya hemos almacenado en una base de datos &y'(LF utiliKando :.B!1 +o es propiamente una configuracin realtime pero puede ser Dtil para luego consultar los datos desde otras aplicaciones1 'e modifica el archivo odbc1ini: 02?

nano <etc<o#$[Link] y se aaden estas l neas: :asteris-)dr< 1es)ription = yNZ$ O1BC 1river Cesting 1river = yNZ$ 1atabase = asteris-)dr Nerver = lo)alhost Iser = asterisPass4ord = sesamo Option = % Port = %%3? 'e guardan los cambios y se continua con el archivo resBodbc1conf: nano <etc<asterisk<resIo#$[Link] :asteris-2< enabled = yes dsn = asteris-)dr username = asterispass4ord = sesamo loguniJueid = yes pre-)onne)t = yes 'e termina con: nano <etc<asterisk<c#rIo#$[Link] :global< dsn=asteris-2 username=asterispass4ord=sesamo loguniJueid=yes table=)dr usegmtime=no 'e guardan los cambios y se reinicia $steris% <etc<init.#<asterisk restart )n el archivo de registro se encontrar4n estas l neas: =(ec @ 1:'6@'6@? AO2*CE="@C6? res+od9c.c' Connecting asteris42 =(ec @ 1:'6@'6@? AO2*CE="@C6? res+od9c.c' res+od9c' Connected to asteris42 =asteris4-cdr? 02C

=(ec @ 1:'6@'6@? AO2*CE="@C6? res+od9c.c' 3egistered O(<C class Jasteris42K dsn-Z=asteris4-cdr? y desde la consola de $steris% se averigua que haya conexin asterisk )rvvvvvvvvvvvvvvvvvvv !LI" o#$c s2ow O(<C (&A &ettings ----------------Aame' asteris42 (&A' asteris4cdr !ooled' Ao Connected' -es Aame' asteris4 (&A' asteris4voice !ooled' Ao Connected' -es $hora se pueden hacer consultas a la base de datos Edesde microsoft access/ por e#emploF y sacar todas las estad sticas y/o reportes que queramos1 6.A >eet>E -ea!ti/e Aara la configuracin de las conferencias se puede usar el archivo de configuracin que se ha visto en el parrafo 7107 o se puede optar para la solucin en Lealtime1 )n Lealtime la venta#a es poder programar las conferencias con fecha y hora directamente en la base de datos1 )n el caso del Lealtime hay que crear una base de datos: /*s;!a#/in create asterisk/eet/e )u root )psesa/o .esde en el cliente mysql: /*s;! )u root )psesa/o ;elcome to the B&a$ monitor. Commands end Eith e or fg. -our B&a$ connection id is 5C8@C &erver version' :.1."C B&a$ CommunitB &erver 0D!$1 9B 3emi 2Bpe JhelpeK or JfhK for help. 2Bpe JfcK to clear the current input statement. mysql" use asterisk/eet/e (ata9ase changed 'e crea la tabla meetme: 029

mysql" C-EATE TA6@E a/eet/ea 0 aconfnoa c2ar0C03 N4T N7@@ #efau!t J0J8 astartti/ea #ateti/e N4T N7@@ #efau!t J0000)00)00 00%00%00J8 aen#ti/ea #ateti/e #efau!t N7@@8 apina c2ar0203 #efau!t N7@@8 aoptsa c2ar01003 #efau!t N7@@8 aa#/inpina c2ar0203 #efau!t N7@@8 aa#/inoptsa c2ar01003 #efau!t N7@@8 a/e/$ersa int0113 N4T N7@@ #efau!t J0J8 a/a1usersa int0113 N4T N7@@ #efau!t J0J8 +-'>A-M `EM 0aconfnoa8astartti/ea3 3K ?uer* 4`8 0 rows affecte# 00.01 sec3 'e configuran los privilegios para la base de datos asteris%meetme: mysql" G-ANT A@@ +-'V'@EGE 4N asterisk/eet/e.L T4 JasteriskJ&J!oca!2ostJ '(ENT'.'E( 6M Jsesa/oJK mysql" G-ANT A@@ +-'V'@EGE 4N asterisk/eet/e.L T4 JasteriskJ&JNJ '(ENT'.'E( 6M Jsesa/oJK auerB O>8 6 roEs affected 06.66 sec1 mysql" f!us2 privi!egesK 'e introducen algunos datos de prueba en la tabla: mysql" 'N E-T 'NT4 /eet/e 0confno8pin8a#/inpin8/e/$ers8startti/e8en#ti/e3 VA@7E 0VD000V8V12AEV8V2AEDV8V0V8V200B)0B)2E 1B%00V8V200B)0B)2E 20%00V3K auerB O>8 1 roE affected 06.66 sec1 mysql" 'N E-T 'NT4 /eet/e 0confno8pin8a#/inpin8/e/$ers8startti/e8en#ti/e3 VA@7E 0VD001V8V12AEV8V2AEDV8V0V8V200B)0B)2D 1B%00V8V200B)0B)2D 20%00V3K (uery :_/ 0 ro3 affected EI1II secF y se sale del cliente &y'(L mysql" ;uit Bye !on estos datos se han programado dos conferencias: 02G

la CIII que iniciar4 a las G de la tarde del 7? de septiembre del 7II> y terminar4 a las ; de la tarde del mismo d aS la CIII que iniciar4 a las G de la tarde del 7C de septiembre del 7II> y terminar4 a las ; de la tarde del mismo d aS $hora la configuracin de :.B! y $steris% nano <etc<o#$[Link] se aaden estas l neas: Oasterisk/eet/eP (escription = >* ?@ connection to basterisk/eet/ec #ata$ase (river = >* ?@ (ata$ase = asterisk/eet/e erver = !oca!2ost 7ser =asterisk +asswor# = sesa/o +ort = AA06 4ption = A 'e guardan los cambios y se modifica el archivo resBodbc1conf nano <etc<asterisk<resIo#$[Link] :asteris-%< enabled = yes dsn = asteris-meetme username = asterispass4ord = sesamo loguniJueid = yes pre-)onne)t = yes 'e guardan los cambios y se pasa al archivo extconfig1conf nano <etc<asterisk<[Link] se aade esta l nea en el bloque realtime: meetme => odb)5asteris-%5meetme 'e modifica el dialplan para dar acceso a las dos conferencias creadas en la base de datos: nano <etc<asterisk<[Link] en el contexto conferencias ponemos: 02;

exten => _833:3#<5#5 eetmeAB+!@C!N05 D exten => _833:3#<5n5'angup Aara usar las conferencias en realtime hay que modificar el archivo meetme1conf nano <etc<asterisk</eet/[Link] modificar este par4metro: shedule= no para ponerlo en yes s)hedule=yes 'e guardan los cambios y reinicia $steris%: <etc<init.#<asterisk restart $lgunas locuciones relacionadas con las conferencias programadas no est4n disponibles con la instalacin de $steris%1 8ay que descargarlas Een ingl5sF de este enlace: 2ttp%<<[Link]<t/p<confpro/[Link] 'e descomprime el archivo y se copian las locuciones en la carpeta /var/lib/asteris%/sounds/en )n el campo NmembersO de la tabla meetme se almacenar4n din4micamente los usuarios presentes en la conferencia1

02>

Capitu!o V''
Asterisk * TT 0te1t to speec23
H.1 .estiva! -estival en un =='?;/ es decir un sistema de s ntesis de voK1 eAara que lo necesitamos en $steris%f 'i se quiere crear un menD de voK usando lineas de texto/ leer archivos de texto/ -estival es la solucin1 Aara averiguar que el modulo de festival est5 correctamente cargado en $steris%/ desde la consola de la centralita: asterisk )rvvvvvvvvvvvvvvv !LI" /o#u!e un!oa# appIfestiva! LL ,nregistered application JFestivalK !LI" /o#u!e !oa# appIfestiva! LL !arsing [Link]' LL Found LL 3egistered application JFestivalK $oaded app+festival LZ 0&imple Festival *nterface1 !LI" ;uit 'i aparece algDn tipo de error significa que el modulo no ha sido compilado y hay que volver a la compilacin de $steris%1 -estival tiene como idioma predefinido el ingl5s1 Aara agregarle el idioma espaol hay que seguir estos pasos: c# <usr<s2are<festiva!<voices wget 2ttp%<<[Link]<t/p<festiva!)[Link] *u/ insta!! unzip unzip festiva!)[Link] $hora se modifica el archivo de configuracin de festival nano <usr<s2are<festiva!<festiva!.sc/
?; .estiva! es un sistema de s ntesis de voK de propsito general para mDltiples lengua#es desarrollado originalmente por el !entro de Investigacin de =ecnolog as del Lengua#e de la ,niversidad de )dinburgo/ la ,niversidad !arnegie &ellon as como otros centros de enseanKa han realiKado contribuciones substanciales al proyecto1

se aaden estas l neas antes de la ultima linea del archivo e0language++spanish1 0setg voice+default cvoice+el+diphone1 0define 0tts+textasteris4 string mode1 /0tts+textasteris4 &23*AD O(E1 #pplB tts to &23*AD. 2his function is specificallB designed for use in server mode so a single function call maB sBnthesiMe the string. 2his function name maB 9e added to the server safe functions./ 0let 00Eholeutt [Link] 0eval 0list c,tterance c2ext string11111 [Link] Eholeutt 86661 [Link] Eholeutt :1 [Link] Eholeutt111 'e guardan los cambios en el archivo y se modifica el archivo de configuracin de festival en $steris%: nano <etc<asterisk<festiva!.conf estas son la l neas que hay que modificar/activar :general< host=lo)alhost port=#%#/ festival)ommand=Atts_textasteris- .2s. XfileDAJuitDVn 'e guarda el archivo con !trlH: !trlH< 'e reinicia $steris% <etc<init.#<asterisk re!oa# Aara arrancar el servidor de -estival en autom4tico se pone esta l nea en el archivo rc1local: nano <etc<rc.!oca! /usr/bin/festival_server > /dev/null ` 'e inicia el servidor festivalS /usr/bin/festival_server > /dev/null ` 'e controla que est5 corriendo: ps au1 d grep festiva!

0?0

'e modifica el .ialplan para crear una extensin que permita hacer una prueba del servidor -estival Een el contexto internasF: nano <etc<asterisk<[Link] exten => ?835#5Ans4erAD exten => ?835n57estivalAAsteris- y 7estival trabaEan Eunto* ChevereaaaD exten => ?835n5'angupAD 'e actualiKa el dialplan desde la consola asterisk )rvvvvvvvvvvvvvvvvv !LI" #ia!p!an re!oa# .esde un softphone conectado a $steris% se marca la extensin 9CI para escuchar la frase que se acaba de configurar en el dialplan1 H.2 Cepstra! !epstral?> es otro sistema ==' que se puede integrar en $steris% Eversin 01?1< y 0191<F gracias a un modulo dedicado1 !epstral no es un programa gratuito y cada voK cuesta 7>/>> dlares por canal1 'e descarga una voK de prueba desde el sitio de !epstral c# <opt wget 2ttp%<<#own!oa#[Link]!.co/<cepstra!<iAC6)!inu1<Cepstra!I>arta)CkFzIiAC6) ![Link] 'e descomprime tar )1f Cepstra!I>arta)CkFzIiAC6)![Link] y se instala c# Cepstra!I>arta)CkFzIiAC6)!inu1ID.1.0 .<insta!!.s2 'e aceptan los t5rminos de la licencia/ se escoge la carpeta /opt/s3ift para la instalacin y se confirman los datos1 Aara que Linux sepa donde ir a buscar las librer as de !epstral hay que indicarselo modificando el
?> !epstral

0?7

archivo ld1so1conf nano <etc<!#.[Link] se aade esta l nea: /opt/s4ift/lib 'e guardan los cambios y se actualiKan las librer as: !#config )v ,na veK instalada la voK de !epstral hay que compilar y instalar el modulo para $steris%: c# <usr<src wget 2ttp%<<[Link]<t/p<appIswift)[Link] se descomprime: tar )1f appIswift)[Link] 'e entra en la carpeta: c# appIswift)1.6.2 'e compila e instala: /ake /ake insta!! 'e reinicia $steris%: <etc<init.#<asterisk restart y se averiguas que el modulo est5 cargado: asterisk )rvvvvvvvvvvv !LI" /o#u!e s2ow !ike appIswift odule (escription ,se Count app+[Link] Cepstral &Eift 22& #pplication 6 1 module loaded La sinopsis del comando

0?2

!LI" core s2ow app!ication swift HL *nfo a9out application J&EiftK L=&Bnopsis? &pea4 text through &Eift text-to-speech engine. =(escription? &Bntax' &Eift0text=Utimeout in msUmaximum digits?1 Example' &Eift0)ello ;orldU:666U:1 L : second delaB 9etEeen : digits 2his application operates in tEo modes. One is processing text-to-speech Ehile listening for (2 F and the other Gust processes the text-to-speech Ehile ignoring (2 F entirelB. ,nless the timeout and maximum digits options are <O2) specified8 the application Eill automaticallB ignore (2 F. 3eturns -1 on hangup or 6 otherEise. 'e sale de la consola de $steris%: !LI" ;uit )n la carpeta donde est4n los archivos de configuracin de $steris% se habr4 creado un nuevo archivo: s3ift1conf1 8ay que modificarlo para terminar la integracin de !epstral en $steris%: nano <etc<asterisk<[Link] :general< buffer_siFe=?88%8 goto_exten=yes voi)e= arta->-'F 'e guardan los cambios y se actualiKa $steris%: <etc<init.#<asterisk restart Aara probar la instalacin/ hay que crear algunas lineas en en el dialplan/ contexto internas: nano <etc<asterisk<[Link] exten => ??35#5Ans4erAD exten => ??35n5Playba)-A4el)omeD exten => ??35n5N4iftA!n el )entro de )omuni)a)iones de RoFtoRoi)e* !spere mientras lo )one)tamos )on una operadoraD exten => ??35n5^aitA2D exten => ??35n5'angup 'e actualiKa el dialplan:

0??

asterisk )rvvvvvvvv !LI" #ia!p!an re!oa# .esde un softphone se marca el numero 99I1

0?C

Capitu!o V'''
Cone1iones entre servi#ores Asterisk
C.1 Conectar #os servi#ores Asterisk con e! protoco!o '+ 8ay dos servidores $steris%/ $ y B/ y se quieren conectar entre ellos usando el protocolo 'IA para llamar desde $ las extensiones de B y desde B las extensiones de $S adem4s en el servidor $ est4 configurado un proveedor de llamadas JoIA para !olombia y desde B se quiere redirigir todas las llamadas para !olombia hacia ese proveedor1 Las extensiones del servidor $ y del servidor B no pueden ser iguales porque sino no ser a posible transferir las llamadas de un servidor a otro1 )n este escenario en el servidor $ las extensiones son de ? cifras y empieKan por 0/ en el servidor B son de ? cifras y empieKan por ?1 ervi#or A 0vozco/3 nano <etc<asterisk<[Link] 'e aade: register => voF)om6)ontrasenaGsip*voFtovoi)e*net/voFnet :voFnet< type=friend se)ret=)ontraseHa )ontext=phones Jualify=yes host=dynami) language=es disallo4=all allo4=gsm allo4=ula4 allo4=ala4 !on la l nea de register/ se conecta el servidor voKcom al servidor voKnet1 !on las l neas que est4n despu5s de la etiqueta TvoKnetU se define una extensin 'IA que ser4 aquella usada por el servidor B para conectarse al servidor $1 ervi#or 6 0voznet3 nano <etc<asterisk<[Link] 'e aade:: register => voFnet6)ontrasenaGsip*voFtovoi)e*)om/voF)om :voF)om<

type=friend se)ret=)ontraseHa )ontext=phones host=dynami) language=es Jualify=yes disallo4=all allo4=gsm allo4=ula4 allo4=ala4 $hora que los dos servidores est4n configurados hay que reiniciarlos1 )n los dos se escribe el comando: <etc<init.#<asterisk restart .esde la consola se averigua que haya conexin entre los dos servidores: para el servidor $ EvoKcomF: !LI" sip s2ow registr* [Link]':666 voMcom 16: 3egistered !LI" sip s2ow peers [Link] 6C.18.186.262 ( :666 O> 0"5 ms1 para el servidor B EvoKnetF !LI" sip s2ow registr* [Link]':666 - voMnet 16: 3egistered !LI" sip s2ow peers [Link] [email protected] ( :666 O> 0"5 ms1 $hora lo Dnico que hace falta es modificar el archivo extensions1conf de ambos servidores1 ervi#or A )n el contexto internas Epara las llamadas a extensiones del servidor BF se aade: exten => _/@@@5#5NoOpAD exten => _/@@@5n51ialAN(P/voFnet/B+!@C!N05%3D exten => _/@@@5n5'angupAD !on estas l neas se configura $steris% para que todas las llamadas con destino las extensiones cuyo 0?G on8 1: (ec 2668 16'66'"2 on8 1: (ec 2668 6@':C'"@

numero empiece por ? y sea de ? cifras sean redirigidas hacia voKnet Eservidor BF ervi#or 6 )n el contexto internas Epara las llamadas a extensiones del servidor $F se aade: exten => _#@@@5#5NoOpAD exten => _#@@@5n51ialAN(P/voF)om/B+!@C!N05%3D exten => _#@@@5n5'angupAD Aara las llamadas a !olombia Een el contexto externasF se pone: exten => _338;*5#51ialAN(P/voF)om/B+!@C!N05%3D exten => _338;*5n5'angup !on estas dos l nea se define que todas las llamadas para !olombia sean direccionadas hacia al servidor $ $ctualiKamos la configuracin en los dos servidores: asterisk )rvvvvvvvvvvvvvvv !LI" #ia!p!an re!oa# )sta configuracin es una buena solucin si no tenemos muchos servidores $steris% que conectar entre ellos1 )n caso contrario es m4s conveniente usar el protocolo .,+.i que se ver4 en el p4rrafo ;12 C.2 Conectar #os ervi#or Asterisk con e! protoco!o 'AX2 )n este p4rrafo se mostrar4 como conectar dos servidor $steris% a trav5s del protocolo I$<71 La venta#a de I$<7 est4 en su caracter stica/ llamada trun%ing/ que utiliKa el mismo encabeKado EheaderF para el env o del audio de todas las llamadas1 .e esta forma cuando hay un numero considerable de llamadas que est5n pasando por el trun%/ hay un notable ahorro de banda1 :tra venta#a es que la sealiKacin y los datos audio/video pasan por el mismo puerto E,.A ?C9>F/ anulando en la practica los t picos problemas de +$= que NpadeceO el protocolo 'IA1 'e usar4n dos JA' alquilados con la empresa Linode1 )s importante que los dos est5n en el mismo centro de datos porque de esta forma hay la posibilidad de conectarlos como si estuvieran en la misma red local1 Los datos que pasan a trav5s de la L$+ no vienen contabiliKados para el calculo del consumo de banda1 .esde la pagina de administracin de Linode se ver4n los JA' alquilados:

0?;

)s importante que en NlocationO apareKca el mismo centro de datos Een este e#emplo .allasF1 'e selecciona el primer JA' y se va al menD +et3or%1 )n private IA settings se activa la direccin IA de la red local1 $hora hay que crear una tar#eta de red virtual para la direccin IA asignada E0>7109;10?717?9F1 'e abre una conexin ssh con el JA' y se siguen estos pasos: nano <etc<s*sconfig<network)scripts<ifcfg)et20%1 'e aaden estas lineas: 1!R(C!=eth36# BOOCPQOCO=none ONBOOC=yes (PA11Q=#92*#?>*#/2*2/? N!C AN]=288*288*#2>*3 'e guardan los cambios y se vuelve a arrancar la red: service network restart !on el comando ifconfig debe aparecer:

$hora se sigue el mismo procedimiento para el segundo JA'1 $l terminar se empieKa con la configuracin de los dos servidores $steris%1 ervi#or A% Version Asterisk% 1.6.0.1H '+% 1B2.16C.1E2.2EC usuario% vozco/ E1tensiones% A000)A0BB 0?>

ervi#or 6% Version Asterisk% 1.E.26.2 '+% 1B2.16C.1E2.2E6 usuario% vozorg E1tensiones% 6000)60BB !onfiguracin del servidor $ nano <etc<asterisk<[Link] )n el bloque register: register => voF)om6pass4ordAG#92*#?>*#/2*2/? )l usuario: :voForg< type=friend host=dynami) trun-=yes se)ret=pass4ordB )ontext=phones deny=3*3*3*3/3*3*3*3 permit=#92*#?>*#/2*2/?/288*288*288*288 Jualify=yes nano <etc<asterisk<[Link] en el contexto internas: :internas< exten => _?3@@5#51ialA(A@2/voForg/B+!@C!N0D exten => _?3@@5n5'angup asterisk ,rvvvvvvvvvvvvvvv !LI" ia12 re!oa# !LI" #ia!p!an re!oa# 'ervidor B: nano <etc<asterisk<[Link] )n el bloque register: register => voForg6pass4ordBG#92*#?>*#/2*2/> 0CI

)l usuario: :voF)om< type=friend host=dynami) trun-=yes se)ret=pass4ordA )ontext=phones deny=3*3*3*3/3*3*3*3 permit=#92*#?>*#/2*2/>/288*288*288*288 Jualify=yes nano <etc<asterisk<[Link] en nuestro contexto internas: :internas< exten => _%3@@5#51ialA(A@2/voF)om/B+!@C!N0D exten => _%3@@5n5'angup asterisk ,rvvvvvvvvvvvvvvv !LI" ia12 re!oa# !LI" #ia!p!an re!oa# Va se pueden hacer pruebas llamando del servidor $ las extensiones del servidor B y viceversa1 C.A (7N(i !uando hay que conectar un numero considerable de servidores $steris% y compartir las rutas y las extensiones configuradas en cada uno de ellos/ la solucin m4s funcional es el protocolo .,+.i1 .,+.i [Link] ,niversal +umber .iscoveryF es un protocolo que permite buscar y compartir plan de llamadas entre servidores $steris%1 )sto por medio de una red AeerHtoHpeer EpuntoHaHpuntoF en la cual no existen roles fi#os de clientes y servidores/ sino que los servidores pueden asumir uno u otro rol segDn el contexto1 $ lo largo de la configuracin se puede decidir si compartir contextos ya configurados en el .ialplan Eplan de llamadasF o crear contextos nuevos donde se indican las rutas que se quieren compartir1 $unque la configuracin y puesta en marcha pueda parecer algo complicado/ con un poco de practica se ir4n aclarando las ideas y los conceptos claves1 )l puerto predefido para el protocolo .,+.i es el ?C7I ,.A1 8ay que abrirlo en el cortafuegos: nano <etc<s*sconfig<ipta$!es 0C0

en la seccion bfilter -A (NPIC -p udp -m udp --dport /823 -E ACC!PC 'e guardan los cambios y se reinicia Iptables: service ipta$!es restart )n el escenario que se presenta en este p4rrafo hay dos servidores $steris% con estas caracter sticas: ervi#or A% Version Asterisk% 1.6.0.1H '+% 1B2.16C.1E2.2EC usuario% vozco/ E1tensiones% 2000)2BBB ervi#or 6% Version Asterisk% 1.E.26.2 '+% 1B2.16C.1E2.2E6 usuario% vozorg E1tensiones% 6000)60BB Los dos servidores est4n en la misma L$+ pero pueden estar ubicados en cualquier parte del mundo1 !on la configuracin del archivo dundi1conf se definen los par4metros de conexin entre los servidores $steris% y los contextos que se van a compartir1 )n el mismo archivo se define el tipo de protocolo que los dos servidores usar4n para efectuar y recibir llamadas una veK que se haya encontrado la ruta Epuede ser I$<7/ 'IA o 8272F1 Aor ultimo se modifica el .ialplan Eplan de llamadasF para definir en los contextos configurados en dundi1conf/ cuales son las rutas o contextos que se quiere compartir1 'ervidor $ nano <etc<asterisk<#un#[Link] :general< S desde esta etiqueta empieKa la configuracin general de .,+.i department=RoFCom organiFation=RoFCom lo)ality=Nanta arta stateprov= agdalena )ountry=Colombia email=adminGservidorA*)om phone=_8;@@@@@@@@@@ S se indican los datos de la empresa y de contacto bindaddr=3*3*3*3 0C7

S direccion IA del servidor $steris% o si se de#a en I1I1I1I todos los IA disponibles en el servidor port=/823 S puerto predefinido usado por el protocolo .,+.i1 entityid=7!6716/86A/6C86?> S el &$! address de la tar#eta de red que se va a usar para la conexin )a)hetime=%?33 S cuando se env a un solicitud para conocer la disponibilidad de una ruta y se encuentra una disponible/ el resultado se guardar4 por el tiempo definido en este par4metro Een segundosF en la base de datos interna de $steris%1 ttl=%2 S=ime to Live es un numero que representa el tiempo de vida de la solicitud1 &4s alto el numero m4s nodos se alcanKar4 a consultar1 autoki!!=*es S si no se recibe una respuesta dentro de 7III ms de un servidor conectado a la red .,+.i se anular4 la solicitud1 )sto permite evitar que las solicitudes queden colgadas en algDn punto de la red1 se)retpath=dundi S el modulo pbxBdundi crea una clave que rotar4 de manera autom4tica y que se guardar4 en la base de datos interna de $steris%1 storehistory=yes S mantiene un registro de las ultimas solicitudes efectuadas con los tiempos de respuesta de cada una1 .e esta forma es posible averiguar cuales son los nodos lentos dentro de la red .,+.i :mappings< S desde esta etiqueta empieKa el mapeo de los contextos .,+.i con los contextos presentes en el servidor $steris%1 Las sintaxis para definir los contextos es: S #un#iIconte1t =Z !oca!Iconte1t8weig2t8tec28#estO8optionsPP #un#iIconte1t @ el contexto .,+.i que se quiere compartir con los dem4s nodos de la red .,+.i !oca!Iconte1t @ el contexto local definido en el plan de llamadas donde se configuran las rutas o extensiones que se quieren compartir weig2t @ el peso que damos a las rutas que compartimos1 'i son extensiones locales se pone I/ si son rutas por la cuales no tenemos una conexin directa o de alta calidad ponemos un numero m4s alto1 $l momento de hacer una solicitud si para el mismo numero requerido existen distintas rutas/ se escoger4 la ruta con menor peso tec2 @ protocolo usado para la conexin entre servidores $steris% Ese usar4 I$<7F #est @ cuando se hace una solicitud desde el servidor B y se encuentra una ruta en el 'ervidor $/ el 'ervidor $ usar4 esta destinacin para recibir la llamada1 'implificando: se crea un user en 0C2

el iax1conf del servidor $steris% $ y dest representa los paramentos para conectarse a ese user y a trav5s de la conexin recibir las llamadas del servidor B options @ son las distintas opciones que se pueden aadir por cada contexto .,+.i nounso!icite# @ llamadas de cualquier tipo que no sean solicitadas no son permitidas en esta ruta noco/unso!icit @ llamadas comerciales no solicitadas no son permitidas en esta ruta resi#entia! @ el numero es de una residencia co//ercia! @ el numero es de una empresa /o$i!e @ el numero es un celular nopartia! @ no se har4n bDsquedas por nDmeros que no sean completos

la ruta definida para el servidor $ ser4: voF)om => voF)om-lo)al535(A@25voF)om6B+N!CQ!C0G#92*#?>*#/2*2/>/B+NI B!Q0 vozco/% el contexto .,+.i que se va a compartir vozco/)!oca!: el contexto definido en el plan de llamadas que contendr4 todas las rutas que se van a compartir 'AX2: la tecnolog a usada EprotocoloF para las llamadas vozco/: usuario que se configurar4 en el el archivo iax1conf [\ EC-ET]: es la variable que contiene la clave que el modulo .,+.i crea en autom4tico y que se usar4 para autenticar el usuario voKcom 1B2.16C.1E2.2EC% direccin IA del 'ervidor $ [\N7>6E-]: la variable que contendr4 el numero que ha sido solicitado1

Aara terminar con la configuracin del archivo dundi1conf se definen los servidores $steris% con los se va a tener una conexin directa: O.E%.(%ED%AE%CE%EBP /o#e! = s*//etric 2ost = 1B2.16C.1E2.2E6 inke* = vozorg outke* = vozco/ inc!u#e = a!! per/it = vozco/ ;ua!if* = *es .E%.(%ED%AE%CE%EC% &$! address de la tar#eta de red de 'ervidor $steris% B con el que se crea la conexin /o#e!: puede ser: in$oun#% recibe solamente solicitudes out$oun#% solo efectDa solicitudes pero no las recibe s*//etric: recibe y efectDa solicitudes 2ost: direccion IA o nombre de dominio del servidor $steris% B 0C?

inke*: clave L'$ usada para autenticarse con el servidor $steris% B outke*: clave L'$ usada por el 'ervidor $steris% B para autenticarse con el 'ervidor $steris% $ inc!u#e: incluye esta conexin para todas las solicitudes efectuadas en 'ervidor $steris% $ per/it: se definen los contextos .,+.i a los que tendr4 acceso este nodo ;ua!if*: se controlar4 peridicamente que la conexin con el nodo est5 activa

'e guardan los cambios y se crea la clave L'$ para autenticar el 'ervidor $steris% B1 Aara crear la clave se usar4 una utilidad que viene con la instalacin de asteris%1 Arimero entramos en la carpeta donde se guardan las claves: c# <var<!i$<asterisk<ke*s 'e crea la clave: astgenke* )n vozco/ 2his script generates an 3&# private and pu9lic 4eB pair in !E format for use 9B #steris4. -ou Eill 9e as4ed to enter a passcode for Bour 4eB multiple times. !lease enter the same code each time. 2he resulting files Eill need to 9e moved to .var.li9.asteris4.4eBs if Bou Eant to use them8 and anB private 4eBs 0.4eB files1 Eill need to 9e initialiMed at runtime either 9B running #steris4 Eith the c-ic option8 or Eith the cinit 4eBsc command once #steris4 is running. !ress EA2E3 to continue or hC to cancel. Aresionamos la tecla env o: *enerating ''L %ey jvoKcomj: *enerating L'$ private %ey/ 0I7? bit long modulus 1111111111111111111111111111111111111YYYYYY 1111111111111YYYYYY e is 9CC2G EIx0III0F 3riting L'$ %ey _ey creation successful1 Aublic %ey: voKcom1pub Arivate %ey: voKcom1%ey 'e crear4n dos claves/ una publica y una privada1 La publica se copia en el 'ervidor $steris% B: scp vozco/.pu$ root&1B2.16C.1E2.2E6%<var<!i$<asterisk<ke*s $hora se puede aadir el usuario voKcom al archivo iax1conf 0CC

nano <etc<asterisk<[Link] 'e aaden las siguientes lineas en el bloque dedicado a la configuracin de las extensiones: :voF)om< type=user dbse)ret=dundi/se)ret )ontext=voF)om-lo)al Jualify=yes disallo4=all allo4=ula4 allo4=ala4 Importante definir el par4metro context con el valor del contexto que hemos definido en nuestra ruta EvoKcomHlocalF )l ultimo archivo que hay que modificar es el plan de llamadas: nano <etc<asterisk<[Link] 'e crea el contexto voKcomHlocal y se incluyen en 5l las rutas que se quieren compartir Elas extensiones locales y una ruta para las llamadas a !olombiaF :voF)om-lo)al< exten => _338;*5#51ialAN(P/Eustvoip/B+!@C!N0D exten => _2@@@5#51ialAN(P/B+!@C!N05#8D exten => _2@@@5n5"oto(fAB:.B+1(A$NCACIN0. = .BINY.<Sbusy6unavailD exten => _2@@@5nAbusyD5Roi)emailAB+!@C!N0Gdefault5bD exten => _2@@@5n5'angup exten => _2@@@5nAunavailD5Roi)emailAB+!@C!N0Gdefault5uD exten => _2@@@5n5'angup Aara las solicitudes remotas creamos otro contexto: :dundi-remoto< s4it)h => 1IN1i/voForg el nombre voKorg es el contexto .,+.i que luego se crear4 en el 'ervidor $steris% B $adimos el contexto dundiHremoto a la lista de contextos disponibles para la extensiones configuradas en el 'ervidor $steris% $: TphonesU include =" internas include =" externas include =" subscribe 0C9

include =" par%edcalls include =" conferencias inc!u#e =Z #un#i)re/oto 'e guardan los cambios y se continDa con la configuracin del 'ervidor $steris% B ervi#or 6 nano <etc<asterisk<#un#[Link] :general< department=RoFOrg organiFation=RoFOrg lo)ality=Nanta arta stateprov= agdalena )ountry=Colombia email=adminGservidorB*)om phone=_8;@@@@@@@@ bindaddr=3*3*3*3 port=/823 entityid=7!6716/86A/6C/6/> )a)hetime=%?33 ttl=%2 auto-ill=yes se)retpath=dundi storehistory=yes :mappings< voForg => voForg-lo)al535(A@25voForg6B+N!CQ!C0G#92*#?>*#/2*2/?/B+NI B!Q0 :7!6716/86A/6C86?>< model = symmetri) host = #92*#?>*#/2*2/> in-ey = voF)om out-ey = voForg in)lude = all permit = voForg Jualify = yes 'e crea la clave L'$: c# <var<!i$<asterisk<ke*s astgenke* )n vozorg 2his script generates an 3&# private and pu9lic 4eB pair 0CG

in !E format for use 9B #steris4. -ou Eill 9e as4ed to enter a passcode for Bour 4eB multiple times. !lease enter the same code each time. 2he resulting files Eill need to 9e moved to .var.li9.asteris4.4eBs if Bou Eant to use them8 and anB private 4eBs 0.4eB files1 Eill need to 9e initialiMed at runtime either 9B running #steris4 Eith the c-ic option8 or Eith the cinit 4eBsc command once #steris4 is running. !ress EA2E3 to continue or hC to cancel. Aresionamos la tecla env o: *enerating ''L %ey jvoKorgj: *enerating L'$ private %ey/ 0I7? bit long modulus 1111111111111111111111111111111111111YYYYYY 1111111111111YYYYYY e is 9CC2G EIx0III0F 3riting L'$ %ey _ey creation successful1 Aublic %ey: voKorg1pub Arivate %ey: voKorg1%ey 'e copia en el 'ervidor $steris% $ scp [Link]$ root&1B2.16C.1E2.2EC%<var<!i$<asterisk<ke*s nano <etc<asterisk<[Link] OvozorgP t*pe=user ;ua!if*=*es #$secret=#un#i<secret conte1t=vozorg)!oca! #isa!!ow=a!! a!!ow=u!aw a!!ow=a!aw Aara terminar se modifica el plan de llamadas: nano <etc<asterisk<[Link] :voForg-lo)al< exten => _?3@@5#51ialAN(P/B+!@C!N0D :dundi-remoto< s4it)h => 1IN1i/voF)om 0C;

'e incluye el contexto dundiHremoto de forma que sea accesible a las extensiones ,na veK terminada la configuracin del 'ervidor $steris% B en ambos se reinicia la AB<: <etc<init.#<asterisk restart 'e entra en la consola del servidor $steris% $: asterisk )rvvvvvvvvvvvv miramos la lista de comandos disponibles para .,+.i !LI" 2e!p #un#i dundi flush =stats? Flush (,A(i cache dundi loo4up $oo4up a num9er in (,A(i dundi precache !recache a num9er in (,A(i dundi HuerB auerB a (,A(i E*( dundi set de9ug VonUoffW Ena9le.(isa9le (,A(i de9ugging dundi shoE entitBid (isplaB Dlo9al EntitB *( dundi shoE mappings &hoE (,A(i mappings dundi shoE peers =registeredUi &hoE defined (,A(i peers dundi shoE peer &hoE info on a specific (,A(i peer dundi shoE precache &hoE (,A(i precache dundi shoE reHuests &hoE (,A(i reHuests dundi shoE trans &hoE active (,A(i transactions dundi store historB VonUoffW Ena9le.(isa9le (,A(i historic records Arimero se controla que haya conexin entre los dos servidores: !LI" #un#i s2ow peers E'( fe%f#%ED%aE%cE%EC !on el comando: !LI" #ata$ase s2ow .[Link] .[Link] ' Hotae\Pp1<2DC&@BoiMl!#LLe"o9D91atv4,eciisCr):C#LL ' 12:@21256" Fost >o#e! AvgTi/e tatus 1B2.16C.1E2.2E6 0 3 *//etric 7navai! 4` 01 /s3

aparecer4 la clave creada por el modulo pbxBdundi y el tiempo que falta para que caduque1 $hora se puede hacer la primera consulta para controlar que efectivamente las rutas se est4n compartiendo:

0C>

!LI" #un#i !ookup 60BB&vozorg 1. 6 *#[Link]'c6vu-91E-(3o2aPn 8("FgLL71@[Link].66@@ 0EI*&2&UC#A #2C)1 from fe'fd'5:'a5'c5'5@8 expires in 2@82 s (,A(i loo4up completed in 6 ms )n el servidor $steris% B las extensiones compartidas van de 9III a 9I>> y efectivamente enviando la solicitud la respuesta es que la extensin existe1 )n el comando ademas de la extensin va indicado el contexto como lo hemos definido en el bloque mappings del dundi1conf del servidor $steris% B1 'i se env a una solicitud para una ruta que no existe la respuesta ser4: !LI" #un#i !ookup 6100&vozorg (,A(i loo4up returned no results. (,A(i loo4up completed in 2 ms 'e hace otra solicitud de prueba desde el 'ervidor $steris% B !LI" #un#i !ookup 2100&vozco/ 6 *#[Link]'"o9D91atv4,eciisCr):C#LL71@[Link].2166 0EI*&2&1 from fe'fd'5:'a5'c:'6@8 expires in 2625 s (,A(i loo4up completed in 6 ms 'olicitud para un numero colombiano: !LI" #un#i !ookup 00DH12AED6HCB&vozco/ 1. 6 *#[Link]'"o9D91atv4,eciisCr):C#LL71@[Link].66:C12"5:6C8@ 0EI*&2&U #2C) O3EUC#A #2C)1 from fe'fd'5:'a5'c:'6@8 expires in "666 s (,A(i loo4up completed in "@ ms Aara terminar las pruebas se conecta un softphone al servidor $steris% B y se intenta llamar la extesion 70II Eque es presente en el servidor $steris% $F )sto es lo que aparece en la consola de $steris% del servidor $: #ccepting #,2)EA2*C#2E( call from 1@[Link]' Z reHuested format L ulaE8 Z reHuested prefs L 0ulaEUalaE18 Z actual format L ulaE8 Z host prefs L 0ulaEUalaE18 Z prioritB L mine -- Executing =21667voMcom-local'1? (ial0/*#[Link]-121"/8 /&*!.216681:/1 in neE stac4 LL ,sing &*! 32! 2O& 9its 185 09I 1.

LL ,sing &*! 32! Co& mar4 : LL ,sing &*! P32! 2O& 9its 1"6 LL ,sing &*! P32! Co& mar4 5 LL ,sing ,(!2$ 2O& 9its 185 LL ,sing ,(!2$ Co& mar4 : =Aov 26 66'66'"@? ;#3A*AD=668C?' app+dial.c'15@@ dial+exec+full' ,na9le to create channel of tBpe c&*!c 0cause 26 - ,n4noEn1 LL EverBone is [Link] at this time 01'6.6.11 -- Executing =21667voMcom-local'2? Doto*f0/*#[Link]-121"/8 /6d9usB'unavail/1 in neE stac4 -- Doto 0voMcom-local821668:1 -- Executing =21667voMcom-local':? Poice ail0/*#[Link]-121"/8 /21667default8u/1 in neE stac4 La llamada llega desde la IA del servidor $steris% B y va al contexto voKcomHlocal Elas rutas compartidasF1 !omo la extensin 70II no est4 disponible la llamada entra el contestador1 Las potencialidades del protocolo .,+.i son pr4cticamente infinitas y este p4rrafo se han presentado las herramientas b4sicas para empeKar a utiliKar1

090

Capitu!o 'X
4penfire * Asterisk
B.1 'nsta!aci"n #e 4penfire :penfire es un servidor #abberCI1 !on :penfire instalado se tendr4 un nuestro servidor de mensa#er a instant4nea sin tener que acudir a servicios de terceros1 )sto implica tener una red de mensa#er a instant4nea segura/ f4cilmente mane#able y segura gracias al uso del protocolo =L' C01 eAorque :penfiref1 )ntre tantos servidores con protocolo <&&A :penfire se destaca por la sencilleK de la instalacin/ la administracin desde una p4gina Meb/ su multiplicidad de funciones y la posibilidad de ser integrado con $steris%1 :penfire es escrito en #ava y/ para que funcione/ hay que instalar la Q._ EQava ') .evelopment _itF o instalar Ela opcin que se usar4F la versin :pen'ource del #ava development _it *u/ insta!! Rava)1.6.0)openR#kL =erminada la instalacin se controla la versin instalada: Rava )version Gava version /1.6.6/ OpenF(> 3untime Environment 09uild 1.6.6-96@1 OpenF(> Client P 09uild 1.6.6-96@8 mixed mode1 'e descarga el servidor #abber :penfire: c# <opt wget 2ttp%<<[Link]!ti/[Link]<#own!oa# erv!et^fi!ena/e=openfire<[Link] se descomprime tar )1f [Link] 'e entra en la carpeta bin c# <opt<openfire<$in 'e modifica el script de inicio modificando esta linea: (NNCA$$/P_PARA_'O !_OR!QQ(1!=

CI Ta$$er es un protocolo libre para mensa#er a instant4nea/ basado en el est4ndar <&L y gestionado por X>++ tan#ar#s .oun#ation1 EMi%ipediaF C0 ecure ockets @a*er HArotocolo de !apa de !onexin 'eguraH E @F y Transport @a*er ecurit* H'eguridad de la !apa de =ransporteH ET@ F/ su sucesor/ son protocolos criptogr4ficos que proporcionan comunicaciones seguras por una red/ comDnmente Internet1 EMi%ipediaF

para que quede: (NNCA$$/P_PARA_'O !_OR!QQ(1!=/usr/lib/Evm/Eava-#*?*3-openEd--#*?*3*3 y se inicia: .<openfire start 'e averigua que est5 corriendo .<openfire status 'i aparece 2he daemon is running. )l servidor est4 funcionando1 $hora hay que configurarlo1 :penfire para registrar los datos puede utiliKar una base de datos interna o externa1 )n este caso se usar4 &y'(L1 'e crea la base de datos en &y'(L /*s;!a#/in create openfire )u root )psesa/o 'e entra en el cliente de mysql /*s;! )u root )psesa/o 'e crea un usuario y se le otorgan todos los permisos para mane#ar la base de datos :penfire mysql" G-ANT A@@ +-'V'@EGE 4N openfire.L T4 openfire '(ENT'.'E( 6M Jsesa/oJK mysql" G-ANT A@@ +-'V'@EGE 4N openfire.L T4 JopenfireJ&J!oca!2ostJ '(ENT'.'E( 6M Jsesa/oJK auerB O>8 6 roEs affected 06.61 sec1 mysql" f!us2 privi!egesK auerB O>8 6 roEs affected 06.66 sec1 mysql" ;uit <Be sesamo es la contrasea del usuario openfire 092

$hora se importan las tablas para la base de datos /*s;! openfire _ <opt<openfire<resources<#ata$ase<openfireI/*s;!.s;! )u root )psesa/o Aara que openfire sea accesible desde afuera de la red local hay que abrir unos puertos en el cortafuegos1 nano <etc<s*sconfig<ipta$!es )n la seccin bfilter se aaden estas lineas: -A (NPIC -p t)p -m t)p --dport 82226822% -E ACC!PC -A (NPIC -p t)p -m t)p --dport 82?9 -E ACC!PC -A (NPIC -p t)p -m t)p --dport 82;8 -E ACC!PC -A (NPIC -p t)p -m t)p --dport ;3;3 -E ACC!PC -A (NPIC -p t)p -m t)p --dport 8//% -E ACC!PC -A (NPIC -p t)p -m t)p --dport 9393 -E ACC!PC -A (NPIC -p t)p -m t)p --dport 939# -E ACC!PC 'e guardan los cambios y se reinicia iptables: service ipta$!es restart ,na veK configurado el fire3all se accede a la pagina de configuracin de :penfire1 )n la barra de la direcciones de nuestro navegador se escribe: 2ttp%<</ioipo#o/inio%B0B0 en lugar de mioipodominio se pone la direccin IA del servidor Linux o/ si se tiene un dominio registrado/ el nombre E)#1 3331e#emplo1comF aparecer4 una pagina de configuracin:

09?

se elige el idioma 'e configura el nombre del dominio o la direccin IA:

'e elige el tipo de base de datos que se utiliKar4:

09C

'e configura el acceso a &y'(L y la base de datos:

)n seteos de perfil se elige la opcin Npor defectoO

'e configura el correo electrnico y la cuenta del administrador: 099

)l servidor est4 listo para funcionar1

$ntes de entrar en la p4gina de administracin de :penfire hay que parar y volver a arrancar el servidor: <opt<openfire<$in<openfire stop <opt<openfire<$in<openfire start

09G

$hora se puede configurar el servidorS crear usuarios/ instalar plugins/ crear conferencias y otras cuantas funciones1 Aara probar la conexin el cliente predefinido de :penfire es 'par%C7 Een mi caso para Mindo3sF1 8ay que descargarlo/ instalarlo y abrirlo1 'e pone come usuario admin/ que es el que se ha creado a lo largo de la configuracin de :penfire/ y se presiona ingresar1

C7 'par% !lient

09;

'e pueden configurar m4s usuarios y grupos desde la pagina de administracin 'i se quiere iniciar :penfire en autom4tico: c# <opt<openfire<$in<e1tra nano openfire# 'e cambian estas tres lineas export OP!N7(Q!_'O !=/opt/openfire export OP!N7(Q!_IN!Q=root C 1=L*/openfire B#L 'e guardan los cambios y se vuelve e#ecutable el archivo: c2/o# :1 openfire# 09>

'e copia en la carpeta de los demonios: cp openfire# <etc<init.#<openfire# y se aade a los servicios: c2kconfig ))a## openfire# c2kconfig openfire# on Aara averiguar si :penfire arranca en autom4tico se hace un un reboot de la maquina Linux1 re$oot B.2 'nsta!ar e! +!ugin '++2one en 4penfire )n este p4rrafo se ver4 come instalar el plugin 'IAAhone para :penfire1 )ste plugin permite asociar a un usuario registrado en :penfire una cuenta 'IA o extensin $steris%1 Luego se instala el mismo plugin en el cliente 'par% y desde 5ste se podr4n efectuar llamadas usando el dialplan configurado en $steris%1 .esde un navegador Meb entramos en la pagina de administracin1

)n el menD Alugins y se escoge $vailable Alugins en el menD de la iKquierda1 .ependiendo de los plugins que ya se instalaron/ aparecer4 una lista parecida a esta:

0GI

'e presionba el botn a la derecha del plugin para instalarlo1 'e presiona el botn 'erver en la barra del menD1 )n la segunda l nea del menD habr4 un nuevo menD: Ahone1 Lo presionamos para entrar en el menD de configuracin del plugin1

'e escoge N$dd ne3 Ahone &appingO y se rellenan los campos:

0G0

X>>+ userna/e : el nombre del usuario openfire '+ userna/e : el numero o nombre de la extensin Aut2orization 7serna/e : el numero o nombre de la extensin (isp!a* +2one Nu/$er : el numero que aparecer4 al llamado +asswor#: la contrasea asociada a la extensin erver: el nombre del dominio o IA de nuestro servidor $steris% 4ut$oun# +ro1* : si usamos un proxy para conectarnos al servidor $steris% hay que indicarlo aqu sino se pone la direccin IA o el nombre de dominio del servidor $steris% Voice >ai! Nu/$er : si en extension1conf hemos configurado una extensin para entrar en nuestro contestador tenemos que indicarlo aqu Ee#emplo >GF

'e presionas el botn !reate para guardar la configuracin1 'e repite la misma operacin para todos los usuarios que se quiere asociar a una extensin de $steris%1 ,na veK terminado hay que configurar el cliente 'par% que es el Dnico que funciona con este plugin1 'e abre el cliente 'par% y se abre una conexin con el nombre de usuario configurado arriba Een este caso adminF1 )n la versin Linux de 'par% el plugin se instala correctamente solamente si el cliente y el plugin se compilan desde las fuentesC21 )n el menD del cliente 'par% se elige la voK Alugins y en Alugins disponibles Ahone client y se instala

C2 'ipAhone para Linux

0G7

0G2

!uando se termina de descargar el plugin/ se cierra el cliente y se vuelve a iniciar1 )n el menD acciones se elige Ahone )nabled

0G?

$parecer4 el cliente 'IA en una nueva l nea del menD de 'par% y se podr4 empeKar a usarlo para hacer llamadas1

0GC

'i se quiere usar un Dnico programa para chatear/ monitorear nuestros servidores $steris% y adem4s hacer llamadas JoIA esta es una buena solucin1 B.A E! +!ugin Asterisk)'> $steris%HI& permite asociar a cada usuario :penfire una extensin 'IA configurada en sip1conf1 .e este modo cuando esa extensin est4 hablando/ en el cliente #abber 'par% el estado del usuario :penfire asociado con la extensin cambiar4 de disponible a Non the phoneO1 Lequisitos: haber instalado openfire con una base de datos externa E&ysqlF haber puesto el par4metro callevents=yes en la parte general del archivo sip1conf haber configurado un usuario en el archivo manager1conf

'e modifica el archivo manager1conf: 0G9

nano <etc<asterisk</[Link] La parte general debe aparecer as : :general< enabled = yes 4ebenabled = yes port = 83%> httptimeout = ?3 bindaddr = 3*3*3*3 allo4multiplelogin = yes display)onne)ts = yes timestampevents = yes luego se aade un nuevo usuario: :openfire< se)ret = sesamo display)onne)ts = yes read = system5)all5log5verbose5agent5user5)onfig5dtmf5reporting5)dr5dialplan 4rite = system5)all5agent5user5)onfig5)ommand5reporting5originate 'e actualiKa la configuracin de $steris%: <etc<init.#<asterisk re!oa# )n el caso que el servidor #abber y el servidor $steris% est5n en dos servidores distintos/ en en la configuracin del cortafuegos/ hay que abrir el puerto CI2; =!A1 nano <etc<s*sconfig<ipta$!es )n la seccion bfilter se aade esta l nea -A (NPIC -p t)pbdport 83%> -E ACC!PC 'e guardan los cambios y se reinicia IAtables: service ipta$!es restart $hora el archivo sip1conf nano <etc<asterisk<[Link] 'e modifica la siguiente l nea en la parte general: ca!!events=*es

0GG

.esde la consola de $steris%: asterisk )rvvvvvvvvvvvvvv !LI" sip re!oa# 'e instala el plugin en :penfire1 .esde un navegador Meb se abre la pagina de administracin de :penfire y se va al menD Alugins1 Aresionamos el menD N$vailable AluginsO

Aara instalarlo se presiona el botn que aparece al fondo de la l nea del plugin1 ,na veK instalado en el barra de menD una nueva voK/ $steris% I&1 'e escoge el menD $steris%HI& y luego *eneral 'ettings1 'e configura siguiendo las pautas indicadas en la imagen que sigue:

0G;

'e presiona el botn '$J)1 )n la misma ventana se escoge el menD $dd 'erver y se configura la conexin al $steris% &anager

'e presiona el botn !reate 'erver1 La bolita verde a la iKquierda indica che hay conexin con $steris%1

0G>

Aara averiguar que efectivamente el usuario :penfire est5 conectado al $steris% &anager se entra en la consola de $steris%: asterisk )rvvvvvvvvvvvvvv se digita el comando: !LI" /anager s2ow connecte# ,sername *! #ddress &tart Elapsed File(es )ttpCnt 3ead ;rite openfire 6C.18.186.262 122@CC6886 "5@ "6 6 656C@ 658:1 1 users connected. 'e guardan los cambios y se entra en el menu Ahone &appings:

'e configuran todos los usuarios de :penfire que se quiere asociar con una extensin 'IA presente en el servidor $steris%1 .esde el cliente 'par% se abre una conexin con el usuario admin que se ha configurado en Ahone &appings1 !uando la extensin 7III est5 hablando/ el estado de del usuario admin cambiar4 como aparece en la imagen que sigue:

0;I

)n el caso de otro usuario:

0;0

B.E Asterisk co/o c!iente en 4penfire La configuracin de $steris% como cliente #abber en :penfire es parecida a la de *oogle=al% Ep4rrafo 0I17F1 Aara que el modulo resB#abber funcione/ hay que asegurarse de haber seguido todos los pasos necesarios contenidos en el p4rrafo 0121 'e empieKa con la modifica del archivo #abber1conf presente en la carpeta /etc/asteris%1 nano <etc<asterisk<Ra$$[Link] :general< debug=yes S activamos el debug autoprune=yes 0;7

S remueve autom4ticamente los usuarios de la lista de amigos autoregister=yes S registra autom4ticamente los nuevos usuarios en lista de amigos :voF)om< S etiqueta que define la conexin Eimportante para las funciones Qabberstatus y Qabbersend de $steris%F type=)lient S $steris% actuar4 como un cliente Elas opciones son cliente/ componente y serverF serverhost=voFtovoi)e*net S el nombre de dominio o IA del servidor :penfire username=voF)omGvoFtovoi)e*net/openfire S +ombre del usuario :penfire del servidor asteris% se)ret=)ontraseHa S la contrasea priority=#3 S el nivel de prioridad que tiene en cliente en caso de conflictos Ee#: dos conexiones simultaneas del mismo usuarioF port=8222 S el puerto =!A del servidor :penfire usado para conectarse usetls=yes S ,sar el protocolo =L' usesasl=yes S ,sar el protocolo '$'L buddy=voFnetGvoFtovoi)e*net S la lista de amigos/ uno por l nea buddy=adminGvoFtovoi)e*net buddy=fulanoGvoFtovoi)e*net statusmessage=Asteris- server S un mensa#e personaliKado del usuario timeout=#33 S 'e guardan los cambios y antes de actualiKar la configuracin de $steris% se configurar este usuario en :penfire1 .esde un navegador Meb se entra en la pagina de adminsitracion de :pnefire

0;2

)n la barra de menD se escoge N,suarios/*ruposO y luego en el menD vertical en la iKquierda Ncrear nuevo usuarioO

'e rellena el formulario y luego se presiona el botn crear usuario1 $hora se puede actualiKar la configuracin de $steris%: <etc<init.#<asterisk re!oa# 'e averigua el resultado desde la consola de $steris% asterisk )rvvvvvvvvvvvv

0;?

!LI" Ra$$er s2ow connecte# Fa99er ,sers and their status' ,ser' [Link] j Connected Aara ver la lista de amigos: !LI" Ra$$er s2ow $u##ies Fa99er 9uddB lists Client' [Link] <uddB' [Link] 3esource' Aone <uddB' [Link] 3esource' Aone <uddB' [Link] 3esource' openfire node' http'..[Link] version' asteris4-xmpp B.D Conectar #os servi#ores 4penfire 'i se conectan dos servidores :penfire entre ellos/ los usuarios de uno podr4n agregar en su lista de amigos usuarios del otro servidor1 Aara lograr este tipo de comportamiento hay que modificar la configuracin en los dos servidor: Los dos servidores est4n instalados en dos computadores de la misma L$+: :penfire $ IA: 0>7109;1010II :penfire B IA: 0>7109;1017II Arimero: si hay un cortafuegos por el medio/ hay que abrir el puerto C79> =!A en ambos 'egundo: se entra en la pagina de administracin del servidor $ y se escoge el menD 'erver " 'erver 'ettings " 'erver to 'erver

'e configura la p4gina como sigue:

0;C

Luego se pasa al menD 'erver " 'erver settings " 'ecurity settings y ba#o el cuadro 'erver !onnection 'ecurity se selecciona la casilla:

0;9

'e guardan los cambios y se sigue el mismo procedimiento en el servidor B indicando la IA: 0>7109;1010II en la Mhite List 'e guardan los cambios y se verifica que la conexin est5 activa: 'e entra en el menD 'essions " 'erver 'ession donde deber a aparecer:

'i no aparece ninguna conexin se puede usar el programa )e$net para averiguar si el puerto C79> =!A est5 efectivamente abierto1 .esde la consola de Linux del servidor $ se escribe: te!net telnet" o )a 1B2.16C.1.200 D26B 2rBing 1@[Link]... Connected to 1@[Link] Escape character is Jh?K. M/stream6stream>Connection closed 9B foreign host. 'i aparece la expresin en negrita todo est4 bien1 'e abre el cliente 'par%/ se abre una conexin con un nombre de usuario del 'ervidor :penfire $ y se aade a la lista de amigos un usuario registrado en el servidor :penfire B:

0;G

Aara tres o m4s servidores :penfire/ que queremos conectar entre ellos/ se sigue el mismo procedimiento1 B.6 4penfire Connection >anager 'i hay que mane#ar un numero considerable de usuarios Em4s de 0III en linea a la veKF/ hay que recurrir al !onnection &anager1 )ste programa se configura delante del servidor :penfire y gestiona las conexiones y las autenticaciones de los usuarios1 'e pueden instalar uno o m4s !onnection &anager segDn el numero de usuarios1 !ada !onnection &anager es capaK de mane#ar cinco mil usuarios1 )l esquema de funcionamiento es el que aparece en la imagen aqu aba#o:

0;;

)n ese e#emplo hay tres !onnection &anagers instalados que reciben las registraciones de los usuarios y a su veK est4n conectados con el servidor :penfire1 'e descarga el programa: c# <opt
wget 2ttp%<<[Link]!ti/[Link]<#own!oa# erv!et^fi!ena/e=connection/anager<connectionI/[Link]

'e descomprime: tar ,1f connectionI/[Link] $hora solo falta configurar el programa1 'e entra en la carpeta de configuracin y se modifica el archivo manager1xml c# <opt<connectionI/anager<conf nano /anager.1/! Las l neas que hay que modificar son: #o/ain% el nombre de dominio del servidor :penfire Ee#: miodominio1orgF 2ostna/e% la direccin IA del servidor :penfire port% el puerto configurado en el servidor :penfire para aceptar las conexiones del !onnection &anager EC797 predefinidoF passwor#% la contrasea que se ha definido en el servidor :penfire para aceptar las conexiones del !onnection &anager na/e% un nombre que queremos asignar a el !onnection &anager Emuy Dtil si se tiene planeado instalar m4s de unoF1 interface% direccin IA o nombre de dominio donde el !onnection &anager aceptar4 las conexiones1

'e guardan los cambios1 $hora hay que abrir los puertos C777 y C772 en el cortafuegos del computador donde est5 instalado el !onnection &anager1 Aara terminar se instala el NscriptO para arrancar !onnection &anager en autom4tico: c# <opt<connectionI/anager<$in<e1tra nano c/anager# 0;>

'e modifican las siguientes l neas: export C ANA"!Q_'O !=/opt/)onne)tion_manager export C ANA"!Q_IN!Q=root C 1=.*/)manager*sh B#. 'e guardan los cambios y se termina: )p )managerd /et)/init*d/ )hmod _x /et)/init*d/)managerd )h-)onfig cadd )managerd )h-)onfig )managerd on $ntes de arrancar el !onnection &anager hay que modificar la configuracin del servidor :penfire1 .esde la pagina di administracin del servidor :penfire ba#o el menD N'erver settingsO se elige N!onnection &anagerO1 )n la pagina que aparece se activa el servicio/ se escoge el puerto y se define una contrasea1

'e presiona el botn N'ave 'ettingsO1 'e abre el puerto C797 =!A en el cortafuegos1 $hora se puede arrancar el !onnection &anager1 )n el servidor Linux donde se instal se escribe: <etc<init.#<c/anager# start 'e averigua que est5 corriendo: <etc<init.#<c/anager# status running pid is :C5C 0>I

Connection

anager ".6." =Fe9 68 2616 :'62'1C # ?

y en la pagina de administracin de :penfire se verifica que est4 conectado:

.esde un cliente <&AA se abre una conexin usando como direccin IA o nombre de .ominio la que se ha configurado en la linea NinterfaceO del archivo manager1xml

0>0

Capitu!o X
+otpourri
10.1 .uncIo#$[Link] ) 4(6C * 6ase #e #atos )n este p4rrafo se ver4 como usar el conector :.B! y el archivo de configuracin de $steris% funcBodbc1conf para hacer consultas en una base de datos &y'(L y devolver los resultados al plan de llamadas1 'e crea una base de datos de prueba en &y'(L: c# <usr<src wget 2ttp%<<[Link]<t/p<ti/ec!ock.t1t /*s;! )u root )psesa/o _ ti/ec!ock.t1t La base de datos viene con dos registros insertados /*s;! )u root )psesa/o mysql" use ti/ec!ock mysql" E@ECT L .-4> usersK \----\--------\----------\----------\------------\ id U empnum U lastin U lastout U comments U \----\--------\----------\----------\------------\ U 1 U 12"5: U 66'66'66 U 66'66'66 U Fulano U U 2 U 2"5:6 U 66'66'66 U 66'66'66 U &utano U \----\--------\----------\----------\------------\ 2 roEs in set 06.66 sec1 'e asigna a un usuario los privilegios para conectarse a la base de datos: mysql" G-ANT A@@ +-'V'@EGE 4N ti/ec!ock.L T4 bti/ec!ockc&c!oca!2ostc '(ENT'.'E( 6M bsesa/ocK 'e actualiKan los privilegios: mysql" f!us2 privi!egesK 'e sale del cliente &y'(L: mysql" ;uit

$hora hay que modificar algunos archivos de $steris% para que todo funcione: nano <etc<asterisk<resIo#$[Link] e aea#en !as siguientes !9neas% :time)lo)-< enable=yes dsn=time)lo)username=time)lo)pass4ord=sesamo loguniJueid=yes pre-)onne)t=yes en el campo pass3ord se pone la contrasea configurada en &y'(L para el usuario timecloc% nano <etc<asterisk<funcIo#$[Link] se aaden las l neas: :C( !C$OC]< dsn=time)lo)readsJl=N!$!CC )omments 7QO users ^'!Q! empnum=dB+NZ$_!NCAB+AQ"#0D0d 4ritesJl=IP1AC! users N!C empnum=dB+NZ$_!NCAB+RA$#0D0d ^'!Q! empnum=dB +NZ$_!NCAB+AQ"#0D0d se continDa con: nano <etc<o#$[Link] :time)lo)-< 1es)ription = yNZ$ O1BC C( !C$OC] 1river = yNZ$ Nerver = lo)alhost Iser = time)lo)Pass4ord = sesamo 1atabase = time)lo)Port = %%3? Option = % Aara terminar falta crear la parte del dialplan que se encargar4 de hacer las consultas a la base de datos que hemos creado: nano <etc<asterisk<[Link] exten => 2225#5Ans4er exten => 2225n5^aitA2D 0>2

exten => 2225n57estivalAPor favor ingrese los 8 digitos del numero del empleado*LD exten => 2225n5QeadA! PNI 5beep58D exten => 2225n5NoOpA! PNI 6 B+! PNI 0D exten => 2225n5NetA! PNA !=B+O1BC_C( !C$OC]AB+! PNI 0D0D exten => 2225n5"oto(fAB:LB+! PNA !0fooL = KfooL<SnotfoundD exten => 2225n57estivalA!l nombre del empleado es B+! PNA !0* 'asta luego*LD exten => 2225n5NoOpA!mployee6 B+! PNA !0D exten => 2225n5'angup exten => 2225nAnotfoundD57estivalANingun empleado )orresponde al numero ingresado* 'asta luego*D exten => 2225n5'angup 'e vuelve a arrancar $steris%: <etc<init.#<asterisk re!oa# o <etc<init.#<asterisk restart -lu#o del dialplan: se contesta la llamada/ se usa un programa de s ntesis de voK E-estivalF para solicitar el llamante para que digite los C numero del empleado que est4 buscando se espera que el llamante digite una serie de C nDmeros y a trav5s de la aplicacin Lead se almacenan los digitos en una variable se consulta la base de datos para averiguar si el numero existe1 si no existe el dialplan sigue desde la etiqueta EnotfoundF si existe continDa con la linea siguiente se escuchar4 el nombre del empleado asociado a los C d gitos que se han enviado1

10.2 Asterisk * Goog!eTa!k $steris% incluye la funcionalidad de conectarse/ como cliente/ al servidor de googletal%1 ,na veK configurado $steris% como cliente *oogle=al% se podr4n recibir y efectuar llamadas de esta forma: $steris% H" *tal% *tal% H" $steris%

Arimero se averigua que el modulo resB#abber est5 funcionando1 .esde la consola: asterisk )rvvvvvvvvvvv 'e escribe el comando: 0>?

b!LI" 2e!p Ra$$er .ebe aparecer como respuesta una lista de comandos que se pueden utiliKar con este modulo: Ga99er reload 3eload Fa99er configuration Ga99er set de9ug VonUoffW Ena9le.(isa9le Fa99er de9ug Ga99er shoE 9uddies &hoE 9uddB lists of our clients Ga99er shoE connected &hoE state of clients and components Ga99er test &hoEs roster8 9ut is generallB used for mogKs de9ugging. 'i as no fuera/ no se ha compilado $steris% con el soporte Qabber o el modulo no viene cargado cuando $steris% arranca1 ,na primera prueba es intentar cargar el modulo: !LI" /o#u!e !oa# resIRa$$er si no se recibe ningDn error significa que la operacin ha tenido 5xito1 'e sale de la consola: !LI" ;uit Aara configurar *oogle=al% en $steris% hay que modifica dos archivos: #abber1conf gtal%1conf

'e empieKa con el #abber1conf nano <etc<asterisk<Ra$$[Link] :general< debug=yes autoprune=yes S remueve autom4ticamente los usuarios de la lista de amigos autoregister=yes S $utoregistra los nuevos usuarios en la lista de amigos :gtal-< type=)lient serverhost=tal-*google*)om S dominio del server *oogle=al% username=voFtovoi)enetGgmail*)om S usuario que vamos a registrar en *oogle=al% 0>C

se)ret=@@@@@@ S contrasea port=8222 S puerto para la conexin a *oogle=al% usetls=yes S activa el protocolo =L' usesasl=yes S se activa el protocolo sasl buddy=fulanoGgmail*)om S desde este punto empieKa la lista de amigos que se quiere aadir statusmessage=Asteris- Nerver S mensa#e de estado que se visualiKar4 #unto al nombre de usuario ti/eout=100 )n el caso que se quiera conectar m4s de un usuario *oogle=al% desde el servidor $steris% hay que repetir una segunda veK todo el bloque cambiando los par4metros relacionados con el nuevo usuario !onfiguracin de gtal%1conf: nano <etc<asterisk<gta![Link] Ogenera!P conte1t=goog!e)in Scontexto donde entrar4n las llamadas de los usuarios *oogle=al% a!!owguest=*es S se permiten llamadas de usuario *oogle=al% que no est5n en la lista de amigos $in#a##r='+Asterisk Sdireccion IA del servidor $steris% OguestP #isa!!ow=a!! a!!ow=u!aw conte1t=goog!e)in S configuracin para los usuarios hu5spedes Eque no est4n en la lista de amigos Ofu!anoP userna/e=fu!ano&g/ai!.co/ #isa!!ow=a!! a!!ow=u!aw 0>9

connection=gta!k conte1t=goog!e)in )ste bloque que empieKa con la etiqueta TfulanoU es la configuracin de uno de los amigos presentes en la lista de amigos de *oogle=al%1 'i se quiere configurar m4s de uno hay que repetir todo el bloque cambiando la TetiquetaU y el correo electrnico1 =erminada la configuracin hay que modificar el .ialplan para permitir las llamadas a usuarios *oogle=al% y al usuario *oogle=al% configurado en el servidor $steris%1 nano <etc<asterisk<[Link] Aara las llamadas entrantes se aaden las lineas: :google-in< exten => s5#5NoOpA Call from "tal- D exten => s5n5NetACA$$!Q(1AnameD=L7rom "oogle Cal-LD exten => s5n51ialAN(P/#3335%3D exten => s5n5"oto(fAB:LB+1(A$NCACIN0L = KBINYL<Sbusy6unavailD exten => s5nAunavailD5Roi)emailA#333Gdefault5uD exten => s5n5'angupAD exten => s5nAbusyD5Roi)e ailA#333Gdefault5bD exten => s5n5'angupAD =odas las llamadas que entren desde *oogle=al% la giramos a la extensin 0III1 'i dentro de treinta segundos no se contesta/ la llamadas se transfiere al buKn de voK1 Importante notar que la etiqueta TgoogleHinU es la misma que se configur en el archivo gtal%1conf ba#o el parametro NcontextO1 Aara las llamadas salientes se pone en el contexto internas: exten => #33335#51ialAgtal-/gtal-/fulanoGgmail*)omD exten => #33335n5CongestionA%D exten => #33335n5'angup ,na explicacin de las tres lineas: 'e dice a $steris% de llamar a trav5s de gtal% ba#o la configuracin que en #abber1conf se defini gtal% Evease etiqueta Tgtal%UF a fulanoZgmail1comS si la llamada no tiene 5xito o el servidor est4 congestionado recibiremos una seal de ocupado por 2 segundos se cuelga la llamada/canal

'e actualiKa la configuracin de $steris% con el comando: <etc<init.#<asterisk re!oa#

0>G

$hora se puede desde la extensin 0III hacer y recibir llamadas con *oogle=al%1 10.A AG' * #esperta#or Aara configurar un despertador en $steris% se usar4 uno script escrito en A8A1 $steris% permite a trav5s de la aplicacin $*I E$steris% *ate3ay InterfaceF interactuar con la AB< a trav5s de distintos lengua#es de programacin EA8A/ Aerl/ Ayton/ Qava/ etc1F1 'e descarga el archivo: c# <usr<src wget 2ttp%<<;o#.co/<[Link] 'e descomprime: tar )1f [Link] 'e entra en la carpeta: c# wakeup.2.0 'e vuelve e#ecutable el archivo 3a%eup1php: c2/o# :1 wakeup.p2p se copia en la carpeta agiHbin de asteris% cp wakeup.p2p <var<!i$<asterisk<agi)$in< =erminada esta primera parte se modifica el .ialplan para crear una nueva extensin que se usar4 para programar el despertador nano <etc<asterisk<[Link] 'e aaden las siguientes dos l neas en el contexto internas: exten => ;;5#5agiA4a-eup*phpD exten => ;;5n5'angup 'e guarda el archivo y se reinicia $steris% <etc<init.#<asterisk re!oa# $hora desde un 'oftphone se marca el numero GG y se siguen las instrucciones para programar el despertador1 ,na veK programado si desde la misma extensin se marca otra veK la extensin GG se 0>;

tendr4 la opcin de poder modificar la hora del despertador1 10.E .ai!2$an .ai$#ban es un programa que lee los registros Epor e#emplo /var/log/asteris%/messagesF y si hay un numero determinado de intentos de conexin sin 5xito/ banea EbloqueaF las IA de donde se han originados los intentos interactuando con iptables EcortafuegosF1 -ail7ban est4 escrito en Aython y para que funcione hay que instalar este lengua#e de programacin: *u/ insta!! p*t2on luego se descarga el programa: c# <usr<src wget 2ttp%<<#own!oa#[Link]<proRect<fai!2$an<fai!2$an)sta$!e<fai!2$an)0.C.E<fai!2$an) [Link].$z2 se descomprime: tar )1f fai!2$an)[Link].$z2 se entra en la carpeta: c# fai!2$an)0.C.E y se instala: p*t2on setup.p* insta!! 'e activa el script para arrancarlo como un servicio Epara !ent:'F cp <usr<src<fai!2$an)0.C.E<fi!es<re#2at)init# <etc<init.#<fai!2$an c2kconfig a## fai!2$an c2kconfig fai!2$an on 'e configura para que lea los registros de $steris%: c# <etc<fai!2$an<fi!ter.# nano [Link] y se aaden estas l neas

0>>

& 7ail2Ban )onfiguration file & & & BQevision6 283 B & :(NC$I1!N< & Qead )ommon prefixes* (f any )ustomiFations availablebread them from & )ommon*lo)al &before = )ommon*)onf :1efinition< &_daemon = asteris& Option6 failregex & Notes*6 regex to mat)h the pass4ord failures messages in the logfile* Che & host must be mat)hed by a group named KhostL* Che tag KM'ONC>L )an & be used for standard (P/hostname mat)hing and is only an alias for & AS666f+/5?06DSASPMhost>VN_D & Ralues6 C!@C & failregex = NOC(C!*W *W6 Qegistration from e*Wd failed for eM'ONC>d - ^rong pass4ord NOC(C!*W *W6 Qegistration from e*Wd failed for eM'ONC>d - No mat)hing peer found NOC(C!*W *W6 Qegistration from e*Wd failed for eM'ONC>d - Isername/auth name mismat)h NOC(C!*W M'ONC> failed to authenti)ate as e*WdB NOC(C!*W *W6 No registration for peer e*Wd Afrom M'ONC>D NOC(C!*W *W6 'ost M'ONC> failed 18 authenti)ation for e*Wd A*WD & Option6 ignoreregex & Notes*6 regex to ignore* (f this regex mat)hes5 the line is ignored* & Ralues6 C!@C & ignoreregex = con estas l neas se configura fail7ban para que controle eventuales accesos indeseados que aparecen en el archivo de registro de $steris%1 'e termina modificando el archivo de configuracin general de fail7ban: c# <etc<fai!2$an nano Rai!.conf al final del archivo se aaden las lineas que siguen: :asteris--iptables< enabled = true filter = asterisa)tion = iptables-allports:name=ANC!Q(N]5 proto)ol=all< sendmail-4hois:name=ANC!Q(N]5 dest=rootGlo)alhost5 sender=fail2banGpbx*dyndns*org< logpath = /var/log/asteris-/messages 7II

maxretry = 8 bantime = #>33 )n la l nea logpath aparece el archivo de registros que fail7ban leer4 para averiguar intentos frustrados de conexin a $steris%1 )n la configuracin hay que modificar la direccin de correo electrnico1 )n lugar de rootZlocalhost se pone la direccin de correo electrnico donde se quiere recibir los avisos1 Aara enviar los correos/ fail7ban est4 configurado con 'endmail1 Aara que funcione hay que modificar la configuracin del los archivos de registro de $steris%: nano <etc<asterisk<![Link] y averiguar que la l nea messages tenga el par4metro que aparece en negrita /essages =Z notice8debug 'e arranca fail7ban: <etc<init.#<fai!2$an start &tarting fail29an' = O> ? .esde ahora el servidor $steris% tiene algo m4s de seguridad y se podr4 monitorear los intentos de acceso no autoriKados1

7I0

Apen#ice A
Asterisk Ap!icaciones
A##?ueue>e/$er% .ynamically adds queue members A( '+rog% Load $steris% $.'I 'cripts into phone Agent@ogin% !all agent login Agent>onitor4utgoing% Lecord agentds outgoing call AG'% )xecutes an $*I compliant application A!ar/-eceiver% Arovide support for receiving alarm reports from a burglar or fire alarm panel A>(% $ttempts to detect ans3ering machines Answer% $ns3er a channel if ringing Aut2enticate% $uthenticate a user 6ackGroun#% Alay an audio file 3hile 3aiting for digits of an extension to go to1 6ackgroun#(etect% Bac%ground a file 3ith tal% detect 6ri#ge% Bridge t3o channels 6us*% Indicate the Busy condition C2ange>onitor% !hange monitoring filename of a channel

C2an'sAvai!% !hec% channel availability C2anne!-e#irect% Ledirects given channel to a dialplan target. C2an p*% Listen to a channel/ and optionally 3hisper into it C!earFas2% !lear the %eys from a specified hashname Congestion% Indicate the !ongestion condition ContinueU2i!e% Lestart a Mhile loop Contro!+!a*$ack% Alay a file 3ith fast for3ard and re3ind (AF('6arge% Barge in EmonitorF .$8.I channel (AF('-A % )xecutes .$8.I I'.+ L$' application (AF(' can% 'can .$8.I channels to monitor calls (ateTi/e% 'ays a specified time in a custom format (6#e!% .elete a %ey from the database (6#e!tree% .elete a family or %eytree from the database (ea#AG'% )xecutes $*I on a hungup channel (ia!% Alace a call and connect to the current channel (ictate% Jirtual .ictation &achine 7I2

(irector*% Arovide directory of voicemail extensions (' A% .I'$ [Link] In3ard 'ystem $ccessF (u/pC2an% .ump Info $bout =he !alling !hannel EAG'% )xecutes an )$*I compliant application Ec2o% )cho audio/ video/ or .=&- bac% to the calling party En#U2i!e% )nd a 3hile loop E1ec% )xecutes dialplan application E1ec'f% )xecutes dialplan application/ conditionally E1ec'fTi/e% !onditional application execution based on the current time E1itU2i!e% )nd a Mhile loop E1ten p*% Listen to a channel/ and optionally 3hisper into it E1terna!'V-% Interfaces 3ith an external IJL application .estiva!% 'ay text to the user .!as2% -lashes a .$8.I =run% .o!!ow>e% -indH&e/-ollo3H&e application .orkC(-% -or%s the !all .ata Lecord 7I?

GetC+E'(% *et $.'I !A) I. Gosu$% Qump to label/ saving return address Gosu$'f% !onditionally #ump to label/ saving return address Goto% Qump to a particular priority/ extension/ or context Goto'f% !onditional goto Goto'fTi/e% !onditional *oto based on the current time Fangup% 8ang up the calling channel 'AX2+rovision% Arovision a calling I$<y 3ith a given template 'CE % )ncode and stream using cicesd '/portVar% Import a variable from a channel into a ne3 variable Ta$$er en#% Qabber'endE#abber/screenname/messageF Ta$$er tatus% Qabber'tatusEQabber/'creen+ame/JariableF @og% 'end arbitrary text to a selected log level >acro% &acro Implementation >acroE1c!usive% )xclusive &acro Implementation >acroE1it% )xit -rom &acro 7IC

>acro'f% !onditional &acro Implementation >ai!$o1E1ists% !hec% to see if Joicemail mailbox exists >eet>e% &eet&e conference bridge >eet>eA#/in% &eet&e conference $dministration >eet>eC2anne!A#/in% &eet&e conference $dministration Echannel specificF >eet>eCount% &eet&e participant count >i!!iwatt% *enerate a !onstant 0II?8K tone at Idbm EmuHla3F >iniv/Acc>ess% Lecord account specific messages >iniv/(e!ete% .elete &iniHJoicemail voicemail messages >iniv/Greet% Alay &iniHJoicemail prompts >iniv/Notif*% +otify voicemail o3ner about ne3 messages1 >iniv/-ecor#% Leceive &iniHJoicemail and for3ard via eHmail >i1>onitor% Lecord a call and mix the audio during the recording >onitor% &onitor a channel >orseco#e% Alays morse code >+A+!a*er% Alay an &A2 file or stream 7I9

> et% 'et channel variableEsF or function valueEsF >usic4nFo!#% Alay &usic :n 8old indefinitely >M ?@% .o several my'(Ly things N6 cat% Alay an +B' local stream NoC(-% =ell $steris% to not maintain a !.L for the current call No4p% .o +othing E+o :perationF 4(6C.inis2% !lear the resultset of a successful multiro3 query +age% Aages phones +ark% Aar% yourself +arkAn#Announce% Aar% and $nnounce +arke#Ca!!% $ns3er a par%ed call +ause>onitor% Aause monitoring of a channel +ause?ueue>e/$er% Aauses a queue member +ickup% .irected !all Aic%up +ickupC2an% Aic%up a ringing channel +!a*$ack% Alay a file 7IG

+!a*Tones% Alay a tone list +rivac*>anager% Lequire phone number to be entered/ if no !allerI. sent +rocee#ing% Indicate proceeding +rogress% Indicate progress ?ueue% (ueue a call for a call queue ?ueue@og% Mrites to the queueBlog -aiseE1ception% 8andle an exceptional condition -ea#% Lead a variable -ea#E1ten% Lead an extension into a variable -ea#.i!e% Lead the contents of a text file into a channel variable -[Link]% Leceive a -$< -ecor#% Lecord to a file -e/ove?ueue>e/$er% .ynamically removes queue members -esetC(-% Lesets the !all .ata Lecord -etr*(ia!% Alace a call/ retrying on failure allo3ing optional exit extension1 -eturn% Leturn from gosub routine 7I;

-inging% Indicate ringing tone a*A!p2a% 'ay $lpha a*Count+@% 'ay Aolish counting 3ords a*(igits% 'ay .igits a*Nu/$er% 'ay +umber a*+2onetic% 'ay Ahonetic a*7ni1Ti/e% 'ays a specified time in a custom format en#(T>.% 'ends arbitrary .=&- digits en#.AX% 'end a -$< en#'/age% 'end an image file en#Te1t% 'end a =ext &essage en#7-@% 'end a ,LL et% 'et channel variable or function value etA>A.!ags% 'et the $&$ -lags etCa!!er+res% 'et !allerI. Aresentation et>usic4nFo!#% 'et default &usic :n 8old class 7I>

'+A##Fea#er% $dd a 'IA header to the outbound call '+(t/f>o#e% !hange the dtmfmode for a 'IA call @A tation% 'hared Line $ppearance 'tation @ATrunk% 'hared Line $ppearance =run% > % !ommunicates 3ith '&' service centres and '&' capable analogue phones oftFangup% 'oft 8angup $pplication peec2ActivateGra//ar% $ctivate a *rammar peec26ackgroun#% Alay a sound file and 3ait for speech to be recogniKed peec2Create% !reate a 'peech 'tructure peec2(eactivateGra//ar% .eactivate a *rammar peec2(estro*% )nd speech recognition peec2@oa#Gra//ar% Load a *rammar peec2+rocessing oun#% !hange bac%ground processing sound peec2 tart% 'tart recogniKing voice in the audio stream peec27n!oa#Gra//ar% ,nload a *rammar tack+op% Lemove one address from gosub stac% 70I

tart>usic4nFo!#% Alay &usic :n 8old top>i1>onitor% 'top recording a call through &ix&onitor top>onitor% 'top monitoring a channel top>usic4nFo!#% 'top Alaying &usic :n 8old top+!a*Tones% 'top playing a tone list *ste/% )xecute a system command TestC!ient% )xecute Interface =est !lient Test erver% )xecute Interface =est 'erver Transfer% =ransfer caller to remote extension Tr*E1ec% )xecutes dialplan application/ al3ays returning Tr* *ste/% =ry executing a system command 7npause>onitor% ,npause monitoring of a channel 7npause?ueue>e/$er% ,npauses a queue member 7serEvent% 'end an arbitrary event to the manager interface Ver$ose% 'end arbitrary text to verbose output V>Aut2enticate% $uthenticate 3ith Joicemail pass3ords 700

Voice>ai!% Leave a Joicemail message Voice>ai!>ain% !hec% Joicemail messages Uait% Maits for some time UaitE1ten% Maits for an extension to be entered [Link]-ing% Mait for Ling $pplication [Link] i!ence% Maits for a specified amount of silence Uait>usic4nFo!#% Mait/ playing &usic :n 8old Uait7nti!% Mait EsleepF until the current time is the given epoch U2i!e% 'tart a 3hile loop fapate!!er% Bloc% telemar%eters 3ith 'I=

707

Apen#ice 6 Asterisk .unciones


AGENT A--AM *ets information about an $gent $llo3s setting multiple variables at once 'et 3hether an audiohoo% may be inherited to another channel

A7('4F44`I'NFE-'T 6A E6EI(EC4(E 6A E6EIENC4(E 6@AC`@' T CA@@E-'( CA@@E-+-E C(CFANNE@

.ecode a base9? string )ncode a string in base9? !hec% if the callerid is on the blac%list *ets or sets !allerbI. data on the channel1 *ets or sets !allerbI. presentation on the channel1

*ets or sets a !.L variable *ets/sets various pieces of information about the channel1 !hec%s if domain is a local domain

CFEC` '+(4>A'N C7-@ C7T (6

Letrieves the contents of a ,LL 'lices and dices strings/ based upon a named delimiter1 Lead from or 3rite to the $steris% database

(6I(E@ETE (6IEX' T (EV'CEI TATE ('A@G-47+

Leturn a value from the database and delete it !hec% to see if a %ey exists in the $steris% database *et or 'et a device state &anages a group of users for dialing !hec%s the existence of a dialplan target1 .o a .,+.i loo%up of a phone number Initiate a .,+.i query1 Letrieve results from a .,+.I(,)LV *eneral or specific querying of +$A=L records for )+,& or )+,&Hli%e

('A@+@ANIEX' T (7N('@44`7+ (7N('?7E-M (7N('-E 7@T EN7>@44`7+ .+' pointers EN7>?7E-M EN7>-E 7@T ENV EVA@ EXCE+T'4N EX' T

Initiate an )+,& query Letrieve results from a )+,&(,)LV

*ets or sets the environment variable specified )valuate stored variables1 Letrieve the details of the current dialplan exception )xistence =est: Leturns 0 if exists/ I other3ise

70?

EXTEN '4NI TATE .'E@(?TM .'@E .'@TEG@46A@ G-47+ G-47+IC47NT G-47+I@' T

*et an extensionds state

!ount the fields/ 3ith an arbitrary delimiter :btains the contents of a file -ilter the string to include only the allo3ed characters *ets or sets the global variable specified *ets or sets the channel group1 !ounts the number of channels in the specified group *ets a list of the groups set on a channel1 !ounts the number of channels in the groups matching the specified

G-47+I>ATCFIC47NT pattern FA F FA F`EM F'NT 'AX+EE'AXVA'C4NV

Implementation of a dialplan associative array Letrieve the %eys of a 8$'8EF *et the devices set for a dialplan hint I$< peer information 'ets or retrieves a remote variable !onverts charsets of strings1

70C

'. '.>4(7@E '.T'>E c:d '>+4-T ' N7@@

!onditional: Leturns the data follo3ing cfd if true/ else the data follo3ing c:d !hec%s if an $steris% module is loaded in memory =emporal !onditional: Leturns the data follo3ing cfd if true/ else the data follo3ing

Letrieve the value of a variable from another channel +,LL =est: Leturns 0 if +,LL or I other3ise Letrieve buddy status 8ash the letters in the string into the equivalent %eypad numbers1

TA66E-I TAT7 `EM+A(FA F @EN @4CA@ @4C`

Leturns the length of the argument given Jariables local to the gosub stac% frame $ttempt to obtain a named mutex =ell if a mailbox is configured

>A'@64XIEX' T >ATF >(D

Aerforms &athematical -unctions !omputes an &.C digest *ets &iniJoicemail account information Leads or sets counters for &iniJoicemail message

>'N'V>ACC47NT >'N'V>C47NTE-

709

4(6CIANT'G. 4([Link] 4(6CI+-E ENCE 4(6CI ?@ ++IEACFI7 E?7E7EI>E>6E-

Luns the referenced query 3ith the specified arguments -etch a ro3 from a multiro3 query Luns the referenced query 3ith the specified arguments Luns the referenced query 3ith the specified arguments *enerate a string for each phoneprov user !ount number of members ans3ering a queue

?7E7EI>E>6E-IC47NT !ount number of members ans3ering a queue ?7E7EI>E>6E-I@' T Leturns a list of interfaces on a queue

?7E7EI>E>6E-I+ENA@TM *ets or sets queue members penalty1 ?7E7EIVA-'A6@E Leturn (ueue information in variables

?7E7EIUA'T'NGIC47NT !ount number of calls currently 3aiting in a queue ?74TE -AN( -EA@T'>E (uotes a given string/ escaping embedded quotes as necessary !hoose a random number in a range Leal=ime Lead/Mrite -unctions Leal=ime .estroy -unction Leal=ime 'tore -unction 70G

-EA@T'>EI(E T-4M -EA@T'>EI T4-E

-EGEX ET FA1 FA-E( FE@@ '+IFEA(E'+CFAN'N.4 '++EE>('I> G

Legular )xpression ')= assigns a value to a channel variable !omputes a '8$0 digest *ets or sets the shared variable specified )xecutes a command as if you 3ere at a shell1 *ets the specified 'IA header *ets the specified 'IA parameter from the current channel *ets 'IA peer information Letrieve details about an '&.I message1 Letrieve an '&.I message1

>('I> GI-ET-'EVE 4-T +EECF

'orts a list of %ey/vals into a list of %eys/ based upon the vals *ets information about speech recognition results1 !hange a speech engine specific attribute1 *ets the matched grammar of a result if available1

+EECFIENG'NE +EECFIG-A>>A-

+EECFI-E 7@T ITM+E 'ets the type of results that 3ill be returned1 +EECFI C4-E *ets the confidence score of a result1 70;

+EECFITEXT +-'NT. ?@IE C TAT T-.T'>E T-+T'>E format1 M 'N.4 T'>E47T T4@4UET47++ET-M@4C` TXTC'(NA>E 7N@4C` 7-'(EC4(E 7-'ENC4(E

*ets the recogniKed text of a result1 -ormat a variable according to a format string )scapes single tic%s for use in '(L statements

.oes a chec% on the specified file Leturns the current date/time in a specified format1 Leturns the epoch of the arbitrary date/time string structured as described in the

Leturns system information specified by parameter1 *ets or sets timeouts on the channel1 =imeout values are in seconds1 !onvert the string to lo3er case1 !onvert the string to upper case1 $ttempt to obtain a named mutex =<=!I.+$&) loo%s up a caller name via .+' ,nloc%s a named mutex .ecodes a ,LIHencoded string according to L-! 72>91 )ncodes a string to ,LIHsafe encoding according to L-! 72>91

70>

VA@'(IEXTEN VE- '4N V>C47NT V4@7>E

.etermine 3hether an extension exists or not Leturn the Jersion info for this $steris% !ounts the voicemail in a specified mailbox &et the 2I or 3I volume of a channel

77I

Apen#ice C E! p!an #e !!a/a#as


TgeneralU static=yes 3riteprotect=no autofallthrough=yes priority#umping=yes TglobalsU ',A = 'IA/0III -,L = 'IA/IICG20IIIIIII Q,'= = 'IA/#ustvoip .V+$&I!B-)$=,L)'=test0gblindxfergautomongdisconnectgatxfergpar%callgautomixmon TinternasU exten =" CI/0/$ns3er exten =" CI/n/MaitE0F exten =" CI/n/*otoEIJL/s/0F exten =" >G/0/$ns3erEF exten =" >G/n/Joice&ail&ainE[\!$LL)[Link]]ZdefaultF exten =" >G/n/8angupEF exten =" 0II/0/$ns3er exten =" 0II/n/&usic:n8oldEmp2/2IIF exten =" 0II/n/8angup exten =" 0I0/0/$ns3er exten =" 0I0/n/'[Link][\!$LL)[Link]]/-:LL:M&)F=0F exten =" 0I0/n/8angup exten =" 0I7/0/$ns3er exten =" 0I7/n/'[Link][\!$LL)[Link]]/-:LL:M&)F=IF exten =" 0I7/n/8angup exten =" 072/0/$ns3erEF exten =" 072/7/Alaybac%EhelloH3orldF exten =" 072/2/8angupEF exten =" 0CI/0/$ns3er exten =" 0CI/n/Alaybac%EechoHtestF exten =" 0CI/n/)choE0CF exten =" 0CI/n/8angup exten =" 777/0/$ns3er

exten =" 777/n/MaitE7F exten =" 777/n/-estivalEAor favor ingrese los C digitos del numero del empleado1OF exten =" 777/n/LeadE)&A+,&/beep/CF exten =" 777/n/+o:pE)&A+,&: [\)&A+,&]F exten =" 777/n/'etE)&A+$&)=[\:.B!B=I&)!L:!_E[\)&A+,&]F]F exten =" 777/n/*otoIfE[TO[\)&A+$&)]fooO = NfooOUfnotfoundF exten =" 777/n/-estivalE)l nombre del empleado es [\)&A+$&)]1 8asta luego1OF exten =" 777/n/+o:pE)mployee: [\)&A+$&)]F exten =" 777/n/8angup exten =" 777/nEnotfoundF/-estivalE+ingun empleado corresponde al numero ingresado1 8asta luego1F exten =" 777/n/8angup exten =" 9CI/0/$ns3erEF exten =" 9CI/n/-estivalE$steris% y -estival traba#an #unto1 !hevere^^^F exten =" 9CI/n/8angupEF exten =" 99I/0/$ns3erEF exten =" 99I/n/Alaybac%E3elcomeF exten =" 99I/n/'3iftE)n el centro de comunicaciones de JoKtoJoice1 )spere mientras lo conectamos con una operadoraF exten =" 99I/n/MaitE7F exten =" 99I/n/8angup exten =" B0II</0/&acroEfollo3meF exten =" B0II</n/&acroEdisponibleF exten =" B0II</n/.ialE'IA/[\)<=)+]/?C/h8%_t=3Mx<F exten =" B0II</n/*otoIfE[TN[\.I$L'=$=,']O = NB,'VOUfbusy:unavailF exten =" B0II</nEunavailF/JoicemailE[\)<=)+]Zdefault/uF exten =" B0II</n/8angup exten =" B0II</nEbusyF/Joice&ailE[\)<=)+]Zdefault/bF exten =" B0II</n/8angup exten =" B7IITI0U/0/$gentloginE[\)<=)+]F exten =" B7IITI0U/n/8angup exten =" 2III/0/(ueueEventasF exten =" 2III/n/8angup exten =" B?<<</0/+o:pEF exten =" B?<<</n/.ialE'IA/voKnet/[\)<=)+]/2IF exten =" B?<<</n/8angupEF exten =" B99<</0/$ns3erEF exten =" B99<</n/MaitE7F exten =" B99<</n/LecordE/tmp/prompt[\)<=)+:7]:3avF exten =" B99<</n/MaitE7F exten =" B99<</n/Alaybac%E/tmp/prompt[\)<=)+:7]F 777

exten =" B99<</n/MaitE7F exten =" B99<</n/8angupEF exten =" 0IIII/0/.ialEgtal%/gtal%/fulanoZgmail1comF exten =" 0IIII/n/!ongestionE2F exten =" 0IIII/n/8angup TexternasU exten =" B2<<<<<<<<</0/.ialE&obile/+o%ia)G0/[\)<=)+]/?CF exten =" B2<<<<<<<<</n/8angup exten =" B>1/0/.ialE.$8.I/g0/[\)<=)+:0]/?CF exten =" B>1/n/8angup exten =" BIICG21/0/.ialE[\Q,'=]/[\)<=)+]F exten =" BIICG21/n/Alaybac%EallHoutgoingHlinesHunavailableF exten =" BIICG21/n/8angupEF TconferenciasU exten =" B2CITI07U/0/&eetmeE[\)<=)+]/sc&EdefaultFF exten =" B2CITI07U/n/8angup exten =" 2C0I/0/&eetmeE/.&EdefaultFF exten =" 2C0I/n/8angup exten =" BCIITI0U/0/&eetmeE[\)<=)+]F exten =" BCIITI0U/n/8angup TdundiHlocalU exten =" BIICG1/0/.ialE'IA/#ustvoip/[\)<=)+]F exten =" B0<<</0/.ialE'IA/[\)<=)+]/0CF exten =" B0<<</n/*otoIfE[Ti[\.I$L'=$=,']i = iB,'ViUfbusy:unavailF exten =" B0<<</nEbusyF/JoicemailE[\)<=)+]Zdefault/bF exten =" B0<<</n/8angup exten =" B0<<</nEunavailF/JoicemailE[\)<=)+]Zdefault/uF exten =" B0<<</n/8angup TdundiHremotoU s3itch =" .,+.i/voKorg TfaxU exten =" B<1/0/.ialE'IA/#ustvoip/[\)<=)+]F exten =" B<1/n/8angup TfromHpstnU exten =" s/0/.ialE'IA/0III/?CF exten =" s/n/8angup 772

TfromHeuteliaU exten =" s/0/+o:pE !all from )utelia F exten =" s/n/$ns3er exten =" s/n/MaitE7F exten =" s/n/.ialE'IA/0III/?CF exten =" s/n/8angup exten =" fax/0/.ialEI$<7/iaxmodemF exten =" fax/n/8angup TgoogleHinU exten =" s/0/+o:pE !all from *tal% F exten =" s/n/'etE!$LL)[Link]=O-rom *oogle =al%OF exten =" s/n/.ialE'IA/0III/2IF exten =" s/n/*otoIfE[TO[\.I$L'=$=,']O = NB,'VOUfbusy:unavailF exten =" s/nEunavailF/JoicemailE0IIIZdefault/uF exten =" s/n/8angupEF exten =" s/nEbusyF/Joice&ailE0IIIZdefault/bF exten =" s/n/8angupEF TsubscribeU exten =" 0III/hint/'IA/0III exten =" 0II0/hint/'IA/0II0 exten =" GI0/hint/par%:GI0Zpar%edcalls exten =" GI7/hint/par%:GI7Zpar%edcalls exten =" GI2/hint/par%:GI2Zpar%edcalls exten =" GI?/hint/par%:GI?Zpar%edcalls exten =" GIC/hint/par%:GICZpar%edcalls exten =" GI9/hint/par%:GI9Zpar%edcalls exten =" GIG/hint/par%:GIGZpar%edcalls exten =" GI;/hint/par%:GI;Zpar%edcalls exten =" GI>/hint/par%:GI>Zpar%edcalls exten =" G0I/hint/par%:G0IZpar%edcalls TsoloHinternasU include =" internas include =" subscribe include =" par%edcalls TphonesU include =" internas include =" externas include =" subscribe include =" par%edcalls include =" conferencias TmacroHdisponibleU 77?

exten =" s/0/!hanIs$vailE'IA/[\&$!L:B)<=)+]F exten =" s/n/*otoifE[T[\$J$IL'=$=,'] = ?Uf?:2F exten =" s/n/&acro)xit exten =" s/n/Alaybac%EallHcircuitsHbusyHno3F exten =" s/n/8angup TmacroHfollo3meU exten =" s/0/'etE-&=[\.BE[\&$!L:B)<=)+]/-:LL:M&)F]F exten =" s/n/+o:pE[\-&]F exten =" s/n/*otoIfE[TO[\-&]O = N0OUffollo3me:exitF exten =" s/nEfollo3meF/-ollo3meE[\&$!L:B)<=)+]/sanF exten =" s/nEexitF/&acroexit ginclude NIJLO Arc2ivo 'VTIJLU exten =" s/0/MaitE0F exten =" s/7/'etE!8$++)LElanguageF=esF exten =" s/2/'etE=I&):,=EdigitF=GF exten =" s/?/'etE=I&):,=EresponseF=0IF exten =" s/C/Bac%*roundEcustom/espengF exten =" s/9/Mait)xtenEF exten =" 0/0/gotoEIJL0/s/0F exten =" 7/0/gotoEIJL7/s/0F exten =" i/0/Alaybac%EinvalidF exten =" i/7/Alaybac%EgoodbyeF exten =" i/2/8angup exten =" t/0/gotoEIJL/s/7F exten =" h/0/8angup TIJL0U exten =" s/0/'etE=I&):,=EdigitF=GF exten =" s/7/'etE=I&):,=EresponseF=0IF exten =" s/2/'etE!8$++)LElanguageF=enF exten =" s/?/Bac%*roundEcustom/engmenuF exten =" s/C/Mait)xtenEF exten =" 0/0/Alaybac%EdemoHechotestF exten =" 0/7/)choEF exten =" 7/0/&usic:n8old exten =" 2/0/Alaybac%EplsH3aitHconnectHcallF exten =" 2/7/*otoEinternas/2III/0F exten =" i/0/Alaybac%EinvalidF exten =" i/7/Alaybac%EgoodbyeF exten =" i/2/hangup exten =" t/0/gotoEIJL0/s/0F exten =" h/0/8angup 77C

TIJL7U exten =" s/0/'etE=I&):,=EdigitF=GF exten =" s/7/'etE=I&):,=EresponseF=0IF exten =" s/2/'etE!8$++)LElanguageF=esF exten =" s/?/Bac%*roundEcustom/espmenuF exten =" s/C/Mait)xtenEF exten =" 0/0/Alaybac%EdemoHechotestF exten =" 0/7/)choEF exten =" 7/0/&usic:n8old exten =" 2/0/Alaybac%EplsH3aitHconnectHcallF exten =" 2/7/*otoEinternas/2III/0F exten =" i/0/Alaybac%EinvalidF exten =" i/7/Alaybac%EgoodbyeF exten =" i/2/hangup exten =" t/0/gotoEIJL0/s/0F exten =" h/0/8angup Arc2ivo enviofa1 !hannel: 'IA/#ustvoip/II2><<<<<<<<<<< !allerid: i-$<i Mait=ime: 2I &axretries:2 Letry=ime: 2II $ccount: 0III $pplication: 'end-ax .ata: /tmp/prueba1tif

779

Apen#ice (
GNU Free Documentation icen!e "er!ion 1#$% $ No&em'er 200( (opyright -(. /000, /001, /00/, /001, /002 Free #oft$are Foundation, &nc. 3http4//[Link]/5 6"eryone is permitted to copy and distribute "erbatim copies of this !icense document, but changing it is not a!!o$ed. 0. P7689+L6 )he purpose of this License is to ma,e a manua!, te*tboo,, or other functiona! and usefu! document :free: in the sense of freedom4 to assure e"eryone the effecti"e freedom to copy and redistribute it, $ith or $ithout modifying it, either commercia!!y or noncommercia!!y. #econdari!y, this License preser"es for the author and pub!isher a $ay to get credit for their $or,, $hi!e not being considered responsib!e for modifications made by others. )his License is a ,ind of :copy!eft:, $hich means that deri"ati"e $or,s of the document must themse!"es be free in the same sense. &t comp!ements the GNU Genera! Pub!ic License, $hich is a copy!eft !icense designed for free soft$are. ;e ha"e designed this License in order to use it for manua!s for free soft$are, because free soft$are needs free documentation4 a free program shou!d come $ith manua!s pro"iding the same freedoms that the soft$are does. +ut this License is not !imited to soft$are manua!s% it can be used for any te*tua! $or,, regard!ess of sub<ect matter or $hether it is pub!ished as a printed boo,. ;e recommend this License principa!!y for $or,s $hose purpose is instruction or reference. 1. 8PPL&(8+&L&)= 8ND D6F&N&)&>N# )his License app!ies to any manua! or other $or,, in any medium, that contains a notice p!aced by the copyright ho!der saying it can be distributed under the terms of this License. #uch a notice grants a $or!d'$ide, roya!ty'free !icense, un!imited in duration, to use that $or, under the conditions stated herein. )he :Document:, be!o$, refers to any such manua! or $or,. 8ny member of the pub!ic is a !icensee, and is addressed as :you:. =ou accept the !icense if you copy, modify or distribute the $or, in a $ay re?uiring permission under copyright !a$. 8 :9odified Version: of the Document means any $or, containing the Document or a portion of it, either copied "erbatim, or $ith modifications and/or trans!ated into another !anguage. 8 :#econdary #ection: is a named appendi* or a front'matter section of the Document that dea!s e*c!usi"e!y $ith the re!ationship of the pub!ishers or authors of the Document to the Document@s o"era!! sub<ect -or to re!ated matters. and contains nothing that cou!d fa!! direct!y $ithin that o"era!! sub<ect. -)hus, if the Document is in part a te*tboo, of mathematics, a #econdary #ection may not e*p!ain any mathematics.. )he re!ationship cou!d be a matter of historica! connection $ith the sub<ect or $ith re!ated matters, or of !ega!,

commercia!, phi!osophica!, ethica! or po!itica! position regarding them. )he :&n"ariant #ections: are certain #econdary #ections $hose tit!es are designated, as being those of &n"ariant #ections, in the notice that says that the Document is re!eased under this License. &f a section does not fit the abo"e definition of #econdary then it is not a!!o$ed to be designated as &n"ariant. )he Document may contain Aero &n"ariant #ections. &f the Document does not identify any &n"ariant #ections then there are none. )he :(o"er )e*ts: are certain short passages of te*t that are !isted, as Front'(o"er )e*ts or +ac,'(o"er )e*ts, in the notice that says that the Document is re!eased under this License. 8 Front'(o"er )e*t may be at most B $ords, and a +ac,'(o"er )e*t may be at most /B $ords. 8 :)ransparent: copy of the Document means a machine'readab!e copy, represented in a format $hose specification is a"ai!ab!e to the genera! pub!ic, that is suitab!e for re"ising the document straightfor$ard!y $ith generic te*t editors or -for images composed of pi*e!s. generic paint programs or -for dra$ings. some $ide!y a"ai!ab!e dra$ing editor, and that is suitab!e for input to te*t formatters or for automatic trans!ation to a "ariety of formats suitab!e for input to te*t formatters. 8 copy made in an other$ise )ransparent fi!e format $hose mar,up, or absence of mar,up, has been arranged to th$art or discourage subse?uent modification by readers is not )ransparent. 8n image format is not )ransparent if used for any substantia! amount of te*t. 8 copy that is not :)ransparent: is ca!!ed :>pa?ue:. 6*amp!es of suitab!e formats for )ransparent copies inc!ude p!ain 8#(&& $ithout mar,up, )e*info input format, La)eC input format, #G9L or C9L using a pub!ic!y a"ai!ab!e D)D, and standard'conforming simp!e D)9L, Post#cript or PDF designed for human modification. 6*amp!es of transparent image formats inc!ude PNG, C(F and EPG. >pa?ue formats inc!ude proprietary formats that can be read and edited on!y by proprietary $ord processors, #G9L or C9L for $hich the D)D and/or processing too!s are not genera!!y a"ai!ab!e, and the machine'generated D)9L, Post#cript or PDF produced by some $ord processors for output purposes on!y. )he :)it!e Page: means, for a printed boo,, the tit!e page itse!f, p!us such fo!!o$ing pages as are needed to ho!d, !egib!y, the materia! this License re?uires to appear in the tit!e page. For $or,s in formats $hich do not ha"e any tit!e page as such, :)it!e Page: means the te*t near the most prominent appearance of the $or,@s tit!e, preceding the beginning of the body of the te*t. )he :pub!isher: means any person or entity that distributes copies of the Document to the pub!ic. 8 section :6ntit!ed C=F: means a named subunit of the Document $hose tit!e either is precise!y C=F or contains C=F in parentheses fo!!o$ing te*t that trans!ates C=F in another !anguage. -Dere C=F stands for a specific section name mentioned be!o$, such as :8c,no$!edgements:, :Dedications:, :6ndorsements:, or :Distory:.. )o :Preser"e the )it!e: of such a section $hen you modify the Document means that it remains a section :6ntit!ed C=F: according to this definition.

77;

)he Document may inc!ude ;arranty Disc!aimers ne*t to the notice $hich states that this License app!ies to the Document. )hese ;arranty Disc!aimers are considered to be inc!uded by reference in this License, but on!y as regards disc!aiming $arranties4 any other imp!ication that these ;arranty Disc!aimers may ha"e is "oid and has no effect on the meaning of this License. /. V67+8)&9 (>P=&NG =ou may copy and distribute the Document in any medium, either commercia!!y or noncommercia!!y, pro"ided that this License, the copyright notices, and the !icense notice saying this License app!ies to the Document are reproduced in a!! copies, and that you add no other conditions $hatsoe"er to those of this License. =ou may not use technica! measures to obstruct or contro! the reading or further copying of the copies you ma,e or distribute. Do$e"er, you may accept compensation in e*change for copies. &f you distribute a !arge enough number of copies you must a!so fo!!o$ the conditions in section . =ou may a!so !end copies, under the same conditions stated abo"e, and you may pub!ic!y disp!ay copies. . (>P=&NG &N GU8N)&)= &f you pub!ish printed copies -or copies in media that common!y ha"e printed co"ers. of the Document, numbering more than 100, and the Document@s !icense notice re?uires (o"er )e*ts, you must enc!ose the copies in co"ers that carry, c!ear!y and !egib!y, a!! these (o"er )e*ts4 Front'(o"er )e*ts on the front co"er, and +ac,'(o"er )e*ts on the bac, co"er. +oth co"ers must a!so c!ear!y and !egib!y identify you as the pub!isher of these copies. )he front co"er must present the fu!! tit!e $ith a!! $ords of the tit!e e?ua!!y prominent and "isib!e. =ou may add other materia! on the co"ers in addition. (opying $ith changes !imited to the co"ers, as !ong as they preser"e the tit!e of the Document and satisfy these conditions, can be treated as "erbatim copying in other respects. &f the re?uired te*ts for either co"er are too "o!uminous to fit !egib!y, you shou!d put the first ones !isted -as many as fit reasonab!y. on the actua! co"er, and continue the rest onto ad<acent pages. &f you pub!ish or distribute >pa?ue copies of the Document numbering more than 100, you must either inc!ude a machine'readab!e )ransparent copy a!ong $ith each >pa?ue copy, or state in or $ith each >pa?ue copy a computer'net$or, !ocation from $hich the genera! net$or,'using pub!ic has access to do$n!oad using pub!ic'standard net$or, protoco!s a comp!ete )ransparent copy of the Document, free of added materia!. &f you use the !atter option, you must ta,e reasonab!y prudent steps, $hen you begin distribution of >pa?ue copies in ?uantity, to ensure that this )ransparent copy $i!! remain thus accessib!e at the stated !ocation unti! at !east one year after the !ast time you distribute an >pa?ue copy -direct!y or through your agents or retai!ers. of that edition to the pub!ic.

77>

&t is re?uested, but not re?uired, that you contact the authors of the Document $e!! before redistributing any !arge number of copies, to gi"e them a chance to pro"ide you $ith an updated "ersion of the Document. H. 9>D&F&(8)&>N# =ou may copy and distribute a 9odified Version of the Document under the conditions of sections / and abo"e, pro"ided that you re!ease the 9odified Version under precise!y this License, $ith the 9odified Version fi!!ing the ro!e of the Document, thus !icensing distribution and modification of the 9odified Version to $hoe"er possesses a copy of it. &n addition, you must do these things in the 9odified Version4 8. Use in the )it!e Page -and on the co"ers, if any. a tit!e distinct from that of the Document, and from those of pre"ious "ersions -$hich shou!d, if there $ere any, be !isted in the Distory section of the Document.. =ou may use the same tit!e as a pre"ious "ersion if the origina! pub!isher of that "ersion gi"es permission. +. List on the )it!e Page, as authors, one or more persons or entities responsib!e for authorship of the modifications in the 9odified Version, together $ith at !east fi"e of the principa! authors of the Document -a!! of its principa! authors, if it has fe$er than fi"e., un!ess they re!ease you from this re?uirement. (. #tate on the )it!e page the name of the pub!isher of the 9odified Version, as the pub!isher. D. Preser"e a!! the copyright notices of the Document. 6. 8dd an appropriate copyright notice for your modifications ad<acent to the other copyright notices. F. &nc!ude, immediate!y after the copyright notices, a !icense notice gi"ing the pub!ic permission to use the 9odified Version under the terms of this License, in the form sho$n in the 8ddendum be!o$. G. Preser"e in that !icense notice the fu!! !ists of &n"ariant #ections and re?uired (o"er )e*ts gi"en in the Document@s !icense notice. D. &nc!ude an una!tered copy of this License. &. Preser"e the section 6ntit!ed :Distory:, Preser"e its )it!e, and add to it an item stating at !east the tit!e, year, ne$ authors, and pub!isher of the 9odified Version as gi"en on the )it!e Page. &f there is no section 6ntit!ed :Distory: in the Document, create one stating the tit!e, year, authors, and pub!isher of the Document as gi"en on its )it!e Page, then add an item describing the 9odified Version as stated in the pre"ious sentence. E. Preser"e the net$or, !ocation, if any, gi"en in the Document for pub!ic access to a )ransparent copy of the Document, and !i,e$ise the net$or, !ocations gi"en in the Document for pre"ious "ersions it $as based on. )hese may be p!aced in the :Distory: section. =ou may omit a net$or, !ocation for a $or, that $as pub!ished at !east four years before the Document itse!f, or if the origina! pub!isher of the "ersion it refers to gi"es permission. I. For any section 6ntit!ed :8c,no$!edgements: or :Dedications:, Preser"e the )it!e of the section, and preser"e in the section a!! the substance and tone of each of the contributor ac,no$!edgements and/or dedications gi"en therein. L. Preser"e a!! the &n"ariant #ections of the Document, una!tered in their te*t and in their tit!es. #ection numbers or the e?ui"a!ent are not considered part of the section tit!es.

72I

9. De!ete any section 6ntit!ed :6ndorsements:. #uch a section may not be inc!uded in the 9odified Version. N. Do not retit!e any e*isting section to be 6ntit!ed :6ndorsements: or to conf!ict in tit!e $ith any &n"ariant #ection. >. Preser"e any ;arranty Disc!aimers. &f the 9odified Version inc!udes ne$ front'matter sections or appendices that ?ua!ify as #econdary #ections and contain no materia! copied from the Document, you may at your option designate some or a!! of these sections as in"ariant. )o do this, add their tit!es to the !ist of &n"ariant #ections in the 9odified Version@s !icense notice. )hese tit!es must be distinct from any other section tit!es. =ou may add a section 6ntit!ed :6ndorsements:, pro"ided it contains nothing but endorsements of your 9odified Version by "arious parties''for e*amp!e, statements of peer re"ie$ or that the te*t has been appro"ed by an organiAation as the authoritati"e definition of a standard. =ou may add a passage of up to fi"e $ords as a Front'(o"er )e*t, and a passage of up to /B $ords as a +ac,'(o"er )e*t, to the end of the !ist of (o"er )e*ts in the 9odified Version. >n!y one passage of Front'(o"er )e*t and one of +ac,'(o"er )e*t may be added by -or through arrangements made by. any one entity. &f the Document a!ready inc!udes a co"er te*t for the same co"er, pre"ious!y added by you or by arrangement made by the same entity you are acting on beha!f of, you may not add another% but you may rep!ace the o!d one, on e*p!icit permission from the pre"ious pub!isher that added the o!d one. )he author-s. and pub!isher-s. of the Document do not by this License gi"e permission to use their names for pub!icity for or to assert or imp!y endorsement of any 9odified Version. B. (>9+&N&NG D>(U96N)# =ou may combine the Document $ith other documents re!eased under this License, under the terms defined in section H abo"e for modified "ersions, pro"ided that you inc!ude in the combination a!! of the &n"ariant #ections of a!! of the origina! documents, unmodified, and !ist them a!! as &n"ariant #ections of your combined $or, in its !icense notice, and that you preser"e a!! their ;arranty Disc!aimers. )he combined $or, need on!y contain one copy of this License, and mu!tip!e identica! &n"ariant #ections may be rep!aced $ith a sing!e copy. &f there are mu!tip!e &n"ariant #ections $ith the same name but different contents, ma,e the tit!e of each such section uni?ue by adding at the end of it, in parentheses, the name of the origina! author or pub!isher of that section if ,no$n, or e!se a uni?ue number. 9a,e the same ad<ustment to the section tit!es in the !ist of &n"ariant #ections in the !icense notice of the combined $or,. &n the combination, you must combine any sections 6ntit!ed :Distory: in the "arious origina! documents, forming one section 6ntit!ed :Distory:% !i,e$ise combine any sections 6ntit!ed :8c,no$!edgements:, and any sections 6ntit!ed :Dedications:. =ou must de!ete a!! sections 6ntit!ed :6ndorsements:.

720

J. (>LL6()&>N# >F D>(U96N)# =ou may ma,e a co!!ection consisting of the Document and other documents re!eased under this License, and rep!ace the indi"idua! copies of this License in the "arious documents $ith a sing!e copy that is inc!uded in the co!!ection, pro"ided that you fo!!o$ the ru!es of this License for "erbatim copying of each of the documents in a!! other respects. =ou may e*tract a sing!e document from such a co!!ection, and distribute it indi"idua!!y under this License, pro"ided you insert a copy of this License into the e*tracted document, and fo!!o$ this License in a!! other respects regarding "erbatim copying of that document. 1. 8GG76G8)&>N ;&)D &ND6P6ND6N) ;>7I# 8 compi!ation of the Document or its deri"ati"es $ith other separate and independent documents or $or,s, in or on a "o!ume of a storage or distribution medium, is ca!!ed an :aggregate: if the copyright resu!ting from the compi!ation is not used to !imit the !ega! rights of the compi!ation@s users beyond $hat the indi"idua! $or,s permit. ;hen the Document is inc!uded in an aggregate, this License does not app!y to the other $or,s in the aggregate $hich are not themse!"es deri"ati"e $or,s of the Document. &f the (o"er )e*t re?uirement of section is app!icab!e to these copies of the Document, then if the Document is !ess than one ha!f of the entire aggregate, the Document@s (o"er )e*ts may be p!aced on co"ers that brac,et the Document $ithin the aggregate, or the e!ectronic e?ui"a!ent of co"ers if the Document is in e!ectronic form. >ther$ise they must appear on printed co"ers that brac,et the $ho!e aggregate. 2. )78N#L8)&>N )rans!ation is considered a ,ind of modification, so you may distribute trans!ations of the Document under the terms of section H. 7ep!acing &n"ariant #ections $ith trans!ations re?uires specia! permission from their copyright ho!ders, but you may inc!ude trans!ations of some or a!! &n"ariant #ections in addition to the origina! "ersions of these &n"ariant #ections. =ou may inc!ude a trans!ation of this License, and a!! the !icense notices in the Document, and any ;arranty Disc!aimers, pro"ided that you a!so inc!ude the origina! 6ng!ish "ersion of this License and the origina! "ersions of those notices and disc!aimers. &n case of a disagreement bet$een the trans!ation and the origina! "ersion of this License or a notice or disc!aimer, the origina! "ersion $i!! pre"ai!. &f a section in the Document is 6ntit!ed :8c,no$!edgements:, :Dedications:, or :Distory:, the re?uirement -section H. to Preser"e its )it!e -section 1. $i!! typica!!y re?uire changing the actua! tit!e.

727

K. )679&N8)&>N =ou may not copy, modify, sub!icense, or distribute the Document e*cept as e*press!y pro"ided under this License. 8ny attempt other$ise to copy, modify, sub!icense, or distribute it is "oid, and $i!! automatica!!y terminate your rights under this License. Do$e"er, if you cease a!! "io!ation of this License, then your !icense from a particu!ar copyright ho!der is reinstated -a. pro"isiona!!y, un!ess and unti! the copyright ho!der e*p!icit!y and fina!!y terminates your !icense, and -b. permanent!y, if the copyright ho!der fai!s to notify you of the "io!ation by some reasonab!e means prior to J0 days after the cessation. 9oreo"er, your !icense from a particu!ar copyright ho!der is reinstated permanent!y if the copyright ho!der notifies you of the "io!ation by some reasonab!e means, this is the first time you ha"e recei"ed notice of "io!ation of this License -for any $or,. from that copyright ho!der, and you cure the "io!ation prior to 0 days after your receipt of the notice. )ermination of your rights under this section does not terminate the !icenses of parties $ho ha"e recei"ed copies or rights from you under this License. &f your rights ha"e been terminated and not permanent!y reinstated, receipt of a copy of some or a!! of the same materia! does not gi"e you any rights to use it. 10. FU)U76 76V&#&>N# >F )D&# L&(6N#6 )he Free #oft$are Foundation may pub!ish ne$, re"ised "ersions of the GNU Free Documentation License from time to time. #uch ne$ "ersions $i!! be simi!ar in spirit to the present "ersion, but may differ in detai! to address ne$ prob!ems or concerns. #ee http4//$$$.[Link]/copy!eft/. 6ach "ersion of the License is gi"en a distinguishing "ersion number. &f the Document specifies that a particu!ar numbered "ersion of this License :or any !ater "ersion: app!ies to it, you ha"e the option of fo!!o$ing the terms and conditions either of that specified "ersion or of any !ater "ersion that has been pub!ished -not as a draft. by the Free #oft$are Foundation. &f the Document does not specify a "ersion number of this License, you may choose any "ersion e"er pub!ished -not as a draft. by the Free #oft$are Foundation. &f the Document specifies that a pro*y can decide $hich future "ersions of this License can be used, that pro*y@s pub!ic statement of acceptance of a "ersion permanent!y authoriAes you to choose that "ersion for the Document. 11. 76L&(6N#&NG :9assi"e 9u!tiauthor (o!!aboration #ite: -or :99( #ite:. means any ;or!d ;ide ;eb ser"er that pub!ishes copyrightab!e $or,s and a!so pro"ides prominent faci!ities for anybody to edit those $or,s. 8 pub!ic $i,i that anybody can edit is an e*amp!e of such a ser"er. 8

722

:9assi"e 9u!tiauthor (o!!aboration: -or :99(:. contained in the site means any set of copyrightab!e $or,s thus pub!ished on the 99( site. :(('+='#8: means the (reati"e (ommons 8ttribution'#hare 8!i,e .0 !icense pub!ished by (reati"e (ommons (orporation, a not'for'profit corporation $ith a principa! p!ace of business in #an Francisco, (a!ifornia, as $e!! as future copy!eft "ersions of that !icense pub!ished by that same organiAation. :&ncorporate: means to pub!ish or repub!ish a Document, in $ho!e or in part, as part of another Document. 8n 99( is :e!igib!e for re!icensing: if it is !icensed under this License, and if a!! $or,s that $ere first pub!ished under this License some$here other than this 99(, and subse?uent!y incorporated in $ho!e or in part into the 99(, -1. had no co"er te*ts or in"ariant sections, and -/. $ere thus incorporated prior to No"ember 1, /002. )he operator of an 99( #ite may repub!ish an 99( contained in the site under (('+='#8 on the same site at any time before 8ugust 1, /00K, pro"ided the 99( is e!igib!e for re!icensing. 8DD6NDU94 Do$ to use this License for your documents )o use this License in a document you ha"e $ritten, inc!ude a copy of the License in the document and put the fo!!o$ing copyright and !icense notices <ust after the tit!e page4 (opyright -c. =687 =>U7 N896. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1. or any !ater "ersion pub!ished by the Free #oft$are Foundation% $ith no &n"ariant #ections, no Front'(o"er )e*ts, and no +ac,'(o"er )e*ts. 8 copy of the !icense is inc!uded in the section entit!ed :GNU Free Documentation License:. &f you ha"e &n"ariant #ections, Front'(o"er )e*ts and +ac,'(o"er )e*ts, rep!ace the :$ith...)e*ts.: !ine $ith this4 $ith the &n"ariant #ections being L&#) )D6&7 )&)L6#, $ith the Front'(o"er )e*ts being L&#), and $ith the +ac,'(o"er )e*ts being L&#). &f you ha"e &n"ariant #ections $ithout (o"er )e*ts, or some other combination of the three, merge those t$o a!ternati"es to suit the situation. &f your document contains nontri"ia! e*amp!es of program code, $e recommend re!easing these e*amp!es in para!!e! under your choice of free soft$are !icense, such as the GNU Genera! Pub!ic License, to permit their use in free soft$are.

72?

También podría gustarte