JEP-0181: Jingle DTMF

This document specifies an XML format for encapsulating DTMF data in informational messages sent within the context of Jingle audio interactions.


WARNING: This Standards-Track JEP is Experimental. Publication as a Jabber Enhancement Proposal does not imply approval of this proposal by the Jabber Software Foundation. Implementation of the protocol described herein is encouraged in exploratory implementations, but production systems should not deploy implementations of this protocol until it advances to a status of Draft.


JEP Information

Status: Experimental
Type: Standards Track
Number: 0181
Version: 0.2
Last Updated: 2006-06-29
JIG: Standards JIG
Approving Body: Jabber Council
Dependencies: XMPP Core, JEP-0166
Supersedes: None
Superseded By: None
Short Name: jingle-dtmf
Wiki Page: <http://wiki.jabber.org/index.php/Jingle DTMF (JEP-0181)>

Author Information

Peter Saint-Andre

Email: stpeter@jabber.org
JID: stpeter@jabber.org

Legal Notice

This Jabber Enhancement Proposal is copyright 1999 - 2006 by the Jabber Software Foundation (JSF) and is in full conformance with the JSF's Intellectual Property Rights Policy <http://www.jabber.org/jsf/ipr-policy.shtml>. This material may be distributed only subject to the terms and conditions set forth in the Creative Commons Attribution License (<http://creativecommons.org/licenses/by/2.5/>).

Discussion Venue

The preferred venue for discussion of this document is the Standards-JIG discussion list: <http://mail.jabber.org/mailman/listinfo/standards-jig>.

Relation to XMPP

The Extensible Messaging and Presence Protocol (XMPP) is defined in the XMPP Core (RFC 3920) and XMPP IM (RFC 3921) specifications contributed by the Jabber Software Foundation to the Internet Standards Process, which is managed by the Internet Engineering Task Force in accordance with RFC 2026. Any protocol defined in this JEP has been developed outside the Internet Standards Process and is to be understood as an extension to XMPP rather than as an evolution, development, or modification of XMPP itself.

Conformance Terms

The following keywords as used in this document are to be interpreted as described in RFC 2119: "MUST", "SHALL", "REQUIRED"; "MUST NOT", "SHALL NOT"; "SHOULD", "RECOMMENDED"; "SHOULD NOT", "NOT RECOMMENDED"; "MAY", "OPTIONAL".


Table of Contents

1. Introduction
2. Format
3. Security Considerations
4. IANA Considerations
5. Jabber Registrar Considerations
5.1. Protocol Namespaces
6. XML Schema
Notes
Revision History


1. Introduction

Traditional telephony systems use Dual Tone Multi-Frequency (DTMF) for dialing and to issue commands such as those used in Interactive Voice Response (IVR) applications. Internet telephony systems also use DTMF tones for interoperability with the public switched telephone network (PSTN). XMPP clients that use Jingle [1] for voice chat (see Jingle Audio Media Description Format [2]) SHOULD use the native DTMF format for the relevant transport method, for example RFC 2833 [3] for Jingle RTP-ICE Transport Method [4] and the native IAX format for Jingle IAX Transport Method [5]. This document specifies an XML format for use as a fallback when transport-native DTMF formats are not available.

2. Format

The format for the XML DTMF format is as follows:

Example 1. Basic DTMF Format

<dtmf xmlns='http://jabber.org/protocol/info/dtmf'>
  <tone code='integer' duration='integer'/>
  <tone ... />
</dtmf>
  

The <dtmf/> element MUST contain at least one <tone/> element and MAY contain more than one <tone/> element.

The <tone/> element MUST possess a 'code' attribute that specifies the tone(s) to be generated and MAY possess a 'duration' attribute that specifies the duration of each tone in milliseconds.

The value of the 'code' attribute SHOULD be one or more instances of the following characters: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, #, and * -- however, the characters A, B, C, and D MAY be sent as well. [6]

