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...
--
Iñaki Baz Castillo