Presence

Version 53 (Adrian Georgescu, 09/21/2012 01:07 pm)

1 1 Adrian Georgescu
h1. Presence
2 1 Adrian Georgescu
3 47 Adrian Georgescu
This functionality will be available in upcoming Blink Pro 2.0 and Blink Lite 2.0 for MacOSX and also on Blink-Qt for Window and Linux.
4 44 Adrian Georgescu
5 15 Adrian Georgescu
h2. Design Principles
6 15 Adrian Georgescu
7 30 Adrian Georgescu
 * Blink should work with any SIP and XCAP servers that supports SIP SIMPLE standards
8 1 Adrian Georgescu
 * Blink uses only TCP or TLS transports for signaling
9 38 Adrian Georgescu
 * Blink presence payload is based on "RPID schema":http://tools.ietf.org/html/rfc4480
10 43 Adrian Georgescu
 * Blink relies on a Presence Agent collocated with the SIP Registrar that supports PUBLISH method and XCAP storage
11 40 Adrian Georgescu
 * Presence Agent must support handling of presence rules using org.openmobilealliance.pres-rules XCAP document
12 40 Adrian Georgescu
 * Presence Agent must support external references from rls-services to resource-lists
13 40 Adrian Georgescu
 * Presence Agent must support external references from rls-services to  org.openmobilealliance.pres-rules
14 40 Adrian Georgescu
 * Presence Agent must support presence and presence.winfo event packages
15 43 Adrian Georgescu
 * Presence Agent may support xcap-diff event package for XCAP documents replication between clients
16 42 Adrian Georgescu
 * Presence Agent must support RLS subscriptions and "RLMI notifications":http://tools.ietf.org/html/rfc4662
17 45 Adrian Georgescu
 * SIP Registrar may support GRUU
18 53 Adrian Georgescu
 * XCAP server may support serving the user icon from org.openmobilealliance.pres-content document
19 40 Adrian Georgescu
 * XCAP server must support the following XCAP applications: rls-services, resource-lists, xcap-caps, org.openmobilealliance.pres-content, org.openmobilealliance.pres-rules, org.openmobilealliance.xcap-directory
20 40 Adrian Georgescu
 * XCAP server may support pidf-manipulation for offline status
21 28 Adrian Georgescu
22 29 Adrian Georgescu
23 25 Adrian Georgescu
h3. Standards
24 25 Adrian Georgescu
25 25 Adrian Georgescu
http://sipsimpleclient.com/projects/sipsimpleclient/wiki/SipFeatures#Presence
26 18 Adrian Georgescu
27 1 Adrian Georgescu
h3. Disclaimer
28 19 Adrian Georgescu
29 29 Adrian Georgescu
There is no guaranty Blink Presence functionality would interoperate with other SIP clients due to the freedom allowed by the standards in modeling the data used for contacts storage.
30 27 Adrian Georgescu
31 1 Adrian Georgescu
h3. Interoperability
32 1 Adrian Georgescu
33 21 Adrian Georgescu
Presence is a complex issue and the mechanisms used internally by Blink may not necessarily work under your own server environment. If you want to troubleshot when things do not work as expected, first use the built-in Blink accounts that are designed to work with SIP2SIP domain. As protocol traces for signaling and storage are logged to file, you can easily access such debug information and analyze Blink behavior.
34 1 Adrian Georgescu
35 32 Adrian Georgescu
We can provide support, if you encounter interoperability issues with any the following products and services against which Blink has been fully tested:
36 1 Adrian Georgescu
37 1 Adrian Georgescu
 * SIP2SIP.info (a public free SIP service)
38 33 Adrian Georgescu
 * Interoperability with XMPP domains (using SylkServer SIP/XMPP gateway)
39 1 Adrian Georgescu
 * OpenSIPS/OpenXCAP combination (server software you can run on your premisses)
