Archivo de Etiquetas de 'openser'

OpenSER 1.3.1 released

Marzo 11 2008 por saghul

Leyendo el blog de Jerocu (donde sino :) ) me entero de que ha sido lanzada la versión 1.3.1 de OpenSER. Esta es una versión de correcciones de bugs, y por lo tanto es recomendable actualizarse.  La configuración es totalmente compatible con la versión 1.3.0.

Podéis descargarla de aquí: http://www.openser.org/pub/openser/1.3.1/src/

Y aquí el ChangeLog: http://www.openser.org/pub/openser/1.3.1/ChangeLog-1.3.1 

openser.JPG

Etiquetas: ,

Nace AstSER, un proyecto para aunar las fuerzas de Asterisk y OpenSER

Diciembre 28 2007 por saghul

Ya se veía venir… Asterisk es actualmente la PBX software más extendida y utilizada, y OpenSER el proxy SIP más extendido y utilizado, así que varios desarrolladores de ambos proyectos han decidido juntarse para dotar a Asterisk de funcionalidades de proxy SIP.

Esto supone, entre otras cosas, que OpenSER actúe como chan_sip para Asterisk. Una buena noticia sin duda!! :)

openser.JPG

asterisk.png

Fuente Original.

Etiquetas: , ,

OpenSER 1.3 released!

Diciembre 13 2007 por saghul

Leyendo el siempre interesante blog de Jerocu me entero de esta super-noticia: OpenSER 1.3 ha sido lanzado!

Desde la versión 1.2 se han cambiado muchas cosas, que podéis leer en el ChangeLog o en este post del blog de Jerocu. Entre las mejoras cabe destacar el soporte de LDAP, base de datos Berkeley DB,… y muchos más! :)

openser.JPG

Etiquetas: ,

Material del curso de OpenSER del VON

Octubre 9 2007 por saghul

Ya están disponibles las transparencias y las configuraciones de ejemplo utilizadas en el curso de OpenSER al que asistí en el VON. La verdad es que el curso tenía bastante nivel, y las transparencias estaban muy bien, ahora toca revisar toda la config… ;)

Podéis descargar el material aquí: http://www.voice-sistem.ro/downloads/2007.08.29-Admin-Course/

Gracias Iñaki por el aviso :)

openser.JPG

Etiquetas: ,

De regreso del VON

Septiembre 30 2007 por saghul

El viernes volví del VON y hasta ahora no he sacado un ratito para poder postear algo…

La verdad es que estuvo muy bien, aunque me costó un webo llegar al sitio… El hotel donde se celebraba era garndísimo y había montones de stands, de los que pude pillar algún que otro boli :) y una alfombrilla de Digium! :)

No vi ninguna ’super-novedad’, pero mayormente el objetivo de mi viaje era asistir al curso de OpenSER.

El curso estuvo genial, fue impartido por el CEO y el CTO de Voice-System, donde sugió el fork de SER, que se lamó OpenSER.

Me sorprendió muy gratamente el alto nivel del curso, menos mal que había estudiado! :)

Resumiendo, creo que he aprendido bastantes cosillas, y el viaje ha merecido la pena. ¿A que sí, Iñaki? ;)

top_01.gif

Etiquetas: , ,

HOWTO: Presencia SIMPLE con OpenSER

Septiembre 15 2007 por saghul

Hoy vamos ha añadir presencia SIMPLE (Session Initiation Protocol for Instant Messaging and Presence Leveraging Extensions) a nuestro servidor OpenSER, de manera que podamos ver el estado de los dispositivos (si están online u ofline).

Para esto, lo primero que necesitamos es tener compilado el módulo ‘presence’ (si estáis instalando de paquetes deb saltaos esta parte:) ). El módulo ‘presence’ depende de la librería ‘libxml’, así que la instalamos:

#apt-get install libxml2 libxml2-dev

Editamos el Makefile de OpenSER y eliminamos ‘presence’ de la seción ‘exclude_modules’. Ahora, recompilamos:

#make clean
#make prefix=/
#make prefix=/ include_modules="mysql presence" modules
#make prefix=/ install

Ya tenemos los ficheros necesarios, ahora a configurar! Añadimos esto al principio del fichero, donde cargamos los módulos y ponemos los parámetros:

