Académique Documents
Professionnel Documents
Culture Documents
org
Modulo:AsteriskI Autores:CristhianNunez(cristhian@codigolibre.org) ElvynBolges(elvyn@codigolibre.org) Versin:3.1 Conceptos de Telefonia y VoIP 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).
pagina1
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 el conjunto de nuevas funcionalidades de la telefona, es decir en lo que se 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.
Ventajas
La 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. Existen diferentes tipos de servicios de servicio de PSTN a VoIP: Ej. "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.
Funcionalidad
VoIP 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.
Movilidad
Los 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
pagina2
H.323
Definido 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. Para mas informacin http://es.wikipedia.org/wiki/H.323
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
IP no es un servicio, es una tecnologa En 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. Arquitectura de red El 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.
pagina3
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. ISDN Red Digital de Servicios Integrados: RDSI es una red que procede por evolucin de la red telefnica existente, que al ofrecer conexiones digitales de extremo a extremo permite la integracin de multitud de servicios en un nico acceso, independientemente de la naturaleza de la informacin a transmitir y del equipo terminal que la genere. Podemos dividir el RDSI en Acceso Bsico (BRI) consiste en dos canales B full-duplex de 64 kbps y un canal D full-duplex de 16 kbps. Luego, la divisin en tramas, la sincronizacin, y otros bits adicionales dan una velocidad total a un punto de acceso bsico de 192 kbps. 2B+D+sealizacin+framing Accesos Primario (PRI) est destinado a usuarios con requisitos de capacidad mayores, tales como oficinas PBX digital o red local. Debido a las diferencias en las jerarquas de transmisin digital usadas en distintos pases, no es posible lograr un acuerdo en una nica velocidad de los datos. Estados Unidos, Japn y Canad usan una estructura de transmisin basada en 1,544 Mbps, mientras que en Europa la velocidad estndar es 2,048 Mbps. Tpicamente, la estructura para el canal de 1.544 Mbps es 23 canales B ms un canal D de 64 kbps y, para velocidades de 2.048 Mbps, 30 canales B ms un canal D de 64 kbps: 30B(64)+D(64)+sealizacin+framing(64) 2,048 kbps - Europa 23B(64)+D(64)+sealizacin+framing(8) 1,544 kbps Estados Unidos, Japon y Canada. Libpri Son las libreras que permiten al asterisk conectarse con las ISDN Dahdi Dahdi son las iniciales de Digium Asterisk Hardware Device Interface : Son las librera que permite al asterisk conectarse con la telefona analgica y digital, incluyendo la conexin a la PSTN (Public Switched Telephone Networ). Son los drivers y herramientas para las tarjetas analgicas y digitales de digium y es individuales del asterisk y pueden ser utilizados para otras aplicaciones. Dahdi es la evolucin del proyecto Zaptel (Zapata Telephony Project), El cdigo fuente lo podemos descargar por piezas individuales o en un paquete completo.
dahdi-tools: son las aplicaciones necesarias para cargar las configuraciones dahdi-linux: contiene los mdulos de kernel necesario para poder utilizar las tarjetas de comunicaciones digium dahdi-linux-complete: es la unin de los dos paquetes anteriores, evitando descargar los dos paquetes independientes
pagina4
30.66 Kbps
Para ver una tabla de comparacin y aprender un poco mas de los codecs les dejo este link por cisco y esta calculadora por asteriskguide
Retardo o latencia Una vez establecidos los retardos de trnsito y el retardo de procesado la conversacin se considera aceptable por debajo de los 150 ms.
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. 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.
pagina5
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. 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. Asterisk Asterisk 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. Estructura asterisk
Canal: Es una conexion que conduce una llamada entrante o saliente en el sistema asterisk. La conexion puede venir o salir hacia telefonia tradicional analogica o digital, o VoIP. Dialplan: Se trata de la configuracion de la central de asterisk que indica el itinerario que sigue una llamada desde que entra o sale del sistema hasta que llega a su punto final. Se trata en lineas generales del comportamiento logico de la central.
pagina6
Extension: En telefonia tradicional, las extensiones se asocian con telefonos, interfaces o menues. En asterisk, una extension 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 extension Se ejecuta un salto de extensiones desde el dialplan de asterisk. contexto es una coleccion de extensiones.
Contexto: El dialplan o logica de comportamiento de asterisk se divide en uno o varios contextos. Un Los contextos existen para poder diferenciar el lugar donde se encuentra una llamada.
Aplicacion: Asterisk ejecuta secuencialmente los comandos asociados a cada extension. 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
CDR: Registro detallado de llamadas AGI: (Asterisk Gateway Interface) nos permite ejecutar en Asterisk software de terceros escrito en casi cualquier lenguaje 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/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. Archivos de Configuracion extensions.conf: el propio Dialplan. features.conf: dialplan para mtodos complementarios (transferencias, call parking, grabacin de llamadas bajo demanda, etc.). meetme.conf: para conferencias. musiconhold.conf: configuracion de la musica en espera. queues.conf: configuracion de colas de llamadas. voicemail.conf: configuracion de los buzones de voz. Asterisk se configura desde multiples archivos de configuracion, cada uno para una determinada area. Los mas importantes son: Archivo de configuracion maestro: asterisk.conf Archivo de configuracion de modulos: modules.conf Canales: iax.conf: Canales IAX (Inter Asterisk eXchange) sip.conf: Canales SIP /etc/dahdi/system.conf: Telefonia Analogica y digital.
pagina7
Debian
sudo apt-get install python-software-properties $ sudo apt-key adv --keyserver pgp.mit.edu --recv-keys 175E41DF $ sudo add-apt-repository "deb http://packages.asterisk.org/deb `lsb_release -cs` main" $ sudo add-apt-repository "deb-src http://packages.asterisk.org/deb `lsb_release -cs` main" $ sudo add-apt-repository "deb http://packages.asterisk.org/deb `lsb_release -cs` main" $ sudo add-apt-repository "deb-src http://packages.asterisk.org/deb `lsb_release -cs` main"
Configurando Asterisk PBX El 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,aplicacion() Ejemplo: exten => 101,1,answer() Extensin espacial del sistema s (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 extensin s. [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. 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. Ejemplo: exten => 103,1,Answer() exten => 103,n,hago algo exten => 103,n,Hangup() Notese como el orden numerico (1,2,3,etc) es reemplazado por la letra n.
pagina8
Con estos minimos datos ya podemos ir al archivo extensions.conf y crear nuestro dialplan. [root@server]# vim /etc/asterisk/extensions.conf [extensiones] exten => 100,1,Answer( ) ; Contesta la llamada exten => 100,2,Playback(hello-world) ; Suena el archivo hello-world exten => 100,3,Hangup( ) ; Cuelga la llamada Indica que cuando cualquiera de los usuarios registrados (101 o 102) marque la extension 100 se iniciara una secuencia de aplicaciones donde la primera es Answer, luego escuchara una grabacion (hello-world) y finalmente colgara. Mas aplicaciones Background: La aplicacion Background reproduce una melodia 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 digitos y pasa a la siguiente instruccin exten => 100,n,Hangup() Aqui lo unico que hace es que cuando marcamos la extension 100. reproduce el audio y espera digito de quien llama.
pagina9
Aplicacion Dial: Realiza una llamada a la extension o numero determinado en el campo. Utiliza diferentes tipos de tecnologia (SIP,IAX,ZAP, etc). 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 extension 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/102,10) ; Marca a la extension 102 y espera 10 segundos para pasas a la siguiente prioridad. exten => 102,n,Playback(vm-nobodyavail) exten => 102,n,Hangup() Cuando la extension 101 digite la 102, sonara en la extension 102 por un periodo de 10 segundos, si en esos 10 segundos nadie contesta ira a la proxima prioridad que toca un mensaje de no disponible y finalmente cuelga. Tambien dial puede llamar a otro tipo de tecnologia (IAX,ZAP,etc). Ejemplo; exten => 102,1,Dial(IAX/1,10,m) exten => 102,n,Playback(vm-nobodyavail) exten => 102,n,Hangup() En este caso la opcion llamara a la extension 102 usando IAX y mientras suena la opcion m tocara un musica 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 comunicacion con *1 Aplicacion Goto: Envia flujo de la llamada a un determinada posicion del dialplan, establecida por los parametros de contexto + extension + prioridad. Ejemplo: exten => 100,1,Answer( ) ; contesta la llamada exten => 100,n,Background(enter-ext-of-person) ; espera digitos y pasa a la extension en el mismo contexto exten => 100,n,WaitExten(10) exten => 100,n,Goto(101,1) ; Si no digita ninguna extension, va a la extension 101 prioridad 1. 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() Otro Ejemplo: exten => 100,1,Answer( ) ; contesta la llamada exten => 100,n,Background(enter-ext-of-person) ; exten => 100,n,WaitExten(10) exten => 100,n,Goto(hastaluego,200,1) ; Si no digita ninguna extension, va al contexto hasta luego extension 200 prioridad 1. exten => 100,n,Hangup() Entradas Extensiones especiales (t, i) Cuando 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 digito, espera 5 segundos hasta el siguiente, o numeral (#) para terminar de tipear numeros. Ejemplo: exten => 100,1,Answer( ) ; contesta la llamada exten => 100,n,Background(enter-ext-of-person) ; espera digitos y pasa a la extension en el mismo contexto exten => 100,n,WaitExten(10) exten => 100,n,Hangup()
pagina10
pagina11
pagina12
pagina13
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. Utilizaremos muchos de los conceptos aprendidos previamente asi como las variables de asterisk. Practicamente estaremos juntandolo TODO. Para mas informacin http://es.wikipedia.org/wiki/IVR Ejemplo 1: [entrada] include => extensiones exten => 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 extension 222 responde nuestro IVR con un mensaje de Bienvenida e indicando que marque la extension deseada, espera 5 segundos para que el cliente marque la extension deseada para transferirlo. Si el cliente no digita nada la llamada es terminada. Agregando las extensiones i y t Agregaremos entonces las extensiones i a nuestro dialplan y un Goto para que el cliente regrese al inicio en caso digitar una extension invalida. [entrada] include => extensiones exten => 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) [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 extension invalida escuchara un mensaje de invalido y volvera al menu principal. Agregando un Contador y GotoIf a nuestro IVR. En el contexto i, crearemos un contador que calculara un numero maximo de 3 extensiones invalidas para luego terminar la llamada. Aqui tambien empleamos la aplicacion GotoIf condicionara el contexto para decidir a donde ir. Es como sigue: [entrada]
pagina14
pagina15
En este ejemplo cambia totalmente nuestro IVR. Agregamos un contexto inicio donde las llamadas marcadas al 222 entraran en este contexto y encontraran la condicion GotoIfTime(09:00-17:59),mon-fri,*,*?entrada,s,1) . Indica que de lunes a viernes en horario 09:00-17:59 de cualquier dia y cualquier mes se enviara al contexto entrada prioridad 1. Si la condicion 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. MusiconHold CualquierpopularsistemaPBXofrecelacapacidaddesuministrarunafuentedemsicaquehade desempearparamientrasquehayunallamadaenespera.Asteriskpermitemuchacreatividadeneste sentido.Hoyenda,todoelmundoestfamiliarizadoconelformatodemsicaMP3,yhayungran intersenelusodeMP3comomsicaenespera.Elconceptoquepareceunabuenaidea,perohayalgunas cosasquecreemosquedebenpensarytenerenconsideracin: LosArchivosMP3sonmuycomplejos,yrequierenunacantidadsustancialdeCPUparadecodificar.Si ustedtienevariasllamadasreproduciedomsicaenesperaenelsistema(porejemplo,aveceslas personasquiereescucharmsicaatravsdesutelfono,ouncentrodeatencintelefnicapueden tenervariasllamanenespera),lacargaenelCPUcausadoporlatotalidaddelatranscodificacinde losarchivosMP3almacenadospodraponerdemasiadademandaenunamquinaqueestacorriendoasterisk podemosusarformatomp3deacuerdoalasnecesidadesderendimientodelsistema.
Configurandomsicaenespera. [root@asterisk~]#vim/etc/asterisk/musiconhold.conf [default] mode=files directory=/var/lib/asterisk/moh random=yes Donde: modefiles:Leelosarchivosdesdeeldirectorioespecificadoencualquierformato. directory:Especificaeldirectoriodondeestaranubicadoslosarchivosdesonido. random:Tocalosarchivosdemaneraaleatoria. Lossonidosdelamusicaenesperaestanenlarutasiguiente: [root@asterisk]#cd/var/lib/asterisk/moh/ [root@asteriskmoh]#ls fpmcalmriver.gsmfpmsunshine.wavLICENSEasteriskmohfreeplaygsm fpmcalmriver.wavfpmworldmix.gsmLICENSEasteriskmohfreeplaywav fpmsunshine.gsmfpmworldmix.wav Optimizandolamsicaenespera LaaplicacinMusicOnHolddeAsteriskutilizaficheroscodificadosenMP3oWAV.Sibienesta codificacindeaudioofreceunabuenacalidadestapensadaparaficherosdesonidoynoparalas comunicaciones. Sitenemosunagrancantidaddellamadasenesperalacargadelsistemaescadavezmayor,estoes debidoalatranscodificacinprobablementeenlamayoradellamadasusemosGSMoAlaw. CuandoAsteriskreproduceMOH,siemprebuscaelformatoquemenoscostelesuponerespectoalcdecque seestusando.NormalmentetranscodificardesdeSLINvaaserlaopcinmsbarata,perosisabemos quenuestrosistemausaprincipalmenteGSMoAlaw(enlamayoradeloscasos),lomejorserahacer latranscodificacindelficheronosotrosmismosyevitarestatareaaAsterisk. ParaelloiremosaldirectoriodondetenemoslamusicaenesperayconvertiremoslosficherosWAV.Para ellonecesitaremossox,asquesinolotenemosinstalado:
pagina16
Configurando Hardware Telefonico En este tema configuraremos una tarjeta FXO Digium TDM04B para conectar asterisk a una linea analoga, es decir, habilitaremos la linea para cuando alguien llame al 8094767758 asterisk responda de acuerdo al dialplan que hayamos definido. Para esto, hemos compilado previamente los paquetes de dahdi. Ahora procederemos a su configuracion. /etc/dahdi/system.conf El archivo system es donde configuras los parametros de la tarjeta, en nuestro caso la TDM04B. Es leido por el programa /usr/sbin/dahdi_cfg Estos archivos son instalados por el paquete dahdi-linux. [root@server ~]# vim /etc/dahdi/dahdi.conf fxsks=1-4 ; Se especifica la cantidad de puertos que tendra su tarjeta. En nuestro caso posee 4. loadzone = us ; significa que tus tarjetas de interfaz sern cargadas con tonos de la indicacin de los E.E.U.U. Puedes cargar ms de un sistema de tonos en un interfaz para permitir que generes tonos de diversas zonas dando una lista coma-separada de dos cdigos de pas de la letra. defaultzone = us ; los medios utilizan los tonos para esta zona por defecto (cuando no se especifica ninguna otra zona. Configurando chan_dahdi.conf En este archivo se configuran los parametros a utilizar por los canales para asterisk. Cuando alguien llame al numero 8094767758 asterisk leera este archivo de configuracion y aplicara todos los parametros establecidos en el. Ejemplos [root@server ~]# 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 conversacion y alguien mas este tratando de llamar callwaitingcallerid=yes ; Asterisk enviara el callerid de quien espera. threewaycalling=yes ; Si esta habilitada, puedes colocar llamadas en hold. echocancel=yes ; Habilita echo cancellation echocancelwhenbridged=yes rxgain=0.0 txgain=0.0 group=1 callgroup=1
pagina17
pagina18
/etc/asterisk/chan_dahdi.conf signalling=fxs_ks context=entrada group=1 channel=>1 extensions.conf [entrada] exten => _X.,1,Dial(dahdi/g1/{EXTEN}) Exten => _x.,2,Hangup Asterisk Command-Line Interface Para acceder a asterisk command-line interface(CLI) desde al shell ejecute el comando asterisk pasandole las siguiente opciones -r que provee una conexin a la consola de asterisk si el proseso de asterisk ya esta corriendo te provee una interface para controlar la consola de asterisk. [root@server ~]# asterisk -rvv server*CLI> la opcion -v proporciona mas informacion de asterisk entre mas v agregamos mas informacion nos mostrara. ! Es para poder ejecutar comandos de el shell sobre el CLI de asterisk. server*CLI> !ifconfig eth0 dialplan add extension contiene unos cuantos subcomandos que le permite agregar algunas funcionalidades a tu PBX sin editar directamente los archivos de configuracion. server*CLI> dialplan add extension 112,1,Dial,SIP/112/|20|Tt into phone dialplan show muestra el dialplan para un contexto en especifico. server*CLI> dialplan show phone dialplan add include incluye un contexto en otro contexto. server*CLI> dialplan add include salida into entrada dialplan reload recarga solo el archivo extensions.conf. server*CLI> dialplan reload dialplan remove extension remueve una extension. server*CLI> dialplan remove extension 101@phone abort shutdown Cancela un shutdown corriendo server*CLI> abort shutdown agent logoff configura una agente offline ;Creamos el contexto indicado en el zapata.conf ;Para las salidas de la llamadas indicamos creamos esta ext.
pagina19
pagina20
pagina21
pagina22
Los Archivos MP3 son muy complejos, y requieren una cantidad sustancial de CPU para decodificar. Si usted tiene varias llamadas reproduciedo msica en espera en el sistema (por ejemplo, a veces las personas quiere escuchar msica a travs de su telfono, o un centro de atencin telefnica pueden tener varias llaman en espera),la carga en el CPU causado por la totalidad de la transcodificacin de los archivos MP3 almacenados podra poner demasiada demanda en una mquina que esta corriendo asterisk podemos usar formato mp3 de acuerdo a las necesidades de rendimiento del sistema.
Configurando msica en espera. [root@asterisk ~]# vim /etc/asterisk/musiconhold.conf [default] mode=files directory=/var/lib/asterisk/moh random=yes Donde: mode-files: Lee los archivos desde el directorio especificado en cualquier formato. directory: Especifica el directorio donde estaran ubicados los archivos de sonido. random: Toca los archivos de manera aleatoria. Los sonidos de la musica en espera estan en la ruta siguiente: [root@asterisk]# cd /var/lib/asterisk/moh/ [root@asterisk moh]# ls fpm-calm-river.gsm fpm-sunshine.wav LICENSE-asterisk-moh-freeplay-gsm fpm-calm-river.wav fpm-world-mix.gsm LICENSE-asterisk-moh-freeplay-wav fpm-sunshine.gsm fpm-world-mix.wav Optimizando la msica en espera La aplicacin MusicOnHold de Asterisk utiliza ficheros codificados en MP3 o WAV. Si bien esta codificacin de audio ofrece una buena calidad esta pensada para ficheros de sonido y no para las comunicaciones. Si tenemos una gran cantidad de llamadas en espera la carga del sistema es cada vez mayor, esto es debido a la transcodificacin probablemente en la mayora de llamadas usemos GSM o A-law. Cuando Asterisk reproduce MOH, siempre busca el formato que menos coste le supone respecto al cdec que se est usando. Normalmente transcodificar desde SLIN va a ser la opcin ms barata, pero si sabemos que nuestro sistema usa principalmente GSM o A-law (en la mayora de los casos), lo mejor sera hacer la transcodificacin del fichero nosotros mismos y evitar esta tarea a Asterisk. Para ello iremos al directorio donde tenemos la musica en espera y convertiremos los ficheros WAV. Para ello necesitaremos sox, as que si no lo tenemos instalado: [root@asterisk ~]# yum -y install sox # Accedemos al directorio de los ficheros MOH cd /var/lib/asterisk/moh Formato GSM: sox fpm-sunshine.wav -t gsm -r 8000 -b -c 1 fpm-sunshine.gsm sox fpm-calm-river.wav -t gsm -r 8000 -b -c 1 fpm-calm-river.gsm sox fpm-world-mix.wav -t gsm -r 8000 -b -c 1 fpm-world-mix.gsm Formato A-law: sox fpm-sunshine.wav -t al -r 8000 -b -c 1 fpm-sunshine.alaw sox fpm-calm-river.wav -t al -r 8000 -b -c 1 fpm-calm-river.alaw sox fpm-world-mix.wav -t al -r 8000 -b -c 1 fpm-world-mix.alaw Donde: fpm-sunshine.wav -> Indica el archivo de entrada a convertir. -t -> Especifica el tipo de archivo a convertir -r -> Especifica el rate en Hertz del archivo -c -> Especifica el numero de canales en el archivo. Estos podrian ser 1,2 y 4 para mono, estereo o quad sound respectivamente.
pagina23
Conferencia de llamadas (meetme.conf) Meetme es utilizado para hacer llamadas en conferencia. Se crea un salon (room) en el cual todo aquel que vaya a escuchar la conferencia acceda a el mediante una clave. Editamos el archivo meetme.conf con los siguientes parametros: conf => 9001 ; Estableciendo la extension para la conferencia Tambien se puede colocar claves y claves de administrador para la misma. El administrador como bien dice su nombre, establece la sesion de conferencia. Otros parametros; conf => 9001,12345 ; Inicia la sesion con clave Tambien se puede: conf => 9001,12345,33333; Inicia la sesion con clave 12345 y el administrador tendra clave 33333. En extensions.conf llamamos la aplicacion Meetme. exten => 9001,1,Answer exten => 9001,n,Wait(1) exten => 9001,n,MeetMe(9001|p) exten => 9001,n,Playback(vm-goodbye) exten => 9001,n,Hangup Algunos parametros que le podemos pasar a la aplicacion Meetme son los siguientes: p -> permite al usuario salir de la conferencia presionando # m -> establece que el caller solo escucha, no habla Interconexion entre Asterisks Para establecer la interconexion entre asterisk, tenemos el siguiente escenario: Servidor 1: 192.168.1.55 Servidor 2: 192.168.1.110 Mediante el protocolo sip, el servidor 1 establecera comunicacion con el servidor 2 Servidor 1 en sip.conf: [general] register => asterisk1:pass1@192.168.1.110/asterisk2 [asterisk2] type=friend secret=pass2 context=asterisk2_entrada host=dynamic insecure=invite [1000] type=friend host=dynamic context=phones secret=1000 Donde: En el contexto [general] la opcion register indica que el servidor 1 se registara en el servidor 2 utilizando el usuario asterisk1 y la clave pass1,la direccion ip 192.168.1.110 es la direccion del servidor 2 mientas que asterisk2 es la extension local en el servidor 1 a traves del cual se enrutaran las llamadas hacia el asterisk2. Mas abajo en la extension [asterisk2] es la extension que manejara el trunking entre estos 2 equipos.
pagina24
pagina25
pagina26
Conelcomandoanteriorledamoslospermisosnecesariosyevitamosqueelsiguientemensajequedeenloopinfinito.
[root@asteriskasteriskgui]#makecheckconfig CheckingAsteriskconfigurationtoseeifitwillsupporttheGUI *Checkingforhttp.conf:OK *Checkingformanager.conf:OK *CheckingifHTTPisenabled:OK *CheckingifHTTPstaticsupportisenabled:OK *Checkingifmanagerisenabled:OK *CheckingifmanageroverHTTPisenabled:OK Everythinglooksgood *GUIshouldbeavailableathttp://asterisk.codigolibre.org:8088/asterisk/static/config/cfgbasic.html *Theloginandpasswordshouldbeanentryfrom/etc/asterisk/manager.conf whichhas'config'permissioninreadandwrite.Forexample: [admin] secret=mysecret7797 read=system,call,log,verbose,command,agent,config write=system,call,log,verbose,command,agent,config Goodluck!
pagina27