1
0
mirror of https://github.com/moparisthebest/xeps synced 2024-11-24 02:02:16 -05:00
git-svn-id: file:///home/ksmith/gitmigration/svn/xmpp/trunk@1738 4b5297f7-1745-476d-ba37-a9c6900126ab
This commit is contained in:
Peter Saint-Andre 2008-03-05 00:07:12 +00:00
parent 5630761df3
commit e84fc5b4ec
6 changed files with 48 additions and 48 deletions

View File

@ -533,7 +533,7 @@ PENDING o---------------------+ |
type='error'> type='error'>
<error type='cancel'> <error type='cancel'>
<bad-request xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> <bad-request xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
<unknown-session xmlns='urn:xmpp:tmp:jingle-errors'/> <unknown-session xmlns='urn:xmpp:tmp:jingle:errors'/>
</error> </error>
</iq> </iq>
]]></example> ]]></example>
@ -750,7 +750,7 @@ PENDING o---------------------+ |
type='error'> type='error'>
<error type='modify'> <error type='modify'>
<feature-not-implemented xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> <feature-not-implemented xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
<unsupported-info xmlns='urn:xmpp:tmp:jingle-errors'/> <unsupported-info xmlns='urn:xmpp:tmp:jingle:errors'/>
</error> </error>
</iq> </iq>
]]></example> ]]></example>
@ -822,7 +822,7 @@ PENDING o---------------------+ |
<li>The &lt;reason/&gt; element MUST contain a &lt;condition/&gt; element that provides machine-readable information about the reason for the action.</li> <li>The &lt;reason/&gt; element MUST contain a &lt;condition/&gt; element that provides machine-readable information about the reason for the action.</li>
<li>The &lt;reason/&gt; element MAY contain a &lt;sid/&gt; element that specifies a Jingle SessionID (e.g., to point to an alternative session).</li> <li>The &lt;reason/&gt; element MAY contain a &lt;sid/&gt; element that specifies a Jingle SessionID (e.g., to point to an alternative session).</li>
<li>The &lt;reason/&gt; element MAY contain a &lt;text/&gt; element that provides human-readable information about the reason for the action.</li> <li>The &lt;reason/&gt; element MAY contain a &lt;text/&gt; element that provides human-readable information about the reason for the action.</li>
<li>The &lt;reason/&gt; element MAY contain an element qualified by some other namespace that provides mroe detailed machine-readable information about the reason for the action.</li> <li>The &lt;reason/&gt; element MAY contain an element qualified by some other namespace that provides more detailed machine-readable information about the reason for the action.</li>
</ul> </ul>
<p>The defined conditions are described in the folloiwing table.</p> <p>The defined conditions are described in the folloiwing table.</p>
<table caption='Defined Children of Condition Element'> <table caption='Defined Children of Condition Element'>
@ -875,7 +875,7 @@ PENDING o---------------------+ |
</section1> </section1>
<section1 topic='Error Handling' anchor='errors'> <section1 topic='Error Handling' anchor='errors'>
<p>The Jingle-specific error conditions are as follows. These condition elements are qualified by the 'urn:xmpp:tmp:jingle-errors' namespace &NSNOTE;.</p> <p>The Jingle-specific error conditions are as follows. These condition elements are qualified by the 'urn:xmpp:tmp:jingle:errors' namespace &NSNOTE;.</p>
<table caption='Error Conditions'> <table caption='Error Conditions'>
<tr> <tr>
<th>Jingle Condition</th> <th>Jingle Condition</th>
@ -968,7 +968,7 @@ PENDING o---------------------+ |
<p>Until this specification advances to a status of Draft, its associated namespaces shall be:</p> <p>Until this specification advances to a status of Draft, its associated namespaces shall be:</p>
<ul> <ul>
<li>urn:xmpp:tmp:jingle</li> <li>urn:xmpp:tmp:jingle</li>
<li>urn:xmpp:tmp:jingle-errors</li> <li>urn:xmpp:tmp:jingle:errors</li>
</ul> </ul>
<p>Upon advancement of this specification, the &REGISTRAR; shall issue permanent namespaces in accordance with the process defined in Section 4 of &xep0053;.</p> <p>Upon advancement of this specification, the &REGISTRAR; shall issue permanent namespaces in accordance with the process defined in Section 4 of &xep0053;.</p>
<p>The following namespaces are requested, and are thought to be unique per the XMPP Registrar's requirements:</p> <p>The following namespaces are requested, and are thought to be unique per the XMPP Registrar's requirements:</p>
@ -1111,8 +1111,8 @@ PENDING o---------------------+ |
<xs:schema <xs:schema
xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:xs='http://www.w3.org/2001/XMLSchema'
targetNamespace='urn:xmpp:tmp:jingle-errors' targetNamespace='urn:xmpp:tmp:jingle:errors'
xmlns='urn:xmpp:tmp:jingle-errors' xmlns='urn:xmpp:tmp:jingle:errors'
elementFormDefault='qualified'> elementFormDefault='qualified'>
<xs:element name='out-of-order' type='empty'/> <xs:element name='out-of-order' type='empty'/>

