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.