Anyways..."overdialing" can be thought of as what happens when people try to dial a phone number with more digits than are actually allowed by the PSTN carrier. This often pops up with numbers that are presented as words, like 1-800-BUYSTUFF, which has 1 too many digits/letters for the North American dial plan (all numbers are 11-digits long, including the 1).
A somewhat little known fact is that you can type the above example exactly like that in Lync/SfB and it will automagically translate the letters to the corresponding numbers and show the number 1-800-289-78333. Again, notice its got one too many digits and hasn't normalized (note the lack of + sign at the beginning of the number).
The reason for this is because most typical normalization rules only match a very specific number of digits. Take for example, this typical North American normalization rule and translation pattern for North American national numbers:
^1?(\d{10}) --> +1$1
For the uninitiated, this normalization rule will accept any 10-digit number, with or without a leading 1, and will translate it to a valid 11-digit North American national number. So, if you dial 5552223333 or 15552223333, it will normalize it to +15552223333.
But if you dial one or more extra digits, it will no longer match the normalization rule and will just show the digits you typed. If you typed 55522233331, and try to dial that number in Lync/Skype for Business, it may or may not fail depending on how you created your route patterns. For example, if you've structured your route pattern to accept numbers without a leading plus sign, it would route through Lync/S4B (ie. ^\+?\d+$ would accept any number of digits with or without a plus). I don't advise this, because its messy and makes advanced routing decisions harder. Plus it goes against the general advice of E.164 EVERYWHERE.
If you allowed a number to get through to the PSTN with too many digits, the carrier will reject any extra digits and dial the number properly, but for systems like Lync/Skype for Business, you should take care to ensure you deal with overdialed numbers seamlessly.
To make sure any overdialed numbers are normalized correctly, a simple extra few characters added to the end of a normalization rule will fix the problem nicely. Using the first example, we simply add a \d* to signify "any number of digits", followed by a $ to signify the end of the string. So, ultimately we have:
^1?(\d{10})\d*$ --> +1$1
Now, when we dial that same number with too many digits, we get the following properly formatted normalized result:
In the end, a simple change to an otherwise generic normalization rules can end up making your users' lives just a little bit easier.
Thanks to the aforementioned Greig Sheridan, who suggested I write a blog post around this esoteric topic. I owe you a Foster's, mate!
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.