mirror of https://github.com/moparisthebest/xeps
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
135 lines
6.3 KiB
135 lines
6.3 KiB
<?xml version='1.0' encoding='UTF-8'?> |
|
<!DOCTYPE xep SYSTEM 'xep.dtd' [ |
|
<!ENTITY % ents SYSTEM 'xep.ent'> |
|
%ents; |
|
]> |
|
<?xml-stylesheet type='text/xsl' href='xep.xsl'?> |
|
<xep> |
|
<header> |
|
<title>Last User Interaction in Presence</title> |
|
<abstract>This specification defines a way to communicate time of last user interaction with her system using XMPP presence notifications.</abstract> |
|
&LEGALNOTICE; |
|
<number>0319</number> |
|
<status>Draft</status> |
|
<type>Standards Track</type> |
|
<sig>Standards</sig> |
|
<dependencies> |
|
<spec>XMPP Core</spec> |
|
<spec>XMPP IM</spec> |
|
<spec>XEP-0082</spec> |
|
</dependencies> |
|
<supersedes> |
|
<spec>XEP-0256</spec> |
|
</supersedes> |
|
<supersededby/> |
|
<shortname>idle</shortname> |
|
&tobias; |
|
<revision> |
|
<version>1.0.2</version> |
|
<date>2017-07-17</date> |
|
<initials>egp</initials> |
|
<remark><p>Make the schema more precise about a date being a xs:dateTime.</p></remark> |
|
</revision> |
|
<revision> |
|
<version>1.0.1</version> |
|
<date>2017-05-30</date> |
|
<initials>egp</initials> |
|
<remark><p>Be precise about the &xep0082; profile used.</p></remark> |
|
</revision> |
|
<revision> |
|
<version>1.0</version> |
|
<date>2015-04-02</date> |
|
<initials>XEP editor (mam)</initials> |
|
<remark><p>Per a vote of the XMPP Council, advanced specification from Experimental to Draft.</p></remark> |
|
</revision> |
|
<revision> |
|
<version>0.2</version> |
|
<date>2013-08-27</date> |
|
<initials>tobias</initials> |
|
<remark><p>Fix issues raised in XMPP Council meeting.</p></remark> |
|
</revision> |
|
<revision> |
|
<version>0.1</version> |
|
<date>2013-03-04</date> |
|
<initials>psa</initials> |
|
<remark><p>Initial published version approved by the XMPP Council.</p></remark> |
|
</revision> |
|
<revision> |
|
<version>0.0.1</version> |
|
<date>2013-02-17</date> |
|
<initials>tobias</initials> |
|
<remark><p>Initial version.</p></remark> |
|
</revision> |
|
</header> |
|
<section1 topic='Introduction' anchor='intro'> |
|
<p>This protocol describes a way to communicate a user's last interaction time with other XMPP entities over &PRESENCE; stanzas. For the purposes of this document, user interaction here refers to a human end user interacting with her device by means of a keyboard, mouse, touch screen, and so on. Based on this information XMPP clients can display the time a contact went idle or a duration for how long a contact has been idle, thereby allowing end users to estimate the expected responsiveness of their contacts.</p> |
|
<p>This protocol uses absolute timestamps formatted according to the DateTime profile of &xep0082;, indicated as value of the 'since' attribute in the <idle/> element.</p> |
|
<p>Experience has shown a number of issues with &xep0256;:</p> |
|
<ul> |
|
<li>The use of relative durations is too vague. It requires additional information from &xep0203; to provide a reliable user experience.</li> |
|
<li>Distinguishing between the idle and last online use cases is very difficult.</li> |
|
<li>It is desirable to have idle time indiciated for &PRESENCE; <show/> values other than "away" and "xa".</li> |
|
</ul> |
|
<p>Updating <cite>XEP-0256</cite> directly would be problematic as it would break compatibility with existing implementations. Instead a new protocol is described for handling the idle time use case; the last online use case is handled by &xep0312;.</p> |
|
</section1> |
|
<section1 topic='Use Cases' anchor='usecases'> |
|
<p>There are two main use cases for this extension, explained in more detail in the following sections.</p> |
|
<section2 topic='Presence with Last Interaction' anchor='last-interact'> |
|
<p>After a user has not interacted with her device for some amount of time the user wants to inform her contacts about this fact. The client sends a &PRESENCE; stanza with time of last interaction.</p> |
|
<example caption='Time of Last User Interaction in Auto-Away'><![CDATA[ |
|
<presence from='juliet@capulet.com/balcony'> |
|
<show>away</show> |
|
<idle xmlns='urn:xmpp:idle:1' since='1969-07-21T02:56:15Z'/> |
|
</presence> |
|
]]></example> |
|
<p>The amount of time the user has to be idle before a client sends this enhanced presence is application-specific; it is suggested that a sensible default interval of 5 minutes be used.</p> |
|
</section2> |
|
<section2 topic='Presence Indicating User Coming Back From Idle' anchor='back-from-idle'> |
|
<p>When a user comes back and uses her device again the client informs user's contacts by sending a normal presence stanza like shown in the following example, omiting the <idle/> element.</p> |
|
<example caption='Presence Indicating Return to Device'><![CDATA[ |
|
<presence from='juliet@capulet.com/balcony' /> |
|
]]></example> |
|
</section2> |
|
</section1> |
|
<section1 topic='XML Schema' anchor='schema'> |
|
<code><![CDATA[ |
|
<?xml version="1.0" encoding="utf-8"?> |
|
|
|
<xs:schema |
|
xmlns:xs="http://www.w3.org/2001/XMLSchema" |
|
elementFormDefault="qualified" |
|
targetNamespace="urn:xmpp:idle:1" |
|
xmlns="urn:xmpp:idle:1"> |
|
|
|
<xs:annotation> |
|
<xs:documentation> |
|
The protocol documented by this schema is defined in |
|
XEP-0319: http://www.xmpp.org/extensions/xep-0319.html |
|
</xs:documentation> |
|
</xs:annotation> |
|
|
|
<xs:element name="idle"> |
|
<xs:complexType> |
|
<xs:attribute name="since" use="required" type="xs:dateTime"/> |
|
</xs:complexType> |
|
</xs:element> |
|
|
|
</xs:schema> |
|
]]></code> |
|
</section1> |
|
<section1 topic='Acknowledgements' anchor='ack'> |
|
<p>Thanks to Florian Schmaus, Christian Schudt, and Lance Stout for their helpful comments.</p> |
|
</section1> |
|
<section1 topic='Security Considerations' anchor='security'> |
|
<p>The security considerations of <cite>XEP-0082</cite> apply to this protocol.</p> |
|
<p>This specification introduces no new security or privacy concerns. While including a last user interaction notation in &PRESENCE; updates can enable recipients to determine exactly when a user has stopped interacting with her XMPP client or even their system, this information is in essence already available if the user's client publishes timely presence updates.</p> |
|
</section1> |
|
<section1 topic='IANA Considerations' anchor='iana'> |
|
<p>This document requires no interaction with &IANA;.</p> |
|
</section1> |
|
<section1 topic='XMPP Registrar Considerations' anchor='registrar'> |
|
<section2 topic='Protocol Namespace'> |
|
<p>The ®ISTRAR; shall add 'urn:xmpp:idle:1' to its registry at <link url='http://xmpp.org/registrar/namespaces.html'>http://xmpp.org/registrar/namespaces.html</link>.</p> |
|
</section2> |
|
</section1> |
|
</xep>
|
|
|