Does anybody have samples of using LCR strip and prefix? I've tried configuring it for an ITSP that wants US numbers to be 10-digits and international calls to be prefixed with 011. I keep these numbers in E.164 format, so, for example:
+12128543754 should have the ruri rewritten to: 2128543754 and +44123456789 should become 01144123456789
Here are relevant portions of my lcr tables:
lcr routes +--------------+----------+--------+----------+ | prefix | from_uri | grp_id | priority | +--------------+----------+--------+----------+ | +1__________ | % | 5 | 10 | | +1__________ | % | 7 | 20 | | +__ | % | 8 | 20 | | +__ | % | 6 | 10 |
lcr gateways (edited to fit and hide details:-) +-----------+---------+------+-----+-----+--------+-------+--------+ | gw_name | ip | port | uri_| tran| grp_id | strip | prefix | +-----------+---------+------------+-----+--------+-------+--------+ | prov1-us | x.x.x.x | 5060 | 1 | 1 | 5 | 2 | | | prov1-int | x.x.x.x | 5060 | 1 | 1 | 6 | 1 | 011 | | voip1-int | y.y.y.y | 5060 | 1 | 1 | 7 | 1 | 011 | | voip1-us | y.y.y.y | 5060 | 1 | 1 | 8 | 2 | |
openser.cfg snippet (our internal dialplan has 93 for outside line):
xlog("L_INFO","route[4]: SIP-to-PSTN call from <$fu> to <$tu> routed\n"); if (uri=~"^sip:931") { subst_user('/^931/+1/'); # rewrite to E.164 subst('/^(To:[^0-9]*)931(.*)$/\1+1\2/'); # rewrite to E.164 } if (uri=~"^sip:93011") { subst_user('/^93011/+/'); # rewrite to E.164 subst('/^(To:[^0-9]*)93011(.*)$/\1+\2/'); # rewrite to E.164 } xlog("L_INFO","route[4]: SIP-to-PSTN r-uri is now <$ru>\n"); # rewrite callee's 5-digit extensions to +121285..... if !((isflagset(6) && !isflagset(4)) || isflagset(5)) { subst('/^(From:.*<sip:)([134][0-9]{4}@)/\1+121285\2/'); subst('/^(Remote-Party-ID:.*<sip:)([134][0-9]{4}@)/\1+121285\2/'); } t_on_failure("4"); # if gateway unavail go to 4 if (!next_gw()) { sl_send_reply("503", "Service not available - No gateways"); return; }; xlog("L_INFO","route[4]: SIP-to-PSTN after next_gw() r-uri is now <$ru>\n"); # Cookbook does a forward. I think we do a stateful t_relay which will handle # e.g. TCP/UDP or v6->v4 conversion as needed. if (isflagset(18)) { #call fwd enabled append_branch(); } if (!t_relay()) { sl_reply_error(); }; xlog("L_INFO","Fell through route[4]: $si: $rm From <$fu> To <$tu>\n"); } # end of route[4]
The observed behavior is that the host part gets rewritten correctly (to x.x.x.x) but the user part does not get stripped and/or prefixed.
Any help would be appreciated.
/a