47791304-asterisk

57
LINUX CENTRAL DE SERVICIOS INTEGRADOS TELEFONIA IP JESSE PADILLA AGUDELO UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE INGENIERÍA Y ARQUITECTURA PROGRAMA DE INGENIERÍA ELECTRÓNICA MANIZALES

Upload: miguel-angel-matos

Post on 04-Aug-2015

67 views

Category:

Documents


13 download

TRANSCRIPT

Page 1: 47791304-Asterisk

LINUX CENTRAL DE SERVICIOS INTEGRADOS TELEFONIA IP

JESSE PADILLA AGUDELO

UNIVERSIDAD NACIONAL DE COLOMBIAFACULTAD DE INGENIERÍA Y ARQUITECTURA

PROGRAMA DE INGENIERÍA ELECTRÓNICAMANIZALES

Page 2: 47791304-Asterisk

RESUMEN

Asterisk en un software que ha evolucionado a pasos agigantados, esto se debe a su naturaleza de ser software de código abierto y por tanto muchos desarrolladores alrededor del mundo que comparten la filosofía del Software Libre y del OpenSource han aportado a su rápido desarrollo y crecimiento como pasarela de Telefonía IP, por lo cual en este documento se presenta como prestar servicios de Telefonía IP con esta herramienta. En el caso particular como implementar un PBX IP (Centralita IP) con una cierta cantidad de servicios adicionales en una plataforma libre GNU/Linux.

.

Page 3: 47791304-Asterisk

INTRODUCCIÓN

Realmente la integración de datos, voz y video en una misma red no es una idea nueva, pues desde hace tiempo han surgido soluciones desde distintos fabricantes que, mediante el uso de diversos equipos, permiten utilizar las redes de datos de las empresas para la transmisión del tráfico de voz y video, además es importante resaltar que el paquete de voz o video es indistinguible del paquete de datos, y por lo tanto puede ser transportado a través de una red que estaría normalmente reservada para transmisión de datos, donde los costos son frecuentemente mas bajos.

Es innegable la implantación definitiva del protocolo IP desde los ámbitos empresariales a los domésticos y la aparición de los estándares de VoIP y IPTv no podían hacerse esperar. La aparición de VoIP junto con rebaja de precios de los DSP’s, los cuales son claves en la compresión y descompresión de la voz, son los elementos que han hecho posible el despegue de estas tecnologías.

La convergencia de las redes telefónicas, las redes de datos y los sistemas de televisión es una de las tendencias tecnológicas más importantes de esta década. El potencial de esta unión es de una gran envergadura, siendo capaz de provocar notables mejoras y ahorros en las redes de comunicaciones de las corporaciones y mayores servicios y prestaciones para el usuario final. Lo que se tiende en estos momentos es ofrecer al mercado productos y soluciones que aprovechen la infraestructura de red IP, con el propósito de mejorar la efectividad y productividad de las comunicaciones en las empresas y los servicios domésticos. La integración de la infraestructura telefónica y de datos permite simplificar la administración de los recursos de red y facilita la expansión en capacidad. La ventaja real de la fusión datos, telefonía y televisión es su potencial para soportar nuevas aplicaciones hacia el usuario

Las redes IP hacen desaparecer los límites físicos asociados a los teléfonos y funcionalidades telefónicas tradicionales, fuera de esto al alcance y cubrimiento de los sistemas de radio y televisión. Dentro de poco será posible acceder simultáneamente a todos los servicios tradicionales y a la capacidad de responder llamadas desde cualquier lugar del mundo, fuera de eso acceder a servicios de entretenimiento como los son la radio y la televisión.

En el mundo moderno el avance en las tecnologías informáticas y de telecomunicaciones han llevado a desarrollos muy importantes e impresionantes, uno de esos es, el streaming de video y audio a través de las redes de datos, con el fin de ofrecer un servicio adicional por este medio de comunicación. Debido a éste motivo, en éste del documento se da una opción para lograr implementarlo con algunas aplicaciones de software libre ya existentes:

Page 4: 47791304-Asterisk

1. ASTERISK Y LA TELEFONÍA IP

La Telefonía IP, es una tecnología emergente en el mundo de las Telecomunicaciones y básicamente consiste en brindar los mismos servicios de la telefonía tradicional, pero usando como base la pila de protocolos TCP/IP. Esto proporciona una gran ventaja, al darle mayor uso a la infraestructura ya establecida de datos en un área local, pero también grandes retos cuando se quiera implementar este servicio en Internet, pues no se cuenta con la calidad garantizada.

Actualmente existen diversas empresas que ofrecen soluciones propietarias de servicios de telefonía IP, entre las cuales se encuentran Cisco con su Call Manager, Avaya con MultiVantage, Alcatel, Mitel, etc. Estas compañías normalmente trabajan con estándares y protocolos propietarios, lo que dificulta su interacción con soluciones de otros fabricantes.

En cuanto a soluciones usando protocolos abiertos, existen varias implementaciones, entre las cuales se destacan OpenPBX, PBX4Linux, YATE, FreeSwitch y Asterisk, siendo predominante esta ultima y por lo cual este documento se centra en ella.

La convergencia de las redes de datos y las redes telefónicas será un detonante decisivo para la evolución de la industria de PBX’s. La tendencia más importante prevista será la migración desde una estructura predominantemente compuesta por sistemas propietarios a una industria más abierta y con sistemas compatibles sobre el formato IP.

Asterisk es una aplicación de código abierto, una centralita telefónica (PBX). Como cualquier PBX, se puede conectar un número determinado de teléfonos para hacer llamadas entre sí e incluso conectar a un proveedor de servicio o bien a una RDSI, Asterisk permite conectividad entre la red RTPC y las redes VoIP.

Asterisk esta licenciado bajo la licencia GPL. Mark Spencer de Digium inicialmente creó Asterisk y actualmente es su principal desarrollador junto con otros programadores han contribuido a corregir errores, añadir novedades y funcionalidades. Originalmente desarrollado para el sistema operativo GNU/Linux. Asterisk actualmente también funciona en BSD, MacOSX, Solaris y Microsoft Windows aunque la plataforma nativa (GNU/Linux) es la mejor soportada de todos. Asterisk esta soportado para la gran mayoría de distribuciones de GNU/Linux RedHat, Fedora, Ubuntu, Debian, Mandriva, Slackware y Gentoo han sido usadas exitosamente por los desarrolladores. Asterisk incluye muchas características anteriormente solo disponibles en costosos sistemas propietarios PBX. Los usuarios pueden aprovechar las capacidades de Asterisk tan solo editando sus archivos de configuración según la estructura predeterminada de Asterisk.

Page 5: 47791304-Asterisk

Quizá lo más interesante de Asterisk es que soporta muchos protocolos VoIP como pueden ser SIP, H.323, IAX, IAX2, MGCP. Asterisk puede interoperar con teléfonos IP actuando como un registrador y como gateway entre ambos. Las compañías de telecomunicaciones de todo el mundo empiezan a utilizar Asterisk como sistema nativo de Telefonía IP en lugar de otras marcas que ofrecen PBX propietarios como Alcatel, Cisco o Avaya.

Asterisk no necesita ningún hardware adicional para Telefonía IP. Para interconectarse con algún tipo de telefonía digital o análoga Asterisk es compatible con una gran numero de hardware, los mas notables es el hardware fabricado por el esponsor de Asterisk, DIGIUM™. DIGIUM, desarrolla interfaces T1 y E1 para la interconexión con líneas PRI y bancos de canales así como también tarjetas de puertos individuales FXO y un puerto modular FXS y una tarjeta FXO.

Asterisk es compatible con una amplia gama de protocolos TMD para el manejo y transmisión de interfaces de telefonía tradicional. Asterisk también es compatible con el tipo de señalización estándar americano y europeo en sistemas de telefonía, permitiendo ser un nexo entre las redes integradas de datos de voz de siguiente generación y la infraestructura existente. Asterisk no solo apoya a los equipos de telefonía tradicionales sino que también los habilita con capacidades adicionales.

Asterisk esta cuidadosamente desarrollado para máxima flexibilidad. APIs específicos son definidos en un sistema central PBX. Este centro avanzado maneja interconexión interna del PBX, abstraídos limpiamente por protocolos específicos, codecs, e interfaces de hardware de aplicaciones de telefonía. Esto le permite al Asterisk utilizar cualquier hardware conveniente y tecnología disponible, ahora ó en el futuro para realizar sus funciones esenciales, conectando hardware y aplicaciones.

La esencia del Asterisk, por supuesto es un sistema de conmutación de intercambio privado (PBX o Centralita), conectando llamadas entre varios usuarios y tareas automatizadas. La base de conmutación conecta a los usuarios llegando a varios software y hardware de interfaces.

Asterisk ofrece funcionalidades básicas PBX y características más avanzadas así como también interopera con sistemas básicos de telefonía estándar y sistemas de Telefonía. Asterisk ofrece también características como voicemail, conferencias, llamada en espera, fax, video conferencia, etc.

Asterisk incluye muchas más características, no solo las dadas anteriormente sino también sistemas de mensajera tales como:

Música para clientes en espera, como música en mp3. Llamadas en espera, donde habrán agentes en común atendiendo y

monitorizando llamadas entrantes y en espera. Sistema de integración del texto a la conversación. Grabación de datos de la llamada. Sistema de integración de reconocimiento de voz.

