1
0
mirror of https://github.com/moparisthebest/xeps synced 2024-11-28 12:12:22 -05:00
git-svn-id: file:///home/ksmith/gitmigration/svn/xmpp/trunk@3023 4b5297f7-1745-476d-ba37-a9c6900126ab
This commit is contained in:
Peter Saint-Andre 2009-04-08 22:14:40 +00:00
parent 80a862d997
commit 2a019d73fa

View File

@ -28,6 +28,12 @@
&seanegan; &seanegan;
&robmcqueen; &robmcqueen;
&diana; &diana;
<revision>
<version>0.30</version>
<date>2009-04-08</date>
<initials>psa</initials>
<remark><p>Further adjusted session flows for two scenarios scenario; added unhold and unmute messages.</p></remark>
</revision>
<revision> <revision>
<version>0.29</version> <version>0.29</version>
<date>2009-03-20</date> <date>2009-03-20</date>
@ -673,7 +679,23 @@ delivery-method=inline; configuration=somebase16string;
action='session-info' action='session-info'
initiator='romeo@montague.lit/orchard' initiator='romeo@montague.lit/orchard'
sid='a73sjjvkla37jfea'> sid='a73sjjvkla37jfea'>
<hold xmlns='urn:xmpp:jingle:apps:rtp:info:1'/> <hold xmlns='urn:xmpp:jingle:apps:rtp:info:1'
name='voice'/>
</jingle>
</iq>
]]></example>
<p>When the holder wishes to end the hold state, it sends an informational payload of &lt;unhold/&gt; or &lt;active/&gt;.</p>
<example caption="Responder ends the hold state"><![CDATA[
<iq from='juliet@capulet.lit/balcony'
id='br81gd63'
to='romeo@montague.lit/orchard'
type='set'>
<jingle xmlns='urn:xmpp:jingle:1'
action='session-info'
initiator='romeo@montague.lit/orchard'
sid='a73sjjvkla37jfea'>
<unhold xmlns='urn:xmpp:jingle:apps:rtp:info:1'
name='voice'/>
</jingle> </jingle>
</iq> </iq>
]]></example> ]]></example>
@ -692,6 +714,21 @@ delivery-method=inline; configuration=somebase16string;
<mute xmlns='urn:xmpp:jingle:apps:rtp:info:1' <mute xmlns='urn:xmpp:jingle:apps:rtp:info:1'
name='voice'/> name='voice'/>
</jingle> </jingle>
</iq>
]]></example>
<p>To end the mute state, the party sends an informational payload of &lt;unmute/&gt; or &lt;active/&gt;.</p>
<example caption="Responder ends the mute state"><![CDATA[
<iq from='juliet@capulet.lit/balcony'
id='ms91g47c'
to='romeo@montague.lit/orchard'
type='set'>
<jingle xmlns='urn:xmpp:jingle:1'
action='session-info'
initiator='romeo@montague.lit/orchard'
sid='a73sjjvkla37jfea'>
<unmute xmlns='urn:xmpp:jingle:apps:rtp:info:1'
name='voice'/>
</jingle>
</iq> </iq>
]]></example> ]]></example>
</section2> </section2>
@ -784,10 +821,6 @@ Romeo Juliet
|---------------------------->| |---------------------------->|
| ack | | ack |
|<----------------------------| |<----------------------------|
| session-info (ringing) |
|<----------------------------|
| ack |
|---------------------------->|
| terminate | | terminate |
| (reason = busy) | | (reason = busy) |
|<----------------------------| |<----------------------------|
@ -849,27 +882,7 @@ Romeo Juliet
to='romeo@montague.lit/orchard' to='romeo@montague.lit/orchard'
type='result'/> type='result'/>
]]></example> ]]></example>
<example caption="Responder sends ringing message"><![CDATA[ <p>However, the responder immediately terminates the session.</p>
<iq from='juliet@capulet.lit/balcony'
id='og7f354f'
to='romeo@montague.lit/orchard'
type='set'>
<jingle xmlns='urn:xmpp:jingle:1'
action='session-info'
initiator='romeo@montague.lit/orchard'
sid='a73sjjvkla37jfea'>
<ringing xmlns='urn:xmpp:jingle:apps:rtp:info:1'/>
</jingle>
</iq>
]]></example>
<example caption="Initiator acknowledges ringing message"><![CDATA[
<iq from='romeo@montague.lit/orchard'
id='og7f354f'
to='juliet@capulet.lit/balcony'
type='result'/>
]]></example>
<p>Now the responder immediately terminates the session.</p>
<p>Note: It might be wondered why the responder does not accept the session and then terminate. That order would be acceptable, too, but here we assume that the responder's client has immediate information about the responder's free/busy status (e.g., because the responder is on the phone) and therefore returns an automated busy signal without requiring user interaction.</p>
<example caption="Responder terminates the session"><![CDATA[ <example caption="Responder terminates the session"><![CDATA[
<iq from='juliet@capulet.lit/balcony' <iq from='juliet@capulet.lit/balcony'
id='ch3vs61d' id='ch3vs61d'
@ -885,6 +898,7 @@ Romeo Juliet
</jingle> </jingle>
</iq> </iq>
]]></example> ]]></example>
<p>Note: It might be wondered why the responder does not accept the session and then terminate. That order would be acceptable, too, but here we assume that the responder's client has immediate information about the responder's free/busy status (e.g., because the responder is on the phone) and therefore returns an automated busy signal without requiring user interaction.</p>
<example caption="Initiator acknowledges termination"><![CDATA[ <example caption="Initiator acknowledges termination"><![CDATA[
<iq from='romeo@montague.lit/orchard' <iq from='romeo@montague.lit/orchard'
id='ch3vs61d' id='ch3vs61d'
@ -1353,7 +1367,7 @@ Romeo Gateway Juliet
to='romeo@montague.lit/orchard' to='romeo@montague.lit/orchard'
type='result'/> type='result'/>
]]></example> ]]></example>
<p>Now the gateway sends a content-add message to Romeo while waiting for Juliet to pay attention to her telephony interface.</p> <p>Now the gateway sends a content-add message to Romeo while waiting for Juliet to pay attention to her telephony interface. It specifies a transport method of Raw UDP because it hosts its own media relay.</p>
<example caption="Gateway sends content-add on behalf of responder"><![CDATA[ <example caption="Gateway sends content-add on behalf of responder"><![CDATA[
<iq from='juliet@capulet.lit/balcony' <iq from='juliet@capulet.lit/balcony'
id='s12f7hb5' id='s12f7hb5'
@ -1370,7 +1384,7 @@ Romeo Gateway Juliet
<description xmlns='urn:xmpp:jingle:apps:rtp:1' media='audio'> <description xmlns='urn:xmpp:jingle:apps:rtp:1' media='audio'>
<payload-type id='18' name='G729'/> <payload-type id='18' name='G729'/>
</description> </description>
<transport xmlns='urn:xmpp:jingle:transports:ice-udp:1' <transport xmlns='urn:xmpp:jingle:transports:raw-udp:1'
pwd='asd88fgpdd777uzjYhagZg' pwd='asd88fgpdd777uzjYhagZg'
ufrag='9uB6'> ufrag='9uB6'>
<candidate component='1' <candidate component='1'
@ -1420,7 +1434,7 @@ Romeo Gateway Juliet
to='romeo@montague.lit/orchard' to='romeo@montague.lit/orchard'
type='result'/> type='result'/>
]]></example> ]]></example>
<p>Now the gateway sends early media to Romeo.</p> <p>Now the gateway sends early media to Romeo via the media relay that it hosts.</p>
<p>Eventually, the responder sends a session-accept.</p> <p>Eventually, the responder sends a session-accept.</p>
<example caption="Responder sends session-accept"><![CDATA[ <example caption="Responder sends session-accept"><![CDATA[
<iq from='juliet@capulet.lit/balcony' <iq from='juliet@capulet.lit/balcony'
@ -1516,20 +1530,25 @@ Romeo Juliet
|---------------------------->| |---------------------------->|
| ack | | ack |
|<----------------------------| |<----------------------------|
| content-modify for video |
|<----------------------------|
| ack |
|---------------------------->|
| content-accept for video | | content-accept for video |
|<----------------------------| |<----------------------------|
| ack | | ack |
|---------------------------->| |---------------------------->|
| session-info (hold) | | [optional transport and |
|<----------------------------| | application negotiation] |
| ack | |<--------------------------->|
|---------------------------->| | STUN connectivity checks |
| session-info (active) | |<===========================>|
|<----------------------------|
| ack |
|---------------------------->|
| AUDIO + VIDEO (RTP) | | AUDIO + VIDEO (RTP) |
|<===========================>| |<===========================>|
| content-modify for video |
|<----------------------------|
| ack |
|---------------------------->|
| session-terminate | | session-terminate |
|<----------------------------| |<----------------------------|
| ack | | ack |
@ -1685,7 +1704,27 @@ Romeo Juliet
to='romeo@montague.lit/orchard' to='romeo@montague.lit/orchard'
type='result'/> type='result'/>
]]></example> ]]></example>
<p>However, Juliet is having a bad hair day, so she sends a content-accept message to Romeo but puts him on hold while she gets her hair in order.</p> <p>However, Juliet is having a bad hair day, so she sends a content-modify message to Romeo that sets the senders to "initiator" (she doesn't mind receiving video but she doesn't want to send video).</p>
<example caption="Responder sends content-modify"><![CDATA[
<iq from='juliet@capulet.lit/balcony'
id='rh49l1k4'
to='romeo@montague.lit/orchard'
type='set'>
<jingle xmlns='urn:xmpp:jingle:1'
action='content-modify'
initiator='romeo@montague.lit/orchard'
sid='a73sjjvkla37jfea'>
<content creator='initiator' name='webcam' senders='initiator'/>
</jingle>
</iq>
]]></example>
<example caption="Initiator acknowledges content-modify"><![CDATA[
<iq from='romeo@montague.lit/orchard'
id='rh49l1k4'
to='juliet@capulet.lit/balcony'
type='result'/>
]]></example>
<p>Then Juliet accepts video.</p>
<example caption="Responder accepts additional content-type"><![CDATA[ <example caption="Responder accepts additional content-type"><![CDATA[
<iq from='juliet@capulet.lit/balcony' <iq from='juliet@capulet.lit/balcony'
id='ih481v7s' id='ih481v7s'
@ -1711,34 +1750,16 @@ Romeo Juliet
</jingle> </jingle>
</iq> </iq>
]]></example> ]]></example>
<example caption="Responder sends hold message"><![CDATA[ <p>Romeo then acknowledges the content-accept.</p>
<iq from='juliet@capulet.lit/balcony'
id='rh49l1k4'
to='romeo@montague.lit/orchard'
type='set'>
<jingle xmlns='urn:xmpp:jingle:1'
action='session-info'
initiator='romeo@montague.lit/orchard'
sid='a73sjjvkla37jfea'>
<hold xmlns='urn:xmpp:jingle:apps:rtp:info:1'/>
</jingle>
</iq>
]]></example>
<p>Romeo then acknowledges the content-accept and session-info messages.</p>
<example caption="Initiator acknowledges content-accept"><![CDATA[ <example caption="Initiator acknowledges content-accept"><![CDATA[
<iq from='romeo@montague.lit/orchard' <iq from='romeo@montague.lit/orchard'
id='ih481v7s' id='ih481v7s'
to='juliet@capulet.lit/balcony' to='juliet@capulet.lit/balcony'
type='result'/> type='result'/>
]]></example> ]]></example>
<example caption="Initiator acknowledges hold message"><![CDATA[ <p>If necessary, the parties then negotiate transport methods and codec parameters for video, and Romeo starts to send video to Juliet, where the video is exchanged using the Theora codec with a height of 600 pixels, a width of 800 pixels, a bandwidth limit of 128,000 kilobits per second, etc.</p>
<iq from='romeo@montague.lit/orchard' <p>After some number of minutes, Juliet returns and agrees to start sending video, too.</p>
id='rh49l1k4' <example caption="Responder sends content-modify message"><![CDATA[
to='juliet@capulet.lit/balcony'
type='result'/>
]]></example>
<p>After a few minutes, Juliet returns and informs Romeo that she is actively engaged in the call again.</p>
<example caption="Responder sends active message"><![CDATA[
<iq from='juliet@capulet.lit/balcony' <iq from='juliet@capulet.lit/balcony'
id='di492bf8' id='di492bf8'
to='romeo@montague.lit/orchard' to='romeo@montague.lit/orchard'
@ -1747,17 +1768,17 @@ Romeo Juliet
action='session-info' action='session-info'
initiator='romeo@montague.lit/orchard' initiator='romeo@montague.lit/orchard'
sid='a73sjjvkla37jfea'> sid='a73sjjvkla37jfea'>
<active xmlns='urn:xmpp:jingle:apps:rtp:info:1'/> <content creator='initiator' name='webcam' senders='both'/>
</jingle> </jingle>
</iq> </iq>
]]></example> ]]></example>
<example caption="Initiator acknowledges active message"><![CDATA[ <example caption="Initiator acknowledges content-modify message"><![CDATA[
<iq from='romeo@montague.lit/orchard' <iq from='romeo@montague.lit/orchard'
id='di492bf8' id='di492bf8'
to='juliet@capulet.lit/balcony' to='juliet@capulet.lit/balcony'
type='result'/> type='result'/>
]]></example> ]]></example>
<p>The media session proceeds. Now they would exchange both audio and video, where the audio is exchanged via the Speex codec at a clockrate of 8000 and the video is exchanged using the Theora codec with a height of 600 pixels, a width of 800 pixels, a bandwidth limit of 128,000 kilobits per second, etc.</p> <p>Now the two parties would exchange audio and video in both directions.</p>
<p>The parties can continue the session as long as desired.</p> <p>The parties can continue the session as long as desired.</p>
<p>Other events might occur throughout the life of the session. For example, one of the parties might want to tweak the video parameters using a description-info action.</p> <p>Other events might occur throughout the life of the session. For example, one of the parties might want to tweak the video parameters using a description-info action.</p>
<example caption="Initiator sends changes to application parameters"><![CDATA[ <example caption="Initiator sends changes to application parameters"><![CDATA[
@ -2014,30 +2035,28 @@ Romeo Juliet
xmlns='urn:xmpp:jingle:apps:rtp:info:1' xmlns='urn:xmpp:jingle:apps:rtp:info:1'
elementFormDefault='qualified'> elementFormDefault='qualified'>
<xs:element name='active'> <xs:element name='active' type='actionElementType'/>
<xs:complexType>
<xs:simpleContent>
<xs:extension base='empty'>
<xs:attribute name='name' type='xs:string' use='optional'/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name='hold' type='empty'/> <xs:element name='hold' type='actionElementType'/>
<xs:element name='mute'> <xs:element name='mute' type='actionElementType'/>
<xs:complexType>
<xs:simpleContent>
<xs:extension base='empty'>
<xs:attribute name='name' type='xs:string' use='optional'/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name='ringing' type='empty'/> <xs:element name='ringing' type='empty'/>
<xs:element name='unhold' type='actionElementType'/>
<xs:element name='unmute' type='actionElementType'/>
<xs:complexType name='actionElementType'>
<xs:simpleContent>
<xs:extension base='empty'>
<xs:attribute name='name'
type='xs:string'
use='optional'/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name='empty'> <xs:simpleType name='empty'>
<xs:restriction base='xs:string'> <xs:restriction base='xs:string'>
<xs:enumeration value=''/> <xs:enumeration value=''/>
@ -2049,6 +2068,6 @@ Romeo Juliet
</section2> </section2>
</section1> </section1>
<section1 topic='Acknowledgements' anchor='ack'> <section1 topic='Acknowledgements' anchor='ack'>
<p>Thanks to Milton Chen, Paul Chitescu, Olivier Cr&#234;te, Tim Julien, Steffen Larsen, Jeff Muller, Mike Ruprecht, Sjoerd Simons, Justin Uberti, and Paul Witty for their feedback.</p> <p>Thanks to Milton Chen, Paul Chitescu, Olivier Cr&#234;te, Tim Julien, Steffen Larsen, Jeff Muller, Mike Ruprecht, Sjoerd Simons, Will Thompson, Justin Uberti, and Paul Witty for their feedback.</p>
</section1> </section1>
</xep> </xep>