Fecha: 05-03-10
Elio Rojano

Hace poco más de un año, en este blog hablamos sobre una aplicación que había desarrollado Digium, una especie de DialApplet descafeinado y además, exclusivamente para Windows.

El lanzamiento de ADA (Asterisk Desktop Assistant) me sorprendió bastante por varios motivos:

- Conociendo a los desarrolladores de Digium, me extrañaba que crearan un software exclusivamente para Windows.
- Aunque los negocios son los negocios, una aplicación tan “sencilla” de desarrollar bien podrían haberla publicado con alguna licencia libre.
- Teniendo tantas alternativas de mucha más calidad y experiencia, lanzar una aplicación de este tipo sin un valor añadido extra era simplemente “arriesgado”.

Por estos motivos decidí no prestarle más atención, … hasta hace unos días.

Leyendo en la lista de Asterisk-DEV, me enteré que el proyecto murió un mes después del anuncio (sin comentarios) y como Digium no tiene desarrolladores que desarrollen para Windows, o los que tiene, ya están ocupados con otros proyectos, simplemente lo dejaron ahí, y el producto quedó sin soporte, sin actualizaciones, sin nada, el ciclo se cerró y fin del producto.

Un año después algunos usuarios se preguntan: Ese software que nadie quiere, ¿no se puede liberar y que otros desarrolladores que lo deseen puedan continuar con el proyecto para crearse sus propias actualizaciones y mejoras? ¿es tan triste el software comercial que cuando se queda sin desarrolladores, arrastra a todos sus usuarios tras él?

Muchas empresas apuestan por software comercial porque tiene tras de sí a una o varias empresas que les dán soporte, actualizaciones, mantenimiento, etc… (algo que por otra parte también lo tiene el software libre, pero bueno) ¿qué ocurre cuando el producto ya no es rentable? ¿cuando requiere más inversión que el beneficio que se va a obtener de él? ¿no es el mejor momento para “liberar” ese software y que sea la propia empresa u otra, si lo desea, quien continúe con el desarrollo antes de darlo por muerto?

Personalmente considero que el software libre es uno de los caminos que nos permiten evolucionar, quizá no sea tan económicamente rentable desde el punto de vista “licencias = $$$$“, pero por suerte hay empresas que apuestan por este tipo de software y demuestran día a día que el software, aún siendo libre, puede ser rentable y no tiene porqué morir jamás mientras haya alguien en algún lugar del mundo que esté dispuesto a continuar programando.

Leer más sobre: Empresas | Programacion | Software Libre   
Fecha: 19-02-10
Elio Rojano

Hace una semana Olle Johansson anunció un fallo de seguridad bastante interesante, pero no me atreví a escribir sobre él hasta que no lo hubiésemos probado y al fín lo hicimos, y los resultados son escalofriantes:

Imaginemos que utilizamos un terminal IP (o softphone) con una cuenta limitada a extensiones SIP, en principio sólo podríamos llamar a extensiones SIP, pero el bug explica cómo aprovechar una mala programacion del dialplan y poder llamar a donde queramos:

El fallo de seguridad ocurre principalmente si tenemos una línea como esta:

exten=>_X.,1,Dial(SIP/${EXTEN})

De manera que cualquier número que marquemos, intentará llamar por SIP:

Si marcamos 800, en el dialplan se ejecutará: exten=>800,1,Dial(SIP/800)
Si queremos llamar hacia el exterior, marcamos 952123456, y en el dialplan se ejecutará: exten=>952123456,1,Dial(SIP/952123456)

Claro, que si no tenemos una extensión SIP con ese número, no hará nada y colgará la llamada.
Pero como todos ‘deberíamos’ saber, el comodín punto ‘.’ admite cualquier cosa y tantas como queramos (símbolos, letras, etc) por lo que si en lugar de utilizar un terminal IP utilizamos un softphone, podríamos llamar a nombres o a cualquier cosa que podamos escribir:

Si marcamos 3pepota, en el dialplan se ejecutará:
exten=>3pepota,1,Dial(SIP/3pepota)

Tampoco llamará a nadie, ya que la extensión 3pepota no existe.

Más después del salto…

Leer más sobre: Asterisk | Programacion | Seguridad   
Fecha: 01-02-10
Elio Rojano

Matt Riddell nos cuenta a través de su web VentureVoIP acerca de varias novedades y parches muy interesantes para mejorar ciertos aspectos de Asterisk como las colas, las grabaciones y el manager.

- Parche para “penalizar a los agentes que no han contestado llamadas”:

teleoperador vagoEn todas las instalaciones de callcenter existen ciertos operadores muy listos que deciden no responder llamadas porque están cansados, o porque sabe quién está llamando y prefieren que otros se coman el marrón. Para eso está este parche que añade cierta penalización a los miembros de una cola si no contestan llamadas, de forma que si se “saltan” una llamada, puede ser que reciban 3 llamadas seguidas. :)

