Kamailio 5.X y el modulo TSILO

El modulo TSILO permite guardar algunos datos de una transacción SIP en una tabla de memoria y reutilizarlos después que se hayan realizado una serie de operaciones, comandos. ¿Para que se utiliza? Para poder enviar la llamada (INVITE) a todos los dispositivos que se van registrando a lo largo de la llamada; esto porque algunos dispositivos pueden estar "durmiendo" y necesitan primero ser "despertados". Este es el caso de todos los aparados que utilizan iOS ya que, a partir de la versión 8, si las aplicaciones VoIP se encuentran en segundo plano, pierden el registro. Para ser despertados necesitan recibir un "mensaje" que les diga que tienen que volverse a registrar. Una vez que se registren, van a recibir la llamada pendiente.

Visto gráficamente sería:

Bob llama Alice que no se encuentra registrada. Kamailio suspende la transacción y, a través de un servidor de notificaciones, despierta Alice. Cuando el dispositivo de Alice recibe la notificación, se vuelve a registrar en Kamailio. Una vez que Kamailio ve Alice nuevamente registrada, le envía el INVITE pendiente. En este caso sería suficiente utilizar dos funciones activadas por el modulo TMX:

  • t_suspend - suspende la ejecución de una solicitud SIP en una transacción
  • t_continue - continua la ejecución de una transacción SIP identificada por algunos parámetros específicos que se pasan a la función

¿Que pasa si Alice está registrada desde distintos dispositivos que funcionan de la misma manera?

que tendrán que ser despertados uno a uno y cuando estén registrados nuevamente, recibirán la llamada. El modulo TSILO permite guardar la transacción inicial e crear un nuevo branch para cada nuevo dispositivo que se va registrando y de esta forma enviar una INVITE a cada uno.

En el anexo presente en esta entrada encuentran una presentación realizada por Federico Cabiddu (autor del modulo TSILO) en Kamailio World 2015; la presentación incluye ejemplos de configuración para el script de Kamailio.

Me comentan