historia de asterix

21
 Asterisk es el mayor proyecto de software libre diseñado para la integración y unificación de los sistemas de comunicaciones conocidos Originalmente fue concebido como una plataforma para la generación de un sistema PBX, pero con el tiempo ha ido evolucionando a otro tipo de usos, como Pasarelas VoIP , sistemas integrales para callcenters, salas de conferencias, bu!ones de vo!, y todo tipo de aplicaciones "ue tengan relación con las comunicaciones en tiempo real# $omparativamente %steris& es para el mundo de las comunicaciones lo mismo "ue ser'a %pache para el mundo de las aplicaciones web# %pache es un servidor web, y %steris& es un servidor de comunicaciones#  %steris& es una plataforma de comunicaciones basada en la f ilosofia Open (ource, es capa! de convertir una computadora comun en un completo servidor de comunicaciones# )*ue es %steris&+ ealmente esta pregunta puede ir mucho m-s all- de la definición com.n "ue se establece para el sistema# /0isten ciertas consideraciones "ue hacen a %steris& lo "ue realmente es en la actualidad, y una de las principales surge de la propia naturale!a del sistema1 2a filosof'a Open (ource# $onsiderando %s teri s& como una platafo rma int egr al de comuni cac ion es, pod r'a con siderarse la m-s importante, y ha resultado como .nica por muchos años en un entorno, donde todos los sistemas de comunicación eran total mente privativos # %un"u e con el tiempo , fueron sacando interface s com.nme nte conocidos como $3I para la integración de sistemas de terceros para cumplir funciones muy espec'ficas, la potencia de estas interfaces era bastante limitada dado "ue el n.cleo de los sistemas privados, permanencia cerrado al p.blico# $on %steris& se sienta un precedente desde el momento "ue el código es de libre acceso, modificación y ampliación, dado "ue m.ltiples colectivos pudieron ampliar sus necesidades y adaptarlas a lo "ue ven'an buscando en un momento concreto, "ue un sistema de comunicaciones pudiera ofrecerles, dentro de sus e0tensivas bondades# 4istoria y /volucion de %steri s& /l desarrollo de %steris& fue iniciado en el año 5666 por 7ar& (pencer# /n a"uel momento ya e0ist'an otros proyectos de telefon'a basados en la ideolog'a Open (ource# Pero esos proyectos estaban realmente enfocados a la telefon'a a nivel software, basados en la b.s"ueda de establecer comunicaciones entre ordenadores a trav8s de los sistemas de audio# 2a diferencia

Upload: rebecca-mccoy

Post on 07-Oct-2015

247 views

Category:

Documents


0 download

TRANSCRIPT

Asteriskes el mayor proyecto de software libre diseado para la integracin y unificacin de los sistemas de comunicaciones conocidosOriginalmente fue concebido como una plataforma para la generacin de un sistema PBX, pero con el tiempo ha ido evolucionando a otro tipo de usos, como Pasarelas VoIP, sistemas integrales para call-centers, salas de conferencias, buzones de voz, y todo tipo de aplicaciones que tengan relacin con las comunicaciones en tiempo real.Comparativamente Asterisk es para el mundo de las comunicaciones lo mismo que sera Apache para el mundo de las aplicaciones web. Apache es un servidor web, y Asterisk es un servidor de comunicaciones.Asterisk es una plataforma de comunicaciones basada en la filosofia Open Source, es capaz de convertir una computadora comun en un completo servidor de comunicaciones.Que es Asterisk?Realmente esta pregunta puede ir mucho ms all de la definicin comn que se establece para el sistema.Existen ciertas consideraciones que hacen a Asterisk lo que realmente es en la actualidad, y una de las principales surge de la propia naturaleza del sistema: La filosofa Open Source.Considerando Asterisk como una plataforma integral de comunicaciones, podra considerarse la ms importante, y ha resultado como nica por muchos aos en un entorno, donde todos los sistemas de comunicacin eran totalmente privativos. Aunque con el tiempo, fueron sacando interfaces comnmente conocidos como CTI para la integracin de sistemas de terceros para cumplir funciones muy especficas, la potencia de estas interfaces era bastante limitada dado que el ncleo de los sistemas privados, permanencia cerrado al pblico.Con Asterisk se sienta un precedente desde el momento que el cdigo es de libre acceso, modificacin y ampliacin, dado que mltiples colectivos pudieron ampliar sus necesidades y adaptarlas a lo que venan buscando en un momento concreto, que un sistema de comunicaciones pudiera ofrecerles, dentro de sus extensivas bondades.Historia y Evolucion de AsteriskEl desarrollo de Asterisk fue iniciado en el ao 1999 por Mark Spencer. En aquel momento ya existan otros proyectos de telefona basados en la ideologa Open Source. Pero esos proyectos estaban realmente enfocados a la telefona a nivel software, basados en la bsqueda de establecer comunicaciones entre ordenadores a travs de los sistemas de audio. La diferencia de Asterisk con estos proyectos, era la idea preconcebida, de entrelazar por primera vez la red de telefona comn (PSTN) con un ordenador.Y para ello se form una alianza con un proyecto de telefona llamado Zapata iniciado por Jim Dixon. La idea del proyecto Zapata, era la posibilidad de disear tarjetas especficas para convertir la seal analgica que provena de la PSTN a una seal digital, y ahorrar costes en la construccin de dispositivos de telefona y audio avanzados (y muy costosos) gracias a la tremenda reduccin de costes que sufran ao tras ao los procesadores. A travs de estos, cada vez ms potentes, y baratos, se podran procesar una o varias seales de audio digital (DSP) sin gran dificultad y poder paralelamente construir telfonos con ese coste reducido.Hoy en da el proyecto Zapata, fue integrado totalmente en Asterisk, y Asterisk patrocinado por una empresa que construye dispositivos de telefona digital, llamada Digium, y se ha acomodado como una parte ms de Asterisk con un nuevo nombre: DAHDI (son las siglas de Digium Asterisk Hardware Device Interface).La primera version estable surgio casi 5 aos despues, Asterisk 1.0. A partir de aqui el sistema de versiones ha evolucionado de la siguiente forma: Asterisk 1.0 2004 Asterisk 1.2 2005 Asterisk 1.4 2006 Asterisk 1.6.0 2008 Asterisk 1.6.1 2009 Asterisk 1.6.2 2009 Asterisk 1.8 2010 Asterisk 1.10 2011 (Nuevo Nombre Asterisk 10)Asterisk SCFAsterisk SCF es un entorno todava en vas de desarrollo que aunque originalmente no ha sido lanzado para reemplazar al sistema original Asterisk, ofrecer una evolucin en mltiples trminos que supondra en un futuro su posible adaptacin por la mayora de los usuarios del mismo.La idea intencional esta basada, en la posibilidad de ofrecer un sistema capaz de ser desplegado en Clusters, o mltiples sistemas con total transparencia, algo que en la actualidad el sistema Asterisk no puede ofrecer de por si, y en caso de necesitar algun tipo de escalado, era necesario recurrir a soluciones alternativas como los Proxies SIP como los reconocidos Opensips o Kamailio. Segn la definicin ofrecida por los desarrolladores, Asterisk SCF ha sido arquitectnicamente diseado para ofrecer los mximos niveles de disponibilidad, escalabilidad, extensibilidad, tolerancia a fallos y rendimiento.Arquitectura de AsteriskLa arquitectura de Asterisk esta basada en un sistema modular, que depende del ncleo principal del sistema.

El ncleo del sistema principalmente se basa en cuatro componentes: Gestin de Mdulos Temporizador de Sistema Gestin de Canales Interfaces de SistemaLa estructura de Asterisk es totalmente independiente de los dispositivos, troncales, y dems tiles externos al mismo. En la gran parte de las PBX tradicionales, es muy comn observar el hecho que existen estructuras lgicas para diferenciar entre los telfonos y otros dispositivos de telefona como faxes, y por otro lado lneas entrantes como troncales primarios, lneas RDSI, etc. En Asterisk este concepto no existe, todo entra al sistema como un canal genrico y luego es gestionado de forma integral. Aunque sean diferenciados, todos se gestionan de la misma forma por eso, incluso recursos externos pueden llegar a ser manejados dentro de las posibilidades, de la misma forma, que una extensin SIP interna.A priori esto puede parecer bastante obvio, pero el verdadero potencial se demuestra cuando empezamos a trabajar con estos canales dentro del plan de Marcacin.MdulosComo comentbamos antes, Asterisk esta basado en mdulos independientes, los cuales pueden ser cargados y descargados a voluntad, en funcin de las necesidades que deseemos proveer al sistema.Cada modulo posee una funcionalidad especifica, de tal forma que puedan tratarse todos los aspectos del sistema, pasando por los tipos de canales (SIP, IAX, DAHDI) o conexiones a otros sistemas para interactuar con Asterisk (mail, bases de datos, web, etc.).Existe un archivo especifico para la configuracin de los mdulos llamado modules.conf (dentro de la ruta especifica de instalacin de Asterisk tpicamente /etc/asterisk).Durante la instalacin del sistema Asterisk, es posible seleccionar que mdulos pretendemos instalar. En caso que instalemos una gran cantidad de modulo que tengamos intencin de utilizar en un futuro avanzado, pero no a corto plazo, por motivos de seguridad es altamente recomendable sealar especficamente que no se carguen dentro del fichero de configuracin utilizando la propiedad noload =>Todas las posibilidades que nos ofrece el fichero de configuracin modules.conf las podremos ver en su apartado especfico.Dentro del sistema de mdulos, estos se clasifican en diferentes subapartados como vemos a continuacin los ms populares: Aplicaciones Recursos Funciones del Dialplan Registro del detalle llamadas Registro de eventos de canales Drivers de canales Traductores de Codecs y Formatos Add-onsAplicacionesLas aplicaciones son aquellas acciones aplicables al manejo de las llamadas dentro del Plan de Marcacin. Por ejemplo, la mas popular en todos los planes sera la aplicacin Dial, la cual simplemente tiene como propsito lanzar una llamada a un canal en funcin de las propiedades que sealemos durante su ejecucin. Existen otras aplicaciones comunes, como VoiceMail (encargada de la gestin del Buzn de Voz), Record (para grabar el sonido de un determinado canal), etc.Algunas caractersticas en comn de las aplicaciones son las siguientes: Las acciones estn exclusivamente enfocadas por y para los canales. Se carga de forma dinmica Se ejecutan de manera sncrona. El formato clsico de este tipo de mdulos esapp_.soRecursosLa funcin especifica de los recursos es la de integrar Asterisk con los sistemas externos. Hablamos de bases de datos, servidores web, calendarios, etc.Tienen la capacidad de utilizar por si mismos, Aplicaciones del sistema como veamos antes. Pero una de las diferencias con respecto a estas, es que se cargan de manera esttica, y pueden operar simultneamente en mltiples canales, en vez de crearse dinmicamente para cada canal en curso.Uno de los mas comunes, es el recurso para ofrecer servicios de Msica en Espera (Music ion Hold), o para realizar interconexiones con bases de datos a travs de ODBC.El formato clsico de este tipo de mdulos esres_.soFunciones del DialplanLa idea fundamental detrs de las Funciones es la capacidad de obtener o aadir, determinada informacin especifica a cada canal. Suelen ser complementarias a las Aplicaciones y son capaces de ofrecer mejoras para determinados aspectos del sistema que de por si pudieran ser limitados.Por ello la forma mas comn de ser utilizadas es a travs de la Aplicacin SetPor ejemplo una funcin tpica es la capaz de recoger el Identificador de llamada de un canal (CALLERID) para poder manejarlo dentro del plan de marcacin a voluntad.El formato clsico de este tipo de mdulos esfunc_.soDrivers de canalesSon los drivers especficos para cada tipo de canal disponible actualmente o en un futuro para Asterisk. Estos son los que aportan especficamente la posibilidad de volver totalmente independiente el sistema de los mismos para as poder tratarlos de forma totalmente homognea. Son exactamente una especie de interfaz entre el ncleo de Asterisk y la parte lgica dentro del sistema operativo. Es exactamente un API.Todos los canales mas tpicos, tienen su correspondiente modulo para el driver. Ejemplos tpicos son el especifico para DAHDI, SIP e IAX, que justamente son los ms utilizados por la comunidad Asterisk. El resto no estn lo suficientemente difundidos, aunque tienen soporte y van mejorando con el tiempo, como el especifico para tratar con estaciones Cisco, llamado como su protocolo propietario, Skinny (SCCP).El formato clsico de este tipo de mdulos eschan_.soTraductores de Codecs y FormatosSon la representacin para los sistemas de audio y vdeo digitales de trasmisin (codecs) y almacenamiento (formatos).De alguna forma, son los encargados de convertir va software, entre un tipo y otro tipo de formato o cdec de forma simultanea al curso de la llamada.Por ejemplo, si una llamada, viene del canal DAHDI, con el cdec G.711 (alaw o ulaw dependiendo del pas) y quiere pasarse a una extensin SIP dentro de nuestro sistema Asterisk, el traductor correspondiente ser el encargado de realizar esta conversin en tiempo real.Por otro lado, si lo que estamos tratando son archivos, los encargados de interpretar el contenido para pasarlo a travs del audio del canal correspondiente seran los traductores de Formatos. En este mbito los mas populares son los estndares, GSM y WAV en los que estn basados la mayor parte de los sonidos por defecto del sistema Asterisk (los mensajes pregrabados).El formato clsico de para los mdulos de codecs escodec_.soy para los de formatosformat_.soInterfacesAsterisk se despliega y comunica con el entorno a travs de mltiples interfaces que provee, tanto para trabajos de gestin y mantenimiento manuales, como para su autogestin de forma esttica, y sistemas externos que puedan recabar datos de forma dinmica y automtica, y finalmente pasando a ofrecer interfaces para poder trabajar con lenguajes de programacin que provean a su vez al sistema de nuevas funcionalidades extra que no estn construidas en su interior.Todo esto se puede desglosar en cuatro estructuras bsicas: Ficheros de Configuracin Interfaz de Comandos (CLI) Interfaz Pasarela (AGI) Interfaz de Gestin (AMI)Archivos de ConfiguracinTodos se encuentran en la ruta de instalacin por defecto de Asterisk, que suele ser en la mayor parte de los casos /etc/asterisk. Suele existir un fichero de configuracin que soporte la funcionalidad especifica que puede aportar al sistema un modulo especifico, y suelen acabar con el formato .conf, como podra ser el caso de chan_dahdi.conf, que como veramos antes, sera el fichero encargado de ofrecer toda la configuracin especifica para el modulo encargado de gestionar el canal dedicado a DAHDI.Una parte de los ficheros de configuracin es posible que sean editados de forma dinmica a travs de una Base de Datos. A esta funcionalidad se le ha llamado Asterisk Realtime, y por ejemplo es muy popular para la configuracin del fichero especifico para el modulo dedicado al canal SIP (sip.conf). Pero la mayor parte del resto de los ficheros, son editados de forma manual, aunque en los ltimos aos se han popularizado unas interfaces grficas de usuario para hacer esta tarea mas intuitiva como FreePBX.CLIEn trminos generales, podra considerarse la consola de administracin del sistema. En un apartado especifico dentro de esta Wiki, podremos encontrar mas informacin relativa a este interfaz ya que es fundamental saber utilizarlo para la correcta gestin y mantenimiento del sistema de forma eficaz.Asterisk Manager InterfaceEn la mayor parte de las PBX mas populares del mundo, existe un componente para poder ofrecer nuevas funcionalidades al sistema original a travs de sistemas de procesamiento autnomos u ordenadores. Este recurso suele llamarse CTI (Computer Telephony Integration), y por regla general suele ser bastante limitado, ya que su potencial suele radicar en la cantidad de informacin que seamos capaces de extraer del mismo.En Asterisk este CTI es llamado AMI, y su potencial es prcticamente ilimitado ya que podemos recoger prcticamente cualquier elemento interno en funcin de la configuracin que apliquemos al mismo. Principalmente recibe todos aquellos comandos que sean capaces los mdulos del sistema de aportar a la interfaz.Sistemas como marcadores predictivos, gestores de llamadas, sistemas de facturacin, etc, se fundamentan en esta interfaz.La forma de interaccin es bastante bsica, ya que esta basado en un flujo de texto simple.Asterisk Gateway InterfaceMuy parecido al uso de Aplicaciones, disponemos de esta pasarela para poder ejecutar servicios en los canales, pero basados en otros lenguajes de programacin diferentes a la estructura de Asterisk en si.Existen libreras AGI prcticamente para todos los lenguajes mas populares como pueden ser, PHP, Python, Java, Ruby on Rails, etc.Con esto tenemos un potencial ilimitado para crear o entrelazar aplicaciones ya existentes con nuestro sistema Asterisk, y obtener aun mas funcionalidad de la que el sistema provee de por si.Plan de Marcacin (Dialplan)Como parte fundamental de la arquitectura de Asterisk vamos a hacer una breve resea sobre la espina vertebral de Asterisk que podr verse especficamente mas ampliado dentro de un apartado de esta Wiki.Si pudiramos considerar el flujo de cualquier interaccin de Asterisk y a su vez este flujo como un lenguaje de programacin en si (o un script), de como por ejemplo las llamadas son gestionadas, este concepto se llamara en Asterisk Plan de Marcacin (o mas popularmente conocido como Dialplan).Existen tres formas de disear el dialplan: A travs de un fichero de configuracin simple Utilizando AEL (Asterisk Extension Logic) Mediante el lenguaje de programacin LUAPero la forma mas popular y extendida es el caso del fichero de configuracin en su correspondiente seccin se vern de forma mas extendida estas posibilidades.Curso basico de AsteriskIntroduccin a AsteriskAsterisk es una centralita software (PBX) de codigo abierto. Como cualquier centralita PBX permite interconectar telefonos y conectar dichos telefonos a la red telefnica convencional (RTB Red telefnica bsica)- Su nombre viene del simbolo asterisco (*) en ingls.El creador original de esta centralita es Mark Spencer de la compaia Digium que sigue siendo el principal desarrollador de las versiones estables. Pero al ser de cdigo libre, existen multitud de desarrolladores que han aportado funciones y nuevas aplicaciones. Originalmente fue creada para sistemas Linux pero hoy en da funciona tambin en sistemas OpenBSD, FreeBSD, Mac OS X, Solaris Sun y Windows. Pero Linux sigue siendo la que mas soporte presenta.El paquete bsico de Asterisk incluye muchas caractersticas que antes slo estaban disponibles en caros sistemas propietarios como creacin de extensiones, envo de mensajes de voz a e-mail, llamadas en conferencia, menus de voz interactivos y distribucin automtica de llamadas. Adems se pueden crear nuevas funcionalidades mediante el propio lenguaje de Asterisk o mdulos escritos en C o mediante scripts AGI escritos en Perl o en otros lenguajes.Para poder utilizar telefonos convencionales en un servidor Linux corriendo Asterisk o para conectar a una lnea de telfono analgica se suele necesitar hardware especial (no vale con un modem ordinario). Digium y otras compaias venden tarjetas para este fin.Pero quizs lo mas interesante es que Asterisk soporta numerosos protocolos de VoIP como SIP y H.323. Asterisk puede operar con muchos telefonos SIP, actuando como registrar o como gateway o entre telefnos IP y la red telefnica convencional. Los desarrolladores de Asterisk han diseado un nuevo protocolo llamado IAX para un correcta optimizacin de las conexiones entre centralitas Asterisk.Al soportar una mezcla de la telefona tradicional y los servicios de VoIP, Asterisk permite a los desarrolladores construir nuevos sistemas telefnicos de forma eficiente o migrar de forma gradual los sistemas existentes a las nuevas tecnologas. Algunos sitios usan Asterisk para reemplazar a antiguas centralitas propietarias, otros para proveer funcionalidades adicionales y algunas otras para reducir costes en llamadas a larga distancia utilizando Internet.Instalacion de AsteriskAsterisk para linuxLa pgina de referencia eshttp://www.asterisk.org/Nos descargamos la versin1.6.2.20y lo descomprimimos1) Instalar Asterisk# tar -zxvf asterisk-1.6.2.20.tar.gz# rm -f asterisk-1.6.2.20.tar.gz# cd asterisk-1.6.2.202) ejecutar makeSuponiendo que todo ha ido correctamente3) ejecutar make installSi es la primera vez que instalas la centralita Asterisk es recomendable instalar los ejemplos con el comando4) make samplesPero recuerda que este comando sobreescribir todos los archivos de configuracin que ya tengas.Finalmente puedes arrancar el Asterisk con el comando:# asterisk -vvvcVers un montn de mensajes en la pantalla cuando Asterisk se inicializa. (las vvv pertenecen al modo very very verbose y la c a que nos mostrar al final una linea de comandos en forma consola)*CLI>A partir de este momento ya est Asterisk instalado y funcionando. Se puede utilizar el comando help para ayudaTambin puedes utilizar el comando man asterisk en la lnea de comandos de linux para obtener detalles de como arrancar y parar el servidor Asterisk.Los ficheros de configuracin de Asterisk se habrn instalado en el directorio /etc/asterisk donde podrs encontrar un montn de informacin.Vamos a comprobar que funciona:Configuramos un softphone como el SJPhone o X-Lite, para poder acceder a nuestro propio Asterisk. La configuracin que hemos hecho trae dos usuarios por defecto que podemos utilizar:A: usuario:3000password=cualquiera valeB: usuario:3001password=cualquiera valeUna vez que lo tenemos configurado y el usuario se ha registrado correctamente en nuestro servidorpodemos llamar a algunos numeros de prueba que vienen por defecto en el plan de numeracin:1000 Men principal1234 Pasar llamada a la consola (veris en la consola la llamada)1235 Contestador automtico de la consola1236 LLamar a la consola3000 LLamar al usuario SIP 30003001 LLamar al usuario SIP 3001500 Llamar a Digium600 Prueba de eco8500 Menu del contestador99990 Test AGI99991 Test EAGI99992 Dice la hora99999 Suena msica de manera infinita700 Deja aparcada la llamada701-720 Llamadas aparcadasUna buena prueba en este momento es configurar 2 softphones en dos computadoras diferentes; uno con el usuario 3000 y otro con el usuario 3001 e intentar hacer una llamada entre ambos.Si funciona podemos pasar a aprender a configurar Asterisk y crear nuevos usuarios y planes de numeracin.Primeros pasos con AsteriskUna vez instalado Asterisk en Windows o Linux vamos con un ejemplo sencillo de las primeras cosas que podemos hacer. Este ejemplo consiste en crear dos nuevas extensiones con sus buzones de voz.1. Vamos a crear dos usuarios SIP nuevos.Por ejemplo los usuarios 20000 y 20100 con contraseas a20000b y b20100aPara ello vamos al archivo sip.conf y aadimos las siguientes lneas al final del archivo:[20000]type=friendsecret=a20000bqualify=yesnat=nohost=dynamiccanreinvite=nocontext=miprimerejemplomailbox=20000@miprimerbuzon[20100]type=friendsecret=b20100aqualify=yesnat=nohost=dynamiccanreinvite=nocontext=miprimerejemplomailbox=20100@miprimerbuzon2. Vamos a crear las extensiones para esos usuariosVamos a crear las extensiones para esos usuarios en elarchivo extensions.conf de manera que si marcamos el 20000 hablaremos con el usuario 20000 y si marcamos el 20100 hablaremos con el usuario 20100. Tambin creamos el numero del buzn de voz para consultar los mensajes para que sea el 30000.Aadimos las siguientes lneas al final delarchivo extensions.conf[miprimerejemplo]exten => 20000,1,Dial(SIP/20000,30,Ttm)exten => 20000,2,Hangupexten => 20000,102,Voicemail(20000)exten => 20000,103,Hangupexten => 20100,1,Dial(SIP/20100,30,Ttm)exten => 20100,2,Hangupexten => 20100,102,Voicemail(20100)exten => 20100,103,Hangupexten => 30000,1,VoicemailMain3. Vamos a crear las buzones de voz para esos usuariosVamos a crear lus buzones de voz de ambos usuarios y asignarles una contrasea en elarchivo voicemail.conf .Al buzn 20000 le vamos a dar la contrasea 1234 y al buzn 20100 la contrasea 4321[miprimerbuzon]20000 => 1234,Pedro,[email protected] => 4321,Juan,[email protected]. Reinicializamos el asterisk

5. Configuramos un softphoneConfiguramos uno o dos softphones y probamos a llamar entre ambos usuarios o a dejar mensajes en el contestador cuando no estn disponibles. Tambin podemos llamar al nmero 30000 para escuchar nuestros mensajes.Configuracin del archivo sip.confEl archivosip.confsirve para configurar todo lo relacionado con el protocolo SIP y aadir nuevos usuarios o conectar con proveedores SIP.

Aqu hayun ejemplo bsicodel archivo sip.conf:[general]context=defaultport=5060 ; Puerto UDP en el que responder el Asteriskbindaddr=0.0.0.0 ; Si queremos especificar que Asterisk est en una IP (si un equipo tiene 3 IPs por ej.) 0.0.0.0 vale para cualquierasrvlookup=yes ; Habilita servidor DNS SRV[pedro]type=friendsecret=welcomequalify=yes ;Tiempo de latencia no superior a 2000 ms.nat=no ; El telefono no usa NAThost=dynamic ; El dispositivo se registra con una IP variantecanreinvite=no ; Asterisk por defecto trata de redirigircontext=internal ; El contexto que controla todo estoEl archivo sip.conf comienza con una seccin[general]que contiene la configuracin por defecto de todos los usuarios y peers (proveedores). Se puede sobreescribir los valores por defecto en las configuraciones de cada usuario o peer.- En general los servidores SIP escuchan en elpuerto 5060 UDP.Por tanto configuramos port=5060 . En algunos casos, por ejemplo si utilizamos SER (Sip Express Router) con Asterisk debemos cambiar este puerto.- DNS es una forma de configurar una direccin lgica para que pueda ser resuelta. Esto permite que las llamadas sean enviadas a diferentes lugares sin necesidad de cambiar la direccin lgica. Usando el DNS SRV se ganan las ventajas del DNS mientras que deshabilitandolo no es posible enrutar llamadas en base a nombre de dominios. Conviene tenerlo activado, por tanto se pone la directiva srvlookup=yesCada extensin est definida por un user o usuario, un peer o proveedor o un friend o amigo y viene definida con un nombre entre corchetes [].- El tipo (type) userse usa para autenticar llamadas entrantes,peer para llamadas salientes y friend para ambas. En nuestro caso hemos definido una extensin pedro como friend. Puede realizar y recibir llamadas.-Secret es la contrasea usada para la autenticacin. En este caso ser welcome.- Se puede monitorizar la latencia entre el servidor Asterisk y el telefono con qualify=yes para determinar cuando el dispositivo puede ser alcanzado En este caso Asterisk considera por defecto que que un dispositivo est presente si su latencia es menor de 2000 ms (2 segundos). Se puede cambiar este valor poniendo el numero de milisegundos en vez de yes.- Si una extensin est detrs de un dispositivo que realiza NAT (Network Address Translation) como un router o firewall se puede configurar nat=yes para forzar a Asterisk a ignorar el campo informacin de contacto y usar la direccin desde la que vienen los paquetes.-Si ponemos host=dynamic quiere decir que el telefono se podr conectar desde cualquier direccin IP. Podemos limitar a que dicho usuario solo pueda acceder con una IP o con un nombre de dominio. Si ponemos host=static no hara falta que el usuario se registrar con la contrasea proporcionada en secret,- Tambin se ha puesto canreinvite=no. En SIP los invites se utilizan para establecer llamadas y redirigir el audio o video. Cualquier invite despus del invite inicial en la misma conversacin se considera un reinvite.Cuando dos usuarios han establecido la comunicacin con canreinvite= yes (por defecto) los paquetes RTP de audio podran ser enviados extremo a extremo sin pasar por el servidor Asterisk. Esto, normalmente, no suele ser conveniente en casos en los que haya NAT en alguno de los clientes. (NAT=yes).Usando canreinvite=no se fuerza a Asterisk a estar en medio no permitiendo que los puntos finales intercambien mensajes RTP directamente.De todos modos, existen numerosas condiciones en que Asterisk no permite el reinvite a pesar de que no pongamos esta condicin ya que necesita controlar el flujo RTP. Por ejemplo: Si los clientes usan codecs diferentes, si hay opciones de Music On hold o temporizadores en la llamada, etc Por ltimo context=internal indica el contexto donde est las instrucciones para dicha extensin. Esto est relacionado con el contexto del archivo extensions.conf que marca el plan de numeracin para ese contexto. Por tanto el contexto internal debe existir en el fichero extensions.conf o de lo contrario deberiamos crearlo. Varios extensiones pueden tener el mismo contexto.Opciones avanzadas:En las siguientes columnas tenemos las posibilidades de configuracin para los tipos user y peer. En el caso de friend valen las dos tablas ya que un friend es a la vez ambosUserPeerExplicacin y opciones

contextcontextIndica el contexto asociado en el dialplan para un usuario o peer

permitpermitPermitir una IP

denydenyNo permitir una IP

secretsecretContrasea para el registro

md5secretmd5secretContrasea encriptada con md5

dtmfmodedtmfmodeEl modo en el que se transmiten los tonos. Pueden ser RFC2833 o INFO

canreinvitecanreinviteCon no se fuerza a Asterisk a no permitir que los puntos finales intercambien mensajes RTP directamente.

natnatIndica si el dispositivo est detrs de un NAT con yes

callgroupcallgroupDefine un grupo de llamadas

pickupgrouppickupgroupDefine el grupo de llamadas validas para una aplicacion pickup()

languagelanguageDefine las seales para un pais. Debe estar presente en el archivo indications.conf

allowallowpermite habilitar un codec. Pueden ponerse varios en un mismo usuario Posibles Valores:allow=all ,allow=alaw, allow=ulaw, allow=g723.1 ; allow=g729 , allow=ilbc , allow=gsm.

disallowdisallowpermite deshabilitar un codec. Puede tomar los mismos valores que allow

insecureinsecureDefine como manejar las conexiones con peers Tiene los siguientes valores very|yes|no|invite|port Por defecto es no que quiere decir que hay que autenticarse siempre.

trustpidtrustpidSi la cabeceraRemote-Party-IDes de confianza. Por defecto no

progressinbandprogressinbandSi se deben generar seales en banda siempre. Por defectonever

promiscredirpromiscredirPermite soportar redirecciones 302. Por defecto no

calleridDefine el identificador cuando no hay ninguna otra informacion disponible

accountcodeLos usuarios pueden estar asociados con un accountcode . Se usa para facturacion.

amaflagsSe usa para guardar en los CDR y temas de facturacin . Puede ser default, omit, billing, o documentation

incominglimitLimite de llamadas simultaneas para un cliente

restrictcidSe usa para esconder el ID del llamante. Anticuada y en desuso

mailboxExtensin del contestador

usernameSi Asterisk actua como cliente SIP este es el nombre de usuario que presenta en el servidor SIP al que llama

fromdomainPone el campo From: de los mensajes SIP

regexten

fromuserPone el nombre de usuario en el from por encima de lo que diga el callerID

hostdireccin o host donde se encuentra el dispositivo remoto. Puede tomar valores: Una IP o un host concreto dynamic con lo que valdra cualquier IP pero necesita contrasea static vale cualquier IP pero no es necesario contrasea

mask

portPuerto UDP en el que responder el Asterisk

qualifyPara determinar cuando el dispositivo puede ser alcanzado

defaultipIP por defecto del clientehost=cuando es especificado como dynamic

rtptimeoutTermina la llamada cuando llega a ese timeout si no ha habido trfico rtp

rtpholdtimeoutTermina la llamada cuando llega a ese timeout si no ha habido trfico rtp on hold

Ejemplos:[grandstream1]type=friend ; es peer y user a la vezcontext=micontexto ; nombre del contextousername=grandstream1 ; suele ser el mismo que el titulo de la seccionfromuser=grandstream1 ; sobreescribe el calleridcallerid=Jose Doshost=192.168.0.23 ; se tiene una IP privada dentro de una LANnat=no ; no hay NATcanreinvite=yes ;dtmfmode=info ; puede ser RFC2833 o INFOmailbox=1234@default ; mailbox 1234 en el contexto default del fichero voicemail.confdisallow=all ; deshabilitamos todoallow=ulaw ; Permitimos el codec ulaw; listed with allow= does NOT matter!;allow=alaw;allow=g723.1 ; Asterisk solo soporta g723.1 a travs;allow=g729 ; Licencia g729 sl a travs[xlite1];Se puede activar la supresin de silencio;Xlite manda paquetes NAT keep-alive, por tanto qualify=yes no es necesariotype=friendusername=xlite1callerid=juan Perez host=dynamic ; el softphone xlite puede estar en cualquier IPnat=yes ; X-Lite est detrs de un dispositivo NATcanreinvite=no ; Se suele poner NO si est detrs de un dispositivo que hace NATdisallow=allallow=gsm ; GSM consume menos ancho de banda que alaw o ulawallow=ulawallow=alaw[user1_snomsip]type=friendsecret=blah ; en este caso es la contrasea para registrarsehost=dynamicdtmfmode=inband ; las posibilidades son inband (en banda), rfc2833, o infodefaultip=192.168.0.59 ; la IP del dispositivomailbox=1234; Contestador para mensajesdisallow=allallow=ulaw ; dado que se ha elegido en banda (inband) para el dtmf se debe seleccionar alaw o ulaw (G.711)allow=alaw[user2_pingtel]type=friendusername=user2_pingtelsecret=blahhost=dynamicqualify=1000 ; Se considera caido si pasa ms de 1 segundo sin contestarcallgroup=1,3-4 ; Es miembro de los grupos 1,3 y 4pickupgroup=1,3-4 ; Se puede hacer un pickup para los grupos 1,2 y 4defaultip=192.168.0.60 ;IPdisallow=allallow=ulawallow=alawallow=g729[user3_cisco]type=friendusername=user3_ciscosecret=blahnat=yes ; El telefono est nateadohost=dynamiccanreinvite=no ;qualify=200 ; Tiempo de 200 ms para recibir respuestadefaultip=192.168.0.4disallow=allallow=ulawallow=alawallow=g729[user4_cisco1]type=friendusername=user4_ciscofromuser=pedro ;secret=blahdefaultip=192.168.0.4 ;amaflags=default ; Las posibilidades son default, omit, billing o documentationaccountcode=pedro ; Para propsitos de tarificacindisallow=allallow=ulawallow=alawallow=g729allow=g723.1Configuracin del archivo extensions.conf (DialPlan)El archivo extensions.conf es el ms importante del Asterisk y tiene como misin principal definir el dialplan o plan de numeracin que seguir la centralita para cada contexto y por tanto para cada usuario.

El archivo extensions.conf se compone de secciones o contextos entre corchetes []Hay dos contextos especiales que estn siempre presentes que son [general] y [globals]Contexto [general]El contexto[general]configura unas pocas opciones generales como son:-static: Indica si se ha de hacer caso a un comando save dialplan desde la consola. Por defecto es yes. Funciona en conjunto con writeprotect- writeprotect: Si writeprotect=noystatic=yes se permite ejecutar un comando save dialplan desde la consola. El valor por defecto es no.- autofallthrough: Si est activado y una extensin se queda sin cosas que hacer termina la llamada con BUSY, CONGESTION o HANGUP Si no est activada se queda esperando otra extensin. Nunca debera suceder que una extensin se quede sin cosas que hacer como explicaremos posteriormente.- clearglobalvars: Si est activado se liberan las variables globales cuando se recargan las extensiones o se reinicia Asterisk.priorityjumping: Si tiene valor yes, la aplicacin soporta jumping o salto a diferentes prioridades. En desusoEn general estas opciones no son muy importantes y se pueden dejar tal y como aparecen por defecto.Contexto [globals]En este contexto se definen las variables globales que se van a poder utilizar en el resto de los contextos. Por ejemploCONSOLE=Console/dsp ;indica que cuando hagamos referencia a la variable CONSOLE estamos llamando a /Console/dspLas variables suelen ponerse siempre en mayusculas para diferenciarlas posteriormente.Resto de Contextos []Esto es lo ms importente de este fichero. Vamos a indicar ahora como crear un contexto especifico y asignar un plan de numeracin. Todas las lineas de un determinado contexto tienen el mismo formato:exten=>extension,prioridad,Comando(parametros)La extensin hace referencia al numero marcadoLa prioridad al orden en que se ejecutan las instrucciones. Primero se ejecuta la de prioridad 1, luego la 2 y sucesivamenteEl Comando hace referencia a la accin a ejecutarVamos a ir viendo unos ejemplos para ir aprendiendo los comandos

Ejemplo 1: Colgar la lineaexten => 333,1,Hangup ; indica que cuando alguien llame al 333 saltar la prioridad 1 y el sistema colgar la llamadaEjemplo 2 : Llamar a el usuario SIP 3000 y que salte el contestador si no contestaexten => 3000,1,Dial(SIP/3000,30,Ttm) ; intenta llamar al usuario 3000 de sip que tiene que estar definido en sip.conf con ese contextoexten => 3000,2,Hangup ; cuando acaba la llamada cuelgaexten => 3000,102,Voicemail(3000) ; La prioridad 102 significa que el usuario no estaba conectado y salta el contestador al buzon 3000exten => 3000,103,Hangup ; se cuelga despus de dejar el mensajeEn este caso al llamar a la extension 3000 usuamos el comandoDial (destino, tiempo de timeout, opciones)El destino es el usuario 3000 del archivo sip.conf, 30 segundos de timeout. El usuario 3000 deberia existir en sip.conflas opciones hacen referencia a opciones del comando dial:la T permite al usuario llamante transferir la llamada pulsando #la t permite al usuario llamado transferir la llamada pulsando #la m indica que vamos a oir una musica especial mientras esperamos a que el otro conteste: Podes probar a quitarla.Si el usuario 3000 no est conectado salta a la prioridad +101 (en nuestro caso a la 102=1+101 ya que estabamos en la prioridad 1) y hacemos que salte el contestador para dejar un mensaje.Es importante que por cada rama siempre se cierre el camino y se cuelgue la llamada con un HangupEjemplo 3 : Comprobacin de latencia y ecoexten => 600,1,Playback(demo-echotest) ; Se pone el sonido de que es una demo de ecoexten => 600,2,Echo ; Se ejecuta el test de ecoexten => 600,3,Playback(demo-echodone) ; Se repite lo que dijimosexten => 600,4,Hangup ; Se cuelgaEn este caso llamando al 600 nos va a repetir lo mismo que nosotros dijimos. Podremos comprobar la latencia del sistema.

Ejemplo 4 : Extensin startexten => s,1,Wait,1 ; Esperamos un segundoexten => s,2,Answer ; respondemos. EL Asterisk coge la llamadaexten => s,3,DigitTimeout,5 ; Ponemos Digit Timeout a 5 segundosexten => s,4,ResponseTimeout,10 ; Ponemos Response Timeout a 10 segundosexten => s,5,BackGround(demo-congrats) ; Ejecutamos un archivo de vozexten => s,6,hangup ; Colgamosexten => 1000,1,Goto(micontexto,s,1) ; Al llamar al 1000 vamos a la extensin s con prioridad 1 del contexto micontextoEn este caso presentamos la extensin start s que es la que coge las llamadas cuando se esta en ese contexto pero no se sabe la extensin. Tambin se puede entrar desde otra extensin como en este caso marcando la extensin 1000. Con Goto podemos ir al contexto, extensin y prioridad que queramos.Ejemplo 5 : LLamar a un proveedor de Voz IPexten => _340.,1,Dial(SIP/${EXTEN:3}@Proveedorsip,90,Tt)exten => _340.,2,hangup ; Colgamosexten => _20.,1,Dial(SIP/${EXTEN:2}@Proveedorsip,90,Tt)exten => _20.,2,hangup ; ColgamosEn este caso lo que hacemos es que siempre que marquemos el 340 seguido de cualquier numero (el 340 como perfijo) llamaremos a una extension SIP. Por ejemplo en el primer caso si marcamos al 340600600 llamaremos al 600600 a la direccin IP del proveedorsip definido en sip.conf. (EXTEN:3 significa que quitamos los tres primeros numeros)En el segundo caso si marcamos 2060600 tambin estaremos llamando al mismo numero 600600 del proveedorsip (EXTEN:2)En los casos anteriores el . sustituye a cualquier caracter pero podamos haber utilizado tambinX Acepta un numero de 0 al 9Z Acepta un numero de 1 al 9N Acepta un numero de 2 al 9[1,5-7] Acepta el 1, el 5, el 6 o el 7exten => _20XX,1,Dial(SIP/${EXTEN:2}@Proveedorsip,90,Tt) ; Deberiamos marcar 20 y dos numeros (no valen caracteres)exten => _20ZZ.,1,Dial(SIP/${EXTEN:2}@Proveedorsip,90,Tt) ; Deberiamos marcar 20, dos numeros del 1 al 9 y cualquier cosaexten => _20[1-3]..,1,Dial(SIP/${EXTEN:2}@Proveedorsip,90,Tt) ; Deberiamos marcar 20, un numero del 1 al 3 y cualquier cosaConfiguracin del archivo voicemail.conf (Contestador automatico)El archivo voicemail.conf sirve para configurar el contestador automatico y gestionar los buzones de los usuarios

El archivo extensions.conf se compone tambin de secciones o contextos entre corchetes []Hay dos contextos especiales llamados [general] y [zonemessages] que siempre estn presentes.Contexto [general]El contexto[general]configura las opciones generales del buzn de voz:Un ejemplo bsico podra ser:[general]; Enviar archivos en las notificaciones de e-mailattach=yes; Usar el formato wav para los mensajes de vozformat=wav; Limitar el tiempo mximo del mensaje de voz a 180 segundosmaxmessage=180; Limitar el tiempo minimo del mensaje a 3 segundosminmessage=3; Anunciar el numero que llam antes de repetir el mensajesaycid=yes; Limitar el numero de intentos de registro a 3maxlogins=3; Define los contextos internos para especificar que vienen de una extensin internacidinternalcontexts=house_local,house_toll,house_adminVamos a poner en forma de tabla las posibilidades ms destacadas a utilizar de este contexto:ComandoExplicacin y opciones

attachIndica si se enva un archivo en las notificaciones de email. Tiene dos valores yes o no Por defecto es no

deleteIndica que el mensaje de voz ser borrado del servidor si es enviado por e-mail

mailcmdSirve para fijar la ruta del servidor de e-mail

maxsilenceIndica los segundos de silencio que debe detectar el servidor para cortar la llamada al buzn. Por defecto es 0 que indica que equivale a un tiempo infinito y no hace caso a los silencios.

envelopeSi lo activamos con yes indicar el da y la hora en que se recibio el mensaje

externnotifySirve para ejecutar un programa externo cuando alguien deja un mensaje

externpassSirve para ejecutar un programa externo cuando alguien cambia su contrasea del buzn.

silencetresholdFunciona si maxsilence=yes y sirve para fijar el umbral de silencio

servermailIndica el origen de los mensajes de notificacin de e-mail. Por ejemplo [email protected]

maxmessageIndica el tiempo mximo de un mensaje

maxmsgIndica el numero mximo de mensajes en un buzn

minmessageSirve para eliminar los mensajes que tienen menos duracin que lo indicado por este comando.

formatIndica el formato en que se guardar los mensajes e voz. Hay las siguientes posibilidades: wav49, gsm, wav

maxgreetFija el tiempo mximo del mensaje de bienvenida que pueden configurar los usuarios

maxloginsNumero mximo de intentos de logeo

cdinternalcontextsDistingue si los contextos son contextos internos o externos

promiscredirPermite soportar redirecciones 302. Por defecto no

reviewPor defecto es no. Si lo pusieramos a yes el usuario que deja el mensaje podr revisarlo antes de salvarlo y dejarlo en el buzn.

operatorPermite marcar una extensin cuando ha saltado el buzn de voz

saycidSi lo ponemos a yes anunciar el numero que llam antes de repetir el mensaje

fromstringModifica el from del mensaje de aviso de correo

emailsubjectModifica el asunto del mensaje de aviso de correo

emailbodyModifica el cuerpo del mensaje de aviso de correo

nextaftercmdReproduce el siguiente mensaje automticamente cuando se borra el anterior.

Contexto [zonemessages]Este contexto define zonas horarias. La hora para distintos usuarios no es la misma y para poder informarle sobre la hora en que recibi el mensaje es necesario fijar diferentes zonas horarias:Un ejemplo podra ser[zonemessages]madrid=Europe/Paris|vm-received Q digits/at Rparis=Europe/Paris|vm-received Q digits/at Rsthlm=Europe/Stockholm|vm-recieved Q digits/at Reuropa=Europe/Berlin|vm-received Q digits/at kMitalia=Europe/Rome|vm-received Q digit/at HMPEl formato de las lneas es el siguiente:zona=Pais/Ciudad|Opciones> El Pais y la ciudad deben ser vlidos y son los del archivo /usr/share/zoneinfo de la instalacin de LinuxLas diferentes Opciones son:OptionDescription

ficheroNombre del fichero de audio a reproducir

${VAR}Variable de sustitucin

A, aDa de la semana (sbado, domingo, etc)

B,b,hMes (Enero, Febrero, )

d,eda del mes numrico (primero, segundo,)

YAo

I or iHora, en formato 12 horas

H ,kHora, en formato 24 horas

MMinutos

P,pAM o PM

Qhoy,ayer

Rtiempo 24 horas , incluidos minutos

Resto de Contextos []En el resto de contextos se definenlos buzones de los usuarios. Podemos tener todos los usuarios en un solo contexto por ejemplo [default] o tener ms de un contexto.El formato bsico es el siguiente:[default]extension => contrasea, nombre de usuario, email de usuario, email de notificacin,opcionesLa extensin hace referencia al numero de telefono llamado. La contrasea hacer referencia a la contrasea para ese usuario de su buzn de voz. El nombre de usuario es el nombre del cliente de la extensin El email del usuario es el correo al que sern enviados los mensajes El email de notificacion es un email alternativo donde pueden ser enviadas las notificaciones para administracin o control Las opciones sirven para sobreescribir las del contexto [general] o especificar una zona horaria pra el usuario.Hay 9 especificas:attach, serveremail, tz, saycid, review, operator, callback, dialoutandexitcontext.Son las mismas que las contexto [general] salvo tz.La opcintzse usa para sobreescribir la zona por defecto y debe estar presente en el contexto [zonemessages]Ejemplos:[default]1234 => 3456,Ejemplo1,[email protected] => 9855,Pedro Perez,[email protected],[email protected],attach=no|[email protected]|tz=madrid4069 =>6522,juan,[email protected],,attach=yes|saycid=yes|dialout=fromvm|callback=fromvm|review=yes|operator=yes|envelope=yes4073 => 1099,javier Perez,[email protected],,delete=1