git-svn-id: file:///home/ksmith/gitmigration/svn/xmpp/trunk@1715 4b5297f7-1745-476d-ba37-a9c6900126ab
This commit is contained in:
Peter Saint-Andre 2008-02-29 19:20:01 +00:00
parent 4cde5de79e
commit f24fccb993
1 changed files with 54 additions and 45 deletions

View File

@ -25,6 +25,12 @@
&stpeter;
&seanegan;
&robmcqueen;
<revision>
<version>0.17</version>
<date>2008-02-29</date>
<initials>psa</initials>
<remark><p>Corrected use of content-replace action per XEP-0166.</p></remark>
</revision>
<revision>
<version>0.16</version>
<date>2008-02-28</date>
@ -275,7 +281,7 @@
to='romeo@montague.net/orchard'
type='result'/>
]]></example>
<p>The responder then should send a list of the payload types that it can receive via a Jingle "content-accept" (or "session-accept") action. The list that the responder sends MAY include any payload types (not a subset of the payload types sent by the initiator) but SHOULD retain the ID numbers specified by the initiator. The order of the &PAYLOADTYPE; elements indicates the responder's preferences, with the most-preferred types first.</p>
<p>If the responder wishes to accept the session, it MUST send a content-accept action to the initiator, which SHOULD include a list of the payload types that it can receive. The list that the responder sends MAY include any payload types (not a subset of the payload types sent by the initiator) but SHOULD retain the ID numbers specified by the initiator. The order of the &PAYLOADTYPE; elements indicates the responder's preferences, with the most-preferred types first.</p>
<example caption="Responder accepts content type"><![CDATA[
<iq from='juliet@capulet.com/balcony'
id='jingleaudio2'
@ -300,7 +306,7 @@
</jingle>
</iq>
]]></example>
<p>The initiator acknowledges the 'content-accept' with an empty IQ result:</p>
<p>The initiator acknowledges the content-accept action:</p>
<example caption="Initiator acknowledges modified application format"><![CDATA[
<iq from='romeo@montegue.net/orchard'
id='jingleaudio2'
@ -352,7 +358,6 @@
to='juliet@capulet.com/balcony'
type='result'/>
]]></example>
<p>Note: Because a "session-accept" action implicitly indicates acceptance of the application format (i.e., "content-accept"), it is not necessary to send a separate "content-accept" action. This flow is shown for completeness only.</p>
</section1>
<section1 topic='Mapping to Session Description Protocol' anchor='sdp'>
@ -619,7 +624,7 @@ Romeo Juliet
|<--------------------------->|
| STUN connectivity checks |
|<--------------------------->|
| content-modify |
| content-replace |
|---------------------------->|
| ack |
|<----------------------------|
@ -683,14 +688,14 @@ Romeo Juliet
to='juliet@capulet.lit/balcony'
type='result'/>
]]></example>
<p>Because the parties have chosen the Jingle ICE-UDP Transport Method, the initiator and responder exchange an open-ended number of possible candidate transports, perform connectivity checks, and agree upon a candidate transport as explained in <cite>XEP-0176</cite>. Once ICE negotiation is completed, the initiator sends a content-modify action to the responder.</p>
<example caption="Initiator requests content-modify"><![CDATA[
<p>Because the parties have chosen the Jingle ICE-UDP Transport Method, the initiator and responder exchange an open-ended number of possible candidate transports, perform connectivity checks, and agree upon a candidate transport as explained in <cite>XEP-0176</cite>. Once ICE negotiation is completed, the initiator sends a content-replace action to the responder.</p>
<example caption="Initiator requests content-replace"><![CDATA[
<iq from='romeo@montague.lit/orchard'
id='mod1'
id='rep1'
to='juliet@capulet.lit/balcony'
type='set'>
<jingle xmlns='urn:xmpp:tmp:jingle'
action='content-modify'
action='content-replace'
initiator='romeo@montague.lit/orchard'
sid='a73sjjvkla37jfea'>
<content creator='initiator' name='this-is-the-audio-content'>
@ -718,10 +723,10 @@ Romeo Juliet
</jingle>
</iq>
]]></example>
<p>The responder then acknowledges the content-modify action and sends a session-accept action.</p>
<example caption="Responder acknowledges content-modify"><![CDATA[
<p>The responder then acknowledges the content-replace action and sends a session-accept action.</p>
<example caption="Responder acknowledges content-replace"><![CDATA[
<iq from='juliet@capulet.lit/balcony'
id='mod1'
id='rep1'
to='romeo@montague.lit/orchard'
type='result'/>
]]></example>
@ -823,7 +828,7 @@ Romeo Juliet
|<--------------------------->|
| STUN connectivity checks |
|<--------------------------->|
| content-modify |
| content-replace |
|---------------------------->|
| ack |
|<----------------------------|
@ -939,14 +944,14 @@ Romeo Juliet
to='juliet@capulet.lit/balcony'
type='result'/>
]]></example>
<p>Because the parties have chosen the Jingle ICE-UDP Transport Method, the initiator and responder exchange an open-ended number of possible candidate transports, perform connectivity checks, and agree upon a candidate transport as explained in <cite>XEP-0176</cite>. Once ICE negotiation is completed, the initiator sends a content-modify action to the responder.</p>
<example caption="Initiator requests content-modify"><![CDATA[
<p>Because the parties have chosen the Jingle ICE-UDP Transport Method, the initiator and responder exchange an open-ended number of possible candidate transports, perform connectivity checks, and agree upon a candidate transport as explained in <cite>XEP-0176</cite>. Once ICE negotiation is completed, the initiator sends a content-replace action to the responder.</p>
<example caption="Initiator requests content-replace"><![CDATA[
<iq from='romeo@montague.lit/orchard'
id='mod1'
id='rep1'
to='juliet@capulet.lit/balcony'
type='set'>
<jingle xmlns='urn:xmpp:tmp:jingle'
action='content-modify'
action='content-replace'
initiator='romeo@montague.lit/orchard'
sid='a73sjjvkla37jfea'>
<content creator='initiator' name='this-is-the-audio-content'>
@ -974,10 +979,10 @@ Romeo Juliet
</jingle>
</iq>
]]></example>
<p>The responder then acknowledges the content-modify action and sends a session-accept action.</p>
<example caption="Responder acknowledges content-modify"><![CDATA[
<p>The responder then acknowledges the content-replace action and sends a session-accept action.</p>
<example caption="Responder acknowledges content-replace"><![CDATA[
<iq from='juliet@capulet.lit/balcony'
id='mod1'
id='rep1'
to='romeo@montague.lit/orchard'
type='result'/>
]]></example>
@ -1096,14 +1101,14 @@ Romeo Juliet
</jingle>
</iq>
]]></example>
<p>The entity receiving the content-add request then acknowledges the request and, if it is acceptable, returns a content-accept:</p>
<p>The entity receiving the content-add request then acknowledges the request and, if it is acceptable, returns a content-accept action:</p>
<example caption="Initiator acknowledges content-add"><![CDATA[
<iq from='romeo@montague.lit/orchard'
id='add1'
to='juliet@capulet.lit/balcony'
type='result'/>
]]></example>
<example caption="Initiator accepts content type definition"><![CDATA[
<example caption="Initiator accepts new content definition"><![CDATA[
<iq from='romeo@montague.lit/orchard'
id='add2'
to='juliet@capulet.lit/balcony'
@ -1174,7 +1179,7 @@ Romeo Juliet
|<----------------------------|
| ack |
|---------------------------->|
| content-modify |
| content-replace |
|<----------------------------|
| ack |
|---------------------------->|
@ -1187,7 +1192,7 @@ Romeo Juliet
|<--------------------------->|
| STUN connectivity checks |
|<--------------------------->|
| content-modify |
| content-replace |
|---------------------------->|
| ack |
|<----------------------------|
@ -1251,61 +1256,65 @@ Romeo Juliet
to='juliet@capulet.lit/balcony'
type='result'/>
]]></example>
<p>However, Juliet wants to make sure that the communications are encrypted, so she sends a "content-modify" request to Romeo.</p>
<example caption="Responder requests content-modify"><![CDATA[
<p>However, Juliet wants to make sure that the communications are encrypted, so she sends a content-replace action to Romeo.</p>
<example caption="Responder requests content-replace"><![CDATA[
<iq from='juliet@capulet.lit/balcony'
id='mod1'
id='rep2'
to='romeo@montague.lit/orchard'
type='set'>
<jingle xmlns='urn:xmpp:tmp:jingle'
action='content-modify'
action='content-replace'
initiator='romeo@montague.lit/orchard'
sid='a73sjjvkla37jfea'>
<content creator='responder'
name='this-is-the-audio-content'
profile='UDP/TLS/RTP/SAVP'/>
<content creator='responder' name='encrypted-audio-content'>
<description xmlns='urn:xmpp:tmp:jingle:apps:audio-rtp' profile='UDP/TLS/RTP/SAVP'/>
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-tcp'/>
</content>
</jingle>
</iq>
]]></example>
<p>Romeo then acknowledges the content-modify request and, if it is acceptable, returns a content-accept:</p>
<example caption="Initiator acknowledges content-modify"><![CDATA[
<p>Romeo then acknowledges the content-replace action and, if it is acceptable, returns a content-accept action:</p>
<example caption="Initiator acknowledges content-replace"><![CDATA[
<iq from='romeo@montague.lit/orchard'
id='mod1'
id='rep2'
to='juliet@capulet.lit/balcony'
type='result'/>
]]></example>
<example caption="Initiator accepts content definition"><![CDATA[
<iq from='romeo@montague.lit/orchard'
id='mod2'
id='accept3'
to='juliet@capulet.lit/balcony'
type='set'>
<jingle xmlns='urn:xmpp:tmp:jingle'
action='content-accept'
initiator='romeo@montague.lit/orchard'
sid='a73sjjvkla37jfea'>
<content creator='responder' name='this-is-the-audio-content' profile='UDP/TLS/RTP/SAVP'/>
<content creator='responder' name='encrypted-audio-content'>
<description xmlns='urn:xmpp:tmp:jingle:apps:audio-rtp' profile='UDP/TLS/RTP/SAVP'/>
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-tcp'/>
</content>
</jingle>
</iq>
]]></example>
<p>The other party then acknowledges the acceptance.</p>
<example caption="Responder acknowledges content-accept"><![CDATA[
<iq from='juliet@capulet.lit/balcony'
id='mod2'
id='accept3'
to='romeo@montague.lit/orchard'
type='result'/>
]]></example>
<p>Because the parties have chosen the Jingle ICE-UDP Transport Method, the initiator and responder exchange an open-ended number of possible candidate transports, perform connectivity checks, and agree upon a candidate transport as explained in <cite>XEP-0176</cite>. Once ICE negotiation is completed, the initiator sends a content-modify action to the responder.</p>
<example caption="Initiator requests content-modify"><![CDATA[
<p>Because the parties have chosen the Jingle ICE-UDP Transport Method, the initiator and responder exchange an open-ended number of possible candidate transports, perform connectivity checks, and agree upon a candidate transport as explained in <cite>XEP-0176</cite>. Once ICE negotiation is completed, the initiator sends a content-replace action to the responder.</p>
<example caption="Initiator requests content-replace"><![CDATA[
<iq from='romeo@montague.lit/orchard'
id='mod1'
id='rep2'
to='juliet@capulet.lit/balcony'
type='set'>
<jingle xmlns='urn:xmpp:tmp:jingle'
action='content-modify'
action='content-replace'
initiator='romeo@montague.lit/orchard'
sid='a73sjjvkla37jfea'>
<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='UDP/TLS/RTP/SAVP'/>
[ ... ]
</description>
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-tcp'>
@ -1329,10 +1338,10 @@ Romeo Juliet
</jingle>
</iq>
]]></example>
<p>The responder then acknowledges the content-modify action and sends a session-accept action.</p>
<example caption="Responder acknowledges content-modify"><![CDATA[
<p>The responder then acknowledges the content-replace action and sends a session-accept action.</p>
<example caption="Responder acknowledges content-replace"><![CDATA[
<iq from='juliet@capulet.lit/balcony'
id='mod1'
id='rep2'
to='romeo@montague.lit/orchard'
type='result'/>
]]></example>
@ -1421,7 +1430,7 @@ Romeo Juliet
<p>If it is necessary to send Dual Tone Multi-Frequency (DTMF) tones, it is REQUIRED to use the XML format specified &xep0181;.</p>
</section2>
<section2 topic='When to Listen' anchor='impl-listen'>
<p>When the Jingle Audio content type is accepted via a "content-accept" action, both initiator and responder SHOULD start listening for audio as defined by the negotiated transport method and audio application format. For interoperability with telephony systems, after the responder acknowledges the session initiation request, the responder SHOULD send a "ringing" message and both parties SHOULD play any audio received.</p>
<p>When the Jingle Audio content type is accepted via a content-accept action, both initiator and responder SHOULD start listening for audio as defined by the negotiated transport method and audio application format. For interoperability with telephony systems, after the responder acknowledges the session initiation request, the responder SHOULD send a "ringing" message and both parties SHOULD play any audio received.</p>
</section2>
</section1>