Monday, 1 March 2010

Understanding Dial Plans for SPA2102, PAP2T VoIP ATA's & SPA504 IP-Phone

When I first started learning to configure my own VoIP ATA's (and later IP-Phones), I didn't have a clue as to what a "dial plan" was. However, when I started configuring my VoIP adapters with various service providers, I noted that they often "recommended" that the default dial plan in the ATA be replaced with the VoIP carrier's "recommended" dial plan.  Well, when you don't understand something, then you just do what you are told.  Only over time did I start to understand just what the dial plans were doing and why they were important.

So, I have compiled the information below to help others better understand the syntax's generally used in their Cisco Linksys VoIP ATA's and IP-Phones.  Once understood, you will be in a better position to not only understand your ATA dial plan, but to be empowered to modify your existing dial plan to better suit your calling needs.

(Note:  My dial plan examples are typical for North America)
Syntax used in Dial Plans  ( Cisco Linksys SPA504G, SPA2102-NA, PAP2T-NA, etc.)

( )
The complete dial plan collection must be contained between parenthesis.

Dial plans will interpret against the following dial keys:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, *, #

#
When dialed, the # (number) key will always cause an immediate send command.
Example:  411#  will cause 411 to be dialed out immediately following the # key entry.

x
The x variable is used to represent any single digit from 0 - 9.
Multiple x's are used to represent a series of digits dialed.

Example:
xxx means any three numbers between 000 and 999 will be accepted and sent.  This will pass numbers dialed like 311, 411, or 911.

Example:
If you wanted to restrict which 3-digit numbers can be entered, then the dial plan element could be written as "x11" to only allow 3-digit calls like 111, 211, 311, 411, 511, 611, 711, 811, or 911.

Example:
xxxxxxxxxxx means any 11-digit phone number dialed will be accepted and sent as entered.
This example will accomodate any 11-digit North America number dialed.
However, to ensure the correct country code for North America is only accepted (1), then the dial plan would be implemented as 1 plus any 10 digits.

Example:
(1xxxxxxxxxx)  This example requires all 11 digit numbers to begin with digit 1.
You could limit all long distance calls to a specific area.  For example, if your string is now defined as:  "1409xxxxxxx", then only long distance calls to Area Code 409 will be allowed to be sent to the VoIP carrier.
|
Dial plan elements are separated by the vertical bar ( | ).
Example:
(*xx|0|00|x11|1xxxxxxxxxx)

[ ]
The square brackets are used to define "limited options" or a "sub-range" of digits allowed.

Example:
([349]11|0|00)
This example only allows for 3-digit sequences that only match digits 3, 4, or 9 before digits "11".
This plan only allows for 311, 411, 911, 0, or 00 dialing to be sent.  The numbers 011, 111, 211, 511, 611, 711, and 811 are NOT allowed

Example:
([3-9]11|0|00)
This example only allows 3-digit sequences that "begin" with a match in the range from 3 to 9 before digits "11".  The 3-digit numbers 011, 111, and 211 are NOT allowed.

Example:
(*xx|[49]11|1[2-9]xx[2-9]xxxxxx)
This example only allows for 11-digit North American dialed numbers according to the NANP (North America Numbering Plan) standard.  In this plan, digits 0 and 1 are NOT allowed in the first digit of Area Codes or Local Exchange numbers.  Thus, the range [2-9] is used.

S0
When "S0" is placed after any given sequence, that sequence match will be dialed out "immediately" with no delay.

Example:
(*xx|[49]11S0|1xxxxxxxxxx|)
In this example,  411 or 911 will be dialed out immediately with no delays.  In this case, there is no need to input the # key, as earlier illustrated.

*xx
Allows for Vertical Services *codes to be recognized

Example:
(*xx|[3489]11|xxxxxxxxxxx)
This plan will allow vertical service code dialing in the range *00 - *99.

x.
Element Repetition
The period (.) means to allow the immediate previous digit to be repeated zero or more times.

Example:
01. means that the following matches will be accepted:  0, 01, 011, 0111, 01111, etc...

Example:
xxxxxxxxxxxx.
This is a common usage in dial plans.
It incorporates x 12 times.
It means:  Accept any dial string of "at least" 11 digits, or greater, in length.
This expression gives flexibility when dialing long international numbers.

