Asterisk 11: Nueva version LTS

 

Finalmente, tras pasar un par de años desde el lanzamiento de la ultima version LTS de Asterisk (la version 1.8), acaba de salir (sin anunciarse) la version final de Asterisk 11.

En los proximos meses es probable que salga la version Asterisk Certified dentro de Asterisk 11, asi que de momento, no creo que sea buena idea actualizarse a esta version, especialmente como suele decirse en estos casos, dentro de los entornos de produccion.

Pero Asterisk 11 trae una serie de mejoras que merece la pena comentar:

  1. A partir de la version 10 de Asterisk, aunque ya existia, se pretendia estandarizar el uso de la nueva version para Conferencias ConfBridge ante un MeetMe ya obsoleto. Parece que ya la version 11 es un buen momento para empezar a utilizar esta aplicacion y dar de lado la antigua. Recordar que ConfBridge tiene como principal ventaja, que no necesita una fuente de sincronizacion, es decir, que no necesitamos DAHDI para hacerla funcionar.
  2. Resurge la compatibilidad con Google Talk y Jingle de la mano de un Channel Driver llamado chan_motif.
  3. Se ha mejorado al maximo la compatibilidad con Telefonos IP UNIStim antiguamente pertenecientes a Nortel (ahora Avaya). ¿Que ventaja parece ser que tienen estos telefonos? Que segun Digium pueden encontrarse a precios muy baratos (yo no los he visto, si conoceis alguno, comentadlo)
  4. Esto no es nuevo de la version 11 sino de la 10, pero AstDB ya no es de tipo Berkeley DB sino ahora es SQLite, no afecta a efectos practicos pero siempre es bueno saberlo
  5. Para los que utilizan el protocolo XMPP (Jabber para los amigos) en presencia, considerar que muere el Recurso res_jabber y ahora se llama res_xmpp, a efectos, al ser un recurso da igual porque encima es retrocompatible no hay que modificar nada para que todo siga funcionando tal como estaba antes, pero tambien es bueno saberlo
  6. Ahora es mas facil seguir las llamadas dentro de la CLI y los logs porque se ha añadido un parametro que es el ID de Llamada (que no el Caller ID). Con este ID de llamada, si hay varias llamadas entrantes simultaneamente, podremos seguir los pasos de cada llamada, aunque se solapen con otras. Muy practico en situaciones donde hay decenas o cientos de llamadas simultaneas.
  7. Parece que la compatibilidad con IPv6 sigue avanzando, y ahora lo soportan muchos mas modulos de Asterisk, como Asterisk Manager Interface (AMI) y Asterisk Gateway Interface (AGI).
  8. Tambien va a haber soporte para ICE dentro de la configuracion SIP. Esto creo que es fundamental considerando que las comunicaciones SIP siguen siendo el principal caballo de batalla de Asterisk.
  9. Ya supuestamente, hay compatibilidad con websockets desde Asterisk. Necesito probarlo para creerlo, porque definitivamente esto va a ser un paso adelante cuando WebRTC se estandarice en los navegadores por completo
  10. Como el proyecto OpenAIS fue abandonado definitivamente (sistema de Alta Disponibilidad y Clustering para servidores Linux), CoroSync ha tomado el relevo. Eso significa que el Recurso OpenAIS (res_ais) pasa a llamarse res_corosync. Esto es un sistema poco comentado a nivel de Alta Disponibilidad entre la comunidad Asterisk, pero creo que merece la pena ser profundizado un poco en un futuro.

Recordar un tema importante acerca del nuevo sistema de Versiones de Asterisk que ha sufrido grandes cambios en estos dos ultimos años. La politica de actualizaciones de Digium se basa en dos niveles:

  •  Primero se saca una version “Estandar”, que en cierto sentido, no suele ser recomendada para entornos de alta produccion. Podria considerarse una version “Beta” de la versión que vendra a continuacion. Hasta hace poco coincidian estas versiones con numeros Impares (Asterisk 1.5, Asterisk 1.7…) pero como Asterisk ha dado un salto para eliminar el 1 de la version, y pasar directamene al segundo digito, pues de ahora en adelante coincidira con las versiones pares (Asterisk 10, Asterisk 12, Asterisk 14…). Se ve que esta de moda que el software haga referencia a Versiones con un numero Alto (vease Chrome y Ubuntu, seguido de Firefox que ha hecho como 5 versiones en 2 años de un golpe).
  •  A partir de cada Version Estandar, se va forjando una Version LTS, que a partir de ahora ira en numeros impares (Asterisk 11, Asterisk 13…) cuando antiguamente eran las versiones pares (Asterisk 1.4, Asterisk 1.6, Asterisk 1.8). Desde Asterisk 1.8 se anuncio que dentro de una subversion bastante estable del sistema, saldra un “Branch” que no mejorara en funcionalidad, sino exclusivamente en estabilidad y segurida. A esta version se le llamara Asterisk Certified.

Yo desde aqui, recomiendo que para entornos de produccion os quedeis con una version Asterisk Certified siempre. Es donde Digium va a poner mayor enfoque especialmente a nivel de estabilidad, y ademas para aquellos clientes que tengan contratos con acuerdos de nivel de servicio (SLA) va a tener la ventaja que esta version va a ser la soportada por los mismos (exclusivamente en las relaciones con Digium), con lo cual muy probablemente la mayor parte de los redistribuidores de Asterisk tambien se acojan a este sistema de implementacion.

Finalmente comentar que tengo un par de articulos en borrador, muy interesantes pendientes de publicar, pero en estos ultimos meses a raiz de lanzar WIKIAsterisk me he encontrado bastante ocupado y no he tenido tiempo a dedicar a la parte “online” de Asterisk todo el tiempo que me hubiera gustado.

Test para ver el nivel en Asterisk y Digium Certified Asterisk Administrator

Después del curso, y segun nos habian comentado durante el mismo, en la actualidad existen dos tipos de titulaciones en Asterisk.

Digium Certified Asterisk Professional (dCAP), que es la mas popular y el que realmente te da acceso a un mundo laboral que tenga relacion con Asterisk. Pero por otro lado existe otro, aun no demasiado reconocido, con validez 4 años, llamado Digium Certified Asterisk Administrator (dCAA)

El examen consta de 60 preguntas, y un tiempo total para su realizacion de 11 minutos y 20 segundos (10 segundos por pregunta aproximadamente). No restan los fallos, pero hay que aprobar con un 80% de preguntas correctas, y es un formulario de tipo selección unica. No se cuantos intentos te dan, ni si se puede hacer en mas tiempo, porque eventualmente, lo aprobe a la primera y en el tiempo acordado. Para mi criterio, creo que es una prueba de nivel mas para el dCAP, tanto para probar los conocimientos obtenidos a traves de un curso Asterisk Fast Start (como el que vimos el año pasado), por lo que realmente tras un Asterisk Advanced, el aprobado deberia ser asegurado.

Otra cosa curiosa es que al aprobar te da un certificado como este, con validez de 4 años:

DCAA

