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