Project

General

Profile

DesignBuddyList » History » Version 47

Adrian Georgescu, 08/04/2009 06:16 PM

1 27 Adrian Georgescu
= Presence blueprint =
2 2 Adrian Georgescu
3
[[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
 * Icon exchange
12 41 Adrian Georgescu
 * Preferences
13 1 Adrian Georgescu
14
== Account ==
15
16
On boot
17 25 Adrian Georgescu
18 44 Adrian Georgescu
If presence enabled
19
20
 * 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
 * GET XCAP application xcap-caps
24
 * GET the default filename for all applications supported in xcap-caps and cache them locally
25 47 Adrian Georgescu
 * If '''pidf-manipulation''' application is supported, update the '''presentity''' with it
26 39 Adrian Georgescu
 * Send PUBLISH for '''Event: presence'''
27 47 Adrian Georgescu
 * Initialize '''Contacts''' using the content of the XCAP document '''resource-lists'''
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
31
While running
32 25 Adrian Georgescu
33 26 Adrian Georgescu
 * Refresh XCAP server location based on DNS TTL
34
 * Refresh PUBLISH for event '''presence'''
35
 * Refresh SUBSCRIBE to '''presence.winfo'''
36 29 Adrian Georgescu
 * Refresh SUBSCRIBE to '''xcap-diff'''
37 1 Adrian Georgescu
 * Refresh SUBSCRIBE to '''message-summary'''
38 30 Adrian Georgescu
 * Reload XCAP documents based on '''xcap-diff''' NOTIFYs
39 1 Adrian Georgescu
40 47 Adrian Georgescu
== Contacts ==
41 1 Adrian Georgescu
42
[[Image(BuddyList-Aggregation.png)]]
43
44 47 Adrian Georgescu
Contains is a list of contacts displayed in a GUI. For some contacts we SUBSCRIBE for '''Event: presence'''. The 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. 
45 43 Adrian Georgescu
46 47 Adrian Georgescu
Additional, one can store full names and other attributes for each contact by using extensions to PIDF for contact information. 
47
48
Based on received NOTIFY messages for Event=presence, each contact has a '''presentity''' attribute that contains its own published information. The GUI can display attributes of each '''presentity'''.
49
50 41 Adrian Georgescu
 * The contacts list is stored in the main '''resource-lists''' XCAP document '''index'''
51
 * Maintain a '''presentity''' attribute with what is received in the Notify for each contact
52
 * 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''' 
53
 * On contacts list change, PUT resource-lists and rls-services documents on the XCAP server
54 37 Adrian Georgescu
 
55 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
56 28 Adrian Georgescu
 
57 47 Adrian Georgescu
== Watcher lists ==
58 15 Adrian Georgescu
59 1 Adrian Georgescu
Built based on the body of NOTIFY for '''Event=presence.winfo'''.
60 28 Adrian Georgescu
61 1 Adrian Georgescu
== Presence rules ==
62
63
 * Based on NOTIFY for event '''watcher.info''' we update the policy
64 28 Adrian Georgescu
 * PUT '''pres-rules''' document on the XCAP server and cache locally
65 1 Adrian Georgescu
66 9 Adrian Georgescu
== Icon exhange ==
67 1 Adrian Georgescu
68 35 Adrian Georgescu
There is how OMA has specified such XCAP application: 
69 1 Adrian Georgescu
70 35 Adrian Georgescu
'"Presence Content XDM Specification'"
71 36 Adrian Georgescu
72 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
73 33 Adrian Georgescu
74 1 Adrian Georgescu
Support in OpenXCAP server is necessary, see http://openxcap.org/ticket/100
75 9 Adrian Georgescu
76 26 Adrian Georgescu
Publishing end-point, on boot:
77 32 Adrian Georgescu
78
 1. HTTP GET for xcap-directory and locate previously uploaded icon (e.g. ABC)
79 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
80 32 Adrian Georgescu
81 1 Adrian Georgescu
Publishing end-point, on change:
82
83
 1. Generate a new random filename: XYZ
84
 1. Build URL http://xcap.example.com/xcap-root/org.openmobilealliance.pres-content/users/sip:alice@example.com/oma_status-icon/XYZ
85
 1. HTTP PUT to xcap server
86 9 Adrian Georgescu
 1. Update <icon> element of pidf and PUBLISH new pidf
87 1 Adrian Georgescu
 1. HTTP DELETE any previous icon file ABC
88 32 Adrian Georgescu
89 9 Adrian Georgescu
Subscribing end-point:
90 1 Adrian Georgescu
91 32 Adrian Georgescu
 1. Parse <icon> element of pidf received in Notify
92 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
93
 3. Cache picture until next NOTIFY with diferent <icon> element is received
94 41 Adrian Georgescu
95
== Preferences ==
96
97
Managed the policy dependent on the Group the Watcher is in the Contact list.