DesignBuddyList

Version 46 (Adrian Georgescu, 08/04/2009 06:13 pm)

1 27 Adrian Georgescu
= Presence blueprint =
2 2 Adrian Georgescu
3 2 Adrian Georgescu
[[TOC(Design*, depth=1)]]
4 1 Adrian Georgescu
5 46 Adrian Georgescu
This is a high level representation of a mechanism that maintains a '''Contacts list''' that can be used by a GUI.  It implements a combination of SIP SIMPLE standards related to presence event package, storage and policy.
6 14 Adrian Georgescu
7 1 Adrian Georgescu
 * Account
8 41 Adrian Georgescu
 * Contacts
9 44 Adrian Georgescu
 * Watcher list
10 1 Adrian Georgescu
 * Presence rules
11 1 Adrian Georgescu
 * Icon exchange
12 41 Adrian Georgescu
 * Preferences
13 1 Adrian Georgescu
14 1 Adrian Georgescu
== Account ==
15 1 Adrian Georgescu
16 1 Adrian Georgescu
On boot
17 25 Adrian Georgescu
18 44 Adrian Georgescu
If presence enabled
19 44 Adrian Georgescu
20 44 Adrian Georgescu
 * Initialize our own '''presentity''' 
21 40 Adrian Georgescu
 * Initialize the '''watchers list'''
22 44 Adrian Georgescu
 * If '''account.presence.xcap_root''' is not defined, locate XCAP root by doing a DNS TXT lookup for xcap.example.com
23 44 Adrian Georgescu
 * GET XCAP application xcap-caps
24 44 Adrian Georgescu
 * GET the default filename for all applications supported in xcap-caps and cache them locally
25 44 Adrian Georgescu
 * If '''pidf-manipulation''' application is supported by XCAP server, update the '''presentity''' with '''pidf-manipulation''' document
26 39 Adrian Georgescu
 * Send PUBLISH for '''Event: presence'''
27 41 Adrian Georgescu
 * Initialize '''Contacts''' using XCAP documents
28 25 Adrian Georgescu
 * If '''account.message_summary.enabled''' SUBSCRIBE for '''Event: message-summary'''
29 1 Adrian Georgescu
 * If '''account.presence.subscribe_xcap_diff.enabled''' SUBSCRIBE for '''Event: xcap-diff'''
30 1 Adrian Georgescu
31 1 Adrian Georgescu
While running
32 25 Adrian Georgescu
33 26 Adrian Georgescu
 * Refresh XCAP server location based on DNS TTL
34 26 Adrian Georgescu
 * Refresh PUBLISH for event '''presence'''
35 26 Adrian Georgescu
 * Refresh SUBSCRIBE to '''presence.winfo'''
36 29 Adrian Georgescu
 * Refresh SUBSCRIBE to '''xcap-diff'''
37 1 Adrian Georgescu
 * Refresh SUBSCRIBE to '''message-summary'''
38 1 Adrian Georgescu
 * Reload XCAP documents based on '''xcap-diff''' NOTIFYs
39 30 Adrian Georgescu
 * Update '''presentity''' based on GUI actions or automatic sensors and cache it
40 1 Adrian Georgescu
41 1 Adrian Georgescu
Long term state
42 1 Adrian Georgescu
43 1 Adrian Georgescu
 * Update '''pidf-manipulation document''' and '''presentity'''
44 1 Adrian Georgescu
  
45 1 Adrian Georgescu
== Contacts list ==
46 43 Adrian Georgescu
47 43 Adrian Georgescu
[[Image(BuddyList-Aggregation.png)]]
48 28 Adrian Georgescu
49 44 Adrian Georgescu
Contains a list of contacts displayed in a GUI, for some contacts we SUBSCRIBE to for '''Event: presence'''. The contacts list is indexed by a unique SIP URI, a random SIP URI must be generated for contacts that do not have a SIP URI and we must mark the contacts that we want to subscribe to. Additional, one can store full names and other attributes for each contact by using extensions to pidf for contact information. Based on NOTIFY for Event=presence each contact has a '''presentity''' attribute that contains its published information. The GUI displays various attributes of each '''presentity'''.
50 39 Adrian Georgescu
51 41 Adrian Georgescu
 * The contacts list is stored in the main '''resource-lists''' XCAP document '''index'''
52 41 Adrian Georgescu
 * Maintain a '''presentity''' attribute with what is received in the Notify for each contact
53 41 Adrian Georgescu
 * If '''account.presence.subscribe_rls_services''' is true, a RLS document that contains a list of discrete SIP URIs we subscribe to and PUT it on the server under SIP URI account-buddies@domain. Then a Subscribe is sent with Supported: eventlist for this SIP URI. /otherwise send SUBSCRIBVE to each contact for '''Event: presence''' 
54 41 Adrian Georgescu
 * On contacts list change, PUT resource-lists and rls-services documents on the XCAP server
55 37 Adrian Georgescu
 
56 41 Adrian Georgescu
A contact has properties related to his device capabilities (e.g. can_chat, can_share, can_talk, can_video). This is conveyed via '''presence caps''' and updates the preferences set by the local user
57 28 Adrian Georgescu
 
58 15 Adrian Georgescu
== Presence watcher lists ==
59 15 Adrian Georgescu
60 1 Adrian Georgescu
Built based on the body of NOTIFY for '''Event=presence.winfo'''.
61 28 Adrian Georgescu
62 1 Adrian Georgescu
== Presence rules ==
63 1 Adrian Georgescu
64 1 Adrian Georgescu
 * Based on NOTIFY for event '''watcher.info''' we update the policy
65 28 Adrian Georgescu
 * PUT '''pres-rules''' document on the XCAP server and cache locally
66 1 Adrian Georgescu
67 9 Adrian Georgescu
== Icon exhange ==
68 1 Adrian Georgescu
69 35 Adrian Georgescu
There is how OMA has specified such XCAP application: 
70 1 Adrian Georgescu
71 35 Adrian Georgescu
'"Presence Content XDM Specification'"
72 36 Adrian Georgescu
73 35 Adrian Georgescu
http://www.openmobilealliance.org/technical/release_program/docs/PresenceSIMPLE/V2_0-20081223-C/OMA-TS-Presence_SIMPLE_Content_XDM-V1_0-20081223-C.pdf
74 33 Adrian Georgescu
75 1 Adrian Georgescu
Support in OpenXCAP server is necessary, see http://openxcap.org/ticket/100
76 9 Adrian Georgescu
77 26 Adrian Georgescu
Publishing end-point, on boot:
78 32 Adrian Georgescu
79 32 Adrian Georgescu
 1. HTTP GET for xcap-directory and locate previously uploaded icon (e.g. ABC)
80 26 Adrian Georgescu
 1. HTTP GET http://xcap.example.com/xcap-root/org.openmobilealliance.pres-content/users/sip:alice@example.com/oma_status-icon/ABC
81 32 Adrian Georgescu
82 1 Adrian Georgescu
Publishing end-point, on change:
83 1 Adrian Georgescu
84 1 Adrian Georgescu
 1. Generate a new random filename: XYZ
85 1 Adrian Georgescu
 1. Build URL http://xcap.example.com/xcap-root/org.openmobilealliance.pres-content/users/sip:alice@example.com/oma_status-icon/XYZ
86 1 Adrian Georgescu
 1. HTTP PUT to xcap server
87 9 Adrian Georgescu
 1. Update <icon> element of pidf and PUBLISH new pidf
88 1 Adrian Georgescu
 1. HTTP DELETE any previous icon file ABC
89 32 Adrian Georgescu
90 9 Adrian Georgescu
Subscribing end-point:
91 1 Adrian Georgescu
92 32 Adrian Georgescu
 1. Parse <icon> element of pidf received in Notify
93 9 Adrian Georgescu
 2. HTTP GET http://xcap.example.com/xcap-root/org.openmobilealliance.pres-content/users/sip:alice@example.com/oma_status-icon/XYZ
94 9 Adrian Georgescu
 3. Cache picture until next NOTIFY with diferent <icon> element is received
95 41 Adrian Georgescu
96 41 Adrian Georgescu
== Preferences ==
97 41 Adrian Georgescu
98 41 Adrian Georgescu
Managed the policy dependent on the Group the Watcher is in the Contact list.