Text String Notation for Dial Sequences and Global Switched Telephone Network (GSTN) / E.164 Addresses
Extracted elements (27)
Abstract E.164 addresses contain elements that cannot be dialled and therefore cannot be fully converted into a Dial Sequence or fully represented using phone-string notation. This is why the specification defines separate global-phone (diallable subset) and local-phone types rather than mapping all E.164 forms directly.
The exact meaning of "pause" and "tonewait" is intentionally not mandated, because their interpretation depends on the specific devices and implementations using the specification. This flexibility allows the notation to be used across heterogeneous dialling equipment.
Written-sep elements ("-" and ".") are permitted and conformant implementations MAY drop or insert them, because their sole purpose is human readability and they carry no semantic meaning in the dialling sequence.
ISDN subaddresses restrict the allowed phone-string elements to 1*(DIGIT/written-sep), a subset of the full phone-string definition. Implementations handling ISDN subaddresses must enforce this constraint.
T.33 fax service subaddresses further restrict phone-string elements to 1*(DIGIT) only, excluding even written-sep characters. Fax subaddress handling must apply this stricter subset.
A local-phone string MUST NOT be a null string; at least one of exit-code or dial-number MUST be present.
All specifications requiring a text string representation for a Dial Sequence MUST use the notation defined in this document. It is the unique, complete, and authoritative reference for this purpose.
Any dialling scheme other than global-phone MUST NOT use the leading "+" character. The "+" sign is strictly reserved for the standard global-phone syntax.
Any occurrences of written-sep elements in a phone-string MUST NOT result in any action; they are purely cosmetic separators for human readability.
Dial string characters that succeed either a "pause" or "tonewait" SHOULD be sent using DTMF signalling, since they are not part of the GSTN subscriber address per se.
One instance of "pause" ("p") SHOULD be interpreted as a pause of one second between the preceding and succeeding dial string elements.
The "+" character MUST NOT be used in a local-phone string, as it is reserved exclusively for global-phone notation.
"tonewait" ("w") SHOULD be interpreted as a pause lasting until the calling party hears a dial tone or another indication that more dial string characters may be processed.
Users SHOULD be provided methods to prevent disclosure of sensitive dial sequences (e.g., PINs), such as code encryption or masquerading techniques.
DTMF elements are defined as DIGIT / "#" / "*" / "A" / "B" / "C" / "D". These apply only to DTMF operations and are NOT used for alphabetic characters mapped to digits on phone keypads in some countries.
The global-phone element represents diallable E.164 numeric addresses using a leading "+" followed by one or more DIGIT or written-sep characters: global-phone = "+" 1*( DIGIT / written-sep ). The "+" prefix is strictly reserved for this syntax.
The gstn-phone element represents a GSTN address as either a global-phone or a local-phone: gstn-phone = ( global-phone / local-phone ).
The local-phone element covers all GSTN addressing that does not use E.164 global numbering. It is composed of an optional exit-code and/or a dial-number, each encoded as a phone-string, but MUST NOT be a null string.
The pause element is represented by the character "p" (case insensitive) and SHOULD be interpreted as a pause of one second between preceding and succeeding dial string elements.
The phone-string is the core text representation of a Dial Sequence, defined as 1*( DTMF / pause / tonewait / written-sep ). It serves as the basis for all other dial-sequence encodings in this specification.
The post-dial element encodes a dialling sequence sent after connection is established (e.g., DTMF menu navigation). It is defined as post-dial = phone-string.
The subaddr-string encodes GSTN subaddresses (ISDN subaddresses and T.33 fax subaddresses) using phone-string. Specific services may restrict the allowed phone-string elements (e.g., ISDN restricts to DIGIT/written-sep; T.33 restricts to DIGIT only).
The tonewait element is represented by the character "w" (case insensitive) and SHOULD be interpreted as a pause that lasts until the calling party hears a dial tone or another indication that more characters may be processed; an off-hook indication MAY also serve as such an indication.
The written-sep element is either "-" or "." and exists solely to improve human readability of a phone-string. Occurrences of written-sep MUST NOT result in any action; conformant implementations MAY drop or insert them.
Dial sequences may include private code sequences such as PINs for special services. When transmitted without encoding inside protocols or application services, these strings can allow unauthorized parties to gain access to protected services.
Out-of-band communication of authorization information or use of encrypted data in special fields are identified as available non-standard techniques to protect sensitive dial sequence content from unauthorized disclosure.
The complete ABNF for all dial-sequence types is: phone-string = 1*(DTMF/pause/tonewait/written-sep); DTMF = (DIGIT/"#"/"*"/"A"/"B"/"C"/"D"); written-sep = ("-"/"."); pause = "p"; tonewait = "w"; global-phone = "+" 1*(DIGIT/written-sep); local-phone = [exit-code] dial-number | exit-code [dial-number]; subaddr-string = phone-string; post-dial = phone-string.