Number Manipulation Examples
Example with Localization and Provider Rules for CallerID(Source) and Destination
Lets say 868555666 is calling to 868777888. The first number is the source (CallerID), and the other number is the destination. Localization source rules are used to modify the CallerID which comes to MOR, and provider source rules are used to modify the CallerID that will be sent to the provider. They aren't used all the time, only when owner of system wants them to be.
Take, for example, a provider that only accepts calls that are nine numbers in length and that begin with 8. MOR works only with E.164 standard callerID's if you want to run billing on them.
First of all, we need to make a Localization source rule for our situation:
Cut 8, add 370, Min/Max 9/9.
So now the caller's number is 37068555666, not 868555666. MOR identifies the caller as being from Lithuania (by country code 370), which means he can bill him.
Now we need to send a call to 868777888, but our number must be in the old format (868555666), so we need to apply a suitable provider source rule:
Cut 370, add 8, Min/Max 11/11.
That's it - the caller's final number will once again be 868555666.
Add + to all numbers before sending to the Provider
For Destination (Provider rules Destination):
Cut: empty Add: +
For CallerID (Provider rules Source):
Cut: + Add: + Cut: empty Add: +
this will add + in front of the CallerID/Destination before sending it to the Provider.
The client has the following situation:
My customers are mainly in Italy. To call Italy, they are not going to add the 0039 country code, while they do put 00 and the country code when they want to call other countries.
Then, on the other side, my provider expects numbers to Italy to be without the 0039 country code, while to other countries it does expect the called number to have a country code.
- The numbers that clients dial are 10 digits in length. For more info about the Italian number format, see: http://en.wikipedia.org/wiki/%2B39
- '+' is not used. It should be changed to '00'.
To handle such a situation, the following actions should be taken:
- Location 'Italy' should be created.
- All devices from Italy should be assigned to this Location.
- Rules in Location Italy:
- Name: 'Local Italy', Cut: (empty), Add: 39, Min: 6, Max: 10.
- Name: 'International', Cut: 00, Add: (empty), Min: 11, Max: 16.
- Provider Rules for Provider through which call will be terminated:
- Name: 'International', Cut: (empty), Add: 00, Min: 10, Max: 100.
The client has the following situation:
- A local number is dialed in following formats: 1-XXX-XXX-XXXX or XXX-XXX-XXXX.
- International numbers: 011 - country code - area code - number.
Now the call should be sent to the provider which accepts numbers in following format:
- USA/Canada calls should start with 1.
- International calls should start with 011.
Provider Rules for this Provider should look like:
- Local number dialed in format 0XXXXXXXXXX.
- International: 00 + country code + area code + number.
- Local number is dialed in format 9x[x]xx[x]xxxx (within Spain) (includes area code + number).
- International: country code (34) + area code + number.
- ! NOTE: MIN/MAX should be 8/10, since you want to change only the Spain local numbers. If MAX > 10, you will have wrong routing, for example: the Israel E.164 numbers (with prefixes 972), which are minimum 11 digits long, will be changed to Spain numbers.
- Local number dialed in format 0XXXXXXXX (includes area code + number) or XXXXXXXX (area code + number).
- International: country code + area code + number.
Example 6 - DID provider sends DID number in different format than it is added in MOR
- DID number 37012312345 added in E.164 format in MOR
- DID provider sends 037012312345 to MOR
This Location should be selected in DID Provider Settings. It will transform destination number 037012312345 to 37012312345 and then it will match DID number added in MOR.
Example 7 - Add + in front only if it is not already present
- Callerid comes with or without +
- We need to add + in case it is missing, but not add additional + if it is already present