< : >
Sub-Sequence Substitution
A sub-sequence of keys (possibly empty) can be automatically replaced with a different sub-sequence when your dial string is preceded with angle bracket notation.

Numbers listed before the " : " are required prerequisites that must be dialed 1st, but are then stripped from the transmitted dial string. 
Numbers listed after the " : "  will prepend the transmitted dial string (added to the beginning).

Example:
<:NPA>xxxxxxx or <:1NPA>xxxxxxx
NPA stands for Numbering Plan Area code.  Replace NPA with your area code.  This is a standard method to allow 7-digit calling when your service provider requires 10 or 11 digit dialing.  When you dial any 7-digit number, that dial string is prepended with the <:NPA> or <:1NPA> values defined.
Thus, <:917>xxxxxxx will allow 7-digit dialing to the 917 area code and send a 10-digit dial string as: "917-xxx-xxxx".
Or, <:1917>xxxxxxx will allow 7-digit dialing to the 917 area code and send an 11-digit dial string as: "1-917-xxx-xxxx"

Example:
<8:1213>;xxxxxxx would match 8-xxx-xxxx and transmit 1-213-xxx-xxxx as the outbound dial string.
In this case, the user must press "8" before the 7-digit number.  The "8" is removed from the dial string and the 7-digit dialed number is prepended with 1213. So, if the user dials 8-555-1212, the ATA will transmit the dial string to the service provider as 1-213-555-1212.
Note:
This example illustrates a number that must be entered before the 7-digit dial string.
It also illustrates that this 1st number(s) will be stripped from the dial string.

!
Number Barring
The "!" character after a dial string entry will immediately reject that string from dialing out.
Example:
1900xxxxxxx!
will block all area 900 calls.


--- Dial Plan Examples ---

Typical Basic Dial Plan:
(*xx|[3469]11|0|00|<:1NPA>[2-9]xxxxxx|1[2-9]xx[2-9]xxxxxx|011x.)

Note:  NPA must be replaced with your area code.

SPA2102 and PAP2T Default Dial Plan
(*xx|[3469]11|0|00|[2-9]xxxxxx|1xxx[2-9]xxxxxxS0|xxxxxxxxxxxx.)

CallCentric recommended Dial Plan:
(*xx.|*xxx|*75xx|[3469]11|0|00|1xxx[2-9]xxxxxxS0|xxxxxxxxxxxx.|**275*x.)

The above CallCentric dial plan provides for *75xx speed dialing access to your CallCentric Phone Book.
It also provides for access to the SIPBroker VoIP Peer network by allowing for **275*x. dialing through the CallCentric network.   The *xxx entry provides for quick access to CallCentric voicemail (*123).

8-Digit Dialing of iNums:
(*xx.|*xxx|*75xx|[3469]11S0|1xxx[2-9]xxxxxxS0|<:0118835100>xxxxxxxx|xxxxxxxxxxxx.|**275*x.)

The dial plan above allows for streamlined 8-digit dialing of iNum international numbers.  This plan can save significant time and effort when dialing iNum numbers manually.  Now, you only need dial the last 8 digits of the iNum rather than 18 digits (which includes the 011 IDD code).

---------------------------------------------------------

Notes:

Update (June 12, 2013)
I have just discovered a problem with CallCentric's previously recommended "dial plan" string that matches:
1xxx[2-9]xxxxxxS0

You may want to remove the S0 at the end of the 11-digit North American dialing string, to read as:
1xxx[2-9]xxxxxx

The dial string works just fine when dialing 11-digit North American phone numbers.  But, the problem NOW arises when dialing CallCentric in-network 14-digit Extension numbers.  Because CallCentric extension numbers (sub-accounts - recently implemented) begin with the digit 1 and append the 11-digit CallCentric number with an additional 3-digit "extension" number (for a total of 14-digits to dial), the S0 will cause the ATA or IP-Phone to "dial immediate" after it matches 11-digits (as designed).  But, this now creates a problem when dialing the CallCentric 14-digit sub-account numbers.  The solution is to just remove the S0 "send immediate" syntax from the 11-digit dial plan segment.