The value of the 'duration' attribute MUST be a positive integer; the integer MUST be greater than 50 (in accordance with ANSI T1.401-1988), SHOULD be at least 70, and SHOULD NOT be significantly more than 120.

The <dtmf> element SHOULD be sent as the payload of a Jingle media-info message as illustrated in the following example.

Example 2. Entity Sends DTMF Message

<iq from='juliet@capulet.com/balcony'
    to='ivr.shakespeare.lit'
    id='dtmf1'
    type='set'>
  <jingle xmlns='http://jabber.org/protocol/jingle'
          action='media-info'
          initiator='juliet@capulet.com/balcony'
          sid='a73sjjvkla37jfea'>
    <dtmf xmlns='http://jabber.org/protocol/jingle/info/dtmf'>
      <tone code='76636'/>
    </dtmf>
  </jingle>
</iq>
  

3. Security Considerations

This document introduces no known security vulnerabilities.

4. IANA Considerations

This JEP requires no interaction with the Internet Assigned Numbers Authority (IANA) [7].

5. Jabber Registrar Considerations

5.1 Protocol Namespaces

The Jabber Registrar [8] shall include 'http://jabber.org/protocol/jingle/info/dtmf' in its registry of protocol namespaces.

6. XML Schema

<?xml version='1.0' encoding='UTF-8'?>

<xs:schema
    xmlns:xs='http://www.w3.org/2001/XMLSchema'
    targetNamespace='http://jabber.org/protocol/jingle/info/dtmf'
    xmlns='http://jabber.org/protocol/jingle/info/dtmf'
    elementFormDefault='qualified'>

  <xs:element name='dtmf'>
    <xs:complexType>
      <xs:sequence>
        <xs:element ref='tone' minOccurs='1' maxOccurs='unbounded'/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name='tone'>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base='empty'>
          <xs:attribute name='code' type='DTMFString' use='required'/>
          <xs:attribute name='duration' type='xs:positiveInteger' use='optional'/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  </xs:element>

  <xs:simpleType name="DTMFString">
    <xs:restriction base="xs:string">
      <xs:pattern value="(#|\*|0|1|2|3|4|5|6|7|8|9|A|B|C|D)*" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name='empty'>
    <xs:restriction base='xs:string'>
      <xs:enumeration value=''/>
    </xs:restriction>
  </xs:simpleType>

</xs:schema>
  


Notes

1. JEP-0166: Jingle <http://www.jabber.org/jeps/jep-0166.html>.

2. JEP-0167: Jingle Audio Media Description Format <http://www.jabber.org/jeps/jep-0167.html>.

3. RFC 2833: RTP Payload for DTMF Digits, Telephony Tones and Telephony Signals <http://www.ietf.org/rfc/rfc2833.txt>.

4. JEP-0176: Jingle RTP-ICE Transport Method <http://www.jabber.org/jeps/jep-0176.html>.

5. JEP-0179: Jingle IAX Transport Method <http://www.jabber.org/jeps/jep-0179.html>.

6. Although A, B, C, and D were originally defined as part of DTMF, they were never deployed to telephony consumers and were used only for control purposes at private branch exchanges (PBXs) and central office operator stations; however, they are used in certain non-telephony applications of DTMF, such as ham radio.

7. The Internet Assigned Numbers Authority (IANA) is the central coordinator for the assignment of unique parameter values for Internet protocols, such as port numbers and URI schemes. For further information, see <http://www.iana.org/>.

8. The Jabber Registrar maintains a list of reserved Jabber protocol namespaces as well as registries of parameters used in the context of protocols approved by the Jabber Software Foundation. For further information, see <http://www.jabber.org/registrar/>.


Revision History

Version 0.2 (2006-06-29)

Allowed characters A, B, C, and D; updated schema.

(psa)

Version 0.1 (2006-03-23)

Initial JEP version.

(psa)

Version 0.0.1 (2006-03-21)

First draft. (psa)


END