El parche lo podeis encontrar aquí: https://issues.asterisk.org/view.php?id=16722

- Parche para controlar el DEVICE_STATE mediante el Manager de Asterisk:

aastra blfEs muy interesante obtener el estado de una extensión desde el manager, sobre todo cuando desarrollamos para Asterisk y queremos monitorizar si una extensión está ocupada, está sonando o está disponible.
Actualmente esto ya se puede hacer, aunque hay que parsear el sip show peer XXX y por lo tanto, un posible cambio de la estructura podría romper nuestra aplicación. Para eso tenemos una nueva aplicación que nos permite obtener y añadir un estado de una extensión (sala de conferencias, etc…): DeviceStateGet y DeviceStateSet.

El parche lo podeis encontrar aquí: https://issues.asterisk.org/view.php?id=16732

- Parche para activar y desactivar la grabación mediante el MixMonitor:

Como decía el autor del parche, necesitaban grabar todas las conversaciones pero en cierto momento, el usuario que llamaba tecleaba el número de su tarjeta de crédito y grabar esto sería un gravísimo fallo de seguridad, que podría hacer que hubiera que pagar una multa tan grande por “colaboracion con estafa” que podría cerrarte prácticamente cualquier negocio, por lo que decidieron implementar dos comandos para el Manager que permitieran “parar” y “reanudar” la grabación durante la marcación de estos códigos DTMF sensibles: MuteMixMonitor y UnMuteMixMonitor.

El parche lo podeis encontrar aquí: https://issues.asterisk.org/view.php?id=16740

Leer más sobre: Asterisk | Programacion   
Fecha: 22-01-10
Elio Rojano

Olle Johansson publica una versión en pruebas basada en Asterisk 1.4 donde se ha mejorado considerablemente el comportamiento del QoS y del RTCP.

Olle JohanssonOlle Johansson (Edvina) hizo público que ya estaba lista para probar, una versión de Asterisk especial donde se mejora considerablemente el control de la calidad de servicios (QoS) que lleva incluido Asterisk, además de diversas mejoras en el protocolo RTCP que mejorarían su funcionamiento en sistemas Asterisk que están detrás de NAT permitiendo mejorar la comunicación con los usuarios SIP.

Además de estas modificaciones esta versión dispone de:

* RTCP improvements from pinefrog-1.4
* “Sip show chanstats” cli command
* The branch pinequality-* giving you the manager “sipchannel” event to check QoS

Para cualquiera que quiera probar esta versión, puede instalarla mediante los siguientes comandos.

Más después del salto…

Comentarios desactivados
Leer más sobre: Asterisk | Programacion   
Fecha: 24-12-09
Elio Rojano

Leyendo la lista de Asterisk-DEV me entero que acaban de publicar un nuevo framework para realizar diversos test al sistema Asterisk.

El sistema de testeo llamado (Unit Test Framework) añade una serie de herramientas para crear y ejecutar tests internos a través de la consola CLI de Asterisk, lo que nos permitirá detectar si hay alguna incidencia.

Como todo framework, lo que nos ofrece son las herramientas necesarias para desarrollar el resto de utilidades que podemos necesitar, por lo tanto habrá que investigar qué engloba estas herramientas y qué podemos hacer con ellas.

El mensaje original, a continuación… Más después del salto…

Leer más sobre: Asterisk | Programacion   
Fecha: 16-12-09
Elio Rojano

asterisk-clockSaúl Ibarra ha escrito un sensacional artículo explicativo de para qué sirve la “señal de reloj” que utiliza Asterisk en cada una de sus herramientas y aplicaciones, aprovechando la noticia de que Asterisk 1.6.2 traerá su propia API para evitar utilizar el conocido módulo dahdi_dummy que muchos utilizan pero pocos saben para qué sirve, Jeremy McNamara escribió esta noticia: A New Timing API for Asterisk, Silencing Digium Critics

La explicación completa de para qué sirve una señal de reloj en algunas aplicaciones de Asterisk como puede ser el Meetme, o el IAX podría dar para un artículo bastante extenso que algún día puede que me anime a escribir, pero de momento os recomiendo leer el artículo de Saúl.

Ya comentamos que esta iba a ser una de las ventajas del esperado Asterisk 1.8, pero se ve que se han adelantado un poco:

Comentarios desactivados
Leer más sobre: Asterisk | Programacion   
Fecha: 16-12-09
Elio Rojano

net_codeAsterisk nació pensando en Linux, pero la principal ventaja que tiene Asterisk es que se trata de una aplicación libre de manera que cualquier persona puede desarrollar modificaciones o herramientas que utilicen el código fuente de este para que haga exactamente lo que queremos que haga. (Esto no es posible en ningún sistema que no sea libre). Por lo tanto se suele pensar que si queremos realizar una aplicación que utilice Asterisk esta deberá utilizar algún lenguaje de programación libre o incluso que sólo será compatible bajo Linux y eso es algo completamente falso.

