JBoss.orgCommunity Documentation
The Mobicents SIP Presence Server is a free and open source implementation of a SIP Presence Server, as defined by the Internet Engineering Task Force (IETF), the Open Mobile Alliance (OMA), the 3rd Generation Partnership Project (3GPP) and the European Telecommunications Standards Institute (ETSI).
The SIP Presence Server is an entity that accepts, stores and distributes SIP presence information.
The SIP Presence Server is comprised of the following functional elements:
This functional element manages the publication of presence events, which includes not only the handling of new publications, but also the refreshing, modification or removal of, already-published information.
Because the presence resource, which is also called a presentity, can have multiple publications simultaneously, such as some state published by a user agent or device, and some location data published by a Presence Network Agent (on behalf of the presentity), this element is also responsible for composing all of the different publications for the same resource.
In some presence networks, it may be of interest to allow resources to have a static presence state which is stored in the XDM Server. In cases like these, Presence Publication Control may need to interface with the XDM Server to retrieve and subscribe to (learn about changes to) that information, and use it when composing the final presence information document.
This functional element handles subscriptions to presence events or to the list of subscribers (watchers), for any specific resource. It is, of course, responsible for emitting notifications related to those subscriptions.
Presence authorization rules, which define if a subscription is allowed or rejected and, if allowed, define which transformations to the original presence events are needed, are stored on the XDM Server by the user. Thus, Presence Subscription Control needs to retrieve and subscribe to that information.
This last element is responsible for interfacing with the XDM Server that manages the user's XML documents, and is related to the main functions of the presence server. It is capable not only of retrieving a document or part of one, but also of subscribing to either updates of a single, specific document, or to a full collection of documents of a specific type or application.
The implementation of the Mobicents SIP Presence Server comprises the following functional elements:
The Two Services Which Compose the SIP Presence Server
This JAIN SLEE service includes the root Service Building Block (SBB), PresencePublicationControlSbb
, which is the implementation of the abstract SIP event PublicationControlSbb
. It handles publications on the presence event package.
The PresencePublicationControlSbb
provides the following capabilities:
It provides the logic to authorize a publication; however, it only authorizes PUBLISH
requests when the request URI matches the PIDF document “entity” attribute.
It provides JAXB unmarshallers to validate and parse the PIDF document for the abstract PublicationControlSbb
.
It demands that notifying subscribers occur through a child relation to the root SBB of the Presence Subscription Control Service.
Finally, it also provides an SbbLocalObject
interface that can be used, in JAIN SLEE child relations, to obtain the composed presence information for a specific resource.
This JAIN SLEE service includes the root SBB PresenceSubscriptionControlSbb
, which is the implementation of the abstract SIP Event SubscriptionControlSbb
. It handles subscriptions on the “presence” event package.
The standout SBB logic item is the usage of presence-rules documents, obtained through the XDM Client SBB child relation, in order to authorize subscriptions and transform the content notified[2]. It also defines a child relation to the root SBB of PresencePublicationService
to retrieve the composed PIDF document for the subscription's notifier.
The SBB also provides an SbbLocalObject
interface that can be used, in JAIN SLEE child relations, to make the presence event known to the subscribers of a specific resource.
The implementation architecture of the SIP Presence Server also contains client-side components:
The PresenceClientSBB
is the interface to a JAIN SLEE SBB intended to be used as a client for the Mobicents SIP Presence Server (and other servers compliant with same standards), in JAIN SLEE child relations.
Two implementations of this interface are provided: the InternalPresenceClientSBB
that is used with applications running in the Mobicents SIP Presence Server JAIN SLEE container, and the ExternalPresenceClientSBB
, used with applications running in a different JAIN SLEE container than the Mobicents SIP Presence Server.
The Mobicents Resource List Server is currently tightly integrated with the Mobicents SIP Presence Server, supporting RFC 5367 and OMA service uri template.
TODO how to configure the SIP Publication and Subscription Interfaces
For further information on the Mobicents SIP Presence Server, see the following list of additional resources: