El Monday 03 March 2008 12:46:04 Marc LEURENT escribió:
Hello
I have trouble with number dialed starting with +
CDRTool doesn' understand it.
Yes, I revised the PHP code and it's not possible to set "+" as
international
prefix, just numbers :(
So I have to strip it from the request and replace it
by 00!
The problem is that even using this at the begenning of OpenSER script,
it's not working (see CDRTool log below)
Any idea how to solve it?
Thanks
# normalization to e164
if($ruri.user =~ "^\+[1-9][0-9]+") {
xlog("STRIPING + For e164 NORMALIZATION \r\n");
strip(1);
prefix("00");
subst('/^To:(.*)sip:\+(.*)$/To:\1sip:00\2/ig');
};
Please, don't change the "To", it's not necessary at all !
OpenSER config extract:
# ATTENTION: DO NOT PUT ; at the end of the radius_extra attribute
modparam("acc", "radius_extra", "
Called-Station-Id=$tu;
Calling-Station-Id=$fu;
Canonical-URI=$avp(to_destination);
User-Name=$avp(user_name);
Billing-Party=$avp(billing_party);
Sip-User-Realm=$ar;
SIP-Proxy-IP=$Ri;
Source-IP=$si;
Source-Port=$sp;
Acct-Authentic=$avp(s:authentic);
From-Header=$hdr(from);
User-Agent=$hdr(user-agent);
Contact=$hdr(contact);
Event=$hdr(event)")
# Set the acc flags
xlog("JUSTE BEFORE SETTING FLAGS FOR RADIUS\r\n");
if(is_method("INVITE") && !has_totag()) {
xlog("L_INFO", "I AM SETTING THE FLAGS FOR RADIUS
\r\n");
# $avp(s:authentic) = 1;
# $avp(can_uri) = $ru; # SIP Request's URI
$avp(user_name) = $au + "@" + $ar;
$avp(billing_party) = $au + "@" + $ar;
$avp(to_destination) = $tu;
xlog("SETTING FLAGS 1 FOR RADIUS \r\n");
setflag(1); # radius_flag
xlog("SETTING FLAGS 2 FOR RADIUS \r\n");
setflag(2); # radius_missed_flag
};
CDRTool looks for the Canonical-URI radius attribute, and you don't set it.
Note that in "radius_extra" you set
"Canonical-URI=$avp(to_destination)", so
add this after RURI transformation ("+" -> "00").
$avp(to_destination) = $ru;
Just it.
;)
--
Iñaki Baz Castillo
ibc(a)in.ilimit.es