HOWTO: Conexión de OpenSER con Asterisk

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.

One thought on “HOWTO: Conexión de OpenSER con Asterisk

  1. Hola estoi intentando unir Asterisk con opensips.

    Me pregunto que tengo que poner en routes para que dos usuarios de asterisk se registren pasando por opensips.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *