hola lista , tengo algunos inconvenientes para lograr esta futura que
a mi parecer esta genial , la idea es que al llamar a una extensión
interna si no contesta o esta ocupada si valla al voicemail de
asterisk esto dentro de la función failure_route [1] , o hacer un
callforward de una extensión a otra estilo asterisk , para esto
agregue el siguiente código a mi kamailio :
if(avp_db_load("$ru/username","$avp(s:callfwd)")) {
avp_pushto("$ru", "$avp(s:callfwd)");
xlog("forwarded to: $avp(s:callfwd)");
route(1);
exit;
}
que hace uso de la función avp_db_load la cual carga un string AVP al
que llamo callfwd , registro el callfwd en la tabla preferencias de
openser junto con sus respectivos usuarios , hago una llamada para ver
si hace el call forward pero nada , aun así me debería salir el buzón
de voz del usuario pero nada ..
el esquema es algo asi
UA SIP 113 llama al ===> UA SIP 110 ====> UA SIP 119 (Destino Final)
=
=
Forward
os cuento cuanto termino de hacer la llamada sin contestar de
cualquiera de los SIP , este se la pasa al asterisk ahí va bien , pero
este me genera un WARNING
No application 'Voicemail' for extension (netsoluciones, u110, 1)
== Spawn extension (netsoluciones, u110, 1) exited non-zero on
'SIP/192.168.10.1-b7d011d8'
detallo mi configuración en kamailio, para ver que de raro miran que yo no veo:
loadmodule "avpops.so"
modparam("avpops", "avp_url",
"mysql://openser:openserrw@localhost/openser")
modparam("avpops", "avp_table", "usr_preferences")
modparam("tm", "fr_timer", 5)
modparam("tm", "fr_inv_timer", 20)
route[1] {
t_on_failure("1");
if (!t_relay()) {
sl_reply_error();
};
exit;
dentro donde manejo los invite , anexo el codigo
if(avp_db_load("$ru/username","$avp(s:callfwd)")) {
avp_pushto("$ru", "$avp(s:callfwd)");
route(1);
exit;
}
if (!lookup("location")) {
if (does_uri_exist()) {
revert_uri();
prefix("u");
rewritehostport("192.168.10.1:5070");
route(1);
} else {
sl_send_reply("404", "User Not Found");
exit;
}
sl_send_reply("404", "User Not Found");
exit;
};
route(1);
}
failure_route[1] {
if (t_check_status("487")) {
exit;
};
if (t_check_status("486")) {
revert_uri();
prefix("b");
xlog("L_ERR","Stepped into the 486 ruri=<$ru>");
rewritehostport("192.168.10.1:5070");
append_branch();
route(1);
exit;
};
if (t_check_status("408") || t_check_status("480")) {
revert_uri();
prefix("u");
xlog("L_ERR","Stepped into the 480 ruri=<$ru>");
rewritehostport("192.168.10.1:5070");
append_branch();
route(1);
exit;
};
}
lo raro es que viendo las trazas del sip , no veo que pasan ni el 487
, 486 408 , ...
saludoss
rickygm