View File

@ -260,7 +260,7 @@
action='session-initiate' action='session-initiate'
initiator='romeo@montague.net/orchard' initiator='romeo@montague.net/orchard'
sid='a73sjjvkla37jfea'> sid='a73sjjvkla37jfea'>
<content name='this-is-the-audio-content'> <content creator='initiator' name='this-is-the-audio-content'>
<description xmlns='urn:xmpp:tmp:jingle:apps:audio-rtp' profile='RTP/AVP'> <description xmlns='urn:xmpp:tmp:jingle:apps:audio-rtp' profile='RTP/AVP'>
<payload-type id='96' name='speex' clockrate='16000'/> <payload-type id='96' name='speex' clockrate='16000'/>
<payload-type id='97' name='speex' clockrate='8000'/> <payload-type id='97' name='speex' clockrate='8000'/>
@ -268,7 +268,7 @@
<payload-type id='103' name='L16' clockrate='16000' channels='2'/> <payload-type id='103' name='L16' clockrate='16000' channels='2'/>
<payload-type id='98' name='x-ISAC' clockrate='8000'/> <payload-type id='98' name='x-ISAC' clockrate='8000'/>
</description> </description>
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-tcp'/> <transport xmlns='urn:xmpp:tmp:jingle:transports:ice-udp'/>
</content> </content>
</jingle> </jingle>
</iq> </iq>
@ -291,7 +291,7 @@
action='content-accept' action='content-accept'
initiator='romeo@montague.net/orchard' initiator='romeo@montague.net/orchard'
sid='a73sjjvkla37jfea'> sid='a73sjjvkla37jfea'>
<content name='this-is-the-audio-content'> <content creator='initiator' name='this-is-the-audio-content'>
<description xmlns='urn:xmpp:tmp:jingle:apps:audio-rtp'> <description xmlns='urn:xmpp:tmp:jingle:apps:audio-rtp'>
<payload-type id='97' name='speex' clockrate='8000'/> <payload-type id='97' name='speex' clockrate='8000'/>
<payload-type id='18' name='G729'/> <payload-type id='18' name='G729'/>
@ -301,7 +301,7 @@
<payload-type id='8' name='PCMA'/> <payload-type id='8' name='PCMA'/>
<payload-type id='13' name='CN'/> <payload-type id='13' name='CN'/>
</description> </description>
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-tcp'/> <transport xmlns='urn:xmpp:tmp:jingle:transports:ice-udp'/>
</content> </content>
</jingle> </jingle>
</iq> </iq>
@ -334,7 +334,7 @@
<payload-type id='8' name='PCMA'/> <payload-type id='8' name='PCMA'/>
<payload-type id='13' name='CN'/> <payload-type id='13' name='CN'/>
</description> </description>
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-tcp'> <transport xmlns='urn:xmpp:tmp:jingle:transports:ice-udp'>
<candidate component='1' <candidate component='1'
foundation='1' foundation='1'
generation='0' generation='0'
@ -551,7 +551,7 @@ Romeo Juliet
<payload-type id='103' name='L16' clockrate='16000' channels='2'/> <payload-type id='103' name='L16' clockrate='16000' channels='2'/>
<payload-type id='98' name='x-ISAC' clockrate='8000'/> <payload-type id='98' name='x-ISAC' clockrate='8000'/>
</description> </description>
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-tcp'/> <transport xmlns='urn:xmpp:tmp:jingle:transports:ice-udp'/>
</content> </content>
</jingle> </jingle>
</iq> </iq>
@ -658,7 +658,7 @@ Romeo Juliet
<payload-type id='103' name='L16' clockrate='16000' channels='2'/> <payload-type id='103' name='L16' clockrate='16000' channels='2'/>
<payload-type id='98' name='x-ISAC' clockrate='8000'/> <payload-type id='98' name='x-ISAC' clockrate='8000'/>
</description> </description>
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-tcp'/> <transport xmlns='urn:xmpp:tmp:jingle:transports:ice-udp'/>
</content> </content>
</jingle> </jingle>
</iq> </iq>
@ -702,7 +702,7 @@ Romeo Juliet
<description xmlns='urn:xmpp:tmp:jingle:apps:audio-rtp' profile='RTP/AVP'> <description xmlns='urn:xmpp:tmp:jingle:apps:audio-rtp' profile='RTP/AVP'>
[ ... ] [ ... ]
</description> </description>
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-tcp'> <transport xmlns='urn:xmpp:tmp:jingle:transports:ice-udp'>
<candidate component='1' <candidate component='1'
foundation='1' foundation='1'
generation='0' generation='0'
@ -750,7 +750,7 @@ Romeo Juliet
<payload-type id='8' name='PCMA'/> <payload-type id='8' name='PCMA'/>
<payload-type id='13' name='CN'/> <payload-type id='13' name='CN'/>
</description> </description>
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-tcp'> <transport xmlns='urn:xmpp:tmp:jingle:transports:ice-udp'>
<candidate component='1' <candidate component='1'
foundation='1' foundation='1'
generation='0' generation='0'
@ -805,7 +805,7 @@ Romeo Juliet
type='result'/> type='result'/>
]]></example> ]]></example>
</section2> </section2>
<section2 topic='Jingle Audio and Video via RTP/AVP, Negotiated with ICE-UDP' anchor='scenarios-voicechat'> <section2 topic='Jingle Audio and Video via RTP/AVP, Negotiated with ICE-UDP' anchor='scenarios-securechat'>
<p>In this scenario, Romeo initiates a combined audio and video chat with Juliet using a transport method of ICE-UDP. Juliet at first refuses the video portion, then later offers to add video, which Romeo accepts. The parties also exchange various informational messages</p> <p>In this scenario, Romeo initiates a combined audio and video chat with Juliet using a transport method of ICE-UDP. Juliet at first refuses the video portion, then later offers to add video, which Romeo accepts. The parties also exchange various informational messages</p>
<p>The session flow is as follows:</p> <p>The session flow is as follows:</p>
<code><![CDATA[ <code><![CDATA[
@ -880,7 +880,7 @@ Romeo Juliet
<payload-type id='103' name='L16' clockrate='16000' channels='2'/> <payload-type id='103' name='L16' clockrate='16000' channels='2'/>
<payload-type id='98' name='x-ISAC' clockrate='8000'/> <payload-type id='98' name='x-ISAC' clockrate='8000'/>
</description> </description>
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-tcp'/> <transport xmlns='urn:xmpp:tmp:jingle:transports:ice-udp'/>
</content> </content>
<content creator='initiator' name='this-is-the-video-content'> <content creator='initiator' name='this-is-the-video-content'>
<description xmlns='urn:xmpp:tmp:jingle:apps:video-rtp' profile='RTP/AVP'> <description xmlns='urn:xmpp:tmp:jingle:apps:video-rtp' profile='RTP/AVP'>
@ -893,7 +893,7 @@ Romeo Juliet
<payload-type id='25' name='CelB' clockrate='90000'/> <payload-type id='25' name='CelB' clockrate='90000'/>
<payload-type id='32' name='MPV' clockrate='90000'/> <payload-type id='32' name='MPV' clockrate='90000'/>
</description> </description>
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-tcp'/> <transport xmlns='urn:xmpp:tmp:jingle:transports:ice-udp'/>
</content> </content>
</jingle> </jingle>
</iq> </iq>
@ -958,7 +958,7 @@ Romeo Juliet
<description xmlns='urn:xmpp:tmp:jingle:apps:audio-rtp' profile='RTP/AVP'> <description xmlns='urn:xmpp:tmp:jingle:apps:audio-rtp' profile='RTP/AVP'>
[ ... ] [ ... ]
</description> </description>
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-tcp'> <transport xmlns='urn:xmpp:tmp:jingle:transports:ice-udp'>
<candidate component='1' <candidate component='1'
foundation='1' foundation='1'
generation='0' generation='0'
@ -1006,7 +1006,7 @@ Romeo Juliet
<payload-type id='8' name='PCMA'/> <payload-type id='8' name='PCMA'/>
<payload-type id='13' name='CN'/> <payload-type id='13' name='CN'/>
</description> </description>
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-tcp'> <transport xmlns='urn:xmpp:tmp:jingle:transports:ice-udp'>
<candidate component='1' <candidate component='1'
foundation='1' foundation='1'
generation='0' generation='0'
@ -1096,7 +1096,7 @@ Romeo Juliet
<payload-type id='32' name='MPV' clockrate='90000'/> <payload-type id='32' name='MPV' clockrate='90000'/>
<payload-type id='33' name='MP2T' clockrate='90000'/> <payload-type id='33' name='MP2T' clockrate='90000'/>
</description> </description>
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-tcp'> <transport xmlns='urn:xmpp:tmp:jingle:transports:ice-udp'>
</content> </content>
</jingle> </jingle>
</iq> </iq>
@ -1127,7 +1127,7 @@ Romeo Juliet
<payload-type id='32' name='MPV' clockrate='90000'/> <payload-type id='32' name='MPV' clockrate='90000'/>
<payload-type id='33' name='MP2T' clockrate='90000'/> <payload-type id='33' name='MP2T' clockrate='90000'/>
</description> </description>
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-tcp'/> <transport xmlns='urn:xmpp:tmp:jingle:transports:ice-udp'/>
</content> </content>
</jingle> </jingle>
</iq> </iq>
@ -1226,7 +1226,7 @@ Romeo Juliet
<payload-type id='103' name='L16' clockrate='16000' channels='2'/> <payload-type id='103' name='L16' clockrate='16000' channels='2'/>
<payload-type id='98' name='x-ISAC' clockrate='8000'/> <payload-type id='98' name='x-ISAC' clockrate='8000'/>
</description> </description>
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-tcp'/> <transport xmlns='urn:xmpp:tmp:jingle:transports:ice-udp'/>
</content> </content>
</jingle> </jingle>
</iq> </iq>
@ -1268,7 +1268,7 @@ Romeo Juliet
sid='a73sjjvkla37jfea'> sid='a73sjjvkla37jfea'>
<content creator='responder' name='encrypted-audio-content'> <content creator='responder' name='encrypted-audio-content'>
<description xmlns='urn:xmpp:tmp:jingle:apps:audio-rtp' profile='UDP/TLS/RTP/SAVP'/> <description xmlns='urn:xmpp:tmp:jingle:apps:audio-rtp' profile='UDP/TLS/RTP/SAVP'/>
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-tcp'/> <transport xmlns='urn:xmpp:tmp:jingle:transports:ice-udp'/>
</content> </content>
</jingle> </jingle>
</iq> </iq>
@ -1291,7 +1291,7 @@ Romeo Juliet
sid='a73sjjvkla37jfea'> sid='a73sjjvkla37jfea'>
<content creator='responder' name='encrypted-audio-content'> <content creator='responder' name='encrypted-audio-content'>
<description xmlns='urn:xmpp:tmp:jingle:apps:audio-rtp' profile='UDP/TLS/RTP/SAVP'/> <description xmlns='urn:xmpp:tmp:jingle:apps:audio-rtp' profile='UDP/TLS/RTP/SAVP'/>
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-tcp'/> <transport xmlns='urn:xmpp:tmp:jingle:transports:ice-udp'/>
</content> </content>
</jingle> </jingle>
</iq> </iq>
@ -1317,7 +1317,7 @@ Romeo Juliet
<description xmlns='urn:xmpp:tmp:jingle:apps:audio-rtp' profile='UDP/TLS/RTP/SAVP'/> <description xmlns='urn:xmpp:tmp:jingle:apps:audio-rtp' profile='UDP/TLS/RTP/SAVP'/>
[ ... ] [ ... ]
</description> </description>
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-tcp'> <transport xmlns='urn:xmpp:tmp:jingle:transports:ice-udp'>
<candidate component='1' <candidate component='1'
foundation='1' foundation='1'
generation='0' generation='0'
@ -1365,7 +1365,7 @@ Romeo Juliet
<payload-type id='8' name='PCMA'/> <payload-type id='8' name='PCMA'/>
<payload-type id='13' name='CN'/> <payload-type id='13' name='CN'/>
</description> </description>
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-tcp'> <transport xmlns='urn:xmpp:tmp:jingle:transports:ice-udp'>
<candidate component='1' <candidate component='1'
foundation='1' foundation='1'
generation='0' generation='0'

View File

@ -234,7 +234,7 @@ INITIATOR RESPONDER
</section2> </section2>
<section2 topic='Candidate Negotiation' anchor='protocol-candidates'> <section2 topic='Candidate Negotiation' anchor='protocol-candidates'>
<p>Once the responder acknowledges receipt of the session initiation request as shown above, both initiator and responder MUST immediately negotiate connectivity over the ICE transport by exchanging XML-formatted candidate transports for the channel. This negotiation proceeds immediately in order to maximize the possibility that media can be exchanged as quickly as possible. <note>Concurrent with negotiation of the ICE candidates, it is possible for the initiator and responder to negotiate which content types the session will include, which transport methods will be tried for each content type, etc. Those negotiation flows are shown in other specifications, such as <cite>XEP-0166</cite>. This document specifies only negotiation of the ICE transport method.</note></p> <p>Once the responder acknowledges receipt of the session initiation request as shown above, both initiator and responder MUST immediately negotiate connectivity over the ICE transport by exchanging XML-formatted candidate transports for the channel. This negotiation proceeds immediately in order to maximize the possibility that media can be exchanged as quickly as possible. <note>Concurrent with negotiation of the ICE candidates, it is possible for the initiator and responder to negotiate which content types the session will include, which transport methods will be tried for each content type, etc. Those negotiation flows are shown in other specifications, such as <cite>XEP-0166</cite>. This document specifies only negotiation of the ICE transport method.</note></p>
<p>Note: In order to expedite session establishment, the initiator MAY send transport candidates immediately after sending the "session-initiate" message and before receiving acknowledgement from the responder (i.e., the initiator MUST consider the session to be live even before receiving acknowledgement). Given in-order delivery, the responder should receive such "transport-info" messages after receiving the "session-initiate" message; if not, it is appropriate for the responder to return &lt;unknown-session/&gt; errors since it according to its state machine the session does not exist. If either party receives an &lt;unknown-session/&gt; from the other party, it MUST terminate the negotiation and the session.</p> <p>Note: In order to expedite session establishment, the initiator MAY send transport candidates immediately after sending the "session-initiate" message and before receiving acknowledgement from the responder (i.e., the initiator MUST consider the session to be live even before receiving acknowledgement). Given in-order delivery, the responder should receive such "transport-info" messages after receiving the "session-initiate" message; if not, it is appropriate for the responder to return &lt;unknown-session/&gt; errors since according to its state machine the session does not exist. If either party receives an &lt;unknown-session/&gt; from the other party, it MUST terminate the negotiation and the session.</p>
<p>The candidate syntax and negotiation flow are described below.</p> <p>The candidate syntax and negotiation flow are described below.</p>
<section3 topic='Syntax of Candidate Element' anchor='protocol-candidates-syntax'> <section3 topic='Syntax of Candidate Element' anchor='protocol-candidates-syntax'>
<p>The following is an example of the candidate format:</p> <p>The following is an example of the candidate format:</p>

View File

@ -188,7 +188,7 @@
to='juliet@capulet.com/balcony' to='juliet@capulet.com/balcony'
type='result'/> type='result'/>
]]></example> ]]></example>
<p>Naturally, the initiator SHOULD also attempt to send media to the responder as specified above. This media too may or may not get through, but if it does then the other party SHOULD acknowledge receipt.</p> <p>Naturally, the initiator SHOULD also attempt to send media to the responder as specified above. This media, too, may or may not get through, but if it does then the other party SHOULD acknowledge receipt.</p>
</section3> </section3>
<section3 topic='Sending An Informational Message' anchor='response-info'> <section3 topic='Sending An Informational Message' anchor='response-info'>
<p>When it attempts to send data to a Raw UDP candidate, a party SHOULD send an informational message of &lt;trying/&gt;.</p> <p>When it attempts to send data to a Raw UDP candidate, a party SHOULD send an informational message of &lt;trying/&gt;.</p>
@ -280,7 +280,7 @@
</section1> </section1>
<section1 topic='Security Considerations' anchor='security'> <section1 topic='Security Considerations' anchor='security'>
<p>In order to secure the data stream that is negotiated via the Jingle ICE transport, implementations SHOULD use encryption methods appropriate to the transport method and media being exchanged (for details regarding audio and video exchanges via RTP, refer to <cite>XEP-0167</cite> and <cite>XEP-0180</cite>).</p> <p>In order to secure the data stream that is negotiated via the Jingle ICE-UDP transport, implementations SHOULD use encryption methods appropriate to the transport method and media being exchanged (for details regarding audio and video exchanges via RTP, refer to <cite>XEP-0167</cite> and <cite>XEP-0180</cite>).</p>
</section1> </section1>
<section1 topic='IANA Considerations' anchor='iana'> <section1 topic='IANA Considerations' anchor='iana'>

View File

@ -119,7 +119,7 @@
<li><p>The application format negotiation process is defined in the <link url='#negotiation'>Negotiating a Jingle Video Session</link> section of this document.</p></li> <li><p>The application format negotiation process is defined in the <link url='#negotiation'>Negotiating a Jingle Video Session</link> section of this document.</p></li>
<li><p>The semantics of the &DESCRIPTION; element are defined in the <link url='#format'>Application Format</link> section of this document.</p></li> <li><p>The semantics of the &DESCRIPTION; element are defined in the <link url='#format'>Application Format</link> section of this document.</p></li>
<li><p>A mapping of Jingle semantics to the Session Description Protocol is provided in the <link url='#sdp'>Mapping to Session Description Protocol</link> section of this document.</p></li> <li><p>A mapping of Jingle semantics to the Session Description Protocol is provided in the <link url='#sdp'>Mapping to Session Description Protocol</link> section of this document.</p></li>
<li><p>A Jingle video session MUST use a lossy transport method such as &xep0177; or the "ice-udp" method specified in &xep0176;.</p></li> <li><p>A Jingle video session SHOULD use a lossy transport method such as &xep0177; or the "ice-udp" method specified in &xep0176;.</p></li>
<li> <li>
<p>Content is to be sent and received as follows:</p> <p>Content is to be sent and received as follows:</p>
<ul> <ul>

