Академический Документы
Профессиональный Документы
Культура Документы
Telefona IP
con Asterisk
Administracin
Avanzado
Pg. 1
Telefona IP con Asterisk Administracin Avanzada
Pg. 2
Telefona IP con Asterisk Administracin Avanzada
ndice de contenido
CAPTULO 2 DIALPLAN....................................................................................................36
2.4 VARIABLES............................................................................................................................. 41
2.5 FUNCIONES............................................................................................................................ 42
Prctica 2.5.1 Trabajando con funciones..................................................................................42
2.6 APLICACIONES...................................................................................................................... 43
Prctica 2.6.1: Creacin de un men de bienvenida.................................................................43
Pg. 3
Telefona IP con Asterisk Administracin Avanzada
Prctica 2.6.2: Instalacin de un motor de text-to-speech (tts), para reproducir audio a partir
de texto......................................................................................................................................44
2.7 EXPRESIONES Y OPERADORES..........................................................................................45
Prctica 2.7: Creacin de un buzn de voz...............................................................................46
2.8 INTERCONEXIN DE CENTRALES.......................................................................................49
Pactica 2.8.1 Interconexin de servidores asterisk..................................................................49
2.9 MACROS................................................................................................................................. 51
Prctica 2.9: Macro buzn de voz.............................................................................................51
2.10 FUNCIONES DE PBX............................................................................................................ 52
Prctica 2.10: Configuracin de funciones adicionales de PBX...............................................54
2.11 Dialplan para llamadas de salida.........................................................................................56
Prctica 2.11.1 Creacin de dialplan para llamadas de salida...................................................56
Prctica 2.11.2 Llamadas de salida con limitacin...................................................................57
2.12 CONFERENCIA..................................................................................................................... 58
Pactica 2.12.1: Creacin de salas de conferencia en asterisk:.................................................58
2.13 Distribucin Automtica de Llamadas Colas de Espera................................................60
Prctica 2.13.1: Distribucin automtica de llamadas..............................................................64
2.14 CCSS (Call Completion Supplementary System) Rellamada.........................................66
Prctica 2.14.1: Configuracin de CCSS..................................................................................66
2.15 Generacin Automtica de Llamadas.................................................................................68
3.1 ASTDB..................................................................................................................................... 70
Prctica 3.1.1: Uso de AstDB...................................................................................................70
Prctica 3.1.2: Aplicacin de AstDB.........................................................................................71
3.2 Asterisk CDR.......................................................................................................................... 73
3.2.1 Configuracin de CDR en PostgreSQL...........................................................................73
3.3 AGI: Asterisk Gateway Interface...........................................................................................75
Prctica 3.3.2: Instalacin de AGIs para el uso de tts y motor asr de google...........................76
3.5 AMI: Asterisk Manager Interface...........................................................................................77
Prctica 3.5.1: Trabajando con AMI.........................................................................................77
BIBLIOGRAFA...................................................................................................................81
Pg. 4
Telefona IP con Asterisk Administracin Avanzada
CAPTULO 1
ASTERISK: PRIMEROS PASOS
El objetivo de la prctica es adquirir los conocimientos suficientes para reparar un servidor para el
funcionamiento de Asterisk como servidor de comunicaciones.
Instruccines:
4. Puede observar que el sistema arranca desde el CD, y aparece en el monitor una pantalla con tres
opciones.
6. Aparece una opcin para revisar los medios (CD /DVD) de instalacin. Si Ud. Est seguro de que estos
medios funcionan adecuadamente, puede prescindir (Skip) de la verificacin.
11. En la nueva pantalla y de ser posible cree tres particiones una para /boot de 300 MB, una para swap,
una para el sistema de archivos / , una para /home. Los tamaos sern escogidos enbase a las
indicaciones del instructor. Click en Siguiente.
13. En la seccin de dispositivos de red, configrelos, su instructor le dir si usar DHCP o no. Si no, l le
proveer de una Direccin IP, Mscara de Red, Red y direccin de Broadcast, as como el Hostname,
Gateway y direcciones de DNS. Ingrese estos valores, revselos y de Clic en Siguiente.
14. Escoja la opcin correspondiente de Huso Horario de acuerdo a su situacin geogrfica en el mapa que
se le presenta. Clic en Siguiente.
15. Designe una contrasea para el usuario root, confrmela y clic en Siguiente.
18. Clic en Next para que de inicio la instalacin del sistema operativo. Este proceso tomar alrededor de
30 minutos, dependiendo de las caractersticas tcnicas de los equipos.
19. En el momento en que aparece la pantalla de instalacin completa retire el CD/DVD del CD ROM y de
clic en Reboot, para reiniciar el sistema.
http://www.alcancelibre.org/staticpages/index.php/procedimiento-instalar-centos6
Pg. 5
Telefona IP con Asterisk Administracin Avanzada
Con esta prctica el alumno sera capaz de manejar adecuadamente la consola o terminal de linux, poder
moverse entre directorios, crear ficheros y carpetas, copiar, mover o borrar estos ltimos. De esta manera
se proveer al alumno la habilidad suficiente para desenvolverse en la terminal.
Abrir una terminal o consola de linux. Mediante la guia del instructor aplicar y observar el funcionamiento de
los siguientes comandos1:
Ruta relativa: Se indica a partir del directorio actual. Ej: Si estando en /home queremos ir a el
directorio lpic: cd lpic
"/home/asterisk/palabras.txt" al directorio"/home"
touch Se utiliza para cambiar el acceso al archivo y modificar el la hora de acceso, tambien para
crear un archivo.
1 http://aprendamos-linux.blogspot.com/2007/04/comando-bsicos-consola-linux.html
Pg. 6
Telefona IP con Asterisk Administracin Avanzada
Ejemplo : chmod 755 /home/asterisk/palabras.txt - Este cambio da todos los permisos menos
el de edicion al archivo palabras.txt
date Usado para configurar la hora o revisar la hora tanto del sistema como del bios
Pg. 7
Telefona IP con Asterisk Administracin Avanzada
Para la configuracin de asterisk es necesario manipular ficheros de texto. Por tal motivo se requiere que el
alumno conosca el manejo de un editor como el vim (o vi), el cual es uno de los editores mas populares de
sistemas operativos Linux o Unix.
vim dispone de varios modos en su interfaz. De tal manera dependiendo del modo en el que nos
encontremos una misma tecla puede hacer cosas diferentes. Por ejemplo, en el modo INSERTAR la p
escribir una p en el documento, mientras que en el modo de comandos p (Paste) pega lo que hayamos
copiado.
Modo ejecucin:
Se trabaja en este modo presionando las teclas [ESC]+[:]. En este modo se puede ejecutar comandos
avanzados en vim.
Modo edicin:
Es el modo de edicin. Para entrar en este modo basta con escribir una [i] desde el modo comando y a
partir de ese momento todo lo que se escriba con el teclado se escribir en el documento, como si de un
editor convencional se tratase.
Modo comandos:
Se llega a este modo cuando se presiona la tecla [ESC]. En este modo se puede ejecutar comandos
presionando combinaciones de teclas.
1. Abra un terminal virtual. Asegrese de encontrarse en su directorio home. Cree un archivo llamado
vitest usando vim. Escriba el siguiente texto y el alfabeto marino en el archivo vitest. Agregar el alfabeto
es una manera fcil de llenar un par de pantallas de informacin necesaria para un uso posterior. Esta
es una sesin de entrenamiento para el uso de vim.
1 uno
2 dos
3 tres
A alfa
B bravo
C charlie
D delta
E eco
F fox
G golf
H hotel
I indian
J july
K kilo
2 http://blog.vud1.com/?p=230
Pg. 8
Telefona IP con Asterisk Administracin Avanzada
2. Regrese al modo comando. Guarde y salga del archivo. Note que tan pronto presione los dos puntos (:),
estos aparecen bajo la ltima lnea de su rea de entrada. Una vez que el bfer est vaco y el archivo
cerrado, Ud ve un mensaje con el nmero de lneas y caracteres en el archivo.
3. Abra de nuevo el archivo vitest. Note que la ltima lnea en la pantalla muestra el nombre del archivo y
el nmero de caracteres.
4. Utilizando las teclas <h>, <j>, <k> y <l>, practique movindose a travs del archivo.
5. Usando los comandos vim apropiados para moverse a travs del texto:
6. Cambie el archivo vitest de manera que despus de cada letra del alfabeto, un primer nombre comn
sea agregado y que inicie con esa letra. Asegrese de usar distintos mtodos para conmutar del modo
de comandos al modo de edicin (insert). El archivo debera verse ms o menos as:
A alfa Ani
B bravo Ben
C charlie Carlos
8. En el modo comando, situarse en una linea en concreto y probar los comandos copiar (yy), pegar (p) o
cortar(dd). En copiar o pegar se puede anteponer un nmero que indica la cantidad de lineas con las
que el comando respectivo trabajar.
Pg. 9
Telefona IP con Asterisk Administracin Avanzada
Conceptos bsicos:
Conmutacin de circuitos.
Telefona Tradicional:
Los primeros conmutadores eran operadores telefnicos que enlazaban fsicamente la lnea origen
y la lnea destino.
Se transmite la voz mediante una seal analgica con una frecuencia mxima de 4khz.
Cuando se amplifica una seal analgica se amplifica tambin el ruido que lleve incorporado.
Telefona Digital:
Se digitaliza la voz, tomando 8000 muestras por segundo de un tamao de palabra de 8 bits, lo que
da una tasa de transmisin de 64kbps para cada canal de voz. Esta codificacin se denomina PCM
(Pulse code modulation), en espaol, modulacin por impulsos codificados.
Sealizacin:
Pg. 10
Telefona IP con Asterisk Administracin Avanzada
SONET es normalmente desarrollado en OC-3, OC-12, and OC-48, que son 155.52 Mbps, 622.08
Mbps, and 2.488 Gbps, respectivamente.
Mtodos de Acceso:
Consiste de dos canales B (bearer) de 64 Kbps controlados por un canal D (data) de 16 Kbps.
E1: 30 canales B y un D para sealizacin (64 Kbps ) 2.048 Mbps. Existe un ltimo canal que sirve
para sincronizacin.
En nuestro pas, cuando se necesitan hasta 30 lneas telefnicas es muy comn solicitar un E1 a
las operadoras telefnicas.
Pg. 11
Telefona IP con Asterisk Administracin Avanzada
Tasa de transmisin de E1
Tasa de transmisin de T1
Pg. 12
Telefona IP con Asterisk Administracin Avanzada
Telefona IP
Ventajas
La voz se convierte en bits de informacin que pueden ser encriptados para garantizar seguridad.
Desventajas
Por la naturaleza de los enlaces de Internet se tiene una menor confiabilidad que la PSTN.
En ocasiones se necesita equipos que den prioridad al trfico de voz por ser en tiempo real,
sobretodo en conexiones inalmbricas.
Prctica 1.3.1: Explique con sus palabras la diferencia entre Voz sobre IP y telefona IP
.............................................................................................................................................................
.............................................................................................................................................................
.............................................................................................................................................................
.............................................................................................................................................................
.............................................................................................................................................................
.............................................................................................................................................................
.............................................................................................................................................................
Pg. 13
Telefona IP con Asterisk Administracin Avanzada
1.4 ASTERISK
Asterisk es un software con licenciamiento libre (GPLv2), destinado a la implementacin de servidores de
comunicaciones y aplicativos para telefona. Digium, empresa que promueve Asterisk, invierte en ambos
aspectos: el desarrollo de cdigo fuente y en hardware de telefona que funciona con Asterisk. Asterisk
funciona en plataformas Linux y otras plataformas Unix con o sin hardware conectando a la red pblica de
telefona (PSTN). Asterisk permite conectividad en tiempo real entre las redes PSTN y redes VoIP.
Asterisk incluye muchos recursos que solo eran encontrados en sistemas de telefona y comunicaciones
propietarios y costosos, se mencionan los ms comunes:
Buzn de voz
Grabacin de llamadas
Desvo de llamadas
Trasferencia de llamadas
Salas de Conferencias
Msica en espera
Integracin con interfaces de telefona tradicional a travs de tarjetas o gateways FXO, FXS, o
digitales (E1, T1, BRI entre otros)
IVR
Lo ms interesante de asterisk es su compatibilidad con mltiples protocolos VoIP como: SIP (Session
Initiation Protocol), H.323, IAX2 (Inter Asterisk eXchange), MGCP (Media Gateway Control Protocol), SCCP
(Skinny Client Control Protocol), entre otros. con la PSTN (HARDWARE)
Versiones de Asterisk3:
Existen dos tipos de versiones en asterisk: versiones estandar y versiones LTS (Long Term Support).
Las versiones estandar son mantenidas por un corto periodo de tiempo: 1 ao de soporte completo y 1 ao
adicional en el cual se proveen actualizaciones de seguridad
Las versiones LTS tienen un soporte completo por un perodo de 4 aos ms 1 ao adicional para
actualizaciones de seguridad.
Actualizacione
Version Tipo Liberacin EOL
s de seguridad
3 https://wiki.asterisk.org/wiki/display/AST/Asterisk+Versions
Pg. 14
Telefona IP con Asterisk Administracin Avanzada
Escenarios de uso:
PBX IP PURO:
Una PBX completa que cumple todas las expectativas de una empresa.
En este escenario asterisk trabaja con una PBX que esta previamente instalada. Normalmente es menos
Pg. 15
Telefona IP con Asterisk Administracin Avanzada
Asterisk posee funcionalidad de un media gateway, es decir, puede convertir las seales analgicas o
digitales de una PBX tradicional o de los telfonos de los usuarios en voz sobre IP y transmitir por la red
corporativa de datos o internet. La convergencia propicia la reduccin del nmero de circuitos o enlaces y
un mejor aprovechamiento de los recursos. Mediante este modelo se puede conectar por ejemplo oficinas
en distintos paises o regiones, eliminando los altos costos en llamadas internacionales.
SERVIDOR DE APLICACIONES:
Adems de las funciones embebidas que asterisk incorpora, se puede hacer uso de herramientas
adicionales como AGI o AMI para proveer soluciones a medida (aplicaciones informticas) mediante
lenguajes de programacin y bases de datos, satisfaciendo ciertas necesidades especficas del cliente. Esto
convierte a Asterisk en un completo servidor de comunicaciones.
Pg. 16
Telefona IP con Asterisk Administracin Avanzada
MEDIA GATEWAY:
Un media gateway permite convertir entre protocolos de telefona tradicional y telefona IP. Aprovechando de
esta manera toda la infraestructura de telefona que se pueda tener y permitiendo la convergencia e
integracin entre diferentes tecnologias de comunicaciones.
CONTACT CENTER:
Este escenario es bastante comn en escenarios de negocio de ventas por telfono o atencin al cliente.
Asterisk puede servir un sistema de colas en el cual un cliente llama y espera a ser atendido por un agente.
De esta manera se pueden crear soluciones ERP (Enterprise resource planning) integrados a Asterisk.
Otras aplicaciones comunes en este escenario son marcacin de campaas, marcacin automtica,
medicin de calidad de servicio entre otros.
Pg. 17
Telefona IP con Asterisk Administracin Avanzada
Foreign eXchange Station (FXS): Emite sealizacin (voltaje), permite conectar telfonos, generalmente
de color verde.
Foreign eXchange Office (FXO): Recibe sealizacin (voltaje), permite conectar lneas telefnicas,
generalmente de color rojo.
Presentacin: 1, 2, 4, 8 puertos.
Pg. 18
Telefona IP con Asterisk Administracin Avanzada
Similares a las tarjetas, puertos FXO, FXS o E1, T1. La interconexin con asterisk se hace atravs de IP
mediante protocolo SIP.
Telfonos IP:
Presentacin: Destinados a distintos tipos de usuario, admiten protocolo SIP, IAX2, H.323.
Pg. 19
Telefona IP con Asterisk Administracin Avanzada
Consideraciones previas:
Tener un sistema GNU/Linux instalado, recomendable Centos 6. Asegurarse de tener instalado software de
desarrollo, como los paquetes: ncurses, make, gcc, bison, libxml, curl. Trabajar como root.
Mediante este mtodo, nos aseguramos de tener una versin de asterisk estable para el sistema operativo
elegido, adems de facilitar el proceso de actualizacin del programa. Sin embargo, es posible que al
momento de configurar una aplicacin especfica se requiera un mdulo adicional para que funcione por lo
cual hay que instalar dicha funcin si no est presente.
5. Configurar asterisk para iniciar cuando el sistema arranca e iniciar el servicio asterisk:
chkconfig asterisk on
service asterisk start
4 https://wiki.asterisk.org/wiki/display/AST/Asterisk+Packages#AsteriskPackages-YUM(CentOS6/RedHatEnterpriseLinux6)
Pg. 20
Telefona IP con Asterisk Administracin Avanzada
Al instalar asterisk mediante este mtodo, se tiene un control ms estricto sobre todas las herramientas o
mdulo que se instalan, eligiendo solamente lo que se adecue nuestras necesidades y pudiendo
personalizar la instalacin poniendo o quitando componentes de asterisk, pues, adems de funcionar como
una PBX tiene ms aplicaciones y por lo tanto al momento de su instalacin debemos tener en cuenta que
nuestro S.O disponga de software como: dahdi, drivers ODBC, bases de datos SQL, codecs, entre otros.
Un requisito bsico para realizar una correcta instalacin de Asterisk es instalar primero DAHDI: acrnimo
de Digium Asterisk Hardware Device Interface (conocido antes como Zaptel) que es el software que
asterisk usa para gestionar hardware de telefona. Es recomendable instalar este software aun si no se tiene
ningn hardware de este tipo instalado, ya que DAHDI es una dependencia requerida para construir el
mdulo de timing (relj del sistema asterisk) llamado res_timing_dahdi, mdulo que es usado para
aplicaciones como MeetMe() o troncales IAX las cuales requieren un preciso control y sincronizacin de
tiempo.
1. Si se dispone del hardware adecuado, primero conectarlo a los puertos PCI/PCIe disponibles en el
computador.
4. Descargar las fuentes de dahdi desde www.asterisk.org, adems de herramientas adicionales como
libpri (en el caso de que se est configurando E1's)
wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.4-current.tar.gz
wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-
current.tar.gz
Pg. 21
Telefona IP con Asterisk Administracin Avanzada
Dependencias generales:
yum -y install make wget ncurses-devel newt-devel gcc gcc-c++ bison postgresql postgresql-devel
yum -y install postgresql-server ncurses-devel libtermcap-devel sox newt-devel libxml2-devel
yum -y install libtiff-devel audiofile-devel gtk2-devel sqlite-devel openssl-devel libuuid-devel
yum -y install libcurl-devel tzdata libvorbis-devel
Dependencias para soporte ODBC:
yum -y install libtool-ltdl-devel unixODBC unixODBC-devel postgresql-odbc
8. Para tener mayor informacin sobre los eventos que cursan por Asterisk, se puede iniciar la conexin al
CLI con el argumento v. El nmero de v's inidicar el nivel de invormacin que se quiere mostrar,
ejemplo:
asterisk -rvvvv
Pg. 22
Telefona IP con Asterisk Administracin Avanzada
1. Para esta prctica hay que conectarse primero al CLI (consola de asterisk) con el comando:
asterisk -rvvv
2. Observar la versin, licencia y garantia de asterisk. Adems ver la ayuda de los comandos disponibles
en el CLI:
asterisk*CLI> core show version
asterisk*CLI> core show licence
asterisk*CLI> core show warranty
asterisk*CLI> core show help
3. Comandos para reinicio, parada y recarga de asterisk:
asterisk*CLI> core restart now
asterisk*CLI> core restart when convenient
asterisk*CLI> core restart gracefully
asterisk*CLI> core stop now
asterisk*CLI> core stop when convenient
asterisk*CLI> core stop gracefully
asterisk*CLI> core reload
asterisk*CLI> module reload
asterisk*CLI> core abort shutdown
4. Observar los archivos de configuracin:
cd /etc/asterisk
5. Ingresar en el directorio en donde se almacenan los mdulos de Asterisk, los cuales sirven para aadir o
quitar funcionalidades al sistema:
cd /usr/lib/asterisk/modules
6. Ingresar en el directorio de trabajo de Asterisk y en cada uno de sus subdirectorios, aqui se encuentran
los sonidos, musica en espera, agis, claves de encriptacin, etc.:
cd /var/lib/asterisk
cd agi-bin
cd ../firmware
cd ../images
cd ../keys
cd ../moh
cd ../sounds
7. Ingresar en el directorio de spools y en sus subdirectorios, el cual almacena los mensajes grabados en
el buzn de voz, las conferencias grabadas, etc.
cd /var/spool/asterisk/outgoing
cd ../voicemail
cd ../tmp
8. Finalmente ingresamos en el directorio de logs de Asterisk.
cd /var/log/asterisk
Pg. 23
Telefona IP con Asterisk Administracin Avanzada
5 http://bytecoders.net/content/elegir-un-c%C3%B3dec-de-audio-para-asterisk.html
6 http://www.voipforo.com/codec/codecs.php
7 http://www.speex.org/
8 http://www.opus-codec.org/
Pg. 24
Telefona IP con Asterisk Administracin Avanzada
Como se observa en la tabla, los codecs g729 y g723.1 son de bajo consumo de banda pero para usarlos
hay que pagar licencias. Sin embargo estn disponibles en la red binarios de dichos codecs compilados por
intel, ya que esta ha adquirido licencias para su uso. La web es la siguiente:
http://asterisk.hosting.lv
1. Para instalar estos codecs, ingresar a la pagina web del link indicado, en dicha pgina se descarga el
binario adecuado de acuerdo al tipo de procesador del servidor y versin de Asterisk instalada. Por
ejemplo, para un procesador de 64 bits y versin de Asterisk 11.x los binarios a descargar seran:
codec_g723-ast11-gcc4-glibc-x86_64-pentium4.so
codec_g729-ast11-gcc4-glibc-x86_64-pentium4.so
Pg. 25
Telefona IP con Asterisk Administracin Avanzada
Localizar un usuario
Este protocolo ha sido definido por la IETF (The Internet Engineering Task Force) en el documento RFC
(Request for Comments) 3261. En ese documento se explica como deben funcionar programas y/o
dispositivos que quieran implementar el protocolo SIP. Desde un punto de vista del funcionamiento, los
mensajes que se envan son una mezcla entre el protocolo HTTP (Hypertext Transfer Protocol) y el
protocolo SMTP (Simple Mail Transfer Protocol) 9.
Para aclarar mejor los conceptos asociados al protocolo SIP visitar el siguiente link:
http://www.sinologic.net/2008-04/aclarando-conceptos-sip-y-voip/
Dentro del protocolo SIP existen los mtodos, que representan las distintas solicitudes que un dispositivo
puede enviar a otro. As mismo existen las correspondientes respuestas a dichas solicitudes. Se detallan a
continuacin:
Solicitudes SIP:
Pg. 26
Telefona IP con Asterisk Administracin Avanzada
Respuestas SIP:
Las solicitudes SIP son respondidas con respuestas SIP, de las cuales hay 6 clases:
1xx respuestas informativas, tal como 180, la cual significa telfono sonando
Registro SIP:
El registro consiste en que un usuario informe a la red donde puede recibir invitaciones de comunicaciones
por parte de otros usuarios, lo que permite que dicho usuario pudiera recibir un mensaje en su casa y si
luego se trasladaba al trabajo y se registra de nuevo, el mensaje lo recibiera en el trabajo y no en su casa.
El protocolo SIP permite el registro de terminales telefnicos.
Nombre de usuario
Direccin ip
En el fichero sip.conf se colocan las opciones que sern usadas cuando se establezcan llamadas a travs
del protocolo SIP, adems se crean los canales SIP.
Canal: Es el medio lgico por el cual se emite una llamada entrante o saliente. Por defecto Asterisk soporta
una serie de canales, los ms importantes son: SIP, IAX y DAHDI. Un canal estar siempre asociado a un
terminal telefnico, a una conexin de un proveedor de telefona o a un servidor de telefona.
Una parte general donde se define la configuracin global del protocolo SIP. Al momento de
configurar una extensin o una troncal, si no se definen algunos parmetros, estos sern tomados
Pg. 27
Telefona IP con Asterisk Administracin Avanzada
desde la parte general del archivo. Un ejemplo son los codecs audio.
Un bloque central donde se configura el registro a los proveedores VoIP y/o otros servidores
Asterisk .
Una parte final donde se configuran las extensiones internas, las troncales y las conexiones a otros
servidores Asterisk.
Las opciones de la seccin general son (se colocan las que son consideradas de mayor importancia):
Parmetro Descripcin
[general] Etiqueta que indica el comienzo de configuracin general.
Indica el contexto donde llegarn por defecto las llamadas no autenticadas si
context=default
allowguest=yes
Es la direccin IP y el puerto donde Asterisk se pondr a la escucha para las
sealizacin SIP utilizando el protocolo UDP. Como desde la versin 1.8, Asterisk
soporta el protocolo IPv6 es posible configurar cuatro escenarios distintos:
1. 192.168.1.0 Asterisk aceptar conexiones solamente si enviadas a la
direccin IPv4 indicada .
udpbindaddr=0.0.0.0:5060 2. 2600:3c00::f03c:91ff:fedf:a455 - Asterisk aceptar conexiones solamente si
enviadas a la direccin IPv6 indicada .
3. 0.0.0.0 Asterisk aceptar conexiones en todas las direcciones IPv4
presentes en el servidor Linux .
4. :: - Asterisk aceptar conexiones en todas las direcciones IPv4 e IPv6
presentes en el servidor Linux .
Es la direccin IP y el puerto donde Asterisk se pondr a la escucha para las
sealizacin SIP utilizando el protocolo TCP. Como para el protocolo UDP es posible
;tcpbindaddr=0.0.0.0:5060
utilizar cuatro escenarios distintos para indicar IP y puerto de escucha. En este caso
se configurar para que escuche en todas las direcciones Ipv4 puerto 5060.
Desde la versin 1.6 es posible configurar Asterisk para que permita la sealizacin
tcpenable=no
SIP sobre el protocolo TCP.
Desde la version 1.8 este parmetro indica que protocolo de transporte se usar en
transport=udp
las llamadas, valores: udp,tcp
Asterisk se presentar con este nombre al momento de comunicarse con otros
useragent=asterisk-#PC
servidores o proveedores SIP.
Si al servidor es asociado un dominio registrado, se puede definir este parmetro para
realm=#PC.asterisk.test que la autentificacin se haga utilizando ese nombre de dominio (digest authentication
RFC2617).
Permite hacer bsquedas de registros DNS SRV basadas en los nombres de dominio
srvlookup=yes para llamadas SIP salientes del tipo: SIP/usuario@dominio. Asterisk hace esta
bsqueda limitndose al primer valor encontrado.
disallow=all Se deshabilita los codecs indicados en las llamadas que se establezcan.
allow=ulaw,gsm,alaw,g729 Se habilitan los codecs indicados en las llamadas que se establezcan.
Se permite el flujo media directo (audio mediante el protocolo RTP) entre los
directmedia=no terminales. El flujo directo solo es posible cuando los terminales no se encuentran
detrs de un NAT . Valores: yes, no
Protocolo para el envo de los DTMF (Dual-Tone Multi- Frequency). Son los tonos que
se generan cuando se presionan las teclas del telfono. Valor: rfc2833 Otro valor
dtmfmode=rfc2833
bastante comn es inband. Con inband los tonos se envan en el flujo audio (protocolo
RTP). Inband no funciona con el codec audio G729 .
language=es El idioma predefinido para los archivos de audio.
Mediante este paramentro, Asterisk enviar un paquete SIP OPTIONS regularmente
qualify=yes
para chequear si el terminal est en linea.
Cada cuantos segundos enviar un paquete OPTIONS al terminal registrado en
Asterisk. Esto permite saber si al terminal es alcanzable. El mtodo OPTIONS del
qualifyfreq=60
protocolo SIP se utiliza tambin para conocer los mtodos disponible en un
determinado cliente.
allowtransfer=yes En casi todos los telfonos SIP, a lo largo de una llamada, es posible presionar un
botn para transferirla a otra extensin. Este parmetro define si Asterisk aceptar
Pg. 28
Telefona IP con Asterisk Administracin Avanzada
Finalmente se tiene las opcione especficas para los canales (se colocan las que son consideradas de
mayor importancia):
Parmetro Descripcin
Nombre del canal SIP con el cual un terminal ser identificado. No es necesariamente el
[nombre]
nmero que se usar para contactar a dicho canal.
friend=es un user y peer al mismo tiempo
user: una extensin que se autentica al servidor Asterisk usando el campo from para
type=friend hacer llamadas.
peer una extensin que se autentica para las llamadas entrantes utilizando la direccin
IP y el puerto
Si el terminal se conecta remotamente con un IP dinmico se pone dynamic. En caso
host=dynamic
contrario se pone la direccin IP.
secret= La contrasea para la extensin. Personalizar.
;mailbox= Si este parmetro es configurado, cuando la extensin se conecte al servidor Asterisk,
ste
Pg. 29
Telefona IP con Asterisk Administracin Avanzada
Para mayor profundidad y referencia en cuanto a la configuracin del fichero sip.conf, referirse al siguiente
link:
http://www.voip-info.org/wiki/view/Asterisk+config+sip.conf
1. Abrir el fichero /etc/asterisk/sip.conf y segn los parametros explicados en la tabla anterior, configurar el
archivo. Cuando se deben configurar muchas extensiones, se pueden crear templates (plantillas) donde
se definen todos los parmetros compartidos por todas las extensiones. Luego por cada una de ellas,
se configuran solamente los parmetros que la diferencian de las dems. Para crear un template la
primera linea debe tener esta sintaxis: [nombreplantilla](!) . Crear una plantilla para hardphones y otra
para softphones:
[general]
context=default
udpbindaddr=0.0.0.0:5060
realm=instructor.asterisk.test
tcpenable=no
transport=udp
srvlookup=yes
useragent=instructor
disallow=all
allow=ulaw,gsm,g729
directmedia=no
dtmfmode=rfc2833
language=es
qualify=yes
;insecure=invite,port
allowtransfer=yes
allowguest=no
qualifyfreq=60
alwaysauthreject=yes
rtptimeout=60
rtpholdtimeout=240
allowsubscribe=yes
callcounter=yes
Pg. 30
Telefona IP con Asterisk Administracin Avanzada
disallow=all
allow=ulaw,gsm
deny=0.0.0.0/0.0.0.0
permit=192.168.100.0/255.255.255.0
[telefono-201](hardphones)
callerid=Recepcion <201>
;mailbox=201@default
[telefono-202](hardphones)
callerid=Operaciones <202>
;mailbox=202@default
[telefono-203](hardphones)
callerid=Gerencia <203>
;mailbox=203@default
[telefono-251](softphones)
callerid=Alumno <251>
;mailbox=251@default
[telefono-252](softphones)
callerid=Ventas <252>
;mailbox=252@default
[telefono-253](softphones)
callerid=Marketing <253>
;mailbox=253@default
3. Ahora se debe configurar los telfonos IP con los datos de las cuentas SIP creadas. Esto depende del
terminal y marca del dispositivo disponible. Una vez los terminales se registran ya se puede observar su
estado con el siguiente comando:
asterisk*CLI> sip show peers
Pg. 31
Telefona IP con Asterisk Administracin Avanzada
Ancho de banda
IAX utiliza un menor ancho de banda que SIP ya que los mensajes son codificados de forma binaria
mientras que en SIP son mensajes de texto. Asimismo, IAX intenta reducir al mximo la informacin de las
cabeceras de los mensajes reduciendo tambin el ancho de banda.
NAT
En IAX la sealizacin y los datos viajan conjuntamente con lo cual se evitan los problemas de NAT que
frecuentemente aparecen en SIP. En SIP la sealizacin y los datos viajan de manera separada y por eso
aparecen problemas de NAT en el flujo de audio cuando este flujo debe superar los routers y firewalls. SIP
suele necesitar un servidor STUN para estos problemas.
Estandarizacin y uso
SIP es un protocolo estandarizado por la IETF hace bastante tiempo y que es ampliamente implementado
por todos los fabricantes de equipos y software. IAX fue estandarizado hace poco tiempo y es por ello
queno se encuentra en muchos dispositivos existentes en el mercado.
Utilizacin de puertos
IAX utiliza un solo puerto (4569) para mandar la informacin de sealizacin y los datos de todas sus
llamadas. Para ello utiliza un mecanismo de multiplexin o "trunking". SIP, sin embargo utiliza un puerto
(5060) para sealizacin y 2 puertos RTP por cada conexin de audio (como mnimo 3 puertos). Por
ejemplo para 100 llamadas simultaneas con SIP se usaran 200 puertos (RTP) ms el puerto 5060 de
sealizacin. IAX utilizara slo un puerto para todo (4569)
En SIP si utilizamos un servidor la sealizacin de control pasa siempre por el servidor pero la informacin
de audio (flujo RTP) puede viajar extremo a extremo sin tener que pasar necesariamente por el servidor SIP.
En IAX al viajar la sealizacin y los datos de forma conjunta todo el trfico de audio debe pasar
obligatoriamente por el servidor IAX. Esto produce una aumento en el uso del ancho de banda que deben
soportar los servidores IAX sobretodo cuando hay muchas llamadas simultneas.
Otras funcionalidades
IAX es un protocolo pensado para VoIP y transmisin de video y presenta funcionalidades interesantes
como la posibilidad de enviar o recibir planes de marcado (dialplans) que resultan muy interesante al usarlo
conjuntamente con servidores Asterisk. SIP es un protocolo de proposito general y podra transmitir sin
dificultad cualquier informacin y no slo audio o video. 12
Parmetros de configuracin:
Son tiles los parmetros generales del sip.conf, adicionalmente se colocan los siguientes de mayor
importancia:
12 http://www.voipforo.com/IAX/IAXvsSIP.php
Pg. 32
Telefona IP con Asterisk Administracin Avanzada
Parmetro Descripcin
[general] Esta etiqueta define el inicio de la parte general de la configuracin del protocolo IAX2
El puerto UDP usado por este protocolo. Este parmetro va configurado antes del
bindport=4569
bindaddr.
Es la direccin IP y el puerto donde Asterisk se pondr a la escucha para las
bindaddr=0.0.0.0 sealizacin IAX2 utilizando el protocolo UDP. Si se indica 0.0.0.0 Asterisk escuchar en
todas la direcciones IP presentes en el servidor Linux.
Mejora la seguridad contra brute force password attacks retrasando el envo de los
delayreject=yes
rechazos de autentificacin .
Con este parmetro se define el ancho de banda disponible para las llamadas y en base
bandwith=high a este se escogern los codecs audio a utilizar entre los configurados. Este parmetro
acepta como valores: low, medium, high
minregexpire=60 Tiempo mnimo de espiracin del registro de las troncales IAX2
maxregexpire=60 Tiempo mximo de espiracin del registro de las troncales IAX2
encryption=yes Se habilita el cifrado de la sealizacin y del flujo media
forceencryption=no No se fuerza el uso del cifrado
Define el tamao mximo de los datos (bytes) que pueden pasar por una troncal IAX2
;trunkmaxsize=128000 cuando se configura el parmetro trunk=yes. Con 128000 bytes pasarn por la troncal
800 llamadas con codec alaw y paquetes audio de 20ms
Cuando el trafico que pasa por una troncal IAX2 es bastante alto, si los paquetes UDP los
fragmenta el sistema operativo Linux, hay la posibilidad que se verifique una mala calidad
trunkmtu=1240 del audio. Configurando este parmetro con el valor 1240, significa que ser el mismo
Asterisk el que se encargar de fragmentar los paquetes audio ms grandes de 1240
byte, mejorando la calidad del audio en las conversaciones
Si no se recibe un ACK despus de una NEW enviado dentro de 2000ms, para evitar que
autokill=ues
el servidor Asterisk se estanque, se anula la solicitud
En septiembre del 2009 hubo una actualizacin del protocolo IAX2 para mejorar la
calltokenoptional=0.0.0. seguridad. Este parmetro con el que sigue hace referencia a esa nueva implementacin.
0/0.0.0.0 Como la mayora de los telfonos IAX no la soportan se indica que es opcional para
todas las direcciones IP. 0.0.0.0/0.0.0.0
requirecalltoken=auto Se requiere el calltoken solo si el telfono lo soporta
Para los canales, son vlidos la mayora de parmetros de configuracin vistos en sip.conf.
Pg. 33
Telefona IP con Asterisk Administracin Avanzada
1. Editar el fichero iax.conf, poner los parmetros indicados para la seccin general y crear un canal iax.
Recuerde que tambin se puede aplicar el concepto de plantillas usado en el sip.conf
[general]
bindport=4569
bindaddr=0.0.0.0
delayreject=yes
srvlookup=yes
language=es
bandwidth=medium
disallow=all
allow=g722,ulaw,gsm
minregexpire=60
maxregexpire=60
encryption=yes
forceencryption=no
;trunkmaxsize=128000
trunkmtu=1240
autokill=yes
calltokenoptional=0.0.0.0/0.0.0.0
requirecalltoken=auto
[telefono-301]
type=friend
host=dynamic
secret=*4st3r1sk-I
context=softphones
;mailbox=301@default
qualify=yes
callerid=Ventas <301>
requirecalltoken=auto
deny=0.0.0.0/0.0.0.0
permit=192.168.100.0/255.255.255.0
2. Recargar la configuracin de asterisk y observar los canales iax creados:
asterisk*CLI> iax2 reload
asterisk*CLI> iax2 show peers
3. Realizar la configuracin de canales iax2 mediante plantillas, similar a lo realizado en la prctica de
canales SIP.
Pg. 34
Telefona IP con Asterisk Administracin Avanzada
;;PUERTO FXO
signalling=fxs_ks
callerid=asreceived
group=0
context=entrada-pstn
channel => 1
;;PUERTO FXS
signalling=fxo_ks
callerid="Recepcion" <1001>
;mailbox=1001@default
group=1
context=telefonos
channel => 2
Pg. 35
Telefona IP con Asterisk Administracin Avanzada
CAPTULO 2
DIALPLAN
La parte globals donde se definen las variables globales que se van a utilizar en la central.
Una ultima parte donde queda toda las configuracin de las llamadas.
Parmetro Descripcin
[general] Inicio de la configuracin general del dialplan.
Si static es yes y writeprotect es no, para guardar los cambios hechos desde la consola
static=yes
de asterisk tendremos que escribir el comando dialplan reload.
En caso contrario se actualizar automticamente pero perderemos todos los
writeprotect=no;
comentarios presentes en el archivo.
autofallthrough=yes Si es yes cuando alguna llamada, por algn motivo se sale del plan se terminar.
Algunas aplicaciones y/o funciones tienen la capacidad, bajo algunas circunstancias de
"saltar" desde la prioridad donde se encuentran a una prioridad que normalmente es
priorityjumping=yes
n=+101 donde n es el numero de la lnea que se est ejecutando. Si est en yes har ese
salto sino, no.
En esta seccin se definen las variables globales que se van a poder utilizar en el resto
de los contextos. Por ejemplo:
[globals] CONSOLE=Console/dsp ;indica que cuando hagamos referencia a la variable CONSOLE
estamos llamando a /Console/dsp
Las variables suelen ponerse siempre en mayusculas para diferenciarlas posteriormente.
Contextos
Los contextos son colecciones de extensiones agrupadas bajo un criterio comn. Se pueden usar para
implementar algunas caractersticas como:
Seguridad y autenticacin: Permitir llamadas a ciertos destinos solo de telfonos especficos (por
ejemplo llamadas internacionales solo desde gerencia). Inclusive se puede solicitar contrasea para
realizar llamadas a algunos nmeros.
Pg. 36
Telefona IP con Asterisk Administracin Avanzada
Contestador automtico: Recibir a los llamantes y pedirles que ingresen cierta extensin.
Menus multinivel: Menus para categoras dentro de una empresa como contabilidad, ventas,
gerencia, etc.
Privacidad: Crear listas negras de nmeros que no pueden contactar una extensin/extensiones.
Cada contexto se pone con un nombre entre corchetes []. Todas las lineas de un determinado contexto
tienen el mismo formato:
La prioridad se refiere al orden en que se ejecutan las instrucciones. Primero se ejecuta la de prioridad 1,
luego la 2 y sucesivamente. Asterisk procesa las lneas secuencialmente, comenzando del nmero ms bajo
al ms alto. Se puede colocar la prioridad n (next), con lo cual asterisk incrementar la prioridad en 1 en
cada linea de ejecucin.
Extensin
En asterisk se define como un conjunto de comandos que se ejecutan para realizar una determinada tarea
que provee un servicio. Desde el punto de vista de la programacin, una extensin sera el nombre de un
script que se ejecuta para proveer una funcin especfica. La extensin puede ser alfanumrica.
En las figura siguiente, se puede observar como cuando se cursa una llamada, esta pertenece a un
Dialplan, dentro de esta pertenecer a un contexto, y aqu a una extensin que como se dijo es un conjunto
de comandos que sern ejecutadas en orden.
Pg. 37
Telefona IP con Asterisk Administracin Avanzada
Cuando se hace una llamada desde un telfono, asterisk busca a que contexto pertenece dicho canal (en
sip.conf o iax.conf) y lo enlaza con el contexto especificado en el dialplan, ejecutando la extensin asociada
a ese contexto que fue marcada desde el telfono. Como ejemplo observar el grfico inferior:
Crear un contexto llamado pruebas y en l escribir las siguientes aplicaciones del dialplan. Recargar la
configuracin con los siguientes comandos y probar:
asterisk*CLI> dialplan reload
1. Reproducir sonido de bienvenida:
exten => 500,1,Playback(demo-congrats)
exten => 500,2,Hangup()
4. Extension start:
exten => 503,1,Goto(pruebas2,s,1)
Pg. 38
Telefona IP con Asterisk Administracin Avanzada
Se probar ahora el realizar llamadas entre los terminales SIP, DAHDI e IAX que se han configurado. Crear
el contexto interno y escribir la siguiente configuracin:
Pg. 39
Telefona IP con Asterisk Administracin Avanzada
Para esto el identificador de extensin debe iniciar con el smbolo _. Los caracteres que pueden usarse
son los siguientes:
i extensin invlida; usada cuando al pedir el ingreso de una extensin, sta no existe dentro del contexto
actual.
t timeout extensin; usada cuando al pedir el ingreso de una extensin, se supera el tiempo de espera al
no haber ingresado nada.
T Absolute timeout
s start extension; usada cuando no hay ninguna coincidencia con otras extensiones dentro de un contexto
dado. Tambin se usa cuando para comenzar una llamada y dentro de macros.
a Ejecutada cuando el usuario presiona * durante un saludo de buzn de voz
h Extensin para colgar
o Extensin de operador, usada para salir del buzn de voz presionando 0
failed Usada si una llamada automtica falla.
fax Usada para deteccin de fax en canales dahdi
Talk Usada en conjunto con la aplicacin Backgrounddetect()
Pg. 40
Telefona IP con Asterisk Administracin Avanzada
2.4 VARIABLES
Asterisk puede usar variables globales, compartidas o variables de canal como argumentos para los
comandos dentro del dialplan. Estas son referenciadas dentro del dialplan usando la siguiente sintaxis:
${NOMBRE:offset:longitud}
Si se usan los indicadores offset y logitud la variable resultante es un substring de la variable original, que
comienza en la posicin indicada por el offset y contiene un nmero de caracteres indicado por longitud
contados hacia la derecha. El primer carcter se cuenta en la posicin 0.
Si longitud es omitido o es negativo, se toma todos los caracteres indicados despues de la posicin
offset. Ejemplos:
Concatenacin:
http://www.voip-info.org/wiki/view/Asterisk+variables
Un comando til para ver el contenido de una variable es NoOp: NoOp(${VARIABLE}) . Tambin se puede
usar la aplicacin verbose: Verbose(0,${VARIABLE})
Pg. 41
Telefona IP con Asterisk Administracin Avanzada
2.5 FUNCIONES
Las funciones son usadas dentro del dialplan para dinamizarlo. No pueden ser usadas directamente como
las aplicaciones, en vez de esto, las funciones retornan valores como si se tratasen de variables
inteligentes. De hecho al trabajar con funciones se asumen las mismas consideraciones que con las
variables.
Su sintaxis es la siguiente:
NOMBRE_FUNCION(argumentos)
Tambin se puede obtener el valor de una funcin, somo si se tratase de una variable:
${NOMBRE_FUNCION(argumento)}
Adems, se puede encapsular una funcin en otra:
${NOMBRE_FUNCION_1(${NOMBRE_FUNCION_3(argumento)})}
Para conocer un listado de funciones de asterisk y lo que estas realizan, dirigirse hacia:
http://www.voip-info.org/wiki/view/Asterisk+functions
2. Con los conocimientos adquiridos, implementar un contador decremental con la funcin DEC()
Pg. 42
Telefona IP con Asterisk Administracin Avanzada
2.6 APLICACIONES
Las aplicaciones son los obreros del dialplan. Cada aplicacin se encarga de realizar una accin
especfica sobre el canal activo, como por ejemplo reproducir un sonido, recibir un nmero marcado desde
el terminal telefnico, marcar a un canal, colgar la llamada, entre muchas otras tareas.
Dicho de otra manera, una aplicacin ejecuta una tarea que es percibible por el usuario.
Su sntaxis es la siguiente:
NOMBRE_APLICACION(argumentos)
Answer(), Dial() y Hangup() son solo unos pocos ejemplos de aplicaciones del dialplan. Algunas
aplicaciones no requieren de argumentos. Para conocer todas las aplicaciones del dialplan de asterisk,
puede referirse hacia:
http://www.voip-info.org/wiki/view/Asterisk+-
+documentation+of+application+commands
2. Modificar el sip.conf para crear los canales necesarios para la prctica y asignarlos al contexto
adecuado. Adems, crear un contexto (de bienvenida) en el cual se debe colocar una extensin para
saltar al contexto ivr_menu.
3. Aadir al dialplan anterior un control de intentos para evitar que el usuario entre en un lazo repetitivo al
presionar una opcin invlida o no presionar ninguna opcin.
Pg. 43
Telefona IP con Asterisk Administracin Avanzada
1. Se utilizar el programa festival, que es un motor tts libre. Asterisk posee un mdulo y aplicacin para
usar festival, si no es as, asegurarse de instalar festival y recompilar asterisk.
yum install festival
2. Instalacin de las voces en espaol, verificar que el repositorio epel est activado:
yum --enablerepo=epel install hispavoces*
Toda la programacin y contenido para sintenizar las voces en espaol se lo tiene gracias a un proyecto
espaol de la Junta de Andalucia. Una vez instaladas las voces, se pueden ubicar en:
/usr/share/festival/lib/voices/es/ Aqu estn presentes los directorios: JuntaDeAndalucia_es_sf_diphone y
JuntaDeAndalucia_es_pa_diphone.
;(language__spanish)
(set! voice_default 'voice_JuntaDeAndalucia_es_sf_diphone)
(define (tts_textasterisk string mode)
"(tts_textasterisk STRING MODE)
Apply tts to STRING. This function is specifically designed for use in server mode so a single
function call may synthesize the string. This function name may be added to the server safe
functions."
(let ((wholeutt (utt.synth (eval (list 'Utterance 'Text string)))))
(utt.wave.resample wholeutt 8000)
(utt.wave.rescale wholeutt 5)
(utt.send.wave.client wholeutt)))
Ejecutar el servidor festival:
festival_server &>/dev/null &
Pg. 44
Telefona IP con Asterisk Administracin Avanzada
Operadores lgicos
!expr (Complemento) Retorna verdadero (true) si hay una cadena no vacia o un valor distinto de cero,
caso contrario retorna falso (false).
Operadores de comparacin
expr1 = expr2
expr1 != expr2
Operadores aritmticos
expr1 + expr2
expr1 - expr2
expr1 * expr2
expr1 / expr2
expr1 % expr2
Operadores condicionales
Parentesis: (, )
Operadores unarios !, -
Expresiones regulares: :, =~
Multiplicativos: *, /, %
Pg. 45
Telefona IP con Asterisk Administracin Avanzada
Aditivos: +, -
Lgicos: |, &
Condicionales: ? :
Los buzones de voz se han convertido en una funcionalidad siempre presente en los sistemas telefnicos
de casi todas las compaas. Estn disponibles en sistemas de telefona fija, mvil
Caractersticas
Es capaz de:
Almacenar los mensajes de voz en casillas personalizadas asociadas al nmero del usuario
Notificar al destinatario mediante una llamada o correo electrnico que le ha llegado un mensaje a
su casilla de voz
Proveer seguridad y confidencialidad, ya que para acceder al mismo se debe introducir una clave,
de manera que slo el usuario pueda escuchar los mensajes
Dar a conocer la fecha y hora de los mensajes, y el nmero telefnico desde el que se recibe.
Los pasos para configurar el voicemail en asterisk son los siguientes. Si se desea tener la funcionalidad de
enviar un correo electrnico, hay que configurar a postfix, el MTA de Linux como un relay de una cuenta de
correo electrnico existente, compatible con el estandar SMTP 14:
1. Editar el fichero voicemail.conf, como lo indique el instructor. Tener en cuenta la siguiente tabla para la
configuracin de fechas de envo:
13 http://es.wikipedia.org/wiki/Buz%C3%B3n_de_voz
14 http://www.howtoforge.com/postfix_relaying_through_another_mailserver
Pg. 46
Telefona IP con Asterisk Administracin Avanzada
Opcin Descripcin
'filename' filename of a soundfile (single ticks around the filename required)
${VAR} variable substitution
A or a Day of week (Saturday, Sunday, ...)
B or b or h Month name (January, February, ...)
d or e numeric day of month (first, second, ..., thirty-first)
Y Year
I or i Hour, 12 hour clock
H Hour, 24 hour clock (single digit hours preceded by "oh")
k Hour, 24 hour clock (single digit hours NOT preceded by "oh")
M Minute
P or p AM or PM
Q "today","yesterday" or ABdY (*note: not standard strftime value)
q "(for today)", "yesterday", weekday, or ABdY (*note: not standard strftime value)
R 24 hour time, including minute
[general]
format=wav49
serveremail=usuario@servidor.com
attach=yes
delete=no
maxmsg=10
maxsecs=120
minsecs=5
maxgreet=30
skipms=3000
maxsilence=3
maxlogins=3
silencethreshold=128
directoryintro=dir-intro
charset=UTF-8
pbxskip=yes
fromstring=Asterisk PBX
usedirectory=yes
emailsubjetc=Nuevo mensaje de voz ${VM_MSGNUM}
Pg. 47
Telefona IP con Asterisk Administracin Avanzada
2. Con esto tenemos ms que suficiente para componer mensajes para el buzn de voz y enviarlos por
email. Ahora vienen los contextos, si es [default] es el genrico, y luego los contextos especficos.
Ejemplo.
[prueba]
1234 => 5678,Buzon de Ejemplo,ejemplo@buzones.com
En primer lugar, el nmero del buzn, luego lo utilizaremos en el Dialplan para la aplicacin
Voicemail as referirnos a este buzn.
En segundo lugar, la contrasea para acceder al buzn. Tendremos que crear una extensin en el
Dialplan para que el usuario pueda acceder a su buzn de forma interna. Esto solo es til si no
marcamos la opcin de borrado de mensajes del buzn al ser enviados por email
En tercer lugar, nombre del buzn que luego utilizaremos en variables como VM_NAME
3. Crear dentro del contexto adecuado las extensiones y sintaxis adecuada para que cuando se llama a un
canal SIP o IAX, dependiendo del estado del canal se guarde un mensaje de voz al usuario.
4. Crear otra extensin dentro del contexto adecuado para la revisin de los mensajes de voz para el
usuario16
exten => *97,1,Set(BUZON=prueba)
same => n,Answer()
same => n,VoiceMailMain(${CALLERID(num)}@${BUZON})
same => n,Hangup
15 http://10000horas.com/asterisk/2011/01/30/conquistando-el-dialplan-i-aplicaciones-asterisk-voicemail/
16 http://voztovoice.org/?q=node/53
Pg. 48
Telefona IP con Asterisk Administracin Avanzada
1. QUITO (sip.conf):
[general]
insecure=no
register => quito:Ast3r1sK_truNk@dir_ip_guayaquil
[guayaquil]
type=peer
context=entrada_trunk
host=dir_ip_guayaquil
disallow=all
allow=ulaw,gsm
secret=4st3r1sk
qualifyfreq=180
qualify=yes
insecure=no
dtmfmode=rfc2833
srvlookup=yes
deny=0.0.0.0/0.0.0.0
permit=dir_ip_guayaquil/255.255.255.255
defaultuser=quito
2. GUAYAQUIL (sip.conf):
[general]
insecure=no
register => guayaquil:Ast3r1sK_truNk@dir_ip_quito
[quito]
type=peer
context=entrada_trunk
host=dir_ip_quito
disallow=all
allow=ulaw,gsm
17 http://www.voip-info.org/wiki/view/Asterisk+-+dual+servers
Pg. 49
Telefona IP con Asterisk Administracin Avanzada
secret= 4st3r1sk
qualifyfreq=180
qualify=yes
insecure=no
dtmfmode=rfc2833
srvlookup=yes
deny=0.0.0.0/0.0.0.0
permit=dir_ip_guayaquil/255.255.255.255
defaultuser=guayaquil
3. QUITO: (iax.conf)
[general]
[guayaquil]
type=peer
secret=Ast3r1sK_truNk
auth=md5
context=entrada_trunk
host=dir_ip_guayaquil
trunk=yes
allow=g729,gsm
qualify=yes
4. GUAYAQUIL (iax.conf):
[general]
[quito]
type=peer
secret=Ast3r1sK_truNk
auth=md5
context=entrada_trunk
host=dir_ip_quito
trunk=yes
allow=g729,gsm
qualify=yes
5. Los terminales en los dos servidores deben tener distinta numeracin, caso contrario, el nmero de
origen (CALLERID deben ser modificado al momento de realizar la llamada.
6. Crear el contexto adecuado para realizar las llamadas de salida, colocando extensiones con prefijos
para diferenciar el destino. De igual manera crear un contexto de entrada para recibir las llamadas
provenientes desde el servidor remoto.
Pg. 50
Telefona IP con Asterisk Administracin Avanzada
2.9 MACROS
Un macro es similar a una funcin en cualquier lenguaje de programacin, es decir, un segmento de codigo
que puede llamarse o usarse en cualquier parte del programa. Permite simplificar el uso de tareas
repetitivas en el dialplan.
Dentro del dialplan, se define una macro como un contexto ms, de la forma:
[macro-nombremacro]
En donde la cadena de texto nombremacro indica el nombre que se le dar a la macro. Luego dicho
nombre servir para llamarla dentro del dialplan, de la siguiente manera:
[contexto]
exten => ext,pri,Macro(nombremacro,arg1,arg2,...,argn)
Los argumentos son valores numricos o texto que se pasan a la macro para que luego esta pueda trabajar
internamente con una serie de variables: ${ARG1}, ${ARG2},..., ${ARGn}; que se asignan en orden segn el
nmero de argumentos enviados a la macro. Ademas tambin se tiene las variables MACRO_CONTEXT,
MACRO_EXTEN y MACRO_PRIORITY, que indican el contexto, la extension y la prioridad original en la que
se llamo al macro.
[macro-buzon]
exten => s,1,Goto(s-${DIALSTATUS},1)
exten => s-CANCEL,1,Hangup
exten => s-CONGESTION,1,Congestion
same => n,Hangup
exten => s-BUSY,1,Voicemail(${CALLERID(num)}@${ARG1},b)
same => n,Hangup
exten => s-NOANSWER,1,Voicemail(${CALLERID(num)}@${ARG1},u)
same => n,Hangup
exten => _s-.,1,Voicemail(${CALLERID(num)}@${ARG1},u)
same => n,Hangup
Pg. 51
Telefona IP con Asterisk Administracin Avanzada
Call parking: Desde un canal mediante una combinacin de teclas, se puede dejar la llamada
parqueada en un canal virtual. Una vez se cierre la presente llamada, se puede tomar desde otro
canal la llamada parqueada y continuar la conversacin. 18
Funciones personalizadas: Se puede programar una tarea especfica en el dialplan para realizar.
Todo esto se configurar en el archivo features.conf, el cual puede contener los siguientes parmetros:
Parmetro Descripcin
[general] Inicia la parte general del archivo
parkext => 700= numero de extensin donde transferir una llamada para parquearla.
parkpos => 701-709= numero de extensiones reservadas para parquear las llamadas
parkinghints no =las prioridades Hint para monitorear el estado de las extensiones dedicadas al parqueo
hay que configurarlas manualmente en el dialplan. Con yes se crean de forma automtica.
parkingtime => Numero de segundos que quedar parqueada una llamadas. Pasado ese tiempo la llamada
se transfiere a la extensin definida en el prximo parmetro. Valor 45.
comebacktoorigin yes= la llamada parqueada se transfiere a la extensin que la parque. Con no se enva al
contexto parkedcallstimeout, extensin s, prioridad 1. En ese caso hay que crear el
contexto en el dialplan.
courtesytone Locucin que se enviar al canal parqueado cuando alguien lo llama o cuando se
activa/desactiva la grabacin de la llamada Valor beep.
parkedplay Define a quien hay que enviar el courtesytone. Puede ser:
parked (canal parqueado)
caller (quien llama un canal parqueado)
both(ambos)
parkedcalltransfers Activa o desactiva la secuencia de tonos para transferir la llamada cuando es una llamada
parqueada. Puede ser:
callee (llamado)
caller(llamante)
both (ambos)
no (no permitido)
parkedcallreparking Activa o desactiva la secuencia de tonos para parquear la llamada cuando es una llamada
parqueada. Puede ser:
callee (llamado)
caller(llamante)
both (ambos)
no (no permitido)
parkedcallhangup Activa o desactiva la secuencia de tonos para terminar una llamada cuando es una llamada
parqueada. Puede ser:
callee (llamado)
caller(llamante)
both (ambos)
18 http://www.voztovoice.org/?q=node/78
Pg. 52
Telefona IP con Asterisk Administracin Avanzada
no (no permitido)
parkedcallrecording Activa o desactiva la secuencia de tonos para grabar una llamada cuando es una llamada
parqueada. Puede ser:
callee (llamado)
caller(llamante)
both (ambos)
no (no permitido)
parkedmusicclass La clase de msica en espera que escuchar el canal que ha sido parqueado. Valor default
transferdigittimeout => Numero de segundos de espera entre los dgitos cuando se est transfiriendo una llamada.
Valor 5
xfersound La locucin que avisar que la transferencia de llamada asistida ha tenido xito. Valor beep
xferfailsound La locucin que avisar que la transferencia de llamada no ha tenido xito. Valor beeperr
pickupexten Secuencia de tonos para capturar la llamada de una extensin que est timbrando.
Depende de la configuracin de los parmetros callgroup y pickupgroup de cada extensin.
Valor *8
pickupsound La locucin que avisar que la captura de llamada ha tenido xito. Valor beep
pickupfailsound La locucin que avisar que la captura de llamada no ha tenido xito. Valor beeperr
featuredigittimeout Tiempo mximo de espera entre los dgitos para activar las funcionalidades definidas
despus de la etiqueta [featuremap] (en mili segundos) Valor 2000
atxfernoanswertimeout Tiempo mximo disponible para contestar una transferencia asistida (en segundos). Valor
15
atxferdropcall Si quien transfiere una llamada con el mtodo asistido cuelga antes que la llamada sea
transferida completamente, Asterisk devuelve la llamada a quien la estaba transfiriendo. Si
est en yes la llamada no se devuelve y se considera terminada. Valor no
atxferloopdelay Numero de segundos de espera antes de intentar nuevamente devolver la llamada (si
atxferdropcall = no). Valor 10
atxfercallbackretries Numero de veces que se intentar devolver una llamada transferida a quien la transfiri sin
xito. Valor 2
;[parkinglot_empresa2] Se puede crear ms de un bloque de extensiones para parquear las llamadas. Un ejemplo
es si quiere diferenciar las llamadas parqueadas por el departamento de ventas, de las
llamadas parqueadas por el departamento de compras. La etiqueta define el nuevo bloque
y los tres parmetros que siguen el contexto, el numero de las extensiones reservadas y
como se van utilizando las extensiones. Para asignar una extensin a un determinado slot
de parqueo, en la configuracin de la extensin en el sip.conf, parmetro parkinglot, se
pone el nombre del contexto presente en la linea que sigue. Se dejan las cuatro lineas
comentadas.
;context => empresa2
;parkpos => 801-810
;findslot => next
[featuremap] A partir de esta etiqueta empieza la configuracin de las funcionalidades
blindxfer => #= tecla para activar la transferencia ciega
disconnect => *0 = secuencia de dgitos para terminar una llamada
automon => *1= secuencia de dgitos para iniciar la grabacin de la llamada (en dos archivos audio, uno
para cada canal)
atxfer => *2= secuencia de dgitos para activar la transferencia asistida
parkcall => *7= secuencia de dgitos para parquear una llamada (se puede usar esta secuencia o
#700)
automixmon => *3= secuencia de dgitos para iniciar la grabacin de una llamada (en un nico archivo
audio donde se mezclarn los dos canales audio)
[applicationmap] A partir de esta etiqueta se pueden configurar funcionalidades personalizadas. La sintaxis
es: <FeatureName> => <DTMF_sequence>,<ActivateOn>[/<ActivatedBy>],<Application>
[,<AppArguments>[,MOH_Class]]
FeatureName: El nombre de la funcionalidad;
DTMF_sequence: la secuencia de dgitos para activar la funcionalidad;
ActivateOn: aqu se define para quien activar la funcionalidad. Los valores son self y peer.
Con self la funcionalidad se activa para quien la activa, con peer para el otro canal;
ActivatedBy: Este parmetro define quien tiene acceso a la funcionalidad. Las opciones
Pg. 53
Telefona IP con Asterisk Administracin Avanzada
1. Editar el fichero features.conf. Ver los siguientes parmetros indicados en las tablas para una correcta
configuracin.
[general]
parkext => 700
parkpos => 701-710
context => parkedcalls
parkinghints = yes
parkingtime => 45
comebacktoorigin = yes
courtesytone = beep
parkedplay = caller
parkedcallreparking = caller
parkedmusicclass=default
xfersound = beep
xferfailsound = beeperr
featuredigittimeout = 2000
atxfernoanswertimeout = 15
atxferdropcall = no
atxferloopdelay = 10
atxfercallbackretries = 2
pickupexten=*8
[featuremap]
blindxfer => #
disconnect => *
automon => *1
atxfer => *2
parkcall => *7
automixmon => *3
19 http://voztovoice.org/?q=node/80
Pg. 54
Telefona IP con Asterisk Administracin Avanzada
2. Y en el contexto interno:
[interno]
include => parkedcalls
3. Y finalmente al momento de marcar con la aplicacin dial, colocar opciones adicionales para hacer uso
de las funciones configuradas, las opciones son las siguientes (se presentan con algunos ejemplos)
exten => 2000,1,Dial(SIP/2000,30,hH)
h: permite al llamado colgar la llamada usando la tecla **
Callgroup y Pickupgroup
Pg. 55
Telefona IP con Asterisk Administracin Avanzada
Nacionales: nmeros de 9 dgitos que comienzan con 0 y cuyo 2 dgito vara entre 2 a 8.
Internacionales: nmeros de longitud variable que comienzan con 00 seguidos de uno de los prefijos
asignados por la ITU20, ej:
Estados Unidos: 1
Colombia: 57
Per: 51
Espaa: 34
China: 86
Es recomendable habilitar solo los destinos ms usados para evitar fraudes telefnicos por fallas en la
configuracin de asterisk.
1. Crear una macro genrica para las llamadas de salida, a la cual se le pasara como argumento el
nmero de destino como se explic anteriormente:
[macro-salida]
;--
Forma de uso:
ARG1: Protocolo
ARG2: Canal
;
exten => s,1,Dial(${ARG1}/${ARG2}/${MACRO_EXTEN},50,tT)
same => n,Hangup()
same => n,MacroExit()
[servicios]
exten => _1[78]00X.,1,Macro(salida,SIP,cnt)
20 http://es.wikipedia.org/wiki/Anexo:Prefijos_telef%C3%B3nicos_internacionales
Pg. 56
Telefona IP con Asterisk Administracin Avanzada
[local]
exten => _[2-9]XXXXXX,1,Macro(salida,SIP,cnt)
[nacional]
exten => _0[2-8]XXXXXXX,1,Macro(salida,SIP,cnt)
[celular]
exten => _09XXXXXXXX,1,Macro(salida,SIP,cnt)
[internacional]
exten => _001X.Macro(salida,SIP,cnt)
1. En los canales sip o iax, agregar el parmetro setvar, el cual registrar una variable que posteriormente
se usar dentro del dialplan para limitar el nmero de llamadas salientes por cada canal:
setvar=MAXCALLS=2
2. Modificar la macro salida, para usar las funciones GROUP y GROUP_COUNT y limitar de esta manera
el nmero de llamadas salientes:
[macro-salida]
;--
MACRO para llamadas de salida
Forma de uso:
ARG1=destino
ARG2=Protocolo
ARG3=Canal
--;
exten => s,1,Set(GROUP(${ARG1})=${CHANNEL(peername)})
same => n,Set(CALLS=${GROUP_COUNT(${CHANNEL(peername)}@${ARG1})})
same => n,GotoIf($[${CALLS}<=${MAXCALLS}]?:fin)
same => n,Dial(${ARG2}/${ARG3}/${MACRO_EXTEN},50,tT)
same => n,Hangup()
same => n(fin),Playback(all-outgoing-lines-unavailable)
same => n,Hangup()
same => n,MacroExit()
Pg. 57
Telefona IP con Asterisk Administracin Avanzada
2.12 CONFERENCIA
21
Las salas de conferencia se implementan en asterisk a travs del mdulo confbridge, para su
funcionamiento hay que conocer los siguientes conceptos:
Nmero de sala de conferencia: es el nmero en el cual los llamantes ingresan para estar dentro de
la misma sala de conferencia.
Perfil user: Es el tipo de usuario que tiene acceso a las salas de conferencias con diferentes
permisos.
Men de la sala de conferencia: Es un conjunto de opciones para cada usuario dentro de la sala de
conferencias accesibles cuando se presiona algn dgito DTMF previamente configurado.
Una importante caracterstica de asterisk es la posibilidad de crear conferencias audio. En esta parte se
aprender como configurar el archivo meetme.conf y algunos ejemplos de como usar una conferencia.
Los perfiles y mens para conferencias son configurados en el fichero confbridge.conf. Este fichero contiene
3 contextos reservados que son:
[default_bridge] Esta seccin contiene todas las opciones invocadas cuando confbridge es iniciado
desde el dialplant sin un perfil bridge como argumento.
[default_user] Esta seccin cotiene todas las opciones que se invocan cuando confbridge es
iniciado desde el dialplan sin pasar como argumento un perfil de usuario.
Cada seccin contiene una definicin type, la cual determina la funcin de la seccin: bridge, user o menu.
[user_test]
type=user
admin=no ;este perfil es para usuarios normales
marked=no ;definimos si el usuario es marcado o no
startmuted=no
denoise=yes
[menu_test]
type= menu
21 https://wiki.asterisk.org/wiki/display/AST/ConfBridge+10
22 http://www.voztovoice.org/?q=node/454
Pg. 58
Telefona IP con Asterisk Administracin Avanzada
*=playback_and_continue(press&digits/1&press&digits/2&press&digits/3&press&digits/4&press
&digits/5&press&digits/6&press&digits/7&press&digits/8press&digits/9&press&digits/0)
1=toggle_mute
2=leave_conference
3=dialplan_exec(invitar,s,1)
4=decrease_listening_volume
5=reset_listening_volume
6=increase_listening_volume
7=decrease_talking_volume
8=reset_talking_volume
9=increase_talking_volume
0=no_op
2. Una vez dentro de la conferencia, si un usuario hunde la tecla * escuchar todos los comandos
disponibles. A cada tecla se le asigna un comando. Como se ver ms adelante, presionando la tecla 3
el usuario tendr la posibilidad de invitar otro usuario a la conferencia.
[invitar]
;Se define el contexto invitar para invitar un usuario a la conferencia:
exten => s,1,Playback(vm-extension)
same => n,Read(NUMERO,beep,3,,2,3)
same => n,Originate(SIP/telefono-${NUMERO},exten,conferencia,1100,1)
[conferencia]
exten => 1100,1,Confbridge(${EXTEN},conf_test,user_test,menu_test)
same => n,Hangup
4. Recargar asterisk, revisar los siguientes comandos para gestionar las salas de conferencia.
Pg. 59
Telefona IP con Asterisk Administracin Avanzada
Quizs este es el servicio ms importante y estratgico para una empresa. En base a la calidad del servicio
que ofrece y el tiempo promedio de espera, los clientes la estarn evaluando.
agents.conf
queues.conf
En el primero se configuran, definiendo algunas variables y parmetros, los agentes que atendern las
colas. En el queues.conf se configuran las colas (pueden ser una o ms), los agentes miembros de la cola y
que tipo de estrategia se utilizar para enrutar las llamadas a los distintos operadores.
Configuracin de Agentes: El fichero a editar es /etc/asterisk/agents.conf, se presenta una tabla 23 con las
principales opciones de configuracin y su funcin.
Parmetro Descripcin
[general] Etiqueta que da inicio a la parte general del archivo .
Si se define en yes el estado del agente se almacena en la base de datos interna de
persistentagents Asterisk. De esta forma cuando se reinicia Asterisk estos datos sern recargados. Valor
yes
multiplelogin Define si est permitido a una extensin conectarse como agente mltiple. Valor no
[agents] A partir de esta etiqueta inicia la configuracin de los agentes .
maxlogintries Nmero de intentos permitidos a un agente para autenticarse.
Nmero de segundos que tiene un agente para contestar una llamada entrante. Si no
autologoff
contesta dentro de ese tiempo, ser desconectado de la cola. Valor 15
yes = si la extensin desde la cual el agente se conecta se vuelve no disponible,
autologoffunavail
automticamente el agente ser desconectado de la cola
Para atender una llamada un agente tiene que presionar la tecla indicada en el prximo
ackcall
parmetro. Valor no (no tiene que presionarla) .
acceptdtmf #
permite al agente terminar una llamada presionando la tecla configurada en el prximo
endcall
parmetro .
enddtmf *
Numero de milisegundos que Asterisk esperar antes de volver a llamar un agente que
wrapuptime
acaba de terminar una llamada. Valor 5000
musiconhold Msica de espera predefinida para el agente. Valor default
locucin que el agente escuchar al terminar una llamada. Si se deja comentado ser
;goodbye=vm-goodbye
la predefinida (vm-goodbye)
updatecdr Actualiza o no el CDR con el nombre del agente. Yes
recordagentcalls Grabar o no las llamadas de los agentes.
recordformat Formato audio de las llamadas grabadas. Valor wav
;savecallsin De manera predefinida las llamadas grabadas se guardan en la carpeta:
/var/spool/asterisk/monitor Si se quiere personalizar la carpeta se indica en este
Pg. 60
Telefona IP con Asterisk Administracin Avanzada
Existen dos maneras de configurar los agentes, la forma atendida (tambin llamada esttica) y la forma
desatendida (tambin llamada dinmica). Difieren entre ellas en la forma como los agentes se conectan a
la cola y reciben llamadas de esta.
Configuracin de Colas: El fichero a editar es /etc/asterisk/queues.conf, se presenta una tabla 24 con las
principales opciones de configuracin y su funcin.
Parmetro Descripcin
[general] Etiqueta que define la parte general del archivo .
yes = se guardan los datos de los miembros de la cola activos en la base de datos
persistentmembers interna de Asterisk. Si se reinicia la PBX los miembros sern reasignados a las colas
correspondientes.
Normalmente una cola funciona de la siguiente manera. Hay unos cuantos usuarios
esperando por ser atendidos por los agentes. Cuando el usuario que est de primero
en la cola viene atendido el segundo se vuelve primero e ser atendido por el primer
agente disponible. Este comportamiento no tiene en cuenta que pueden haber muchos
autofill agentes disponibles y que podran atender los clientes sin esperar que lleguen a ser
los primeros de la cola de espera. Con este parmetro se define otro tipo de
comportamiento. Los clientes sern atendidos de manera paralela hasta que haya
agentes disponibles. De esta forma se reducen considerablemente los tiempos de
espera. Valor yes
El tipo de aplicacin utilizada para grabar las conversaciones de una cola. Puede ser
monitor-type
Mixmonitor o monitor .
Actualiza o no el valor del campo dstchannel del CDR (el registro de las llamadas) con
updatecdr
el nombre del agente.
Si un agente hace parte de ms de una cola y se ha definido su tiempo de descanso
shared_lastcall entre una llamada y otra (el parmetro wraptime), con este parmetro se define si ese
tiempo va respetado por las distintas colas de que el agente es miembro. Valor yes
Con esta etiqueta se define la primera cola de espera , para el ejemplo, se llama
[ventas]
ventas.
musiclass La msica de espera para los clientes en la cola. Valor default
Este parmetro permite crear una anuncio para que los agentes que pertenecen a ms
;announce=queue-ventas de una cola para que sepan, antes de atender una llamada, de que cola proviene el
cliente. Se deja comentado
strategy En este parmetro se define la lgica con que se enrutarn las llamadas de una cola a
los agentes:
leastrecent: Asigna la siguiente llamada al agente que ms tiempo lleva sin atender
una llamada.
fewestcalls: Asigna la siguiente llamada al agente que menos llamadas ha atendido.
random: Asigna la siguiente llamada aleatoriamente a cualquier agente disponible.
ringall: Llama todos los agentes disponibles a la vez hasta que uno conteste.
rrmemory: Distribuye las llamadas por turnos entre los agentes disponibles y
recuerda el ltimo agente al que intent llamar.
linear: Llama los agentes siguiendo el orden definido en este archivo de
Pg. 61
Telefona IP con Asterisk Administracin Avanzada
configuracin. Si son agentes dinmicos segn el orden con que se han registrado a
la cola .
wrandom: asigna la llamada aleatoriamente usando una mtrica basada en
penalidades.
Parmetro utilizado para la estadsticas de la cola. En base al numero de segundos
servicelevel configurados, en los reportes aparecer el numero de llamadas contestadas dentro del
tiempo definido. Valor 120
Si el cliente en la cola antes de ser atendido presiona una tecla del telfono ser
context enviado al contexto definido en este parmetro y a la prioridad correspondiente al
dgito que ha marcado. Valor ventas-exit
En la cola se pueden configurar dos distintos tipos de tiempos de espera. Uno a nivel
de aplicacin (dialplan) define el tiempo mximo que un cliente podr quedar en la
cola. Pasado ese tiempo sin ser atendido, el cliente saldr de la cola y se ejecutara la
siguiente prioridad presente en el dialplan. El segundo es el tiempo mximo que
timeout
timbrar la extensin de un agente antes de considerarlo no disponible y pasar al
siguiente. Este parmetro y los siguientes dos se utilizan para definir que tipo de
tiempo de espera tendr la prioridad. Este primer parmetro define por cuantos
segundos timbrar la extensin del agente. Valor 15
numero de segundos de espera antes de llamar otro agente si el primero no ha
retry
contestado dentro de los 15 segundos definidos en el parmetro anterior. Valor: 4
En este parmetro se define si se toma en consideracin el tiempo de espera definido
timeoutpriority
a nivel de aplicacin o a nivel de archivo de configuracin. Valor app (aplicacin)
El peso de la cola. Ms alto el valor, ms prioridad tendr la cola. Si hay agentes que
weight atienden ms de una cola, las colas con peso ms alto sern atendidas con prioridad
respecto a las colas con peso ms bajo. Valor 0
wrapuptime Tiempo de descanso de un agente entre una llamada y otra (en segundos) Valor 15
autopause yes = lo agentes que no atendern una llamada sern puestos en pausa
Numero mximo de personas que pueden estar esperando en la cola. Valor 50 Si se
maxlen
pone 0 no se fijar ningn limite
yes = una serie de variables sern creadas justo antes de conectar un miembro de la
setinterfacevar
cola con un cliente (vase archivo predefinido queues.conf)
yes = otra serie de variables sern creadas justo antes de conectar un miembro de la
setqueueentryvar
cola con un cliente (vase archivo predefinido queues.conf)
yes = otra serie de variables relacionadas con la cola sern creadas justo antes de
setqueuevar
conectar un miembro de la cola con un cliente (vase archivo predefinido queues.conf)
Antes de conectar el agente con el cliente se puede ejecutar la macro indicada en este
;membermacro=macro
parmetro. Se deja comentado
Cada cuanto segundos anunciar al cliente en la coda su posicin y tiempo estimado de
announce-frequency
espera. Valor 90
Para evitar que cada vez que la posicin y/o el tiempo estimado de espera de un
cliente cambie se le presente un anuncio, este parmetro define un tiempo (en
min-announce-frequency
segundos) que se esperar antes de comunicarle su nueva posicin/tiempo estimado.
Valor 15
;periodic-announce- Cada cuantos segundos presentar un anuncio personalizado al cliente en la cola de
frequency=60 espera. Se deja comentado
;random-periodic-
Los anuncio pueden ser presentado segn un orden aleatorio. Se deja comentado
announce=no
Anunciar junto a la posicin en la cola el tiempo estimado de espera. Puede ser yes,
announce-holdtime
no, u once (una sola vez)
Anuncia al cliente su posicin en la lista de espera.
Valores:
yes: si
no: no se le anuncia
announce-position more: si la posicin del cliente en la cola de espera es ms alta del numero
especificado en el prximo parmetro, se le anunciar que hay ms de valor del
prximo parmetro clientes esperando en la cola .
limit: solo los clientes con una posicin en la cola de espera menor o igual al valor
del parmetro que sigue, escucharn el anuncio de su posicin en la cola de
espera .
announce-position-limit 5
Pg. 62
Telefona IP con Asterisk Administracin Avanzada
Con este parmetro se redondea los minutos y los segundos de espera anunciados al
announce-round-seconds
cliente. Valor 20
;queue-youarenext=queue- A partir de esta linea se pueden personalizar las locuciones predefinidas de la cola de
youarenext espera.
;periodic- En este parmetro de definen los anuncios peridicos personalizados separados por
announce=anuncio1,anuncio2 una coma. Se deja comentado
;monitor-format=gsm|wav| formatos audio en que se grabarn las conversaciones de la cola de espera (si se deja
wav49 comentado, no se grabaran)
monitor-type Se define la aplicacin para grabar la conversaciones. Puede ser monitor y mixmonitor
Este parmetro con el que sigue, son los ms importantes en la configuracin de la
cola. Aqu se define si un cliente puede o no entrar a una cola de espera si no hay
agentes disponibles. Los distintos valores que se pueden utilizar, separados por una
coma, son:
paused: un agente es considerado no disponible si est en pausa (aplicacin
PauseQueueMember)
penalty: un agente es considerado no disponible si el valor de su penalidad es
menor al valor asociado a la variable QUEUE_MAX_PENALTY
inuse: un agente es considerado no disponible si el estado de su extensin es
joinempty INUSE
ringing: un agente es considerado no disponible si su extensin est timbrando
unavailable: un agente es considerado no disponible si el estado de su extensin es
UNAVAILABLE
invalid: un agente es considerado no disponible si el estado de su extensin es
INVALID
unknown: un agente es considerado no disponible si el estado de su extensin es
UNKNOW
wrapup: un agente es considerado no disponible si est en su tiempo de descanso
(wraptime) despus de haber atendido una llamada
Este parmetro aplica a los clientes que ya estn en la cola de espera y en base a los
leavewhenempty valores indicados, si todos los agentes se vuelven no disponibles, el cliente ser
sacado de la cola.
;eventwhencalled = yes Estos dos para metros configurados en yes, generan una serie de eventos
;eventmemberstatus = yes relacionados con la cola en el AMI de Asterisk
yes = Se anuncia al agente, antes de contestar la llamada, cuanto tiempo el cliente ha
reportholdtime
esperado en la cola
ringinuse no = no se envan las llamadas a agentes cuyo estado de la extensin es INUSE
Tiempo en segundos que el sistema esperar antes de conectar el agente con el
cliente. De esta forma aunque hayan agentes disponibles, el cliente esperar ese
memberdelay
tiempo antes de ser conectado con un agente. til si se quiere que el cliente escuche
algn anuncio o comunicacin. Valor 5
yes = el tiempo de espera para que una agente conteste una llamada se resetea si el
timeoutrestart
estado de la extensin es BUSY o CONGESTION
En el archivo queuerules.conf se configuran distintos escenarios para manejar las
;defaultrule=myrule colas con el sistema de penalidades. En el caso que se haya configurado un escenario
para esta cola, en este parmetro se define el nombre. Se deja comentado
member => Agent/2000 A partir de esta linea se definen los miembros de la cola. La sintaxis es:
member => Agent/2001 member => tecnologa/extensin,penalidad,nombre,extensin
member => Agent/2002 Se ponen los tres agentes configurados en el archivo agent.conf
Pg. 63
Telefona IP con Asterisk Administracin Avanzada
Conocidos los parmetros adecuados para la configuracin de colas y agentes, editar los ficheros
agents.conf y queues.conf
agents.conf
[general]
persistentagents=yes
multiplelogin=no
[agents]
maxlogintries=3
autologoff=15
autologoffunavail=yes
ackcall=no
acceptdtmf=#
endcall=yes
enddtmf=*
wrapuptime=5000
musiconhold=default
updatecdr=yes
recordagentcalls=no
recordformat=wav
;savecallsin=/home/calls
custom_beep=beep
agent => 2000,1234,Pepito Perez
agent => 2001,1235,Juanito Jimenez
agent => 2002,1236,Luchito Lopez
queues.conf
[general]
persistentmembers=yes
autofill=yes
monitor-type=mixmonitor
updatecdr=no
shared_lastcall=yes
[ventas]
musicclass=default
;announce=queue-ventas
strategy=random
servicelevel=120
context=ventas-exit
timeout=15
retry=4
timeoutpriority=app
weight=0
wrapuptime=2
autofill=yes
autopause=yes
maxlen=50
setinterfacevar=yes
setqueueentryvar=yes
setqueuevar=yes
;membermacro=macro
announce-frequency=90
min-announce-frequency=15
Pg. 64
Telefona IP con Asterisk Administracin Avanzada
;periodic-announce-frequency=60
;random-periodic-announce=no
announce-holdtime=once
announce-position=more
announce-position-limit=5
announce-round-seconds=30
;periodic-announce=queue-periodic-announce
;periodic-announce=anuncio1,anuncio2
;monitor-format=gsm|wav|wav49
monitor-type=mixmonitor
joinempty=paused,unavailable,invalid,unknown
leavewhenempty=paused,unavailable,invalid,unknown
;eventwhencalled = yes
;eventmemberstatus = yes
reportholdtime=yes
ringinuse=no
memberdelay=5
timeoutrestart=yes
;defaultrule=myrule
Agentes de manera atendida: Una vez terminado de configurar estos ficheros, se crea un contexto en el
dialplan mediante el cual los agentes pueden ingresar a la cola.
[login]
exten => 777,1,Answer()
same => n, AgentLogin()
same => n,HangUp()
Finalmente crear un contexto en el cual recibir las llamadas entrantes que irn a la cola:
[colas]
exten => 600,1,Answer()
same => n,MixMonitor(${UNIQUEID}.gsm,b)
same => n,Queue(ventas,t,,,30)
same => n,HangUp()
Agentes de manera desatendida: Con este mtodo, se usarn las aplicaciones AddQueueMember y
RemoveQueueMember que permiten agregar un agente en la cola y quitarlo respectivamente. Los agentes
no necesariamente deben estar presentes en el fichero agents.conf
[login]
exten => 777,1,Answer()
same => n, AgentLogin()
same => n,HangUp()
;Ingreso en la cola
exten => 778,1,Answer()
same => n,Addqueuemember(ventas,SIP/${CALLERID(num)})
same => n,Playback(agent-loginok)
same => n,HangUp()
;Salida de la cola
exten => 779,1,Answer()
same => n,Removequeuemember(ventas,SIP/${CALLERID(num)})
same => n,Playback(agent-loginok)
same => n,HangUp()
Pg. 65
Telefona IP con Asterisk Administracin Avanzada
Actualmente la nica PBX que utiliza este Draft es Asterisk y no hay softphone ni telfonos SIP que lo
implementen. Es por este motivo que al momento de configurar esta funcionalidad, se podr utilizar su
configuracin nativa solamente entre servidores Asterisk (desde la versin 1.8.X). Para su utilizo entre
Asterisk y los telfonos SIP o softphone hay que optar por su configuracin genrica que realmente no se
basa en el Draft mencionado, sino en un sub-sistema que se apoya a la funcin DEVICE_STATE.
Un ejemplo. La extensin 200 llama la extensin 201. Si la extensin 201 no contesta, la extensin 200
tendr un tiempo predefinido para solicitar una rellamada. La solicitud se hace utilizando la aplicacin Call
Completion en el dialplan. Una vez solicitada la rellamada, se activar un temporizador que definir por
cuanto tiempo la solicitud quedar activa. Si dentro de este tiempo la extensin 201 efecta una llamada,
Asterisk la considerar nuevamente activa y en cuanto termine la llamada, marcar primero la
extensin 200 y luego la extensin 201. Si la rellamada tiene xito, la solicitud sera eliminada. Si la
rellamada no tiene xito (la extensin 201 no contesta nuevamente o est hablando), habr que solicitar
una nueva rellamada. En cualquier momento se puede anular una solicitud de rellamada utilizando la
aplicacin CallCompletionCancel en el dialplan.
Parmetro Descripcin
cc_offer_timer Tiempo mximo, en segundos, para solicitar una rellamada cuando una llamada no ha tenido
xito. Valor 20
ccbs_available_timer Tiempo de vida, en segundos, de una solicitud de rellamada cuando le extensin llamada
Pg. 66
Telefona IP con Asterisk Administracin Avanzada
Escribir en los la seccin [general] de sip.conf o en las plantilas de los telfonos que se desea tengan el
servicio de rellamada los parmetros:
cc_offer_timer=10
cc_agent_policy=generic
cc_monitor_policy=generic
3. Crear el contexto rellamada, el cual debe ser accesible desde el contexto interno y colocar lo siguiente:
exten => *30,1,CallCompletionRequest
same => n,Playback(rellamada-activa)
same => n,Hangup
exten => *31,1,CallCompletionCancel
same => n,Playback(rellamada-anulada)
same => n,Hangup
4. Recargar asterisk, probar diferentes escenarios para la rellamada y verificar el estado de esta utilidad
con el comando:
asterisk*CLI> cc report status
Pg. 67
Telefona IP con Asterisk Administracin Avanzada
Marcadores
2.15.1 Originate
La idea de Originate es "forzar" a que un dispositivo llame una extensin o ejecute una aplicacin
especifica. Existen dos formas de conseguir este efecto, y es gracias a la aplicacin y al recurso Originate,
tanto para el Plan de Marcacin, como para la interfaz CLI.
El nombre del mdulo de la aplicacin es app_originate.so, y la posibilidad de lanzar llamadas desde CLI, se
considerara un mdulo de tipo recurso llamado res_clioriginate.so
Para la Aplicacin:
Originate(<canal>/<dispositivo>,app,<nombre_aplicacion>,<variables>)
Ejemplo 3: Originate(SIP/ext11,app,Queue,marketing), en este caso, el dispositivo ext11 por el protocolo
SIP, ejecutara la aplicacin de introducirse en una [Colas|Cola] llamada "marketing"
26 http://www.wikiasterisk.com/index.php/Generaci%C3%B3n_Autom%C3%A1tica_de_Llamadas
Pg. 68
Telefona IP con Asterisk Administracin Avanzada
Se puede crear un pequeo script en el sistema, llamado fichero de llamada (Call File), y con este, ejecutar
una serie de comandos, para ejecutar Aplicaciones Especficas con respecto a una extensin en concreto.
Ese fichero de llamada debe tener la extensin .call .
Una vez hayamos creado el fichero de llamada que queramos ejecutar, tenemos que depositarlo en un
directorio por defecto del sistema Asterisk: /var/spool/asterisk/outgoing/ . Por ello, todos los ficheros han
de pasarse a este directorio con el comando de Mover del sistema Linux:
mv ./mi_fichero.call /var/spool/asterisk/outgoing/
Si el dispositivo acepta la llamada, entonces se lanza la extensin o la aplicacin a voluntad, muy parecido
al Originate:
Context: <nombre_contexto>
Extension: <numero_extension>
Priority: <prioridad_extension>
Application: <nombre_aplicacion>
Pg. 69
Telefona IP con Asterisk Administracin Avanzada
CAPTULO 3
DIALPLAN AVANZADO
3.1 ASTDB
La base de datos de asterisk es un mtodo de almacenamiento de datos persistentes en asterisk. Es un
sencillo motor de DB tipo berkeley v1. El fichero que contiene los datos de la DB asterisk est ubicado en:
/var/lib/asterisk/astdb.
Todos los datos se registran o recuperan a travs de dos parmetros: family (familia) y registro (key) usando
la funcion DB de la siguiente manera:
Lectura:
Escritura:
same => n,Set(DB(family/key)=VALOR)
1. Se configurar un contador en una extensin que diga los nmeros desde el 0 en adelante hasta que se
corte la llamada.
exten => 603,1,Answer()
same => n,Set(COUNT=0)
same => n(say),SayNumber(${COUNT})
same => n,Noop(${INC(COUNT)})
same => n,GoTo(say)
2. Al llamar a la extensin 603 se escucharan los nmeros desde el 0 en adelante hasta que se cuelgue.
Si se hace de nuevo la llamada, no empiece desde 0 sino desde donde se haya quedado. Para ello se
usara la base de datos de asterisk, donde se almacena la variable COUNT.
exten => 603,1,Answer()
same => n,Set(COUNT=${DB(test/count)})
same => n,GotoIf($[${ISNULL(${COUNT})}]?:say)
same => n,Set(DB(test/count)=0)
same => n,Goto(2)
same => n(say),SayNumber(${COUNT})
same => n,Noop(${INC(COUNT)})
same => n,Set(DB(test/count)=${COUNT})
same => n,GoTo(say)
3. Ahora se comprueba que si se vuelve a llamar a la extensin 200 va a continuar desde donde se quedo
anteriormente, aun si se reinicia el servicio de Asterisk.
BLACKLIST
4. Ahora se probara la llamada lista negra, que no es mas que una familia en la base de datos que permite
guardar el numero que se bloqueara para las las llamadas.
Pg. 70
Telefona IP con Asterisk Administracin Avanzada
6. Como se sabe el CallerId tiene nombre y nmero del llamante, y cualquiera de los dos puede ser
bloqueado en la lista negra. Ahora probar agregando el valor de un nombre:
asterisk*CLI> database put blacklist Juan 1
Si el telefono que llama tiene un callerid con nombre Juan tambien ser bloqueado.
Funcin DB:
DB(familia/registro)
Seteo y borrado en el cli de asterisk:
database put familia registro valor
database del familia registro
Funciones tiles para la prctica:
EXISTS(${VARIABLE}) Devuelve 1 si la variable contiene datos (no est vacia), caso contrario 0.
Acciones:
Profesores:
Autenticar.
Alumnos:
Informar de la nota.
Pg. 71
Telefona IP con Asterisk Administracin Avanzada
Datos de trabajo:
Profesores
Alumnos
cedula profesor
cedula alumno 1016151413 Gustavo Gonsalez
1716151413 Pedro Perez 1015141312 Boris Borja
1715141312 Juan Jimenez 1014131211 Samir Sanchez
1714131211 Lizeth Lopez
1713121110 Maria Mueces
Contraseas profesores
Notas cedula contrasea
cedula nota 1016151413 012345
1716151413 1015141312 123456
1715141312 1014131211 234567
1714131211
1713121110
Pg. 72
Telefona IP con Asterisk Administracin Avanzada
Por defecto, Asterisk crea un archivo localizado en /var/log/asterisk/cdr-csv/ llamado Master.csv , el cual
contiene la informacin del registro en formato CSV (Valores Separados por Comas), el cual es fcilmente
exportable a MS Excel. El archivo /etc/asterisk/cdr.conf es el archivo que establece el comportamiento y la
informacin que aparecer en el registro; sin embargo, es posible personalizar o seleccionar la informacin
que queremos que aparezca en el mismo por medio del archivo /etc/asterisk/cdr_custom.conf.
Adems de lo anterior, es posible almacenar el CDR en una base de datos para mejorar la fiabilidad de los
datos, existen mdulos para que Asterisk almacene el CDR haciendo uso de manejadores como MySQL,
ODBC, SQLite, y PostgresSQL.27
Para almacenar el CDR en una base de datos SQL como postgres, es necesario tener un servidor de dicha
BD corriendo, adems de poseer los permisos adecuados y estructura dentro de la base para guardar la
informacin del CDR, esto se logra mediante los siguientes pasos:
27 http://www.voip.unam.mx/mediawiki/index.php/El_registro_detallado_de_llamadas_de_Asterisk_CDR_-_Integracin_con_PostgresSQL
Pg. 73
Telefona IP con Asterisk Administracin Avanzada
/*FICHERO cdr_pgsql.sql */
CREATE TABLE cdr (
calldate timestamp NOT NULL ,
clid varchar (80) NOT NULL ,
src varchar (80) NOT NULL ,
dst varchar (80) NOT NULL ,
dcontext varchar (80) NOT NULL ,
channel varchar (80) NOT NULL ,
dstchannel varchar (80) NOT NULL ,
lastapp varchar (80) NOT NULL ,
lastdata varchar (80) NOT NULL ,
duration int NOT NULL ,
billsec int NOT NULL ,
disposition varchar (45) NOT NULL ,
amaflags int NOT NULL ,
accountcode varchar (20) NOT NULL ,
uniqueid varchar (150) NOT NULL ,
userfield varchar (255) NOT NULL
);
8. Cargar la estructura de la tabla a la BD:
# pgsql -U asterisk -d asteriskDB -h localhost -W < cdr_pgsql.sql
9. Compilar asterisk con el soporte para CDR en postgreSQL, tener precaucin de verificar si el mdulo se
selecciona al momento de realizar el comando make menuselect.
12. Empezar a realizar llamadas y observar como se guarda la informacin de cada llamada realizada.
Verificar cada campo y analizar la informacin que se obtiene desde el CDR. Revisar la aplicacin
NoCDR y la funcin CDR del dialplan. En el cli de asterisk, revisar los comandos presentes para la
administracin de las conferencias.
Pg. 74
Telefona IP con Asterisk Administracin Avanzada
La versatilidad de usar un AGI estriba en que se puede usar toda la potencia del lenguage de programacin
que se est usando, para hacer tericamente cualquier tarea, accin o proceso a travs de asterisk. Como
un ejemplo sera el control de seguridad de un edificio, o el lanzamiento de una alarma de alerta y llamada
al responsable cuando la temperatura en un invernadero supere un lmite fijado o el envo de datos del
llamante a un CRM, etc. Como se menciona, todo depende de la potencia del lenguaje de programacin y
de la imaginacin y uso que se quiera hacer de la central.
Cuando se trabaja con AGI, la interaccin entre esta y Asterisk se implifica de la siguiente manera:
Normalmente cuando se usa un AGI, el intercambio de informacin se realiza a travs de los descriptores
STDIN/STDOUT.
Tipos de AGI:
AGI estandar: Es aquel AGI que se puede usar localmente. Generalmente es un programa escrito en algn
lenguaje de programacin, cuyo ejecutable/binario se coloca en /var/lib/asterisk/agi-bin. La forma de llamar
a esta agi desde el dialplan es la siguiente:
En este tipo de AGI, se lanza un proceso por cada llamada a esta, por lo cual si se tiene un flujo intenso y
grande de llamadas se puede llegar a colapsar el servidor.
Fast AGI: Similar al AGI anterior, solamente que ahora, el AGI est ubicado en un servidor distinto a
asterisk, y su llamada se realiza mediante el URL completo. El flujo de datos usa el protocolo TCP, puerto
4573. Se llama de la siguiente manera:
exten => _X.,pri,Agi(agi://192.168.1.1/nombreagi,arg1,...,argn)
De igual manera se pueden pasar argumentos al AGI. La ventaja de este tipo de AGI es que se alivia la
carga del servidor Asterisk al ejecutarse los procoesos resultantes de la llamada al AGI en otro servidor.
EAGI: Enhanced AGI, similar al AGI estandar pero se transmite tambin el audio del canal de entrada para
su tratamiento dentro del AGI.
Para conocer Todas las respuestas y comandos que se pueden usar en el AGI, refirase al libro: Asterisk:
The Definitive Guide, 3ra Edicin, Pag, 481,483-485. Leif Madsen, Jim Van Meggelen & Russel Bryant.
Pg. 75
Telefona IP con Asterisk Administracin Avanzada
Editorial O'reilly.
Prctica 3.3.2: Instalacin de AGIs para el uso de tts y motor asr de google
1. Se descargarn e instalarn un par de AGIs programadas, para poder usar los servicios de google en lo
referente a sntesis de voz y reconocimiento del habla. Toda la documentacin, as como los scripts se
encuentran en las siguientes pginas:
http://zaf.github.com/asterisk-speech-recog/
http://zaf.github.com/asterisk-googletts/
2. Se debe cumplir los requisitos previos: tener instalado perl, flac y mpg123:
yum install flac perl-CGI perl-libwww-perl perl-IO-Socket-SSL
yum install http://pkgs.repoforge.org/mpg123/mpg123-1.13.4-1.el6.rf.x86_64.rpm
TTS:
Agi(googletts.agi,Texto a sintetizar,[lenguage,tecla_interrupcin])
Lenguage: es, it, us, uk, etc.
ASR:
Agi(speech-recog.agi,[timeout,lenguage,tecla_int,NOBEEP])
Lenguaje: es_EC, en_US, etc.
${status}: Devuelve 0 si la tarea se complet con xito, otro valor si hubo errores.
Pg. 76
Telefona IP con Asterisk Administracin Avanzada
La nica limitacin es que Asterisk no est preparado para recibir muchas peticiones a travs del AMI, lo
que puede causar su inestabilidad.
Tambin es posible usar AMI a travs de HTTP gracias a que asterisk implementa un sencillo servidor
HTTP. Esto permite a una aplicacin externa la administracin de Asterisk a travs de este protocolo. AMI a
travs de HTTP se configura en /etc/asterisk/http.conf
[general]
enabled=yes
webenabled=yes
bindaddr=127.0.0.1
[curso_asterisk]
secret=4st3r1sk
read=system,call,agent,user,config,dtmf,reporting,cdr,dialplan
write=system,call,agent,user,config,command,reporting,originate
2. Guardar y recargar asterisk, observar los clientes del manager con el comando manager show users.
Finalmente, usar telnet para probar la conexin y enviar algunos comandos:
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Asterisk Call Manager/1.1
Action: Login
Username: curso_asterisk
Secret: 4st3r1sk
Response: Success
Message: Authentication accepted
Action: Ping
Response: Success
Ping: Pong
Timestamp: 1282739190.454046
Action: Logoff
Response: Goodbye
Message: Thanks for all the fish.
Connection closed by foreign host.
http://www.astchannelslive.com/
Pg. 77
Telefona IP con Asterisk Administracin Avanzada
CAPTULO 4
SEGURIDAD EN ASTERISK
4.1 Logging
Hay una reglas de oro que se necesita seguir en la configuracin de Asterisk. Estas reglas permiten
5. No permitir el acceso al AMI de Asterisk desde remoto (teniendo cerrado el puerto 5038 TCP del
servidor Linux. En el caso que se necesite utilizar el AMI desde remoto, configurar Iptables de modo
que acepte el trafico solo desde determinadas direcciones IP. Un ejemplo es esta linea:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 5038 -s 192.168.100.200 -j ACCEPT
Con esta linea se podr conectar desde remoto al AMI de Asterisk solamente la maquina con IP
192.168.100.200. Otra forma es utilizar el protocolo TLS.
7. Utilizar las funciones GROUP y GRUP_COUNT para limitar las llamadas salientes de las
extensiones.
4.3 FAIL2BAN
Fail2Ban es un programa que lee los registros de Asterisk del archivo /var/log/asterisk/security y si hay un
numero determinado de intentos de conexin sin xito, bloquea la IP de donde se han originado,
interactuando con el firewall iptables.
Pg. 78
Telefona IP con Asterisk Administracin Avanzada
1. Para instalar fail2ban se debe tener configurado el repositorio epel. Una vez instalado el mismo, se
procede a la instalacin de fail2ban mediante el comando:
yum -y install fail2ban
2. Ingresar al directorio /etc/fail2ban, donde se encuentran los archivos de configuracin, filtros y acciones
de fail2ban.
3. Editar el archivo jail.conf , comentar todos los contextos relacionados con asterisk y colocar al final del
archivo las siguientes lneas:
[asterisk-iptables]
enabled = true
filter = asterisk
action = iptables-allports[name=ASTERISK, protocol=all]
sendmail-whois[name=ASTERISK, dest=example@example.com, sender=root]
logpath = /var/log/asterisk/security
maxretry = 3
bantime = 259200
4. Ingresar al directorio de configuracin de asterisk y editar el archivo logger.conf . Las siguientes lneas
deben ser descomentadas:
;dateformat=%F %T ;ISO 8601 date format
;security => security
5. En la consola de asterisk, recargar el modulo logger
asterisk*CLI> module reload logger
6. Configurar e iniciar el servicio fail2ban:
chkconfig fail2ban on
service fail2ban start
7. Probar a registrar una extensin con datos erroneos, comprobar que su direccin IP fue baneada con el
comando:
iptables -L | less
Pg. 79
Telefona IP con Asterisk Administracin Avanzada
CAPTULO 5
ASTERISK GRFICO
5.1 FreePBX
FreePBX ofrece un interfaz GUI Html (interfaz grfica de usuario) para administracin de una PBX basada
en Asterisk. Tambin est basado en la licencia GPL.
Permite configurar fcilmente un sistema Asterisk, cubriendo los requisitos tanto de pequeas como de
grandes empresas. Puede mantener las bases de datos de usuarios y extensiones, as como otras las
funciones de valor aadido.
http://asterisk.org/downloads/asterisknow
2. Grabe la imagen ISO en un CD o DVD. Siga los pasos indicados en la prctica 1.1.1
3. Una vez terminada la instalacin, se reiniciar el equipo y arrancara hasta la pantalla de login. Con las
credenciales adecuadas iniciar sesin en el equipo, el cual presentar la direccin IP que ha adquirido a
travs de DHCP. Caso contrario se debe configurar una direccin IP.
4. Ingrese desde un navegador web a la direccin configurada. La primera vez se mostrar la pantalla de
configuracin de usuario, rellene los campos con la informacin requerida:
Pg. 80
Telefona IP con Asterisk Administracin Avanzada
BIBLIOGRAFA
Telefona IP con Asterisk. Sidevox.
http://ofps.oreilly.com/titles/9780596517342/AGI.html
http://10000horas.com/asterisk/tag/google-asr/
http://www.ardumania.es/2011/11/reconocimiento-de-voz-de-google/
http://www.asteriskguide.com/mediawiki/index.php/Extending_Asterisk_with_AMI/AG
www.voztovoice.org
www.sinologic.net
Pg. 81