[OpenSIPS-Users] Runtime avp substitution

Bogdan-Andrei Iancu bogdan at voice-system.ro
Thu Sep 23 09:31:50 CEST 2010


Hi Paul,

you need a substitution, replacement or simply matching ?

Regards,
Bogdan

Paul Smith wrote:
> 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
>>>
>>>   
>>>     
>>
>>
>>   
> ------------------------------------------------------------------------
>
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>   


-- 
Bogdan-Andrei Iancu
OpenSIPS Bootcamp
15 - 19 November 2010, Edison, New Jersey, USA
www.voice-system.ro




More information about the Users mailing list