View File

@ -10,7 +10,7 @@
<abstract>This specification defines an XML format for encapsulating Dual Tone Multi-Frequency (DTMF) data in informational messages sent within the context of Jingle audio sessions, e.g. to be used in the context of Interactive Voice Response (IVR) systems.</abstract> <abstract>This specification defines an XML format for encapsulating Dual Tone Multi-Frequency (DTMF) data in informational messages sent within the context of Jingle audio sessions, e.g. to be used in the context of Interactive Voice Response (IVR) systems.</abstract>
&LEGALNOTICE; &LEGALNOTICE;
<number>0181</number> <number>0181</number>
<status>Experimental</status> <status>Proposed</status>
<type>Standards Track</type> <type>Standards Track</type>
<sig>Standards</sig> <sig>Standards</sig>
<approver>Council</approver> <approver>Council</approver>
@ -79,7 +79,7 @@
<section1 topic='Tone Format' anchor='format'> <section1 topic='Tone Format' anchor='format'>
<p>The format for the XML DTMF representation is as follows &NSNOTE;:</p> <p>The format for the XML DTMF representation is as follows &NSNOTE;:</p>
<example caption="Basic DTMF Format"><![CDATA[ <example caption="Basic DTMF Format"><![CDATA[
<dtmf xmlns='http://www.xmpp.org/extensions/xep-0181.html#ns' <dtmf xmlns='urn:xmpp:tmp:jingle:dtmf'
action='[button-down|button-up]' action='[button-down|button-up]'
code='integer'/> code='integer'/>
]]></example> ]]></example>
@ -91,11 +91,11 @@
id='dtmf1' id='dtmf1'
to='ivr.shakespeare.lit' to='ivr.shakespeare.lit'
type='set'> type='set'>
<jingle xmlns='http://www.xmpp.org/extensions/xep-0166.html#ns' <jingle xmlns='urn:xmpp:tmp:jingle'
action='session-info' action='session-info'
initiator='juliet@capulet.com/balcony' initiator='juliet@capulet.com/balcony'
sid='a73sjjvkla37jfea'> sid='a73sjjvkla37jfea'>
<dtmf xmlns='http://www.xmpp.org/extensions/xep-0181.html#ns' <dtmf xmlns='urn:xmpp:tmp:jingle:dtmf'
action='button-down' action='button-down'
code='7'/> code='7'/>
</jingle> </jingle>
@ -116,24 +116,24 @@
type='error'> type='error'>
<error type='cancel'> <error type='cancel'>
<feature-not-implemented xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> <feature-not-implemented xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
<unsupported-info xmlns='http://www.xmpp.org/extensions/xep-0166.html#ns-errors'/> <unsupported-info xmlns='urn:xmpp:tmp:jingle:errors'/>
</error> </error>
</iq> </iq>
]]></example> ]]></example>
</section1> </section1>
<section1 topic='Negotiating Use of the RFC 4733 Format' anchor='rfc4733'> <section1 topic='Negotiating Use of the RFC 4733 Format' anchor='rfc4733'>
<p>Some applications may want to stream Jingle voice RTP directly to a non-XMPP entity, such as a SIP phone (see &rfc3261;). In this scenario, DTMF needs to be sent in the content channel. Jingle DTMF enables Jingle entities to negotiate whether to send RTP over the XMPP signalling channel as described above, or over the content channel using &rfc4733;.</p> <p>Some applications may want to stream Jingle voice RTP directly to a non-XMPP entity, such as a SIP phone (see &rfc3261;). In this scenario, DTMF needs to be sent in the content channel. Jingle DTMF enables Jingle entities to negotiate whether to send RTP over the XMPP signalling channel as described above, or over the content channel using &rfc4733;.</p>
<p>To request that the voice session will switch to use of the RFC 4733 format for communicating DTMF, a client sends a &lt;dtmf-method/&gt; element, qualified by the 'http://www.xmpp.org/extensions/xep-0181.html#ns' namespace as the payload of a Jingle session-info message:</p> <p>To request that the voice session will switch to use of the RFC 4733 format for communicating DTMF, a client sends a &lt;dtmf-method/&gt; element, qualified by the 'urn:xmpp:tmp:jingle:dtmf' namespace as the payload of a Jingle session-info message:</p>
<example caption="Client Requests Use of RFC 4733"><![CDATA[ <example caption="Client Requests Use of RFC 4733"><![CDATA[
<iq from='juliet@capulet.com/balcony' <iq from='juliet@capulet.com/balcony'
id='dtmf2' id='dtmf2'
to='ivr.shakespeare.lit' to='ivr.shakespeare.lit'
type='set'> type='set'>
<jingle xmlns='http://www.xmpp.org/extensions/xep-0166.html#ns' <jingle xmlns='urn:xmpp:tmp:jingle'
action='session-info' action='session-info'
initiator='juliet@capulet.com/balcony' initiator='juliet@capulet.com/balcony'
sid='a73sjjvkla37jfea'> sid='a73sjjvkla37jfea'>
<dtmf-method xmlns='http://www.xmpp.org/extensions/xep-0181.html#ns' method='rtp'> <dtmf-method xmlns='urn:xmpp:tmp:jingle:dtmf' method='rtp'>
</jingle> </jingle>
</iq> </iq>
]]></example> ]]></example>
@ -153,14 +153,14 @@
type='error'> type='error'>
<error type='cancel'> <error type='cancel'>
<feature-not-implemented xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> <feature-not-implemented xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
<unsupported-dtmf-method xmlns='http://www.xmpp.org/extensions/xep-0181.html#ns-errors'/> <unsupported-dtmf-method xmlns='urn:xmpp:tmp:jingle:dtmf:errors'/>
</error> </error>
</iq> </iq>
]]></example> ]]></example>
</section1> </section1>
<section1 topic='Determining Support' anchor='disco'> <section1 topic='Determining Support' anchor='disco'>
<p>If an entity supports Jingle DTMF (which natively includes sending of DTMF in the XMPP signalling channel), it MUST return a &xep0030; feature of "http://www.xmpp.org/extensions/xep-0181.html#ns" in response to service discovery information requests.</p> <p>If an entity supports Jingle DTMF (which natively includes sending of DTMF in the XMPP signalling channel), it MUST return a &xep0030; feature of "urn:xmpp:tmp:jingle:dtmf" in response to service discovery information requests.</p>
<p>If an entity also supports sending of DTMF in the content channel, it MUST also return a service discovery feature of "urn:xmpp:jingle:dtmf:rtp" in response to service discovery information requests.</p> <p>If an entity also supports sending of DTMF in the content channel, it MUST also return a service discovery feature of "urn:xmpp:jingle:dtmf:rtp" in response to service discovery information requests.</p>
<p>Naturally, support MAY also be determined via the dynamic, presence-based profile of Service Discovery defined in &xep0115;.</p> <p>Naturally, support MAY also be determined via the dynamic, presence-based profile of Service Discovery defined in &xep0115;.</p>
</section1> </section1>
@ -177,8 +177,8 @@
<section2 topic='Protocol Namespaces' anchor='ns'> <section2 topic='Protocol Namespaces' anchor='ns'>
<p>Until this specification advances to a status of Draft, its associated namespaces shall be:</p> <p>Until this specification advances to a status of Draft, its associated namespaces shall be:</p>
<ul> <ul>
<li>http://www.xmpp.org/extensions/xep-0181.html#ns</li> <li>urn:xmpp:tmp:jingle:dtmf</li>
<li>http://www.xmpp.org/extensions/xep-0181.html#ns-errors</li> <li>urn:xmpp:tmp:jingle:dtmf:errors</li>
</ul> </ul>
<p>Upon advancement of this specification, the &REGISTRAR; shall issue permanent namespaces in accordance with the process defined in Section 4 of &xep0053;.</p> <p>Upon advancement of this specification, the &REGISTRAR; shall issue permanent namespaces in accordance with the process defined in Section 4 of &xep0053;.</p>
<p>The following namespaces are requested, and are thought to be unique per the XMPP Registrar's requirements:</p> <p>The following namespaces are requested, and are thought to be unique per the XMPP Registrar's requirements:</p>
@ -199,8 +199,8 @@
<xs:schema <xs:schema
xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:xs='http://www.w3.org/2001/XMLSchema'
targetNamespace='http://www.xmpp.org/extensions/xep-0181.html#ns' targetNamespace='urn:xmpp:tmp:jingle:dtmf'
xmlns='http://www.xmpp.org/extensions/xep-0181.html#ns' xmlns='urn:xmpp:tmp:jingle:dtmf'
elementFormDefault='qualified'> elementFormDefault='qualified'>
<xs:element name='dtmf'> <xs:element name='dtmf'>
@ -259,8 +259,8 @@
<xs:schema <xs:schema
xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:xs='http://www.w3.org/2001/XMLSchema'
targetNamespace='http://www.xmpp.org/extensions/xep-0181.html#ns-errors' targetNamespace='urn:xmpp:tmp:jingle:dtmf:errors'
xmlns='http://www.xmpp.org/extensions/xep-0181.html#ns-errors' xmlns='urn:xmpp:tmp:jingle:dtmf:errors'
elementFormDefault='qualified'> elementFormDefault='qualified'>
<xs:element name='unsupported-dtmf-method' type='empty'/> <xs:element name='unsupported-dtmf-method' type='empty'/>