Hello, I tried to use avp_subst to extract the part <......> of a Remote-Party-ID
$avp(s:merker)= Remote-Party-ID: "test"sip:12345@localhost;party=calling;id-type=subscriber;screen=yes;privacy=full avp_subst("$avp(s:merker)/$avp(s:merker1)", "/(.*)>(.*)/\1>/");
the result for merker1 is Remote-Party-ID: "test"sip:12345@localhost
what must I change in the re to get this result? sip:12345@localhost
thanks in advance, Andreas
Hi Andreas!
I have not take a look at your regexp, but maybe my code for parsing P-Asserted-Identity helps.
regards klaus
route[7] {
xlog("L_INFO","======================================================================='\n"); xlog("L_INFO","body of P-Asserted-Identity: header is '$hdr(P-Asserted-Identity)'\n");
# fetch and parse P-Asserted-Identity
avp_write("$hdr(P-Asserted-Identity)","$avp(s:pai)"); xlog("L_INFO","$$avp(s:pai) = '$avp(s:pai)'\n");
# check if addr-spec or name-addr and convert to addr-spec if (avp_check("$avp(s:pai)","re/.*<.*>.*")) { xlog("L_INFO","P-Asserted-Identity header is in name-addr format, fetch addr-spec\n"); if (!avp_subst("$avp(s:pai)/$avp(s:paias)","/<[[:blank:]]*tel:([^[[:blank:]]]+)[[:blank:]]*>/\1/")) { xlog("L_INFO","ERROR: failed to fetch name-addr 1\n"); } } else { avp_copy("$avp(s:pai)","$avp(s:paias)"); } xlog("L_INFO","P-Asserted-Identity addr-spec = '$avp(s:paias)', fetch tel URI\n");
if (avp_subst("$avp(s:paias)/$avp(s:cli)","/^tel:(+[0-9-./]+)(.*)$/\1/")) { xlog("L_INFO","tel URI with E.164 number found, CLI = '$avp(s:cli)'\n"); avp_subst("$avp(s:clitemp)/$avp(s:cli)","/+/00/"); } else if (avp_subst("$avp(s:paias)/$avp(s:cli)","/^tel:([0-9-./]+)(.*)$/\1/")) { xlog("L_INFO","tel URI with local number found, CLI = '$avp(s:cli)'\n");
avp_subst("$avp(s:paias)/$avp(s:params)","/^tel:([0-9-./]+)(.*)$/\2/"); xlog("L_INFO","tel URI with local number found, params = '$avp(s:params)'\n"); if (avp_subst("$avp(s:params)/$avp(s:context)","/^.+;phone-context=(^;).*/\1/")) { xlog("L_INFO","tel URI with local number found, phone-context = '$avp(s:context)'\n"); } else { xlog("L_INFO","ERROR: local number without context\n"); } } else { xlog("L_INFO","'$avp(s:paias)' is not a valid tel URI \n"); }
# evaluate privacy header (CLIR) avp_write("$hdr(Privacy)","$avp(s:privacy)"); if ( avp_check("$avp(s:privacy)","re/id/i") ) { uac_replace_from("Anonymous","sip:anonymous@invalid"); remove_hf("P-Asserted-Identity"); } else { uac_replace_from("$avp(s:cli)","sip:$avp(s:cli)@mydomain.com"); remove_hf("P-Asserted-Identity"); }
avp_print(); }
Andreas Heise wrote:
Hello, I tried to use avp_subst to extract the part <......> of a Remote-Party-ID
$avp(s:merker)= Remote-Party-ID: "test"sip:12345@localhost;party=calling;id-type=subscriber;screen=yes;privacy=full
avp_subst("$avp(s:merker)/$avp(s:merker1)", "/(.*)>(.*)/\1>/");
the result for merker1 is Remote-Party-ID: "test"sip:12345@localhost
what must I change in the re to get this result? sip:12345@localhost
thanks in advance, Andreas
Users mailing list Users@openser.org http://openser.org/cgi-bin/mailman/listinfo/users