Como creo que realmente el examen es una prueba de nivel, tras terminarlo trate de revisar mis respuestas señaladas (lo que es cierto que en solo poco mas de 11 minutos hay que intentar responder bastante rapido y a veces casi aleatoriamente, una vez marcada la respuesta y pulsado “siguiente”, ya no hay marcha atras para corregir, y al suspender no tengo muy claro si permiten volver a realizar el examen ipso-facto). Y aprovechando esto, decidi traducirlo y responderlo a modo de primer entrenamiento cara al proximo dCAP:

  1. ¿Qué hace el comando “make config” durante la instalación de Asterisk?
    a) Instala scripts que harán que Asterisk se arranque al inicio en las distribuciones soportadas por Asterisk
    b) Inicia una sesión interactiva para que el administrador pueda configurar detalles sobre  los usuarios PBX
    c) Instala ficheros de configuración en /etc/Asterisk
    d) Nada, make config no es un comando valido en este contexto
  2. ¿Porque DTMF utiliza dos tonos?
    a)      Para mejorar el reconocimiento sobre un solo tono
    b)      Ninguna razón en particular, es solo una decisión de estilo
    c)       Para conseguir un audio superior
    d)      No lo hace, se utiliza un solo tono
  3. En el contexto de Asterisk, ¿que significa CDR?
    a)      Customer Data Resource
    b)      Call Detail Record
    c)       Channel Data Review
    d)      Channel Driver Resource
  4. ¿Para cuál de los siguientes casos, Asterisk no utiliza SDP?
    a)      Renegociar el códec de audio utilizado en la llamada SIP mientras se encuentra activa
    b)      Configurar parámetros iniciales de los medios en una llamada SIP
    c)       Poner una llamada SIP en espera
    d)      Colgar una llamada SIP
  5. ¿Qué comando de CLI puede usarse para ver la configuración actual del Dialplan de Asterisk?
    a)      module show extensións.conf
    b)      core print Dialplan
    c)       module show pbx_config
    d)      dialplan show
  6. ¿Cuál de los siguientes no es un driver de canal en Asterisk?
    a)      CDR
    b)      SIP
    c)       Local
    d)      IAX
  7. ¿Qué fichero es utilizado para configurar los drivers del kernel para dispositivos DAHDI?
    a)      /etc/dahdi/dahdi.config
    b)      /etc/dahdi/system.conf
    c)       /etc/dahdi/chan_dahdi.conf
    d)      /etc/dahdi.conf
  8. ¿Con que protocolo VOIP es utilizado RTP?
    a)      IAX2
    b)      DAHDI
    c)       SIP
    d)      Zaptel
  9. ¿Qué ocurre cuando mandamos el comando a Asterisk “restart gracefully”?
    a)      Asterisk deja de recibir llamadas, y reinicia cuando las llamadas activas llegan a 0
    b)      Asterisk continua recibiendo llamadas, y reinicia cuando las llamadas activas llegan a 0
    c)       Nada. Esto no es un comando valido de Asterisk
    d)      Asterisk reinicia inmediatamente
  10. ¿Cuál es la localización por defecto de la música en espera de Asterisk?
    a)      /var/lib/asterisk/moh
    b)      /var/lib/Asterisk/holdmusic
    c)       /var/log/Asterisk/musiconhold
    d)      /etc/asterisk/musiconhold
  11. ¿Cuál de las siguientes afirmaciones es mas cierta con respecto al registro de un dispositivo en el contexto VOIP?
    a)      El registro permite a Asterisk saber dónde deben ir las llamadas destinadas al dispositivo
    b)      El registro es necesario para que el teléfono pueda chequear el Buzon de Voz
    c)       El registro es principalmente utilizado para asociar a una persona con un dispositivo
    d)      El registro es requerido para que solo los usuarios autentificados puedan hacer llamadas
  12. ¿Cuál es la diferencia entre las aplicaciones VoiceMail y VoiceMailMain en Asterisk?
    a)      VoiceMailMain se utiliza para grabar una mensaje de alguien, y VoiceMail se utiliza para que una persona escuche los mensajes recibidos
    b)      VoiceMail se utiliza para grabar una mensaje de alguien, y VoiceMailMain se utiliza para que una persona escuche los mensajes recibidos
    c)       VoiceMail es utilizado cuando los mensajes son guardados en una base de datos o en una almacen IMAP, VoiceMailMain es utilizando cuando los mensajes han sido guardados en el disco duro
    d)      Nada de lo anterior, las dos aplicaciones son intercambiables
  13. ¿Cuál es el ancho de banda requerido para una llamada bidireccional con G.711?
    a)      ~160Kbps
    b)      ~80Kbps
    c)       ~64Kbps
    d)      ~8Kbps
  14. ¿Cuál de los siguientes, no es una cadena de llamada valida en Asterisk?
    a)      Dial(SIP/100,30)
    b)      Dial(30,SIP/100)
    c)       Dial(SIP/100)
    d)      Dial(SIP/100&SIP/200)
  15. Sobre configuraciones de red ¿Qué es la latencia?
    a)      El retraso desde que un paquete es enviado  hasta que es retrasmitido
    b)      El retraso desde que un paquete es trasmitido hasta que es recibido
    c)       El retraso causado por la transcodificacion de audio?
    d)      El retraso entre la marcación y el timbre
  16. ¿Qué configuración prevendrá Asterisk de negociar entre dos canales SIP de enviarse RTP directamente entre ambos?
    a)      canreinvite = no
    b)      trunk = no
    c)       canreinvite = yes
    d)      canreinivite = never
  17. ¿Para que sirve el comando ‘!’ en la línea de comandos de Asterisk?
    a)      Para nada. El comando ‘!’ no es un comando valido en el CLI de Asterisk
    b)      Rejecuta el comando anterior de nuevo
    c)       Ejecuta un comando Shell de Linux
    d)      Confirma que deseas ejecutar el comando especificado
  18. ¿Cuál de las siguientes estrategias NO puede utilizarse en Asterisk con colas?
    a)      Llamar al agente disponible que haya recibido más llamadas
    b)      Llamar a todos los agentes a la vez
    c)       Llamar a un agente aleatorio
    d)      Llamar al agente disponible que haya recibido menos llamadas
  19. ¿Qué es un ‘call file’ en Asterisk?
    a)      Un fichero de comandos que inicia una llamada saliente
    b)      Un fichero temporal que se crea en /dev/ para un canal activo en Asterisk
    c)       Un fichero con registros CDR para facturación
    d)      Un fichero generado por cada buzon de voz para almacenar información como CallerID, hora, etc
  20. ¿Cuál de las siguientes aplicaciones NO esta por defecto en un Dialplan de Asterisk
    a)      Hold()
    b)      Dial()
    c)       Hangup()
    d)      Playback()
  21. ¿Cuál de los siguientes codecs puede ser utilizado por Asterisk para grabar un mensaje del buzon de voz en Asterisk?
    a)      OGG
    b)      MP3
    c)       GSM
    d)      G.729
  22. ¿Cuál de las siguientes líneas en el extensions.conf NO tiene un error de sintaxis?
    a)      exten => 1,n,Dial,SIP/6000
    b)      exten => 1,n,(dial),Dial(SIP/6000)
    c)       exten => 1,n(dial,Dial(SIP/6000)
    d)      exten => 1,n(dial),Dial(SIP/6000)
  23. ¿Cuál de los siguientes puerto(s) debe ser redirigido en un firewall para permitir que el trafico RTP pueda alcanzar Asterisk?
    a)      5060
    b)      8000-10000
    c)       12000-20000
    d)      Aquellos puertos especificados en el archivo de configuración de Asterisk rtp.conf
  24. ¿Cuál de las siguientes extensiones especiales NO está reconocida por Asterisk?
    a)      fax
    b)      i
    c)       T
    d)      r
  25. ¿Cuál es la ubicación por defecto para los archivos de sonido de Asteirsk?
    a)      /var/log/asterisk/sounds
    b)      /etc/asterisk
    c)       /var/lib/asterisk/sounds/
    d)      /usr/lib/Asterisk/sounds/
  26. ¿Cuál de los siguientes, incluirá el contexto [local] en otro contexto?
    a)      #include => local
    b)      Switch => local
    c)       context => local
    d)      include => local
  27. ¿Cuál de los siguientes es el mensaje inicial enviado por un PRI cuando se realiza una llamada saliente?
    a)      CONNECT
    b)      SETUP
    c)       DIAL
    d)      INVITE
  28. ¿Cuál es el máximo numero de participantes posibles en una sala de conferencias de Meetme de Asterisk?
    a)      30
    b)      1000
    c)       240
    d)      No hay limite
  29. ¿Cuál de los siguientes comandos creara una conexión CLI a una instancia de Asterisk corriendo en el transfondo?
    a)      asterisk
    b)      asterisk –x
    c)       asterisk –r
    d)      Asterisk –vvvvvgc
  30. ¿Cuál de los siguientes representa la forma correcta de dereferenciar una variable en Asterisk?
    a)      {$VARIABLE}
    b)      $__VARIABLE
    c)       $[VARIABLE]
    d)      ${VARIABLE}
  31. ¿Qué hara la siguiente línea del DialPlan?
    exten => 1000,1,GotoIf($[${EXTEN}>1000]?hangup:continue)
    a)      Continua hacia la prioridad continue porque la expresión es falsa
    b)      Nada, es una línea invalida de Dialplan
    c)       Continua con la prioridad hangup porque la expresión es cierta
    d)      Cuelga la llamada, porque la expresión es cierta y el comando cuando es verdadero es el cuelgue
  32. ¿Cuál de los siguientes NO es un códec de audio?
    a)      G.711
    b)      H.323
    c)       G.729
    d)      GSM
  33. ¿Cuál de los siguientes modelos describe exactamente la sintaxis exacta de un Dialplan?
    a)      exten => contexto,extensión,prioridad
    b)      exten => extension, prioridad, aplicacion
    c)       extension => prioridad, etiqueta, aplicación
    d)      exten => extension, prioridad, etiqueta, aplicación
  34. ¿Cuál de los siguientes no es una variable de canal automáticamente ajustada por Asterisk?
    a)      CONTEXT
    b)      UNIQUEID
    c)       CHANNEL_NAME
    d)      TIMESTAMP
  35. ¿Qué puerto(s) pueden ser redirigidos en un firewall para permitir que el trafico SIP llegue a Asterisk?
    a)      1000-2000
    b)      443
    c)       5060
    d)      22
  36. ¿Qué método de señalización debe utilizar un dispositivo FXS?
    a)      Session Initiation Protocol
    b)      ISDN
    c)       Foreign eXchange Office
    d)      Foreign eXchange Subscriber
  37. ¿Qué es DUNDi?
    a)      Un registro global de ITSPs
    b)      Un módulo de driver de canal en Asterisk
    c)       Una herramienta para simplificar el enrutamiento de multiples sitios
    d)      Una marca de PBX de Australia
  38. ¿Cómo se utiliza SDP en Asterisk?
    a)      SDP no se utiliza en Asterisk
    b)      Para transportar los medios  en una llamada SIP
    c)       Para inivitar a un individuo a una llamada SIP
    d)      Para negociar/describir los medios en una llamada SIP
  39. Por defecto, ¿dónde se almacenan los ficheros de log en Asterisk?
    a)      /etc/asterisk/logs
    b)      /var/lib/Asterisk/logs
    c)       /usr/log/asterisk
    d)      /var/log/Asterisk
  40. ¿Qué fichero de configuración de Asterisk especifica los puertos utilizados por los medios en una llamada SIP?
    a)      ports.conf
    b)      rtp.conf
    c)       sip.conf
    d)      media.conf
  41. ¿Qué hara la siguiente línea de dialplan?
    exten => s,1,Set(COUNT=$[${COUNT}+1])
    a)      Nada, es una línea invalida para el Dialplan
    b)      Almacenar la cadena “$[${COUNT}+1]” en una variable llamada COUNT
    c)       Poner el valor de COUNT  a 1, porque la expresión se evalua como verdadera
    d)      Limpiar el valor de la variable COUNT  a su valor anterior mas 1
  42. ¿Cuál de las siguientes aplicaciones del Dialplan hara que Asteirsk NO “escuche” una entrada DTMF?
    a)      Read()
    b)      Wait()
    c)       Background()
    d)      WaitExten()
  43. ¿En que fichero de configuración se manejan los huecos de parking de llamadas?
    a)      callparking.conf
    b)      extensions.conf
    c)       parkinglots.conf
    d)      features.conf
  44. ¿Cómo se utiliza la aplicación Record en Asterisk?
    a)      Para monitorizar otro canal en tiempo real
    b)      Para imprimir contenidos de un registro de base de datos en el CLI de Asterisk
    c)       Para crear un fichero de sonido en el disco con el audio recibido de un canal activo
    d)      Para reproducir los contenidos de un registro de base de datos en un canal de Asterisk utilizando un convertidor de texto a voz.
  45. ¿Cuál de los siguientes no es un soporte de CDR valido por defecto en Asterisk?
    a)      Hoja de cálculo de Excel
    b)      Archivos .csv
    c)       Servidor RADIUS
    d)      Base de datos Relacional
  46. ¿Qué opción de configuración del sip.conf debe realizarse para permitir que un dispositivo se registre contra Asterisk?
    a)      host = dynamic
    b)      host = unknown
    c)       address = any
    d)      ipaddress = dynamic
  47. ¿Bajo qué licencia de software libre está disponible Asterisk?
    a)      LGPL
    b)      BSD
    c)       GPLv2
    d)      GPLv3
  48. ¿En cuál de los órdenes siguientes, los códecs consumen de menos ancho de banda a mayor ancho de banda?
    a)      GSM, G.711, G.729
    b)      G729, G.711, GSM
    c)       G.711, GSM, G.729
    d)      G.729, GSM, G.711
  49. ¿Cuál de los siguientes NO es una forma para generar una llamada de otra forma que no sea un teléfono?
    a)      A través del Asterisk Manager Interface
    b)      A través de un fichero creado específicamente y copiado en /var/spool/asterisk/outgoing
    c)       A través de Asterisk Realtime Architecture
    d)      A través de un comando de CLI “console dial”
  50. En un sistema típico Linux, ¿Cuál de los siguientes comandos NO se utiliza para saber la carga media del sistema?
    a)      Utilizando la herramienta “load”
    b)      Viendo los contenidos de /proc/loadavg
    c)       Utilizando la herramienta “top”
    d)      Utilizando la herramienta “uptime”
  51. ¿Cuál de los siguientes, NO es un método de almacenaje valido para un buzón de voz en un sistema Asterisk sin modificar?
    a)      En la RAM
    b)      Via IMAP
    c)       Via ODBC
    d)      En el sistema de archivos
  52. ¿Sobre qué usuario debería funcionar Asterisk?
    a)      root
    b)      asterisk
    c)       nadie
    d)      Asterisk debería ser lanzado desde cualquier usuario
  53. En Asterisk, ¿Cuál es la diferencia entre formato y códec?
    a)      El formato describe el protocolo usado, y el códec describe los medios usados
    b)      El formato traduce los medios guardados en disco, y el códec traduce los medios a ser trasmitidos en el canal
    c)       El formato describe los medios entrantes y el códec  describe los medios salientes
    d)      El formato describe los medios de video, y el códec describe los medios de audio
  54. ¿Qué archivo de configuración controla los “paths” del sistema que Asterisk utiliza para guardar los modulos, CDR, y logs?
    a)      files.conf
    b)      directory.conf
    c)       asterisk.conf
    d)      logger.conf
  55. ¿Cuál de los siguientes NO es una aplicación de Asterisk comúnmente usada para propósitos de Debug?
    a)      Jitter
    b)      Echo
    c)       Milliwatt
    d)      NoOp
  56. ¿Cuál de los siguientes NO es cierto acerca de Asterisk y DAHDI?
    a)      Asterisk y DAHDI están disponibles bajo licencias Open Source
    b)      Asterisk y DAHDI trabajan juntos para ofrecer interfaces físicas a un sistema PBX
    c)       Asterisk y DAHDI están patrocinados y mantenidos por Digium
    d)      Asterisk y DAHDI solo son compatibles cuando los mismos números de versión son utilizados para ambos
  57. ¿Cuál de los siguientes NO es un fichero de configuración estándar para Asterisk?
    a)      pri.conf
    b)      chan_dahdi.conf
    c)       sip.conf
    d)      iax.conf
  58. ¿Qué es el “jitter”?
    a)      La latencia entre dos puntos VOIP
    b)      Cambios en el volumen/ganancia provocados por la transcodificación
    c)       Variaciones en la latencia entre dos puntos VOIP
    d)      El eco en los enlaces VOIP
  59. ¿Cuál de los siguientes es la sintaxis correcta para configurar un canal SIP que solo permita el códec GSM?
    a)      disallow = all, allow = all
    b)      deny=ulaw,alaw,g729,g723
    c)       allow =gsm
    d)      permit = gsm, deny = all
  60. ¿Cuál es la diferencia entre las salidas de “verbose” y “debug” en el Asterisk CLI?
    a)      La salida Verbose es acerca de los canales, y la salida Debug es acerca de otras partes de Asterisk
    b)      La salida Verbose, suelen ser mensajes de estado útiles para administradores mientras que la salida Debug suelen ser mensajes útiles para desarrolladores
    c)       No existe diferencia. Ambos tipos de salida de consola son lo mismo.
    d)      La salida Debug, suelen ser mensajes de estado útiles para administradores mientras que la salida Verbose suelen ser mensajes útiles para desarrolladores

