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(a)openser.org
http://openser.org/cgi-bin/mailman/listinfo/users
--
Klaus Darilion
nic.at