On Tuesday 04 June 2013 12:07:35 hiro wrote:
Sometimes it also seemed that kamailio was sending the INVITE to the phone instead of to freeswitch, or when i played around between changing $du or $ru the INVITE gets sends to freeswitch but with the wrong URI pointing to the phone instead of 127.0.0.1:5070 which is where freeswitch is listening. I guess it would be easier to reproduce if that random factor wasn't there, but at least it's failing most of the time, only in different ways. I had hoped I could get at least confirmation that it "works here" to keep me going :P I will test with xlog when I can test at home again which would at least exclude NAT issues.
It works here :)
I know your pain. I spend days figuring out the magic trick was to set $du to null (which I stumbled upon by accident). Without $du=$null traffic was being routed (seemingly random) to either the registered phone or the actual voicemail server.
# route to voicemail server route[TOVOICEMAIL] { if(!is_method("INVITE")) 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($avp(dst_voicemail)) { $du=$null; $ru = "sip:tovm-" + $avp(dst_voicemail) + "@" + $sel(cfg_get.voicemail.srv_ip) + ":" + $sel(cfg_get.voicemail.srv_port);
route(RELAY);
exit; }
return; }
failure_route[MANAGE_FAILURE] { .... # serial forking # - route to voicemail on busy or no answer (timeout) if (t_check_status("486|408")) { route(CALLREDIRECT); route(TOVOICEMAIL); exit; } .... }