[Kamailio-Users] rewriteuser with AVP
Daniel-Constantin Mierla
miconda at gmail.com
Wed Nov 5 18:43:37 CET 2008
Hello,
if you want to set the R-URI username with the value from the avp, then use:
$rU = $avp(s:callee_ipbx);
Cheers,
Daniel
On 11/05/08 14:16, Samuel Muller wrote:
> Hello all,
>
> I've a little question :
> I got a username in an AVP by avp_load_radius, and I would rewrite the
> uri with it.
>
> The objectives is to replace the r-uri by an ipbx uri, then forward
> the call to it by a new branch (to not loose the phone number requested).
> in this case : 0123452000 is behind a spa9000. The user 0123452000
> has an AVP called "ipbx", that i'm using to do some groups and
> permissions (plus the rewrite).
>
> actually, it does not work, i tried many ways :
>
> # load radius attributes of the callee
> if (!avp_load_radius("callee"))
> {
> xlog("L_INFO","-> user unknown in radius usr db : $ru");
> route(15); # route PSTN
> }
>
> # verify the AVPs we got (caller and callee)
> xlog("L_INFO", " -AVP------------------------------------- ");
> avp_print();
> xlog("L_INFO", " ----------------------------------------- ");
>
> # callee is behind an ipbx (avp ipbx) ?
> if (is_avp_set("$avp(s:callee_ipbx)"))
> {
> xlog("L_INFO", "-> callee is behind an ipbx :
> $avp(s:callee_ipbx)");
> setflag(14); # flag IPBX
> #subst_user('/$rU$/$avp(s:callee_ipbx)/');
> #rewriteuri("sip:$avp(s:callee_ipbx)@$rd"**);
> rewriteuser($avp(s:callee_ipbx));
> }
>
> # callee in usrloc ?
> if (lookup("location"))
> {
> append_hf("P-hint: usrloc applied\r\n");
> xlog("L_INFO","-> registered user called : $tu");
> route(7); # route FORWARD
> }
> else
> {
> xlog("L_INFO","-> 480: local user not found in usrloc
> : $tu");
> sl_send_reply("480","Temporarily Unavailable");
> drop;
> }
>
> and in the debugs log :
>
> Nov 5 13:04:51 ser0 kamailio[2930]:
> -ROUTE--INBOUND--------------------------
> Nov 5 13:04:51 ser0 kamailio[2930]: DBG:avp_radius:load_avp_user:
> rc_auth Success
> Nov 5 13:04:51 ser0 kamailio[2930]: DBG:avp_radius:load_avp_user: AVP
> 'callee_asserted_id'/0='0123452000'/0 has been added
> Nov 5 13:04:51 ser0 kamailio[2930]: DBG:avp_radius:load_avp_user: AVP
> 'callee_ipbx'/0='spa9000'/0 has been added
> Nov 5 13:04:51 ser0 kamailio[2930]:
> -AVP-------------------------------------
> Nov 5 13:04:51 ser0 kamailio[2930]: INFO:avpops:ops_print_avp:
> p=0x7fb3d7e5cfe8, flags=0x0003
> Nov 5 13:04:51 ser0 kamailio[2930]: INFO:avpops:ops_print_avp:
> ^I^I^Iname=<callee_ipbx>
> Nov 5 13:04:51 ser0 kamailio[2930]: INFO:avpops:ops_print_avp:
> ^I^I^Ival_str=<spa9000 / 7>
> Nov 5 13:04:51 ser0 kamailio[2930]: INFO:avpops:ops_print_avp:
> p=0x7fb3d7e5cf88, flags=0x0003
> Nov 5 13:04:51 ser0 kamailio[2930]: INFO:avpops:ops_print_avp:
> ^I^I^Iname=<callee_asserted_id>
> Nov 5 13:04:51 ser0 kamailio[2930]: INFO:avpops:ops_print_avp:
> ^I^I^Ival_str=<0123452000 / 10>
> Nov 5 13:04:51 ser0 kamailio[2930]: INFO:avpops:ops_print_avp:
> p=0x7fb3d7e5ced8, flags=0x0003
> Nov 5 13:04:51 ser0 kamailio[2930]: INFO:avpops:ops_print_avp:
> ^I^I^Iname=<caller_asserted_id>
> Nov 5 13:04:51 ser0 kamailio[2930]: INFO:avpops:ops_print_avp:
> ^I^I^Ival_str=<0123451011 / 10>
> Nov 5 13:04:51 ser0 kamailio[2930]: INFO:avpops:ops_print_avp:
> p=0x7fb3d7e5ce38, flags=0x0003
> Nov 5 13:04:51 ser0 kamailio[2930]:
> -----------------------------------------
> Nov 5 13:04:51 ser0 kamailio[2930]: -> callee is behind an ipbx : spa9000
> Nov 5 13:04:51 ser0 kamailio[2930]: DBG:registrar:lookup:
> '$avp(s at sip.720.fr <mailto:s at sip.720.fr>' Not found in usrloc
> Nov 5 13:04:51 ser0 kamailio[2930]: -> 480: local user not found in
> usrloc : sip:0123452000 at sip.720.fr <mailto:sip%3A0123452000 at sip.720.fr>
> Nov 5 13:04:51 ser0 kamailio[2930]: DBG:core:parse_headers:
> flags=ffffffffffffffff
> Nov 5 13:04:51 ser0 kamailio[2930]: DBG:core:check_via_address:
> params 77.246.81.162 <http://77.246.81.162>, 192.168.0.134
> <http://192.168.0.134>, 0
> Nov 5 13:04:51 ser0 kamailio[2930]: DBG:core:destroy_avp_list:
> destroying list 0x7fb3d7e5d040
> Nov 5 13:04:51 ser0 kamailio[2930]: DBG:core:receive_msg: cleaning up
>
>
> -> But, if I did it by :
>
> if (uri =~ "^sip:012345200{1}")
> {
> rewriteuri("sip:spa9000 at sip.720.fr
> <mailto:sip%3Aspa9000 at sip.720.fr>");
> }
> if (lookup("location"))
> {
> append_hf("P-hint: usrloc applied\r\n");
> xlog("L_INFO","-> registered user called : $tu");
> route(7); # route FORWARD
> }
>
> it works great, and the call is ok (the ipbx forward correctly the
> request the phone behind him).
>
>
> Anyone has an idea ? thanks in advance !
>
>
> --
> Samuel MULLER
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Users mailing list
> Users at lists.kamailio.org
> http://lists.kamailio.org/cgi-bin/mailman/listinfo/users
>
--
Daniel-Constantin Mierla
http://www.asipto.com
More information about the Users
mailing list