miércoles, 6 de octubre de 2010

TLS sobre Windows disponible

Tiempo atrás estaba revisando la seguridad que permite TLS en las comunicaciones IP. Cuando comencé a trabajar con FreeSWITCH sobre Windows para realizar la configuración de TLS para asegurar la parte de la señalización SIP, ohh sorpresa, TLS para Windows no estaba listo.

Todavía no se podía configurar directamente una interfaz para que soportara TLS, el problema es que todavía no estaba integrado, por lo que era necesario descargar y construir por separado Openssl, ahora bien, no conseguí un proyecto que pudiera compilar y ejecutar desde Visual Sudio lo que hacia necesario descargar Perl y usar los scripts que entregan directamente desde el proyecto Openssl. Una vez descargadas las herramientas la construcción de Openssl es realmente fácil conseguir, el producto de esta generación son principalmente tres archivos: libeay32.dll, ssleay32.dll y openssl.exe.

El espíritu del código entregado por el equipo de FreeSWITCH es que la generación está integrado en una extensa solución de Visual Studio 2008 o 2010 que descarga y construye todas las dependencias de terceros, las librería y módulos propios de tal forma que finalizada la compilación está listo para ser usado.

Con esta necesidad latente me di a la tarea de construir los proyectos (.vcproj) en Visual Studio para que se pudiera integrar la construcción de Openssl en la solución de Visual Studio de FreeSWITCH y además se constituyera en una alternativa para obtener Openssl aún fuera del alcance de FreeSWITCH.

La buena noticia es que los proyectos para construir Openssl están integrados ahora en la solución de Visual Studio de FreeSWITCH y es posible usar TLS para asegurar las llamadas ejecutando FreeSWITCH sobre Windows.

jueves, 13 de mayo de 2010

Archivos de audio en español

Según el más reciente anuncio de la liberación de FreeSWITCH de la versión 1.0.6 ya se tienen los archivos de sonido en español, aunque todavía no se han publicado ya que están en revisión pronto los tendremos disponibles. El español es latinoamericano.

miércoles, 7 de abril de 2010

Medir Tonos en líneas análogas

Cuando se trabaja con líneas análogas ya sea de la red pública o de una extensión de una PBX es muy importante conocer la frecuencia de los tonos para realizar una buena detección del tono de marcado (dialtone), del tono de desconección (disconect tone) para terminar la llamada, y del tono de ocupado (busy).

Normalmente cuando no se configuran adecuadamente los tonos se presentan problemas por ejemplo al finalizar la llamada, el puerto puede seguir ocupado cuando ya nadie está hablando sobre la línea.

Existen varias formas de medir la frecuencia ya sea simple o compuesta de cada tono, entre ellas desde las mas complejas usando un osciloscopio, con algún software que escucha sobre la línea, o una forma bastante simple pero muy efectiva usando Audacity.

La idea es grabar en un archivo de audio por ejemplo .wav lo que sucede en la línea, y posteriormente abrir el archivo con Audacity y analizar su espectro con lo cual se pueden hallar las frecuencias con buena exactitud. Para un mayor detalle sobre el procedimiento pueden ver este buen artículo en el blog de Asterisk Medellín.

martes, 6 de abril de 2010

Welltech Gateway

Entre los Gateway con soporte para puertos FXO y FXS que son económicos y usan UDP para el transporte se encuentran los Welltech (http://www.welltech.com) yo los he usado y se portan bien ademas de mencionar la operabilidad que tienen con FreeSWITCH.

Hasta ahora el único detalle que he tenido que solucionar es el tema del manejo del flash-hook para los puertos FXO, si es necesario, no basta solo con enviar <action application="send_dtmf" data="F"/> ya que esto solo se interpreta del lado del Gateway como un tomo mas. Para conseguir que pueda propagar el flash-hook desde la señalización IP es necesario hacerlo con SIP INFO incluyendo en el body \n\r. Esto me valio para solicitar soporte a la gente de Welltech por el link de Support de su página y la verdad me ayudaron bastante con el tema y la atención fue rapida y efectiva.

lunes, 22 de febrero de 2010

Mod event socket en modo inbound

“inbound” modo significa que usando ESL la aplicación se conecta como cliente a FreeSWITCH (FS) para el envío y recepción de eventos y comandos. (http://wiki.freeswitch.org/wiki/Mod_event_socket)

Ejemplo usando managed ESL

El siguiente fragmento de código establece una conexión con FS, subscribe a todos los eventos en formato de texto plano, y entra en un bucle esperando por un evento e imprimiéndole en pantalla cuando llega.


//Initializes a new instance of ESLconnection, and connects to the host $host on the port $port, and supplies $password to freeswitch
ESLconnection eslConnection = new ESLconnection("localhost", "8021", "ClueCon");

if (eslConnection.Connected() != ESL_SUCCESS)
{
Console.WriteLine("Error connecting to FreeSwitch");
return;
}

//Set log level
//ESL.eslSetLogLevel((int)enLogLevel.DEBUG);

// Subscribe to all events
ESLevent eslEvent = eslConnection.SendRecv("event plain ALL");

if (eslEvent == null)
{
Console.WriteLine("Error subscribing to all events");
return;
}

//Turns an event into colon-separated 'name: value' pairs. The format parameter isn't used
Console.WriteLine(eslEvent.Serialize(String.Empty));

// Grab Events until process is killed
while (eslConnection.Connected() == ESL_SUCCESS)
{
eslEvent = eslConnection.RecvEvent();
Console.WriteLine(eslEvent.Serialize(String.Empty));
}

domingo, 21 de febrero de 2010

managed ESL

¿Qué es managed ESL ?

Es la librería que permite desde un lenguaje de .Net usar la Event Socket Library (ESL) de FreeSWITCH (FS).
 

Managed ESL establece comunicación con FreeSWITCH (FS) a través de socket encapsulando todo el manejo del socket y exponiendo los servicios suministrados por FS como clases manejadas en C#.

Managed ESL son clases que encapsulan los servicios de mod_event_socket (http://wiki.freeswitch.org/wiki/Mod_event_socket) expuestos con la estandarización obtenida de SWIG. Con SWIG se consigue una interfaz nativa en C++ y wrappers en C# que usan la interfaz de C++.

¿Qué se puede hacer?

Con managed ESL se puede conseguir control de la llamada, envío y recepción de eventos y comandos.

Como managed ESL se ejecuta fuera del contexto de ejecución de los procesos de FS, la aplicación que usa managed ESL puede ser publicada en una maquina remota o expuesta como un servicio simpre que se tenga conexión con FS a través un socket.

Construyendo managed ESL

En este momento solo se ha probado usando VisualStudio 2008 sobre Windows con Framework 2.0. Pronto se estará liberando para mono.

Pre-requisitos

VisualStudio 2008 (soporte para C y C#)
Framework 2.0
Windows

La solución de VS2008 para compilar managed ESL se encuentra en libs/esl/managed, es necesario que se tenga compilada la librería esl.lib que se construye con FreeSWITCH.

sábado, 23 de enero de 2010

ESL, Manejo de eventos en FreeSwitch

Si buscan manejar eventos sin depender del core de FreeSwitch o mejor sin necesitar que se ejecute, recomiendo que le den una revisada a ESL (Event Socket Library).

Con ESL se pueden recibir eventos y enviar comandos a FreeSwitch.

http://wiki.freeswitch.org/wiki/Event_Socket_Library