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