Presence specification draft 0.3

Phillips, Matthew Matthew.Phillips at dsto.defence.gov.au
Wed Oct 17 16:50:36 EST 2001


Updated in response to David's comments

 <<Elvin Presence Spec.html>> 


Title: Elvin Presence Protocol








Elvin
Presence Protocol

Matthew Phillips
<matthew.phillips at dsto.defence.gov.au>

Draft 0.3 (<span style='mso-element:
field-begin'> SAVEDATE \@ "d/MM/yyyy" \* MERGEFORMAT <span
style='mso-element:field-separator'>17/10/2001<span
style='mso-element:field-end'>)

 

Contents

<span
style="mso-spacerun: yes"> TOC \o "2-2" \h \z \t "Heading
1,1" <span
class=MsoHyperlink>Notes About This Document<span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'> <span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'><span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'> PAGEREF _Toc527968115 \h <span style='color:windowtext;
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
style='mso-element:field-separator'><span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'>1<span style='color:windowtext;display:none;
mso-hide:screen;text-decoration:none;text-underline:none'>
 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500320037003900360038003100310035000000
<span style='color:windowtext;
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
style='mso-element:field-end'><span
style='mso-bidi-font-size:12.0pt;font-weight:normal'>

<span
class=MsoHyperlink>1<span style='mso-bidi-font-size:
12.0pt;color:windowtext;font-weight:normal;text-decoration:none;text-underline:
none'>      Aim<span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'>   <span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'><span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'> PAGEREF _Toc527968116 \h <span style='color:windowtext;
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
style='mso-element:field-separator'><span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'>2<span style='color:windowtext;display:none;
mso-hide:screen;text-decoration:none;text-underline:none'>
 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500320037003900360038003100310036000000
<span style='color:windowtext;
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
style='mso-element:field-end'><span
style='mso-bidi-font-size:12.0pt;font-weight:normal'>

<span
class=MsoHyperlink>2<span style='mso-bidi-font-size:
12.0pt;color:windowtext;font-weight:normal;text-decoration:none;text-underline:
none'>        Requirements<span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'>  <span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'><span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'> PAGEREF _Toc527968117 \h <span style='color:windowtext;
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
style='mso-element:field-separator'><span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'>2<span style='color:windowtext;display:none;
mso-hide:screen;text-decoration:none;text-underline:none'>
 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500320037003900360038003100310037000000
<span style='color:windowtext;
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
style='mso-element:field-end'><span
style='mso-bidi-font-size:12.0pt;font-weight:normal'>

<span
class=MsoHyperlink>3<span style='mso-bidi-font-size:
12.0pt;color:windowtext;font-weight:normal;text-decoration:none;text-underline:
none'>        Specification<span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'>  <span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'><span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'> PAGEREF _Toc527968118 \h <span style='color:windowtext;
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
style='mso-element:field-separator'><span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'>2<span style='color:windowtext;display:none;
mso-hide:screen;text-decoration:none;text-underline:none'>
 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500320037003900360038003100310038000000
<span style='color:windowtext;
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
style='mso-element:field-end'><span
style='mso-bidi-font-size:12.0pt;font-weight:normal'>

<span
class=MsoHyperlink>3.1<span style='color:windowtext;
text-decoration:none;text-underline:none'>       User
Identity<span style='color:windowtext;display:none;mso-hide:screen;text-decoration:
none;text-underline:none'>  <span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'><span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'> PAGEREF _Toc527968119 \h <span style='color:windowtext;
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
style='mso-element:field-separator'><span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'>2<span style='color:windowtext;display:none;
mso-hide:screen;text-decoration:none;text-underline:none'>
 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500320037003900360038003100310039000000
<span style='color:windowtext;
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
style='mso-element:field-end'>

<span
class=MsoHyperlink>3.2<span style='color:windowtext;
text-decoration:none;text-underline:none'>       Groups<span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'>. <span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'><span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'> PAGEREF _Toc527968120 \h <span style='color:windowtext;
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
style='mso-element:field-separator'><span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'>2<span style='color:windowtext;display:none;
mso-hide:screen;text-decoration:none;text-underline:none'>
 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500320037003900360038003100320030000000
<span style='color:windowtext;
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
style='mso-element:field-end'>

<span
class=MsoHyperlink>3.3<span style='color:windowtext;
text-decoration:none;text-underline:none'>            Operation<span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'>  <span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'><span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'> PAGEREF _Toc527968121 \h <span style='color:windowtext;
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
style='mso-element:field-separator'><span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'>3<span style='color:windowtext;display:none;
mso-hide:screen;text-decoration:none;text-underline:none'>
 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500320037003900360038003100320031000000
<span style='color:windowtext;
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
style='mso-element:field-end'>

<span
class=MsoHyperlink>3.4<span style='color:windowtext;
text-decoration:none;text-underline:none'>            Example
Exchange<span style='color:windowtext;display:none;mso-hide:screen;text-decoration:
none;text-underline:none'>  <span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'><span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'> PAGEREF _Toc527968122 \h <span style='color:windowtext;
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
style='mso-element:field-separator'><span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'>3<span style='color:windowtext;display:none;
mso-hide:screen;text-decoration:none;text-underline:none'>
 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500320037003900360038003100320032000000
<span style='color:windowtext;
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
style='mso-element:field-end'>

<span
class=MsoHyperlink>3.5<span style='color:windowtext;
text-decoration:none;text-underline:none'>            Example
With Multiple Groups<span style='color:windowtext;display:none;mso-hide:screen;
text-decoration:none;text-underline:none'>  <span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'><span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'> PAGEREF _Toc527968123 \h <span style='color:windowtext;
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
style='mso-element:field-separator'><span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'>4<span style='color:windowtext;display:none;
mso-hide:screen;text-decoration:none;text-underline:none'>
 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500320037003900360038003100320033000000
<span style='color:windowtext;
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
style='mso-element:field-end'>

<span
class=MsoHyperlink>3.6<span style='color:windowtext;
text-decoration:none;text-underline:none'>            Presence
Request Fields<span style='color:windowtext;display:none;mso-hide:screen;
text-decoration:none;text-underline:none'>  <span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'><span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'> PAGEREF _Toc527968124 \h <span style='color:windowtext;
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
style='mso-element:field-separator'><span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'>5<span style='color:windowtext;display:none;
mso-hide:screen;text-decoration:none;text-underline:none'>
 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500320037003900360038003100320034000000
<span style='color:windowtext;
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
style='mso-element:field-end'>

<span
class=MsoHyperlink>3.7<span style='color:windowtext;
text-decoration:none;text-underline:none'>            Presence
Info Fields<span style='color:windowtext;display:none;mso-hide:screen;
text-decoration:none;text-underline:none'>  <span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'><span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'> PAGEREF _Toc527968125 \h <span style='color:windowtext;
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
style='mso-element:field-separator'><span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'>5<span style='color:windowtext;display:none;
mso-hide:screen;text-decoration:none;text-underline:none'>
 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500320037003900360038003100320035000000
<span style='color:windowtext;
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
style='mso-element:field-end'>

<span
class=MsoHyperlink>3.8<span style='color:windowtext;
text-decoration:none;text-underline:none'>            Handling
Conflicting Presence-Info Responses<span style='color:windowtext;display:none;
mso-hide:screen;text-decoration:none;text-underline:none'><span
style='mso-tab-count:1'>  <span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'><span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'> PAGEREF _Toc527968126 \h <span style='color:windowtext;
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
style='mso-element:field-separator'><span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'>9<span style='color:windowtext;display:none;
mso-hide:screen;text-decoration:none;text-underline:none'>
 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500320037003900360038003100320036000000
<span style='color:windowtext;
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
style='mso-element:field-end'>

<span
class=MsoHyperlink>3.9<span style='color:windowtext;
text-decoration:none;text-underline:none'>       Notes<span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'>. <span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'><span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'> PAGEREF _Toc527968127 \h <span style='color:windowtext;
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
style='mso-element:field-separator'><span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'>9<span style='color:windowtext;display:none;
mso-hide:screen;text-decoration:none;text-underline:none'>
 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500320037003900360038003100320037000000
<span style='color:windowtext;
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
style='mso-element:field-end'>

<span
class=MsoHyperlink>4<span style='mso-bidi-font-size:
12.0pt;color:windowtext;font-weight:normal;text-decoration:none;text-underline:
none'>        References<span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'>  <span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'><span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'> PAGEREF _Toc527968128 \h <span style='color:windowtext;
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
style='mso-element:field-separator'><span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'>10<span style='color:windowtext;display:none;
mso-hide:screen;text-decoration:none;text-underline:none'>
 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500320037003900360038003100320038000000
