Hello,
I experienced a strange issue with some of VoIP accounts.
When the INVITE comes into MANAGE_FAILURE, after timeout, the config identifies, with "dialplan", the right Asterisk instance that should handle the call for voicemail.
This part is okay, and results in a new INVITE with the Request-URI formed with the right domain (eg. sip:<NUMBER>@asterisk3). Then, the request goes to RELAY. Here is the issue: sometimes, the request is forwarded to the IP of the UA (the one initially contacted) instead of the IP of Asterisk.
I can't figure out the difference between a succeeded call and a failed one.
If someone has an idea. Here is the config that handles the VoiceMail:
failure_route[MANAGE_FAILURE] {
[…]
if (isflagset(24)) {
$avp(s:inv_timeout) = "5";
t_set_fr($avp(s:inv_timeout)*1000);
if (avp_db_load("$to/username","$avp(s:vm_uri)/usr_vm")) {
resetflag(24);
avp_pushto("$ruri","$avp(s:vm_uri)");
# Dynamic routing
if (avp_db_load("$ruri/username","$avp(s:client)/usr_fai")) {
if (dp_translate("2","$avp(s:client)/$avp(s:dest)") == 1) {
$ru = "sip:" + $rU + "@" + $avp(s:dest);
} else {
# Load default voicemail
$avp(s:client) = "DEFAULT_VM";
dp_translate("2","$avp(s:client)/$avp(s:dest)");
$ru = "sip:" + $rU + "@" + $avp(s:dest);
};
} else {
# Load default voicemail
$avp(s:client) = "DEFAULT_VM";
dp_translate("2","$avp(s:client)/$avp(s:dest)");
$ru = "sip:" + $rU + "@" + $avp(s:dest);
}
} else {
xlog("L_WARN","time=[$Tf] call id=[$ci] call seq=[$cs] contact header=[$ct] from uri=[$fu] from tag=[$ft] request's method=[$rm] request's uri=[$ru] to uri=[$tu] to tag=[$tt] sip message id=[$mi] process id=[$pp] ip source=[$si] flags=[$mf], User have no mail box\n");
exit;
};
prefix("710");
xlog("L_WARN","time=[$Tf] call id=[$ci] call seq=[$cs] contact header=[$ct] from uri=[$fu] from tag=[$ft] request's method=[$rm] request's uri=[$ru] to uri=[$tu] to tag=[$tt] sip message id=[$mi] process id=[$pp] ip source=[$si] flags=[$mf], failure route to Voice Mail\n");
route(RELAY);
exit;
}
Regards,
Igor.