Maybe the database can apply the regex and give you the transformed result? Databases are quite capable these days. I do this in PostgreSQL all the time.

On 07/08/2010 01:53 PM, Uriel Rozenbaum wrote:

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
<abalas...@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.rozenb...@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
<mico...@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@lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users



--
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/

_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
sr-users@lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users

Reply via email to