<span style='color:windowtext;
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
style='mso-element:field-end'><span
style='mso-bidi-font-size:12.0pt;font-weight:normal'>

<span
class=MsoHyperlink>4.1<span style='color:windowtext;
text-decoration:none;text-underline:none'>       Other
Presence Protocols<span style='color:windowtext;display:none;mso-hide:screen;
text-decoration:none;text-underline:none'>  <span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'><span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'> PAGEREF _Toc527968129 \h <span style='color:windowtext;
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
style='mso-element:field-separator'><span
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
text-underline:none'>10<span style='color:windowtext;display:none;
mso-hide:screen;text-decoration:none;text-underline:none'>
 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500320037003900360038003100320039000000
<span style='color:windowtext;
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
style='mso-element:field-end'>

 

<h1 style='margin-left:0pt;text-indent:0pt;mso-list:none;mso-list-ins:Phillips 20011017T1409;
tab-stops:36.0pt'><span
style='mso-bookmark:_Toc526853573'><ins cite="mailto:Phillips"
datetime="2001-10-17T14:10">Note<ins cite="mailto:Phillips"
datetime="2001-10-17T14:11">s About This Document<span
style='mso-bookmark:_Toc526853573'><ins cite="mailto:Phillips"
datetime="2001-10-17T14:10">

<span
style='mso-bookmark:_Toc526853573'><ins cite="mailto:Phillips"
datetime="2001-10-17T14:10">The key words "MUST", "MUST
NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED",<span
style="mso-spacerun: yes">  "MAY", and "OPTIONAL" in
this document are to be interpreted as described in <a
href="ftp://ftp.ietf.org/rfc/rfc2119.txt"><ins
cite="mailto:Phillips" datetime="2001-10-17T14:10">IETF RFC 2119<span
style='mso-bookmark:_Toc526853573'><ins
cite="mailto:Phillips" datetime="2001-10-17T14:10">.<ins
cite="mailto:Phillips" datetime="2001-10-17T16:07">

<span
style='mso-bookmark:_Toc526853573'><ins cite="mailto:Phillips"
datetime="2001-10-17T16:07">Changes to the previous 0.2 draft <ins
cite="mailto:Phillips" datetime="2001-10-17T16:08">specification <ins
cite="mailto:Phillips" datetime="2001-10-17T16:07">are highlighted in green.<ins
cite="mailto:Phillips" datetime="2001-10-17T14:09">

<span
style='mso-bookmark:_Toc526853573'>1<span
style='font:7.0pt "Times New Roman"'>        
Aim

The aim of the presence protocol is to provide a simple
and flexible means for Elvin users to communicate their presence online and
publish information they may wish to have known about themselves.

<a
name="_Toc526853574"><span style='mso-bookmark:
_Toc526853574'>2        
Requirements

Presence services are already provided to a greater or
lesser extent by a number of applications, including ‘finger’, CoffeeBiff and
various Instant Messaging (IM) clients such as Jabber and ICQ.<span
style="mso-spacerun: yes">  The primary reasons for, and advantages of,
providing presence information via the Elvin presence protocol are:

<p class=MsoBodyText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l4 level1 lfo4;mso-list-change:\F0B7 Phillips 20011017T1440;tab-stops:list 36.0pt'><span
style='font-family:Symbol'>·       
Does not require centralised, persistent state.

<p class=MsoBodyText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l4 level1 lfo4;mso-list-change:\F0B7 Phillips 20011017T1440;tab-stops:list 36.0pt'><span
style='font-family:Symbol'>·       
Simple and thus easy to support.

<p class=MsoBodyText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l4 level1 lfo4;mso-list-change:\F0B7 Phillips 20011017T1440;tab-stops:list 36.0pt'><span
style='font-family:Symbol'>·       
Separate, but complementary to, ticker messaging.

<p class=MsoBodyText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l4 level1 lfo4;mso-list-change:\F0B7 Phillips 20011017T1440;tab-stops:list 36.0pt'><span
style='font-family:Symbol'>·       
Extensible.

<a
name="_Toc526853575"><span style='mso-bookmark:
_Toc526853575'>3        
Specification

This section describes the protocol, including the
operations between clients and the format of the presence notifications.

<a
name="_Toc526853576"><span style='mso-bookmark:
_Toc526853576'>3.1       
User Identity

The presence protocol assumes that users are identified by
a combination of name and domain, both of which are
case-insensitive strings containing any character except ‘@’.<span
style="mso-spacerun: yes">  The combination of name at domain
forms a unique user ID for the user in ‘presence space’ in the same
manner as an email address.

<a
name="_Toc526853577"><span style='mso-bookmark:
_Toc526853577'>3.2       
Groups

A group is a namespace containing a set of online
users.  Every online user <span
class=msoDel>will <ins
cite="mailto:Phillips" datetime="2001-10-17T14:12">MUST be in at least
one group and may opt to be in several. 
All users within a group will be aware of each other’s presence by
default.  A group can be thought of as a
public, dynamic ‘buddy list’ that is automatically populated with community of
people.  When users want to add people
outside their main group to their buddy list, they have two options: explicitly
add the other user by name, or join the other group.

For example, suppose all the people working in the Frob
Testing Division of Bob’s Frobs Inc, may elect to be in the ‘ftc.bobco’
group.   The manager of FTC might also
elect to be in the ‘management.bobco’ group so they can maintain contact with
the managers of other divisions.

As well as providing a way to partition presence
information into communities, the group concept is the key to scalability of
the presence protocol by making it efficient for clients to subscribe to all
presence info in a group, knowing this won’t bog down the entire online world.

<a
name="_Toc526853578"><span style='mso-bookmark:
_Toc526853578'>3.3       
Operation

The presence protocol
operates by exchanging two types of notifications:

<p class=MsoBodyText style='margin-left:35.7pt;text-indent:-17.85pt;page-break-after:
avoid;mso-list:l0 level1 lfo8;mso-list-change:\F0B7 Phillips 20011017T1440;
tab-stops:list 36.0pt'>·<span
style='font:7.0pt "Times New Roman"'>       
Presence-Info, and

<p class=MsoBodyText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l0 level1 lfo8;mso-list-change:\F0B7 Phillips 20011017T1440;tab-stops:list 36.0pt'><span
style='font-family:Symbol'>·       
Presence-Request

Clients use Presence-Info notifications to publish
presence information about themselves, and use Presence-Request to trigger
other clients to generate info notifications.

Clients subscribe to Presence-Request notifications, and
generate Presence-Info notifications in response.<span style="mso-spacerun:
yes">  Clients also spontaneously emit Presence-Info when they start up
and when any of the presence information previously published has changed.<span
style="mso-spacerun: yes">  A number of fields in Presence-Info are
optional, meaning they may be left out when their values are the same as they
were in the last full notification.

<a
name="_Toc526853579"><span style='mso-bookmark:
_Toc526853579'>3.4       
Example Exchange

Note: see sections 3.6
 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005200650066003500320035003600330034003400340037000000
 & 3.7
 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005200650066003500320035003600330034003400340038000000
 for definitions of the Presence-Request and
Presence-Info notifications.

Scenario: Zaphod at hitch-hikers is already online.<span
style="mso-spacerun: yes">  Frodo at hitch-hikers, starts up a
presence-capable client.  Both are in
the ‘hitch-hikers’ group.

Frodo initially announces
he is online with the following full presence info notification:

<p class=MsoBodyText style='margin-left:36.0pt;mso-pagination:widow-orphan lines-together;
tab-stops:162.0pt'><span style='font-size:11.0pt;
mso-bidi-font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'><span
style="mso-spacerun: yes">    Presence-Info: initial
Presence-Protocol: 1000
             User: Frodo at hitch-hikers
           Groups: |hitch-hikers|
      Status-Text: Online
  Status-Duration: 0
      Chat-Groups: |Chat|ticker-dev|
      News-Groups:
|BreakingStories|Slashdot|
    Ticker-Client: frodoticker 1.0

Zaphod’s client, being subscribed to presence info in for
the hitch-hikers group, receives the information about Frodo and updates its
registry.

Frodo’s client now populates its registry by:

<p class=MsoBodyText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l5 level1 lfo6;mso-list-change:"%1\:1\:0\:\." Phillips 20011017T1440;
tab-stops:list 36.0pt 90.0pt'>1.     
Subscribing to presence information for the hitch-hikers group
using the expression:
<span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>require<ins
cite="mailto:Phillips" datetime="2001-10-17T14:44"> (Presence-Info)
&&<span style='mso-ansi-font-size:
12.0pt;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>

    <span
class=Notification><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>contains<ins
cite="mailto:Phillips" datetime="2001-10-17T14:44"> (<ins
cite="mailto:Phillips" datetime="2001-10-17T13:54">fold-case<ins
cite="mailto:Phillips" datetime="2001-10-17T14:44"> <ins
cite="mailto:Phillips" datetime="2001-10-17T13:54">(Groups<ins
cite="mailto:Phillips" datetime="2001-10-17T13:54">), “|hitch-hikers|”)

<p class=MsoBodyText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l5 level1 lfo6;mso-list-change:"%1\:2\:0\:\." Phillips 20011017T1440;
tab-stops:list 36.0pt 72.0pt'>2.     
Sending a request for presence information about people in the
current group.  The presence request
notification Frodo sends is:

<span
class=Notification><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'><span
style="mso-spacerun: yes"> Presence-Request: cafebabe12345
Presence-Protocol: 1000 
<span
style="mso-spacerun: yes">         <ins cite="mailto:Phillips"
datetime="2001-10-17T14:16">Reqestor: Frodo at hitch-hikers
           Groups: |hitch-hikers|
            User<ins
cite="mailto:Phillips" datetime="2001-10-17T15:17">s: *

All clients in the group, including Zaphod’s, receive the
request since they have subscribed using an expression like:

<span
class=Notification><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'><ins
cite="mailto:Phillips" datetime="2001-10-17T15:16">Require (Presence-Request)
&&
  (contains (fold-case (Groups),
“|hitch-hikers|”) ||
   contains (fold-case (Users),
“|zaphod at hitch-hikers|”)<ins cite="mailto:Phillips"
datetime="2001-10-17T15:17">)<ins cite="mailto:Phillips"
datetime="2001-10-17T15:16">

Zaphod’s client responds with a full presence info
notification tagged with the request ID from Frodo’s message:

<p class=MsoBodyText style='margin-left:36.0pt;mso-pagination:widow-orphan lines-together;
tab-stops:162.0pt'><span style='font-size:11.0pt;
mso-bidi-font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'><span
style="mso-spacerun: yes">    Presence-Info: <del
cite="mailto:Phillips" datetime="2001-10-17T15:54">reply cafebabe12345
Presence-Protocol: 1000
             User: Zaphod at hitch-hikers
           Groups: |hitch-hikers|
      Status-Text: Online
  Status-Duration: 42
      Chat-Groups: |Chat|ticker-dev|
      News-Groups:
|BreakingStories|Slashdot|
    Ticker-Client: zticker 3.0
x-Number-Of-Heads: 2

Frodo’s client updates its registry, at which point
Zaphod, Frodo, and any other interested clients are in sync.

Later, when Zaphod decides to go for coffee, he hits the
“Coffee!” button on his client, which sends this partial presence notification:

<span
class=Notification><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'><span
style="mso-spacerun: yes">    Presence-Info: update
Presence-Protocol: 1000
             User: Zaphod at hitch-hikers
           Groups: |hitch-hikers|
      Status-Text: Coffee!
  Status-Duration: 0<ins
cite="mailto:Phillips" datetime="2001-10-17T14:33">

<a
name="_Toc527968123">3.5       
Example
With Multiple Groups<ins cite="mailto:Phillips"
datetime="2001-10-17T14:33">

<ins
cite="mailto:Phillips" datetime="2001-10-17T14:34">The previous example assumed
Frodo was in a single group.  The
following example (shown
from Frodo’s end
only) illustrates how his client would support Frodo being both in the <ins
cite="mailto:Phillips" datetime="2001-10-17T14:35">‘hitch-hikers’ group and the
‘hobbits’ group.<span
style="mso-spacerun: yes">  The key changes from the previous example
are highlighted in bold.<ins cite="mailto:Phillips"
datetime="2001-10-17T14:36">

<ins
cite="mailto:Phillips" datetime="2001-10-17T14:36">Frodo’s client would
announce he is online with:

<p class=MsoBodyText style='margin-left:36.0pt;mso-pagination:widow-orphan lines-together;
mso-list:none;mso-list-ins:Phillips 20011017T1440;tab-stops:162.0pt'><span
class=Notification><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'><ins
cite="mailto:Phillips" datetime="2001-10-17T14:40"><span style="mso-spacerun:
yes">    Presence-Info: initial
Presence-Protocol: 1000
             User: Frodo at hitch-hikers
           <span class=msoChangeProp
style='mso-prop-change:Phillips 20011017T1446'><span class=msoChangeProp
style='mso-prop-change:Phillips 20011017T1446'>Groups: |hitch-hikers|h<span
class=msoChangeProp style='mso-prop-change:Phillips 20011017T1446'>obbits|
      Status-Text: Online
  Status-Duration: 0
      Chat-Groups: |Chat|ticker-dev|
      News-Groups:
|BreakingStories|Slashdot|
    Ticker-Client: frodoticker 1.0

<ins
cite="mailto:Phillips" datetime="2001-10-17T14:47">Frodo’s<ins
cite="mailto:Phillips" datetime="2001-10-17T14:41"> client subscribe<ins
cite="mailto:Phillips" datetime="2001-10-17T14:47">s<ins
cite="mailto:Phillips" datetime="2001-10-17T14:41"> to <ins
cite="mailto:Phillips" datetime="2001-10-17T14:42">Presence-<ins
cite="mailto:Phillips" datetime="2001-10-17T15:19">Request<ins
cite="mailto:Phillips" datetime="2001-10-17T14:42"> using <ins
cite="mailto:Phillips" datetime="2001-10-17T14:46">this expression<ins
cite="mailto:Phillips" datetime="2001-10-17T14:42">:

<span
class=Notification><ins
cite="mailto:Phillips" datetime="2001-10-17T14:43">r<ins
cite="mailto:Phillips" datetime="2001-10-17T14:42">equire<ins
cite="mailto:Phillips" datetime="2001-10-17T14:43"> <ins
cite="mailto:Phillips" datetime="2001-10-17T14:42">(Presence-Request) &&
  <span class=msoChangeProp
style='mso-prop-change:Phillips 20011017T1446'><span class=msoChangeProp
style='mso-prop-change:Phillips 20011017T1446'>contains (fold-case<span
class=msoChangeProp style='mso-prop-change:Phillips 20011017T1446'><ins
cite="mailto:Phillips" datetime="2001-10-17T14:43"><span class=msoChangeProp
style='mso-prop-change:Phillips 20011017T1446'> <span
class=msoChangeProp style='mso-prop-change:Phillips 20011017T1446'><ins
cite="mailto:Phillips" datetime="2001-10-17T14:42"><span class=msoChangeProp
style='mso-prop-change:Phillips 20011017T1446'>(Groups),<span
class=msoChangeProp style='mso-prop-change:Phillips 20011017T1446'><pre
style='margin-left:28.8pt;mso-list:none;mso-list-ins:Phillips 20011017T1445'><span
class=Notification><span
class=msoChangeProp style='mso-prop-change:Phillips 20011017T1446'><ins
cite="mailto:Phillips" datetime="2001-10-17T14:45"><span class=msoChangeProp
style='mso-prop-change:Phillips 20011017T1446'>     <span
class=msoChangeProp style='mso-prop-change:Phillips 20011017T1446'><ins
cite="mailto:Phillips" datetime="2001-10-17T14:42"><span class=msoChangeProp
style='mso-prop-change:Phillips 20011017T1446'>“|hitch-hikers|”, <span
class=msoChangeProp style='mso-prop-change:Phillips 20011017T1446'><ins
cite="mailto:Phillips" datetime="2001-10-17T14:43"><span class=msoChangeProp
style='mso-prop-change:Phillips 20011017T1446'>“|hobbits|”)<span
class=Notification><ins
cite="mailto:Phillips" datetime="2001-10-17T14:43"> <ins
cite="mailto:Phillips" datetime="2001-10-17T15:20">||<ins
cite="mailto:Phillips" datetime="2001-10-17T14:42">
  <ins cite="mailto:Phillips"