Page 6: 47791304-Asterisk

La capacidad de interfaces con líneas de teléfono normales, tarifas básicas y primarias de interfaces ISDN.

Integración de Fax. Integración con otros sistemas de Telefonía IP de diferentes fabricantes. Salas de Conferencia con un número ilimitado de participantes. Notificación por e-mail de voicemails recibidos. Transferencia de llamadas. Soporte para Video Conferencia.

En la historia de las telecomunicaciones nunca antes existió un sistema tan adaptado a las necesidades de los negocios, a cualquier precio. Asterisk es una tecnología con disponibilidad, y como en el caso de GNU/Linux, en un futuro inmediato será difícil encontrar un sistema de telefonía que no use alguna versión de Asterisk funcionando de alguna manera en algún lugar de la red.

Figura 1.1

Page 7: 47791304-Asterisk

2. VENTAJAS DE ASTERISK

Reducción de costos, Asterisk es Software Libre y además es software es gratuito.

Asterisk es una herramienta de rápido desarrollo y crecimiento, dado que miles de programadores en todo el mundo contribuyen al desarrollo continuo, permitiendo que Asterisk mejore todos los días. 

Como resultado, con Asterisk es posible construir un sistema de telefonía de altas prestaciones a una fracción del costo del de una plataforma tradicional.

Asterisk puede operar perfectamente dentro de un entorno de telefonía IP, así como con teléfonos y líneas analógicas. Este modelo de telefonía permitirá cambios dramáticos en el mercado de centrales telefónicas privadas (PBX). Los integradores de tecnología podrán ofrecer soluciones que compitan con sistemas propietarios de grandes fabricantes de centrales. Este nuevo enfoque representará un problema a las empresas que inviertan en costosos sistemas telefónicos.

Existen distintos tipos de usuarios de Asterisk, desde pequeñas empresas con unos pocos internos hasta call centers. Como Asterisk es Software Libre las implementaciones son muy flexibles y muy sencillas de administrar.

Asterisk puede funcionar junto con una PBX tradicional. Esto protege la inversión original y al mismo tiempo brinda todas las nuevas funciones de las centrales IP.

Asterisk soporta protocolos estándar como MGCP, IAX, SIP, y H.323. El sistema no necesita hardware adicional para hacer comunicaciones por voz sobre IP. Una PC, o un servidor con redundancia, junto con un proveedor de telefonía IP es todo lo que una empresa necesita para hacer y recibir llamadas.

Permite que los usuarios se conecten en forma remota y tengan su número interno como si estuvieran dentro de la empresa en cualquier lugar que posea Internet de alta velocidad.

El sistema puede dar servicio desde 10 usuarios en una sede de una pequeña empresa, hasta 10.000 de una multinacional repartidos en múltiples sedes.

Asterisk al ser Software Libre, permite la creación de módulos extra o la personalización de los mismos, que permiten darle nuevas funcionalidades y una mejor adecuación a las necesidades de comunicación que tengan.

Asterisk está preparado para cubrir prácticamente todas las necesidades de Comunicaciones existentes y lo más importante, es siempre actualizable para nuevos servicios que se vayan añadiendo. La Videoconferencia, el envío de SMS mediante la línea Fija. Servicios Automáticos de respuesta interactiva y demás aplicaciones pueden cubrir prácticamente todas las necesidades existentes en el sector de la Comunicaciones.

Integración GSM de telefonía Celular.

Page 8: 47791304-Asterisk

3. INSTALACIÓN DE ASTERISK

3.1 Consideraciones y pasos de Instalación

Antes de iniciar la instalación de Asterisk como servicio de Telefonía IP, se debe primero tener muy en cuenta el tipo de servicio que se va a prestar y a cuantos clientes se les pretende prestar el servicio, dado que Asterisk consume bastantes recursos de maquina, en especial los del procesador, dado que usa este para hacer el procesamiento de los canales de Voz. A continuación se presenta una tabla con los requisitos mínimos que se deben tener en hardware para un número determinado de clientes.

Proposito Numero de Clientes Hardware MininoHobby/Pruebas/Desarrollo No mas de 5 Procesador 400Mhz, 256MB

de RamRed SOHO De 5 a 10 Procesador 1Ghz, 512MB de

RamEmpresa Pequeña Hasta 15 Procesador 3Ghz, 1GB de

RamEmpresa Mediana o Grande Mas de 15 Mas de un procesador,

recomendable Cluster de Servidores

Asterisk fue originalmente desarrollado para correr en sistemas GNU/Linux, ahora puede ser usado en BSD y OS X, es muy recomendado usar GNU/Linux ya que las placas RTPC de Digium fueron diseñadas para trabajar con Linux i386, trabajando en este se garantiza máxima compatibilidad y máximo rendimiento.

Asterisk ha sido probado en varias distribuciones y teóricamente funcionara en cualquiera de estas, se recomienda usar alguna de las mostradas a continuación.

RedHat Fedora Mandriva Gentoo Debian Ubuntu Slackware

Para la instalación de una centralita telefónica o un PBX con Asterisk se tienen dos opciones, la primera opción consiste en descargar los códigos fuentes de la página oficial de Asterisk http://www.asterisk.org o utilizar el método de paquetes precompilados disponibles en la distribución de GNU/Linux sobre la cual estamos trabajando.

Para este caso particular se esta trabajando en Debian GNU/Linux, se analizara el método de los paquetes precompilados con APT, si se esta

Page 9: 47791304-Asterisk

trabajando con otra distribución mas adelante se explica cuales son los pasos que se deben seguir para instalar Asterisk desde sus fuentes.

En primer lugar se debe iniciar como administrador del sistema:server:~$ su

Se busca si los paquetes de asterisk están disponibles en nuestra distribución:server:~$ apt-cache search asterisk

Se procede a instalar los paquetes necesarios para que nuestro servidor de Telefonía IP:server:~$ apt-get install asterisk

Al ejecutar este comando se descargan todos los componentes de Asterisk como además de las dependencias de cada paquete, con este comando ya tendremos la Centralita o PBX instalada en el sistema.

Si se desea un mayor rendimiento y un conjunto mayor de funcionalidades se puede proceder a compilar la aplicación y sus complementos. Para obtener las fuentes de Asterisk y los drivers necesarios para el manejo de hardware de DIGIUM, como se menciono anteriormente se pueden obtener los fuentes dirigiéndonos al portal Web de Asterisk http://www.asterisk.org o descargar los archivos usando el comando wget. Primero se inicia como administrador y se procede a dirigirse al directorio /usr/src.

#cd /usr/src#wget http://ftp.digium.com/pub/zaptel-1.4.*.tar.gz#wget http://ftp. digium.com/pub/libpri-1.4.*.tar.gz#wget http://ftp. digium.com/pub/ asterisk /asterisk-addons-1.4.*.tar.gz#wget http://ftp. digium.com/pub/ asterisk /asterisk -1.4.*.tar.gz

Nota: En Sistemas Operativos basados en Unix, el carácter asterisco (*), se usa como comodín, por lo cual no se tiene la necesidad de conocer el nombre exacto de la versión de los paquetes de Asterisk a descargar, esta comodín se reemplazara por el nombre completo del paquete que encuentre disponible para descarga.

Ahora se procede a descomprimir cada uno de los archivos descargados:

#tar xzvf asterisk-1.4.*.tar.gz#tar xzvf asterisk-addons-1.4.*.tar.gz#tar xzvf libpri-1.4.*.tar.gz#tar xzvf zaptel-1.4.*.tar.gz

Se inicia la instalación de Asterisk por el paquete Zaptel, Zaptel es un modulo que se puede cargar al kernel de Linux este provee soporte para hardware y drivers de tarjetas (Para conexiones Analógicas o Digitales), este brinda una capa de abstracción entre el los drivers del hardware y el modulo Zapata en Asterisk, es este concepto el que permite a los drivers del hardware usado para proveer algún servicio con Asterisk sean modificados sin tener que efectuar

Page 10: 47791304-Asterisk

cambios en el código fuente de Asterisk, lo que hace a Asterisk independiente del fabricante.

#cd zaptel-1.4.*#./configure#make #make install

A continuación se procede con la instalación de Libpri, Libpri es un modulo opcional pero bastante útil dado que provee soporte para conexiones digitales que usen TDM – Múltiplexación por División en el Tiempo.

#cd ../ libpri-1.4.*#./configure#make #make install

Los paquetes Zaptel y Libpri solo son necesarios de instalar cuando se pretende proveer servicios con hardware (Teléfonos IP, Teléfonos Analógicos, Conversores ATA) y conexiones a líneas Analógicas o conexiones digitales (Ejemplo Conexiones RDSI).

Por ultimo se procede con la instalación de Asterisk y sus Addons (Paquetes y librerías que complementan las funcionalidades de Asterisk, no es necesario instalarlo pero es recomendable), estos paquetes son fundamentales y deben instalarse para el funcionamiento de Asterisk.

#cd ../ asterisk-1.4.*#./configure#make #make install

#cd ../ asterisk-addons-1.4.*#./configure#make #make install

Luego de haber completado la instalación de Asterisk, se debe hacer que cada vez que la maquina se reinicie el servidor Asterisk se cargue y inicie su servicio, para lograr esto se debe programar un pequeño script (En este caso bash, pero podría hacerse en otro lenguaje de scripts dependiendo del shell que se este usando), luego de tener el script, este se debe guardar en /etc/rc.d/asterisk y se le deben asignar los permisos de ejecución correspondientes.

