Programa de Clase Diplomado-GNU-ASTERISK

Embed Size (px)

Citation preview

  • ________________________________________________Cuaderno de Practicas Diplomado GNU-ASTERISK

    Diciembre 2010

    Cuaderno de Prcticas

    GCAP Certificacin Asterisk

    Fundacin Cdigo Libre Dominicano

    Versin 3.1

    Fundacin Cdigo Libre Dominicano - http://www.codigolibre.org 1

  • ________________________________________________Cuaderno de Practicas Diplomado GNU-ASTERISK

    Copyright Esta documentacin es regida por los reglamentos de la GNU Free Documentation License y la GNU General

    Public License v3, sintase libre de copiar, modificar, aprender, distribuir y redistribuir esta documentacin; haga uso de su derecho como si fuere su deber.

    PrefacioEste cuaderno de practica esta diseado para hacer que estudiante obtenga el conocimiento necesario, que va

    desde un domino bsico, fundamental y administrativo de la Plataforma VoIP del Software Libre ASTERISK . Nuestra Certificacin Reconocida en todo el pas y en Latinoamrica en genera los llevara desde los inicios hasta un nivel avanzado, si ste es completado en su totalidad. Este cuaderno es una iniciativa para poder ensear a los candidatos a poder dominar completamente esta plataforma de softPBX Fedora.

    Autores: Cristhian Nez ([email protected]) Carlos Castro ([email protected]) Jorge Ortega ([email protected])

    Cualquier sugerencia, correccin, duda, aclaracin y/o comentario sobre este cuaderno de trabajo, sintase libre se enviar un correo a: [email protected] Changelog con relacin a la versin 2.0:Cambiado a la versin Asterisk 1.6configuracin Dahdi

    Fundacin Cdigo Libre Dominicano - http://www.codigolibre.org 2

  • ________________________________________________Cuaderno de Practicas Diplomado GNU-ASTERISK

    Conceptos de Telefona y VoIP1) VoIP

    VoIP (Voice-over-Internet-Protocol), llamado en espaol Voz sobre IP es un grupo de normas y reglas que hacen posible que la seal de voz viaje a travs del protocolo IP. Esto significa que se enva la seal de voz en forma digital dentro del paquete ip, en lugar de enviarla (en forma digital o analgica) a travs de circuitos utilizables slo para telefona como una TELCO o PSTN (acrnimo de Public Switched Telephone Network, Red Telefnica Pblica Conmutada).

    Los Protocolos que son usados para llevar las seales de voz sobre la red IP son comnmente referidos como protocolos de Voz sobre IP o protocolos IP. Pueden ser vistos como implementaciones comerciales de la "Red experimental de Protocolo de Voz" (1973), inventada por ARPANET. El trfico de Voz sobre IP puede circular por cualquier red IP, incluyendo aquellas conectadas a Internet, como por ejemplo redes de rea local (LAN).

    Es muy importante diferenciar entre Voz sobre IP (VoIP) y Telefona sobre IP (No confundir con ToIP, Text-over-IP). VoIP es el conjunto de normas, dispositivos, protocolos, en definitiva la tecnologa que permite la transmisin de la voz sobre el protocolo IP. Telefona sobre IP es lo que convierte la telefona tradicional debido los servicios que finalmente se pueden llegar a ofrecer gracias a poder portar la voz sobre el

    protocolo IP en redes de datos.

    1a) VentajasLa principal ventaja de este tipo de servicios es que evita los cargos altos de telefona (principalmente de larga distancia) que son

    usuales de las compaas de la Red Pblica Telefnica Conmutada (PSTN). Algunos ahorros en el costo son debidos a utilizar una misma red para llevar voz y datos, especialmente cuando los usuarios tienen sin utilizar toda la capacidad de una red ya existente en la cual pueden usar para VoIP sin un costo adicional. Las llamadas de VoIP a VoIP entre cualquier proveedor son generalmente gratis, en contraste con las llamadas de VoIP a PSTN que generalmente cuestan al usuario de VoIP.

    Hay dos tipos de servicio de PSTN a VoIP: "Llamadas Locales Directas" (Direct Inward Dialling: DID) y "Nmeros de acceso". DID conecta a quien hace la llamada directamente al usuario VoIP mientras que los Nmeros de Acceso requieren que este introduzca el nmero de extensin del usuario de VoIP. Los Nmeros de acceso son usualmente cobrados como una llamada local para quien hizo la llamada desde la PSTN y gratis para el usuario de VoIP.

    2a) FuncionalidadVoIP puede facilitar tareas que seran ms difciles de realizar usando las redes telefnicas comunes:

    Las llamadas telefnicas locales pueden ser automticamente enrutadas a un telfono VoIP, sin importar dnde se est conectado a la red. Uno podra llevar consigo un telfono VoIP en un viaje, y en cualquier sitio conectado a Internet, se podra recibir llamadas.

    Nmeros telefnicos gratuitos para usar con VoIP estn disponibles en Estados Unidos de Amrica, Reino Unido y otros pases de organizaciones como Usuario VoIP.

    Los agentes de Call Center usando telfonos VoIP pueden trabajar en cualquier lugar con conexin a Internet lo suficientemente rpida. Algunos paquetes de VoIP incluyen los servicios extra por los que PSTN (Red Telefnica Conmutada) normalmente cobra un cargo extra, o que no se encuentran

    disponibles en algunos pases, como son las llamadas de 3 a la vez, retorno de llamada, remarcado automtica, o identificacin de llamadas.

    3a) MovilidadLos usuarios de VoIP pueden viajar a cualquier lugar en el mundo y seguir haciendo y recibiendo llamadas de la siguiente forma:

    Los subscriptores de los servicios de las lneas telefnicas pueden hacer y recibir llamadas locales fuera de su localidad. Por ejemplo, si un usuario tiene un nmero telefnico en la ciudad de Nueva York y est viajando por Europa y alguien llama a su nmero telefnico, esta se recibir en Europa. Adems si una llamada es hecha de Europa a Nueva York, esta ser cobrada como llamada local, por supuesto el usuario de viaje por Europa debe tener una conexin a Internet disponible.

    Los usuarios de Mensajera Instantnea basada en servicios de VoIP pueden tambin viajar a cualquier lugar del mundo y hacer y recibir llamadas telefnicas. Los telfonos VoIP pueden integrarse con otros servicios disponibles en Internet, incluyendo videoconferencias, intercambio de datos y mensajes con otros

    servicios en paralelo con la conversacin, audio conferencias, administracin de libros de direcciones e intercambio de informacin con otros (amigos, compaeros, etc).

    Los protocolos mas utilizados en Voip SIP y H.3231) SIP

    Session Initiation Protocol (Protocolo de Inicio de Sesiones) desarrollado por el IETF MMUSIC Working Group con la intencin de ser el estndar para la iniciacin, modificacin y finalizacin de sesiones interactivas de usuario donde intervienen elementos multimedia como el video, voz, mensajera instantnea, juegos en lnea y realidad virtual, posiblemente el remplazo del otros protocolos h.323

    2) H.323Definido en 1996 por la UIT (Unin Internacional de Telecomunicaciones) proporciona a los diversos fabricantes una serie de

    normas con el fin de que puedan evolucionar en conjunto.

    3) Caractersticas principalesPor su estructura el estndar proporciona las siguientes ventajas:

    Fundacin Cdigo Libre Dominicano - http://www.codigolibre.org 3

  • ________________________________________________Cuaderno de Practicas Diplomado GNU-ASTERISK

    Permite controlar el trfico de la red, por lo que se disminuyen las posibilidades de que se produzcan cadas importantes en el rendimiento. Las redes soportadas en IP presentan las siguientes ventajas adicionales:

    Es independiente del tipo de red fsica que lo soporta. Permite la integracin con las grandes redes de IP actuales. Es independiente del hardware utilizado. Permite ser implementado tanto en software como en hardware, con la particularidad de que el hardware supondra eliminar el impacto inicial para el

    usuario comn.. Permite la integracin de Video y TPV

    4) VoIP no es un servicio, es una tecnologaEn muchos pases del mundo, IP ha generado mltiples discordias, entre lo territorial y lo legal sobre esta tecnologa, est claro y

    debe quedar claro que la tecnologa de VoIP no es un servicio como tal, sino una tecnologa que usa el Protocolo de Internet (IP) a travs de la cual se comprimen y descomprimen de manera altamente eficiente paquetes de datos o datagramas, para permitir la comunicacin de dos o ms clientes a travs de una red como la red de Internet. Con esta tecnologa pueden prestarse servicios de Telefona o Videoconferencia, entre otros.

    5) Arquitectura de redEl propio Estndar define tres elementos fundamentales en su estructura:

    Terminales: Son los sustitutos de los actuales telfonos. Se pueden implementar tanto en software como en hardware. Gatekeepers: Son el centro de toda la organizacin VoIP, y seran el sustituto para las actuales centrales. Normalmente implementadas en software, en caso de

    existir, todas las comunicaciones pasaran por l. Gateways: Se trata del enlace con la red telefnica tradicional, actuando de forma transparente para el usuario.Con estos tres elementos, la estructura de la red VoIP podra ser la conexin de dos delegaciones de una misma empresa. La ventaja

    es inmediata: todas las comunicaciones entre las delegaciones son completamente gratuitas. Este mismo esquema se podra aplicar para proveedores, con el consiguiente ahorro que esto conlleva.

    Protocolos de VoIP: Es el lenguaje que utilizarn los distintos dispositivos VoIP para su conexin. Esta parte es importante ya que de ella depender la eficacia y la complejidad de la comunicacin. Por orden de antigedad (de ms antiguo a ms nuevo):

    H.323 - Protocolo definido por la ITU-T SIP - Protocolo definido por la IETF Megaco (Tambin conocido como H.248) y MGCP - Protocolos de control Skinny Client Control Protocol - Protocolo propiedad de Cisco MiNet - Protocolo propiedad de Mitel CorNet-IP - Protocolo propiedad de Siemens IAX - Protocolo original para la comunicacin entre PBXs Asterisk (obsoleto) Skype - Protocolo propietario peer-to-peer utilizado en la aplicacin Skype IAX2 - Protocolo para la comunicacin entre PBXs Asterisk en reemplazo de IAX Jingle - Protocolo abierto utilizado en tecnologa Jabber MGCP- Protocolo propietario de Cisco

    Como hemos visto VoIP presenta una gran cantidad de ventajas, tanto para las empresas como para los usuarios comunes. La pregunta sera por qu no se ha implantado an esta tecnologa?. A continuacin analizaremos los aparentes motivos, por los que VoIP an no se ha impuesto a las telefonas convencionales.

    6) Parmetros de la VoIPEste es el principal problema que presenta hoy en da la penetracin tanto de VoIP como de todas las aplicaciones de IP. Garantizar la

    calidad de servicio sobre una red IP, por medio de retardos y ancho de banda, actualmente no es posible; por eso, se presentan diversos problemas en cuanto a garantizar la calidad del servicio.

    7) CdecsLa voz ha de codificarse para poder ser transmitida por la red IP. Para ello se hace uso de Cdecs que garanticen la codificacin y

    compresin del audio o del vdeo para su posterior decodificacin y descompresin antes de poder generar un sonido o imagen utilizable. Segn el Cdec utilizado en la transmisin, se utilizar ms o menos ancho de banda. La cantidad de ancho de banda suele ser directamente proporcional a la calidad de los datos transmitidos.

    Entre los codecs utilizados en VoIP encontramos los G.711, G.723.1 y el G.729 (especificados por la ITU-T)8) Retardo o latencia

    Una vez establecidos los retardos de trnsito y el de procesado la conversacin se considera aceptable por debajo de los 150 ms.

    9) Calidad del servicio La calidad de este servicio se est logrando bajo los siguientes criterios: La supresin de silencios, otorga ms eficiencia a la hora de realizar una transmisin de voz, ya que se aprovecha mejor el ancho de banda al transmitir menos

    informacin. Compresin de cabeceras aplicando los estndares RTP/RTCP. Priorizacin de los paquetes que requieran menor latencia. Las tendencias actuales son: CQ (Custom Queuing): Asigna un porcentaje del ancho de banda disponible.

    Fundacin Cdigo Libre Dominicano - http://www.codigolibre.org 4

  • ________________________________________________Cuaderno de Practicas Diplomado GNU-ASTERISK

    PQ (Priority Queuing): Establece prioridad en las colas. WFQ (Weight Fair Queuing): Se asigna la prioridad al trfico de menos carga. DiffServ: Evita tablas de encaminados intermedios y establece decisiones de rutas por paquete. La implantacin de IPv6 que proporciona mayor espacio de direccionamiento y la posibilidad de tunneling.

    Principales protocolos de VoIP1) H.323

    El protocolo H.323 se cre originalmente para proveer de un mecanismo para el transporte de aplicaciones multimedia en LANs (Redes de rea local) pero ha evolucionado rpidamente para dirigir las crecientes necesidades de las redes de VoIP.

    Un punto fuerte de H.323 era la relativa y temprana disponibilidad de un grupo de estndares, no solo definiendo el modelo bsico de llamada, sino que adems defina servicios suplementarios, necesarios para dirigir las expectativas de comunicaciones comerciales. H.323 fue el primer estndar de VoIP en adoptar el estndar de IETF de RTP (Protocolo de Transporte en tiempo Real) para transportar audio y vdeo sobre redes IP. H.323 est basado en el protocolo RDSI Q.931 y est adaptado para situaciones en las que se combina el trabajo entre IP y RDSI, y respectivamente entre IP y QSIG. Un modelo de llamada, similar al modelo de RDSI, facilita la introduccin de la Telefona IP en las redes existentes de RDSI basadas en sistemas PBX. Por esto es posible el proyecto de una migracin sin problemas hacia el IP basado en sistemas PBX.

    Dentro del contexto de H.323, un IP basado en PBX es, en palabras sencillas, un Gatekeeper ms algunos servicios suplementarios. H.323 es una recomendacin del ITU-T (International Telecommunication Union), que define los protocolos para proveer sesiones de comunicacin audiovisual sobre paquetes de red. A partir del ao 2000 se encuentra implementada por varias aplicaciones de internet que funcionan en tiempo real como Microsoft Netmeeting y GnomeMeeting (Este ltimo utiliza la implementacin OpenH323). Es una parte de la serie de protocolos H.32x, los cuales tambin dirigen las comunicaciones sobre RDSI, RTC o SS7.

    H.323 es utilizado comnmente para Voz sobre IP (VoIP, Telefona de Internet o Telefona IP) y para videoconferencia basada en IP. Es un conjunto de normas (recomendacin paraguas) ITU para comunicaciones multimedia que hacen referencia a los terminales, equipos y servicios estableciendo una sealizacin en redes IP. No garantiza una calidad de servicio, y en el transporte de datos puede, o no, ser fiable; en el caso de voz o vdeo, nunca es fiable. Adems, es independiente de la topologa de la red y admite pasarelas, permitiendo usar ms de un canal de cada tipo (voz, vdeo, datos) al mismo tiempo.

    Diferentes elementos que conforman la topologa clsica de una red basada en H-323. Portero: realiza el control de llamada en una zona. Es opcional pero su uso est recomendado, de modo que si existe, su uso ser obligatorio. Traduce

    direcciones, ofrece servicio de directorio, control de admisin de terminales, control de consumo de recursos y procesa la autorizacin de llamadas, as como tambin puede encaminar la sealizacin.

    Pasarela: es el acceso a otras redes, de modo que realiza funciones de transcodificacin y traduccin de sealizacin. MCU: soporte multiconferencia. Se encarga de la negociacin de capacidades.

    Protocolos de la Familia H.323H.323 tiene referencias hacia algunos otros protocolos de ITU-T como:

    H.225.0 - Protocolo utilizado para describir la seal de llamada, el medio (audio y video), el empaquetamiento de las tramas, la sincronizacin de tramas de medio y los formatos de los mensajes de control.

    H.245 - Protocolo de control para comunicaciones multimedia. Describe los mensajes y procedimientos utilizados para abrir y cerrar canales lgicos para audio, video y datos, capacidad de intercambio, control e indicaciones.

    H.450 - Describe los Servicios Suplementarios. H.235 - Describe la seguridad de H.323. H.239 - Describe el uso de la doble trama en videoconferencia, normalmente uno para video en tiempo real y la otro para presentacin. H.281 - Describe el control de cmara lejana para movimientos PTZ (Pan-Tilt-Zoom)

    2) SIPSession Initiation Protocol (SIP o Protocolo de Inicio de Sesiones) es un protocolo desarrollado por el IETF MMUSIC Working

    Group con la intencin de ser el estndar para la iniciacin, modificacin y finalizacin de sesiones interactivas de usuario donde intervienen elementos multimedia como el video, voz, mensajera instantnea, juegos online y realidad virtual.

    El sintaxis de sus operaciones se asemeja al HTTP y SMTP, los protocolos utilizados en pginas Web y de distribucin de E-mail respectivamente. Esta similitud es natural ya que SIP fue diseado para que la telefona se vuelva un servicio ms en Internet.

    En Noviembre del ao 2000, SIP fue aceptado como el protocolo de sealizacin de 3GPP y elemento permanente de la arquitectura IMS (IP Multimedia Subsystem). SIP es uno de los protocolos de sealizacin para voz sobre IP, otro es H.323.2a) Diseo

    El protocolo SIP fue diseado por el IETF con el concepto de "caja de herramientas", es decir, el protocolo SIP se vale de las funciones aportadas por otros protocolos, las que da por hechas y no vuelve a desarrollarlas . Debido a este concepto SIP funciona en colaboracin con otros muchos protocolos. El protocolo SIP se concentra en el establecimiento, modificacin y terminacin de las sesiones, se complementa, entre otros, con el SDP, que describe el contenido multimedia de la sesin, por ejemplo qu direcciones IP,puertos y cdecs se usarn durante la comunicacin. Tambin se complementa con el RTP (Real-time Transport Protocol). RTP es el

    Fundacin Cdigo Libre Dominicano - http://www.codigolibre.org 5

  • ________________________________________________Cuaderno de Practicas Diplomado GNU-ASTERISK

    verdadero portador para el contenido de voz y video que intercambian los participantes en una sesin establecida por SIP.Otro concepto importante en su diseo es el de extensibilidad. Esto significa que las funciones bsicas del protocolo, definidas en la

    RFC 3261, pueden ser extendidas mediante otras RFC (Requests for Comments) dotando al protocolo de funciones ms potentes.Las funciones bsicas del protocolo incluyen:

    Determinar la ubicacin de los usuarios, proveyendo normalidad. Establecer, modificar y terminar sesiones multipartitas entre usuarios.

    El protocolo SIP adopta el modelo cliente-servidor y es transaccional. El cliente realiza peticiones que el servidor atiende y genera una o ms respuestas (dependiendo de la naturaleza, Mtodo, de la peticin). Por ejemplo para iniciar una sesin el cliente realiza una peticin con el mtodo INVITE en donde indica con qu el usuario (o recurso) quiere establecer la sesin. El servidor responde rechazando o aceptando la peticin en una serie de respuestas. Las respuestas llevan un cdigo de estado que brindan informacin acerca de si las peticiones fueron resueltas con xito o error. La peticin inicial y todas sus respuestas constituyen una transaccin.

    Los servidores, por defecto, utilizan el puerto 5060 en TCP (Transmission Control Protocol) y UDP (User Datagram Protocol) para recibir las peticiones de los clientes SIP.

    Como una de las principales aplicaciones del protocolo SIP es la telefona, un objetivo de SIP fue aportar un conjunto de las funciones de procesamiento de llamadas y capacidades presentes en la red pblica conmutada de telefona. As, implement funciones tpicas de dicha red, como son: llamar a un nmero, provocar que un telfono suene al ser llamado, escuchar la seal de tono o de ocupado. La implementacin y terminologa en SIP son diferentes.

    SIP tambin implementa muchas de las ms avanzadas caractersticas del procesamiento de llamadas de SS7, aunque los dos protocolos son muy diferentes. SS7 es altamente centralizado, caracterizado por una compleja arquitectura central de red y unos terminales tontos (los tradicionales telfonos de auricular). SIP es un protocolo peer to peer (tambin llamado p2p). Como tal requiere un ncleo de red sencillo (y altamente escalable) con inteligencia distribuida en los extremos de la red, incluida en los terminales (ya sea mediante hardware o software). Muchas caractersticas de SIP son implementadas en los terminales en oposicin a las tradicionales caractersticas de SS7, que son implementadas en la red.

    Aunque existen muchos otros protocolos de sealizacin para VoIP, SIP se caracteriza porque sus promotores tienen sus races en la comunidad IP y no en la industria de las telecomunicaciones. SIP ha sido estandarizado y dirigido principalmente por el IETF mientras que el protocolo de VoIP H.323 ha sido tradicionalmente ms asociado con la Unin Internacional de Telecomunicaciones. Sin embargo, las dos organizaciones han promocionado ambos protocolos del mismo modo.

    SIP es similar a HTTP y comparte con l algunos de sus principios de diseo: es legible por humanos y sigue una estructura de peticin-respuesta. Los promotores de SIP afirman que es ms simple que H.323. Sin embargo, aunque originalmente SIP tena como objetivo la simplicidad, en su estado actual se ha vuelto tan complejo como H.323. SIP comparte muchos cdigos de estado de HTTP, como el familiar '404 no encontrado' (404 not found). SIP y H.323 no se limitan a comunicaciones de voz y pueden mediar en cualquier tipo de sesin comunicativa desde voz hasta vdeo o futuras aplicaciones todava sin realizar.2b) Funcionamiento

    El protocolo SIP permite el establecimiento de sesiones multimedia entre dos o ms usuarios. Para hacerlo se vale del intercambio de mensajes entre las partes que quieren comunicarse.2c) Agentes de Usuario

    Los usuarios, que pueden ser seres humanos o aplicaciones de software, utilizan para establecer sesiones lo que el protocolo SIP denomina "Agentes de usuario". Estos no son ms que los puntos extremos del protocolo, es decir son los que emiten y consumen los mensajes del protocolo SIP. Un video telfono, un telfono, un cliente de software (softphone) y cualquier otro dispositivo similar es para el protocolo SIP un agente de usuario. El protocolo SIP no se ocupa de la interfaz de estos dispositivos con el usuario final, slo se interesa en los mensajes que estos generan y cmo se comportan al recibir determinados mensajes.

    Los agentes de usuario se comportan como clientes (UAC: User Agent Clients) y como servidores (UAS: User Agent Servers). Son UAC cuando realizan una peticin y son UAS cuando la reciben. Por esto los agentes de usuario deben implementar un UAC y un UAS.

    Adems de los agentes de usuario existen otras entidades que intervienen en el protocolo, estos son los Servidores de Registro o Registrar, los Proxy y los Redirectores. A continuacin se describe su finalidad.3c) Servidores de Registro o Registrar

    El protocolo SIP permite establecer la ubicacin fsica de un usuario determinado, esto es en qu punto de la red est conectado. Para ello se vale del mecanismo de registro. Este mecanismo funciona como sigue:

    Cada usuario tiene una direccin lgica que es invariable respecto de la ubicacin fsica del usuario. Una direccin lgica del protocolo SIP es de la forma usuario@dominio es decir tiene la misma forma que una direccin de correo electrnico. La direccin fsica (denominada "direccin de contacto") es dependiente del lugar en donde el usuario est conectado (de su direccin IP). Cuando un usuario inicializa su terminal (por ejemplo conectando su telfono o abriendo su software de telefona SIP) el agente de usuario SIP que reside en dicho terminal enva una peticin con el mtodo REGISTER a un Servidor de Registro (Registrar en ingls), informando a qu

    Fundacin Cdigo Libre Dominicano - http://www.codigolibre.org 6

  • ________________________________________________Cuaderno de Practicas Diplomado GNU-ASTERISK

    direccin fsica debe asociarse la direccin lgica del usuario. El servidor de registro realiza entonces dicha asociacin (denominada binding). Esta asociacin tiene un perodo de vigencia y si no es renovada, caduca. Tambin puede terminarse mediante un des-registro. La forma en que dicha asociacin es almacenada en la red no es determinada por el protocolo SIP, pero es vital que los elementos de la red SIP accedan a dicha informacin.4c) Servidores Proxy y de Redireccin

    Para encaminar un mensaje entre un agente de usuario cliente y un agente de usuario servidor normalmente se recurre a los servidores. Estos servidores pueden actuar de dos maneras:

    1. Como Proxy, encaminando el mensaje hacia destino,2. Como Redirector (Redirect)generando una respuesta que indica al originante la direccin del destino o de otro servidor que lo

    acerque al destino.La principal diferencia es que el servidor proxy queda formando parte del camino entre el UAC y el (o los) UAS, mientras que el

    servidor de redireccin una vez que indica al UAC cmo encaminar el mensaje ya no interviene ms. Un mismo servidor puede actuar como Redirector o como Proxy dependiendo de la situacin.5c) Casos tpicos de servidores

    Un conjunto de usuarios que pertenecen a una compaa o proveedor de servicios de comunicaciones, conforman un dominio. Este dominio, que se indica en una direccin SIP despus del carcter "@" es normalmente atendido por un servidor (o ms de uno). Este servidor recibe las peticiones hacia sus usuarios. Este servidor ser el encargado de determinar la direccin fsica del usuario llamado. Un servidor que recibe las peticiones destinadas a un dominio especfico es denominado servidor entrante (Inbound Server).

    Es habitual tambin, que exista un servidor que reciba las peticiones originadas por los usuarios de un dominio hacia otros dominios. Este recibe el nombre de Servidor Saliente (Outbound Server). Un agente de usuario normalmente encamina todos sus pedidos hacia un servidor de su propio dominio. Es este quien determina (por sus propios medios o valindose de otros servidores) las ubicaciones de los usuarios que son llamados por el agente de usuario en cuestin.6c) Formato de los mensajes

    Los mensajes que se intercambian en el protocolo SIP pueden ser peticiones o respuestas. Las peticiones tienen una lnea de peticin, una serie de encabezados y un cuerpo. Las respuestas tienen una lnea de respuesta, una serie de encabezados y un cuerpo. En la lnea de peticin se indica el propsito de la peticin y el destinatario de la peticin.

    Las peticiones tienen distintas funciones. El propsito de una peticin est determinado por lo que se denomina el Mtodo (Method) de dicha peticin, que no es ms que un identificador del propsito de la peticin. En la [RFC 3261] se definen los mtodos bsicos del protocolo. Existen otros mtodos definidos en extensiones al protocolo SIP.

    En la lnea de respuesta se indica el cdigo de estado de la respuesta que es un nmero indica el resultado del procesamiento de la peticin. Los encabezados de peticiones y respuestas se utilizan para diversas funciones del protocolo relacionadas con el encaminamiento de los mensajes, autenticacin de los usuarios, entre otras. La extensibilidad del protocolo permite crear nuevos encabezados para los mensajes agregando de esta manera funcionalidad.

    El cuerpo de los mensajes es opcional y se utiliza entre otras cosas para transportar las descripciones de las sesiones que se quieren establecer, utilizando la sintaxis del protocolo SDP.7c) Flujo de establecimiento de una sesin

    El flujo habitual del establecimiento de una sesin mediante el protocolo SIP es el siguiente, en este ejemplo todos los servidores actan como proxy:

    Un usuario ingresa la direccin lgica de la persona con la que quiere comunicarse, puede indicar al terminal tambin las caractersticas de las sesin que quiere establecer (voz y video, etc.), o estas pueden estar implcitas por el tipo de terminal del que se trate. El agente de usuario SIP que reside en el terminal, actuando como UAC enva la peticin (en este caso con el mtodo INVITE) al servidor que tiene configurado. Este servidor se vale del sistema DNS para determinar la direccin del servidor SIP del dominio del destinatario. El dominio lo conoce pues es parte de la direccin lgica del destinatario. Una vez obtenida la direccin del servidor del dominio destino, encamina hacia all la peticin. El servidor del dominio destino establece que la peticin es para un usuario de su dominio y entonces se vale de la informacin de registracin de dicho usuario para establecer su ubicacin fsica. Si la encuentra, entonces encamina la peticin hacia dicha direccin. El agente de usuario destino si se encuentra desocupado comenzar a alertar al usuario destino y enva una respuesta hacia el usuario originante con un cdigo de estado que indica esta situacin (180 en este caso). La respuesta sigue el camino inverso hacia el originante. Cuando el usuario destino finalmente acepta la invitacin, se genera una respuesta con un cdigo de estado (el 200) que indica que la peticin fue aceptada. La recepcin de la respuesta final es confirmada por el UAC originante mediante una peticin con el mtodo ACK (de Acknowledgement), esta peticin no genera respuestas y completa la transaccin de establecimiento de la sesin.

    Normalmente la peticin con el mtodo INVITE lleva un cuerpo donde viaja una descripcin de la sesin que quiere establecer, esta descripcin es realizada con el protocolo SDP. En ella se indica el tipo de contenido a intercambiar (voz, video, etc.) y sus caractersticas (cdecs, direcciones, puertos donde se espera recibirlos, velocidades de transmisin, etc.). Esto se conoce como "oferta de sesin SDP".

    Fundacin Cdigo Libre Dominicano - http://www.codigolibre.org 7

  • ________________________________________________Cuaderno de Practicas Diplomado GNU-ASTERISK

    La respuesta a esta oferta viaja, en este caso, en el cuerpo de la respuesta definitiva a la peticin con el mtodo INVITE. La misma contiene la descripcin de la sesin desde el punto de vista del destinatario. Si las descripciones fueran incompatibles, la sesin debe terminarse (mediante una peticin con el mtodo BYE).

    Al terminar la sesin, lo que puede hacer cualquiera de las partes, el agente de usuario de la parte que termin la sesin, actuando como UAC, enva hacia la otra una peticin con el mtodo BYE. Cuando lo recibe el UAS genera la respuesta con el cdigo de estado correspondiente.

    Si bien se describi el caso de una sesin bipartita, el protocolo permite el establecimiento de sesiones multipartitas. Tambin permite que un usuario est registrado en diferentes ubicaciones pudiendo realizar la bsqueda en paralelo o secuencial entre todas ellas.3) IAX2

    IAX (Inter-Asterisk eXchange Protocol) es uno de los protocolos utilizado por Asterisk, un servidor PBX (central telefnica) de cdigo abierto patrocinado por Digium. Es utilizado para manejar conexiones VoIP entre servidores Asterisk, y entre servidores y clientes que tambin utilizan protocolo IAX.

    El protocolo IAX ahora se refiere generalmente al IAX2, la segunda versin del protocolo IAX. El protocolo original ha quedado obsoleto en favor de IAX2.

    El principal objetivo de IAX ha sido minimizar el ancho de banda utilizado en la transmisin de voz y vdeo a travs de la red IP, con particular atencin al control y a las llamadas de voz y proveyendo un soporte nativo para ser transparente a NAT. La estructura bsica de IAX se fundamenta en la multiplexacin de la sealizacin y del flujo de datos sobre un simple puerto UDP entre dos sistemas.

    IAX es un protocolo binario y est diseado y organizado de manera que reduce la carga en flujos de datos de voz. El ancho de banda para algunas aplicaciones se sacrifica en favor del ancho de banda para VoIP.3a) Caractersticas:

    IAX2 es robusto, lleno de novedades y muy simple en comparacin con otros protocolos. Permite manejar una gran cantidad de cdecs y un gran nmero de streams, lo que significa que puede ser utilizado para transportar virtualmente cualquier tipo de dato. Esta capacidad lo hace muy til para realizar videoconferencias o realizar presentaciones remotas. IAX2 utiliza un nico puerto UDP, generalmente el 4569, para comunicaciones entre puntos finales (terminales VoIP) para sealizacin y datos. El trfico de voz es transmitido in-band, lo que hace a IAX2 un protocolo casi transparente a los cortafuegos y realmente eficaz para trabajar dentro de redes internas. En esto se diferencia de SIP, que utiliza una cadena RTP out-of-band para entregar la informacin. IAX2 soporta Trunking (red), donde un simple enlace permite enviar datos y sealizacin por mltiples canales. Cuando se realiza Trunking, los datos de mltiples llamadas son manejados en un nico conjunto de paquetes, lo que significa que un datagrama IP puede entregar informacin para ms llamadas sin crear latencia adicional. Esto es una gran ventaja para los usuarios de VoIP, donde las cabeceras IP son un gran porcentaje del ancho de banda utilizado.

    4) AsteriskAsterisk es una aplicacin de software libre (bajo licencia GPL) que provee funcionalidades de una central telefnica (PBX). Como

    cualquier PBX, se puede conectar un nmero determinado de telfonos para hacer llamadas entre s e incluso conectar a un proveedor de VoIP o bien a una RDSI tanto bsicos como primarios.

    Mark Spencer, de Digium, inicialmente cre Asterisk y actualmente es su principal desarrollador, junto con otros programadores que han contribuido a corregir errores y aadir novedades y funcionalidades. Originalmente desarrollado para el sistema operativo GNU/Linux, Asterisk actualmente tambin se distribuye en versiones para los sistemas operativos BSD, MacOSX, Solaris y Microsoft Windows, aunque la plataforma nativa (GNU/Linux) es la mejor soportada de todas.

    Asterisk incluye muchas caractersticas anteriormente slo disponibles en costosos sistemas propietarios PBX como buzn de voz, conferencias, IVR, distribucin automtica de llamadas, y otras muchas ms. Los usuarios pueden crear nuevas funcionalidades escribiendo un dialplan en el lenguaje de script de Asterisk o aadiendo mdulos escritos en lenguaje C o en cualquier otro lenguaje de programacin soportado por Linux.

    Para conectar telfonos estndar analgicos son necesarias tarjetas electrnicas telefnicas FXS o FXO fabricadas por Digium u otros proveedores, ya que para conectar el servidor a una lnea externa no basta con un simple mdem. Quiz lo ms interesante de Asterisk es que soporta muchos protocolos VoIP como pueden ser SIP, H.323, IAX y MGCP. Asterisk puede interoperar con terminales IP actuando como un registrador y como gateway entre ambos.4a) Cambios con relacin a la 1.4

    Los cambios mas relevantes con relacin a la versin 1.4: SIP ahora puede ser transportado tanto por TCP como UDP. La finalidad es que permite el uso de Encriptacin TLS. Aunque esto no representa un gran

    beneficio, es provechoso para aquellas empresas que tienen altas polticas de seguridad. Se elimino completamente el soporte zaptel. Ahora solo el soporte es para dahdi Mas caractersticas en: http://www.syednetworks.com/asterisk-1-6-features#more-145

    4b) Conceptos BsicosCanal: Es una conexin que conduce una llamada entrante o saliente en el sistema asterisk. La conexin puede venir o salir hacia telefona tradicional analgica o digital, o VoIP. Dialplan: Se trata de la configuracin de la central de asterisk que indica el itinerario que sigue una llamada desde que entra o sale del

    Fundacin Cdigo Libre Dominicano - http://www.codigolibre.org 8

  • ________________________________________________Cuaderno de Practicas Diplomado GNU-ASTERISK

    sistema hasta que llega a su punto final. Se trata en lineas generales del comportamiento lgico de la central.Extensin: En telefona tradicional, las extensiones se asocian con telfonos, interfaces o menes. En asterisk, una extensin es una lista de comandos a ejecutar. Las extensiones se acceden cuando:

    Se recibe una llamada entrante por un canal dado. El usuario que ha llamado marca la extensin Se ejecuta un salto de extensiones desde el dialplan de asterisk.

    Contexto: El dialplan o lgica de comportamiento de asterisk se divide en uno o varios contextos. Un contexto es una coleccin de extensiones. Los contextos existen para poder diferenciar el lugar donde se encuentra una llamada.Aplicacin: Asterisk ejecuta secuencialmente los comandos asociados a cada extensin. Esos comandos son realmente aplicaciones que controlan el comportamiento de la llamada y del sistema en si. Ejemplos:

    Hangup: Colgar la llamada Dial: Realiza una llamada saliente Playback: Reproduce un archivo de sonido

    Nota: Mas adelante hablaremos mas a fondo de aplicaciones.

    Estructura de Directorios/etc/asterisk: Contiene los archivos de configuracin. Si al compilar ejecutamos make samples, tendremos ejemplos en este directorio. /usr/lib/asterisk/modules: Contiene los mdulos de Asterisk que hemos compilado. /var/lib/asterisk: Contiene diferentes libreras de Asterisk. /var/lib/asteriskfirmware/ Contiene imgenes binarias de firmware de varios dispositivos compatibles con asterisk/var/lib/asterisk/images/ Las aplicaciones que se comunican con canales que soportar imagenes, buscan en este directorio/var/lib/asterisk/agi-bin: Directorio para contener los AGI. /var/spool/asterisk: Directorio para archivos que genera Asterisk (voicemail, etc.) /var/log/asterisk: Aqu se guardan los log de Asterisk./var/log/asterisk/cdr-cvs Este directorio es usado para guardar los CDRs en un formato CVS o comma-separated value/var/lib/asterisk/keys/ Aqu se guardan las llaves RSA que se utilizaran en las comunicaciones peer to peer (IAX2)/var/lib/asterisk/mohmp3/ Las aplicaciones que usan music on hold buscaran por defecto los archivos de audio en este directorio /var/lib/asterisk/sounds/ Aqu se buscan por defecto los sonidos bsicos de asterisk reproducios por playback( ) y background()

    Archivos de configuracinextensions.conf: el propio Dialplan. features.conf: dialplan para mtodos complementarios (transferencias, call parking, grabacin, etc.). meetme.conf: para conferencias.musiconhold.conf: configuracin de la msica en espera.queues.conf: configuracin de colas de llamadas.voicemail.conf: configuracin de los buzones de voz.asterisk.conf: Archivo de configuracin maestromodules.conf: Archivo de configuracin de mdulos.

    Canales:iax.conf: Canales IAX (Inter Asterisk eXchange)sip.conf: Canales SIP/etc/dahdi/system.conf: Telefona Analgica y digital.

    Instalacin de Asterisk 1.6.1.1 en Fedora 13Requerimientos

    Los requerimientos para instalar asterisk son de acuerdo a la necesidad del usuario podramos poner unos requerimiento aunque podra ser irrelevante dado que los requerimientos varan constantemente de acuerdo a la necesidad del usuario. Asterisk utiliza el procesador para procesar las llamadas esto quiere decir que de acuerdo a nuestra necesidad necesitaremos un procesador de gran capacidad para procesar un gran capacidad de llamadas simultaneas. Requerimiento de paquetes para compilar dahdi asterisk yum install -y gcc ncurses-devel libtermcap-devel kernel-devel kernel-smp-devel gcc-c++ openssl-devel newt-devel zlib-devel unixODBC-devel libtool make Nota: nosotros vamos a necesitar hacer uso del directorio /usr/src/ para extraer y compilar dahdi libpri asterisk, usaremos wget para descargar los fuentes de digium.

    [root@blackangel ~]# cd /usr/src/[src]# wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-1.6.1.1.tar.gz [src]# wget http://downloads.asterisk.org/pub/telephony/dahdi-linux/releases/dahdi-linux-2.2.0.2.tar.gz [src]# wget http://downloads.asterisk.org/pub/telephony/dahdi-tools/releases/dahdi-tools-2.2.0.tar.gz

    Extrayendo los cdigos fuentes [root@blackangel src]#tar xzvf asterisk-1.6.1.1.tar.gz [root@blackangel src]#tar xzvf dahdi-linux-2.2.0.2.tar.gz [root@blackangel src]#tar xzvf dahdi-tools-2.2.0.tar.gz

    Compilando Dahdi y Dahdi Tools[root@blackangel src]#cd dahdi-linux-2.2.0.2/ [root@blackangel src]#cd dahdi-tools-2.2.0/

    Fundacin Cdigo Libre Dominicano - http://www.codigolibre.org 9

  • ________________________________________________Cuaderno de Practicas Diplomado GNU-ASTERISK

    [root@blackangel src]#make clean[root@blackangel src]#make[root@blackangel src]#make install

    [root@blackangel src]#./configure[root@blackangel src]#make[root@blackangel src]#make install [root@blackangel src]#make config

    Compilando Asterisk[root@blackangel src]#cd asterisk-1.6.1.1 [root@blackangel src]#./configure[root@blackangel src]#make menuconfig[root@blackangel src]#make [root@blackangel src]#make install[root@blackangel src]#make config [root@blackangel src]#make samples

    Como configurar la tarjeta FXO (Foreign Exchange Office) Generalmente utilizaremos esta tarjeta con el fin de que asterisk se conecta al PSTN por una linea analgica (linea telefnica convencional). Asumiendo que tenemos una tarjeta tdm400p y queremos configurar el modulo FXO que esta en el primer puerto. Este objetivo lo alcanzamos configurando los archivos. /etc/dahdi/system.confloadzone=usdefaultzone=usfxsks=1 ; Nota si es una tarjeta tdm400 con un modulo FXO le pasamos el parmetro fxsks=1 en el archivo dahdil.conf

    /etc/asterisk/chan_dahdi.confsignalling=fxs_kscontext=entradagroup=1channel=>1

    extensions.conf[entrada] ;Creamos el contexto indicado en el zapata.confexten => _X.,1,Dial(dahdi/g1/{EXTEN}) ;Para las salidas de la llamadas indicamos creamos esta ext.Exten => _x.,2,Hangup

    Configurando Asterisk PBXEl archivo extensions.conf es la parte central de toda la configuracin, dado que es donde se define el dialplan de Asterisk. Se compone de 4 partes principales: contextos, extensiones, prioridades y aplicaciones. El dialplan se divide en secciones denominadas contextos, que estn rotuladas y contienen un grupo de extensiones. Los contextos se definen colocando su nombre entre corchetes ([]). Este nombre puede contener caracteres alfanumricos adems del guin y el guin bajo. Ejemplo:

    [interno]Todas las instrucciones son parte del contexto hasta que el prximo contexto es definido. Existen dos contextos especiales:

    [general] (variables predefinidas)[globals] (variables no predefinidas).

    Una extensin es una instruccin que ser seguida por Asterisk, luego de ser disparada por una llamada entrante o bien por dgitos discados en un canal, definida en el marco de un contexto. La sintaxis de una extensin es la siguiente:

    exten => nombre,prioridad,aplicacin() Ejemplo:

    exten => 101,1,answer() Extensions (start): es una extensin especial que es utilizada si una llamada entra a un contexto sin una extensin destino especfica (por ejemplo una llamada en un puerto FXO); la llamada trata de entrar automticamente a la extensiones.

    [interno]exten => s,1,answer()

    Una extensin puede tener varios pasos, denominados prioridades. Las prioridades comienzan con 1 y se ejecutan en orden numrico. Si no existe la prioridad N + 1, Asterisk no salta a la siguiente prioridad (N+2). Cada prioridad ejecuta una nica aplicacin. Por Ejemplo:

    exten => 101,1,Answer() exten => 101,2,Hangup()

    Prioridades sin numerar: Asterisk introduce el uso de la prioridad n (next). Cada vez que Asterisk encuentra una prioridad n, toma el nmero de la prioridad anterior y le suma 1. Simplifica el proceso de escritura del dialplan, evitando tener que volver a numerar las prioridades al insertar una prioridad para la misma exten. Por Ejemplo:

    exten => 103,1,Answer() exten => 103,n,hago algo exten => 103,n,Hangup()

    ** Note como el orden numrico (1,2,3,etc) es reemplazado por la letra n.

    AplicacionesLas aplicaciones realizan una accin determinada en el canal actual, controlando el comportamiento de la llamada y del sistema en s. Algunos ejemplos: answer(): contesta una llamada. hangup(): cuelga una llamada. dial(): realiza una llamada saliente. playback(): reproduce un archivo de sonido. Ciertas aplicaciones requieren del pasaje de parmetros, estos se incluyen dentro de los parntesis, separados por ,.

    Fundacin Cdigo Libre Dominicano - http://www.codigolibre.org 10

  • ________________________________________________Cuaderno de Practicas Diplomado GNU-ASTERISK

    ARRANCAMOS CON ASTERISKMi primer Dialplan.Luego de tanto hablar finalmente comenzamos a echarle manos a esto. Crearemos un dialplan simple basndonos en toda la teora anterior (ESPEREMOS LA HAYAN LEIDO) e iremos creando extensiones para ir realizando los escenarios. Lo primero es que crearemos las extensiones SIP 101 y 102 para registrarnos en asterisk de la siguiente manera y agregamos estas lineas:vim /etc/asterisk/sip.conf[101] type=friend ; Indica que puede enviar y recibir llamadascallerid=cris ; Caller Id context=extensiones ; Contexto por defecto al que pertenecerusername=101 ; Usuariosecret=101 ; Clave que sera utilizada para el softphone o el hardphonehost=dynamic ; El dispositivo tiene una ip dinmica

    [102] type=friend ; Indica que puede enviar y recibir llamadascallerid=carlos ; Caller Id context=extensiones ; Contexto por defecto. Relacionado con extensions.confusername=102 ; Usuariosecret=102 ; Clave que sera utilizada para el softphone o el hardphonehost=dynamic ; El dispositivo tiene una ip dinmica

    Ya con estos mnimos datos ya podemos ir al archivo extensions.conf y crear nuestro dialplan.[root@family asterisk]# vim /etc/asterisk/extensions.conf [extensiones]exten => 100,1,Answer( ) ; Contesta la llamadaexten => 100,2,Playback(hello-world) ; Suena el archivo hello-worldexten => 100,3,Hangup( ) ; Cuelga la llamada*** Indica que cuando cualquier usuario registrados (101 o 102) marque la extensin 100 se iniciara una secuencia de aplicaciones donde la primera es Answer, luego escuchara una grabacin (hello-world) y finalmente colgar.

    Mas aplicacionesBackground: La aplicacin Background reproduce una meloda o mensaje mientras se espera el marcado de cualquier tecla. A diferencia de playback esta permite el marcado de teclas mientras que playback no.

    [extensiones] exten => 100,1,Answer( ) ; contesta la llamada exten => 100,n,Background(enter-ext-of-person) ; espera dgitos y pasa a la extensin en el mismo contexto exten => 100,n,Hangup()

    *** Aqu lo nico que hace es que cuando marcamos la extensin 100. A simple vista resulta con igual funcionamiento que Playback pero ya vern que no es as.

    Aplicacin Dial: Realiza una llamada a la extensin o numero determinado en el campo. Utiliza diferentes tipos de tecnologia (SIP, IAX, ZAP, etc). La sintaxis de Dial es un poquito mas compleja que las anteriores pero no menos importantes. Por ejemplo, Para habilitar que las extensiones 101 y 102 puedan marcarse entre si colocamos lo siguiente:

    [extensiones] exten => 101,1,Dial(SIP/101,10) ; Marca a la extensin 101 y espera 10 segundos para pasar a la siguiente prioridad. exten => 101,n,Playback(vm-nobodyavail)exten => 101,n,Hangup()

    exten => 102,1,Dial(SIP/101,10) ; Marca a la extensin 101 y espera 10 segundos para pasas a la siguiente prioridad. exten => 102,n,Playback(vm-nobodyavail)exten => 102,n,Hangup()

    Cuando la extensin 101 digite la 102, sonar en la extensin 102 por un periodo de 10 segundos, si en esos 10 segundos nadie contesta ira a la prxima prioridad que toca un mensaje de no disponible y finalmente cuelga. Tambin dial puede llamar a otro tipo de tecnologia (IAX,ZAP,etc). Por Ejemplo;

    exten => 102,1,Dial(IAX/1,10,m) exten => 102,n,Playback(vm-nobodyavail) exten => 102,n,Hangup()

    *** En este caso la opcin llamar la extensin 102 usando IAX y mientras suena la opcin m tocara un msica de fondo.

    Otras opciones de Dial(): T: Permite quien llama pueda transferir la llamada con # t: Permite que quien contesta pueda transferir la llamada con # r: Genera un ring tone al que llama y espera a generar el canal de audio cuando conteste w: Permite al que llama grabar la comunicacin con *1

    Aplicacin Goto: Enva flujo de la llamada a un determinada posicin del dialplan, establecida por los parmetros de contexto + extensin + prioridad. Por Ejemplo:

    exten => 100,1,Answer( ) ; contesta la llamada exten => 100,n,Background(enter-ext-of-person) ; espera dgitos y pasa a la extensin en el mismo contextoexten => 100,n,WaitExten(10)exten => 100,n,Goto(101,1) ; Si no digta ninguna extensin, va a la extensin 101 prioridad 1.exten => 100,n,Hangup()

    Fundacin Cdigo Libre Dominicano - http://www.codigolibre.org 11

  • ________________________________________________Cuaderno de Practicas Diplomado GNU-ASTERISK

    exten => 101,1,Dial(SIP/101,10)exten => 101,n,Playback(vm-nobodyavail)exten => 101,n,Hangup()

    exten => 102,1,Dial(SIP/101,10) exten => 102,n,Playback(vm-nobodyavail)exten => 102,n,Hangup()

    Otro Ejemplo:exten => 100,1,Answer( ) ; contesta la llamada exten => 100,n,Background(enter-ext-of-person) ; espera dgitos y pasa a la extensin en el mismo contextoexten => 100,n,WaitExten(10)exten => 100,n,Goto(hastaluego,200,1) ; Si no digta ninguna extensin, va al contexto hasta luego extensin 200 prioridad 1.exten => 100,n,Hangup()

    Entradas invalidas y timeoutsCuando el usuario teclea una entrada invlida, la llamada es enviada a la extensin i. Cuando el usuario no teclea ninguna opcin, es necesario tener una extensin que nos permita manejar esta situacin. Por defecto, si no se teclea nada despus de 10 segundos de haberse terminado de reproducir el archivo la llamada es enviada a la extensin t. Si se teclea un dgito, espera 5 segundos hasta el siguiente, o numeral (#) para terminar de escribir nmeros. Un Ejemplo:

    exten => 100,1,Answer( ) ; contesta la llamada exten => 100,n,Background(enter-ext-of-person) ; espera dgitos y pasa a la extensin en el mismo contextoexten => 100,n,WaitExten(10)exten => 100,n,Hangup()

    exten => 101,1,Dial(SIP/101,10)exten => 101,n,Playback(vm-nobodyavail)exten => 101,n,Hangup()

    exten => 102,1,Dial(SIP/101,10) exten => 102,n,Playback(vm-nobodyavail)exten => 102,n,Hangup()

    exten => i,1,Playback(pbx-invalid) ; Suena un mensaje que indica extensin invalidaexten => i,n,Playback(vm-goodbye) ; Otro mensaje de adisexten => i,n,Hangup() ; Cuelga la llamada

    exten => t,1,Playback(vm-goodbye) ; mensaje de adis exten => t,n,Hangup() ; Cuelga la llamada

    En el ejemplo anterior, el usuario marca la extensin 100 y el contexto entrada le indica que digite le numero de extensin deseado, si el usuario digta un nmero de extensin diferente a 101 o 102 entonces ira directamente a la extensin invalida. Si espera un tiempo sin hacer nada entonces lo envi a la extensin t y termina la llamada.

    Variables En el dialplan de Asterisk existen variables, que pueden ser modificadas por el propio Asterisk en su ejecucin lgica o por comandos expresos (aplicaciones) del dialplan. Las variables reducen la escritura, agregan claridad al dialplan y le aportan lgica. Los tipos de variables son:

    Globales: declaradas en extensions.conf (o por comando). Canal: asociadas con un canal particular. Entorno: variables de entorno (UNIX Like).

    Variables globalesPermite que se pueda hacer referencia a ellas en todos los contextos, en todas las extensiones, a diferencia de las variables convencionales que slo tienen validez en el canal actual. Es til para tener claridad manejable en el dialplan. Se pueden definir en el contexto [globals] al inicio de extensions.conf:

    [globals] CRIS=Sip/101 CARLOS=Iax/102

    La sintaxis de una variable es: ${variable} Asignacin de variables:

    set(Variable=valor)set(GLOBAL(Variable)=Valor) ; Cambiamos el valor de una variable global

    Fundacin Cdigo Libre Dominicano - http://www.codigolibre.org 12

  • ________________________________________________Cuaderno de Practicas Diplomado GNU-ASTERISK

    Agregar Variables al DialplanAsumiendo que las variables globales fueron declaradas en el ejemplo anterior podemos simular lo siguiente:

    exten => 100,1,Answer( ) ; contesta la llamada exten => 100,n,Background(enter-ext-of-person) ; espera dgitos y pasa a la extensin en el mismo contextoexten => 100,n,Hangup()

    exten => 101,1,Dial(${CRIS},10); Referencia a la variable CRIS cuyo valor es SIP/101exten => 101,n,Playback(vm-nobodyavail)exten => 101,n,Hangup()

    exten => 102,1,Dial(${CARLOS},10) ; Referencia a la variable CARLOS cuyo valor es SIP/102exten => 102,n,Playback(vm-nobodyavail)exten => 102,n,Hangup()

    Algunas variables definidas automticamente por asteriskListado de variables ms importantes:

    ${CALLERID}: caller ID actual, nombre y nmero. ${CONTEXT}: contexto actual. ${EXTEN}: extensin actual. ${CHANNEL}: canal actual. ${DIALSTATUS}: estado de la llamada: unavailable, congestion, busy, noanswer, answer, cancel, hangup. ${DATETIME}: hora actual.

    Un comando til para ver el contenido es NoOp: NoOp ( ${VARIABLE} ) ; Mostrar en el CLI el valor.

    Variable ${EXTEN}Permite saber cul es la extensin que fue marcada. Se utiliza comnmente para eliminar dgitos marcados:

    ${EXTEN:x} Si x es positivo, quita los primeros x dgitos marcados:

    exten => _XXX,1,SayDigits(${EXTEN:1}) Si x es negativo, devuelve los ltimos x dgitos marcados:

    exten => _XXX,1,SayDigits(${EXTEN:-1})

    PatronesSe utilizan principalmente para llamadas salientes. Comienzan con el signo _ . Le dicen a Asterisk que iguale con un patrn y no con un nmero de extensin.

    X Iguala cualquier dgito de 0 a 9. Z Iguala cualquier dgito de 1 a 9. N Iguala cualquier dgito del 2 al 9. [15-7] Iguala el rango de dgitos especificados, en este ejemplo iguala los nmeros 1,5,6,7. . (punto) Iguala uno o mas caracteres.

    exten => _NXX,1,Playback(auth-thankyou) Si Asterisk encuentra ms de 1 patrn para una extensin marcada, se usa la ms especfica:

    exten => _555XXXX,1,Playback(digits/1) exten => _55512XX,1,Playback(digits/1)

    IncludesAsterisk posee una caracterstica para usar las extensiones de un contexto sin pertenecer a este. Esto es utilizado para controlar el acceso a diferentes secciones del dialplan. Por ejemplo, podramos habilitar otro contexto llamado extensiones2 con los usuarios 103 y 104, naturalmente los usuarios pertenecientes al contexto extensiones no podrn acceder ni llamar a los usuarios del contexto extensiones2, Aqu es donde entra include. Por Ejemplo:

    [extensiones]include => extensiones2

    exten => 101,1,Dial(SIP/101,10)exten => 101,n,Playback(vm-nobodyavail)exten => 101,n,Hangup()

    exten => 102,1,Dial(SIP/101,10) exten => 102,n,Playback(vm-nobodyavail)exten => 102,n,Hangup()

    [extensiones2]include => extensiones2

    Fundacin Cdigo Libre Dominicano - http://www.codigolibre.org 13

  • ________________________________________________Cuaderno de Practicas Diplomado GNU-ASTERISK

    exten => 103,1,Dial(SIP/103,10)exten => 103,n,Playback(vm-nobodyavail)exten => 103,n,Hangup()

    exten => 104,1,Dial(SIP/104,10) exten => 104,n,Playback(vm-nobodyavail)exten => 104,n,Hangup()

    Nota: Con estos includes ya ambos contextos podrn comunicarse sin problemas.

    Manipulacin de expresiones y variablesLas expresiones son una combinacin de variables, operadores y valores que arrojan un resultado. El Sintaxis es:

    $[expr1 operador expr2] Operadores lgicos: |(or) , &(AND) Operadores de comparacin: =, !=, , = Operadores aritmticos: +, -, *, /, % [...] , Ejemplo:

    exten => 4003,1,Set(COUNT=3) exten => 4003,2,Set(NEWCOUNT=$[${COUNT} + 1]) exten => 4003,3,SayNumber(${NEWCOUNT})

    Bifurcacin condicional Permite tomar decisiones dentro del dialplan.

    Aplicacin GotoIf() GotoIf(expresion1?destino1:destino2)

    Si la expresin evaluada es verdadera, la llamada es enviada a destino1, de lo contrario es enviada a destino2. Una cadena vaca y el nmero 0 son evaluados como falso, cualquier otro valor es verdadero. Cualquiera de los destinos puede ser omitido, pero debe estar alguno de los 2. Si el destino omitido es el camino que debe seguir la llamada, el flujo que se sigue es la siguiente prioridad dentro de la extensin actual. Ejemplo GotoIf

    [extensiones]exten => 105,1,Set(TEST=1) exten => 105,2,GotoIf($[${TEST} = 1]?10,3) exten => 105,3,Playback(weasels-eaten-phonesys) exten => 105,4,Playback(office-iguanas) exten => 105,5,Set(COUNT=10) exten => 105,6,GotoIf($[${COUNT} > 0 ]?:10) exten => 105,7,SayNumber(${COUNT}) exten => 105,8,Set(COUNT=${COUNT} - 1) exten => 105,9,Goto(2) exten => 105,10,Hangup() exten => 105,11,GotoIf($[${CALLERIDNUM} = 8094767758]?12:10) exten => 105,12,Dial(SIP/102) exten => 105,13,Playback(abandon-all-hope) exten => 105,14,Hangup()

    Bifurcacin condicional basada en tiempoVerifica la hora actual del servidor, permitiendo tomar decisiones basadas en tiempo. Se utiliza cuando se quiere dar una bienvenida diferente en horarios de trabajo y fuera de trabajo. GotoIfTime(hora,dias_de_semana,dias_del_mes,meses?etiqueta) Enva la llamada a etiqueta si la fecha y hora actual concuerdan con el criterio especificado por los parmetros.

    Hora Lista de uno o ms rangos de horario en formato de 24 horas. 09:00-17:00 Dias_de_semana Lista de uno o ms das de la semana lunes, martes, etc (mon, tues)Dias_del_mes Da numrico del mes 7-12,15 Meses Lista de uno o ms meses del ao un, apr, jul * Iguala cualquier valor

    Etiqueta puede ser una prioridad dentro de una misma extensin, una prioridad y extensin dentro del mismo contexto o un contexto, extensin y prioridad. Ejemplo:

    [inicio] exten => 222,1,GotoIfTime(06:00-17:59),mon-fri,*,*?entrada,s,1) exten => 222,n,Goto(afterhours,s,1)

    El ejemplo anterior indica que cuando se marque la extensin 222, si el usuario marca entre las 6am y 5:59pm de lunes a viernes ira al contexto entrada, prioridad 1. De lo contrario ira al contexto afterhours, prioridad 1.

    Configurando Hardware Telefnico

    Fundacin Cdigo Libre Dominicano - http://www.codigolibre.org 14

  • ________________________________________________Cuaderno de Practicas Diplomado GNU-ASTERISK

    En este tema configuraremos una tarjeta FXO Digium TDM04B para conectar asterisk a una linea anloga, es decir, habilitaremos la linea para cuando alguien llame al 8094767758 asterisk responda de acuerdo al dialplan que hayamos definido. Para esto, hemos instalado previamente los paquetes de dahdi. Ahora procederemos a su configuracin.El archivo /etc/dahdi/system.conf es donde configuras los parmetros de la tarjeta, en nuestro caso la TDM04B. Es ledo por el programa dahdi_cfg. Estos archivos son instalados por el paquete dahdi-linux.

    [root@blackangel ~]# vim /etc/dahdi/dahdi.conf fxsks=1-4 ; Se especifica la cantidad de puertos que tendr su tarjeta. En nuestro caso posee 4.loadzone = us ; significa que sus tarjetas de interfaz sern cargadas con tonos de la indicacin de USAdefaultzone = us ; los medios utilizan los tonos para esta zona por defecto (cuando no se especifica ninguna otra zona.

    Configurando chan_dahdi.confEn este archivo se configuran los parmetros a utilizar por los canales para asterisk. Cuando alguien llame al numero 8094767758 asterisk leer este archivo de configuracin y aplicara todos los parmetros establecidos en el. Aqui un ejemplo:[root@blackangel ~]# vim /etc/asterisk/chan_dahdi.conf

    [channels] language=en usecallerid=yes ; Identificara el numero de quien llama hidecallerid=no ; callwaiting=yes ; Habilitado, asterisk generara tonos cuando tengas una conversacin y alguien mas este tratando de llamarcallwaitingcallerid=yes ; Asterisk enviara el callerid de quien espera. threewaycalling=yes ; Si esta habilitada, puedes colocar llamadas en hold.echocancel=yes ; Habilita echo cancellation o cancelacin de ecoechocancelwhenbridged=yes rxgain=0.0 txgain=0.0 group=1 callgroup=1 pickupgroup=1 immediate=no ; Este parmetro acelera el marcado y por defecto manda las llamadas entrantes a la extensin sbusydetect=no callprogress=no musiconhold=default context=entrada ; Todas las llamadas que lleguen por las lineas ZAP irn al contexto entrada. signalling= fxs_ks ; Tipo de sealizacin channel => 1-4 ; Canales a utilizar

    Para visualizar si el mdulo de la tarjeta FXO esta insertado en el Kernel:[root@blackangel ~]# lsmod |grep -i wctdm

    Use los siguientes comandos para ver si el canal a sido configurando:[root@blackangel ~]# dahdi_cfg -vv[root@blackangel ~]# dahdi_scan[root@blackangel ~]# dahdi_tool

    Para administrar el servicio de dahdi ejecute uno de los siguientes comandos:

    [root@blackangel ~]# service dahdi start [root@blackangel ~]# para detenerlo [root@blackangel ~]# service dahdi stop

    Podemos agregar un contexto de prueba en el extensions.conf para confirmar que nuestra linea anloga esta configurada , solo deber agregar las siguientes lineas en extensions.conf:

    [entrada]exten => s,1,Answer()exten => s,n,Playback(demo-congrats)exten => s,n,Hangup()

    Estas 3 lineas Indican que cuando alguien llame al 8094767758 asterisk entrara al contexto entrada y se escuchara una grabacin demo-congrats y luego colgar. Si puede escuchar esto entonces se ha configurado la tarjeta exitosamente.

    Habilitando llamadas salientes a travs del canal DAHDISi queremos habilitar llamadas por la linea anloga, lo hacemos fcilmente, solo agregamos un contexto con patrones de salida y lo habilitaremos en nuestro contexto [extensiones], es como sigue:

    Declaramos en la definicin de variables, el canal DAHDI:TRUNKDESALIDA=Dahdi/1

    [extensiones]include => llamadas-localesexten => 101,1,Dial(SIP/101,10)

    Fundacin Cdigo Libre Dominicano - http://www.codigolibre.org 15

  • ________________________________________________Cuaderno de Practicas Diplomado GNU-ASTERISK

    exten => 101,n,Playback(vm-nobodyavail)exten => 101,n,Hangup()

    exten => 102,1,Dial(SIP/101,10) exten => 102,n,Playback(vm-nobodyavail)exten => 102,n,Hangup()

    [llamadas-locales] exten => _9NXXXXXX,1,Dial(${TRUNKDESALIDA}/${EXTEN}:1) exten => _9NXXXXXX,2,Congestion() exten => _9NXXXXXX,102,Congestion()

    As cuando la extensin 101 o 102 marquen el 9 + un telfono, se habilitara el tono en la linea anloga y podr realizar llamadas.

    Interactive Voice ResponseIVR son las siglas de Interactive Voice Response, que se traduce del ingls como Respuesta de Voz Interactiva. Tambin se utiliza el

    trmino VRU (Voice Response Unit). Consiste en un sistema telefnico que es capaz de recibir una llamada e interactuar con el humano a travs de grabaciones de voz. Es un sistema de respuesta interactiva, orientado a entregar y/o capturar informacin automatizada a travs del telfono permitiendo el acceso a los servicios de informacin y operaciones autorizadas, las 24 horas del da.

    El IVR es la tpica mquina que nos responde con una voz grabada cuando llamamos a una central o que nos recibe en la banca telefnica. Segn las opciones que el usuario le ingresa lo deriva a un centro de atencin telefnica o a otra central telefnica.

    Las empresas suelen usar la tecnologa de IVR para enrutar una llamada entrante haca un departamento u otro, sin la necesidad de intervencin humana, as reduciendo el tiempo de espera de sus clientes. En los centros de atencin telefnico al cliente, se usan los IVR's para guiar el llamante hacia los agentes con mayor conocimiento de una materia especifica, reduciendo as el tiempo de la llamada y evitando la necesidad de hacer transferencias entre agentes.

    El usuario realiza una llamada a un nmero de telfono, el sistema de audio respuesta contesta la llamada y le presenta al usuario una serie de acciones a realizar, esto se hace mediante mensajes (mens de opciones) previamente grabados en ficheros de audio (Por ejemplo "Pulse uno para ventas, dos para administracin"). El usuario elige la opcin a realizar introduciendo un nmero en el teclado del telfono y navega por los diferentes mens hasta encontrar la informacin solicitada o que el sistema enruta la llamada al destinatario elegido.

    Para la configuracin de su IVR usted necesitara primero grabar algunos mensajes. Para ello deber utilizar cualquier grabador de sonidos de acuerdo a la complejidad de su IVR. Inicialmente iremos fabricando un IVR sencillo y a travs de toda la clase se ira colocando mas complejo con la idea de tener al final de los temas un completo sistema de IVR. Utilizaremos muchos de los conceptos aprendidos previamente as como las variables de asterisk y estaremos juntando TODOS. Aqu un Ejemplo 1:

    [entrada] include => extensionesexten => 222,1,Answer() exten => 222,n,Background(demo-echodone) exten => 222,n,WaitExten(5) exten => 222,n,Playback(vm-goodbye) exten => 222,n,Hangup()

    [extensiones] include => entrada exten => 101,1,Dial(SIP/101,20) exten => 101,n,Hangup() exten => 102,1,Dial(SIP/102,20) exten => 102,n,Hangup()

    Cuando la llamada entra a la extensin 222 responde nuestro IVR con un mensaje de Bienvenida e indicando que marque la extensin deseada, espera 5 segundos para que el cliente marque la extensin deseada para transferirlo. Si el cliente no digite nada la llamada es terminada.

    Agregando las extensiones i y tAgregaremos las extensiones i a nuestro dialplan y un Goto para que el cliente regrese al inicio en caso digitar una extensin invalida.

    [entrada] include => extensionesexten => 222,1,Answer() exten => 222,n,Background(demo-echodone) exten => 222,n,WaitExten(5) exten => 222,n,Playback(vm-goodbye) exten => 222,n,Hangup()

    exten => i,1,Playback(pbx-invalid) exten => i,n,Goto(entrada,222,1)

    Fundacin Cdigo Libre Dominicano - http://www.codigolibre.org 16

  • ________________________________________________Cuaderno de Practicas Diplomado GNU-ASTERISK

    [extensiones] include => entrada

    exten => 101,1,Dial(SIP/101,20) exten => 101,n,Hangup()

    exten => 102,1,Dial(SIP/102,20) exten => 102,n,Hangup()

    Cuando el cliente digite una extensin invalida escuchara un mensaje de invalido y volver al men principal.

    Agregando un Contador y GotoIf a nuestro IVR.En el contexto i, crearemos un contador que calculara un numero mximo de 3 extensiones invalidas para luego terminar la llamada. Aqu tambin empleamos la aplicacin GotoIf condicionara el contexto para decidir a donde ir. Es como sigue:

    [entrada] include => extensionesexten => 222,1,Set(COUNT=1) exten => 222,1,GotoIf($[${COUNT} > 3]?fin:inicio) exten => 222,n(inicio),Answer() exten => 222,n,Background(demo-echodone) exten => 222,n,WaitExten(5) exten => 222,n,Goto(i,1) exten => 222,n(fin),Playback(vm-goodbye) exten => 222,n,Hangup()

    exten => i,1,Playback(pbx-invalid) exten => i,n,Set(COUNT=$[${COUNT}] + 1]) exten => i,n,Goto(entrada,222,2)

    [extensiones] include => entrada

    exten => 101,1,Dial(SIP/101,20) exten => 101,n,Hangup()

    exten => 102,1,Dial(SIP/102,20) exten => 102,n,Hangup()

    En el ejemplo anterior, agregamos tambin etiquetas al contexto para indicar donde ira el Gotoif cuando se cumpla una condicin determinada. Fjense como hacemos un Goto hacia el contexto entrada,222,2, esto es porque si la enviamos al 1 la variable $COUNT se mantendr reiniciada y nunca el contador sumar.

    Agregando GotoIfTimeSi queremos establecer un horario en el que el cliente podr comunicarse con nuestros representantes utilizamos la aplicacin GotoIfTime. Con esta lo que haremos es un contexto dentro de un horario especifico o de lo contrario que ejecute otro contexto que dir que no estan laborando. Es como sigue:

    [inicio] exten => 222,1,GotoIfTime(09:00-17:59),mon-fri,*,*?entrada,s,1) exten => 222,n,Goto(afterhours,s,1)

    [entrada] include => extensionesexten => s,1,Set(COUNT=1) exten => s,n,GotoIf($[${COUNT} > 3]?fin:inicio) exten => s,n(inicio),Answer() exten => s,n,Background(demo-echodone) exten => s,n,WaitExten(5)exten => s,n,Goto(i,1) exten => s,n(fin),Playback(vm-goodbye) exten => s,n,Hangup()

    exten => i,1,Playback(pbx-invalid) exten => i,n,Set(COUNT=$[${COUNT}] + 1]) exten => i,n,SayNumber(${COUNT}) exten => i,n,Goto(entrada,s,2)

    [extensiones] include => inicio include => entrada

    exten => 101,1,Dial(SIP/101,20)

    Fundacin Cdigo Libre Dominicano - http://www.codigolibre.org 17

  • ________________________________________________Cuaderno de Practicas Diplomado GNU-ASTERISK

    exten => 101,n,Hangup() exten => 102,1,Dial(SIP/102,20) exten => 102,n,Hangup()

    [afterhours] exten => s,1,Playback(hours) exten => s,n,Hangup()

    En este ejemplo cambia totalmente nuestro IVR. Agregamos un contexto inicio donde las llamadas marcadas al 222 entraran en este contexto y encontraran la condicin GotoIfTime(09:00-17:59),mon-fri,*,*?entrada,s,1) . Indica que de lunes a viernes en horario 09:00-17:59 de cualquier da y cualquier mes se enviara al contexto entrada prioridad 1. Si la condicin no esta cumplida se ejecutara la siguiente prioridad que en este caso es Goto(afterhours,s,1) donde se ejecutara un mensaje diciendo que la empresa labora en horario de lunes a viernes de 9am a 6pm.

    **** Con esto tenemos un IVR bastante flexible para tratar los clientes *****

    VoicemailUna de las caractersticas mas populares en la telefona moderna es la capacidad de dejar mensajes de voz para ser recogidos mas tarde en caso de que el usuario a quien se llama no este disponible.

    Naturalmente, asterisk posee un voicemail bastante flexible con las siguientes caractersticas: Ilimitada proteccin de passwords. Diferentes saludos para los distintos tipos de estado(Busy,Noanswer,Unavailable,etc) Saludos por defecto y tambin personalizados Notificacin por correo y con la opcin de adjuntar el mensaje de voz en el mismo. Indicador de que tiene un mensaje de voz. Aplicado para distintos tipos de telfonos IP. Directorio de la compaa basado en los buzones de voz

    La configuracin del voicemail es muy facial, a continuacin paso a paso de una manera muy descriptiva como crear el buzn de voz y sus distintas opciones:Para la configuracin bsica del voicemail se vern afectados los archivos de configuracin voicemail.conf, sip.conf y extensions.conf Primero declaramos el contexto al final del archivo voicemail.conf que contendr los buzones de voz correspondientes a las extensiones 101 y 102. La sintaxis es:

    [buzon] 101 => 1234,Cristhian,[email protected] => 5678,Carlos,[email protected]

    Donde101 = Es el numero o extensin al cual se le asignara el buzn1234 = Es la clave que sera usada para acceder al buzn de vozCristhian = Nombre asociado al [email protected] = Correo donde recibir las notificaciones

    Editamos el archivo sip.conf donde le diremos a las extensiones 101 y 102 cuales seran sus buzones. Quedara de la siguiente manera:[101] type=friend ; Friends puede colocar y recibir llamadas callerid=cris context=extensiones username=101 secret=101 host=dynamic ; Esta registrada con nosotrosmailbox=101@buzon

    [102] type=friend ; Friends puede colocar y recibir llamadas callerid=carlos context=extensiones username=102secret=102 host=dynamic ; Esta registrada con nosotros mailbox=102@buzon Notese como se le asigna a cada usuario un numero de buzon en el contexto buzn.

    Configuramos la aplicacin Voicemail en el dialplan correspondiente a los usuarios. De igual modo, tambin habilitamos la extensin para llamar el buzn de voz el cual sera en nuestro caso la extensin 888. El contexto extensiones quedara as en extensions.conf:

    Fundacin Cdigo Libre Dominicano - http://www.codigolibre.org 18

  • ________________________________________________Cuaderno de Practicas Diplomado GNU-ASTERISK

    [extensiones] include => inicio include => entrada

    exten => 101,1,Dial(SIP/101,20) exten => 101,n,VoiceMail(101@buzon) exten => 101,n,Playback(vm-goodbye) exten => 101,n,Hangup()

    exten => 102,1,Dial(SIP/102,20) exten => 101,n,VoiceMail(102@buzon) exten => 101,n,Playback(vm-goodbye) exten => 102,n,Hangup()

    ;Voicemail exten => 888,1,VoiceMailMain(@buzon)

    Las Lineas en negritas habilitan el buzn de voz para los usuarios 101 y 102 y la extensin 888 habilita la aplicacin VoiceMailMain la cual es la administracin del buzn de voz.

    La opcin (@buzon) muestra la interfaz de administracin para el contexto buzn creado en el archivo voicemail.conf. Esto indica que cuando el usuario llame la extensin 888 se le solicitara un numero de buzn y una clave para poder acceder. Ya dentro del buzn tendr varias opciones para administrar sus mensajes. Los mensajes se graban en el directorio /var/spool/asterisk/voicemail/. Este es el men mostrado al usuario para la administracin de sus mensajes a travs de la aplicacin VoiceMailAdmin:

    1 Mensajes Ledos3 Opciones Avanzadas

    1 Responder2 Devolver la llamada3 Sobre4 Llamada Saliente5 Dejar un mensaje* Regresar al men principal

    4 Escuchar mensajes anteriores5 Repetir mensaje actual6 Tocar el prximo mensaje7 Borrar el actual mensaje8 Reenviar el mensaje a otro buzn de voz9 Guardar el mensaje en un folder* Ayuda# Salir

    2 Cambiar folder3 Opciones avanzadas0 Opciones del buzn

    1 Grabar mensaje de no disponible2 Grabar mensaje cuando el status sea ocupado3 Grabar su nombre4 Cambiar su password* Regresar al men principal* Ayuda

    # SalirAhora estamos listos para recibir mensajes de voz y poder escucharlos a travs del voicemailadmin.

    Editando las opciones del archivo voicemail.confPodemos editar algunas opciones en el archivo voicemail.conf, algunas son: enviar notificacin por correo, adjuntar el archivo de grabacin en el correo, establecer un numero mximo de mensajes por buzn, establecer un tiempo mximo o mnimo de grabacin de mensajes, establecer un cuerpo del mensaje a enviar, etc.

    [email protected] :Indica el usuario que envi el mensaje.attach=yes : Establecido a yes el usuario recibir va el mensaje grabadomaxmsg=100 : Mximo numero de mensajes que se le permitir al dueo del buzn.maxmessage=180 : Tiempo mximo permitida para la grabacin del mensaje.maxsilence=10 : El servidor espera 10 segundos de silencio antes de terminar la llamada.maxlogins=3 : Numero mximo de intentos fallidos.emailsubject=[PBX]: Mensaje Nuevo ${VM_MSGNUM} en el buzn de voz ${VM_MAILBOX} : Corresponde al asunto que sera mostrado cuando le llegue un correo al usuario. Note como se utilizan variables de mailbox, mas adelante hablaremos de ellas.emailbody = : Indica el cuerpo del mensaje que recibir el usuario al ser notificado.emaildateformat=%A, %B %d, %Y at %r : Formato de Fecha donde:%A = Da de la semana %B = Mes %d = Da %Y = Ao %r = hora

    Fundacin Cdigo Libre Dominicano - http://www.codigolibre.org 19

  • ________________________________________________Cuaderno de Practicas Diplomado GNU-ASTERISK

    *** Ya con estos pasos tenemos buzn de voz habilitado en nuestro asterisk ***

    Queues (colas)Las colas son utilizadas por los sistemas PSTN para mantener las solicitudes de sus clientes hasta que algn recurso este disponible. Significa que todo el trafico entrante que exceda la capacidad disponible se colocaran en linea hasta que puedan ser atendidos.

    Las colas bsicamente consisten en: Llamadas entrantes son colocadas en la cola Miembros que responden la cola (Extensiones o usuarios que se ingresan al sistema como agentes) Una estrategia de como manejar las colas y dividir las llamadas entre los miembros Msica mientras esperan en cola Anuncios para miembros y clientes

    Existen dos maneras de crear colas en asterisk: Esttica: donde no necesitas utilizar el archivo agents.conf

    Esta configuracin, se especificara cuales sern los usuarios que respondern las llamadas correspondiente a una cola especifica. Por Ejemplo, los usuarios SIP/101, SIP/102 y SIP/103 seran los responsables de responder a la cola [micola].

    Ventajas: No necesitas utilizar las aplicaciones AgentLogin y AgentBacklogin para que los usuarios se efectun login. El usuario se registrara automticamente en esta cola cuando ingrese.

    Dinmica: Utilizacin de agents.conf A diferencia de la esttica, aqu debemos escribir no el numero del usuario pero si el numero del agente que esta registrado

    en el archivo agents.conf. Por ejemplo, member => Agent/1001, member => Agent/1002, member => Agent/1003, indica que los agentes 1001,1002 y 1003 pertenecern a esa cola. Si se decide utilizar este mtodo entonces las aplicaciones Agentlogin y AgentCallbacklogin.

    Ventajas: La ventaja principal es que el usuario podra hacer login desde cualquier terminal o extensin con solo digitar su usuario y clave en la aplicacin Asterisklogin.

    Opciones de Queues.conf:strategy: Determina como en cual orden las llamadas entraran a los agentes. Las opciones son:

    ringall: La llamada entra en todos los agentes y cualquiera podr responderroundrobin: La llamada entra en cada agente disponibleleastrecent: La llamada entra al agente con mas tiempo sin contestarfewestcalls: La llamada entra al agente con menos tiempo sin contestarrandom: Selecciona al agente de manera aleatoria sin ningn parmetrorrmemory: round robin con memoria. Inicia la serie en aquel ultimo que contesto

    periodic-announce: Realiza mensajes peridicos (Ejemplo: su llamada es importante para nosotros ...)periodic-announce-frequency: Establece con que frecuencia anuncia los mensajesjoinempty: Esta opcin controla si las llamadas entrantes pueden entrar a una cola sin miembros. Las opciones disponibles son: yes: Llamadas entrantes pueden ingresar a una cola sin miembros o estos no disponibles. No: Llamadas entrantes no pueden ingresar a una cola sin miembros strict: Llamadas entrantes no pueden ingresar a una cola sin miembros o estos no disponibles.

    Music: Establece la msica para la esperatimeout: Cuanto tiempo se le permite al telfono de un agente sonar antes de considerarse timeoutretry: El tiempo a esperar antes de intentar con los agentes nuevamentemaxlen: Nmero mximo de llamadas entrantes permitidas en una cola. 0 es ilimitado

    Ahora llevaremos esto a la practicaCreando Colas EstticasPara la creacin de colas estticas se editan los archivos queues.conf y extensions.conf.

    Queues.confSe agregar un contexto con el nombre [micola] con los siguientes parmetros

    [micola]context=extensionesperiodic-announce = fcld-agents-busy periodic-announce-frequency = 60 joinempty = strict music=default

    Fundacin Cdigo Libre Dominicano - http://www.codigolibre.org 20

  • ________________________________________________Cuaderno de Practicas Diplomado GNU-ASTERISK

    strategy=rrmemory timeout=15 retry=2 maxlen = 0 member => SIP/101 ; Especificamos estticamente cuales sern las extensiones registradas en esta cola.member => SIP/102member => SIP/103

    Luego nos dirigimos a extensions.conf para habilitar la cola:exten => 999,1,Answer()exten => 999,n,Ringingexten => 999,n,Wait(2)exten => 999,n,Queue(micola)exten => 999,n,HangUp

    As cuando un usuario llame a la 999 suena y lo coloca en la cola [micola]. Mientras esta a la espera de ser atendido estar por uno de los agentes registrados en esa cola y escuchando la msica por defecto establecida as como los anuncios peridicos.

    Creando Colas DinmicasLa nica diferencia en este tema es la inclusin del archivo agents.conf. En este se crean los agentes que mas adelante sern definidos en queues.conf. As que en agents.conf agregamos los siguientes agentes:

    agent => 1001,1234,Cristhian Nunezagent => 1002,1234,Carlos Castroagent => 1003,1234,Jophiel Espaillat

    y agregamos en extensions.conf una extensin con la aplicacin Agentlogin para que puedan registrarse los agentes:;Agent Loginexten => 888,1,AgentCallbacklogin(||${CALLERIDNUM}@extensiones)

    ;Agent Logoutexten => 889,1,AgentCallbacklogin(||l)

    Cuando el agente digite 888, la aplicacin le preguntara por un usuario (1001) y una clave (1234) y la extensin donde recibir las llamadas. Luego de esto todas las llamadas sern enrutadas hacia la extensin especificada por el agente.

    Cuando el agente digite 889 se le preguntara nuevamente por un usuario, clave y extensin. El agente puede entrar una nueva extensin para que las llamadas sean enrutadas hacia esta ultima.

    Asterisk Command-Line InterfacePara acceder a asterisk command-line interface(CLI) desde al shell ejecute el comando asterisk pasndole las siguiente opciones -r que provee una conexin a la consola de asterisk si el proceso de asterisk ya esta corriendo te provee una interfaz para controlar la consola de asterisk.

    [root@blackangel ~]# asterisk -rvvCLI>*** la opcin -v proporciona mas informacin de asterisk entre mas v agregamos mas informacin nos mostrara.! Es para poder ejecutar comandos de el shell sobre el CLI de asterisk.CLI> !ifconfig eth0 dialplan add extension contiene subcomandos que le permite agregar algunas funcionalidades a tu PBX sin editar directamente los archivos de configuracin.CLI> dialplan add extension 112,1,Dial,SIP/112/|20|Tt into phone dialplan show muestra el dialplan para un contexto en especifico.CLI> dialplan show phonedialplan add include incluye un contexto en otro contexto.CLI> dialplan add include salida into entradadialplan reload recarga solo el archivo extensions.conf.CLI> dialplan reloaddialplan remove extension remueve una extensin.CLI> dialplan remove extension 101@phone core abort shutdown Cancela un shutdown corriendoCLI> core abort shutdownagent logoff configura una agente offlineCLI> agent logoff sip/112 agent show muestra los agentes configurados.CLI> agent show agent show online muestra los agentes onlineCLI> agent show online cdr mysql status muestra el status de la conexin de cdr_mysqlCLI> cdr mysql status cdr status muestra el status de los CDR.

    Fundacin Cdigo Libre Dominicano - http://www.codigolibre.org 21

  • ________________________________________________Cuaderno de Practicas Diplomado GNU-ASTERISK

    CLI> cdr status console active configura el display en la console activaCLI> console show active console answer responde a una entrada de una llama en la console.CLI> console answer core show applications muestra las aplicaciones registradas para el dialplan.CLI> core show applicationscore show application muestra una descripcin de la aplicacin.CLI> core show application dialcore show channels muestra la informacin en los canales.CLI> core show channels core show channeltypes muestra la informacin de tipo de canal.core show codecs muestra las lista de todos los codecs.CLI> core show codecs core show codec muestra un codec en especifico.CLI> core show codec 2 features show muestra los features configurados.CLI> features show http show status muestra el status del server HTTPCLI> http show status iax2 reload recarga la configuracin del iax2 file.CLI> iax2 reload iax2 set debug habilita el debug para iax2.CLI> iax2 set debug iax2 set debug off deshabilita el debug para iax2.CLI> iax2 set debug off iax set debug jb habilita el debug para el jitterbufferCLI> iax2 set debug jb iax2 set debug jb off deshabilita el debug para el jitterbuffer.CLI> iax2 set debug jb off iax2 set debug trunk habilita el debug para el troncal.CLI> iax2 set debug trunk iax2 set debug trunk off deshabilita el debug para el troncal.CLI> iax2 set debug trunk off iax2 show cache muestra el cache del dialplan.CLI> iax2 show cache iax2 show channels muestra todos los canales activos.CLI> iax2 show channels iax2 show firmware muestra el firmware disponible.CLI> iax2 show firmware iax2 show netstats muestra los canales activos de iax2 netstats.CLI> iax2 show netstats iax2 show peers muestra todos los peers definidos en iax2.conf.CLI> iax2 show peers iax2 show peer muestra un peer en especifico.CLI> iax2 show peer blackangeliax2 show provisioning muestra iax provisioningCLI> iax2 show provisioningiax2 show registry muestra el status de los registros.CLI> iax2 show registry iax2 show stats muestra las estadisticas.CLI> iax2 show stats iax2 show users muestra informacion sobre los usuarios.CLI> iax2 show users module load carga un modulo para asterisk.CLI> module load cdr_addon_mysql.so module unload descarga un modulo para asterisk.CLI> module unload cdr_addon_mysql.so module reload recarga un modulo para asterisk.CLI> module reload cdr_csv.so module show muestra todos lo mdulos que contiene asterisk.CLI> show modules sip reload recarga la configuracin del archivo sip.confCLI> sip reload sip set debug ajusta el debug para el canal sip.CLI> sip set debug sip set debug off deshabilita el debug para el canal sip.CLI> sip set debug off sip set debug peer configura el debug para un peer.CLI> sip set debug peer 101 sip show channels muestra todo los canales activos.CLI> sip show channels sip show peers muestra todo los peers agregados en el sip.conf.

    Fundacin Cdigo Libre Dominicano - http://www.codigolibre.org 22

  • ________________________________________________Cuaderno de Practicas Diplomado GNU-ASTERISK

    CLI> sip show peers sip show registry muestra el status de los registros.CLI> sip show registry sip show settings muestra la configuracin global de sip. CLI> sip show settings sip show subscriptions muestra la cantidad de subscriptions. CLI> sip show subscriptions sip show users muestra todo los usuarios de sipCLI> sip show users voicemail show users muestra la cantidad de usuarios con voicemailCLI> voicemail show users voicemail show zone muestra la zona para el formato del mensaje.CLI> voicemail show zones dahdi destroy channel destruye un canal.CLI> dahdi destroy channel 1 dahdi restart completamente reinicia el todos los canales.CLI> dahdi restart dahdi show cadences muestra los cadences.CLI> dahdi show cadences dahdi show channels muestra todos los canales activos.CLI> dahdi show channels dahdi show status muestra el status de la tarjeta.CLI> dahdi show status restart gracefully reinicia asterisk con cortesia.CLI> restart gracefully restart now reinicia inmediatamente a asterisk.CLI> restart now restart when convenient reinicia asterisk cuando se limpien el volumen de llamadas.CLI> restart when convenient parkedcalls show muestra todas las llamdas parqueadas.CLI> parkedcalls showmoh reload reinicia musi