miércoles, 19 de agosto de 2009

FreeSWITCH, Configuración de extensiones

directory en FreeSWITCH

La carpeta directory contiene las extensiones SIP que se pueden registrar con FreeSWITCH, la configuración por default obliga a que las extensiones se autentiquen antes de aceptar su registro, posteriormente veremos como cambiar este comportamiento.

Cuando se instala en la carpeta directory se encuentra el archivo default.xml el cual define principalmente:

Mas información en:
http://wiki.freeswitch.org/wiki/Default_config
http://wiki.freeswitch.org/wiki/Config_directory.xml

domain: dominio o IP que identifica la extensión SIP de la forma numero_extension@domain_o_IP (ej: 1000@192.168.7.100).
group: definición de grupos de extensiones para hacer llamadas a un grupo
de tal forma que timbren todas las extensiones, la sintaxis para crealos es
la siguiente:

<group name="nombre_del_grupo">
<users>
<user id="numero_extension_1" type="pointer"/>
<user id="numero_extension_2" type="pointer"/>
<user id="numero_extension_n" type="pointer"/>
</users>
</group>

numero_extension_1 debe existir como un archivo XML en la carpeta directory

El tipo "pointer" permite que la misma definición de la extensión se pueda usar en multimples grupos sin ser necesario crear multiples
archivos XML con la información de la extensión.

  • Uno de las entradas mas importantes de default.xml es la inclusión de todos los archivos XML que se encuentran ubicados en
    directroy/default/*.xml, con lo cual las extensiones se deberían definir en esta carpeta.

Extensiones en FreeSWITCH

Las extensiones que se registran con FreeSWITCH se deben ubicar en la carpeta conf/directory/default, estan definidas en archivo XML, comunmente los archivos se nombran con el identificador de la extensión.

Por ejemplo para definir la extensíón 1000 creamos el archivo 1000.xml con el siguiente contenido:

<include>
<user id="1000">
<params>
<param name="password" value="1000"/>
<param name="vm-password" value="1000"/>
</params>
<variables>
<variable name="toll_allow" value="domestic,international,local"/>
<variable name="accountcode" value="1000"/>
<variable name="user_context" value="default"/>
<variable name="effective_caller_id_name" value="Extension 1000"/>
<variable name="effective_caller_id_number" value="1000"/>
<variable name="outbound_caller_id_name"
value="$${outbound_caller_name}"/>
<variable name="outbound_caller_id_number"
value="$${outbound_caller_id}"/>
<variable name="callgroup" value="techsupport"/>
</variables>
</user>
&</include>

Algunas de las no obvias definiciones son:

vm-password: clave para accesar el buzón de voz
toll_allow: tipo de llamadas permitidas para la extensión: domestic,international,local.

Esta definición tiene sentido en el plan de marcación ( http://www.mail-archive.com/freeswitch-users@lists.freeswitch.org/msg02616.html)

accountcode: código asignado a la extensión, es usado para fines de tarificación por ello debe ser único por extensión

user_context: contexto de la extensión, define a que contexto pertenece la extensión. Un contexto una form lógica para agrupar extensiones.

jueves, 6 de agosto de 2009

FreeSWITCH, versión 1.0.4 oficialmente liberada

El equipo de FreeSWITCH anunció la liberación de la versión 1.0.4, la última versión estable del producto que incluye muchas mejoras, corrección de bugs y nuevas características. Para mas información visitar. http://www.freeswitch.org/node/184

lunes, 3 de agosto de 2009

FreeSWITCH, archivos de configuración

Los archivos de configuración

En la anterior entrega vimos como construir FreeSWITCH desde el código fuente, los archivos XML de configuración se encuentran en el directorio conf/, en el caso de Windows este directorio esta ubicado en Debug/ o Release/ según se haya escogido para su construcción desde el Visual Studio 2008. Para mayor información visitar: http://wiki.freeswitch.org/wiki/Getting_Started_Guide

freeswitch.xml
Es el archivo maestro de la configuración de FreeSWITCH, éste incluye los demas archivos de configuración convirtiendose en el punto de entrada en la carga de la configuración y preprosesamiento de variables.

vars.xml
Define variables globales al sistema que pueden ser accedidas desde un plan de marcación, este archivo contiene algunas líneas con la marca especial X-PRE-PROCESS, estas líneas no pueden ser comentados.

La sintaxis usada para definir una variable es:
<X-PRE-PROCESS cmd="set" data="nombre_variable=valor"/>

El valor de una variable previamente definida se obtiene así:
${nombre_variable} o $${nombre_variable}

La diferencia entre $ y $$ es el tipo de acceso, con $ el valor se obtiene cuando se usa la variable, con $$ se maneja como valor de preprocesador y se obtiene durante la carga de FreeSWITCH o se recarga la configuración del archivo freeswicth.xml con el comando relaodxml. La diferencia básica es que el valor con $ es expandido en el uso mientras con $$ es expandio en la carga del sistema.

- base_dir: define el directorio raíz donde se ejecuta FreeSWITCH
- sound_prefix: define el direcotrio donde se encuentran los archivos de audio (esta variable esta en revisión todavia aunque se usa en la actualidad)
- local_ip_v4: dirección IP local, esta variable la define automáticamente FreeSWITCH
- domain: define el dominio para identificar las extensiones registradas, asignado por defecto como $${local_ip_v4}
- global_codec_prefs: codecs disponibles para la negociación con las extensiones registradas
- outbound_codec_prefs: ocedecs disponibles para la negociación con gateways
- outbound_caller_name: este nombre se usa para mostrarlo en el teléfono cuando se hace una llamada
- outbound_caller_id: número usado para mostrarlo en el teléfono cuando se hace una llamada

El directorio autoload_configs contiene algunos archivos de configuración muy importante:

modules.conf.xml
Este archvio determina que modulos se van a carga durante el inicio de FreeSWITCH

sofia.conf.xlm
Archivo de configuración para definicioenes SIP

Plan de marcación (dialplan)
Los planes de marcación se definen en el directorio dialplan.

Extensiones (directory)
Las extensiones que pueden registrarse con FreeSWITCH se encuentran en el directorio directory.

domingo, 2 de agosto de 2009

FreeSWITCH, descarga y construcción

Introducción

FreeSWITCH es uno de los mejores proyectos de comunicaciones de código abierto que hay en la actualidad, como lo describen en su sitio oficial
http://www.freeswitch.org/

“FreeSWITCH is an open source telephony platform designed to facilitate the creation of voice and chat driven products scaling from a soft-phone up to a soft-switch. It can be used as a simple switching engine, a PBX, a media gateway or a media server to host IVR applications using simple scripts or XML to control the callflow.”

FreeSWITCH (escribiendo SWITCH en mayúscula) es una plataforma de telefonía de código abierto diseñada para facilitar la creación de productos de voz y chat escalando desde un soft-phone hasta un soft-switch. Puede ser usado como un motor de conmutación, una PBX, un media Gateway o un servidor de medios (media server) para alojar aplicaciones de IVR usando simples scritps o archivos XML para el control de flujo de la llamada.

En otras palabras FreeSWITCH se puede comportar como un simple soft-phone, una PBX o en realidad un soft-switch, por ello el campo de aplicación de esta plataforma resulta tan interesante.

Otra característica importante para los usuarios y programadores del mundo Windows es que puede ser construido y correr nativamente sobre Windows, también sobre Linux, Mac OS, BSD y Solaris tanto para 32 como para 64 bits (
http://wiki.freeswitch.org/wiki/Specsheet).

Descargar el código fuente
FreeSWITCH está construido en lenguaje C y el proyecto usa Subversion como controlador de código fuente. Se pueden obtener dos revisiones desde el sitio de FreeSWITCH. Una de estas revisiones se consigue accediendo directamente a través de un cliente de Subversión el trunk de proyecto que tiene la versión más actualizada del código fuente pero no necesariamente estable. La otra revisión son las versiones estables o de prueba que se pueden acceder directamente a través una URL.

Bajando el código fuente a través de Subversion
En este link se encuentra información del sitio oficial para la descarga:
http://wiki.freeswitch.org/wiki/Download_FreeSWITCH

Cuando se trabaja en Windows se tienen varias opciones para acceder a un repositorio manejado con Subversion, en esta entrega vamos a usar RapidSVN (
http://rapidsvn.tigris.org/) que es un cliente sencillo pero trabaja bien y nos va a permitir descarga el código fuente.

El código fuente puede ser conseguido desde:

http://svn.freeswitch.org/svn/freeswitch/trunk

Una vez instalamos RapidSVN se debe configurar la URL desde el menú Repositorio -> Exportar e ingresamos la URL del código fuente para su descarga.


Figura 1. Configuración RapidSVN para descarga del código fuente.

Se debe escoger el directorio destino y seleccionar la opción “Sobrescribir”, ver figura 1.

Si tenemos la posibilidad de usar los programas de línea de comandos de Subversion se puede obtener el código fuente desde:

svn co http://svn.freeswitch.org/svn/freeswitch/trunk directorio_destino

Bajar el código fuente directamente desde los archivos de FreeSWITCH
Las versiones de prueba o estables son normalmente publicadas en
http://files.freeswitch.org/

Una vez obtenido el archivo se descomprime y el código fuente estará disponible.

Construcción desde el código fuente
Se debe contar con Visual Studio 2008 la versión licenciada o la versión Express, para la compatibilidad con C# es necesario que se tenga instalado el Framework 3.5 o Mono 2.0 y que el Visual Studio pueda compilar código fuente C y C#.
Más información:
http://wiki.freeswitch.org/wiki/Installation_Guide


Se debe abrir la solución Freeswitch.2008.sln


Una vez abierta la solución se debe construir, es necesario garantizar la conexión a Internet ya que se van a descargar automáticamente algunos componentes. Una vez terminada la construcción ya contamos con los ejecutables:

- FreeSwitch.exe (ejecuta una instancia de FreeSWITCH)
- fs_cli.exe (permite conectar a una instancia de FreeSWITCH que se está ejecutando).

En la próxima entrega veremos la configuración de FreeSWITCH.