A continuación, las soluciones que yo creo que son las correctas. Me gustaría que alguien experimentado las revisase tambien, y comentase cuales cree que pueden estar mal, o de las que tengo dudas, que opina al respecto:

Solución 1: a)
Solución 2: a)
Solución 3: b)
Solución 4: d)
Solución 5: d)
Solución 6: a)
Solución 7: b)
Solución 8: c)
Solución 9: a)
Solución 10: a)
Solución 11: a)
Solución 12: b)
Solución 13: c)
Solución 14: b)
Solución 15: b)
Solución 16: a)
Solución 17: c)
Solución 18: a)
Solución 19: a)
Solución 20: a)
Solución 21: c)
Solución 22: d)
Solución 23: d)
Solución 24: d)
Solución 25: c)
Solución 26: d)
Solución 27: b)
Solución 28: b)
Solución 29: c)
Solución 30: d)
Solución 31: a)
Solución 32: b)
Solución: 33: b)
Solución 34: c)
Solución 35: c)
Solución 36: c)
Solución 37: c)
Solucion 38: d)
Solución 39: d)
Solución 40: b)
Solución 41: d)
Solución 42: b)
Solución 43: d)
Solución 44: c)
Solución 45: a)
Solución 46: a)
Solución 47: c)
Solución 48: d)
Solución 49: c)
Solución 50: a)
Solución 51: a)
Solución 52: b)
Solución 53: b)
Solución 54: c)
Solución 55: a)
Solución 56: d)
Solución 57: a)
Solución 58: c)
Solución 59: c)
Solución: 60: b)

