Presence

Version 60 (Adrian Georgescu, 02/20/2013 12:05 pm)

1 1 Adrian Georgescu
h1. Presence
2 1 Adrian Georgescu
3 60 Adrian Georgescu
Presence functionality is available starting with "Blink Pro":http://itunes.apple.com/us/app/blink-pro/id404360415?mt=12&ls=1 2.0.2 and "Blink Lite":https://itunes.apple.com/us/app/blink-pro/id431473881?mt=12&ls=1 2.0.2 for MacOSX and is scheduled for Blink-Qt for Windows and Linux future releases. 
4 1 Adrian Georgescu
5 60 Adrian Georgescu
h2. Live Service
6 60 Adrian Georgescu
7 60 Adrian Georgescu
Presence is a complex issue and the mechanisms used internally by Blink may not necessarily work with your own SIP server. If you want to troubleshot when things do not work as expected, first use the built-in Blink accounts provided by http://SIP2SIP.info that is known to be working to work with Blink. 
8 60 Adrian Georgescu
9 60 Adrian Georgescu
h2. Server Compatibility
10 60 Adrian Georgescu
11 60 Adrian Georgescu
Presence is a complex issue and the mechanisms used internally by Blink may not necessarily work under any SIP server environment. This document was written to provide a better understanding of these mechanisms. Presence require proper infrastructure that many SIP service providers simply lack today, so do not complain to us when Presence does not work with your SIP service provider.
12 60 Adrian Georgescu
13 60 Adrian Georgescu
OpenSIPS 1.9.0 and OpenXCAP 2.1.0 server software has been tested and is 100% compatible with Blink:
14 60 Adrian Georgescu
15 1 Adrian Georgescu
h2. Design Principles
16 1 Adrian Georgescu
17 60 Adrian Georgescu
Blink should work with any SIP and XCAP servers that supports all related SIP SIMPLE standards, but only a subset of them are being used. They are described below:
18 40 Adrian Georgescu
19 60 Adrian Georgescu
 * Blink relies on a Presence Agent collocated with the SIP Registrar that supports PUBLISH method, RLS subscriptions and XCAP storage
20 60 Adrian Georgescu
 * Blink uses only TCP or TLS transports for signaling, Presence Agent must use TCP/TLS
21 60 Adrian Georgescu
 * Presence Agent must support RLS subscriptions and "RLMI notifications":http://tools.ietf.org/html/rfc4662
22 40 Adrian Georgescu
 * Presence Agent must support handling of presence rules using org.openmobilealliance.pres-rules XCAP document
23 60 Adrian Georgescu
 * Presence Agent must support external references from rls-services to resource-lists XCAP documents
24 60 Adrian Georgescu
 * Presence Agent must support external references from rls-services to org.openmobilealliance.pres-rules  XCAP document
25 1 Adrian Georgescu
 * Presence Agent must support presence and presence.winfo event packages
26 1 Adrian Georgescu
 * Presence Agent may support xcap-diff event package for XCAP documents replication between clients
27 1 Adrian Georgescu
 * SIP Registrar may support GRUU
28 60 Adrian Georgescu
 * XCAP server must support rls-services, resource-lists, xcap-caps, org.openmobilealliance.pres-content, org.openmobilealliance.pres-rules, org.openmobilealliance.xcap-directory
29 1 Adrian Georgescu
 * XCAP server may support serving the user icon from org.openmobilealliance.pres-content document
30 1 Adrian Georgescu
 * XCAP server may support pidf-manipulation for offline status