datetime="2001-10-17T15:12">contains (<ins cite="mailto:Phillips"
datetime="2001-10-17T14:42">fold-case<ins cite="mailto:Phillips"
datetime="2001-10-17T15:20"> <ins cite="mailto:Phillips"
datetime="2001-10-17T14:42">(User<ins cite="mailto:Phillips"
datetime="2001-10-17T15:19">s<ins cite="mailto:Phillips"
datetime="2001-10-17T14:42">), “<ins cite="mailto:Phillips"
datetime="2001-10-17T15:12">|<ins cite="mailto:Phillips"
datetime="2001-10-17T14:47">frodo<ins cite="mailto:Phillips"
datetime="2001-10-17T15:12">@<ins cite="mailto:Phillips"
datetime="2001-10-17T15:13">hitch-hikers<ins cite="mailto:Phillips"
datetime="2001-10-17T15:12">|<ins cite="mailto:Phillips"
datetime="2001-10-17T14:42">”<ins cite="mailto:Phillips"
datetime="2001-10-17T15:13">)<ins cite="mailto:Phillips"
datetime="2001-10-17T14:33">

<span style='font-size:12.0pt;font-family:"Times New Roman";mso-fareast-font-family:
"Times New Roman";mso-ansi-language:EN-AU;mso-fareast-language:EN-US;
mso-bidi-language:AR-SA'><br clear=all style='page-break-before:always;
mso-break-type:section-break'>




<a
name="_Ref525634447"><span
style='mso-bookmark:_Toc526853580'>3.6<span
style='font:7.0pt "Times New Roman"'>       
Presence Request Fields

<table border=1 cellspacing=0 cellpadding=0 width="100%" style='width:100.0%;
 border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
 mso-padding-alt:0pt 5.4pt 0pt 5.4pt'>
 
  
   <td width="16%" valign=top style='width:16.0%;border:solid windowtext .5pt;
   padding:0pt 5.4pt 0pt 5.4pt'>
   Field
   
   <td width="8%" valign=top style='width:8.32%;border:solid windowtext .5pt;
   border-left:none;mso-border-left-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
   Type
   
   <td width="28%" valign=top style='width:28.86%;border:solid windowtext .5pt;
   border-left:none;mso-border-left-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
   Description
   
   <td width="32%" valign=top style='width:32.64%;border:solid windowtext .5pt;
   border-left:none;mso-border-left-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
   Possible values
   
   <td width="14%" valign=top style='width:14.18%;border:solid windowtext .5pt;
   border-left:none;mso-border-left-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
   When Used
   
  
  
   <td width="16%" valign=top style='width:16.0%;border:solid windowtext .5pt;
   border-top:none;mso-border-top-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
   Presence-Request
   
   <td width="8%" valign=top style='width:8.32%;border-top:none;border-left:
   none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
   mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
   padding:0pt 5.4pt 0pt 5.4pt'>
   String
   
   <td width="28%" valign=top style='width:28.86%;border-top:none;border-left:
   none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
   mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
   padding:0pt 5.4pt 0pt 5.4pt'>
   Marks the notification as a presence request and
   carries a request ID.
   
   <td width="32%" valign=top style='width:32.64%;border-top:none;border-left:
   none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
   mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
   padding:0pt 5.4pt 0pt 5.4pt'>
   A random, unique request ID, not longer than 255
   characters, no spaces.<span
   style="mso-spacerun: yes">  The ID MUST <ins
   cite="mailto:Phillips" datetime="2001-10-17T15:29">NOT<ins
   cite="mailto:Phillips" datetime="2001-10-17T15:28"> be “initial<ins
   cite="mailto:Phillips" datetime="2001-10-17T15:29">” or “update”.
   
   <td width="14%" valign=top style='width:14.18%;border-top:none;border-left:
   none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
   mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
   padding:0pt 5.4pt 0pt 5.4pt'>
   Always
   
  
  
   <td width="16%" valign=top style='width:16.0%;border:solid windowtext .5pt;
   border-top:none;mso-border-top-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
   Presence-Protocol
   
   <td width="8%" valign=top style='width:8.32%;border-top:none;border-left:
   none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
   mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
   padding:0pt 5.4pt 0pt 5.4pt'>
   Int32
   
   <td width="28%" valign=top style='width:28.86%;border-top:none;border-left:
   none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
   mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
   padding:0pt 5.4pt 0pt 5.4pt'>
   Same as Presence-Info
   
   <td width="32%" valign=top style='width:32.64%;border-top:none;border-left:
   none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
   mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
   padding:0pt 5.4pt 0pt 5.4pt'>
    
   
   <td width="14%" valign=top style='width:14.18%;border-top:none;border-left:
   none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
   mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
   padding:0pt 5.4pt 0pt 5.4pt'>
   Always
   
  
  
   <td width="16%" valign=top style='width:16.0%;border:solid windowtext .5pt;
   border-top:none;mso-border-top-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
   Requestor
   
   <td width="8%" valign=top style='width:8.32%;border-top:none;border-left:
   none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
   mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
   padding:0pt 5.4pt 0pt 5.4pt'>
   String
   
   <td width="28%" valign=top style='width:28.86%;border-top:none;border-left:
   none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
   mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
   padding:0pt 5.4pt 0pt 5.4pt'>
   The
   username of the person requesting the presence information<ins
   cite="mailto:Phillips" datetime="2001-10-17T14:51">.<ins
   cite="mailto:Phillips" datetime="2001-10-17T14:50">
   
   <td width="32%" valign=top style='width:32.64%;border-top:none;border-left:
   none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
   mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
   padding:0pt 5.4pt 0pt 5.4pt'>
   A
   username in <span
   class=msoChangeProp style='mso-prop-change:Phillips 20011017T1501'>user at domain
   form.<ins
   cite="mailto:Phillips" datetime="2001-10-17T14:50">
   
   <td width="14%" valign=top style='width:14.18%;border-top:none;border-left:
   none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
   mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
   padding:0pt 5.4pt 0pt 5.4pt'>
   Optional<ins
   cite="mailto:Phillips" datetime="2001-10-17T14:50">
   
  
  
   <td width="16%" valign=top style='width:16.0%;border:solid windowtext .5pt;
   border-top:none;mso-border-top-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
   Groups
   
   <td width="8%" valign=top style='width:8.32%;border-top:none;border-left:
   none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
   mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
   padding:0pt 5.4pt 0pt 5.4pt'>
   String
   
   <td width="28%" valign=top style='width:28.86%;border-top:none;border-left:
   none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
   mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
   padding:0pt 5.4pt 0pt 5.4pt'>
   <del cite="mailto:Phillips"
   datetime="2001-10-17T15:04">Same as<del
   cite="mailto:Phillips" datetime="2001-10-17T15:05"> Presence-Info<ins
   cite="mailto:Phillips" datetime="2001-10-17T15:08"> Allows a client to
   request status info of all users in a set of groups.
   
   <td width="32%" valign=top style='width:32.64%;border-top:none;border-left:
   none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
   mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
   padding:0pt 5.4pt 0pt 5.4pt'>
   A
   set of groups in the same format <ins cite="mailto:Phillips"
   datetime="2001-10-17T15:06">as <ins cite="mailto:Phillips"
   datetime="2001-10-17T15:05">Presence-Info <ins cite="mailto:Phillips"
   datetime="2001-10-17T15:07">or <ins cite="mailto:Phillips"
   datetime="2001-10-17T15:05"> “*’ when
   the User field contains a <ins cite="mailto:Phillips"
   datetime="2001-10-17T15:07">specific <ins cite="mailto:Phillips"
   datetime="2001-10-17T15:05">username.<ins cite="mailto:Phillips"
   datetime="2001-10-17T15:06">
   The User and Groups fields <ins cite="mailto:Phillips"
   datetime="2001-10-17T15:07">MUST NOT both be “*”.
   
   <td width="14%" valign=top style='width:14.18%;border-top:none;border-left:
   none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
   mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
   padding:0pt 5.4pt 0pt 5.4pt'>
   Always
   
  
  
   <td width="16%" valign=top style='width:16.0%;border:solid windowtext .5pt;
   border-top:none;mso-border-top-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
   User<ins cite="mailto:Phillips"
   datetime="2001-10-17T15:10">s
   
   <td width="8%" valign=top style='width:8.32%;border-top:none;border-left:
   none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
   mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
   padding:0pt 5.4pt 0pt 5.4pt'>
   String
   
   <td width="28%" valign=top style='width:28.86%;border-top:none;border-left:
   none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
   mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
   padding:0pt 5.4pt 0pt 5.4pt'>
   Allows a client to request status info of a particular
   users Clients
   should respond to requests when the “User<ins cite="mailto:Phillips"
   datetime="2001-10-17T15:10">s” field <del
   cite="mailto:Phillips" datetime="2001-10-17T15:10">matches <ins
   cite="mailto:Phillips" datetime="2001-10-17T15:10">contains their
   username.
   
   <td width="32%" valign=top style='width:32.64%;border-top:none;border-left:
   none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
   mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
   padding:0pt 5.4pt 0pt 5.4pt'>
   <del cite="mailto:Phillips"
   datetime="2001-10-17T15:10">A specific username<ins
   cite="mailto:Phillips" datetime="2001-10-17T15:10">A set of usernames <ins
   cite="mailto:Phillips" datetime="2001-10-17T15:11">delimited<ins
   cite="mailto:Phillips" datetime="2001-10-17T15:10"> by <ins
   cite="mailto:Phillips" datetime="2001-10-17T15:11">“|” or “*” (any
   user).
   Eg
   “|frodo at home|bob at bobco”<ins cite="mailto:Phillips"
   datetime="2001-10-17T15:12">.<ins cite="mailto:Phillips"
   datetime="2001-10-17T15:11">
   The User and
   Groups fields MUST NOT both be “*”.<del
   cite="mailto:Phillips" datetime="2001-10-17T15:09"><span
   style="mso-spacerun: yes">  
   
   <td width="14%" valign=top style='width:14.18%;border-top:none;border-left:
   none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
   mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
   padding:0pt 5.4pt 0pt 5.4pt'>
   Always
   
  
 


 

<a
name="_Ref525634448"><span
style='mso-bookmark:_Toc526853581'>3.7<span
style='font:7.0pt "Times New Roman"'>       
Presence Info Fields

<table border=1 cellspacing=0 cellpadding=0 width="100%" style='width:100.0%;
 border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
 mso-padding-alt:0pt 5.4pt 0pt 5.4pt'>
 
  
   <td width="16%" valign=top style='width:16.0%;border:solid windowtext .5pt;
   padding:0pt 5.4pt 0pt 5.4pt'>
   Field
   
   <td width="8%" valign=top style='width:8.36%;border:solid windowtext .5pt;
   border-left:none;mso-border-left-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
   Type
   
   <td width="29%" valign=top style='width:29.36%;border:solid windowtext .5pt;
   border-left:none;mso-border-left-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
   Description
   
   <td width="33%" valign=top style='width:33.48%;border:solid windowtext .5pt;
   border-left:none;mso-border-left-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
   Possible values
   
   <td width="12%" valign=top style='width:12.8%;border:solid windowtext .5pt;
   border-left:none;mso-border-left-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
   When Used
   
  
 
 
  <td width="16%" valign=top style='width:16.0%;border:solid windowtext .5pt;
  border-top:none;mso-border-top-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
  Presence-Info
  
  <td width="8%" valign=top style='width:8.36%;border-top:none;border-left:
  none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  padding:0pt 5.4pt 0pt 5.4pt'>
  String
  
  <td width="29%" valign=top style='width:29.36%;border-top:none;border-left:
  none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  padding:0pt 5.4pt 0pt 5.4pt'>
  Marks this as a presence info notification and specifies
  its subtype
  
  <td width="33%" valign=top style='width:33.48%;border-top:none;border-left:
  none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  padding:0pt 5.4pt 0pt 5.4pt'>
  <p class=MsoBodyText style='margin-left:18.0pt;text-indent:-18.0pt;
  mso-list:l3 level1 lfo2;mso-list-change:\F0B7 Phillips 20011017T1440;
  tab-stops:list 18.0pt'><span style='font-family:Symbol;
  mso-bidi-font-style:italic'>·       
  “initial”: Full info, with all fields that the client
  supports populated.  Generated when
  the client starts and broadcasts initial presence info.
  <p class=MsoBodyText style='margin-left:18.0pt;text-indent:-18.0pt;
  mso-list:l3 level1 lfo2;mso-list-change:\F0B7 Phillips 20011017T1440;
  tab-stops:list 18.0pt'><span style='font-family:Symbol;
  mso-bidi-font-style:italic'>·       
  “<del cite="mailto:Phillips"
  datetime="2001-10-17T15:28">reply  request_id”:
  Full info (all fields that the client supports are populated) in response to
  a Presence-Request with ID request_id.
  <p class=MsoBodyText style='margin-left:18.0pt;text-indent:-18.0pt;
  mso-list:l3 level1 lfo2;mso-list-change:\F0B7 Phillips 20011017T1440;
  tab-stops:list 18.0pt'><span style='font-family:Symbol;
  mso-bidi-font-style:italic'>·       
  “update”: Partial info, with only the optional fields
  that have changed since last update included.<span style="mso-spacerun:
  yes">  Generated when presence data (eg Status-Text) changes.
  
  <td width="12%" valign=top style='width:12.8%;border-top:none;border-left:
  none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  padding:0pt 5.4pt 0pt 5.4pt'>
  Always
  
 
 
  <td width="16%" valign=top style='width:16.0%;border:solid windowtext .5pt;
  border-top:none;mso-border-top-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
  Presence-Protocol
  
  <td width="8%" valign=top style='width:8.36%;border-top:none;border-left:
  none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  padding:0pt 5.4pt 0pt 5.4pt'>
  Int32
  
  <td width="29%" valign=top style='width:29.36%;border-top:none;border-left:
  none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  padding:0pt 5.4pt 0pt 5.4pt'>
  The version of the presence protocol that is used in
  this notification.
  
  <td width="33%" valign=top style='width:33.48%;border-top:none;border-left:
  none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  padding:0pt 5.4pt 0pt 5.4pt'>
   major_version
  * 1000 + minor_version.  Eg.
  2001 = version 2.1 of the protocol, 3093 = version 3.93 of the protocol.<span
  style="mso-spacerun: yes">  The usual compatibility rules for
  major/minor versions apply: major version number changes indicate
  incompatible changes to the protocol, minor number increments indicate
  backward-compatible changes to the protocol.
  
  <td width="12%" valign=top style='width:12.8%;border-top:none;border-left:
  none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  padding:0pt 5.4pt 0pt 5.4pt'>
  Always
  
 
 
  <td width="16%" valign=top style='width:16.0%;border:solid windowtext .5pt;
  border-top:none;mso-border-top-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
  User
  
  <td width="8%" valign=top style='width:8.36%;border-top:none;border-left:
  none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  padding:0pt 5.4pt 0pt 5.4pt'>
  String
  
  <td width="29%" valign=top style='width:29.36%;border-top:none;border-left:
  none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  padding:0pt 5.4pt 0pt 5.4pt'>
  The user’s <ins cite="mailto:Phillips"
  datetime="2001-10-17T15:30">username.
  
  <td width="33%" valign=top style='width:33.48%;border-top:none;border-left:
  none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  padding:0pt 5.4pt 0pt 5.4pt'>
  Any <ins cite="mailto:Phillips"
  datetime="2001-10-17T15:30">username: eg “mpp<ins cite="mailto:Phillips"
  datetime="2001-10-17T15:30">@dsto”, “<ins cite="mailto:Phillips"
  datetime="2001-10-17T15:30">bob at bobco”, etc.
  
  <td width="12%" valign=top style='width:12.8%;border-top:none;border-left:
  none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  padding:0pt 5.4pt 0pt 5.4pt'>
  Always
  
 
 
  <td width="16%" valign=top style='width:16.0%;border:solid windowtext .5pt;
  border-top:none;mso-border-top-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
  Groups
  
  <td width="8%" valign=top style='width:8.36%;border-top:none;border-left:
  none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  padding:0pt 5.4pt 0pt 5.4pt'>
  String
  
  <td width="29%" valign=top style='width:29.36%;border-top:none;border-left:
  none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  padding:0pt 5.4pt 0pt 5.4pt'>
  The groups the user is a member of.
  
  <td width="33%" valign=top style='width:33.48%;border-top:none;border-left:
  none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  padding:0pt 5.4pt 0pt 5.4pt'>
  A set of group names separated by ‘|’.
  For example “|dsto|quake heroes|”.
  Note that the preceding and trailing ‘|’s allow clients to easily use the
  ‘contains’ function to test for particular groups without having to handle
  three cases (ie where the group is at the beginning, middle and end of the
  list).
  
  <td width="12%" valign=top style='width:12.8%;border-top:none;border-left:
  none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  padding:0pt 5.4pt 0pt 5.4pt'>
  Always
  
 
 
  <td width="16%" valign=top style='width:16.0%;border:solid windowtext .5pt;
  border-top:none;mso-border-top-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
  Status
  
  <td width="8%" valign=top style='width:8.36%;border-top:none;border-left:
  none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  padding:0pt 5.4pt 0pt 5.4pt'>
  String
  
  <td width="29%" valign=top style='width:29.36%;border-top:none;border-left:
  none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  padding:0pt 5.4pt 0pt 5.4pt'>
  The
  status of the user.<ins cite="mailto:Phillips"
  datetime="2001-10-17T15:36">
  
  <td width="33%" valign=top style='width:33.48%;border-top:none;border-left:
  none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  padding:0pt 5.4pt 0pt 5.4pt'>
  <p class=MsoBodyText style='margin-left:18.0pt;text-indent:-18.0pt;
  mso-list:l1 level1 lfo1;mso-list-ins:Phillips 20011017T1537;tab-stops:list 18.0pt'><span
  style='font-family:Symbol'>·       
  <ins cite="mailto:Phillips"
  datetime="2001-10-17T15:37">“online”: the user is online and ready to receive
  messages.
  <p class=MsoBodyText style='margin-left:18.0pt;text-indent:-18.0pt;
  mso-list:l1 level1 lfo1;mso-list-ins:Phillips 20011017T1538;tab-stops:list 18.0pt'><span
  style='font-family:Symbol'>·       
  <ins cite="mailto:Phillips"
  datetime="2001-10-17T15:38">“unavailable”: the user is not currently viewing
  messages (eg away from desk).
  <p class=MsoBodyText style='margin-left:18.0pt;text-indent:-18.0pt;
  mso-list:l1 level1 lfo1;mso-list-ins:Phillips 20011017T1538;tab-stops:list 18.0pt'><span
  style='font-family:Symbol'>·       
  <ins cite="mailto:Phillips"
  datetime="2001-10-17T15:38">“unavailable?”: the client has automatically set
  this status based on activity (keystroke/mouse) monitoring<ins
  cite="mailto:Phillips" datetime="2001-10-17T15:58">, so<ins
  cite="mailto:Phillips" datetime="2001-10-17T15:39"> this <ins
  cite="mailto:Phillips" datetime="2001-10-17T15:38">is an educated guess.
  <p class=MsoBodyText style='margin-left:18.0pt;text-indent:-18.0pt;
  mso-list:l1 level1 lfo1;mso-list-ins:Phillips 20011017T1537;tab-stops:list 18.0pt'><span
  style='font-family:Symbol'>·       
  <ins cite="mailto:Phillips"
  datetime="2001-10-17T15:38"> <ins
  cite="mailto:Phillips" datetime="2001-10-17T15:37">“offline”: the user is not
  currently connected.  This is usually
  sent as the status when a presence client disconnects.
  <p class=MsoBodyText style='margin-left:18.0pt;text-indent:-18.0pt;
  mso-list:l1 level1 lfo1;mso-list-ins:Phillips 20011017T1537;tab-stops:list 18.0pt'><span
  style='font-family:Symbol'>·       
  <ins cite="mailto:Phillips"
  datetime="2001-10-17T15:38"> <ins
  cite="mailto:Phillips" datetime="2001-10-17T15:37">“coffee”: the user is on a
  coffee break.
  The
  “online”, “offline” and “unavailable” <ins cite="mailto:Phillips"
  datetime="2001-10-17T15:58">settings<ins cite="mailto:Phillips"
  datetime="2001-10-17T15:40"> <ins cite="mailto:Phillips"
  datetime="2001-10-17T15:59">SHOULD<ins cite="mailto:Phillips"
  datetime="2001-10-17T15:40"> be taken into account by the client when merging
  conflicting notifications: see section <ins
  cite="mailto:Phillips" datetime="2001-10-17T15:40"><span style='mso-element:
  field-begin'> REF _Ref527966988
  \r \h <ins
  cite="mailto:Phillips" datetime="2001-10-17T15:51">3.8<ins
  cite="mailto:Phillips" datetime="2001-10-17T15:40">
   08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005200650066003500320037003900360036003900380038000000
  <ins cite="mailto:Phillips"
  datetime="2001-10-17T15:40"><ins
  cite="mailto:Phillips" datetime="2001-10-17T15:40"> for a discussion on this.<ins
  cite="mailto:Phillips" datetime="2001-10-17T15:36">
  
  <td width="12%" valign=top style='width:12.8%;border-top:none;border-left:
  none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  padding:0pt 5.4pt 0pt 5.4pt'>
  Optional<ins
  cite="mailto:Phillips" datetime="2001-10-17T15:36">
  
 
 
  <td width="16%" valign=top style='width:16.0%;border:solid windowtext .5pt;
  border-top:none;mso-border-top-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
  Status-Text
  
  <td width="8%" valign=top style='width:8.36%;border-top:none;border-left:
  none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  padding:0pt 5.4pt 0pt 5.4pt'>
  String
  
  <td width="29%" valign=top style='width:29.36%;border-top:none;border-left:
  none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  padding:0pt 5.4pt 0pt 5.4pt'>
  Text
  describing the status of the user.
  
  <td width="33%" valign=top style='width:33.48%;border-top:none;border-left:
  none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  padding:0pt 5.4pt 0pt 5.4pt'>
  Any string<ins cite="mailto:Phillips"
  datetime="2001-10-17T15:41"> <ins cite="mailto:Phillips"
  datetime="2001-10-17T15:42">intended<ins cite="mailto:Phillips"
  datetime="2001-10-17T15:41"> to be displayed as the current status eg
  “Online: but will be away this afternoon”.
   
  
  <td width="12%" valign=top style='width:12.8%;border-top:none;border-left:
  none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  padding:0pt 5.4pt 0pt 5.4pt'>
  Optional<ins cite="mailto:Phillips"
  datetime="2001-10-17T15:42">: required when the Status field is present
  
 
 
  <td width="16%" valign=top style='width:16.0%;border:solid windowtext .5pt;
  border-top:none;mso-border-top-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
  Status-Duration
  
  <td width="8%" valign=top style='width:8.36%;border-top:none;border-left:
  none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  padding:0pt 5.4pt 0pt 5.4pt'>
  Int32
  
  <td width="29%" valign=top style='width:29.36%;border-top:none;border-left:
  none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  padding:0pt 5.4pt 0pt 5.4pt'>
  The amount of time (in seconds) that the current status
  has been in effect.<span
  style="mso-spacerun: yes">  This is a <ins cite="mailto:Phillips"
  datetime="2001-10-17T14:31">relative <ins cite="mailto:Phillips"
  datetime="2001-10-17T14:30">duration rather than an absolute time since the
  status was set to
  avoid the <ins
  cite="mailto:Phillips" datetime="2001-10-17T14:31">perennial <ins
  cite="mailto:Phillips" datetime="2001-10-17T14:30">problems with <ins
  cite="mailto:Phillips" datetime="2001-10-17T14:31">inaccurate clocks and time<ins
  cite="mailto:Phillips" datetime="2001-10-17T15:59"> <ins
  cite="mailto:Phillips" datetime="2001-10-17T14:31">zones.
  
  <td width="33%" valign=top style='width:33.48%;border-top:none;border-left:
  none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  padding:0pt 5.4pt 0pt 5.4pt'>
  Any integer >= 0. 
  Undefined behaviour if anyone holds the same status longer than 136
  years ;) (232 seconds)
  
  <td width="12%" valign=top style='width:12.8%;border-top:none;border-left:
  none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  padding:0pt 5.4pt 0pt 5.4pt'>
  Optional: required when Status field is present
  
 
 
  <td width="16%" valign=top style='width:16.0%;border:solid windowtext .5pt;
  border-top:none;mso-border-top-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
  Chat-Groups
  
  <td width="8%" valign=top style='width:8.36%;border-top:none;border-left:
  none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  padding:0pt 5.4pt 0pt 5.4pt'>
  String
  
  <td width="29%" valign=top style='width:29.36%;border-top:none;border-left:
  none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  padding:0pt 5.4pt 0pt 5.4pt'>
  The set of chat groups the user is subscribed to.
  
  <td width="33%" valign=top style='width:33.48%;border-top:none;border-left:
  none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  padding:0pt 5.4pt 0pt 5.4pt'>
  Eg. “|Chat|ticker-dev|”
  
  <td width="12%" valign=top style='width:12.8%;border-top:none;border-left:
  none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  padding:0pt 5.4pt 0pt 5.4pt'>
  Optional
  
 
 
  <td width="16%" valign=top style='width:16.0%;border:solid windowtext .5pt;
  border-top:none;mso-border-top-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
  News-Groups
  
  <td width="8%" valign=top style='width:8.36%;border-top:none;border-left:
  none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  padding:0pt 5.4pt 0pt 5.4pt'>
  String
  
  <td width="29%" valign=top style='width:29.36%;border-top:none;border-left:
  none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  padding:0pt 5.4pt 0pt 5.4pt'>
  The set of news groups the user is subscribed to.
  
  <td width="33%" valign=top style='width:33.48%;border-top:none;border-left:
  none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  padding:0pt 5.4pt 0pt 5.4pt'>
  Eg. “|BreakingStories|Slashdot|”
  
  <td width="12%" valign=top style='width:12.8%;border-top:none;border-left:
  none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  padding:0pt 5.4pt 0pt 5.4pt'>
  Optional
  
 
 
  <td width="16%" valign=top style='width:16.0%;border:solid windowtext .5pt;
  border-top:none;mso-border-top-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
  Ticker-Client
  
  <td width="8%" valign=top style='width:8.36%;border-top:none;border-left:
  none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  padding:0pt 5.4pt 0pt 5.4pt'>
  String
  
  <td width="29%" valign=top style='width:29.36%;border-top:none;border-left:
  none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  padding:0pt 5.4pt 0pt 5.4pt'>
  The ticker client the user is running
  
  <td width="33%" valign=top style='width:33.48%;border-top:none;border-left:
  none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  padding:0pt 5.4pt 0pt 5.4pt'>
  A ticker client name and version eg “sticker 2.0.1”,
  “xtickertape 2.0a”.  A missing value
  indicates the user is not running a ticker client.<span style="mso-spacerun:
  yes">  Users that are running ticker that don’t wish the type of
  client to be known should use “generic”.
  
  <td width="12%" valign=top style='width:12.8%;border-top:none;border-left:
  none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  padding:0pt 5.4pt 0pt 5.4pt'>
  Optional
  
 




<span style='font-size:12.0pt;font-family:"Times New Roman";mso-fareast-font-family:
"Times New Roman";mso-ansi-language:EN-AU;mso-fareast-language:EN-US;
mso-bidi-language:AR-SA'><br clear=all style='page-break-before:always;
mso-break-type:section-break'>




<a
name="_Toc526853582"><span
style='mso-bookmark:_Ref527966988'>3.8<span
style='font:7.0pt "Times New Roman"'>       
Handling
Conflicting Presence-Info Responses<span
style='mso-bookmark:_Toc526853582'><ins cite="mailto:Phillips"
datetime="2001-10-17T14:26">

<span
style='mso-bookmark:_Toc526853582'><ins cite="mailto:Phillips"
datetime="2001-10-17T14:26">Clients <ins cite="mailto:Phillips"
datetime="2001-10-17T15:59">SHOULD<ins cite="mailto:Phillips"
datetime="2001-10-17T14:26"> handle <ins cite="mailto:Phillips"
datetime="2001-10-17T15:59">the <ins cite="mailto:Phillips"
datetime="2001-10-17T14:26">situation where multiple Presence-Info responses
are received for single user<ins cite="mailto:Phillips"
datetime="2001-10-17T16:00"> by using the precedence of the Status fields<ins
cite="mailto:Phillips" datetime="2001-10-17T14:26">.<span style="mso-spacerun:
yes">  For example, in the case where a user is running two clients on
two hosts, one of which<ins
cite="mailto:Phillips" datetime="2001-10-17T14:26"> is listing the user as “<ins
cite="mailto:Phillips" datetime="2001-10-17T16:00">u<ins
cite="mailto:Phillips" datetime="2001-10-17T14:26">navailable<ins
cite="mailto:Phillips" datetime="2001-10-17T16:00">?<ins
cite="mailto:Phillips" datetime="2001-10-17T14:26">”, the other which lists the
user as “o<ins
cite="mailto:Phillips" datetime="2001-10-17T14:26">nline”, Presence-Requests
will generate two responses.  In this
case, clients SHOULD<ins
cite="mailto:Phillips" datetime="2001-10-17T14:26"> <ins
cite="mailto:Phillips" datetime="2001-10-17T16:01">clearly <ins
cite="mailto:Phillips" datetime="2001-10-17T14:28">give precedence to <ins
cite="mailto:Phillips" datetime="2001-10-17T14:26">the information in the “<ins
cite="mailto:Phillips" datetime="2001-10-17T16:01">o<ins
cite="mailto:Phillips" datetime="2001-10-17T14:26">nline” response over the “<ins
cite="mailto:Phillips" datetime="2001-10-17T16:01">i<ins
cite="mailto:Phillips" datetime="2001-10-17T14:26">nactive<ins
cite="mailto:Phillips" datetime="2001-10-17T16:01">?<ins
cite="mailto:Phillips" datetime="2001-10-17T14:26">”.<span style="mso-spacerun:
yes">  The order of precedence is 
“o<ins
cite="mailto:Phillips" datetime="2001-10-17T14:26">nline”, “<ins
cite="mailto:Phillips" datetime="2001-10-17T16:02">unavailable<ins
cite="mailto:Phillips" datetime="2001-10-17T14:26">”<ins
cite="mailto:Phillips" datetime="2001-10-17T16:02">, “unavailable?” <ins
cite="mailto:Phillips" datetime="2001-10-17T14:26">and “<ins
cite="mailto:Phillips" datetime="2001-10-17T16:01">offline<ins
cite="mailto:Phillips" datetime="2001-10-17T14:26">”, with other statuses being
equal <ins
cite="mailto:Phillips" datetime="2001-10-17T14:26">bottom of the order.

<span
style='mso-bookmark:_Toc526853582'>3.9<span
style='font:7.0pt "Times New Roman"'>       
Notes

<p class=MsoNormal style='margin-left:18.0pt;text-indent:-18.0pt;mso-list:l7 level1 lfo9;
mso-list-change:\F0B7 Phillips 20011017T1440;tab-stops:list 18.0pt'><span
style='font-family:Symbol'>·       
Presence-Info: the values of this field have been
designed so that clients can easily discern the derivation of updates if they
wish (for efficiency or otherwise). 
However, clients are not required to distinguish between the different
types of Status-Info notification: simply updating a registry with the new data
in any Presence-Info notification is sufficient, so long as missing optional fields
are handled.

Note that one possible efficiency enabled by this approach is the ability to
opt out of redundant “reply” updates in response to a Presence-Request from
other clients, using the expression <span
style='font-size:11.0pt;mso-bidi-font-size:12.0pt;font-family:"Courier New";
mso-bidi-font-family:"Times New Roman"'>Status-Info != “reply”.<span
style="mso-spacerun: yes">  The other obvious way to mark replies to
status requests -- with a separate “In-Reply-To” field -- makes this difficult,
since <span style='font-size:11.0pt;mso-bidi-font-size:
12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>!require
(In-Reply-To) can’t be used to create the same effect due to the
tri-state logic used in the Elvin subscription language.

<p class=MsoNormal style='margin-left:18.0pt;text-indent:-18.0pt;mso-list:l7 level1 lfo9;
mso-list-change:\F0B7 Phillips 20011017T1440;tab-stops:list 18.0pt'><span
style='font-family:Symbol'>·       
Presence-Protocol: this is designed so that clients can
subscribe to known protocol sets eg “<span
style='font-size:11.0pt;mso-bidi-font-size:12.0pt;font-family:"Courier New";
mso-bidi-font-family:"Times New Roman"'>Protocol-Version >= 1000 &&
Protocol-Version < 3000” picks up any 1.x or 2.x protocol
notifications.

<p class=MsoNormal style='margin-left:18.0pt;text-indent:-18.0pt;mso-list:l7 level1 lfo9;
mso-list-change:\F0B7 Phillips 20011017T1440;tab-stops:list 18.0pt'><span
style='font-family:Symbol'>·       
It is assumed that, if the user is running a ticker
client, then they are subscribed to their ‘personal’ chat group with the same
name as their user ID ie “user at domain”. 
This convention makes it obvious how to send a ticker message to someone
visible via the presence system.

<p class=MsoNormal style='margin-left:18.0pt;text-indent:-18.0pt;mso-list:l7 level1 lfo9;
mso-list-change:\F0B7 Phillips 20011017T1440;tab-stops:list 18.0pt'><span
style='font-family:Symbol'>·       
Non-standard fields should use the “x-” naming
convention eg “x-Phone-Number”, “x-Organisation”, etc.<span
style="mso-spacerun: yes">  Ideally, clients should provide an option to
display the non-standard fields.<ins cite="mailto:Phillips"
datetime="2001-10-17T13:46">