Advanced Asterisk. Days 4 y 5

Ya entrando en la recta final, continuamos con el tema de ayer de conexiones de tarjeteria y PSTN.

Primero van los conceptos teoricos sobre los tipos de sistemas digitales de telefonia Americanos (T1), Europeos (E1), las señalizaciones, los canales, servicios implementados como RDSI (ISDN), codificacion de las señales… realmente son temas que para un caso en concreto de uso hay que tenerlos claros.

Un ejemplo practico seria la interconexion duplex entre una centralita Asterisk y una Alcatel con tarjeteria en ambos lados. Para la comunicación de mensajes a nivel de servicios digitales, se implementa un protocolo de señalización llamado Q.931, pero mas concretamente de un protocolo variante especifico para esta funcionalidad de interconexión de centralitas, llamado Q.SIG.

Ahora vamos a la parte practica de configuracion, hay que considerar que existen dos tipos de configuraciones, la especifica para Estados Unidos y otra para Europa, en este caso voy a intentar de ir planteando las dos, porque cara a Digium la que se utiliza es la EEUU, pero para nuestros casos practicos seguramente sea la Europea.

Configuracion del /etc/dahdi/system.conf

Primero tenemos que configurar cada uno de los puertos

span = <numero_del_puerto>,<fuente_de_sincronizacion>,<line_built_out>,

Ejemplo americano:

span = 1,1,0,esf,b8zs

Ejemplo europeo:

span = 1,1,0,ccs,hdb3,crc4
– El 1 primero, es el numero del canal

– El 1 es para ser receptor de la fuente, y el 0 para ser el emisor
– El siguiente 0, es para no amplificar la señal si los cables son normales, o 1 si son demasiado largos (el cable que nos llega del operador esta en una ubicación muy apartada de donde esta nuestro equipo)
– ESF/CCS, las señalizaciones, americana y europea respectivamente
– B8ZS, y HDB3 son las codificaciones
– Finalmente CRC4, el sistema de control de errores

