Difference between revisions of "Number Manipulation"
Line 54: | Line 54: | ||
== Example == | === Example === | ||
Lets say '''012337068111543''' coming from caller to MOR system. | Lets say '''012337068111543''' coming from caller to MOR system. | ||
Line 93: | Line 93: | ||
This rule is applied to dialed number. E.g. if dialed number is 012337068111543, then first we cut CUT value (0123) out from it (then we have 37068111543) and then we add ADD value (44), so final result is 4437068111543. | This rule is applied to dialed number. E.g. if dialed number is 012337068111543, then first we cut CUT value (0123) out from it (then we have 37068111543) and then we add ADD value (44), so final result is 4437068111543. | ||
= Examples = | = Examples = |
Revision as of 16:09, 23 January 2009
Definitions
- Localization
- Main idea of Localization: No matter how user dials number (destination) when localized it should be in e.164 format.
- Localization has nothing in common with numbers you send to providers. It operates with numbers received from caller.
- Provider Rules
- MOR operates with numbers in E164 format, but Provider often asks different format number - so Provider Rules formats E164 number to Provider acceptable format.
Rule Ordering
Rules for Localization and for Provider Rules are ordered in following order:
- Device/Provider Location
- Global Location
That means that Global location rules are applied to every device. But they have lower priority over some specific Location. That means - if device belongs to some Location X, then rules in Location X are reviewed first. If none of the rules can be applied from Location X, then rules in Location Global are checked.
When one rule is applied - no more rules will be applied after that.
How Number Manipulation works
MOR works only with E.164 numbers. That means, MOR accepts only standard numbers, if number is not in E164 - it must be changed to E164 compatible number.
For this task MOR has a feature "Localization" (found in Billing -> Functions -> Localization) which could be used for "standardizing non E.164 numbers to correct E.164 numbers".
If requested by outgoing calls provider, MOR can cut/add special prefix to number to send it to Provider in its requested format. This can be done using "Provider rules".
Localization and Provider Rules follows same logic.
Example how Localization works:
Number from Caller -> Localization -> Number from Caller in E164 format -> MOR -> Provider Rules -> Number for Calee
How exact rule for dialed number is selected from many rules
How MOR select rule which should be applied to the number?
There are 3 steps done for all rules (for Localization & Provider Rules)
1. MOR checks for number length and reject these rules if dialed Numbers length does not fall into MIN and MAX described interval. E.g. if Numbers length is less then MIN or greater then MAX.
2. Then these rules are rejected if beginning of number does not match Cut value of these rules.
3. At the last step MOR selects the rule which has longest Cut length.
E.g. Rule selected at step 3 will be used to transform dialed number.
Example
Lets say 012337068111543 coming from caller to MOR system.
And we have such rules:
# CUT ADD MIN MAX 1 01 11 11 14 2 012 22 12 15 3 123 33 15 16 4 0123 44 11 20
1. MOR is checking number length by available min/max settings. So if incoming number's length (number length = 15 in our example) is more or equal then MIN and less or equal then MAX - this rule will not be rejected. E.g. rule will be rejected if number length will be less then MIN or greater then MAX.
Then we are rejecting rule #1 because 15 is > MAX(14), after first step we have:
# CUT ADD MIN MAX 2 012 22 12 15 3 123 33 15 16 4 0123 44 11 20
2. MOR proceeds to looks for CUT value which match beginning of dialed number. MOR rejects all rules which do not match dialed number beginning.
In this step we are rejecting rule #2, because its CUT value (123) is NOT beginning of dialed number: 012337068111543.
After second step we have:
# CUT ADD MIN MAX 2 012 22 12 15 4 0123 44 11 20
3. MOR checks for all remaining rules which haven't been rejected by first and second rule and select rule which has longest CUT.
This step selects rule with longest CUT, so our result is:
# CUT ADD MIN MAX 4 0123 44 11 20
This rule is applied to dialed number. E.g. if dialed number is 012337068111543, then first we cut CUT value (0123) out from it (then we have 37068111543) and then we add ADD value (44), so final result is 4437068111543.
Examples
Example 1 - Italy
Client has such situation:
My customers are mainly in Italy. To call to Italy they are not gonna put 0039 country code, while they do put 00 and country code when the want to call other countries.
Then, on the other side, my provider aspect numbers to Italy without 0039 country code, while to other countries they do aspect it before the called number.
NOTES:
- Numbers clients dial are 10 digits in length. More info about Italian number format: http://en.wikipedia.org/wiki/%2B39
- '+' is not used, it should be changed to '00'
To handle such situation such 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
Example 2 - USA/Canada
Client has such situation:
- Local number is dialed in following formats: 1-XXX-XXX-XXXX or XXX-XXX-XXXX
- International numbers: 011 - country code - area code - number
Localization rules:
Now call should be sent to Provider which accepts number in following format:
- USA/Canada calls should start with 1
- International calls should start with 011
Provider rules for this Provider should look like: