Dial String Parameter for the Session Initiation Protocol Uniform Resource Identifier
Extracted elements (10)
DTMF post-dial sequences (e.g., voicemail access followed by mailbox digits, or strings with pauses and wait-for-completion) have no standardized encoding, causing interoperability problems between endpoints and gateways. The dialstring encoding addresses this by including P (pause) and X (wait-for-call-completion) characters.
RFC 3966 explicitly prohibits 'tel' URIs from representing dial strings, and the existing 'user=phone' SIP URI parameter caused confusion about whether it could encode dial strings. This gap left no standardized way to transmit dial strings from phones lacking internal translation mechanisms to intermediaries that perform digit-map translation.
The context parameter for 'user=dialstring' follows the same syntax conventions as the context parameter in RFC 3966 for tel: URIs, ensuring consistent handling by intermediaries familiar with either scheme.
A dial string SHOULD NOT be used for an Address of Record (AoR) in a SIP REGISTER request, because parameters are ignored in registration and two registrations with different phone-contexts would be considered equivalent.
When 'user=dialstring' is used, a context parameter as defined in RFC 3966 MUST be specified. The context domain does not have to resolve to an actual host but MUST be under the administrative control of the entity managing the local phone context.
A new value 'dialstring' is defined for the 'userinfo' parameter of 'sip:' or 'sips:' URIs. The dial string is a sequence of characters 0-9, A-F, P, X, '*', and '#', where E=*, F=#, P=pause, and X=wait-for-call-completion.
A proxy server or B2BUA authoritative for the context MAY translate the dial string to a telephone number or service invocation URI, expressed as a global or local tel: URI, or left as sip:/sips: with 'user=phone'.
This RFC adds a new predefined value 'dialstring' for the 'user' parameter in the SIP/SIPS URI Parameter sub-registry defined by RFC 3969 (IANA URI Parameter Registry for SIP).
Dial strings exposed to the Internet may reveal internal network details or service invocations that could allow attackers to exploit PSTN or Internet systems. Dial strings normally SHOULD NOT be sent beyond the domain of the UAC, and if sent across the Internet, SHOULD be protected against eavesdropping with TLS per RFC 3261.
The dialstring syntax is: dialstring = dialstring-digits context; dialstring-digits = *dialstring-element dialstring-digit *dialstring-element; dialstring-digit = HEXDIG / '*' / '#'; dialstring-element = dialstring-digit / 'P' / 'X' / visual-separator. Context follows RFC 3966 conventions and appears between the digits and '@' in the userinfo portion.