[OpenSIPS-Users] SIP Presence Aggregation Issue

Schumann Sebastian Sebastian.Schumann at t-com.sk
Thu Apr 1 13:59:43 CEST 2010


Hi

I think the topic touches client-side implementations more. On the server-side, it is the best to distribute all information and leave it up to the client to interpret it. This is also how XMPP does it.

> -----Original Message-----
> From: users-bounces at lists.opensips.org [mailto:users-
> bounces at lists.opensips.org] On Behalf Of Saúl Ibarra Corretgé
> Sent: Thursday, 01. April 2010 13:30
> To: OpenSIPS users mailling list
> Subject: Re: [OpenSIPS-Users] SIP Presence Aggregation Issue
> 
> Hi Anca,
> 
> On 1/4/10 10:02 AM, Anca Vamanu wrote:
> > Hi all,
> >
> > This mail is a request for your comments about presence aggregation.
> > What is your opinion about this? Do you consider it to be a real problem
> > and which could be the solutions?
> >
> > Although it is possible to have more clients registering for the same
> > account and publishing presence information, there are not so many
> > clients ( none that I know of in fact ) that are able to show more than
> > one presence state per buddy. So, even if the presence server does
> > aggregate all the presence information for a contact and sends it to its
> > watchers, they will see only one presence state, most likely the one in
> > the top most record.
> 
> I think this happens because of how SIMPLE was initially designed. The
> presence status is undefined if different UAs provide different
> information. XMPP uses the concept of a resource, and each one has a
> different state. XMPP clients do aggregate the presence status by
> setting it to the most 'restrictive' one (if you are online + away your
> global state is away). But still, you're able to see each resources
> presence.

Talking about XMPP resources, the "overall" state shown by the program is also determined by it itself.

The difference to SIP is that the client has the states and priorities from all resources available. Usually, the highest resource is responsible for the overall state shown by the client (e.g., one resource priority 10 online, another one resource priority 20 away: User state indicated by client is away (orange buddy icon)).  It is however usually still possible to get the states from all resources that are not invisible.

The difference is that the full JID distributes the state of one presence source. Multiple clients, multiple full JIDs, multiple presence states with different priorities. The actual implementation shows the overall state of the bare JID usually in the buddy list.

SIP has only the URI (w/o indicating or differing between the endpoints) in the PIDF <presence> element. 

However, you can put more information inside the element: <contact>s and priorities could be used to determine the "highest" prioritized SIP endpoint for communication. RPID and DM could further separate several SIP endpoints. Two things are required: SIP clients need to publish all this information and they need to interpret it and generate the overall acc. to it in the buddy list.

The problem is that for e.g., the case in RFC 3863 (4.3.1) fixed states set (e.g., permanent mail set with XCAP pidf-manipulation) could have a higher priority than automatic states. The example shows mail over IM contact (as IM device is busy). The correct derivation is that the user wants to be contacted by mail preferably and so far correct. However, I would consider it not wanted by the user to show him available in the buddy list (because usually a double click would start IM then and not mail). But this would be wrong acc. priorities...

Summarizing, I think if the clients provide correctly published information, it is up to the presence server to distribute it and the client to interpret it. This is my understanding in XMPP and should be similar in SIP.

Sebastian 


More information about the Users mailing list