40 48 Adrian Georgescu
41 48 Adrian Georgescu
There is nothing that should prevent Blink interoperate with any other SIP end-points as far as SIP signaling is concerned (PUBLISH, SUBSCRIBE and NOTIFY methods). Blink will preserve contacts related information it did not create in XCAP documents. Unfortunately, we have not found other clients that behave in the same way. Sharing the same XCAP documents with other SIP clients is therefore strongly discouraged as is guaranteed to cause failures.
42 27 Adrian Georgescu
43 27 Adrian Georgescu
You can also enable one SIP2SIP account in your Blink instance to perform presence and contact storage operations while using your preferred SIP provider to make phone calls.
44 18 Adrian Georgescu
45 15 Adrian Georgescu
h3. Support
46 15 Adrian Georgescu
47 34 Adrian Georgescu
As presence require proper infrastructure that many SIP service providers simply lack today, do not complain to us when Presence does not work with your SIP service provider.
48 15 Adrian Georgescu
49 15 Adrian Georgescu
h2. Contacts
50 24 Adrian Georgescu
51 34 Adrian Georgescu
Contacts are stored on the XCAP server in the resource-lists document under a proprietary name space to avoid conflicts with other end-points that might use the same document as there is no common standard way for how to store a rich address book on a server. This means that different SIP user agents from different vendors cannot read or modify this data in a deterministic way. The contacts in the address-book are then used by standard OMA rls-services and pres-rules XCAP documents. Contacts have two Presence related properties that can changed in Edit Contact Panel Subscriptions section:
52 1 Adrian Georgescu
53 1 Adrian Georgescu
 * Subscribe to Contact's Presence Information
54 8 Adrian Georgescu
 * Allow Contact to see my Presence Information
55 34 Adrian Georgescu
 * If an URI part of the contact is labelled as XMPP, when using a SIP2SIP.info account the session request will be forwarded to an XMPP gateway.
56 1 Adrian Georgescu
57 4 Adrian Georgescu
h2. Watcher Information
58 4 Adrian Georgescu
59 13 Adrian Georgescu
Using SUBSCRIBE for presence.winfo event package, Blink keeps track of presence watchers and their status.
60 6 Adrian Georgescu
 
61 4 Adrian Georgescu
 * Contacts that have subscribed to our presence are rendered in the 'New Contact Requests' group that is rendered on top of the contacts list. Right click or dragging the contact can be used to allow or deny the request. Blocked contacts are displayed in the Blocked group.
62 4 Adrian Georgescu
 * Active watchers are shown in Status -> People Watching  My Presence Activity menu
63 4 Adrian Georgescu
64 6 Adrian Georgescu
h2. Published Presence
65 1 Adrian Georgescu
66 13 Adrian Georgescu
Using PUBLISH method for presence event package, the following information is published by Blink:
67 1 Adrian Georgescu
68 7 Adrian Georgescu
h3. Basic Status
69 7 Adrian Georgescu
70 7 Adrian Georgescu
Open or closed.
71 7 Adrian Georgescu
72 14 Adrian Georgescu
h3. Extended Status
73 7 Adrian Georgescu
74 14 Adrian Georgescu
Blink uses a proprietary extension for indicating the extented status compatible with XMPP end-points. 
75 7 Adrian Georgescu
76 6 Adrian Georgescu
h3. Location
77 1 Adrian Georgescu
78 6 Adrian Georgescu
Location is based on CIPID map extension. Location can be disabled per account in Presence section of account preferences.
79 6 Adrian Georgescu
80 6 Adrian Georgescu
h3. Homepage
81 6 Adrian Georgescu
82 6 Adrian Georgescu
A home page can be entered in Presence section of account preferences. Homepage is based on CIPID homepage extension.
83 1 Adrian Georgescu
84 3 Adrian Georgescu
h3. Note
85 6 Adrian Georgescu
86 14 Adrian Georgescu
Presence note can be typed in the text area right to own icon in the main GUI window. Note is attached to the service.
87 5 Adrian Georgescu
88 5 Adrian Georgescu
h3. Status
89 1 Adrian Georgescu
90 7 Adrian Georgescu
Presence status can be changed from the main GUI window and Status menu. Last combination of Presence state and note are saved in the history build at the end of the menu. 
91 1 Adrian Georgescu
92 5 Adrian Georgescu
h3. Icon
93 1 Adrian Georgescu
94 1 Adrian Georgescu
User icon is uploaded to XCAP server using OMA pres-content application, replicated among multiple Blink instances and location of icons storage URL on XCAP server is published in PIDF.
95 1 Adrian Georgescu
96 1 Adrian Georgescu
h3. Offline Presence
97 1 Adrian Georgescu
98 1 Adrian Georgescu
In status menu, one can change its presence state and also an offline state when Blink is offline. This is done using pidf-manipulation XCAP application.
99 1 Adrian Georgescu
100 1 Adrian Georgescu
h3. Media Capabilities
101 1 Adrian Georgescu
102 1 Adrian Georgescu
Type of media supported by the end-point.
103 1 Adrian Georgescu
104 1 Adrian Georgescu
h3. Device Information
105 1 Adrian Georgescu
106 1 Adrian Georgescu
The following information is published:
107 1 Adrian Georgescu
108 1 Adrian Georgescu
 * Hostname
