Kamailio TLS/UDP o UDP/TLS – Solucionar problema con el Buzón de voz

Estaba revisando la documentación del próximo VideoCurso de Kamailio relativa a las llamadas TLS/UDP y UDP/TLS, es decir la posibilidad de poder realizar llamadas entre dispositivos que soportan el cifrado de la señalización SIP y del flujo media, y dispositivos que no los soportan. Con esta configuración es posible también utilizar el cifrado de la señalización SIP y del flujo media con base en el dispositivo a que se está llamando.

 

El único problema que tenía con la configuración actual es que si un dispositivo que no utiliza cifrado de la señalización SIP y del flujo media llama a un dispositivo que soporta el cifrado de la señalización SIP y del flujo media y este ultimo no contesta y/o rechaza la llamada, la llamada llegaba al servidor media (en este caso FREESWITCH) con en el anexo SDP todo lo relacionado con el cifrado del flujo media cuando no debería ser así ya que FS está configurado para aceptar flujo media sin cifrado.

 

La verdad hace tiempo que intentaba solucionar este problema y no lo lograba, mejor dicho no sabía donde tenía que realizar el cambio y que cambio necesitaba realizar.

 

Hoy, como siempre pasa con estas cosas, tuve como una “iluminación” y me acordé de una función del modulo COREX que quizás podía servir, append_branch().

 

Claramente no puedo mostrarles todas la configuración de Kamailio pero el bloque donde realicé la corrección es este:

 

route[TOVOICEMAIL] {

#!ifdef WITH_VOICEMAIL

if(!is_method("INVITE|SUBSCRIBE")) return;

 

# check if VoiceMail server IP is defined

if (strempty($sel(cfg_get.voicemail.srv_ip))) {

xlog("SCRIPT: VoiceMail routing enabled but IP not defined\n");

return;

}

if(is_method("INVITE")) {

if($avp(oexten)==$null) return;

 

$ru = "sip:" + $avp(oexten) + "@" + $sel(cfg_get.voicemail.srv_ip)

+ ":" + $sel(cfg_get.voicemail.srv_port);

} else {

if($rU==$null) return;

 

$ru = "sip:" + $rU + "@" + $sel(cfg_get.voicemail.srv_ip)

+ ":" + $sel(cfg_get.voicemail.srv_port);

}

append_branch();

t_on_branch("MANAGE_BRANCH");

route(RELAY);

exit;

#!endif

 

He añadido las dos lineas en negrita, la primera añade un nuevo branch y la segunda envía la nueva transacción a la ruta de tipo BRANCH con nombre MANAGE_BRANCH. Como ahí es donde se realiza el puente UDP/TLS o TLS/UDP y como la transacción es nueva, se aplicarán todas las correcciones requeridas y la llamada llegara correctamente a FS

 

Claramente la misma configuración aplica a las llamadas UDP/WebRTC y WebRTC/UDP

 

Me comentan

 

Vota el Articulo: 

Promedio: 5 (1 voto)
Evalúa la calidad del articulo
Suscribirse a Comentarios de "Kamailio TLS/UDP o UDP/TLS – Solucionar problema con el Buzón de voz" Suscribirse a VozToVoice - Todos los comentarios