The present invention relates to the field of presence information handling, and, more particularly, to using presence proxies to group presence notifications.
A conventional presence server is a physical entity that centrally manages presence information for a set of users and devices to which other users and devices can subscribe.
One or more clients 120 can utilize a series of watchers 132-136 to subscribe to the presence server 120. Each watcher 132-136 typically corresponds to a particular presentity, such as Presentity A, Presentity B, and Presentity C. When client 130 desires current presence information for Presentity A, a watcher 132 will be established that subscribes to presence information related to Presentity A. Each client 130 can utilize multiple watchers 132-136 to receive presence information for different presentities 112. Multiple clients 130 can concurrently establish different subscriptions for the same presentity 112. Each concurrent subscription with the presence server 120 can increase a load on the server 120. That is, programmatic actions are required by the presence server 120 for each subscription and notification event, which taken together can be CPU and network intensive. Because load on the presence server 120 increases as a number of client 130 subscriptions increases, system 100 can generally have scaling difficulties.
There are shown in the drawings, embodiments which are presently preferred, it being understood, however, that the invention is not limited to the precise arrangements and instrumentalities shown.
As used herein, each client 220, 222, 224 can provide presence information to the presence server 240 and/or can receive presence information from the presence server 240 related to other clients 220, 222, 224. Communication nodes (e.g., clients 220, 222, 224) that convey presence information to the server 220 can each include presentity 215, 217, 227 and one or more presence user agents (PUA) 216, 218, 228. The presentity 215, 217, 227 can provide presence information to a presence service. The presentity 215, 217, 227 can be used to model a presence being exposed and is independent of its manifestation in any user interlace. In practice, the presentity 215, 217, 227 typically is used to uniquely identify a person.
Each PUA 216, 218, 228 can be a means for a principle to manipulate zero or more presentities 212, where a principle is a human, a program, or a collection of users or programs that choose to appear to a presence service (provided by the presence server 240) as a single unique actor distinct from other principles. Typically, the PUA 216, 218, 228 can be a computer, mobile telephone, a mobile computing device, SIP phone, two-way radio, personal data assistant, a client application (e.g., an IM application, a softphone application, etc.) or other computing device that is used by the presentity 215, 217, 227. That is, the presentity 215, 217, 227 can use the PUA 216, 218, 228, which publishes information to the presence server 240 or proxy 230, 234, 237 and/or which registers with the presence server 240 or proxy 230, 234, 237.
The presence server 240 can collect, manage, store, and distribute presence information regarding the access, availability, and willingness to communicate with other users. The presence server 240 can enable the extension of various telecommunication service provider applications and services to include collaboration information and how best to reach people. That is, the presence server 240 provides one or more presence services.
In one embodiment, the presence server 240 can be a stand-alone, carrier-grade, IP Multimedia Subsystem (IMS) compliant server, and the like. In another embodiment, 240 a cluster of servers can be linked to create a single virtual presence server 240. Additionally, the presence server 240 can support standard presence information data format (PIDF) and rich presence information data (RPID). Communications with the presence server 240 can be based on Session Initiation Protocol (SIP) and can conform to Internet Engineering Task Force (IETF) specifications for PUBLISH, SUBSCRIBE, and NOTIFY. Numerous commercial solutions can function as presence servers 240 including, but not limited to the WEBSPHERE presence server, CISCO unified presence server, ORACLE presence server, MICROSOFT OFFICE LIVE COMMUNICATION SERVER, and the like.
The presence proxy 230, 234, 237, can convey PUBLISH requests from clients 220, 222, 224 to the presence server 240 that functions as a presence agent. The presence proxy 230, 234, 237 can also receive SUBSCRIBE requests from clients 220, 222, 224. For each SUBSCRIBE request for a particular presentity a subscription counter can be increased. Therefore, a first SUBSCRIBE request can change the subscription counter from zero to one, which causes the proxy 230, 234, 237 to send a SUBSCRIBE request to the presence server 240. Each time a client 220, 222, 224 UNSUBSCRIBES to a presentity service, the related subscription counter can be decreased by one. When a subscription counter is decreased from one to zero, the proxy 230, 234, 237 can UNSUBSCRIBE to the presence service established between it and the presence server 240. For each presentity service, the proxy 230, 234, 237 can receive notifications from the presence server 240, which the proxy 230, 234, 237 conveys to all subscribing clients 220, 222, 224 in its region.
Each watcher 221, 223, 225, 232, 236, and/or 239 can request presence information about one or more presentity 215, 217, 227 or watcher 221, 223, 225, 232, 236, and/or 239. Special types of watchers 221, 223, 225, 232, 236, and/or 239 can include a fetcher, a poller, and a subscriber, it is possible for a watcher 221, 223, 225, 232, 236, and/or 239 to define which parts of presence information (managed by presence server 240) is received using a set of configurable rules or filters.
The presence proxies 230, 234, 237 and the presence server 240 can each access a data store 231, 235, 238, and 242, within which information can be stored. Data stores 231, 235, 238, and 242 can be a physical or virtual storage space configured to store digital information. Data stores 231, 235, 238, and 242 can be physically implemented within any type of hardware including, but not limited to, a magnetic disk, an optical disk, a semiconductor memory, a digitally encoded plastic memory, a holographic memory, or any other recording medium. Each of the data stores 231, 235, 238, and 242 can be a stand-alone storage unit as well as a storage unit formed from a plurality of physical devices. Additionally, information can be stored within data stores 231, 235, 238, and 242 in a variety of manners. For example, information can be stored within a database structure or can be stored within one or more files of a tile storage system, where each file may or may not be indexed for information searching purposes. Further, data stores 231, 235, 238, and 242 can utilize one or more encryption mechanisms to protect stored information from unauthorized access.
The clients 220, 222, 224, proxies 230, 234, 237, and presence server 240 can he communicatively linked to each other via networks 250, 252, 254, and 256. Each network 250, 252, 254, and 256 can include any hardware/software/and firmware necessary to convey data encoded within carrier waves. Data can be contained within analog or digital signals and conveyed though data or voice channels. The networks 250, 252, 254, and 256 can include local components and data pathways necessary for communications to be exchanged among computing device components and between integrated device components and peripheral devices. The networks 250, 252, 254, and 256 can also include network equipment, such as routers, data lines, hubs, and intermediary servers which together form a data network, such as the Internet. The networks 250, 252, 254, and 256 can also include circuit-based communication components and mobile communication components, such as telephony switches, modems, cellular communication towers, and the like. The networks 250, 252, 254, and 256 can include line based and/or wireless communication pathways.
In diagram 300, client 310 can publish 330 presence information (e.g., a SIP PUBLISH message) to the presence proxy 314. The presence proxy 314 can route this information to presence server 316 via another PUBLISH message 332. Client 312 can also publish 334 presence information to the proxy 314, which the proxy 314 publishes 336 to the presence server 316. All client 310-312 specific presence updates can be routed through the presence proxy 314, which forwards them to the presence server 316.
Client 310 can then subscribe 338 to presence information related to Presentity A. The subscription 338 can be conveyed to presence proxy 314, which in turn subscribes 340 for Presentity A information with presence server 316. Client 312 can also subscribe 342 to presence information related to Presentity A by conveying a subscription 342 message to the presence proxy 314.
Since the presence proxy 314 has already subscribed for Presentity A information with the presence server 316 it needs not subscribe again. When the presence proxy 314 receives notifications concerning Presentity A, such as notification 352, the proxy 314 can convey content contained in the notification 352 to both client 310 and 312, as shown by messages 354 and 356.
Client 312 can also subscribe 344 for information related to Presentity B by sending a message 344 to the proxy 314. Upon receiving the message 344, the proxy 314 can subscribe 346 for Presentity B information with the presence server 316. The presence server 316 will then send Presentity B notifications 348 to the presence proxy 314, which conveys an equivalent notification 350 to the client 312.
At some point, client 312 can convey an offline notification 358 to the presence proxy 314 (or the presence proxy 314 can query the client 312 and determine that the client 312 is offline). The presence proxy 314 can publish 360 an offline message to the presence server 316 so that a status of the client 312 can be updated. The presence proxy 314 can maintain a subscription for Presentity A information, since client 310 is still online and has subscribe for presence information related to Presentity A. No online client has subscribed with the presence proxy 314 for information related to Presentity A. The presence proxy 314 can, therefore, UNSUBSCRIBE 362 to the Presentity B information.
The present invention may be realized in hardware, software, or a combination of hardware and software. The present invention may be realized in a centralized fashion in one computer system, or in a distributed fashion where different elements are spread across several interconnected computer systems. Any kind of computer system or other apparatus adapted for carrying out the methods described herein is suited. A typical combination of hardware and software may be a general purpose computer system with a computer program that, when being loaded and executed, controls the computer system such that it carries out the methods described herein.
The present invention also may be embedded in a computer program product, which comprises all the features enabling the implementation of the methods described herein, and which when loaded in a computer system is able to carry out these methods. Computer program in the present context means any expression, in any language, code or notation, of a set of instructions intended to cause a system having an information processing capability to perform a particular function either directly or after either or both of the following: a) conversion to another language, code or notation; b) reproduction in a different material form.
This invention may be embodied in other forms without departing from the spirit or essential attributes thereof. Accordingly, reference should be made to the following claims, rather than to the foregoing specification, as indicating the scope of the invention.