De hecho, hace unos días liberaron la nueva versión 1.6.3.1 de la librería Asterisk .NET que consiste en una serie de clases en C# que permiten programar AGI (y utilizarla mediante la aplicación FastAGI) o bien conectarnos de una forma bastante sencilla al Manager de Asterisk pudiendo hacer prácticamente cualquier aplicación para gestionar o monitorizar Asterisk.

Yo no soy muy dado a .NET / Mono, personalmente prefiero herramientas cuyas directrices no vengan impuestas por ninguna empresa, pero he de decir que conozco a muchas personas que trabajan con .NET y que este tipo de librerías realmente son útiles para desarrollar prácticamente cualquier cosa que necesitemos.

Si quereis probarla, podeis descargarla de SourceForge:
http://sourceforge.net/projects/asterisk-dotnet/

Para el que no lo conozca, existen otras librerías de .NET para Asterisk como es el caso del AMIConnector cuya documentación está en español. ;)

Leer más sobre: Asterisk | Programacion | Software Libre   
Fecha: 08-12-09
Elio Rojano

Asterisk con su aplicación Meetme ya es un potente aliado para la creación de salas de conferencia y es por esto por lo que Ryan Finnie ha publicado una modificación de esta aplicación que permite a un administrador de la sala disponer de un menú donde puede realizar las siguientes opciones:

*81 – Anunciar el nombre de los usuarios en la conferencia
*82 – Expulsar a todos los no-administradores
*83 – Mute/unmute a todos los no-administradores
*84 – Empieza a grabar la conferencia “on the fly”

Las personas que trabajan migrando antiguas centralitas a Asterisk no suelen trabajar con esta herramienta ya que no es una característica que las empresas hayan utilizado nunca.

Recuerdo una persona que montó para su empresa un Asterisk desde cero (una empresa de desarrollo de software bastante grande) donde varias sedes trabajan en el mismo proyecto y todos los lunes el coordinador marcaba un código en el Asterisk de su propia sede y este generaba una llamada multitudinaria a todos los desarrolladores del proyecto con el “mute activado” de manera que únicamente podía hablar el coordinador donde explicaba a todos en una sala conectada a otras salas el planning para esa semana, además de realizar una grabación de dicha conferencia que se le enviaba por email a todos los desarrolladores para que pudieran escucharla en cualquier momento de la semana para llevar el control del estado del proyecto en cualquier momento.

Una idea que me pareció un ejemplo genial de las posibilidades del Meetme aprovechando las posibilidades de Asterisk que no ofrecen otros sistema.

Aquellos que querais testear este nuevo añadido, podeis seguir el siguiente hilo:
https://issues.asterisk.org/view.php?id=16379

Via VentureVoIP

Leer más sobre: Asterisk | Programacion   
Fecha: 20-10-09
Elio Rojano

Mucho tiempo llevan los desarrolladores de Asterisk que programan en Java a que saliese la versión 1.0.0 compatible por fín con Asterisk 1.6, y por fín liberan la versión 1.0.0.M3 mucho más cerca de la versión estable.

Captura de pantalla 2009-10-20 a las 20.15.24

Más información:

http://blogs.reucon.com/asterisk-java/2009/10/19/asterisk_java_1_0_0_m3_released.html

Leer más sobre: Asterisk | Programacion   
Fecha: 08-10-09
Elio Rojano

Según acabo de saber gracias a Saúl, en la lista de Asterisk-Dev, Russell Bryant acaba de publicar un cambio muy importante para los que nos dedicamos a la VoIP y a Asterisk, y es que la versión 1.6.2 será la última versión basada en 1.6 con la actual política de versiones, y todas las novedades y mejoras pasarán a unirse en la próxima versión de Asterisk: Asterisk 1.8.

Mucho se ha hablado sobre la política de versiones de 1.6 el hecho de tener varias versiones de la misma rama que evolucionan a la vez es algo no sólo difícil de entender para muchos si no que pese a las críticas de estabilidad, velocidad de desarrollo y esfuerzos por parte de los desarrolladores, Russell continuaba defendiendo un modelo que en la opinión tanto de los usuarios como de muchos desarrolladores, era impracticable e ineficiente.

Asterisk 1.6. continuará con sus sub-ramas Asterisk 1.6.0, 1.6.1 y 1.6.2 y pronto se empezará a unificar todas las características así como las nuevas que estaban planteadas en Asterisk 1.6.3 (CEL, un SIP bajo TCP y TLS en condiciones, y muchas mejoras más) en una nueva y única rama: Asterisk 1.8.

Más después del salto…

Comentarios desactivados
Leer más sobre: Asterisk | Programacion | VoIP