This article is one in a series to assist in the setup, troubleshooting, and maintenance of Cisco Small Business products.
A. The SPA allows each line to be configured with a distinct dial plan. The dial plan specifies how to interpret digit sequences dialed by the user and convert those sequences into an outbound dial string. The SPA syntax for the dial plan closely resembles the corresponding syntax specified by MGCP and MEGACO. Some extensions that are useful on an end-point are added.
The dial plan function is regulated by these configurable parameters:
Dial_Plan ( and )
Note: Other timers are configurable via parameters, but do not directly pertain to the dial plan itself.
The Interdigit_Long_Timer specifies the default maximum time (in seconds) allowed between dialed digits, when no candidate digit sequence is complete.
The Interdigit_Short_Timer specifies the default maximum time (in seconds) allowed between dialed digits, when at least one candidate digit sequence is completed as dialed.
The Dial_Plan parameters contain the actual dial plan scripts for lines 1 and 2.
ParName: Dial Plan and Dial Plan
Default: ( *xx | 11 | 0 | 00 | <:1408>[2-9]xxxxxx |
1[2-9]xx[2-9]xxxxxx | 011x. )
The plans contain a series of digit sequences, separated by the | character. The collection of sequences is enclosed in parentheses (' and ').
When a user dials a series of digits, each sequence in the dial plan is tested as a possible match. Matching sequences form a set of candidate digit sequences. As more digits are entered by the user, the set of candidates diminishes until only one or none are valid.
Any one of a set of terminating events triggers the SPA to either accept the user-dialed sequence and transmit it to initiate a call or reject it as invalid. The terminating events are:
No candidate sequences remain
The number is rejected.
Only one candidate sequence remains and it has been matched completely
The number is accepted and transmitted after any transformations indicated by the dial plan unless the sequence is barred by the dial plan (barring is discussed later), in which case, the number is rejected.
A timeout occurs
The digit sequence is accepted and transmitted as dialed if incomplete, or transformed as per the dial plan if complete.
An explicit 'send' (user presses the '#' key)
The digit sequence is accepted and transmitted as dialed if incomplete, or transformed as per the dial plan if complete
The timeout duration depends on the matching state. If no candidate sequences are as yet complete (as dialed), the Interdigit_Long_Timeout applies. If a candidate sequence is complete, but there exists one or more incomplete candidates, then the Interdigit_Short_Timeout applies.
Note: The white space is ignored and may be used for readability.
Each digit sequence within the dial plan consists of a series of elements, which are individually matched to the keys pressed by the user. Elements can be one of these:
Individual keys '0', '1', '2' . . . '9', '*', '#'.
The letter 'x' matches any one numeric digit ('0' .. '9')
A subset of keys within brackets (allows ranges): '[' set ']' (e.g.  means '3' or '8' or '9'):
Numeric ranges are allowed within the brackets: digit '-' digit (e.g. [2-9] means '2' or '3' or ... or '9')
Ranges can be combined with other keys: e.g. [235-8*] means '2' or '3' or '5' or '6' or '7' or '8' or '*'.
Any element can be repeated zero or more times by appending a period ('.' character) to the element. Hence, "01." matches "0.", "01.", "011.", "0111.", etc.
A subsequence of keys (possibly empty) can be automatically replaced with a different subsequence using an angle bracket notation '<', dialed-subsequence ':', and transmitted-subsequence '>'. For example "<8:1650>xxxxxxx" would match "85551212" and transmit "16505551212".
An "outside line" dial tone can be generated within a sequence by appending a ',' character between digits. Thus, the sequence "9, 1xxxxxxxxxx" sounds an "outside line" dial tone after the user presses '9', until the '1' is pressed.
A sequence can be barred (rejected) by placing a '!' character at the end of the sequence. Thus, "1900xxxxxxx!" automatically rejects all 900 area code numbers from being dialed.
The long and short interdigit timers can be changed in the dial plan (affecting a specific line) by preceding the entire plan with this syntax:
Long interdigit timer: 'L' ':' delay-value ','
Short interdigit timer: 'S' ':' delay-value ','
Note: The "L=8,( . . . )" would set the interdigit long timeout to 8 seconds for the line associated with this dial plan. The "L:8,S:4,( . . . )" would override both the long and the short timeout values.
The long and short timeout values can be changed for a particular sequence starting at a particular point in the sequence. The syntax for long timer override is 'L' delay-value ' ' with the terminating space character. The specified delay-value is measured in seconds. To change the short timer override, use 'S' delay-value <space>.