El Lunes, 5 de Mayo de 2008, Fernando Yubero escribió:
Que tal participantes de la lista, creo nunca hasta ahora haber escrito un mensaje, aunque hace varios meses que leo y aprendo de los comentarios de ustedes. Les pido ayuda sobre la configuracion a utilizar en un openser y en un sems para proveer de mensajes de red a los clientes de openser, por ejemplo en el caso de un numero invalido, o sea un mensaje 404 que por medio de early media le pueda dar una locucion al cliente explicando que el numero que se a ingresa no corresponde a un abonado valido. Creo haber leido que tenian implementaciones funcionando, Iñaki??? por que tuvo que traducir la causa de desconexion para no obtener doble locucion, o sea en el tramo de sip de la llamada y desde la PSTN nuevamente. Desde ya muy agradecido.
Yo instalé SEMS usando su nuevo SIP stack en vez de usarlo amarrado a un SER/OpenSer por unixsockets.
Por una parte prepara el SEMS para que disponga de la aplicación de ejemplo "early-announce" y funcione con su nuevo SIP stack. Algunos parámetros del sems.conf:
# Que reciba las indicaciones vía headers. application=$(apphdr) # Que cargue su SIP stack y la aplicación. load_plugins=sipctrl;early_announce;announcement;wav;gsm;
Luego en OpenSer:
------------------------------------------------------ route[ROUTE_TO_MEDIA_SERVER] {
t_on_reply("ON_REPLY_TO_MEDIA_SERVER"); t_on_failure("ON_FAILURE_TO_MEDIA_SERVER");
if ($rU == "user_not_available") { append_hf("P-App-Name: early_announce\r\n"); # El usuario existe pero no puede recibir llamadas (!= 404). append_hf("P-App-Param: Final-Reply-Code=480;Final-Reply-Reason=Number Not Available Now\r\n"); }
else if ($rU == "user_busy") { append_hf("P-App-Name: early_announce\r\n"); append_hf("P-App-Param: Final-Reply-Code=486;Final-Reply-Reason=Busy Here\r\n"); }
else if ($rU == "number_doesnt_exist") { append_hf("P-App-Name: early_announce\r\n"); # Ojo, i respondes 404 el operador/carrier responderá el ISUP análogo y el operador llamante generará también su early-media. # Por ello, o respondemos algo != 404 o convencemos a nuestro carrier para que mapee el 404 a otro código ISUP. append_hf("P-App-Param: Final-Reply-Code=404;Final-Reply-Reason=Number Doesn't Exist\r\n"); }
else if ($rU == "destination_not_allowed") { append_hf("P-App-Name: early_announce\r\n"); append_hf("P-App-Param: Final-Reply-Code=403;Final-Reply-Reason=Destination Not Allowed\r\n"); }
rewritehostport("MEDIA_SERVER_IP:MEDIA_SERVER_PORT"); t_realy(); ------------------------------------------------------
Y luego durante el script si por ejemplo nos llaman desde la PSTN a un número que no existe: $rU = "number_doesnt_exist"; route(ROUTE_TO_MEDIA_SERVER);
Si llaman a un número nuestro que sí existe pero cuyo usuario SIP no está registrado: $rU = "user_not_available"; route(ROUTE_TO_MEDIA_SERVER);
Si un usuario nuestro llama a un número internacional no permitido: $rU = "destination_not_allowed"; route(ROUTE_TO_MEDIA_SERVER);
Lo mismo si nos llaman y el usuario devuelve busy, etc etc etc...