109 1 Adrian Georgescu
 * Time offset
110 9 Adrian Georgescu
 * Idle status
111 1 Adrian Georgescu
 * GRUU contact address
112 8 Adrian Georgescu
113 52 Adrian Georgescu
h3. Payload Example
114 46 Adrian Georgescu
115 46 Adrian Georgescu
<pre>
116 46 Adrian Georgescu
Content-Type: application/pidf+xml
117 46 Adrian Georgescu
118 46 Adrian Georgescu
<?xml version="1.0"?>
119 50 Adrian Georgescu
<presence xmlns="urn:ietf:params:xml:ns:pidf" entity="sip:ag@test.sip2sip.info">
120 50 Adrian Georgescu
  <tuple xmlns="urn:ietf:params:xml:ns:pidf" xmlns:agp-pidf="urn:ag-projects:xml:ns:pidf" xmlns:c="urn:ietf:params:xml:ns:pidf:cipid" xmlns:caps="urn:ietf:params:xml:ns:pidf:caps" xmlns:agp-caps="urn:ag-projects:xml:ns:pidf:caps" xmlns:rpid="urn:ietf:params:xml:ns:pidf:rpid" xmlns:dm="urn:ietf:params:xml:ns:pidf:data-model" id="SID-f4649f87-1aa3-44ec-ab49-d0464528d706">
121 50 Adrian Georgescu
    <status>
122 50 Adrian Georgescu
      <basic>open</basic>
123 50 Adrian Georgescu
      <agp-pidf:extended>away</agp-pidf:extended>
124 50 Adrian Georgescu
    </status>
125 50 Adrian Georgescu
    <c:display-name>Adrian Georgescu</c:display-name>
126 50 Adrian Georgescu
    <c:map>Netherlands/Haarlem</c:map>
127 50 Adrian Georgescu
    <c:icon>https%3A//xcap.test.sipthor.net/xcap-root/org.openmobilealliance.pres-content/users/sip%3Aag%40test.sip2sip.info/oma_status-icon/index</c:icon>
128 50 Adrian Georgescu
    <c:homepage>http%3A//georgescu.info</c:homepage>
129 50 Adrian Georgescu
    <agp-pidf:device-info id="f4649f87-1aa3-44ec-ab49-d0464528d706">
130 50 Adrian Georgescu
      <agp-pidf:description>imac3-2</agp-pidf:description>
131 50 Adrian Georgescu
      <agp-pidf:user-agent>Blink Pro 2.0.0 (MacOSX)</agp-pidf:user-agent>
132 50 Adrian Georgescu
      <agp-pidf:time-offset>120</agp-pidf:time-offset>
133 50 Adrian Georgescu
    </agp-pidf:device-info>
134 50 Adrian Georgescu
    <caps:servcaps>
135 50 Adrian Georgescu
      <caps:audio>true</caps:audio>
136 50 Adrian Georgescu
      <caps:message>true</caps:message>