El script de arranque, parada y reinicio debe quedar de la siguiente forma:

#!/bin/sh # # Start/stop/restart Asterisk PBX

Page 11: 47791304-Asterisk

# Asterisk_start() { if [ -x /usr/sbin/Asterisk ]; then echo "Starting Asterisk /usr/sbin/Asterisk" /usr/sbin/Asterisk fi } Asterisk_stop() { # If there is no PID file, ignore this request... if [ -r /var/run/Asterisk.pid ]; then killall Asterisk fi } Asterisk_restart() { Asterisk_stop Asterisk_start } case "$1" in 'start') Asterisk_start;; 'stop') Asterisk_stop ;; 'restart') Asterisk_restart ;; *)echo "usage $0 start|stop|restart" ;; esac

Las líneas que inician con el símbolo numero (#) son comentarios son líneas que no inciden en la ejecución del script. Los permisos de ejecución del script se asignan de la siguiente forma:

# chmod 755 /etc/inid.d/asterisk

Permisos con los cuales se le permite a todos los usuarios leer el contenido del script, ejecutarlo pero solo tiene se le asignan permisos de modificarlo al administrador del sistema. Además se debe agregar las siguientes líneas al archivo /etc/rc.d/rc.local: . /etc/rc.d/asterisk start

Con el propósito de que Asterisk arranque siempre que se inicie la maquina.

Para ejecutar el script se debe usar de la siguiente forma:

#/etc/inid.d/asterisk parámetro

Page 12: 47791304-Asterisk

Donde parámetro puede ser start stop, o restart.

3.2 Directorios y Archivos usados por Asterisk

Asterisk usa algunos del los directorios del sistema GNU/Linux para su debido funcionamiento. A continuación veremos la estructura de archivos del Asterisk y que información indispensable contienen estos.

3.3.1 /etc/asterisk

En este directorio se encuentran todos los archivos necesarios para configurar cada uno de los servicios que provee una central telefónica IP con Asterisk. A continuación se presentan los archivos principales para la configuración de servicios que presta Asterisk

asterisk.conf: En este archivo se encuentra las configuraciones generales de la ubicación de directorios de configuración, módulos compilados, etc. En general este archivo no se manipula salvo en casos muy específicos.

codecs.conf: A menos que se desee configurar el codec Speex, y deshabilitar por completo el resto de codecs, este archivo de configuración se usa, de lo contrario se debe dejar intacto.

extensions.conf: Se puede considerar como el archivo de configuración de Asterisk mas importante de todos, en este archivo se define cada una de las extensiones de los usuarios del servicio y de los servicios que se prestan, además gracias a este archivo se tomas las decisiones de enrutamiento de llamadas.

features.conf: Este archivo también es de gran importancia, ya que permite habilitar y configurar servicios genéricos dentro del PBX como transferencia asistida y monitoreo de llamadas.

iax.conf: Importante archivo para el funcionamiento del canal IAX que le permite a Asterisk interactuar con otros dispositivos IAX, incluyendo otros PBX con Asterisk.

sip.conf: Análogo al iax.conf pero para el uso del protocolo SIP. h323.conf: Análogo al iax.conf pero para el uso del protocolo H.323. indications.conf: Configuración para los grupos de frecuencias a utilizar

para la indicación del proceso de llamadas. Los por defecto suelen ser suficientes.

manager.conf: Configuración importante del servicio AMI (Asterisk Manager Interface) que permite conectarnos a un socket TCP y administrar el PBX.

modules.conf: En este archivo se determina que módulos serán cargados por Asterisk al iniciar el servicio.

zapata.conf: Configuración de los canales ZAP. Las configuraciones en este archivo deben coincidir con el hardware instalado y la configuración del driver Zaptel.

Page 13: 47791304-Asterisk

meetme.conf: Archivo en el cual se crean y configuran las salas de conferencia.

voicemail.conf: En este archivo se configura en sistema de mensajes de voz.

3.3.2 /usr/lib/asterisk/modules

En este directorio se encuentran todos los módulos cargados por Asterisk, por defecto Asterisk carga todos los módulos de este directorio, los módulos se habilitan y se deshabilitan editando el archivo modules.conf ubicado en el directorio /etc/asterisk, para que sean o no cargados en el arranque del servicio.

3.3.3 /var/lib/asterisk/

En este directorio encontramos el archivo astdb y otros subdirectorios, el archivo astdb es la base de datos del sistema Asterisk. La base de datos de Asterisk es una simple implementación basada en la base de datos v1 de la Universidad de Berkeley.

Entre los subdirectorios podemos encontrar:

agi-bin/: Contiene los script para las aplicaciones AGI (Asterisk Gateway Interface).

firmware/: Contiene los firmwares de los dispositivos compatibles con Asterisk.

images/: Contiene las aplicaciones para la conexión con canales que soportan imágenes, comúnmente los canales de Asterisk no soportan aplicaciones graficas por lo cual este directorio es rara vez usado.

keys/: Contiene las llaves publicas y privadas que asterisk puede utilizar para la autentificación de usuarios, vía RSA

mohmp3/: Contiene los mp3 para la configuración de la música de espera para las llamadas.

sounds/: Contiene los archivos de audio usados por las aplicaciones de Asterisk. Los sonidos por defecto están en ingles y francés, pero se pueden descargar de http://www.asterisk.org los sonidos en español (Voces Españolas) o de http://www.asteriskcolombia.org/ si se desean unos sonidos completamente neutros. Para instalarlos simplemente debemos descomprimir los sonidos y moverlos a la carpeta de sonidos de Asterisk.

# tar xzvf asterisk-sonidos-esCO-ac_0.1.tar.gz# cd asterisk-sonidos-esCO-ac_0.1# mv * /var/lib/asterisk/ sounds/

Como se menciono anteriormente en los sistemas basados en Unix el carácter asterisk (*) reemplaza a cualquier carácter o conjunto de

Page 14: 47791304-Asterisk

caracteres, entonces en este caso moverá todo lo que encuentre en la carpeta asterisk-sonidos-esCo-ac_0.1 a /var/lib/asterisk/sounds.

3.3.4 /var/spool/asterisk/

Contiene subdirectorios como: outgoing/, qcall/, tmp/, and voicemail/, Asterisk supervisa los directorios outgoing/, qcall/ con los archivos de textos que contienen las llamadas, con el fin de generar una llamada tan solo moviendo o copiando el archivo estructurado a outgoing/. En el directorio tmp/ guarda información temporal, para que dos llamadas no puedan escribir y leer al mismo tiempo. En el directorio voicemail/ se guardan todos los voicemail y los saludos de los usuarios.

3.3.5 /var/run/

En este directorio se guardan toda la información de los procesos (PID) del sistema, incluidos los de Asterisk

3.3.6 /var/log/asterisk/

Contiene los logs del sistema estos pueden ser configurados según las necesidades en el archivo logger.conf. Cuando hay fallos o problemas del servicio, se ingresar a la información de este directorio ya que en este se encuentra los archivos de registro de las operaciones de Asterisk.

3.3 Iniciando y Deteniendo Asterisk

Con esta configuración mínima ya es posible arrancar Asterisk con éxito. Dos formas de arrancarlo serian:

# /usr/sbin/asterisk # /usr/sbin/asterisk –vvvgc

Se inicia Asterisk y se conecta a la consola de Asterisk. También se podría correr simplemente ejecutando

# asterisk

Como se mostró anteriormente cuando se ejecuto # /usr/sbin/asterisk –vvvgc, se pueden pasar opciones a Asterisk para iniciar un determinado comportamiento, entre las más usadas son:

-c : Habilita el modo consola. -v : Habilita la salida para manejo de fallos. -g : Fuerza a botar al núcleo si ocurre una violación de segmento.

Page 15: 47791304-Asterisk

-r : Reconecta remotamente a un proceso corriendo de Asterisk -x : Ejecuta comandos en Asterisk. -h : Muestra la ayuda de comandos. -d : Activa los módulos extra de eliminación de fallos.

Si Asterisk es corrido sin argumentos como se mostró anteriormente, Asterisk es lanzado como un Daemon (En espera de conexiones en un puerto TCP o UDP).# asterisk

Se puede acceder a una consola del proceso de Asterisk que ya esta en ejecución usando la opción –r. Con esta opción se permite conectarse a más de una consola de Asterisk simultáneamente. # asterisk –r

En el resto del documento se presenta el arranque y conexión a Asterisk usando la combinación de los dos comando anteriores.# asterisk# asterisk –r

Una vez ejecutados los comandos anteriormente vistos la Terminal nos ubicara en la consola de Asterisk o como normalmente se conoce CLI (Asterisk Command Line). Una vez dentro de la CLI de Asterisk se podrán ejecutar comandos para monitoreo y depuración de interfaces, canales y en general la configuración del servicio. Normalmente se tendrá lo siguiente al entrar en la CLI.

Figura 3.1

Como notas finales con respecto a la instalación, se debe prestar mucha atención al entorno de producción en el cual se usara un servicio de telefonía IP con Asterisk, es decir, el servidor debe ser optimizado de forma que las funciones de telefonía tengan prioridad sobre otros procesos del sistema. En la mayoría de los casos la maquina con la que se presta el servicio de telefonía IP con Asterisk no debe correr otros procesos, principalmente si son intensivos en la CPU, estos servicios deben ser instalados en un servidor por separado.

Además de esto, Asterisk es muy sensible a las variaciones de la configuración de la maquina. Esto significa que en un sistema en producción lo ideal es no usar un entorno de escritorio como por ejemplo XFCE o GNOME.

Page 16: 47791304-Asterisk

4. CONFIGURACIÓN DE UNA CENTRAL TELEFÓNICA CON ASTERISK

Asterisk es controlado a través de archivos de configuración localizados en el directorio /etc/asterisk. Lo cuales manejan una sintaxis muy sencilla, muy semejantes a los archivos (.ini) de Windows. El punto y coma (;) se usa para hacer comentarios en los archivos de configuración estos son ignorados por la aplicación a leer el contenido de estos, se usa el signo igual (=) o la combinación del signo igual y el mayor que (=>) para asignar variables. Las líneas en blanco, espacios y tabuladores son ignorados por el sistema.

A continuación se presenta la configuración del sistema y de cada uno de los clientes a atender, con el fin de configurar un centralita telefónica IP, con esto quedara claro la gramática de los archivos y el proceso de configuración del servicio.

4.1 Configuración de Clientes SIP

A continuación se presenta de forma general como se debe configurar un cliente SIP en el proceso de configuración de una centralita telefónica IP con Asterisk. SIP es el acrónimo de Session Initiation Protocol, SIP es un protocolo de señalización de capa de aplicación que define la iniciación, modificación y la terminación de sesiones interactivas de comunicación multimedia entre usuarios, SIP es un protocolo de señalización para establecer las llamadas y conferencias en redes IP. Usado a menudo en teléfonos de VoIP (Ya sea en HardPhones o en SoftPhones), SIP no lleva contenido media o multimedia, más bien para eso SIP se apoya en el Protocolo de Transporte en Tiempo Real (RTP) para transferir el contenido media entre un usuario y otro una vez haya sido establecida la llamada.

SIP es configurado desde el archivo /etc/asterisk/sip.conf y contiene parámetros relacionados con la configuración de los clientes y operadores SIP. Los clientes SIP deben estar configurados antes de recibir o realizar una llamada.

El archivo sip.conf, debe ser leído de arriba hacia abajo, en la parte superior esta la sección para la configuración de las opciones generales del servidor, como dirección IP y puerto de escucha, las entradas que siguen en el archivo de configuración son las secciones para los clientes, tales como nombre de usuario, contraseña y la IP por defecto para los usuarios no registrados. Las secciones están denotadas por corchetes ([]).

La primera sección es [general], la cual contiene las opciones globales para la configuración de los clientes. Tales como:

allow: Permite que un determinado codec sea usado. bindaddr: Dirección IP donde Asterisk espera por las conexiones SIP.

Page 17: 47791304-Asterisk

context: Configura el contexto general donde todos los clientes son colocados, a menos que sea sobrescrito en la definición de entidad.

disallow: Prohíbe el uso de un determinado codec. bindport: Puerto que Asterisk debe esperar por conexiones de entrada

SIP, en general el puerto 5060. maxexpirey: Tiempo máximo para registro en segundos. register: Registra Asterisk con otro host.

Ejemplo:

[general]Bindport = 5060bindport = 172.16.1.32context = defaultdisallow = allmaxepirey = 120defaultepirey = 80

Después de la sección [general] siguen las definiciones de las entidades o clientes SIP, las entidades aquí establecidas pueden pertenecer al contexto por defecto, para fines prácticos se crea a continuación un nuevo contexto, el contexto Unal el cual será definido cuando se procesada a configurar las extensiones de cada uno de los clientes. Para crear un cliente SIP se siguen lo parámetros y opciones:

[nombre]: Nombre del Cliente. type: Tipo de cliente y conexión ya sea peer, user o friend, peer hace

referencia a un tipo de cliente que solo recibe llamadas en el PBX, user hace referencia a un cliente que solo puede hacer llamadas a través del PBX y por ultimo friend que hace referencia al cliente que puede hacer y recibir llamadas a través del PBX.

host: Configura la dirección IP o el nombre de host del cliente, si al cliente su dirección IP se asigna vía DHCP se usa como parámetro la opción ‘dinamyc’, donde se espera que el cliente se registre para entablar comunicación con este.

secret: Contraseña usada para autentificar a cada uno de los clientes. canreinvite: Este parámetro es utilizado para decirle al servidor que no

intente re-invitar al cliente. context: Cuando se define este parámetro dentro de la definición del

cliente, se define el contexto para ese cliente en particular. language: Especifica un código de lenguaje definido en

indications.conf . nat: Define si el servidor está detrás de NAT o no. videosupport: Activa o desactiva el soporte de video en dispositivos

SIP. mailbox: Extensión de correo de voz para indicación de nuevos

mensajes. qualify: Verificar si el cliente es alcanzable. port: Puerto SIP del cliente.

Page 18: 47791304-Asterisk

A continuación se presenta como ejemplo uno de los clientes SIP configurados en nuestra central telefónica.

[estudiante1] ; Nombre del Clientetype=friend ; Tipo de Clientesecret=803000 ; Contraseña de Autenticación de Clientequalify=yes ; El cliente es alcanzablenat=yes ; Esta el servidor detrás de NAThost=dynamic ; La dirección IP del Cliente es dinámica, por lo cual se debe registrarcanreinvite=no ; No re-invita al cliente context=unal ; El cliente Pertenece al contexto Unal

4.2 Configuración de Clientes IAX

Cuando se habla de Protocolo IAX y clientes IAX, se refiere propiamente a IAX2 ya que este sustituyo al versión original de IAX, añadiéndole nuevas capacidades y corrigiendo sus fallos y defectos, como aclaración en el transcurso del texto, siempre que se haga referencia al protocolo IAX se va a estar hablando de la versión IAX2.

Inter-Asterisk eXchange Protocol – IAX proporciona control y transmisión de voz sobre redes IP. IAX puede ser usado con cualquier tipo de propósito ya sea transmisión de voz o video, pero fue pensado principalmente para llamadas de voz. Los objetivos del proyecto IAX se derivan de la experiencia con los protocolos de Voz Sobre IP como el SIP (Session Initiated Protocol) y el MGCP (Media Gateway Control Protocol) para control y el RTP para el flujo multimedia (Streaming Multimedia), IAX no es un protocolo estándar, pero va en camino a serlo dado su gran uso y sus grandes cualidades las cuales lo hacen flexible y versátil frente a otros protocolos. IAX nace como fruto del esfuerzo de la comunidad de Software Libre mundial y de la comunidad de usuarios y desarrolladores de Asterisk por tener un gran servidor, el cual usara protocolos robustos, versátiles y flexibles para prestar un gran servicio (Ver Anexo).

La configuración de clientes IAX nos es muy diferente a la configuración de un cliente SIP, en realidad la única diferencia relevante he importante es el archivo de configuración que se debe usar, para configurar clientes SIP se usaba el archivo /etc/asterisk/sip.conf, pero para configurar los clientes IAX se debe usar el archivo /etc/asterisk/iax.conf

[estudiante2] ; Nombre del Clientetype=friend ; Tipo de Clientesecret=803000 ; Contraseña de Autenticación de Clienteusername= estudiante2 ; Se puede especificar el nombre de usuario para el login.host=dynamic ; Se especifica la IP del cliente o se indica que usa DHCPcontext=unal ; El cliente Pertenece al contexto Unal

Page 19: 47791304-Asterisk

qualify=yes ; El cliente es alcanzable

Como se mostró en este ejemplo la configuración de un cliente IAX es idéntica a la de un cliente SIP, se puede jugar haciendo unos determinados cambios a estos según el tipo de aplicación que se requiera, las sentencias mostradas anteriormente para agregarle funcionalidades y mejor operación a un cliente SIP, están igualmente disponibles para los clientes IAX. Mas adelante se mostrara una configuración más avanzada para cada uno de los clientes con el fin de prestar una mayor cantidad de servicios, tales como buzón de mensajes de voz, salas de conferencia, operadora, y servicios de video conferencia.

4.3 Configuración del DialPlan

Una vez se tenga configurado ya sea los clientes que usan el protocolo SIP o los clientes que usan el protocolo IAX o ambos, procederemos a crear el DialPlan o Plan de Discado correspondiente, el DialPlan es básicamente una lista de instrucciones que el PBX debe realizar cada vez que se marca un número o entra una llamada por un canal, indicando cada una de las acciones a seguir cuando uno de estos dos eventos ocurre. A diferencia de otros sistemas telefónicos tradicionales, el DialPlan en Asterisk es totalmente configurable.

La mayor parte del DialPlan o plan de discado se encuentra en el archivo /etc/asterisk/extencions.conf, en el cual se hace la mayor gestión de los servicios prestados. Un DiaPlan básicamente esta dividido en cuatro secciones estas son: Contexto, Extensiones, Prioridades y Aplicaciones.

4.3.1 Contexto

Se define como Contexto a un grupo o colección de extensiones o números telefónicos, estos son de suma importancia dado que ofrece organización y seguridad a la hora de crear el plan de discado, estos definen y separan diferentes partes del plan de discado, por esto están altamente relacionados con la configuración de cada uno de los canales a usar (SIP, IAX, H323, etc), dado que cada canal existe dentro de un contexto, cuando se realiza una llamada a la central con Asterisk por un canal determinado es el contexto el que se encarga de procesarla.

Aparte de esto los contextos son usados para crear menús de voz, con el fin de proveerle una atención más agradable al cliente, sin dejar de ser completamente automatizada.

Los contextos se definen indicando su nombre entre corchetes ([]) y todas las sentencias y definiciones usadas después de este pertenecen al contexto, generalmente extensiones.

Page 20: 47791304-Asterisk

4.3.2 Extensiones

Las extensiones corresponden a cada una de las instrucciones que un PBX o una Centralita con Asterisk debe seguir cuando se marca un número o recibe una llamada en un canal particular.

La palabra reservada para definir una extensión es exten seguido del símbolo igual (=) y del símbolo mayor que (>), quedando así de la siguiente forma:

exten =>

Este va seguido del nombre de la extensión, normalmente este es el número de la línea del abonado, pero en Asterisk no solo se limita a usar números como en la telefonía convencional sino que también podemos usar caracteres alfanuméricos al crear el plan de discado. Todas las extensiones están compuestas por tres elementos.

1. Nombre: Sea el nombre de la extensión o el numero de esta.2. Prioridad: Cada extensión puede tener múltiples pasos de prioridad con

los que definirá que tipo de acciones debe seguir y en que orden al presentarse un evento determinado, como lo es una llamada.

3. Aplicación: Este es el comando a aplicación a llamar o que se desee ejecutar según sea el caso.

La estructura completa de una extensión será la siguiente:exten => nombre, prioridad, aplicación()

Un ejemplo de esta seria:exten => 911, 1, Answer()

En este ejemplo se puede ver que el nombre de la extensión es un número como en la telefonía convencional, la prioridad para ejecutar este pasó es de 1 y el comando o aplicación que se va a ejecutar con este orden de prioridad es responder la llamada.

4.3.3 Prioridades

Cada extensión puede ejecutar múltiples pasos, cada uno de estos se conocen como prioridades, cada una de estas prioridades ejecuta una acción especifica. Cada prioridad tiene una numeración secuencial, iniciando por el 1 que es el mayor grado de prioridad disponible (Esta prioridad se ejecutara en primera instancia).

Un ejemplo de prioridades seria:exten => 911, 1, Answer()exten => 911, 2, Hangup()

En este ejemplo se puede ver claramente las prioridades, la prioridad 1 ejecuta el comando responder la llamada y la prioridad 2 ejecuta el comando para cortar la llamada.

Page 21: 47791304-Asterisk

4.3.4 Aplicaciones

Las Aplicaciones son los pilares muy importantes de Asterisk y de su plan de discado o DialPlan, dado que estas indican como tratar el canal de voz, la acción específica a realizar en un canal en el momento que se genera un llamada, como tratar y manipular los sonidos, etc. Las aplicaciones determinan el funcionamiento y el comportamiento de la central Telefónica IP. Como en cualquier lenguaje de programación o de scripts estas aplicaciones en Asterisk pueden o no recibir parámetros o argumentos.

Entre las aplicaciones mas usadas tenemos:

Answer(): Contestar cuando se escuche el tono y se acepte la llamada entrante por el canal, esta aplicación no recibe ningún argumento.

Hangup(): Esta aplicación se usa para cortar una llamada en un canal activo, al igual que Answer no recibe ningún tipo de argumento.

PlayBack(): Esta aplicación se usa para emitir algún archivo de audio previamente guardado en el servidor, por ejemplo las voces de la operadora, como antes se menciono los sonidos que usa Asterisk deben estar guardados en /var/lib/asterisk/ sounds/. PlayBack si necesita recibir un argumento para su correcto funcionamiento, el argumento que se le debe pasar es el nombre del archivo de audio sin la extensión correspondiente, si el archivo de audio no esta en la carpeta por defecto de los sonidos de Asterisk se debe especificar la ruta absoluta de este como parte del argumento de la aplicación PlayBack.

Ejemplo:exten => 911,2,Playback(saludo)

Background(): Esta aplicación es muy similar al PlayBack dado que también se encarga de reproducir un archivo de audio, pero a diferencia de PlayBack, Background en el momento que el cliente presione una tecla o un digito la reproducción del archivo de audio será interrumpida, si se marca un numero de extensión se realizara la petición de llamada. Background se usa igual que PlayBack.

Ejemplo:exten => 123,2,background(saludo)

Goto(): Esta aplicación se usa para redirigir una llamada entrante a una extensión hacia otra. Su estructura de uso es la siguiente:exten => 123,2,Goto(contexto, extension, prioridad )

Los parámetros que recibe Goto() son primero el contexto, este no es necesario si la extensión pertenece al contexto actual con el que estamos trabajando. El segundo parámetro es la extensión, es el numero de extensión al cual queremos redirigir la llamada entrante, y por ultimo la prioridad, esta hace referencia a la prioridad en particular a la que se redirige la llamada.

Page 22: 47791304-Asterisk

Ejemplo:exten => 123,2,Goto(unal, 911, 1 )

Dial():Una de las funciones básicas de cualquier Centralita o PBX es el de conectar llamadas telefónicas de una extensión (telefónica) a otra. En Asterisk, esto es posible usando la aplicación Dial(). Esta aplicación es usada crear llamadas telefónicas a una Centralita Asterisk o desde una Centralita Asterisk.El objetivo de esta aplicación es ser el puente de comunicación para las llamadas entrantes que usen tecnologías distintas (Analógica o Digital) o protocolos distintos de VoIP(SIP, IAX2, H.323).

La sintaxis de uso de la aplicación es la siguiente:Dial(tecnologia/identificador_extension,time_espera,opciones)

Ejemplo:exten => 123,1,Dial(SIP/estudiante1,15)exten => 124,1,Dial(IAX2/estudiante2,15)

El uso es similar a las aplicaciones anteriormente mencionadas, el primer campo corresponde a la tecnología o protocolo usado, el segundo campo corresponde al identificador o nombre de la extensión, el campo siguiente corresponde a el tiempo de espera para que se conteste o no el teléfono.

La aplicación Dial() comúnmente es usada para definir números de extensión a teléfonos físicos o hardphones, pero puede ser usada para cualquier aplicación con softphones.

Si en algún momento se desea ver cada una de las aplicaciones instaladas disponibles para Asterisk lo único que se necesita es entrar a la interfaz de comandos de Asterisk y escribir:

CLI> core show applications

Generalizando y integrando cada uno de los conceptos mencionados anteriormente sobre el DialPlan o Plan de Discado y el como se deben crear cada una de las extensiones de la centralita Telefónica IP, se muestra a continuación un ejemplo de cómo crear las extensiones para los usuarios SIP y IAX2 anteriormente creados.

Ejemplo:

; Usuario SIPexten => 100,1,Dial(SIP/sm10,15,t)exten => 100,2,Answer() ; Se responde la llamadaexten => 100,3,Playback(es/vm-nobodyavail) ; Si no hay nadie disponible, se le informa al usuario mediante una grabación.exten => 100,5,Goto(911,1) ; Si no hay nadie se reenvía la llamada a la operadoraexten => 100,6,Hungup() ; Se cuelga la llamada

Page 23: 47791304-Asterisk

; Usuario IAX2exten => 101,1,Dial(IAX2/sm11,15,t)exten => 101,2,Answer() ; Se responde la llamadaexten => 101,3,Playback(es/vm-nobodyavail) ; Si no hay nadie disponible, se le informa al usuario mediante una grabación.exten => 101,5,Goto(911,1) ; Si no hay nadie se reenvía la llamada a la operadoraexten => 101,6,Hungup() ; Se cuelga la llamada

Después de tener estas dos extensiones creadas y configuradas se puede proceder a iniciar el servicio y a que cada uno de los clientes haga uso de este, para la implementación presentada se usaron cliente Softphones dado que no se contaba con presupuesto para trabajar con hardware (Hardphones, Conversores ATA y Tarjetas Analógicas).

4.4 Configuración de Servicios

4.4.1 Correo de Voz

El recurso de buzón de voz o correo de voz permite que una llamada ocupada o no atendida sea enviada a un contestador automático. Un mensaje de aviso con audio anexado es enviado para el receptor del mensaje. Es uno de los recursos estándar de Asterisk. Es interesante que sistemas en una arquitectura de conmutación de circuitos fueran antes mucho más costosos y ahora con telefonía IP se tornan estándar y un valor agregado sin costo alguno.

Para configurar el buzón de voz se debe seguir los siguientes pasos:

1. Configurar el archivo voicemail.conf para crear los usuarios y contraseñas del correo de voz.

2. Configurar el archivo extensions.conf para que una llamada ocupada o no atendida sea direccionada para la aplicación VoiceMail().

3. Configurar las respectivas extensiones para que los usuarios puedan oír su buzón de voz y administrarlo.

Siguiendo el esquema anterior, procedemos a editar el archivo voicemail.conf ubicado en el directorio /etc/asterisk.

Procedemos a buscar el contexto [general], y seleccionamos el formato de audio en el que se desea guardar los mensajes de voz.

Page 24: 47791304-Asterisk

[general]; Default formats for writing Voicemail;format=g723sf|wav49|wav|gsmformat=wav

Recordando un poco todo lo que este con punto y coma (;) son comentarios, en este caso se nos muestra los formatos de audio disponibles para guardar los mensajes de voz, se pueden seleccionar varios al tiempo, según las necesidades del usuario y los requisitos de administración, pero no es recomendable dado que si desea prestar un servicio a gran escala será necesario una gran capacidad de almacenamiento ya que todos los mensajes se almacenan en el servidor. Para esta aplicación se selecciono wav como el formato de audio de los mensajes dado que es un formato rico y de alta calidad, aunque es el que mas espacio en almacenamiento consume.

A continuación se procede a crear los buzones de voz por cada uno de los usuarios de la centralita telefónica IP. La sintaxis para crear los buzones de voz es la siguiente:

Extensión => Contraseña, Usuario Buzon, root@localhost, correo externo

Ejemplo:

100 => 1234, estudiante1, root@localhost, [email protected] => 1234, estudiante2, root@localhost, [email protected]

Bueno el ejemplo indica que a los clientes estudiante1 y estudiante2, con extensiones 100 y 101 respectivamente, tienen como contraseña de su buzón de voz la secuencia de números 1234 y que van a guardar sus mensajes de voz en el servidor local de la centralita con Asterisk y aparte de eso se mandara una copia del mensaje de voz al correo electrónico de cada usuario.

Ahora se procede a indicar a cada uno de los clientes ya sean SIP o IAX2, cual es el buzón de voz que les corresponde, para la cual es necesario editar los archivos sip.conf y iax.conf.

Para indicar que buzón de voz va a usar el cliente es necesario usar el parámetro mailbox de la siguiente forma:

[estudiante1] type=friend secret=803000 qualify=yes nat=yes host=dynamic canreinvite=no context=unal mailbox=100@default

Page 25: 47791304-Asterisk

[estudiante2] type=friend secret=803000 qualify=yes nat=yes host=dynamic canreinvite=no context=unal mailbox=101@default

El parámetro mailbox recibe el numero de extensión del usuario @ la configuración del buzón, en este caso es la configuración por defecto por lo cual recibe @default.

A continuación se configura el archivo extensions.conf para que en el momento de que se realice una llamada y esta no sea atendida se proceda a usar la aplicación VoiceMail() para guardar un mensaje en el buzón de voz.

Se necesita simplemente agregar un prioridad mas a cada una de las extensiones con el fin de que sino hay respuesta en ningún momento de la llamada se procede a guardar en mensaje de voz. La sintaxis de esta es la siguiente:

exten => Numero de Extension, Prioridad,Voicemail(uExtension@default)

Como toda prioridad se debe indicar el numero de extensión y la prioridad con la que se debe ejecutar, cabe aclarar que la prioridad del buzón de voz debe ser menor que la prioridad de responder una llamada, con el fin de que primero se verifique si hay respuesta y de no ser así se proceda a dejar un mensaje en el buzón de voz, usando la aplicación Voicemail() la cual recibe como parámetros la extensión anteponiendo el carácter u y @default, para la configuración por defecto del buzón de voz.

Ejemplo:

exten => 100,1,Dial(SIP/estudiante1,15,t)exten => 100,2,Answer()exten => 100,3,Playback(es/vm-nobodyavail)exten => 100,4,Voicemail(u100@default)exten => 100,5,Goto(911,1)exten => 100,6,Hungup()

exten => 111,1,Dial(IAX2/estudiante2,15,t)exten => 111,2,Answer()exten => 111,3,Playback(es/vm-nobodyavail)exten => 111,4,Voicemail(u101@default)exten => 111,5,Goto(911,1)exten => 111,6,Hungup()

Page 26: 47791304-Asterisk

En este ejemplo se ve claramente el uso de la aplicación Voicemail(), como a esta se le indica a que buzón de voz se le debe guardar el mensaje dado que la llamada no se contexto y además de esto que la prioridad de esta aplicación es mas baja que la prioridad de responder la llamada.

Por ultimo y para que el servicio quede totalmente funcional se procede a crear una extensión adicional donde cada uno de los usuarios accederá para recuperar sus mensajes de voz. Para esto creamos una extensión simple que use la aplicación VoicemailMain la cual se encarga de gestionar la administración del buzón de voz.

Ejemplo:

; BUZON DE VOZexten => *123,1,VoicemailMain

Cabe resaltar que la aplicación VoicemailMain no recibe ningún tipo de parámetros y que los números de extensión como se menciono anteriormente no pueden usar caracteres diferentes a los numéricos. La aplicación VoicemailMain va a llevarlo a un menú de opciones donde podrá ejecutar una serie de opciones, las cuales son:

0 Opciones de casilla postalo 1 Graba mensaje de no disponibleo 2 Graba mensaje de ocupadoo 3 Graba nombre o 4 Graba mensaje temporáneoo 5 Cambia contraseñao * Retorna al menú principal

1 Lee los mensajes de voicemailo 3 Opciones avanzadas

1 Reply 2 Call Back 3 Envelope 4 llamada de salida

o 4 Reproduce el mensaje anterioro 5 Repite el mensaje actualo 6 Reproduce el próximo mensajeo 7 Apaga el mensaje actualo 8 Reencamina el mensaje para otra casillao 9 Salva el mensaje en una carpeta o Ayudao * Salir

Cambios de Pista *Ayuda # Salida

Page 27: 47791304-Asterisk

4.4.2 Salas de Conferencia

La conferencia en Asterisk es posible usando la aplicación MeetMe(). El MeetMe() es una aplicación que permite realizar una llamada en la que participen mas de dos clientes donde se pueden reuniones virtuales, muy simple de usar con la ventaja de que funciona con cualquier tipo de canal. Algunos teléfonos estándar SIP, por ejemplo, tienen sus propios mecanismos de conferencia que también pueden ser usados, pero el método estándar para conferencia es el MeetMe().

Asterisk usando la aplicación MeetMe() permite:

o Permite crear salas de conferencia de libre acceso.o Permite crear salas de conferencia protegidas por clave.o Administración de conferencias.o Callar o expulsar a un miembro de la conferencia.o Creación de conferencias estáticas (en el meetme.conf).o Creación de conferencias dinámicas (utilizando el plan de marcación).

Para crear las salas de conferencia es necesario editar el archivo meetme.conf ubicado en el directorio /etc/asterisk. Este archivo es pequeño, se debe buscar el contexto [rooms] y en el crear cada una de las salas de conferencia que desea prestar en el servicio de la centralita.

La sintaxis para crear una sala de conferencia es la siguiente:

conf => numero_sala, contraseña_sala, contraseña_administrador_sala

Solo es necesario al crear las salas de conferencia especificar el numero de la sala, las contraseñas se establecen dependiendo del tipo de servicio a prestar.

Ejemplo:

[rooms]

conf => 600 conf => 601, 123 conf => 602, 123, 456

En este ejemplo se crean las salas de conferencia, se crea una sala pública la 600 sin contraseña, se crean dos salas privadas con contraseña 123 la sala 601 y la sala 602 y se especifica que en la 602 se va a tener un administrador de la conferencia que identificara con la contraseña 456.

Por ultimo es necesario crear una extensión para cada sala de conferencia, esto se hace en el archivo extensions.conf.

Page 28: 47791304-Asterisk

Ejemplo:

exten => 997,1,Answerexten => 997,2,Playtones,ringexten => 997,3,Wait,3exten => 997,4,Meetme(600|M)exten => 997,5,Hangup

exten => 998,1,Answerexten => 998,2,Playtones,ringexten => 998,3,Wait,3exten => 998,4,Meetme(601|M)exten => 998,5,Hangup

exten => 999,1,Answerexten => 999,2,Playtones,ringexten => 999,3,Wait,3exten => 999,4,Meetme(601|M)exten => 999,5,Hangup

Como se ve en el ejemplo la aplicación MeetMe() recibe como parámetros el numero de la sala de conferencias, y ciertas opciones anteponiendo el carácter |, en este caso recibe la opción M que habilita el MusiconHold o música en espera cuando solo hay un cliente en la sala de conferencia, se podría por ejemplo agregar la opción P la cual permite a los usuarios salir de la sala de conferencia usando la tecla #.

La aplicación MeetMe() necesidad de un ‘Timer’ para que funcione el servicio de salas de conferencia, este generalmente es proveído por las interfaces Zaptel (Tarjetas como FXO, E1 o T1) , dado que esta aplicación las pruebas son enteramente en Software este ‘Timer’ no esta disponible por lo cual no se podría hacer pruebas de este servicio; esto se soluciona subiendo y habilitando un modulo al kernel de Linux para que este se encargue de hacer el sincronismo por Software.

Para lograr que el kernel de Linux haga este sincronismo (La función de Timer) es necesario subir el modulo ztdummy para lo cual si es necesario la instalación del paquete Zaptel mencionado anteriormente. Se establece una sesión de Terminal y se ingresan los siguientes comandos:

$ su# modprobe ztdummy

o

$ su# insmod ztdummy

Primero es necesario loguearse como administrador del sistema para esto se usa el comando su, luego se sube el modulo al kernel esto se hace con

Page 29: 47791304-Asterisk

modprobe o insmod, luego de ejecutar estos comando ya se puede iniciar el servicio de salas de conferencia.

Figura 4.1

4.4.3 Servicio de Video Conferencia o Video Llamada

Asterisk es una prueba tangible de la evolución de la tecnología y la realidad de muchos visionarios y cineastas, que pensaron que un futuro la telefonía ya no solo seria la clásica llamada de voz sino que en algún momento se transmitiría video, con esto prácticamente las barreras de la distancia desaparecerán. Aunque esto no es nada nuevo, dado que muchos vendedores ya lo están implementando, Asterisk es una solución económica y flexible para que este servicio se masifique.

Asterisk por el momento solo permite Video Conferencia uno a uno, es decir en una llamada donde solo participen dos clientes se permite la transmisión de Video, en servicios de conferencia, es decir en llamadas donde participen tres o mas clientes no se tiene soporte para la transmisión de video, los desarrolladores de este proyecto tienen previsto que para las futuras ramas de Asterisk se tenga soporte para salas de conferencia con transmisión de video y video conferencia 3G es decir video conferencia en la red GSM de la telefonía celular.

Cabe aclarar que Asterisk solo provee soporte de transmisión de Video para clientes SIP y IAX2, clientes que usen protocolos H.323, Skinny, MGCP solo pueden transmitir voz. Dado esto inicialmente se debe habilitar el soporte para video conferencia en los archivos de configuración de los clientes SIP y IAX2, es decir el archivo sip.conf y iax.conf. Se busca el contexto [general] y se escribe:

[general]context=defaultbindport=5060

Page 30: 47791304-Asterisk

bindaddr=0.0.0.0srvlookup=yesvideosupport=yes

Se habilita el soporte para transmisión de video con videosupport=yes. Ahora se procede a indicar que clientes van a tener activo el servicio de video conferencia. Primer cambio importante se deben deshabilitar todos los codecs, dado que el servicio de video conferencia consume altos recursos de la red y lo mejor es seleccionar los que consuman un mejor ancho de banda, esto se consigue mediante la línea disallow=all. Como dato anexo, para realizar una adecuada transmisión de voz es necesario que los clientes tengan un ancho de banda de subida y bajada de mínimo 60kbps garantizados para poder proveer un servicio de calidad, para el caso de transmisión de video o Video Conferencia se requiere que el ancho de banda de subida y de bajada sea de 128 kbps garantizados.

[estudiante1]type=friendsecret=803000qualify=yesnat=yeshost=dynamiccanreinvite=nocontext=unal mailbox=100@defaultdisallow=allallow=alawallow=ulawallow=H263 allow=H264allow=gsmallow=ilbc

Alaw, Ulan, GSM, iLBC son codecs de audio de un alto nivel de compresión y un bajo consumo de recursos de red por lo cual son los seleccionado para este servicio. H.263 y H.264 son los seleccionado para la transmisión de video, para esta aplicación en particular solo se necesitaría H.264 dada la rama de Asterisk con la que se esta trabajando, si se estuviera usando la rama 1.2.x de Asterisk es necesario usar H.263 dado que esta solo tiene soporte para este codec.

H.264 o MPEG-4 parte 10 es una norma que define un codec de vídeo de alta compresión, desarrollada conjuntamente por el Video Coding Experts Group (VCEG) y el ISO/IEC Moving Picture Experts Group (MPEG). El objetivo del proyecto H.264 fue la de crear un estándar capaz de proporcionar una buena calidad de imagen con tasas binarias notablemente inferiores a los estándares previos (MPEG-2, H.263 o MPEG-4 parte 2), además de no incrementar la complejidad de su diseño.

Page 31: 47791304-Asterisk

ANEXO A – PROTOCOLO IAX2

Es el protocolo usado por Asterisk. La versión 1 de este protocolo ha caído en desuso, en favor de la versión 2 (IAX2).

El objetivo con el que se creó este protocolo fue minimizar la tasa de bits requerida en las comunicaciones VoIP y tener un soporte nativo para traspasar dispositivos de NAT (Network Address Translation). En otras palabras, provee soluciones a los problemas dados en SIP y H.323. Fue creado por Mark Spencer, quien también participa en el desarrollo de Asterisk.

IAX2 usa un único puerto UDP (4569) para transmitir tanto señalización como datos. El tráfico de voz es transmitido en banda (in-band), es decir, los datos de voz van encapsulados en el protocolo; SIP, en cambio, se basa del protocolo RTP para la transmisión de los datos (su transmisión es out-band). Esto le permite al protocolo IAX2 prácticamente transportar cualquier tipo de dato.

Otra característica de IAX2 es que soporta Trunking; es decir, un solo enlace puede enviar datos y señalización de varios canales. Cuando se hace Trunking, un solo datagrama IP puede contener información de varias llamadas sin crear latencia adicional. Esto genera una disminución de la tasa de bits y del retraso de los paquetes debido a que ahorra enviar varias veces la cabecera IP.

Todas estas características del IAX2 se deben a que en su diseño se basaron en muchos estándares de señalización y de transmisión de datos, quedándose solo con lo mejor de cada uno. Algunos protocolos tomados como base para el IAX2 son: SIP, MGCP y RTP (Real-time Transfer Protocol).

IAX2 es un protocolo de media y señalización “peer-to-peer”. Eso significa que los dispositivos mantienen conexiones asociadas con las operaciones de protocolo. Con respecto a los componentes de señalización de IAX2, este tiene más parecido con el SIP que con el MGCP, que es un protocolo de control de tipo maestro-esclavo. El proyecto IAX2 multiplexa la señalización y múltiples flujos sobre una única asociación UDP entre dos hosts de Internet. Este se aborda con dos protocolos, el primero es el protocolo de señalización de las sesiones, el segundo el protocolo para transportar los flujos de media. Este abordaje difiere de la arquitectura general de los protocolos basados en la IETF con los protocolos separados para, señalización (MGCP e SIP) y flujo de media (RTP/RTCP). Como el IAX2 usa el mismo protocolo para señalización y media en un mismo puerto UDP, este no sufre de los problemas de atravesar dispositivos que realizan NAT (Network Address Translation), como, por ejemplo, enrutadores ADSL.(Característica fundamental para operadoras de telefonía IP). IAX2 usa el puerto UDP 4569 para comunicar todos los paquetes. IAX2 entonces usa un número de llamada de 15 bits para multiplexar los flujos sobre una única asociación UDP.

Page 32: 47791304-Asterisk

Figura A.1

El valor 0 es un número especial de llamada reservado en cada host. Cuando intenta hacer una llamada, el número de llamada de destino todavía no es conocido. Un número de llamada cero es usado en esta situación. IAX2 es un protocolo binario. El diseño fue hecho para mejorar la eficiencia en el uso de banda ancha. Más allá de eso, el protocolo es optimizado para hacer un uso eficiente de banda ancha para cada llamada individual.

El protocolo IAX2 emplea un proceso similar de registro y autenticación al que usa SIP. IAX permite el uso del modo Trunked. En este caso, cuando más de una llamada es hecha, el overhead de los encabezados IP es disminuido, encaminando múltiples paquetes de voz de diferentes llamadas en un único paquete. Con esto la necesidad de banda ancha es reducida.

Los mensajes IAX son llamadas frames. Existen varios tipos básicos de frames. Cada un de los tipos es descrito en esta sección. Un bit F es usado para indicarse que el frame esta completo (Full) o no lo esta. El valor 0 indica que esta completo. Un número de llamada de 15 bits es usado para identificar el punto final de flujo de media. Un valor de 0 indica que el punto final no es conocido. Una llamada tiene dos números de llamada asociados con ella en cualquier de las dos direcciones. El horario (timestamp) puede ser un campo de 32 o 16 bits. De cualquier forma el campo ocupa 32 bits.

Un frame completo puede ser usado para enviar señalización, audio y vídeo de forma confiable. El frame completo es el único tipo de frame que es transmitido de forma confiable. Esto significa que el receptor debe retornar algún tipo de mensaje al emisor después haberlo recibido.

Page 33: 47791304-Asterisk

Figura A.2

La figura de arriba ilustra el formato binario de un frame completo. La tabla de abajo describe cada uno de los campos. El bit R es marcado para indicar que un frame está siendo retransmitido. La retransmisión ocurre después de un período de timeout y las retransmisiones son intentadas varias veces, dependiendo del contexto. El número de secuencia del flujo de salida “Oseqno" inicia con 0 y se incrementa de uno en uno. El campo “OSeqno” es usado para identificar el orden de los frames de media. ISeqno es lo mismo solo que en el sentido de entrada (Inbound).

Figura A.3

El miniframe es usado para enviar el audio o vídeo (media) con un mínimo de sobrecarga de protocolo. El formato del miniframe se describe abajo.

Figura A.4

El timestamp del Mini Frame esta truncado. El cliente generalmente mantiene el timestamp completo de 32 bits. Cuando es enviando el miniframe, los 16 bits de orden más bajo son enviados en el campo timestamp. Cuando el timestamp de 16 bits da la vuelta (imprevisto) un frame completo es enviado para permitir que el otro lado sincronice.

Page 34: 47791304-Asterisk

Figura A.5

Page 35: 47791304-Asterisk

ANEXO B – CONFIGURACIÓN DE CLIENTES SOFTPHONES

Para realizar las pruebas respectivas del servicio, es necesario contar con el equipo necesario de pruebas, lo mas común seria contar con Teléfonos IP, conversores ATA e interfaces Analógicas/Digitales para tener conexión con la red telefónica publica conmutada; pero dado que esto no es factible ya que implica hacer una inversión económica fuerte, la mejor alternativa de prueba en este caso es usar un cliente Softphone, un Softphone es un software que permite convertir un computador en un teléfono IP y hacer llamadas a otros Softphones, o a teléfonos IP, incluso a teléfonos convencionales si se contratado el servicio, este con un bueno micrófono, parlantes y una buena webcam también se convierte en una gran alternativa para vender el servicio.

Se puede contar con una gran variedad de Clientes Softphones para trabajar, entre los más populares están:

X – Lite, Este Softphone disponible para Windows 98/2000/Me/NT/XP y GNU/Linux, trabaja con protocolo SIP. Licencia Freeware.

Zoiper, Cliente múltiplaforma al igual que el X – Lite, trabaja con protocolo IAX2, este software antes era conocido como Idefisk. Licencia GPL.

Eyebean – Xten, versión comercial del X – Lite, al igual que este trabaja con protocolo SIP. Licencia Comercial.

Ekiga, Softphone SIP exclusivo para GNU/Linux. Licencia GPL. WengoPhone, Softphone multiplataforma usa protocolo SIP. Licencia

GPL. VoixPhone, cliente multiplataforma el cual soporta protocolo SIP y IAX2.

licencia GPL.

A continuación se presenta la configuración de dos de estos Softphones dado que son muy versátiles y sumamente sencillos de manejar.

Configuración X – Lite

X – Lite es un cliente gratuito para telefonía IP, muy versátil, que además incorpora la opción llamadas con video sobre IP si se tiene una cámara y el servicio disponible. Su configuración se presenta a continuación.

Luego de realizar la instalación respectiva del software, se tendrá una ventana como esta:

Page 36: 47791304-Asterisk

Figura B.1

Para iniciar la configuración de este Softphone solo es necesario ubicar el cursor del Mouse sobre este y presionar el botón derecho del Mouse y seleccionar la opción SIP Account Settings.

Figura B.2

Al hacer esto se presentara una ventana como esta, en la cual presionaremos el botón add… para agregar una nueva cuenta de usuario.

Figura B.3

Para agregar un usuario se presentara la siguiente ventana:

Page 37: 47791304-Asterisk

Figura B.4

Donde Display Name corresponde al nombre con el que se desea mostrar en el Softphone, puede ser cualquiera, el User Name es el nombre de usuario con el que se desea aparecer registrado en la centralita telefónica con Asterisk este también puede ser cualquiera, el Password corresponde a la contraseña de registro en el centralita, el Authorization User Name es el nombre de usuario con el que se aparece registrado en la centralita telefónica con Asterisk, este y la contraseña son obligatorios y deben coincidir con los registros de Asterisk para que el usuario se puede autenticar, el domino corresponde al la Dirección del Servidor en este caso la dirección IP dado que no se cuenta con un dominio.

En el momento de ingresar todos los datos y esta seguro que estos son

validos, se presiona el botón aplicar y luego el botón aceptar para activar los

cambios, en el momento que estos se activen, se tenga conexión al servidor y

este se encuentre prestando el servicio, ya se pueden hacer uso de este y

realizar las llamadas deseadas.

Configuración VoixPhone

Como se menciono anteriormente VoixPhone es un cliente que soporta tanto

protocolo SIP como protocolo IAX2, a continuación se presenta como usarlo

para prestar el servicio de telefonía IP con Asterisk.

Page 38: 47791304-Asterisk

Para obtener VoixPhone se puede descargar desde la

sección de descargas de http://www.voixphone.com/ . La

instalación es sumamente sencilla por lo cual no se mostrar

acá. Luego de instalar la aplicación se tendrá la siguiente

ventana. Para iniciar la configuración de este cliente se

presiona o se da clic en el botón ubicado en la

esquina inferior izquierda de la ventana.

Luego de presionar este botón tendremos la siguiente

ventana, donde se podrán ingresar los datos de

configuración del proveedor del servicio en la opción

Teléfono, configurar las opciones de audio del Softphone,

tales como los dispositivos de entrada/salida, esto en

Opciones de Audio, se puede configurar el volumen de

audio deseado en la opción Volumen de Audio, algo

importante se puede seleccionado los codecs a usar para

acomodar el servicio a la necesidad del cliente, obviamente

hay dependencia directa con el servidor dado que este el

que pone a disposición del usuario que codecs puede usar,

esto en la opción Codificador, en la opción Filtro se puede

ajustar la ganancia y parámetros para mejorar la calidad del

sonido entrante y saliente.

Los detalles de la cuenta deben ser

ingresados en el orden que la aplicación lo

requiere son:

Dirección del Servidor: Este campo corresponde a la

Dirección IP o al Dominio del servidor.

Puerto: Puerto de conexión, en este caso el puerto 4569

para IAX2.

Nombre de Usuario: Login del usuario, en este caso

estudiante2.

Nombre del identificador de llamada: Nombre con el que

se desea aparecer al realizar una llamada.

Numero identificador de llamada: Número de extensión asignado.

El Softphone además permite revisar automáticamente el buzón de voz en

informarle al usuario este se consigue llenando los campos:

Page 39: 47791304-Asterisk

Donde el Numero a chequear corresponde al numero de extensión del buzón

de voz para el caso de la centralita implementada *123, usuario corresponde al

numero de extensión del usuario para esta caso 101 y la contraseña del buzón

de voz de este usuario que en esta implementación es 1234.

Finalmente se presiona el botón para guardar y activar los

cambios, en el momento que estos se activen, se tenga conexión al servidor y

este se encuentre prestando el servicio, ya se pueden hacer uso de este y

realizar las llamadas deseadas.

Page 40: 47791304-Asterisk

CONCLUSIONES

Asterisk es una completa solución de centralita IP o PBX por software. Se instala sobre plataforma de servidor con sistema operativo Linux (GNU/Linux), y junto con los convenientes interfaces de telefonía (para líneas analógicas o RDSI) convierte a dicho sistema en una potente centralita telefónica.

Asterisk tiene todas las ventajas y ofrece todas la virtudes que ofrecen las Centralitas o PBX tradicionales y de centrales IP propietarias como Cisco, Huawai, Avaya.

El Software Libre, los sistemas GNU/Linux y Asterisk, se muestran como una gran solución a empresas e instituciones que no tienen recursos para comprar equipos o contratar servicios tanto en Telefonía como en otros campos.

Asterisk posee muchas funcionalidades que crecen día a día. Además de las prestaciones básicas (enrutamiento de llamadas, reenvío, música en espera), Asterisk puede funcionar como un gateway de comunicaciones integradas. Por ejemplo, tiene la funcionalidad de digitalizar y enviar por email los mensajes de voicemail. También es posible brindar soluciones IVR (Interactive Voice Response) y mucho más.

Asterisk se ha convertido en un estándar en PBX de código abierto. Permite utilizar hardware de bajo costo y al mismo tiempo brindar soluciones empresariales. El desafío más grande para una implementación confiable es contar con un proveedor con experiencia y conocimientos. Cualquier persona puede descargar el código fuente, pero ese es solo el primer paso. Se necesita un alto grado de personalización y configuración para brindar un producto 100% confiable.

Asterisk ha incorporado la mayoría de estándares de telefonía del mercado, tanto los tradicionales (TDM) con el soporte de puertos de interfaz analógicos (FXS y FXO) y RDSI (básicos y primarios), como los de telefonía IP (SIP, H.323, MGCP, SCCP/Skinny). Eso le permite conectarse a las redes públicas de telefonía tradicional e integrarse fácilmente con centralitas tradicionales (no IP) y otras centralitas IP.

Al soportar una mezcla de la telefonía tradicional y los servicios de VoIP, Asterisk permite a los desarrolladores construir nuevos sistemas telefónicos de forma eficiente o migrar de forma gradual los sistemas existentes a las nuevas tecnologías. Algunos sitios usan Asterisk para reemplazar a antiguas centralitas propietarias, otros para proveer funcionalidades adicionales y algunas otras para reducir costes en llamadas a larga distancia utilizando Internet.

Page 41: 47791304-Asterisk

REFERENCIAS

[1] ASTERISK – THE FUTURE OF TELEPHONY. Jim Van Meggetenm, Jared Smith and Leif Madsen, Editorial O’REILLY – Septiembre de 2005

[2] ASTERISK DESCONSOLADO. Eduardo Viegas y Facundo Correa.

[3] DISEÑO E IMPLEMENTACIÓN DE UNA RED DE TELEFONIA IP CON SOFTWARE LIBRE EN LA RAAP. Diego Quintana Cruz

[4] ASTERISK Y LA TELEFONIA TRADICIONAL. Eric Alexis Gonzáles Erices

[5] THE ASTERISK HANDBOOK, Mark Spencer, Mark Allison and Christopher Rhodes. [6] BUILDING TELEPHONY SYSTEMS WITH ASTERISK, David Gomillion and Barrie Dempster.

[7] VOIP HOWTO, Roberto Arcomano.

[8] VOIP PARA EL DESARROLLO – Una Guía para crear una infraestructura de voz en regiones en desarrollo, Alberto Escudero Pascual.

[9] INTER-ASTERISK EXCHANGE (IAX) VERSION 2, Mark Spencer

[10] www.asterisk.org

[11] http://www.digium.com

[12] www.voip-info.org

[13] http://www.voipforo.com/

[14] www.icecast.org