loadmodule “presence.so”
modparam(”presence”, “db_url”, “mysql://openser:openserrw@localhost/openser”)
modparam(”presence”, “max_expires”, 3600)
modparam(”presence”, “force_active”, 1)
modparam(”presence”, “server_address”, “sip:192.168.1.123:5060″)

Sustituye 192.168.1.123 por la IP de tu servidor OpenSER.

Tenemos que tratar la presencia, así que en la sección donde tratamos los mensajes de manera individual añadimos:

## Presencia
else if (method==”PUBLISH” || method==”SUBSCRIBE”) {
route(8);
exit;
}

Y por último creamos ese route 8 donde trataremos los mensajes relativos a la presencia:

# —————————————————————–
# PRESENCE handler
# —————————————————————–

route[8]
{

## Auth check
route(22);

## Alias check
route(20);

## Location check
route(21);

if (method==”PUBLISH”) {
handle_publish();
t_release();
}
else if (method==”SUBSCRIBE”) {
handle_subscribe();
t_release();
}
}

Ya está! Con esto ya tenemos OpenSER listo para soportar presencia!

NOTA (si usas X-Lite): El modo de presencia que hay que seleccionar es “Presence Agent”.

Etiquetas: ,

¡Me voy al VON!

Agosto 27 2007 por saghul

Cuando leí que en el el VON que se celebra en Roma en septiembre había un curso de administración de OpenSER me resultó muy interesante, pero no pensé en ir…

Hasta que me fui de “vacaciones” y estudié bastante a fondo OpenSER. Hoy he tomado la decisión y me he inscrito, para poder asistir al curso, visitar la feria, y de paso ver Roma, que nunca he estado allí. ;)

Si alguien se anima y va, nos vemos! :)

Etiquetas: , ,

HOWTO: OpenSER + Asterisk como Voicemail Server

Agosto 22 2007 por saghul

En esta ocasión vamos a conectar de nuevo OpenSER con Asterisk, pero para utilizarlo a modo de Voicemail Server. El comportamiento que queremos es el siguiente:

  • Al marcar *98: Menú de configuración general de buzones. Se nos pide el número de buzón y el PIN.
  • Al marcar *981: Menú de configuración de nuestro buzón. (Solo se nos pide el PIN).
  • Si al llamar a una extensión esta ocupada o no contesta haces saltar el buzón.

Bien, pues manos a la obra!

Vamos a preparar una failure_route, donde se llegará en caso de que la llamada no se haya completado correctamente, es decir, se haya recibido una respuesta 4xx o 5xx.

failure_route[1]
{
if(!t_was_cancelled()) {
if (t_check_status("(486)|(408)")) {
rewritehostport("ip-de-asterisk:puerto");
append_branch();
## Activamos el flag 10 para evitar bucles
xlog("L_INFO","$Cbx---> Redirigiendo al Voicemail...$Cxx\n");
setflag(10);
route(1);
exit;
}
}
}

Con esto, si llamada llega a este bloque será enviada a Asterisk, para cubrir el caso 3. Ahora, para cubrir los casos 1 y 2, editaremos la ruta donde manejamos los INVITE, para añadir lo siguiente:

## Comprobamos si no esta marcado el flag 10, para si da error mandar la llamada al voicemail
if(!isflagset(10)) {
t_on_failure("1");
};

Con esto, si se produce un error en la llamada, esta será enviada al buzón de voz. A continuación añadimos las funcionalidades al pulsar *98 y *981:

if(uri=~"^sip:\*98@") {
xlog("L_INFO","$Cbx--- LLAMADA A SERVIDOR DE VOICEMAIL GENERAL ---$Cxx\n");
route(5);
}

if(uri=~"^sip:\*981@") {
xlog("L_INFO","$Cbx--- LLAMADA A SERVIDOR DE VOICEMAIL (USUARIO )---$Cxx\n");
## Si ya tiene la cabecera se la quito (para que no me haga trampa)
if(is_present_hf("X-VM")) {
xlog("L_INFO","$Cbx--- Eliminada cabecera X-VM $Cxx\n");
remove_hf("X-VM");
}
append_hf("X-VM: $fU\r\n");
route(5);
}

El route[5] ya lo conocemos, es el que envía las peticiones a Asterisk:

route[5]
{
xlog("L_INFO","$Cbx---> Redirigiendo a Asterisk...$Cxx\n");
rewritehostport("10.68.42.134:5070");
t_relay();
exit;
}

Como se puede apreciar, al marcar *981, se añade la cabecera personalizada X-VM, para marcar el número de buzón y poder leerlo desde Asterisk.

Llegado este punto, ya tenemos OpenSER configurado, solo nos queda Asterisk, que es mucho más fácil, simplemente añadimos lo siguiente al contexto donde entren las llamadas de OpenSER:

exten => *98,1,Answer
exten => *98,n,VoicemailMain()
exten => *98,n,Hangup

exten => *981,1,Answer
exten => *981,n,VoicemailMain(${SIP_HEADER(X-VM)})
exten => *981,n,Hangup

