Alan:
Would it be possible in your config file to use regular expressions to classify the number as a specific area code or range of area codes (such as 212) or as an international call then strip the appropriate number of digits based on the classification? If so then the next step would probably be to add the correct prefix to the lcr gateway table.
-Steve
Alan Crosswell wrote:
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
Users mailing list Users@openser.org http://openser.org/cgi-bin/mailman/listinfo/users