[SR-Users] Use AVP as regex in avp_subst

Uriel Rozenbaum uriel.rozenbaum at gmail.com
Thu Jul 8 19:53:47 CEST 2010


Hi Alex, :)

I was just trying to keep it simple, but let me explain a little bit.

I'm using a Proxy+RTPProxy in mhomed mode. I have a public and a
private IP on that Proxy and route calls in and out of a network.

As I have many carriers that want different ANI and DNIS patterns I
have to deal with some flexible configuration. So I created a table
where I hold a special regex rule for each of them and then I get the
regex in realtime (with SQLOps) into an AVP ($avp(s:carrierAniRegex)).
Then I get the ANI for the incoming leg and store it on an AVP ($avp(s:ANI)).

When I execute this regex I get the new ANI to replace in FROM, RPID and PAI.

To be honest it's actually more complex because in a per carrier
basis, I configure if I'll use a fix ANI, a REGEX edited one or I'll
leave it transparently. :)

If someone would like to do something similar, I'll be glad to share
scripts and configs.

Best regards,
Uriel

On Thu, Jul 8, 2010 at 12:35 PM, Alex Balashov
<abalashov at evaristesys.com> wrote:
> There may be an easier and more elegant and more performant way to
> accomplish what you are trying to accomplish, but we cannot know without
> seeing the pattern and the regex.  :)
>
> --
> Alex Balashov - Principal
> Evariste Systems LLC
> 1170 Peachtree Street
> 12th Floor, Suite 1200
> Atlanta, GA 30309
> Tel: +1-678-954-0670
> Fax: +1-404-961-1892
> Web: http://www.evaristesys.com/
>
> On Jul 8, 2010, at 10:30 AM, Uriel Rozenbaum <uriel.rozenbaum at gmail.com>
> wrote:
>
>> Hi Daniel,
>>
>> Actually I'm going to partially take your advice, implementing the
>> following:
>>
>> exec_avp("echo '$avp(s:ANI)' | sed '$avp(s:carrierAniRegex)'",
>> "$avp(s:ANIegress)");
>>
>> I'll check for performance issues later but surely this simplifies a
>> lot the config.
>>
>> Thanks!
>> Uriel
>>
>> On Thu, Jul 8, 2010 at 5:55 AM, Daniel-Constantin Mierla
>> <miconda at gmail.com> wrote:
>>>
>>> Hello,
>>>
>>> On 7/7/10 11:06 PM, Uriel Rozenbaum wrote:
>>>>
>>>> Hey guys,
>>>>
>>>> I'm using Kamailio 1.5.3-notls and need to apply some re operation to an
>>>> AVP.
>>>>
>>>> The problem I have is that my re expression is held in an AVP, so the
>>>> parser is not recognizing it :(
>>>>
>>>> Would it be very hard to change that behavior? Any ideas/tips to
>>>> implement?
>>>>
>>>> This code
>>>>  route[16]
>>>>  {
>>>>    ...
>>>>  avp_subst("$avp(s:ANI)/$avp(s:ANIegress)", "$avp(s:carrierAniRegex)");
>>>>    ...
>>>>  }
>>>>
>>>> returns this error
>>>>  ERROR:avpops:fixup_subst: avpops: bad subst re $avp(s:carrierAniRegex)
>>>>
>>>> This code
>>>> route[16]
>>>>  {
>>>>    ...
>>>>  avp_subst("$avp(s:ANI)/$avp(s:ANIegress)", $avp(s:carrierAniRegex));
>>>>    ...
>>>>  }
>>>>
>>>> returns this error
>>>>  CRITICAL:core:yyerror: parse error in config file, line 751, column
>>>> 51-74: syntax error
>>>>  CRITICAL:core:yyerror: parse error in config file, line 751, column
>>>> 74-75: bad arguments
>>>>
>>>> Do you think some other way I can achieve this? Be aware I'm using
>>>> SQLops to get realtime the value of the expression...
>>>>
>>>
>>> avp_subst() cannot help here, there is no support for taking the
>>> substitution expression from a variable.
>>>
>>> What you can do in 1.5 is either look at dialplan to see if it fits your
>>> needs (it can do such substitution with expressions taken from db at
>>> startup, which can be reloaded at runtime), otherwise try using perl
>>> module
>>> (or exec in 1.5+ and lua/python in devel).
>>>
>>> Cheers,
>>> Daniel
>>>
>>> --
>>> Daniel-Constantin Mierla
>>> http://www.asipto.com/
>>>
>>>
>>
>> _______________________________________________
>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
>> sr-users at lists.sip-router.org
>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>



More information about the sr-users mailing list