137 50 Adrian Georgescu
      <caps:text>true</caps:text>
138 50 Adrian Georgescu
      <agp-caps:file-transfer>true</agp-caps:file-transfer>
139 50 Adrian Georgescu
      <agp-caps:screen-sharing>true</agp-caps:screen-sharing>
140 50 Adrian Georgescu
    </caps:servcaps>
141 50 Adrian Georgescu
    <rpid:user-input idle-threshold="600">active</rpid:user-input>
142 50 Adrian Georgescu
    <dm:deviceID>f4649f87-1aa3-44ec-ab49-d0464528d706</dm:deviceID>
143 50 Adrian Georgescu
    <contact>sip%3Aag%40test.sip2sip.info</contact>
144 50 Adrian Georgescu
    <note/>
145 50 Adrian Georgescu
    <timestamp>2012-09-21T12:53:57.802353+02:00</timestamp>
146 50 Adrian Georgescu
  </tuple>
147 50 Adrian Georgescu
  <dm:person xmlns:dm="urn:ietf:params:xml:ns:pidf:data-model" xmlns:rpid="urn:ietf:params:xml:ns:pidf:rpid" id="PID-5c82e1b170c9aa1a670c4388052657f2">
148 50 Adrian Georgescu
    <rpid:time-offset>120</rpid:time-offset>
149 50 Adrian Georgescu
    <dm:timestamp>2012-09-21T12:53:57.802353+02:00</dm:timestamp>
150 50 Adrian Georgescu
  </dm:person>
151 50 Adrian Georgescu
  <dm:device xmlns:dm="urn:ietf:params:xml:ns:pidf:data-model" id="DID-f4649f87-1aa3-44ec-ab49-d0464528d706">
152 50 Adrian Georgescu
    <dm:deviceID>f4649f87-1aa3-44ec-ab49-d0464528d706</dm:deviceID>
153 50 Adrian Georgescu
    <dm:note>Blink Pro 2.0.0 (MacOSX) at imac3-2</dm:note>
154 50 Adrian Georgescu
    <dm:timestamp>2012-09-21T12:53:57.802353+02:00</dm:timestamp>
155 50 Adrian Georgescu
  </dm:device>
156 50 Adrian Georgescu
</presence>
157 46 Adrian Georgescu
</pre>
158 46 Adrian Georgescu
159 10 Adrian Georgescu
h2. Subscribe To Presence
160 3 Adrian Georgescu
161 8 Adrian Georgescu
Using SIP SUBSCRIBE for RLS, Bink subscribes to the SIP addresses stored in rls-services document uploaded on the XCAP server by contacts management actions in the GUI (add/update/delete contacts).
162 1 Adrian Georgescu
 
163 10 Adrian Georgescu
h3. Presence Notifications
164 10 Adrian Georgescu
165 6 Adrian Georgescu
Presence information received from the SIP URIs as RLMI notifications from the RLS server is used to update each contact in the contacts list with:
166 1 Adrian Georgescu
167 53 Adrian Georgescu
 * Icon is fetched from the icon URL published by the user
168 1 Adrian Georgescu
 * Status icon overlaid on botton right of user icon, indicating away, busy, extended-away or available
169 1 Adrian Georgescu
 * Rectangular presence indicator on right side of the tile to provide a quick overview about availability
170 1 Adrian Georgescu
 * Presence note is rendered on second line, multiple notes and pending authorizations are rotated every 10 seconds
171 1 Adrian Georgescu
 * User icon is retrieved and updated when necessary from URL advertised by user 
172 2 Adrian Georgescu
173 2 Adrian Georgescu
Selecting  Show Presence Information menu item from contextual contact menu show a panel with detailed information, not all information may have been rendered in the GUI.
174 1 Adrian Georgescu
175 1 Adrian Georgescu
h2. Sessions
176 1 Adrian Georgescu
177 49 Adrian Georgescu
 * When subscribed to Presence, if information is received, the contextual menu of each contact is updated with the possibility of starting a session to a specific device if  the remote server and device uses GRUU.