exten => _XXX,1,Answer
exten => _XXX,n,Voicemail(${EXTEN})
exten => _XXX,n,Hangup

En esta configuración de Asterisk hay 2 cosas que reseñar:

  • El uso de la función SIP_HEADER para recuperar el valor de la cabecera personalizada X-VM que hemos insertado desde OpenSER.
  • Hemos utilizado el patrón _XXX porque nuestras extensiones son de 3 dígitos, pero si fueran de 4 habría que ampliarlo.

Espero que sirva. ;)

Etiquetas: , ,

HOWTO: Crear un paquete Deb de OpenSER

Agosto 20 2007 por saghul

Anteriormente hemos visto como compilar OpenSER, pero a veces son más manejables los paquetes Deb. Aunque en el repositorio unstable de Debian tenemos la última versión quizá queramos crear los paquetes nosotros mismos, creados y compilados en nuestra propia máquina.

Manos a la obra! Primero necesitamos descargar algunos paquetes para cumplir las dependencias:

#apt-get install debhelper dpatch libexpat1-dev libxml2-dev libpq-dev libradiusclient-ng-dev unixodbc-dev libxmlrpc-c3-dev pibperl-dev libsnmp9-dev fakeroot

Una vez tenemos las dependencias instaladas, entramos en el directorio donde tengamos las fuentes de OpenSER y ejecutamos:

#chmod +x packaging/debian/rules

Adicionalmente, podemos retocar el archivo rules para que no se compilen algunos módulos, pero no pasa nada porque se compilen todos, ya que se crean varios paquetes Deb, y podemos elegir cuales instalar.

Para comenzar con la creación de paquetes ejecutamos:

#make deb

Tras un rato compilando y creando paquetes, obtendremos lo siguiente:

openser-deb.jpg

Para instalar los paquetes solo tenemos que hacer:

#dpkg -i nombre-del-paquete.deb

Etiquetas: ,

HOWTO: Conexión de OpenSER con Asterisk

Agosto 17 2007 por saghul

OpenSER es un software excelente, pero no debemos olvidar que es un SIP Proxy, y por tanto, lo único que hace es manejar mensajes SIP. Asterisk, por el contrario, es una PBX y ofrece servicios a sus usuarios, como Voicemail, por ejemplo. Entonces… ¿porque no juntarlos?

Asterisk puede usarse como “proveedor de servicios” como PSTN Gateway o Voicemail Server de OpenSER. Para ello haremos lo siguiente:

Primero configuraremos Asterisk para que reciba las peticiones de OpenSER. Para ello editamos el fichero sip.conf y añadimos lo siguiente:


[openser]
type=friend
context=default
insecure=port,invite
host=localhost

De esta manera, le hemos indicado a Asterisk que acepte conexiones entrantes sin autenticación (el insecure) de la IP indicada en host (en este caso localhost).

NOTA: Si estáis haciendo pruebas con OpenSER y Asterisk en la misma máquina, modificad el puerto de escucha de SIP de Asterisk al 5070 por ejemplo, porque sino los dos estarían escuchando el mismo puerto.

A continuación, tenemos que indicar en la configuración de OpenSER cuando le vamos a mandar una llamada a Asterisk. Para ello editaremos la sección de nuestro fichero openser.cfg y en la sección donde manejamos los INVITE, tras la autenticación, añadimos lo siguiente:


if(uri=~"^sip:[69][0-9]{8}@.*") {
xlog("L_INFO","$Cbx--- LLAMADA A FIJO O MOVIL ---$Cxx\n");
route(5);
}

Este bloque de código comprueba que el número marcado empiece por 6 o por 9 y que luego tenga otros 8 dígitos, es decir, si es un fijo o un móvil. En caso de que esta condición se cumpla, nos muestra un mensaje de log y nos envía a la ruta 5, donde haremos la conexión con Asterisk:


route[5]
{
xlog("L_INFO","$Cbx---> Redirigiendo a Asterisk...$Cxx\n");
rewritehostport("10.68.42.134:5070");
t_relay();
exit;
}

Como se puede observar, lo que se hace es mostrar un log, después, mediante la función rewritehostport, se reescribe la dirección de destino de la petición con el parámetro entre paréntesis (aquí indicaremos la IP y puerto de Asterisk). Tras hacer esto, hacemos un t_relay, para que enrute la petición.

Ahora que la petición ha sido enviada a Asterisk, le corresponde a este llevarla a buen puerto. :)

El ejemplo es muy básico pero ilustra la manera de conectar OpenSER con Asterisk para su uso como PSTN Gateway (por ejemplo) de una manera sencilla.

Etiquetas: , ,




[x] Cerrar
E-mail