Project

General

Profile

Presence » History » Revision 52

Revision 51 (Adrian Georgescu, 09/21/2012 01:04 PM) → Revision 52/63 (Adrian Georgescu, 09/21/2012 01:04 PM)

h1. Presence 

 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. 

 h2. Design Principles 

  * Blink should work with any SIP and XCAP servers that supports SIP SIMPLE standards 
  * Blink uses only TCP or TLS transports for signaling 
  * Blink presence payload is based on "RPID schema":http://tools.ietf.org/html/rfc4480 
  * Blink relies on a Presence Agent collocated with the SIP Registrar that supports PUBLISH method and XCAP storage 
  * Presence Agent must support handling of presence rules using org.openmobilealliance.pres-rules XCAP document 
  * Presence Agent must support external references from rls-services to resource-lists 
  * Presence Agent must support external references from rls-services to    org.openmobilealliance.pres-rules 
  * Presence Agent must support presence and presence.winfo event packages 
  * Presence Agent may support xcap-diff event package for XCAP documents replication between clients 
  * Presence Agent must support RLS subscriptions and "RLMI notifications":http://tools.ietf.org/html/rfc4662 
  * SIP Registrar may support GRUU 
  * 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 
  * XCAP server may support pidf-manipulation for offline status 


 h3. Standards 

 http://sipsimpleclient.com/projects/sipsimpleclient/wiki/SipFeatures#Presence 

 h3. Disclaimer 

 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. 

 h3. Interoperability 

 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. 

 We can provide support, if you encounter interoperability issues with any the following products and services against which Blink has been fully tested: 

  * SIP2SIP.info (a public free SIP service) 
  * Interoperability with XMPP domains (using SylkServer SIP/XMPP gateway) 
  * OpenSIPS/OpenXCAP combination (server software you can run on your premisses) 

 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. 

 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. 

 h3. Support 

 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. 

 h2. Contacts 

 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: 

  * Subscribe to Contact's Presence Information 
  * Allow Contact to see my Presence Information 
  * 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. 

 h2. Watcher Information 

 Using SUBSCRIBE for presence.winfo event package, Blink keeps track of presence watchers and their status. 
 
  * 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. 
  * Active watchers are shown in Status -> People Watching    My Presence Activity menu 

 h2. Published Presence 

 Using PUBLISH method for presence event package, the following information is published by Blink: 

 h3. Basic Status 

 Open or closed. 

 h3. Extended Status 

 Blink uses a proprietary extension for indicating the extented status compatible with XMPP end-points.  

 h3. Location 

 Location is based on CIPID map extension. Location can be disabled per account in Presence section of account preferences. 

 h3. Homepage 

 A home page can be entered in Presence section of account preferences. Homepage is based on CIPID homepage extension. 

 h3. 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. 

 h3. Status 

 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.  

 h3. Icon 

 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. 

 h3. 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. 

 h3. Media Capabilities 

 Type of media supported by the end-point. 

 h3. Device Information 

 The following information is published: 

  * Hostname 
  * Time offset 
  * Idle status 
  * GRUU contact address 

 

 h3. Payload Example 

 <pre> 
 Content-Type: application/pidf+xml 

 <?xml version="1.0"?> 
 <presence xmlns="urn:ietf:params:xml:ns:pidf" entity="sip:ag@test.sip2sip.info"> 
   <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"> 
     <status> 
       <basic>open</basic> 
       <agp-pidf:extended>away</agp-pidf:extended> 
     </status> 
     <c:display-name>Adrian Georgescu</c:display-name> 
     <c:map>Netherlands/Haarlem</c:map> 
     <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> 
     <c:homepage>http%3A//georgescu.info</c:homepage> 
     <agp-pidf:device-info id="f4649f87-1aa3-44ec-ab49-d0464528d706"> 
       <agp-pidf:description>imac3-2</agp-pidf:description> 
       <agp-pidf:user-agent>Blink Pro 2.0.0 (MacOSX)</agp-pidf:user-agent> 
       <agp-pidf:time-offset>120</agp-pidf:time-offset> 
     </agp-pidf:device-info> 
     <caps:servcaps> 
       <caps:audio>true</caps:audio> 
       <caps:message>true</caps:message> 
       <caps:text>true</caps:text> 
       <agp-caps:file-transfer>true</agp-caps:file-transfer> 
       <agp-caps:screen-sharing>true</agp-caps:screen-sharing> 
     </caps:servcaps> 
     <rpid:user-input idle-threshold="600">active</rpid:user-input> 
     <dm:deviceID>f4649f87-1aa3-44ec-ab49-d0464528d706</dm:deviceID> 
     <contact>sip%3Aag%40test.sip2sip.info</contact> 
     <note/> 
     <timestamp>2012-09-21T12:53:57.802353+02:00</timestamp> 
   </tuple> 
   <dm:person xmlns:dm="urn:ietf:params:xml:ns:pidf:data-model" xmlns:rpid="urn:ietf:params:xml:ns:pidf:rpid" id="PID-5c82e1b170c9aa1a670c4388052657f2"> 
     <rpid:time-offset>120</rpid:time-offset> 
     <dm:timestamp>2012-09-21T12:53:57.802353+02:00</dm:timestamp> 
   </dm:person> 
   <dm:device xmlns:dm="urn:ietf:params:xml:ns:pidf:data-model" id="DID-f4649f87-1aa3-44ec-ab49-d0464528d706"> 
     <dm:deviceID>f4649f87-1aa3-44ec-ab49-d0464528d706</dm:deviceID> 
     <dm:note>Blink Pro 2.0.0 (MacOSX) at imac3-2</dm:note> 
     <dm:timestamp>2012-09-21T12:53:57.802353+02:00</dm:timestamp> 
   </dm:device> 
 </presence> 
 </pre> 

 

 h2. Subscribe To Presence 

 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). 
 
 h3. Presence Notifications 

 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: 

  * Status icon overlaid on botton right of user icon, indicating away, busy, extended-away or available 
  * Rectangular presence indicator on right side of the tile to provide a quick overview about availability 
  * Presence note is rendered on second line, multiple notes and pending authorizations are rotated every 10 seconds 
  * User icon is retrieved and updated when necessary from URL advertised by user  

 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. 

 h2. Sessions 

  * 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.