Luego se configuran, los bchan (canales de datos) y el dchan (canal de señalizacion)

bchan = 1-23
dchan = 24

– En modo americano

bchan = 1-15,17-31

dchan = 16

– En modo europeo

Y luego el loadzone = es/us y defaultzone=es/us es especialmente importante cuando se tratan de tarjetas digitales.

En el fichero /etc/dahdi/modules, hay que levantar el modulo especifico de la tarjeta de T1/E1 llamado wcte12x (primario con 1 puerto T1/E1 o wct4xxp (2 o 4 puertos T1/E1), y si hablamos de puertos BRI seria el modulo wcb4xxp

Finalmente se configura el chan_dahdi.conf muy parecido a las tarjetas analogicas Podemos empezar a amplicar elsistema de “contextos” para este fichero de configuracion.

[channels]

[Primarios]
callerid=asreceived
contexto=llamadas_entrantes
signaling= //Aqui va la configuracion especifica de los primarios, hay opciones como pri_cpe (si recibimos de un operador) o pri_net (si somos los emisores de la señal)
switchtype = //Otro especifico, teoricamente existen multiples tipos de primarios, la red National, la red de AT&T en estados unidos, o la unificada de Europa EuroISDN, los valores posibles, “national”, “euroisdn”, etc. Y en el caso que estemos interconectando dos centralitas, por ejemplo a la Alcatel que hablabamos antes, pues aquí se pone “qsig”
dahdichan=1-23 //los canales de datos que antes configuramos en el system.conf, caso Americano
dahdichan=1-15,17-31 //los canales caso Europeo
group = 1 //esto es practico para no tener que estar definiendo un canal en el extensions.conf para cada canal, se utiliza un “generico” que se aplica al “grupo de canales”, y se define como gX (siendo X el numero del grupo). Para este ejemplo una opcion seria: DAHDI/g1

Ademas un tema importante de los grupos es que se pueden configurar los mecanismos de selección de canal dentro del grupo. Se pueden aplicar distintas tecnicas de selección, como la secuencial empezando por el canal primero, por el final, metodo round-robin, etc. Esto se configura, al configurar el tipo de grupo en el extensions.conf. Antes puse DAHDI/g1, pero podria ser G1, r1 y R1 (la r es el metodo Round Robin)

Una gran diferencia con respecto a las lineas analogicas, es que las llamadas no entran a la extension start del dialplan, sino entran al telefono (DID) al que es llamado por tanto en el dialplan la extension “entrante” se define con el numero del DID

Ejemplos:

exten => 919191919,1,Dial(SIP/mitelefono)

exten => 929292929,1,Dial(SIP/tutelefono)

Pero esto ya lo vimos cuando trabajabamos con el Gateway de puertos BRI, Epygi, que tenia un mecanismo muy similar aunque se configurara externamente.

– Fax en Asterisk

A raiz de la version 1.8 mejoro bastante el soporte “nativo” para FAX con respecto a las versiones anteriores, tanto a nivel Passthrough por el protocolo T.38, como utilizando la maquina Asterisk como gestora de FAX. Pero realmente para esto segundo, el soporte de FAX por Asterisk es limitado o de pago si queremos utilizarlo en produccion. Aquí hay una explicacion detallada del tema

En nuestro caso ya explicamos como tener un sistema completo y libre utilizando Hylafax con el IAXModem bastante efectivo. A raiz del mensaje de Enesoluciones (ahora Fundacion Guadalux) pense que el sistema nuevo de Asterisk sustituiria el Hylafax brutalmente, pero parece que no va a ser asi de momento,por el tema este de las licencias de pago que hablaba (aunque al parecer Digium ofrece una unica licencia gratuita para solo 1 llamada concurrente, que seguramente en muchas instalaciones para PYMES sea suficiente).

– Asterisk Database (AstDB)

Asterisk implementa un sistema de bases de datos muy sencillo para almacenar informacion relativamente poco compleja. Es mas comodo que tener que andar trabajando con conectores ODBC y demas historias siempre y cuando busquemos aplicaciones concretas donde haga falta almacenar valores y acceder a ellos facilmente, pero especificamente del propio sistema de configuracion de Asterisk (ejemplo las Listas Negras de llamantes, familia blacklist)

Las funciones de lectura y escritura son extremadamente sencillas (totalmente integradas en el sistema Asterisk). Basicamente son usos de la aplicación Set y manejo de variables pero con la funcion DB() cubriendo esta nueva “variable”.

La variable esta compuesta por familia/clave/valor por ejemplo users/mitelefono/SIP/mitelefono

En este caso la clave mitelefono dentro de la familia, users, tendra el valor SIP/mitelefono (que por ejemplo es el canal SIP que utiliza nuestro telefono SIP).

Ejemplos:

Asignar a un registro de la base de datos: Set(DB(users/mitelefono)=’SIP/mitelefono’)

Consultar el registro: ${DB(users/mitelefono)}

Con todo esto parece que podemos “recortar” en variables globales dentro de los ficheros de configuracion basicamente. A lo mejor seria interesante montar algo serio que utilice esto a mayor escala como lo que comentaba esto de los Blacklist, aunque realmente tampoco tendra mucho misterio, algunas lineas. Me lo apunto como futura practica.

– Ultimo dia. 5: Seguridad en Asterisk

Para finalizar, y dar cierre al Asteirsk Advanced, el ultimo dia se trataron multiples temas relacionados con la seguridad en Asterisk

Sobre este tema tengo que hacer un comentario: justamente, ahora que estoy bastante desconectado del mundo “tecnologico” a nivel profesional, no tengo tanto acceso como antes a tarjeterias, equipos de trabajo y demas historias que me hacian el mundo facil en el progreso Asterisk.  Pero concretamente acerca de la seguridad en Asterisk, supuestamente el sistema mas “peligroso” en el que montar un Asterisk es abierto a Internet. Por ello en las proximas entradas, voy a estar focalizando en esta idea, ya que mi forma de “progresar” de ahora en adelante va a ser montando una maquina Asterisk en Casa y ofreciendo servicios concretos a individuales, a mi empresa (de forma altruista) y a otras empresa que quiza pudieran interesarme por el potencial (¿patrocinio o algo asi?) que pudieran ofrecerme (especialmente por los recursos economicos que pudieran aportar al tema).

El tema de seguridad en Asterisk tomaba dos perspectivas: el tipo de securizacion que habia que tomar en consideracion por niveles de “inseguridad” (desde el montaje de una maquina aislada de la red, hasta el montaje de una maquina publicado a internet), y por otro lado, todos la securizacion de todos los componentes del sistema (desde los accesos a la propia maquina hardware, pasando por el sistema operativo, hasta el mismo dialplan).

– Conclusiones y Consideraciones Finales sobre el Curso

Como comentaba el segundo dia debo determinar y concluir que el curso ha satisfecho mis expectativas, ya que realmente el interes de hacer un curso de este calibre, no ha suele ser tanto, la cantidad de informacion recibida, sino la posibilidad de “expandir” conceptos acerca de la especialidad en concreto que viene a tratarse, a traves de los profesores y los compañeros. Hay que considerar que el precio realmente no cubre solo las horas de enseñanza, sino tambien las horas de “relacion”. Es cierto que para “conectar” con otros individuales especialistas o no especialistas en un sector, no es realmente necesario hacer un curso, y que para el aprendizaje por ese precio se podrian llegar a conseguir incluso, horas de enseñanza particulares por internet pactando con algun profesional un precio por hora (algun dCAP) sin excesiva dificultad. Pero mas alla de estas dos posibilidades, y la primera en particular, tambien hay que considerar que el perfil de alumno que va a un curso de este tipo, no suele ser de “Lurker” ya que al costar (bastante) dinero, suelen ser o aportes profesionales (empresas que quieren formar a sus trabajadores especialistas), o aportes personales (autonomos o como yo esta vez, especialmente interesados en el sector).

Proxima parada: Examen dCAP. No se donde sera, pero desde hoy ya toca empezar a practicar y estudiar como el que mas. Segun parece, por los alumnos que se presentaron, el nivel del examen practico ha aumentado a practicamente al doble de dificultad que las ultimas convocatorias, y sobre el teorico no pude enterarme, ya que tuvimos que irnos a comer porque el examen se alargaba demasiado.

Asterisk Advanced. Day 2

Pasado el primer dia “introductorio” se empiezan a ver conceptos y aplicaciones mas interesantes para nuestro sistema Asterisk. Una de las conclusiones que he sacado en favor del curso, algo que personalmente me suele costar bastante sacar de la mayoria de los cursos que he ido, es que la verdadera utilidad del curso no reside en el material que puedes encontrar en cualquier pagina medianamente buena que trate sobre asterisk como www.voip-info.org, sino realmente en la cantidad de aplicaciones practicas que surgen a raiz de la experiencia del profesor, y tambien de los compañeros del curso.

Realmente Asterisk, exceptuando la idea basica de una centralita, o del concepto generico de “quiero montar un callcenter” o “quiero montar una centralita para mi empresa”, sin ideas practicas de calidad, es totalmente inutil. Pero es cuando las ideas empiezan a ebuillar cuando se pueden empezar a pensar en infinidad de aplicaciones para la vida diaria que pueden resultar extremadamente utiles.

Por eso mas que escribir sobre teoria que se ha visto, y puede consultarse como dije, en VoipInfo, voy a comentar algunas que fueron surgiendo:

– Sistemas de Monitorizacion de llamadas

Seguramente todo buen conocedor de Asterisk (que no es mi caso) sepa, que existen aplicaciones para la grabacion de llamadas. Pero ya que el canal de llamadas puede ser “escuchado” para ser grabado en un fichero de audio, tambien podria ser “escuchado” en tiempo Real. Ahi es donde entran las aplicaciones “Espias” como ExtenSpy y ChanSpy. Dos aplicaciones muy faciles de utilizar en un dialplan:

exten => 100,1,Answer()
exten => 100,n,ChanSpy()
exten => 100,n,Hangup ()

Y simplemente accediendo a la extension 100, tenemos “barra libre” para escuchar todos las conversaciones en el canal SIP de nuestra maquina Asterisk pasando de una a otra desde el telefono a traves del boton “*”

– Generacion de llamadas Automaticas

Por otro lado, algo tambien muy interesante, es la posibilidad de generar llamadas automaticas a traves de un fichero de “llamada” que se introduce en un directorio que esta siendo constantemente “monitorizado” por un demonio de Asterisk que lo ejecuta, y procesa los comandos de la llamada.

Esto por ejemplo puede ser util, a traves de un script autoejecutado en el arranque del sistema, cuyo procedimiento sea, si por ejemplo se cae un servicio critico del servidor, y tenemos instalado un minimo asterisk en ese servidor al que hemos conectado una extension SIP nuestra para alertas, hacemos que cree un fichero de llamada a medida y lo movemos al directorio que comentaba antes ( el directorio exacto es /var/spool/asterisk/outgoing). En este caso, lo que haria seria generar la llamada a nuestra extension alertandonos que el servicio se cayo. Muy practico porque eventualmente todos sabemos que el telefono suele ser de prioridad nivel maxima mientras que el correo electronico (como aplicaciones tipo Nagios que generan y envian correos de alerta), suele ser de prioridad media o medio baja dependiendo el caso. O perfectamente podriamos combinar sistemas como Nagios y Asterisk para diseñar un sistema de alertas mediante mensajes de voz a un telefono provenientes del servidor.

El formato de estos ficheros de llamada es muy sencillo. Un fichero de texto con los posibles siguientes comandos:

Channel: SIP/mi_telefono //El canal a traves del que se cursara la llamada
Application: Playback //Queremos que ejecute la aplicacion Playback para reproducir un mensaje automatico a voluntad
Data: windows-server-caido //El fichero de audio que vamos a lanzar con la aplicacion Playback, en este caso tiene que encontrarse en el correspondiente directorio de sonidos de Asterisk en un formato permitido para su reproduccion por ejemplo windows-server-caido.wav
Codecs: g729, ulaw, gsm // Codecs permitidos por el canal
MaxRetries: 3 // Numero de intentos que se tratara de realizar la accion con exito

– Edicion y personalizacion del Features.conf

Por otro lado, tambien hoy se vio el fichero de configuracion, features.conf, en el que basicamente se definen la utilidad de las pulsaciones de botones DMTF y como seran interpretados por las aplicaciones que conllevan especialmente servicios de llamada como Dial y Queues.

Basicamente ya es sabido que existen en ese fichero una serie de definicios por defecto para realizar “Features” (Caracteristicas) como la transferencia de llamadas, el Parking de llamadas, etc, que quiza comente mas en detalle en un futuro.

Pero siguiendo con la linea practica, un ejemplo que se probo en la clase, fue la posibilidad de crear “Features” a medida, como por ejemplo, mapear dos combinaciones de teclas para subir y bajar el Pitch del canal de audio (para los entendidos en efectos de sonido, es la escala de frecuencia). Esto quiere decir que por ejemplo si tenemos a un operador en la oficina que tiene una voz muy aguda, y queremos dotarle de una voz mas grave sin tener que prescindir de esta persona para llamadas determinadas, le podemos configurar en su telefono la posibilidad de bajar 4 o 5 puntos el nivel de frecuencia, y sonaria tal y como deseamos para el receptor de la llamada. Asunto resuelto, ya tenemos un locutor de radio instantaneo a coste 0.

¿Como se consigue este efecto?

Primero en features.conf bajo el contexto [applicationmap] definimos algo asi:

pitchUp => #1,self/both,Set(PITCH_SHIFT(both)=high)
pitchDown => #2,self/both,Set(PITCH_SHIFT(both)=low)

Con esto decimos que para conseguir alcanzar la caracteristicas “pitchUp” pulsando almohadilla + 1 subimos la frecuencia (tonalidades agudas) y al pulsar # + 2 bajamos la frecuencia (tonalidades graves)

Ahora para que esto sea aplicable a una aplicacion de llamada, es necesario modificar una variable general de Asterisk llamada __DYNAMIC_FEATURES (atencion a las dos _ del comienzo de la variable).

exten => 100,1,Set(__DYNAMIC_FEATURES=pitchUp#pitchDown)
exten => 100,n,Dial(SIP/mitelefono)
exten => 100,n,Hangup()

Ahora al llamar a la extension 100 y contactar con ese canal ahi definido, ambos interlocutores de la conversacion podran manipular su voz pulsando las combinaciones de teclas anteriormente descritas. Todo un lujo de goce y disfrute para la conversacion.

– Importante Novedad de la version 1.8 de Asterisk

Finalmente para terminar, aun a sabiendas que me quedan mil cosas en el tintero que podria escribir, quiero comentar algo nuevo que ha surgido en las ultimas versiones de Asterisk y SIMPLIFICA los Dialplans una burrada.

Hablo de “SAME”. Esto simplamente permite el hecho de poder obviar el exten => junto al numero de extension que vamos repitiendo en un flujo de llamada para una extension concreta

Antes:

exten => _6XX32XZ1X,1,NoOp()
exten =>  _6XX32XZ1X,n,Dial(${Troncal}/${EXTEN})
exten => _6XX32XZ1X,n,Hangup

Ahora:

exten => _6XX32XZ1X,1,NoOp()
same => n,Dial(${Troncal}/${EXTEN})
same => n,Hangup

Definitivamente MUY comodo. Gracias al iluminado por implementar esta mejora.

Eso es todo por hoy, mañana espero, mucho mas.

Asterisk Advanced. Day 1

Primer dia del Asterisk Advanced. Se han visto por lo general temas basicos introductorios del sistema. Todo aquel que hubiera realizado un Fast Start, puede sobrellevar este dia sin despeinarse. Muchos conceptos teoricos sobre Asterisk, curiosidades, producto Digium y alguna terminologia basica en lo referente al protocolo SIP. Nada que merezca por mi parte la pena destacar.

Configurar una extension, un pequeño IVR (como ya hemos visto en anteriores entradas de este blog), y una comunicacion con un proveedor SIP. Me hubiera gustando poder volver a escribir un buen articulo en representacion al dia de hoy, pero no hay suficiente material interesante, que no haya sido visto hasta la fecha.

Solo una cosa tengo que reconocer. Estos meses de inactividad me han hecho olvidar gran parte del sistema de configuracion, y porque no decirlo, esta clase me ha servido para poner un poco al dia mi actividad mental asteriskera, para volver un poco a la carga.

Seguiremos informando!

Combate Analogico: Segundo Asalto

Han pasado ya varios meses desde aquel mensaje en el que perdia la primera batalla tratando de conectar mi tarjeta Digium TDM410P.

Pues bien, tras la tramitacion del RMA de la misma, fue aceptada, y al poco tiempo de ser enviada, recibi una de vuelta, que tristemente ha quedado en la estanteria casi todo este tiempo, hasta que recientemente, he tenido la oportunidad de trastear con ella.

Concretamente en estos ultimos dias, he vuelto a montar otra maquina sencilla de pruebas, ya que el servidor anterior ha pasado a un estado de “semi-produccion” con un total de 10 extensiones en funcionamiento, y una concurrencia de unas 3-4 llamadas en horario laboral. A esta nueva maquina le he conectado la tarjeta digium, y he procedido como vimos en anteriores mensajes a instalarle Asterisk version 1.6.2 (que a fecha es la que mayor estabilidad me reporta). Es curioso como ya paso mucho tiempo desde aquel mensaje en el que planteaba otras versiones y la velocidad a la que va creciendo esto.

Ahora empieza el segundo asalto. Lo mas importante como se vio en el primer asalto, es conectar la tarjeta en la ranura PCI y conectarle un molex de la fuente, si vamos a utilizar como es nuestro caso, un modulo FXS. Esto es asi, por el hecho de que debemos entregarle corriente al telefono analogico conectado a este modulo, si solo tuvieramos modulos FXO en esta tarjeta, no haria falta realmente este conector.

En este caso, disponemos de un modulo FXS conectado en el puerto 1 y un modulo FXO en el puerto 4. Si realizamos la instalacion correcta de dahdi-linux-complete, solo necesitariamos tener un modulo activado en el fichero de configuracion /etc/dahdi/modules para que nuestro sistema reconozca esta tarjeta de inmediato: wctdm24xxp

Por otro lado como vimos en su dia, lo necesario para configurar el fichero /etc/system.conf ya fue explicado. Solo hay que recordar el inciso que si el modulo es FXS ponemos fxoks y viceversa para el FXO, realmente indicamos lo que va a haber en el otro extremo, a mi personalmente me resulta un poco contra la logica sencilla, pero seguramente a otro nivel de logica, tiene mucho sentido, con el tiempo averiguare esto y si cabe os lo contare. Y tambien recordar que el FXS es el verde y el FXO el rojo.

Una vez hechas estas configuraciones, solo quedaria adaptar nuestro fichero chan_dahdi.conf de asterisk para poder trabajar con estos modulos (aparte de la consiguiente configuracion del Plan de Marcacion para dar un uso practico finalmente).

El fichero chan_dahdi puede ser tan sencillo o tan complejo como deseemos ya que permite una personalizacion casi milimetrica del sistema con respecto a la red telefonica.

El contexto principal en este fichero es [channels] y a partir de ahi surgen varias configuraciones basicas que voy a comentar a continuacion

[channels]
language=es
// Lenguaje que vamos a usar
usercallerid=yes
// Si queremos usar el identificativo de la llamada
cidsignalling=v23
// Señalizacion CID mas comun, tambien esta la opcion bell
cidstart=ring
// Cual es la señal de inicio de llamada. Aqui en caso de lineas RTB normales, ring es lo mas comun, pero en caso de usar enlaces GSM analogicos, seria una buena idea poner otro sistema como polarity_IN (inversion de polaridad) por el propio funcionamiento de los mismos que no viene al caso ahora, aunque yo los he probado con ring y tambien funciona aun con mas propensidad a fallos.
hidecallerid=no
// Autoexplicativo, si quieremos ocultar nuestro identificador de llamadas
callwaiting=yes
// Si podemos poner llamadas en espera, utilizamos el boton Hook Flash (comunmente visto en los telefonos analogicos con una letrita R aunque configurable en la mayoria de los casos) para saltar de una llamada en espera a otra
callwaitingcallerid=yes
// En el caso de poder tener llamadas en espera, poder ver el Identificativo de llamadas cuando vamos saltando de una a otra llamada
threewaycalling=yes
// Llamada a tres activada, hay que considerar especialmente para llamadas a traves de la PSTN, que estos valores deben estar soportados adicionalmente por la misma y la mayoria de los operadores (Telefonica) suelen cobrar por estos “servicios adicionales”.
transfer=yes
// Poder transferir llamadas, no tanto por limitaciones de nuestro Dialplan, sino por el de la PSTN como hablamos antes
canpark=yes
// Poder aparcar llamadas, lo mismo. Diferencia entre poner una llamada en espera y aparcarla, es que en el segundo caso la utilidad es por ejemplo, recuperar la llamada desde otra extension diferente
cancallfoward=yes
// Para poder “reenviar” la llamada
callreturn=yes
// Para poder volver a recibir de vuelta una llamada reenviada sin exito
echocancel=yes
// Cancelacion de eco activado
echocancelwhenbridged=no
// En caso que la llamada quede “dentro” de la red ejemplo, de una extension analogica a un equipo SIP, para que no cancele el eco en vano (ya que la llamada realmente con minimo retardo no lo requiere). Es curioso porque esta opcion viene activada “yes” por defecto, y tenemos que desactivarla en la mayor parte de las configuraciones chan_dahdi
echotraining=800
// Tiempo que tarda en ms para “aprender” como de “retardada” viene la llamada y que cancelacion de eco debe aplicar. En el algoritmo intervienen variables como el retardo medio, y el jitter que viene a ser algo asi como la desviacion estandar sobre el retardo medio.
relaxdtmf=yes
// Ya habiamos visto esto en la parte SIP… los dichosos DTMF suelen ser motivo de problemas especialmente partiendo de la base de que no sabemos que sistema lleva el llamante.
rxgain=1.0
txgain=2.0
// Ganancias en decibelios de la llamada entrante y saliente respectivamente
busydetect=yes
busypattern=200,200
// Con estas opciones, simplemente detectamos si el otro lado esta comunicando con un tono de comunicando clasico en nuestro auricular. Ademas podemos especificar la cadencia en ms de el tono de llamada a detectar. Esto es diferente en cada pais y lo suele suministrar una norma de la PSTN que puede ser consultada en las normas del proveedor principal, en caso de España, Telefonica por ejemplo
answeronpolarityswitch=yes
hanguponpolariryswitch=yes
// Esto es fundamental para como comentamos antes, la gestion de las llamadas en funcion si trabajamos directamente sobre una linea RTB, o si utilizamos un enlace GSM. En el primer caso, serian las dos opciones a no, y en el segundo caso, a si (yes)
faxdetect=incoming
// Para detectar faxes entrantes, es util, si vamos a utilizar ese canal para recibir Faxes. Tambien esta both para ambos sentidos. El hecho de detectar faxes tiene ciertas aplicaciones como IAXmodem, Hylafax como aplicaciones de recepcion de FAX para Asterisk, o envios automaticos de llamadas, y gestion de las mismas con Autodialers.
mohinterpret=default
// Musica en espera por defecto
mohsuggest=default
// Musica en espera sugerida cuando ponemos una llamada en espera para este canal.

Para todo esto que he explicado, hay miles de opciones y configuraciones posibles. Aqui he puesto una configuracion valida de ejemplo para funcionar desde 0. Se pueden consultar las opciones directamente en las explicaciones mismas que trae el fichero de ejemplo proporcionado por el propio sistema generado por la opcion del make de Asterisk “samples”.

Finalmente, metemos la configuracion especifica de los canales para luego ser tratada desde nuestro Dialplan. En mi caso, he conectado un telefono Dect en el canal 1 (FXS), y un Enlace GSM en el canal 4 (por eso he puesto las opciones anteriores basadas en este caso en concreto). Asi quedaria:

group = 1
// Grupo de llamada, equivalente al fichero SIP
context= desde-movil
// El contexto al que sera dirigidas las llamadas entrantes por este canal
signalling = fxs_ks
// Señalizacion del canal, en este caso si es intuitivo
callerid=asreceived
// No se si recuerdan cuando se configuro el gateway Epygi, una de las opciones que habia que poner en la configuracion de las lineas ISDN es como pasar el Identificador de llamante al sistema. En este caso, tal como viene decimos
channel => 1

Asi por un lado quedaria configurado el canal 1, FXS. Por otro lado el canal 4 FXO quedaria asi:

group=4
context=extensiones
signalling=fxo_ks
callerid=”Telefono DECT” <101>
mailbox=101@extensiones
channel=>4

En este caso, como puede observarse es exactamente igual que la configuracion del fichero SIP en cuanto a lo que contexto, callerid, mailbox y demas pudiere referirse.

Con esto ya quedaria integramente configurado nuestro fichero chan_dahdi.conf. Para “recargarlo” desde la consola (CLI) Asterisk tenemos que utilizar el comando:
module reload chan_dahdi.so

Para la configuracion del Dialplan solo tomamos en cuenta una consideracion muy sencilla. Los canales analogicos por tarjetas se representan como DAHDI/X siendo X el canal. Asi que toda la configuracion del extensions.conf es equivalente a si pusieramos SIP/(nombre del contexto sip) pero con DAHDI

Ejemplo, para la extension 101 del telefono Dect

exten => 101,1,NoOp()
exten => 101,n,Answer
exten => 101,n,Dial(DAHDI/4)
exten => 101,n,Hangup

Asi de sencillo, asi mismo para enviar una llamada a traves del FXS creamos una regla para moviles en mi caso (Enlace GSM conectado al canal 1)

exten => _[67]XXXXXXXX,1,NoOp()
exten => _[67]XXXXXXXX,n,Dial(DAHDI/1/${EXTEN})
exten => _[67]XXXXXXXX,n,Hangup()

Por cierto ya que ha salido el tema, ¿os habeis enterado que como novedad este 2011 empezaran a salir numeros moviles que empiezan por el 7?

Finalmente creariamos el contexto [desde-movil] para recepcionar todas las llamadas entrantes, si es que llamasen al numero del movil en cuestion asociado al canal 1.

Y con esto ya hemos ganado el segundo Asalto, abordando un poco la cuestion relacionada a las tarjetas de Asterisk y su configuracion despues de lo que se sufrio en dias pasados. De todas formas esto no sera muy frecuente en mis sucesivos mensajes porque como comente, yo no soy nada partidario de utilizar tarjetas por los motivos que explique en su dia. Aunque es curioso que todo aquel que se quiera presentar a un dCAP (logico, porque digium solo fabrica principalmente tarjetas), ha de conocer esto en profundidad. Hay que ademas saber tratar con tarjetas BRI y PRI que tienen ciertas variaciones muy especificas. Pero para eso existe un comando todo poderoso que te hace la mitad del trabajo: dahdi_genconf. Basicamente te configura el fichero system.conf tras chequear que hay disponible entre la tarjeteria cargada en el sistema (Y que puede observarse con el comando dahdi_tools). Quiza vengan en un futuro mas detalles si tengo la oportunidad de trastear con otras tarjetas, sean BRI de otras marcas (¿Beronet?) o alguna tarjeta Primaria de Digium (creo que es la unica tarjeta que verdaderamente merece la pena en cualquiera de los casos).

Para terminar me gustaría sugerir a todo aquel seguidor de mi Blog, si tiene interés en que profundice o experimente en algún tema no dude en planteármelo como un comentario y procederé con la cuestión. Todo sea por mejorar la curva de aprendizaje de todos aquellos que me sigan tras el paso por este Blog a través de mi experiencia.