<p class=MsoNormal style='margin-left:18.0pt;text-indent:-18.0pt;mso-list:l7 level1 lfo9;
mso-list-ins:Phillips 20011017T1611;tab-stops:list 18.0pt'><span
style='font-family:Symbol'>·       
Treating
usernames or
groups as case-sensitive
runs the risk of
people not seeing each other because they got the case wrong eg I look for
‘bob at bobco’ and fail to see him because he is really <ins
cite="mailto:Phillips" datetime="2001-10-17T13:49">‘Bob at BobCo’.<ins
cite="mailto:Phillips" datetime="2001-10-17T14:54">

<p class=MsoNormal style='margin-left:18.0pt;text-indent:-18.0pt;mso-list:l7 level1 lfo9;
mso-list-ins:Phillips 20011017T1611;tab-stops:list 18.0pt'><span
style='font-family:Symbol'>·       
Requestor
field: this was
initially intended
to allow clients to respond differently depending on the requestor, eg <ins
cite="mailto:Phillips" datetime="2001-10-17T14:57">subscription<ins
cite="mailto:Phillips" datetime="2001-10-17T16:03">s<ins
cite="mailto:Phillips" datetime="2001-10-17T14:57"> to some groups might be
hidden except to certain people<ins cite="mailto:Phillips"
datetime="2001-10-17T14:55">.  <ins
cite="mailto:Phillips" datetime="2001-10-17T14:58">But s<ins
cite="mailto:Phillips" datetime="2001-10-17T14:55">ince any client can listen
in to the replies, it
would <ins
cite="mailto:Phillips" datetime="2001-10-17T14:59">not <ins
cite="mailto:Phillips" datetime="2001-10-17T14:55">be a <ins
cite="mailto:Phillips" datetime="2001-10-17T14:57">particularly useful <ins
cite="mailto:Phillips" datetime="2001-10-17T14:56">way of hiding information
(using the <ins
cite="mailto:Phillips" datetime="2001-10-17T14:56">security <ins
cite="mailto:Phillips" datetime="2001-10-17T14:59">API’s would make more sense)<ins
cite="mailto:Phillips" datetime="2001-10-17T15:00">.<span style="mso-spacerun:
yes">  It
is left in the
specification but
made optional.<ins
cite="mailto:Phillips" datetime="2001-10-17T13:46">

<a
name="_Toc526853583"><span style='mso-bookmark:
_Toc526853583'>4        
References

<a
name="_Toc526853584"><span style='mso-bookmark:
_Toc526853584'>4.1       
Other Presence Protocols

Thanks to David Arnold for providing the initial set of
links that these references are based on.

4.1.1<span
style='font:7.0pt "Times New Roman"'>       
Simple General Awareness Protocol (SGAP)

A Lotus-sponsored <a
href="http://www.lotus.com/lotus/research.nsf/2b4f81291401771785256976004a8d13/86975a452540f46c8525661e0051904d/$FILE/sgap4.htm">IETF
Internet Draft, which expired on May 98. 
It’s not clear if this is still a live project.<span
style="mso-spacerun: yes">  Specification talks mainly about
client/server interactions and message formats.<span style="mso-spacerun:
yes">  Seems to offer little wisdom for this specification.

Also see <a
href="http://www.lotus.com/lotus/research.nsf/e2fedcc34342c897852568bd001274fd/08f78fa390138578852565c500701d11?OpenDocument">Lotus
Research Page for more information.

4.1.2<span
style='font:7.0pt "Times New Roman"'>       
Instant Messaging and Presence Protocol (IMPP)

Uses presence information messages (MIME type
message/cpim) that contain an XML presence info ‘payload’.

Example payload (from <a
href="http://www.ietf.org/internet-drafts/draft-ietf-impp-cpim-pidf-00.txt">IMPP
internet draft):

    <presence xmlns="http://www.ietf.org/ns/cpim-pidf-xml-1.0">     <tuple name="im-1">       <status>         <value>open</value>         <detail type="im"                 schema="http://www.ietf.org/dtd/im-type-im.dtd">            away<span
style='mso-tab-count:1'>         </detail>       </status>       <contact priority="2">im:shingo at jp.fujitsu.com</contact>       <note>I'll be in Tokyo tomorrow</note>     </tuple>     <tuple name="email">       <status>         <value>open</value>       </status>       <contact priority="1">mailto:shingo at jp.fujitsu.com</contact>     </tuple>   </presence>   

 

The main wisdom to be gained here is that the presence
info is divided into one or more contact tuples, which describe the users’
status in a particular online medium. 
In the example, the user is saying they have both Instant Messaging and
email contacts, but are not online for IM. 
The addition of the note to the IM tuple presumably informs interested
parties that the person will be available for chat the next day.<span
style="mso-spacerun: yes">  The Status-Text field of this protocol gives
some of this functionality, but we are really assuming that ticker is the main
messaging method.  Email addresses and
other info can be supplied as an “x-” field.

For more info see <a
href="http://www.ietf.org/html.charters/impp-charter.html">IMPP charter page,
IMPP main page, <a
href="http://www.ietf.org/ids.by.wg/impp.html">IMPP working group pages and
<a
href="http://www.lotus.com/lotus/research.nsf/e2fedcc34342c897852568bd001274fd/989718b8a6d016228525668a00632987?OpenDocument">Lotus
Research.

4.1.3<span
style='font:7.0pt "Times New Roman"'>       
Jabber

Jabber is an IM/presence service built from a series of
federated servers.  The protocol is open
and there are a number of open-source clients. 
A free trialware server for up to 100 users is available, but a
commercial license is needed for larger numbers of users.

The XML-based <a
href="http://docs.jabber.org/general/html/protocol.html">Jabber protocol
includes a presence message type. 
Example (from protocol page):

  <presence       to="romeo at montague.com/orchard"      from="juliet at capulet.com/balcony">    <status>Stay but a little, I will come again.</status>    <show>away</show>  </presence> 

The distinction between
‘show’ and ‘status’ is interesting. 
Status is user-readable text and is used in the same way the protocol in
this document.  ‘Show’ can be:

<table border=1 cellspacing=0 cellpadding=0 style='margin-left:30.35pt;
 border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
 mso-padding-alt:0pt 5.4pt 0pt 5.4pt'>
 
  <td width=56 valign=top style='width:42.15pt;border:solid windowtext .5pt;
  padding:0pt 5.4pt 0pt 5.4pt'>
  chat
  
  <td width=472 valign=top style='width:353.9pt;border:solid windowtext .5pt;
  border-left:none;mso-border-left-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
  The client is available for immediate contact.
  
 
 
  <td width=56 valign=top style='width:42.15pt;border:solid windowtext .5pt;
  border-top:none;mso-border-top-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
  away
  
  <td width=472 valign=top style='width:353.9pt;border-top:none;border-left:
  none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  padding:0pt 5.4pt 0pt 5.4pt'>
  The client is online, but is momentarily away (e.g., at lunch or a
  meeting).
  
 
 
  <td width=56 valign=top style='width:42.15pt;border:solid windowtext .5pt;
  border-top:none;mso-border-top-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
  xa
  
  <td width=472 valign=top style='width:353.9pt;border-top:none;border-left:
  none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  padding:0pt 5.4pt 0pt 5.4pt'>
  The client is online, but has been inactive for a long time.
  
 
 
  <td width=56 valign=top style='width:42.15pt;border:solid windowtext .5pt;
  border-top:none;mso-border-top-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
  dnd
  
  <td width=472 valign=top style='width:353.9pt;border-top:none;border-left:
  none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  padding:0pt 5.4pt 0pt 5.4pt'>
  The client is in Do Not Disturb mode.
  
 


The Elvin presence protocol
currently overloads show and status into the ‘Status’ field eg
“Unavailable (at meeting in rm 56)” is the same as Jabber show = “away” +
status = “at meeting in rm 56”.  We may
want to consider following the Jabber example.

Jabber also has an “iq” message format can be used to
exchange extended information.

See home page, <a
href="http://www.jabber.com/">main commercial page, <a
href="http://www.jabbercentral.org/">Jabber Central news page

4.1.4<span
style='font:7.0pt "Times New Roman"'>       
ICQ

The ICQ
v5 protocol allows a range of, non-extensible (?) information about a user
to be published using the CMD_META_USER message such as name, phone, age, city
etc.  This sort of information could be
accommodated by the Elvin presence protocol using x-Name, x-Phone etc.

See
ICQ protocol site.










More information about the ticker-dev mailing list