DesignBuddyList

Version 17 (Adrian Georgescu, 07/13/2009 05:48 pm)

1 2 Adrian Georgescu
= Buddy list =
2 2 Adrian Georgescu
3 2 Adrian Georgescu
[[TOC(Design*, depth=1)]]
4 1 Adrian Georgescu
5 14 Adrian Georgescu
This is a high level class that can be used to manage a buddy list driven interface of a SIP client graphical user interface. 
6 14 Adrian Georgescu
7 1 Adrian Georgescu
 * Account
8 1 Adrian Georgescu
 * Address-book
9 1 Adrian Georgescu
 * Buddy list
10 13 Adrian Georgescu
 * Presence watcher list
11 1 Adrian Georgescu
 * Presence rules
12 15 Adrian Georgescu
 * Dialog watcher list
13 1 Adrian Georgescu
 * Dialog rules
14 15 Adrian Georgescu
 * Icon exchange
15 1 Adrian Georgescu
16 1 Adrian Georgescu
== Account ==
17 1 Adrian Georgescu
18 17 Adrian Georgescu
On boot
19 17 Adrian Georgescu
20 1 Adrian Georgescu
 * GET XCAP documents xcap-caps, pres-rules, resource-lists, pidf-manipulation, rls-services, dialog-rules, icon, xcap-directory
21 17 Adrian Georgescu
 * Build current state based on pidf-manipulation document, if present
22 17 Adrian Georgescu
 * Send Publish for event presence
23 17 Adrian Georgescu
 * Send Subscribe for event presence.info
24 17 Adrian Georgescu
 * If rls-services present in xcap-caps, enable RLS and send Subscribe for event presence with Supported=eventlist
25 17 Adrian Georgescu
 * Send Subscribe for event dialog.info
26 17 Adrian Georgescu
 * Send Subscribe for event message-summary
27 17 Adrian Georgescu
 * Retrieve curent <icon> from the xcap server icon auid
28 1 Adrian Georgescu
29 17 Adrian Georgescu
While running
30 17 Adrian Georgescu
31 17 Adrian Georgescu
 * Refresh Publish for event presence
32 17 Adrian Georgescu
 * Refresh subscription to presence.info
33 17 Adrian Georgescu
 * Refresh subscription to dialog.info
34 17 Adrian Georgescu
 * Refresh subscription to message-summary
35 17 Adrian Georgescu
 * Maintain a '''Presentity''' attribute received in Notify for each buddy
36 17 Adrian Georgescu
 
37 1 Adrian Georgescu
== Address book ==
38 14 Adrian Georgescu
39 14 Adrian Georgescu
Use the OS standard address book
40 14 Adrian Georgescu
41 1 Adrian Georgescu
== Buddy list ==
42 1 Adrian Georgescu
43 17 Adrian Georgescu
Contains list of buddies. The buddylist is indexed by the SIP URI. Additional, one can store full names and other attributes. Based on NOTIFY for event=presence each buddy has a '''Presentity''' attribute that contains published information. GUI displays parts of it.
44 12 Adrian Georgescu
45 1 Adrian Georgescu
 * The buddy list is stored in the main resource-lists XCAP document '''index''' . 
46 12 Adrian Georgescu
 * If '''account.presence.subscribe_rls_services''' is true, a RLS document that contains a list of discrete SIP URIs we subscribe to is PUT on the server under SIP URI account-buddies@domain. Then a Subscribe is sent with Supported: eventlist for this SIP URI.
47 13 Adrian Georgescu
  
48 13 Adrian Georgescu
== Presence watcher lists ==
49 1 Adrian Georgescu
50 1 Adrian Georgescu
Built based on the body of NOTIFY for event=presence.winfo.
51 1 Adrian Georgescu
52 1 Adrian Georgescu
== Presence rules ==
53 1 Adrian Georgescu
54 1 Adrian Georgescu
Based on NOTIFY for event watcher.info we update the policy and PUT pres-rules document on the XCAP server.
55 15 Adrian Georgescu
56 15 Adrian Georgescu
== Dialog watcher lists ==
57 15 Adrian Georgescu
58 15 Adrian Georgescu
Built based on the body of NOTIFY for event=dialog.winfo. To be built in OpenSIPS.
59 12 Adrian Georgescu
60 12 Adrian Georgescu
== Dialog rules ==
61 15 Adrian Georgescu
62 4 Adrian Georgescu
Based on NOTIFY for event dialog.info we update the policy and PUT dialog-rules document on the XCAP server. To be built in OpenXCAP server.
63 15 Adrian Georgescu
64 4 Adrian Georgescu
== Icon exhange ==
65 11 Adrian Georgescu
66 11 Adrian Georgescu
Support in OpenXCAP server is necessary, see http://openxcap.org/ticket/100
67 9 Adrian Georgescu
68 1 Adrian Georgescu
Publishing end-point, on change:
69 9 Adrian Georgescu
70 9 Adrian Georgescu
 1. Generate a random filename: XYZ
71 9 Adrian Georgescu
 1. Build URL http://xcap.example.com/xcap-root/icon/users/sip:alice@example.com/XYZ.png
72 9 Adrian Georgescu
 1. HTTP PUT to xcap server
73 9 Adrian Georgescu
 1. Update <icon> element of pidf and PUBLISH new pidf
74 9 Adrian Georgescu
 1. HTTP GET for xcap-directory and locate previously uploaded icons
75 1 Adrian Georgescu
 1. HTTP DELETE any previous icon files
76 9 Adrian Georgescu
77 1 Adrian Georgescu
On reboot:
78 9 Adrian Georgescu
79 9 Adrian Georgescu
 1. HTTP GET for xcap-directory and locate previously uploaded icon (e.g. XYZ)
80 1 Adrian Georgescu
 1. HTTP GET http://xcap.example.com/xcap-root/icon/users/sip:alice@example.com/XYZ.png
81 9 Adrian Georgescu
82 9 Adrian Georgescu
Subscribing end-point:
83 9 Adrian Georgescu
84 9 Adrian Georgescu
 1. Parse <icon> element of pidf received in Notify
85 9 Adrian Georgescu
 2. HTTP GET http://xcap.example.com/xcap-root/icon/users/sip:alice@example.com/XYZ.png
86 1 Adrian Georgescu
 3. Cache picture and check periodically