31 1 Adrian Georgescu
32 60 Adrian Georgescu
Blink presence payload is based on "RPID schema":http://tools.ietf.org/html/rfc4480 with its extensions for "media capabilities":http://tools.ietf.org/html/rfc5196 and "person information":http://tools.ietf.org/html/rfc4480
33 1 Adrian Georgescu
34 60 Adrian Georgescu
In the GUI, presence has been indicated as 'Availability'.
35 60 Adrian Georgescu
36 1 Adrian Georgescu
h3. Standards
37 1 Adrian Georgescu
38 60 Adrian Georgescu
Blink presence functionality should interoperate without any issues with any other SIP client or SIP server implementing presence as far as the SIP signaling is concerned (PUBLISH, SUBSCRIBE and NOTFY methods). Blink functionality would however not interoperate for contacts storage level with other SIP clients under the same account due to the freedom allowed by the standards in modeling the data used for contacts storage. Blink will preserve contacts related information that it did not create itself 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.
39 1 Adrian Georgescu
40 60 Adrian Georgescu
"List of implemented standards":http://sipsimpleclient.org/projects/sipsimpleclient/wiki/SipFeatures#Presence
41 1 Adrian Georgescu
42 60 Adrian Georgescu
h2. Contacts Storage
43 1 Adrian Georgescu
44 60 Adrian Georgescu
Contacts are stored on the XCAP server in the [[XCAP-samples#Resource-lists|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 document are then used by [[XCAP-samples#RLS-services|rls-services]] and [[XCAP-samples#Presence-rules|pres-rules]] XCAP documents standardized by OMA. Each contacts have two presence related properties that can changed in Edit Contact Panel Subscriptions section:
45 50 Adrian Georgescu
46 60 Adrian Georgescu
 * Subscribe to Contact's Availability Information
47 60 Adrian Georgescu
 * Allow Contact to see my Availability Information
48 50 Adrian Georgescu
49 60 Adrian Georgescu
If a SIP URI part of the Contact is labelled as XMPP, when using a SIP2SIP.info account, new session requests will be automatically forwarded to the XMPP domain using the built-in SIP to XMPP gateway provided by SIP2SIP service.
50 50 Adrian Georgescu
51 60 Adrian Georgescu
h3. Subscribe To Presence
52 50 Adrian Georgescu
53 60 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).
54 60 Adrian Georgescu
 
55 60 Adrian Georgescu
h2. Policy Management
56 50 Adrian Georgescu
57 60 Adrian Georgescu
Policy is used to express user preference about whether somebody that subscribed to our presence information is entitled to receive such information or not. 
58 50 Adrian Georgescu
59 60 Adrian Georgescu
Using SUBSCRIBE for presence.winfo event package, Blink keeps track of watchers subscribed to our presence.
60 50 Adrian Georgescu
 
61 60 Adrian Georgescu
 * New watchers that subscribed to our presence are rendered in the 'New Contact Requests' group that is rendered on top of the contacts list
62 60 Adrian Georgescu
 * Right clicking on a new request entry, provides a contextual menu to block or add the contacts to the contacts list
63 60 Adrian Georgescu
 * Dragging the request entry to an existing contact will merge the address of the request entry with the destination contact 
64 60 Adrian Georgescu
 * Blocked contacts are displayed in the Blocked group
65 60 Adrian Georgescu
 * Active watchers are shown in system menu Blink -> Subscribers for My Availability
66 50 Adrian Georgescu
67 50 Adrian Georgescu
h2. Published Presence
68 46 Adrian Georgescu
69 60 Adrian Georgescu
Blink user can publish a status and a note. Sometimes, Blink itself can change the status automatically, in situations when we do not perform any computer activity for a longer period or we start a phone call.
70 10 Adrian Georgescu
71 60 Adrian Georgescu
Presence status can be changed manually 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. 
72 8 Adrian Georgescu
73 60 Adrian Georgescu
Status and note are automatically synchronized between multiple Blink instances under the same account.
74 10 Adrian Georgescu
75 60 Adrian Georgescu
Using PUBLISH method for the presence event package, the following information is published in a [[XCAP-samples#PIDF|PIDF]] document by Blink:
76 6 Adrian Georgescu
77 60 Adrian Georgescu
 * Basic Status: Open or closed
78 60 Adrian Georgescu
 * Extended Status: Blink uses a proprietary extension for indicating the extented status compatible with XMPP end-points
79 60 Adrian Georgescu
 * Location: Location is based on CIPID map extension. Location can be disabled per account in Presence section of account preferences. Location is available only for accounts provided by sip2sip.info account. The format is a string Country/City.
80 60 Adrian Georgescu
 * Homepage: A home page can be entered in Presence section of account preferences. Homepage is based on CIPID homepage extension
81 60 Adrian Georgescu
 * Note: Presence note can be typed in the text area right to own icon in the main GUI window. Note is attached to the service
82 60 Adrian Georgescu
 * Icon: User own icon is uploaded to XCAP server using OMA pres-content application, replicated among multiple Blink instances and location of icon storage URL on XCAP server is published in the PIDF
83 60 Adrian Georgescu
 * Offline Presence: 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, if supported by the XCAP server
84 60 Adrian Georgescu
 * Media Capabilities: Type of media supported by the end-point
85 60 Adrian Georgescu
 * Device Information: The following information is published: Hostname, Time offset, Idle status and GRUU contact address
86 1 Adrian Georgescu
87 1 Adrian Georgescu
h3. Presence Notifications
88 49 Adrian Georgescu
89 1 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:
90 1 Adrian Georgescu
91 1 Adrian Georgescu
 * Status icon overlaid on botton right of user icon, indicating away, busy, extended-away or available
92 1 Adrian Georgescu
 * Rectangular presence indicator on right side of the tile to provide a quick overview about availability
93 1 Adrian Georgescu
 * Presence note is rendered on second line, multiple notes and pending authorizations are rotated every 10 seconds
94 60 Adrian Georgescu
 * Icon is fetched from the icon URL published by the user
95 60 Adrian Georgescu
 * User icon is retrieved and updated when necessary from URL advertised by user
96 1 Adrian Georgescu
97 1 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.
98 1 Adrian Georgescu
99 1 Adrian Georgescu
h2. Sessions
100 1 Adrian Georgescu
101 1 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.