mirror of
https://github.com/moparisthebest/xeps
synced 2024-11-13 21:05:09 -05:00
1.0 DRAFT
git-svn-id: file:///home/ksmith/gitmigration/svn/xmpp/trunk@364 4b5297f7-1745-476d-ba37-a9c6900126ab
This commit is contained in:
parent
60d578d7ee
commit
911d79130b
56
xep-0155.xml
56
xep-0155.xml
@ -10,7 +10,7 @@
|
|||||||
<abstract>This document specifies a feature negotiation profile for initiating a one-to-one XMPP chat session.</abstract>
|
<abstract>This document specifies a feature negotiation profile for initiating a one-to-one XMPP chat session.</abstract>
|
||||||
&LEGALNOTICE;
|
&LEGALNOTICE;
|
||||||
<number>0155</number>
|
<number>0155</number>
|
||||||
<status>Proposed</status>
|
<status>Draft</status>
|
||||||
<type>Standards Track</type>
|
<type>Standards Track</type>
|
||||||
<sig>Standards</sig>
|
<sig>Standards</sig>
|
||||||
<approver>Council</approver>
|
<approver>Council</approver>
|
||||||
@ -22,9 +22,15 @@
|
|||||||
</dependencies>
|
</dependencies>
|
||||||
<supersedes/>
|
<supersedes/>
|
||||||
<supersededby/>
|
<supersededby/>
|
||||||
<shortname>TO BE ASSIGNED</shortname>
|
<shortname>chatneg</shortname>
|
||||||
&ianpaterson;
|
&ianpaterson;
|
||||||
&stpeter;
|
&stpeter;
|
||||||
|
<revision>
|
||||||
|
<version>1.0</version>
|
||||||
|
<date>2007-01-17</date>
|
||||||
|
<initials>psa</initials>
|
||||||
|
<remark><p>Per a vote of the XMPP Council, advanced specification to Draft.</p></remark>
|
||||||
|
</revision>
|
||||||
<revision>
|
<revision>
|
||||||
<version>0.14</version>
|
<version>0.14</version>
|
||||||
<date>2006-12-21</date>
|
<date>2006-12-21</date>
|
||||||
@ -177,7 +183,7 @@ PENDING o---------------+
|
|||||||
</section1>
|
</section1>
|
||||||
<section1 topic='Negotiating a New Chat Session' anchor='new'>
|
<section1 topic='Negotiating a New Chat Session' anchor='new'>
|
||||||
<section2 topic='Initiating a Chat Session' anchor='new-initiate'>
|
<section2 topic='Initiating a Chat Session' anchor='new-initiate'>
|
||||||
<p>In order to initiate a negotiated chat session, the initiating party ("user") sends a &MESSAGE; <note>The &MESSAGE; stanza is used because the user does not necessarily know which of the contact's resources is most available (or indeed if the contact is online).</note> stanza to the receiving party ("contact") containing a <feature/> child qualified by the 'http://jabber.org/protocol/feature-neg' namespace. The &MESSAGE; stanza MUST NOT contain a &BODY; child element (as specified in &rfc3921;). The &MESSAGE; stanza type SHOULD be "normal" (either explicitly or by non-inclusion of the 'type' attribute). The stanza MUST contain a &THREAD; element for tracking purposes (where the newly-generated ThreadID is unique to the proposed session). The data form MUST contain a hidden FORM_TYPE field whose value is "http://www.xmpp.org/extensions/xep-0155.html#ns" and MUST contain a boolean field named "accept". &BOOLEANNOTE; The inclusion of "logging", "disclosure" and "security" fields is also RECOMMENDED. Note: The options within any 'list-single' fields SHOULD appear in order of preference.</p>
|
<p>In order to initiate a negotiated chat session, the initiating party ("user") sends a &MESSAGE; <note>The &MESSAGE; stanza is used because the user does not necessarily know which of the contact's resources is most available (or indeed if the contact is online).</note> stanza to the receiving party ("contact") containing a <feature/> child qualified by the 'http://jabber.org/protocol/feature-neg' namespace. The &MESSAGE; stanza MUST NOT contain a &BODY; child element (as specified in &rfc3921;). The &MESSAGE; stanza type SHOULD be "normal" (either explicitly or by non-inclusion of the 'type' attribute). The stanza MUST contain a &THREAD; element for tracking purposes (where the newly-generated ThreadID is unique to the proposed session). The data form MUST contain a hidden FORM_TYPE field whose value is "urn:xmpp:chatneg" and MUST contain a boolean field named "accept". &BOOLEANNOTE; The inclusion of "logging", "disclosure" and "security" fields is also RECOMMENDED. Note: The options within any 'list-single' fields SHOULD appear in order of preference.</p>
|
||||||
<p>Note: Chat sessions may be conducted between entities who are never online at the same time. However, if the user is interested only in an <em>immediate</em> chat session then the user SHOULD instruct the contact's server not to store the message for later delivery (see &xep0160;) using the &xep0079; protocol.</p>
|
<p>Note: Chat sessions may be conducted between entities who are never online at the same time. However, if the user is interested only in an <em>immediate</em> chat session then the user SHOULD instruct the contact's server not to store the message for later delivery (see &xep0160;) using the &xep0079; protocol.</p>
|
||||||
<p>In the following example of a negotiation request, Romeo requests a chat with Juliet and also queries her regarding whether she is able to disallow all message logging (see &xep0136;) <note>A client MUST NOT set the 'logging' field to 'mustnot' unless it has confirmed that its server will allow it to switch off Automated Archiving (see <cite>Message Archiving</cite>).</note>, whether she wants to temporarily share presence for this session (see the <link url='#impl-presence'>Sharing Presence</link> section of this document), and whether she wants to support the &xep0071; and &xep0085; extensions during this chat session. He asks Juliet's client if it is prepared to make a (legally binding) guarantee that it does not intentionally implement any feature (not even a disabled feature) that might disclose the content of the chat, any associated (decryption) keys, or his identity to any third-party (see <cite>Encrypted Session Negotiation</cite>). He also requires that they are both connected securely to their servers, and asks which language she prefers amongst those he can write. (Note: These fields are examples only; a full set of chat session negotiation parameters will be registered as described in the <link url='#registrar'>XMPP Registrar Considerations</link> section of this document.)</p>
|
<p>In the following example of a negotiation request, Romeo requests a chat with Juliet and also queries her regarding whether she is able to disallow all message logging (see &xep0136;) <note>A client MUST NOT set the 'logging' field to 'mustnot' unless it has confirmed that its server will allow it to switch off Automated Archiving (see <cite>Message Archiving</cite>).</note>, whether she wants to temporarily share presence for this session (see the <link url='#impl-presence'>Sharing Presence</link> section of this document), and whether she wants to support the &xep0071; and &xep0085; extensions during this chat session. He asks Juliet's client if it is prepared to make a (legally binding) guarantee that it does not intentionally implement any feature (not even a disabled feature) that might disclose the content of the chat, any associated (decryption) keys, or his identity to any third-party (see <cite>Encrypted Session Negotiation</cite>). He also requires that they are both connected securely to their servers, and asks which language she prefers amongst those he can write. (Note: These fields are examples only; a full set of chat session negotiation parameters will be registered as described in the <link url='#registrar'>XMPP Registrar Considerations</link> section of this document.)</p>
|
||||||
<example caption="User requests chat session"><![CDATA[
|
<example caption="User requests chat session"><![CDATA[
|
||||||
@ -189,7 +195,7 @@ PENDING o---------------+
|
|||||||
<x xmlns='jabber:x:data' type='form'>
|
<x xmlns='jabber:x:data' type='form'>
|
||||||
<title>Open chat with Romeo?</title>
|
<title>Open chat with Romeo?</title>
|
||||||
<field var='FORM_TYPE' type='hidden'>
|
<field var='FORM_TYPE' type='hidden'>
|
||||||
<value>http://www.xmpp.org/extensions/xep-0155.html#ns</value>
|
<value>urn:xmpp:chatneg</value>
|
||||||
</field>
|
</field>
|
||||||
<field label='Accept this chat?' type='boolean' var='accept'>
|
<field label='Accept this chat?' type='boolean' var='accept'>
|
||||||
<value>true</value>
|
<value>true</value>
|
||||||
@ -277,7 +283,7 @@ PENDING o---------------+
|
|||||||
<feature xmlns='http://jabber.org/protocol/feature-neg'>
|
<feature xmlns='http://jabber.org/protocol/feature-neg'>
|
||||||
<x xmlns='jabber:x:data' type='submit'>
|
<x xmlns='jabber:x:data' type='submit'>
|
||||||
<field var='FORM_TYPE'>
|
<field var='FORM_TYPE'>
|
||||||
<value>http://www.xmpp.org/extensions/xep-0155.html#ns</value>
|
<value>urn:xmpp:chatneg</value>
|
||||||
</field>
|
</field>
|
||||||
<field var='accept'><value>true</value></field>
|
<field var='accept'><value>true</value></field>
|
||||||
<field var='logging'><value>mustnot</value></field>
|
<field var='logging'><value>mustnot</value></field>
|
||||||
@ -307,7 +313,7 @@ PENDING o---------------+
|
|||||||
<feature xmlns='http://jabber.org/protocol/feature-neg'>
|
<feature xmlns='http://jabber.org/protocol/feature-neg'>
|
||||||
<x xmlns='jabber:x:data' type='submit'>
|
<x xmlns='jabber:x:data' type='submit'>
|
||||||
<field var='FORM_TYPE'>
|
<field var='FORM_TYPE'>
|
||||||
<value>http://www.xmpp.org/extensions/xep-0155.html#ns</value>
|
<value>urn:xmpp:chatneg</value>
|
||||||
</field>
|
</field>
|
||||||
<field var='accept'><value>0</value></field>
|
<field var='accept'><value>0</value></field>
|
||||||
</x>
|
</x>
|
||||||
@ -315,7 +321,7 @@ PENDING o---------------+
|
|||||||
<body>Sorry, can't chat now! How about tonight?</body>
|
<body>Sorry, can't chat now! How about tonight?</body>
|
||||||
</message>
|
</message>
|
||||||
]]></example>
|
]]></example>
|
||||||
<p>If the contact's client does not support feature negotiation or does not support the "http://www.xmpp.org/extensions/xep-0155.html#ns" FORM_TYPE, it SHOULD return a &unavailable; error:</p>
|
<p>If the contact's client does not support feature negotiation or does not support the "urn:xmpp:chatneg" FORM_TYPE, it SHOULD return a &unavailable; error:</p>
|
||||||
<example caption="Contact returns service unavailable error"><![CDATA[
|
<example caption="Contact returns service unavailable error"><![CDATA[
|
||||||
<message type='error'
|
<message type='error'
|
||||||
from='juliet@capulet.com/balcony'
|
from='juliet@capulet.com/balcony'
|
||||||
@ -324,7 +330,7 @@ PENDING o---------------+
|
|||||||
<feature xmlns='http://jabber.org/protocol/feature-neg'>
|
<feature xmlns='http://jabber.org/protocol/feature-neg'>
|
||||||
<x xmlns='jabber:x:data' type='form'>
|
<x xmlns='jabber:x:data' type='form'>
|
||||||
<field var='FORM_TYPE' type='hidden'>
|
<field var='FORM_TYPE' type='hidden'>
|
||||||
<value>http://www.xmpp.org/extensions/xep-0155.html#ns</value>
|
<value>urn:xmpp:chatneg</value>
|
||||||
</field>
|
</field>
|
||||||
...
|
...
|
||||||
</x>
|
</x>
|
||||||
@ -343,7 +349,7 @@ PENDING o---------------+
|
|||||||
<feature xmlns='http://jabber.org/protocol/feature-neg'>
|
<feature xmlns='http://jabber.org/protocol/feature-neg'>
|
||||||
<x xmlns='jabber:x:data' type='form'>
|
<x xmlns='jabber:x:data' type='form'>
|
||||||
<field var='FORM_TYPE' type='hidden'>
|
<field var='FORM_TYPE' type='hidden'>
|
||||||
<value>http://www.xmpp.org/extensions/xep-0155.html#ns</value>
|
<value>urn:xmpp:chatneg</value>
|
||||||
</field>
|
</field>
|
||||||
...
|
...
|
||||||
</x>
|
</x>
|
||||||
@ -365,7 +371,7 @@ PENDING o---------------+
|
|||||||
<feature xmlns='http://jabber.org/protocol/feature-neg'>
|
<feature xmlns='http://jabber.org/protocol/feature-neg'>
|
||||||
<x xmlns='jabber:x:data' type='form'>
|
<x xmlns='jabber:x:data' type='form'>
|
||||||
<field var='FORM_TYPE' type='hidden'>
|
<field var='FORM_TYPE' type='hidden'>
|
||||||
<value>http://www.xmpp.org/extensions/xep-0155.html#ns</value>
|
<value>urn:xmpp:chatneg</value>
|
||||||
</field>
|
</field>
|
||||||
...
|
...
|
||||||
</x>
|
</x>
|
||||||
@ -389,7 +395,7 @@ PENDING o---------------+
|
|||||||
<feature xmlns='http://jabber.org/protocol/feature-neg'>
|
<feature xmlns='http://jabber.org/protocol/feature-neg'>
|
||||||
<x xmlns='jabber:x:data' type='result'>
|
<x xmlns='jabber:x:data' type='result'>
|
||||||
<field var='FORM_TYPE'>
|
<field var='FORM_TYPE'>
|
||||||
<value>http://www.xmpp.org/extensions/xep-0155.html#ns</value>
|
<value>urn:xmpp:chatneg</value>
|
||||||
</field>
|
</field>
|
||||||
<field var='accept'><value>true</value></field>
|
<field var='accept'><value>true</value></field>
|
||||||
</x>
|
</x>
|
||||||
@ -406,7 +412,7 @@ PENDING o---------------+
|
|||||||
<feature xmlns='http://jabber.org/protocol/feature-neg'>
|
<feature xmlns='http://jabber.org/protocol/feature-neg'>
|
||||||
<x xmlns='jabber:x:data' type='result'>
|
<x xmlns='jabber:x:data' type='result'>
|
||||||
<field var='FORM_TYPE'>
|
<field var='FORM_TYPE'>
|
||||||
<value>http://www.xmpp.org/extensions/xep-0155.html#ns</value>
|
<value>urn:xmpp:chatneg</value>
|
||||||
</field>
|
</field>
|
||||||
<field var='accept'><value>0</value></field>
|
<field var='accept'><value>0</value></field>
|
||||||
</x>
|
</x>
|
||||||
@ -425,7 +431,7 @@ PENDING o---------------+
|
|||||||
<feature xmlns='http://jabber.org/protocol/feature-neg'>
|
<feature xmlns='http://jabber.org/protocol/feature-neg'>
|
||||||
<x xmlns='jabber:x:data' type='submit'>
|
<x xmlns='jabber:x:data' type='submit'>
|
||||||
<field var='FORM_TYPE'>
|
<field var='FORM_TYPE'>
|
||||||
<value>http://www.xmpp.org/extensions/xep-0155.html#ns</value>
|
<value>urn:xmpp:chatneg</value>
|
||||||
</field>
|
</field>
|
||||||
<field var='continue'><value>PDA</value></field>
|
<field var='continue'><value>PDA</value></field>
|
||||||
</x>
|
</x>
|
||||||
@ -442,7 +448,7 @@ PENDING o---------------+
|
|||||||
<feature xmlns='http://jabber.org/protocol/feature-neg'>
|
<feature xmlns='http://jabber.org/protocol/feature-neg'>
|
||||||
<x xmlns='jabber:x:data' type='result'>
|
<x xmlns='jabber:x:data' type='result'>
|
||||||
<field var='FORM_TYPE'>
|
<field var='FORM_TYPE'>
|
||||||
<value>http://www.xmpp.org/extensions/xep-0155.html#ns</value>
|
<value>urn:xmpp:chatneg</value>
|
||||||
</field>
|
</field>
|
||||||
<field var='continue'><value>PDA</value></field>
|
<field var='continue'><value>PDA</value></field>
|
||||||
</x>
|
</x>
|
||||||
@ -461,7 +467,7 @@ PENDING o---------------+
|
|||||||
<feature xmlns='http://jabber.org/protocol/feature-neg'>
|
<feature xmlns='http://jabber.org/protocol/feature-neg'>
|
||||||
<x xmlns='jabber:x:data' type='form'>
|
<x xmlns='jabber:x:data' type='form'>
|
||||||
<field var='FORM_TYPE' type='hidden'>
|
<field var='FORM_TYPE' type='hidden'>
|
||||||
<value>http://www.xmpp.org/extensions/xep-0155.html#ns</value>
|
<value>urn:xmpp:chatneg</value>
|
||||||
</field>
|
</field>
|
||||||
<field label='Renegotiate?' type='boolean' var='renegotiate'>
|
<field label='Renegotiate?' type='boolean' var='renegotiate'>
|
||||||
<value>1</value>
|
<value>1</value>
|
||||||
@ -488,7 +494,7 @@ PENDING o---------------+
|
|||||||
<feature xmlns='http://jabber.org/protocol/feature-neg'>
|
<feature xmlns='http://jabber.org/protocol/feature-neg'>
|
||||||
<x xmlns='jabber:x:data' type='submit'>
|
<x xmlns='jabber:x:data' type='submit'>
|
||||||
<field var='FORM_TYPE'>
|
<field var='FORM_TYPE'>
|
||||||
<value>http://www.xmpp.org/extensions/xep-0155.html#ns</value>
|
<value>urn:xmpp:chatneg</value>
|
||||||
</field>
|
</field>
|
||||||
<field var='renegotiate'><value>1</value></field>
|
<field var='renegotiate'><value>1</value></field>
|
||||||
<field var='logging'><value>may</value></field>
|
<field var='logging'><value>may</value></field>
|
||||||
@ -508,7 +514,7 @@ PENDING o---------------+
|
|||||||
<feature xmlns='http://jabber.org/protocol/feature-neg'>
|
<feature xmlns='http://jabber.org/protocol/feature-neg'>
|
||||||
<x xmlns='jabber:x:data' type='submit'>
|
<x xmlns='jabber:x:data' type='submit'>
|
||||||
<field var='FORM_TYPE'>
|
<field var='FORM_TYPE'>
|
||||||
<value>http://www.xmpp.org/extensions/xep-0155.html#ns</value>
|
<value>urn:xmpp:chatneg</value>
|
||||||
</field>
|
</field>
|
||||||
<field var='renegotiate'><value>0</value></field>
|
<field var='renegotiate'><value>0</value></field>
|
||||||
<field var='logging'><value>may</value></field>
|
<field var='logging'><value>may</value></field>
|
||||||
@ -528,7 +534,7 @@ PENDING o---------------+
|
|||||||
<feature xmlns='http://jabber.org/protocol/feature-neg'>
|
<feature xmlns='http://jabber.org/protocol/feature-neg'>
|
||||||
<x xmlns='jabber:x:data' type='submit'>
|
<x xmlns='jabber:x:data' type='submit'>
|
||||||
<field var='FORM_TYPE'>
|
<field var='FORM_TYPE'>
|
||||||
<value>http://www.xmpp.org/extensions/xep-0155.html#ns</value>
|
<value>urn:xmpp:chatneg</value>
|
||||||
</field>
|
</field>
|
||||||
<field var='terminate'><value>1</value></field>
|
<field var='terminate'><value>1</value></field>
|
||||||
</x>
|
</x>
|
||||||
@ -545,7 +551,7 @@ PENDING o---------------+
|
|||||||
<feature xmlns='http://jabber.org/protocol/feature-neg'>
|
<feature xmlns='http://jabber.org/protocol/feature-neg'>
|
||||||
<x xmlns='jabber:x:data' type='result'>
|
<x xmlns='jabber:x:data' type='result'>
|
||||||
<field var='FORM_TYPE'>
|
<field var='FORM_TYPE'>
|
||||||
<value>http://www.xmpp.org/extensions/xep-0155.html#ns</value>
|
<value>urn:xmpp:chatneg</value>
|
||||||
</field>
|
</field>
|
||||||
<field var='terminate'><value>1</value></field>
|
<field var='terminate'><value>1</value></field>
|
||||||
</x>
|
</x>
|
||||||
@ -599,23 +605,23 @@ PENDING o---------------+
|
|||||||
</section1>
|
</section1>
|
||||||
<section1 topic='XMPP Registrar Considerations' anchor='registrar'>
|
<section1 topic='XMPP Registrar Considerations' anchor='registrar'>
|
||||||
<section2 topic='Protocol Namespaces' anchor='ns'>
|
<section2 topic='Protocol Namespaces' anchor='ns'>
|
||||||
<p>Until this specification advances to a status of Draft, its associated namespace (as used in the negotiation FORM_TYPE) shall be "http://www.xmpp.org/extensions/xep-0155.html#ns"; upon advancement of this specification, the XMPP Registrar shall issue a permanent namespace in accordance with the process defined in Section 4 of &xep0053;.</p>
|
<p>The ®ISTRAR; includes 'urn:xmpp:chatneg' in its registry of protocol namespaces (see &NAMESPACES;).</p>
|
||||||
</section2>
|
</section2>
|
||||||
<section2 topic='Service Discovery Features' anchor='registrar-features'>
|
<section2 topic='Service Discovery Features' anchor='registrar-features'>
|
||||||
<p>The ®ISTRAR; shall include 'http://www.xmpp.org/extensions/xep-0155.html#ns' in its registry of Service Discovery features.</p>
|
<p>The XMPP Registrar includes 'urn:xmpp:chatneg' in its registry of Service Discovery features (see &DISCOFEATURES;).</p>
|
||||||
<code caption='Registry Submission'><![CDATA[
|
<code caption='Registry Submission'><![CDATA[
|
||||||
<var>
|
<var>
|
||||||
<name>http://www.xmpp.org/extensions/xep-0155.html#ns</name>
|
<name>urn:xmpp:chatneg</name>
|
||||||
<desc>Support for Chat Session Negotiation and its FORM_TYPE</desc>
|
<desc>Support for Chat Session Negotiation and its FORM_TYPE</desc>
|
||||||
<doc>XEP-0155</doc>
|
<doc>XEP-0155</doc>
|
||||||
</var>
|
</var>
|
||||||
]]></code>
|
]]></code>
|
||||||
</section2>
|
</section2>
|
||||||
<section2 topic='Field Standardization' anchor='registrar-formtype'>
|
<section2 topic='Field Standardization' anchor='registrar-formtype'>
|
||||||
<p>&xep0068; defines a process for standardizing the fields used within Data Forms qualified by a particular namespace. The following fields shall be registered for use in Chat Session Negotiation:</p>
|
<p>&xep0068; defines a process for standardizing the fields used within Data Forms qualified by a particular namespace. The following fields are registered for use in Chat Session Negotiation (see &FORMTYPES;):</p>
|
||||||
<code caption='Registry Submission'><![CDATA[
|
<code caption='Registry Submission'><![CDATA[
|
||||||
<form_type>
|
<form_type>
|
||||||
<name>http://www.xmpp.org/extensions/xep-0155.html#ns</name>
|
<name>urn:xmpp:chatneg</name>
|
||||||
<doc>XEP-0155</doc>
|
<doc>XEP-0155</doc>
|
||||||
<desc>
|
<desc>
|
||||||
Forms enabling negotation of a one-to-one
|
Forms enabling negotation of a one-to-one
|
||||||
@ -715,7 +721,7 @@ PENDING o---------------+
|
|||||||
</section2>
|
</section2>
|
||||||
</section1>
|
</section1>
|
||||||
<section1 topic='XML Schema' anchor='schema'>
|
<section1 topic='XML Schema' anchor='schema'>
|
||||||
<p>This proposal re-uses the format defined in XEP-0020 and therefore does not require a separate schema.</p>
|
<p>This proposal re-uses the format defined in XEP-0020 and therefore does not require a dedicated schema.</p>
|
||||||
</section1>
|
</section1>
|
||||||
<section1 topic='Acknowledgements' anchor='ack'>
|
<section1 topic='Acknowledgements' anchor='ack'>
|
||||||
<p>Thanks to Thomas Charron and Jean-Louis Seguineau for their feedback.</p>
|
<p>Thanks to Thomas Charron and Jean-Louis Seguineau for their feedback.</p>
|
||||||
|
Loading…
Reference in New Issue
Block a user