Hi Mickael,

In this case I would suggest using 2 groups of rules - one for the short numbers, one for the normal numbers.

First try the short numbers and enforce the matching based on the len of the number (I guess the premium numbers have some fix len) ; also consider the L flag (see http://www.opensips.org/html/docs/modules/1.9.x/drouting.html#id293614).

If this first matching failed -> try in the second group with the long numbers.

More or less, your approach seems correct, I would say.

Regards,

Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
http://www.opensips-solutions.com


On 03/06/2013 12:09 PM, Mickael HUBERT wrote:
Hi,
It's not OK for me, look:

If I have:
+33 366985475 (landline number in France)

and

+33 3669 (premium rate number in France)

In my DB in dr_rules table I have:

INSERT INTO `dr_rules` (`ruleid`, `groupid`, `prefix`, `timerec`, `priority`, `routeid`, `gwlist`, `attrs`, `description`) VALUES
(1, '1', '333', '', 1, '', '#1', NULL, 'all number 3XYZ'),

but landline number match with rule 1.

how to differentiate this two prefixes?

Actualy I've coded:

560 if(uri=~"^sip:3[0-9]{3}@" || uri=~"^sip:10[0-9]{2}@" || uri=~"^sip:118[0-9]{3}@") *# premium rate number**FRANCE no E164 format*
561      {
562         if(!do_routing("3"))
563         {
564             send_reply("503","No Rules matching the URI");
565 xlog("L_ERR","$ci No DR_RULES matching the URI for DR_GROUP 3\n");
566             exit;
567         }
568      }
569      else *# other number E164 format*
570      {
571             strip(1);
572             setflag(29);
573
574             if(!do_routing("1"))
575             {
576                 send_reply("503","No Rules matching the URI");
577 xlog("L_ERR","$ci No DR_RULES matching the URI for DR_GROUP 1\n");
578                 exit;
579             }
580      }

Should I continue with this code ? I will wish improve this code and make it simple ;)


Le 05/03/2013 14:07, Bogdan-Andrei Iancu a écrit :
Hi  Mickael,

I guess your overlapping happens because the prefixes are not consistent as format. The 3669 is a France national number and 36xxx is international format.

If you want to put those numbers in the same routing group, you should consider having all in the same international format, to avoid collisions :
    +33 3669
    +36 xxxx

Regards,
Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
http://www.opensips-solutions.com

On 03/05/2013 11:25 AM, Mickael HUBERT wrote:
Hi list,
I have a issue in my drouting module.

In fact I have many prefixes and overlap is not OK to me.

_Example:_

Prefix: 3669 (In France is premium rate number, 4 digits is talking clock service)

Prefix: 36.... (is prefix hungary)

In my dr_rule table is:

/INSERT INTO `dr_rules` (`ruleid`, `groupid`, `prefix`, `timerec`, `priority`, `routeid`, `gwlist`, `attrs`, `description`) VALUES//
//(1, '1', '3', '', 1, '', '#1', NULL, 'All numbers 3XYZ'),//
//(2, '1', '36', '', 1, '', '#2', NULL, 'Hungary prefixe');/

If +36 1 398 0344 (to hungary destination), Drouting module choose id 2 no ?
if 3669 (to clock service), drouting module choose id 2 too ?

how to differentiate this two prefixes?

thanks in advance


_______________________________________________
Users mailing list
Users@lists.opensips.org
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

_______________________________________________
Users mailing list
Users@lists.opensips.org
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

Reply via email to