[OpenSIPS-Users] Runtime avp substitution

Paul Smith Paul.Smith at ClarityTele.com
Wed Sep 22 14:42:49 CEST 2010


Hi Bogdan,
Thanks for the reply.  I am using dialplan module for mangling the 
dialled number to local valid service codes and e164 destinations.

I was hoping to use a simple field in the usr_preferences or 
substitution table to hold a substitution pattern for each user's 
verified callerid (P-Preferred-Identity) ranges.

I'll have to have a think about how to use dialplan to do this, and 
still keep my simple user provisioning gui...



*Paul Smith | Technical Director | Clarity Telecom*
Number One, Lanyon Quay, Belfast, BT1 3LG
Phone: 	0800 91 21 000 | 1800 855 111
FAX: 	0800 91 21 999 | 1800 855 112
Email: 	Paul.Smith at ClarityTele.com
Web: 	http://www.ClarityTele.com



Bogdan-Andrei Iancu wrote:
> Hi Paul,
>
> have you looked at dialplan module ? 
>        http://www.opensips.org/html/docs/modules/1.6.x/dialplan.html
>
> The subst-like funcs in script do not support dynamic patterns..
>
> Regards,
> Bogdan
>
> Paul Smith wrote:
>   
>> How can I do a regular expression substitution on an avp where the 
>> pattern is loaded from the user subsrciption or usr_preference table?
>>
>> For example I need to limit callerid presented to a pre-determined range 
>> owned by my customer, and perform substitution eg add a prefix.  If a 
>> UAC sets P-Preferred-identify to 1234 and I have a usr_preference to 
>> match any 4 digit caller starting with 1, and prefix with 789 then 
>> callerid should be set to 7891234
>>
>> I have in mind something like:
>>
>> In my database I set the expression for  $avp(s:expcallerid) for this 
>> user to "/1.{3}/789\1/i"
>> then in my dialplan I want to match and substitute the 
>> Preferred-Identity to form the $avp(s:callerid) and then set 
>> P-Asserted-Identity
>>
>> xlog("dialled number = $rU");
>> xlog("callerid barring requested by device = $avp(s:clir)");
>> xlog("callerid preferred set by device = $pU");
>> xlog("callerid expression for this user = $avp(s:expcallerid)");
>> xlog("default callerid for this user = $avp(s:defcallerid)");
>>
>> $avp(s:callerid)=$avp(s:defcallerid);
>> if($avp(s:clir)){
>>        # user has restricted callerid
>>         $avp(s:callerid)="Anonymous";
>> } else if($pU) {
>>       # UAC device has set preferred callerid
>>       $avp(s:callerid)=pU;
>>       if(avp_subst("$avp(s:callerid)",$avp(s:expcallerid)) ){
>>             xlog("preferred callerid matched callerid expression");
>>       } else {
>>            xlog("preferred callerid rejected, using default");
>>            $avp(s:callerid)=$avp(s:defcallerid);
>>       }
>> } else {
>>       #use default callerid
>>       $avp(s:callerid)=$avp(s:defcallerid);
>> }
>>
>> I get the error
>> Sep 22 12:30:21 [6253] CRITICAL:core:yyerror: parse error in config 
>> file, line 518, column 44-45: bad arguments for command <avp_subst>
>>
>> which I think means that avp_subst is expecting a static regular 
>> expression in the script, whereas  I want a user variable as the regular 
>> expression.
>>
>> Is there another way to look at the problem? Have I missed something 
>> obvious (again)?
>>
>> Thanks
>> Paul
>>
>> _______________________________________________
>> Users mailing list
>> Users at lists.opensips.org
>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>
>>   
>>     
>
>
>   
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.opensips.org/pipermail/users/attachments/20100922/d366c581/attachment.htm 


More information about the Users mailing list