U.S. patent application number 10/145912 was filed with the patent office on 2003-11-20 for method and system for supporting the communication of presence information regarding one or more telephony devices.
This patent application is currently assigned to Microsoft Corporation. Invention is credited to Bobde, Nikhil P., Brown, Robert, Buch, Jeremy, Kumbalimutt, Vishwajith, Simons, David J., Taylor, Zachary.
Application Number | 20030217142 10/145912 |
Document ID | / |
Family ID | 29418701 |
Filed Date | 2003-11-20 |
United States Patent
Application |
20030217142 |
Kind Code |
A1 |
Bobde, Nikhil P. ; et
al. |
November 20, 2003 |
Method and system for supporting the communication of presence
information regarding one or more telephony devices
Abstract
A system for detecting and communicating the presence of one or
more computing devices is presented. The invention also presents a
method and system for aggregating presence information generated by
multiple devices associated with a single user. A server acting as
a presence agent on behalf of a first user receives and responds to
a subscription request generated by a computing device operated by
a second user that wishes to be permitted as a watcher of the first
user. When the second user corresponds to access preferences
specified by the first user, a notify message is sent to the second
user's device that includes presence information indicative of an
activity level and availability level associated with the first
user. When the first user employs multiple computing devices, the
server generates an aggregate presence document that is
representative of the overall presence of the first user.
Inventors: |
Bobde, Nikhil P.; (Bellevue,
WA) ; Brown, Robert; (Kirkland, WA) ; Buch,
Jeremy; (Redmond, WA) ; Kumbalimutt, Vishwajith;
(Redmond, WA) ; Simons, David J.; (Redmond,
WA) ; Taylor, Zachary; (Sammamish, WA) |
Correspondence
Address: |
LEYDIG VOIT & MAYER, LTD
TWO PRUDENTIAL PLAZA, SUITE 4900
180 NORTH STETSON AVENUE
CHICAGO
IL
60601-6780
US
|
Assignee: |
Microsoft Corporation
One Microsoft Way
Redmond
WA
98052
|
Family ID: |
29418701 |
Appl. No.: |
10/145912 |
Filed: |
May 15, 2002 |
Current U.S.
Class: |
709/224 ;
709/225 |
Current CPC
Class: |
G06Q 10/107 20130101;
H04L 67/54 20220501; H04L 67/55 20220501 |
Class at
Publication: |
709/224 ;
709/225 |
International
Class: |
G06F 015/173 |
Claims
We claim:
1. A method for enabling the activity and availability of a first
computing device on a network to be monitored by a second computing
device on the network, the activity representing how active the
first computing device is on the network, the availability
representing whether or not the first device is available to engage
in network telephony with the second device, the method comprising:
receiving from the first computing device one or more access
preferences indicating which computing devices are permitted to
monitor the first computing device; receiving from the second
computing device a request to monitor the first computing device,
the request being acknowledged regardless of the first computing
device's availability or activity; and based on the one or more
access preferences, and based on the monitored activity and
availability of the first computing device, informing the second
computing device of the availability and activity of the first
computing device.
2. The method of claim 1 further comprising: storing information
obtained from the request message submitted by the second computing
device; and submitting the stored information to the first
computing device in response to a request message from the first
computing device to obtain the stored information.
3. The method of claim 2 wherein the first computing device
determines whether to grant the second computing device access to
the presence information.
4. The method of claim 1 further comprising receiving and
processing one or more procedure calls for initiating the transfer
of presence information to a server.
5. The method of claim 4 wherein the one or more procedure calls
correspond to one or more presence documents indicating the
activity and availability of the first computing device.
6. The method of claim 4 wherein the step of processing includes
determining at least one of the one or more presence documents that
indicates a high presence priority setting, the presence priority
setting being indicative of the at least one presence document that
best reflects the presence of the first computing device.
7. The method of claim 1 wherein the step of receiving includes
processing the one or more procedure calls for initiating the
transfer of the one or more access preferences.
8. The method of claim 1 further comprising the step of aggregating
one or more presence documents received from the first computing
device into a single presence document, the single presence
document indicating the activity and availability associated with
at least one presence document that indicates a high presence
priority setting, the single presence document also including
presence data associated with the one or more presence
documents.
9. A computer-readable medium having computer-executable
instructions for performing the steps recited in claim 1.
10. A system for conveying presence information about a first user
to a second user, the first user having a plurality of computing
devices that are capable of generating presence information, the
second user having a computing device in communication with a
computer network, the system comprising: one or more servers in
communication with the computer network and executing programs
comprising: a presence agent; an aggregator component; and
computer-readable media accessible by the one or more servers and
having stored thereon information regarding the second user's
desire to monitor the presence of the first user, wherein the
presence agent detects which of the plurality of computing devices
indicates the highest degree of presence upon the network, wherein
the aggregator component generates an aggregate document
representing the degree to which the plurality of computing devices
is present upon the network, and wherein the one or more servers
transmit the aggregate presence document to the second user's
computing device based on information stored in the computer
readable media.
11. The system of claim 10 wherein the one or more servers execute
a registration service for maintaining registration entries
associated with the plurality of computing devices.
12. The system of claim 10 wherein the computer readable media has
stored thereon an access control list that is accessible by the
presence agent to maintain access preferences of the first user
regarding the plurality of computing devices.
13. The system of claim 12 wherein the access control list
maintains access preferences set by a network administrator, the
access preferences of the network administrator having a higher
priority than the access preferences of the first user.
14. The system of claim 10 wherein the presence agent processes one
or more subscription messages received from the second user's
computing device, the messages indicating the second user's desire
to monitor the presence of the first user over the computer
network.
15. The system of claim 10 wherein the presence agent processes one
or more service messages, the service messages specifying one or
more procedure calls for updating the presence information
maintained by the presence agent regarding the plurality of
computing devices.
16. The system of claim 10 wherein the presence agent processes one
or more service messages comprising one or more procedure calls for
updating the access control list.
17. The system of claim 10 wherein the presence agent transmits an
acceptance message and a notify message to the second device in
response to the one or more subscription requests submitted by the
second device.
18. The system of claim 10 wherein the computer-readable media is
accessed by the presence agent in response to a request submitted
to the presence agent for the information regarding the second
user's desire to monitor the presence of the first user, the
request being submitted by at least one of the plurality of
computing devices.
19. The system of claim 10 wherein the aggregator component submits
the aggregate document to the presence agent in response to one or
more service messages received by the presence agent from the
plurality of computing devices.
20 A method for generating an aggregate presence document
representing the overall presence of a user, the method comprising:
receiving a plurality of presence documents generated by a
plurality of computing devices of the user, the presence documents
including data representative of an activity level and availability
level associated with each of the plurality of computing devices;
analyzing the plurality of presence documents to identify at least
one presence document that has a high presence priority setting;
and generating the aggregate presence document based on the
activity level and availability level associated with presence
document having the high presence priority setting.
21. The method of claim 20 wherein the step of receiving includes
processing one or more service messages associated with the
plurality of presence documents.
22. The method of claim 21 wherein the service messages specify one
or more procedure calls for updating the presence information
regarding the plurality of computing devices.
23. The method of claim 20 wherein the step of receiving includes
processing one or more messages for initiating or terminating the
registration of one or more of the plurality of computing
devices.
24. The method of claim 20 wherein the step of analyzing includes
summing an availability level and an activity level specified by
the at least one presence document, the resulting sum indicating
the degree to which the user is present upon the network.
25. The method of claim 20 wherein the step of generating includes
creating a plain-language description associated with the
availability level and including the plain-language description in
the aggregate document.
26. The method of claim 20 wherein the step of generating includes
creating a plain-language description in associated with the
availability level and including the plain-language description in
the aggregate document.
27. The method of claim 20 wherein the user is a first user, the
method comprising: transmitting the aggregate presence document to
a computing device of a second user in response to changes in the
presence information.
28. A computer-readable medium having computer-executable
instructions for performing the steps recited in claim 20.
29. A method for generating an aggregate presence document based on
presence information generated by one or more computing devices,
the aggregate presence document specifying the overall presence of
the one or more computing devices, the method comprising: receiving
a service message generated by at least one of the computing
devices, the service message including one or more presence
documents and one or more procedure calls for initiating the
transfer of presence information to the presence agent, the
presence information including data representative of an activity
level and availability level associated with each of the one or
more computing devices; analyzing the plurality of presence
documents to identify at least one of the presence documents that
has a highest presence priority; and generating the aggregate
presence document by including data representative of an activity
level and availability level associated with the at least one
presence document that has the highest presence priority, the
aggregate document also including other presence data obtained from
the plurality of presence documents.
30. The method of claim 29 wherein the step of analyzing includes
summing an availability level and an activity level specified by
the at least one presence document, the resulting sum indicating
the presence priority of the at least one presence document.
31. The method of claim 29 wherein the step of generating includes
specifying a description attribute in association with the
availability level, the description attribute providing a
functional description of the availability level.
32. The method of claim 29 wherein the step of generating includes
specifying a description attribute in association with the activity
level, the description attribute providing a functional description
of the activity level.
33. The method of claim 29 further including the step of submitting
the aggregate presence document to one or more computing devices
having access to the presence information associated with the
plurality of computing devices in response to changes in the
presence information.
34. A computer-readable medium having computer-executable
instructions for performing the steps recited in claim 29.
35. A system for communicating presence information related to a
first computing device to a second computing device over a network
by a presence agent, the presence agent communicating the presence
information in response to a request message submitted by the
second computing device, the request message requesting access by
the second computing device to the presence information, the system
comprising: means for receiving from the first computing device a
message having one or more procedure calls for initiating the
transfer of presence information to the presence agent; means for
receiving from the first computing device a message having one or
more procedure calls for initiating the transfer of access
preferences associated with the first computing device to the
presence agent; means for submitting an acceptance message to the
second computing device indicating that the second computing device
can access the presence information, the acceptance message being
submitted regardless of whether the first computing device is
present upon the network, and the acceptance message being
submitted regardless of the access preferences specified by the
first computing device; and means for submitting a notification
message to the second computing device, the notification message
including a presence document having data representative of an
activity level and availability level associated with the first
computing device, the notification message being submitted
regardless of whether the first computing device is present upon
the network.
36. The system of claim 35 further comprising: means for storing
information obtained from the request message submitted by the
second computing device regarding the second user's desire to
monitor the presence of the first user,; and means for submitting
the stored information to the first computing device in response to
a request message from the first computing device to obtain the
stored information.
37. The system of claim 35 further comprising means for aggregating
one or more presence documents received from the first computing
device into a single presence document, the single presence
document having data representative of an activity level and
availability level associated with at least one presence document
that indicates a high presence priority, the single presence
document also including presence data associated with the one or
more presence documents.
38. A method for relaying presence information to a subscriber in
the absence of a presentity, the presentity operating a presence
user agent that generates information indicative of the ability of
the presentity to receive calls and indicative of the operating
state or tasks in which the presentity is engaged, the method
comprising: storing information obtained from a subscriber request
message into an accessible memory location, the stored information
including one or more values that uniquely identify the subscriber
from amongst a plurality of other devices capable of communicating
over the network; and submitting the subscriber information to the
presentity when the presentity is no longer absent, wherein the
presentity makes a determination whether to grant the subscriber
access to the information generated by the presence user agent.
39. The method of claim 38 further comprising submitting the
information generated by the presence user agent to the subscriber
when a determination is made to grant the subscriber access to the
information.
40. The method of claim 39 wherein the step of determining is made
according to access preferences assigned by the presentity.
41. The method of claim 38 wherein the step of submitting includes
transmitting a presence document to the subscriber having data
indicative of the ability of the presentity to receive calls and
indicative of the operating state or tasks in which the presentity
is engaged.
42. A computer-readable medium having computer-executable
instructions for performing the steps recited in claim 38.
Description
TECHNICAL FIELD
[0001] The invention relates generally to communication between
computers over a network, and more particularly, to methods and
systems for communicating the presence of one or more devices from
over the network.
BACKGROUND OF THE INVENTION
[0002] With today's widespread use of the Internet as a primary
communication medium, pre-existing communication devices are now
being designed so that they are capable of communicating over
packet-switched networks. For instance, telephones, pagers, cell
phones, handheld computers, and even fax machines can now be
accessed and controlled from over the Internet. Communication over
a packet-switched network using communication devices that
traditionally communicate over a circuit-switched telephone network
is generally known as network telephony, or IP telephony when an IP
network is involved.
[0003] A user having several communication devices (e.g., a cell
phone, laptop and handheld PC) can configure each of these devices
to identify itself to the network using a single alias or
identifier (e.g., username@b.com). In this way, the user is not
limited to communicating with others via a single device, but
instead has the ability to communicate via several different
devices. Nonetheless, the ability for a user to have several
devices "present" on a computer network creates a need for other
users to be able to determine the status or state of the user's
many devices.
[0004] "Presence" refers to the availability, proximity, activity
level or operating state of a user on a network. The ability for
users to monitor each other's presence is a feature offered in
connection with many applications that support network telephony.
For example, instant messaging applications such as MSN or Yahoo
have an "available buddy" feature, in which a user of the
application can determine whether select users are available for
engaging in communication. The data retrieved and returned to the
buddy list, e.g. "John OFFLINE" or "Susan ACTIVE," is known as
"presence information," and is generally maintained by a program
called a "presence agent." According to most conventional network
configurations, the presence agent is implemented as a dedicated
server. Typically, the presence agent supports network telephony
protocols such as the session initiation protocol (SIP). Device
users can register their devices with the presence agent (e.g., via
a registrar module) in order to have their presence maintained and
to allow various programs on the network to facilitate network
telephony services. As such, a first device user wishing to detect
the presence of a second device user does so by "subscribing" with
the presence agent, such as via a SIP SUBSCRIBE message. The
presence agent intermediates between the first user, also known as
the watcher, and the second user to facilitate the communication of
the second device user's presence information to the first device
user.
[0005] The ability of a presence agent to accurately determine and
maintain presence information for one or more users significantly
enhances communication and task completion over the network. For
example, a very mobile user may only be on the network at certain
times throughout the day, and may be accessing the network from
varying locations. By subscribing as a watcher of this mobile user,
it becomes possible for another user to detect the presence of the
mobile user during the times at which the mobile user's computing
device is actually connected to the network. So, when the mobile
user is present, the watcher can correspond instantly with the
mobile user via a chat session or videoconferencing call, as
opposed to resorting to a non-real-time communication such as
e-mail messaging. Hence, presence is an especially important factor
for facilitating communication between users. Unfortunately,
however, conventional presence agents are unable to determine
presence with sufficient granularity. As an example, consider a
scenario where a second user has subscribed with a presence agent
as a watcher of a first user. If the first user is in the second
users' available buddy list, and the first user's computing device
suddenly goes into sleep mode, the second user's buddy list should
still indicate that the first user's device is available for
communication rather than indicate that the first user's device is
"offline." An indication of "offline" does not accurately reflect
that the first user's device may still be connected to the network
and may still be able to receive messages. Yet, many presence
agents only provide generalized presence information, such as
"offline" or "unavailable," and do not account for more ambiguous
presence conditions.
[0006] Some other presence agents attempt to more accurately
present presence information by shortening the subscription periods
of watchers. According to this mode of operation, when a watcher
subscribes with the presence agent, the watcher's subscription time
is minimized (e.g., by using a shortened timeout period), and so
the watcher must frequently renew the subscription. Each time the
watcher renews, the watcher receives the most current presence
information. While this method of presence determination can be
effective for detecting subtle changes in presence, the constant
updating of subscriptions causes the presence agent to use more
bandwidth and increases its overall processing time. Furthermore,
this method increases the message load on a server that operates
the presence agent resulting in a significant reduction in
scalability.
[0007] Still further, many presence agents are unable to provide
accurate presence information for those users who have several
devices registered and present upon the network. Current standards
for retrieving presence information pertaining to multiple device
users simply call for the presence of each individual device to be
determined, and then presented to the watcher as a compound
document, such as an HTML file. As a result, the watcher that
receives the compound document indicating the presence information
for each device must "guess" which device's presence information
most accurately reflects the presence of the user. However, just
because a user's mobile phone, pager, laptop, PDA, and desktop
computer are all present on the network does not mean the user is
using all of them. Indeed, the presence information of the
individual devices says very little about the actual presence
(e.g., activity or availability) of the user.
SUMMARY OF THE INVENTION
[0008] The invention presents a method and system for detecting and
communicating the presence of one or more users on a computer
network. This includes users who employ devices that communicate
over a network via the SIP protocol, and other common network
protocols. The present invention also relates to a method and
system for aggregating the presence information of multiple devices
associated with a single user such that more accurate and useful
presence information pertaining to the user can be determined.
[0009] In accordance with an embodiment of the invention, a network
device, such as a server, is equipped with a presence agent that
facilitates the exchange of presence information between a first
user and a second user. The first user is referenced by a unique
alias, such as user@some_network.com, and has one or more computing
devices registered with the network server (e.g., via a
registration module or dedicated registrar server). When the second
device wishes to access presence information pertaining to the
first user, the second user employs a computing device to send a
subscription request to the network server in order to become a
"watcher" of the second device user. Once received, the
subscription request is then forwarded to the presence agent
operating upon the network device for processing. The network
device then generates and submits an acceptance message to the
first user's device, followed by a standard NOTIFY message. As
such, acceptance of the subscription is sent to the second user
regardless of whether or not the second user is actually granted
access to the presence information, as determined according to
access preferences specified by the first user.
[0010] In order to grant access to the second user, the presence
agent checks an access control list (ACL) that comprises one or
more access rules or preferences. The first user defines these
rules in order to affect how its presence information is shared
with one or more watchers. When the ACL specifies that the second
user may access the presence information, the NOTIFY message
includes a presence document that contains the presence
information. In contrast, when the ACL specifies that the watcher
is not to access the presence information, the NOTIFY message is
sent to the watcher without the presence document. Because the
network server always sends an acceptance and notification message
to the watcher, the subscription process is facilitated without any
intervention by the first user, thus minimizing the processing
requirements of the presence agent.
[0011] In accordance with another embodiment of the invention, the
presence agent operating upon the network device maintains an
offline subscribes data structure for storing information
associated with any subscription requests submitted by one or more
users wishing to access the first user's presence information. The
subscription information is stored into the data structure whether
the first user to be watched is or is not present (e.g., inactive,
logged off), and includes data such as a URI (uniform resource
locator) that uniquely identifies a particular subscriber. As such,
when resuming upon the network again, the first user's one or more
computing devices send a subscribe request to the network device in
order obtain any data stored in the offline subscribes data
structure. In response to this request, the presence agent
operating upon the network device accesses the offline subscribes
data structure, extracts the data, and forwards a NOTIFY message to
the first user's device along with the data. When the first user
authorizes the subscription, the registered device user updates its
presence document, and forwards it to the network device. The
network device then updates the ACL accordingly, and a NOTIFY
message is sent to the subscribing user along with a presence
document containing the presence information. On the other hand,
when the subscription is not acceptable, the ACL is updated to
specify prevention of access by the subscriber, resulting in a
NOTIFY message being sent to the subscriber without any presence
information.
[0012] In yet another embodiment of the invention, an aggregator
component executed by the network device aggregates the presence
information of several devices associated with a user into a single
presence document. For user's that employ several computing devices
(e.g., PDA, cell phone, laptop, and pager), a presence document for
each individual device is generated and sent to the presence agent
operating upon the network device for processing. Upon receiving
these documents, the network device executes an aggregator
component that performs a computation to determine the presence
priority setting of each document. The presence priority setting of
a document is a value that is determined according to attributes
that include an activity level and an availability level. The
activity level indicates what action the first user or
corresponding device may be engaged in (e.g., idle, away), giving
an indication of the likelihood of calls or messages actually being
accepted from over the network. In relation to the activity level
is the availability level, which indicates whether the user or
user's corresponding computing devices may actually receive calls
based on various network conditions (e.g., offline, online). A
description attribute may optionally be associated with the
activity or availability level to provide a functional or
plain-language description of the assigned level. By summing up
these values, the aggregator component identifies which device has
the highest presence priority setting, and merges the presence
information of each device into a single, or aggregate, document.
The resulting presence information contained within the single
document indicates to the watcher which of the user's devices most
accurately reflects the presence of the user.
[0013] Additional features and advantages of the invention will be
made apparent from the following detailed description of
illustrative embodiments that proceeds with reference to the
accompanying figures.
BRIEF DESCRIPTION OF THE DRAWINGS
[0014] While the appended claims set forth the features of the
present invention with particularity, the invention, together with
its objects and advantages, may be best understood from the
following detailed description taken in conjunction with the
accompanying drawings of which:
[0015] FIG. 1 is an example of a computer network;
[0016] FIG. 2 is an example of a computer;
[0017] FIG. 3 is a diagram illustrating a server facilitating a
call between a first computing device and a second computing device
over the network in accordance with an embodiment of the
invention;
[0018] FIG. 4 is a diagram illustrating the mechanism employed by a
first computing device of FIG. 3 for setting presence with a server
according to an embodiment of the invention;
[0019] FIG. 5 is a diagram illustrating the mechanism employed by a
first computing device of FIG. 3 for setting access preferences
with a server according to an embodiment of the invention; and
[0020] FIGS. 6-8 illustrate the operation of an aggregator
component for processing one or more presence documents.
DETAILED DESCRIPTION OF THE INVENTION
[0021] The invention relates to a method and system for detecting
and communicating the presence of one or more users on a computer
network. Also, the invention relates to a method and system for
aggregating the presence information of multiple devices associated
with a single user such that overall presence information
pertaining to that user can be determined. In the context of the
invention, presence information describes any data that specifies
the availability, proximity, activity level or operating state of a
computing device or corresponding user of the device from over the
network. For example, presence information can be provided to a
user of a computing first device (a watcher) in the form of a
presence document, and analyzed by watcher to determine if a user
of another computing device (a registered device user) is online or
offline, busy or idle. This determination is dependent on various
factors, including the current activity of the user being
maintained, the present operating state of the computing device of
the user being monitored, etc. In an effort to stay consistent with
common terminology used in the computing industry, this detailed
description will use the term "presence" synonymously with the term
"presence information" at various times. Moreover, the terms
"presence" or "presence information" should be interpreted as
relating to the user, or one or more devices employed by the
user.
[0022] Also, the invention will be described throughout the course
of the description with respect to SIP as a messaging protocol for
supporting communication between devices in accordance with the
teachings of the invention. Once again, those of skill in the art
will recognize that SIP is only one protocol suitable for
supporting network telephony and presence, and that other protocols
may just as easily be utilized. Other such protocols include the
H.323 standard and the Single Computer Telephony Protocol (SCTP).
The invention is not limited to any one protocol or messaging
implementation, as any means or medium by which two or more devices
may communicate to support network telephony applications is
suitable. Furthermore, the invention is not limited to any
particular network telephony configuration, as any means for
exchanging messages between one or more computers via SIP or the
like is suitable for use in connection with the invention. This
includes network configurations where computing devices such as
proxies, redirect servers, registration terminals, presence servers
and agents, and one or more clients or "presentities," are involved
in the communication.
[0023] As used herein, the term "network telephony" relates to any
process wherein a network, such as the Internet, is used as a
transmission medium for placing telephone calls or facilitating
multimedia sessions between two or more computing devices. This can
include multimedia sessions where streaming media (e.g., audio and
video data) is exchanged over the network, conference calls,
virtual meetings, and other telephony sessions. The term "network
telephony" is generic, and can therefore describe or pertain to
several other communication processes involving the exchange of
packetized data. These include, but are not limited to, IP
telephony, Voice over the Internet (VOI) and Voice over IP (VoIP).
Also, as used herein, the term "call" (e.g., telephone call)
relates to a session in which an exchange of information is
commenced or initiated between two or more computing devices over a
network, such as with the aide of a telephony application (e.g.,
MICROSOFT NETMEETING TM). In the context of the present invention,
a "call" is synonymous to a "message" being sent between devices,
and those terms will be used interchangeably at times to describe
the interaction between two or more devices over the network.
[0024] An example of a networked environment in which the invention
may be used will now be described with reference to FIG. 1. The
example network includes several computers 20 communicating with
one another over a network 30, such as the Internet, as represented
by a cloud. Network 30 may include many well-known components, such
as routers, gateways, hubs, etc. and may allow the computers 20 to
communicate via wired and/or wireless media.
[0025] Referring to FIG. 2, an example of a basic configuration for
a computer on which the system described herein may be implemented
is shown. In its most basic configuration, the computer 20
typically includes at least one processing unit 42 and memory 44.
Depending on the exact configuration and type of the computer 20,
the memory 44 may be volatile (such as RAM), non-volatile (such as
ROM or flash memory) or some combination of the two. This most
basic configuration is illustrated in FIG. 2 by dashed line 46.
Additionally, the computer may also have other
features/functionality. For example, computer 20 may also include
additional storage (removable and/or non-removable) including, but
not limited to, magnetic or optical disks or tape. Computer storage
media includes volatile and non-volatile, removable and
non-removable media implemented in any method or technology for
storage of information such as computer readable instructions, data
structures, program modules, or other data. Computer storage media
includes, but is not limited to, RAM, ROM, EEPROM, flash memory or
other memory technology, CD-ROM, digital versatile disk (DVD) or
other optical storage, magnetic cassettes, magnetic tape, magnetic
disk storage or other magnetic storage devices, or any other medium
which can be used to stored the desired information and which can
be accessed by the computer 20. Any such computer storage media may
be part of computer 20.
[0026] Computer 20 may also contain communications connections that
allow the device to communicate with other devices. A communication
connection is an example of a communication medium. Communication
media typically embodies computer readable instructions, data
structures, program modules or other data in a modulated data
signal such as a carrier wave or other transport mechanism and
includes any information delivery media. By way of example, and not
limitation, communication media includes wired media such as a
wired network or direct-wired connection, and wireless media such
as acoustic, RF, infrared and other wireless media. The term
computer readable media as used herein includes both storage media
and communication media.
[0027] Computer 20 may also have input devices such as a keyboard,
mouse, pen, voice input device, touch input device, etc. Output
devices such as a display 48, speakers, a printer, etc. may also be
included. All these devices are well known in the art and need not
be discussed at length here.
[0028] In accordance with an embodiment of the invention, a server
provides presence information regarding a first computing device,
which is registered with the server, to a second computing device
which operates as a watcher, as illustrated in FIG. 3. The server,
labeled 102, is a computing device that is capable of processing
messages conforming to a protocol for supporting telephony (e.g.,
SIP, H.323). The first computing device, labeled 104, and the
second computing device labeled 106 are devices capable of
communicating with one another over a computer network using
network telephony. A first user 103 uses the first computing device
104, while a second user 107 uses the second computing device 106.
In order to support the communication of presence information, the
server 102 includes various components, such as a program referred
to as a presence agent (PA) 152, a registration program (R) 154,
and an access control list (ACL) 156. The presence agent 152
receives requests for presence information from one or more
computing devices that act as "watchers," responds to the requests,
and generates notifications of changes in the presence of computing
devices being "watched". To maintain that presence information, the
server 102 includes a memory 158 for storing the data. The
registration program 154 processes registration request messages
(e.g., an SIP REGISTER messages) received from over the network.
Registration messages are sent to the registration program 154 by
computing devices that are new to the network, and serve to
"introduce" such new devices to the presence agent program 152.
Operating in connection with the presence agent 152 and
registration program 154 is the access control list 156. The ACL
156 may be implemented as a data structure, database, or even as a
program, and is referenced by the server 102 to allow the server
102 to determine how it is supposed to interact with other devices
on the network.
[0029] As shown in FIG. 3, the first user 103 operates the first
computing device 104 to establish register with the server 102. The
registration program 154 handles this registration process. In some
embodiments, the registration program 154 is implemented as a
dedicated computing device known as a registrar (not shown), which
operates in conjunction with a proxy server that handles SIP
messages. Any mechanism by which the first user 103 may register
one or more devices in order to facilitate network telephony
services, and particularly the communication of presence
information, is within the scope of the invention.
[0030] The first computing device 104 executes a program, referred
to as a presence user agent (PUA) that generates presence
information relating to the first user 103. The PUA may be
implemented on hardware/firmware as part of a stand-alone program
or operating system. It may also be implemented as part of other
software applications such as e-mail utilities, instant messaging
software, network monitoring programs, video/audio conferencing
programs, etc. When the second user 107 wishes to gain access to
the presence information of the first user 103, the second user 107
interacts with the second computing device 106 to generate a
SUBCRIBE message. The second computing device 106 sends the message
to the server 102 (event 120). The SUBSCRIBE message alerts the
server 102 that the second user 107 wants to "subscribe" as a
watcher of the first computing device 104 and the corresponding
first user 103. In various embodiments of the invention, the
subscribe message contains an event header that specifies presence
as the basis for the subscription request (e.g., event.presence).
The event header causes the presence agent 152 to initiate a call
to the server 102 to process the message as a presence subscription
(as opposed to some other type of network event). In response to
the subscription request, the server 102 (acting as a presence
agent on behalf of the first computing device 104) stores the
contents of the request into a data structure 150, referred to as
an offline subscribes data structure. The offline subscribes data
structure 150 is implemented as a file, record, table, index or any
other scheme or mechanism for organizing data. Subscription
information pertaining to each subscriber (e.g., URI, network
address information of the subscriber) is stored in the offline
subscribes data structure 150, allowing it to act as a persistent
record of the subscription requests. In this way, the subscription
information is maintained so as to be readily accessible to the
presence agent 152.
[0031] After the subscription request is stored into the offline
subscribes data structure 150, the server 102 makes a determination
as to whether to accept the subscription request. This
determination is made according to rules or conditions defined by
the first user 103, which are maintained in the access control list
(ACL) 152. In general, the ACL 152 includes access preferences that
informs the server 102 as to which permissions, or access rights, a
particular user or group of users has with respect to a particular
resource-in this case, the presence information related to the
first computing device 104 and first user 103. The actual settings
of the ACL 152 as defined by the first computing device 104 will be
described in a later section of this description. When the
subscription message is accepted, the presence agent 152 generates
an acceptance message, such as a SIP 202 message (event 124) and a
NOTIFY message (event 126), which the server 102 sends to the
second computing device 106. For standard telephony protocols such
as SIP, the body of the NOTIFY message contains the presence
information of the first computing device 104 and/or of the
corresponding first user 103. If the presence agent 152 rejects the
request, the presence agent 152 generates an acceptance message
(e.g., a SIP 202 message) in the same manner as when the request is
accepted. However, the server 102 does not send presence
information to the second computing device 106, but rather sends a
NOTIFY message containing no presence information. As a result, the
second user 107 is allowed to subscribe as a watcher of the first
user 103, but does not gain access to the presence information.
[0032] According to an embodiment of the invention, access to
presence information pertaining to the first user 103 and/or the
corresponding first computing device 104 is limited only to those
users specified by the ACL 156. Since the server 102 accepts all
subscription requests, access to the presence information of the
first computing device 104 and/or the first user 103 is not
dependent upon the first computing device 104 or first user 103
actually being present. In other words, it is possible for the
first computing device 104 or first user 103 to not be present upon
the network (e.g., logged off, disconnected, or in a busy state)
without jeopardizing the ability of another device to subscribe as
a watcher. In conventional systems, the absence of the first
computing device 104 results in all SUBSCRIBE requests received by
the server 102 being rejected. Consequently, in such systems the
watcher must resubmit the request periodically until the
subscription is finally accepted. Obviously, this is not desirable
as this phenomenon increases the amount of traffic to be handled by
the server 102, and, ultimately reduces its scalability.
[0033] The server 102 overcomes this challenge through the use of
the offline subscribes data structure 150. When the first computing
device 104 and the first user 103 resume their activity upon the
network after having previously not been present upon the network,
the first computing device 104 sends a SUBSCRIBE request to the
server 102 to obtain any data stored in the offline subscribes data
structure 150 (event 128). This subscribe request differs from the
subscription request transmitted by the second computing device 106
for obtaining presence information (event 120). In that, the
subscribe message sent by the first computing device 104 indicates
to the server 102 that the first computing device 104 wishes to
determine which other devices, if any, have attempted to monitor
its presence or that of the first user 103 during the offline
period. In response to this request, the server 102 accesses the
offline subscribes data structure 150, extracts the data, and
forwards an acceptance message to the first computing device 104
followed by a NOTIFY message (events 130 and 132). The body of the
NOTIFY message contains the data from the offline subscribes data
structure, such as a list of the subscribers and their
corresponding network address information. Armed with this
information, the first computing device 104 is able to recognize
all of the computing devices and users that subscribed as watchers
during the time it was not present on the network.
[0034] Once the first computing device receives the list of
subscribers obtained from the offline subscribes data structure,
the first computing device 104 and/or the first user 103 determines
whether to accept or reject the subscription requests. The first
user 103 makes this determination by responding to message prompts
generated to a display screen 110 of the first computing device 104
by a presence enabled program (e.g., the PUA). In this scenario,
the first user 103 responds using an input device such as a mouse
or keyboard. Subscription requests can also be accepted or rejected
by the first computing device 104 automatically, without user
intervention, according to the preferences or auto-settings of the
first computing device 104. When a subscription request is
accepted, the first computing device 104 generates an updated
presence document, which is a file that contains the presence
information, and forwards it to the server 102 (event 134). The
presence agent 152, operating on the server 102, processes the
contents of the presence document, and stores the presence
information obtained from the document into an accessible memory
location 158 for subsequent retrieval. Also, upon receiving the
presence information, the ACL 156 is updated to indicate that the
second user 107 has been permitted to act as a watcher of the first
computing device 104 and the first user 103 (event 136). As such,
the second computing device 106 may freely access the presence
information of the first computing device 104 and first user 103.
On the other hand, if the subscription is not accepted, the ACL 156
is updated to indicate that the second user 107 is not to have
access to the presence information (event 136). No subsequent
NOTIFY message is sent to the second computing device 106 in this
case, ensuring that the second user 107 is not aware of the
presence of the first computing device 104 or first user 103.
[0035] In the foregoing paragraphs, the operation of the server 102
for facilitating the communication of presence information is
described. To ensure the most accurate portrayal of presence
information to a watcher, in various embodiments of the invention
the first computing device 104 is able to insert descriptive
presence information into any updated presence document and
transmit the presence document to the server 104 to the presence
agent 152 Further, the server 102 recognizes the differences
between the updated presence document and previous versions of the
presence document to the presence document and based on these
differences, more accurately portrayal the presence of the first
computing device 104 and/or the first user 103. Also, the first
computing device 104 is able to update the ACL 156 to control the
extent to which other devices may access the presence information
maintained by the server 102. In the following paragraphs, the
mechanisms employed by the first computing device 104 and server
102 for setting presence and controlling access to the presence
information is described. This functionality is presented in FIGS.
4-5.
Setting and Updating Presence Information
[0036] Referring now to FIG. 4, a computer network includes a first
computing device 200 that is operated by a first user 200, a server
201, and a second computing device 211 having that is operated by a
second user 210. Each of these components has much of the same
functionality as those of FIG. 3, with additional features
described in the following paragraphs. The first computing device
200 is capable of generating presence information and exchanging it
in the form of a presence document with the server 201 in
accordance with an embodiment of the invention. The presence
document 207 contains information pertaining to the presence of the
first computing device 200 and first user 202. Specifically, the
first computing device 200 submits the presence document by sending
a SERVICE message 204 to the server 201 (event 300). The service
message 204 conforms to a standard telephony protocol format such
as SIP, and comprises instructions within the message body for
initiating the Set Presence remote procedure call. The Set Presence
procedure call is a function or method executable on the server
201, that causes the agent 152 operating on the server 201 to set
(update) the presence information for the first user 202 and the
first computing device 200 in memory 158. Preferably, the service
message supports the exchange of complex object types and not just
text. Suitable protocols or mechanisms for supporting the
transmission of complex objects include, but are not limited to,
Internet Inter-ORB Protocol (IIOP), COM/DCOM based protocols, and
the Simple Object Access Protocol (SOAP). In the illustrated
embodiment, the Set Presence procedure call is contained within a
SOAP envelope within the message body. SOAP allows remote procedure
calls to be embedded within messages (as a SOAP envelope), and
invoked by a receiving device. Several Set Presence calls may be
indicated within a single SOAP envelope in order to permit several
devices to update their presence information simultaneously.
[0037] In further accordance with an embodiment of the invention,
the presence document 207 generated by the first computing device
200 is comprised of one or more attributes that relate to the
presence of the first computing device 200 or corresponding first
user 202. Such attributes include an availability level 208 and
activity level 209. Also, in association with the availability
level 208 and activity level 209 is the description attribute 210.
The description attribute provides a functional or plain-language
description of the assigned activity or availability level, and is
specified at the discretion of the first computing device 200. For
each presence document generated by a computing device related to
the first user 202, one activity level and availability level is
specified. By specifying these attributes within the presence
document 207, the server 102 is able to provide a more accurate
indication of the presence for the first computing device 200 or
first user 202 to a user 211 that is acting as a watcher.
[0038] The availability level 208 is an attribute that indicates
whether the first computing device 200 or first user 202 may
actually receive calls. The first computing device 200, specifies
various availability levels, including those shown in TABLE 1
below. Yet, only one availability level need be specified for a
single device at a time.
1TABLE 1 Availability level settings Associated Availability
Description of Level Availability Level Explanation 000 Offline The
user cannot receive calls. 100 Undetermined The user may be online,
but there is no way to know until a call is attempted. 200
Connected The user has a device currently connected that can
receive calls. 300 Online The user is in proximity to a device that
can receive calls.
[0039] The availability levels are spread into classes, where each
class is a multiple of 100. This is analogous to the response code
numbering system used in communication protocols such as the
hypertext transfer protocol (HTTP) and SIP. Those skilled in the
art will recognize, however, that different values or classes may
be used to specify the availability level of the first computing
device 200, and that the invention is not limited to any specific
implementation. For example, the first computing device 200 may
want to indicate a greater level of availability than "online," but
may not want to show an availability of "always," and create a new
availability value 250: "likely to take call". If the second
computing device 211 is not familiar with this particular attribute
receives such presence information, it can abstract it to a class
in which is it familiar (e.g., it can generalized to 200:
"connected").
[0040] The activity level 209, provides an indication of the action
in which the first computing device 200 or corresponding first user
202 is engaged. Also, the activity level 209 indicates to the
second computing device 211 or other devices that are in the role
of watchers the likelihood of calls or messages being accepted by
the first computing device 200 or first user 202. Various activity
levels may be specified within the presence document 207, as shown
in Table 2 below.
2TABLE 2 Activity level settings Associated Activity Description of
Level Activity Level Explanation 000 No explicit There is no
information about the activity activity of the user. 100 Away The
user is away from the device 150 At lunch The user is taking a
lunch break 200 Idle No specific activity is currently being
engaged 300 Temporarily un- The user is not available at the
present time available 400 Active The user is active 500 In call
The user is already participating in a communications session. 600
Busy The user is busy 700 Do not disturb The user does not want to
participate in a communication session 800 Always User will stop
whatever they're doing to interruptible receive a call.
[0041] Again, those skilled in the art will recognize that the
invention is not limited to the set of values or activity classes
shown in TABLE 2. Also, it will be recognized by those skilled in
the art that specifying the activity level 209 of the 208 first
computing device 200 or user 202 in connection with the
availability level ensures for more accurate presence. This is in
contrast with many existing systems for conveying presence
information, in which less useful presence attributes are provided.
For example, if a presence document only indicates that the user is
"busy," this is not sufficient information for the watcher 211 to
determine if calls can actually be placed with the first computing
device 200. Just because the first user 202 is busy does not mean
that calls are not to be received from the second computing device
210. Various embodiments of the invention account for such
intricate distinctions in presence by indicating both the activity
level (e.g., busy or active) and availability level (e.g.,
connected) of a computing device and/or its corresponding user.
Setting the Access Control List (ACI)
[0042] As described earlier with respect to FIG. 3, when a
computing device is not present or a network, but later resumes its
activities upon the network, it can access a data structure from
the network device to determine which users have subscribed to
watch it. At this point, the computing device or its corresponding
user decides whether to allow the one or more subscribers access to
its presence information. The decision is made known to the server
that is handling presence administration for the network device by
way of an access control list (ACL). In accordance with another
embodiment of the invention, a computing device sets its access
preferences with a server via a Set ACL procedure call, as
illustrated in FIG. 5.
[0043] The Set ACL procedure call is an executable function or
method that specifies the ACL settings for the computing device 300
of the network shown in FIG. 3. As shown, the computing device 300
submits a SERVICE message 304 to a server 102 in order to initiate
the setting, or updating, of the ACL 156. The SERVICE message
comprises one or more setACL procedure calls 305, which trigger the
presence agent 152 operating on the network device 102 to set
(update) the ACL 156. Similar to the Set Presence call described
above, the setACL procedure call is contained within a SOAP
envelope that comprises the body of the SERVICE message. Multiple
setACL calls may be contained within a single service message 304
in order to authorize one or more subscribers. When the network
device 102 receives the SERVICE message, the presence agent 152
processes it, and the access preferences 306 indicated by the
service message 304 are stored within the ACL 156.
[0044] The concept of access control as it applies to this
embodiment of the invention will now be discussed in more detail.
For each user or group of users of a network, there is a
corresponding access control list that specifies what that user or
group of users is permitted to do with regard to other users or
groups of users. In this embodiment of the invention, there are at
least two types of rights: "Incoming" and "Presence." Incoming
rights govern things such as who is permitted to initiate
communication with the user. Presence rights govern the ability for
a user to monitor whether another user is online. The values to
which each of these rights can be set in an embodiment of the
invention are as follows:
3 Abbrevi- Right Value ation Meaning INCOMING Allow "A" User having
this level of access can invite another user to communicate.
Timeout "T" User having this level of access can invite another
user to communicate, but the user's real-time communica- tion
client program will always time- out the call. This is a polite way
of blocking the and equates to the phone "ringing off the hook".
Deny "D" User having this level of access cannot invite another
user to communicate. PRESENCE Allow "A" A user can query or
subscribe to another user's presence and will be notified when
status changes occur Prompt "P" A user having this level of access
can attempt to subscribe to another user's presence, but the other
user will be prompted for permission Block "B" A user having this
level of access may subscribe to another user's presence, but the
other user will always appear to be offline. Deny "D" A user with
this level of access can- not even subscribe to the other user
[0045] Continuing the discussion of access control, a user or a
group of users will also be referred to herein as an "identity."
There are many possible ways to designate an identity. In an
embodiment of the invention, the following types of identities
exist.
4 Identity Type Meaning ALL All users and groups. DOMAIN All users
in this domain URI Used to specify a particular user.
[0046] Each access control list has one or more access control
entries. Each access control entry confers one or more rights to an
identity. For example, possible access control entries for the user
joeb@microsoft.com include:
5 Identity Access Right(s) Meaning ALL INCOMING = Anybody can
communicate Allow with joeb@microsoft.com PRESENCE = Nobody can
access the Prompt joeb's presence without joeb being prompted to
grant permission. DOMAIN INCOMING = Anybody at Microsoft can
"microsoft.com" Allow communicate with Joeb PRESENCE = Nobody at
Microsoft can Prompt access the joeb's presence without joeb being
promp- ted to grant permission. URI INCOMING = The user
roberbr@micro- "roberbr@microsoft.com" Deny soft.com is
specifically PRESENCE = blocked from any access to Deny joeb.
[0047] According to an embodiment of the invention, the
administrator of a network can set a "default" access control list
that is applied to all users in a particular group. If an access
control entry in the user's personal access control list has the
same identity as an access control entry in the default access
control list, then the personal access control entry takes
precedent over the default access control entry. This merging is
done at the server when a user's access control list is retrieved.
Client software will only ever see the merged access control list.
At install, according to an embodiment of the inventions, the
default access control list is set to:
6 Identity Access Right(s) Meaning DOMAIN INCOMING = Allow Allow
others in the user's domain "<insert PRESENCE = Allow full
access to the user domain Name>" ALL INCOMING = Allow Defaults
the access for all other PRESENCE = Prompt users to allow incoming
communi- cation, but no access to presence without the owner
explicitly granting
[0048] The administrator may also set a "mandatory" access control
list that is applied to all users in a particular group.
[0049] Up to this point, the invention has been described with
respect to the interaction between one or more users that act as
watchers, a computing device, and a corresponding user being
watched. However, in many instances the user being watched may have
more than one device (registered) with the network device at a
time. In such cases, presence information is generated by each of
the devices, resulting in several presence documents being
generated and exchanged with the server that handles presence
administration. For conventional servers, a watcher seeking to
obtain presence information pertaining to a user of several devices
would receive several individual presence documents. Or, in some
instances, the watcher would receive a compound document that
simply lists the presence of each device, and nothing more.
According to another embodiment of the invention, however, an
aggregator component executed by the server that handles presence
administration aggregates the presence information of several
devices pertaining to a single user into a single presence
document. In this way, the watcher is able to obtain a more precise
indication of the overall presence of the user. Operation of
embodiments of the invention in which this technique is employed is
described in the following paragraphs, and with respect to FIGS.
6-8.
[0050] Referring now to FIG. 6, a user 320 employs several
telephony devices, including a desktop computer 322, laptop
computer 324, and cell phone 326. Each device is registered with a
server 328, and generates presence information pertaining to itself
and/or the corresponding user 320. To communicate the presence
information with watchers 410 (or several watchers), each of the
registered devices 322-326 submits a SERVICE message to the server
328 that allows it to invoke the Set Presence procedure call, as
described earlier. Upon receiving the SERVICE messages (and
corresponding presence documents), the server 328 executes an
aggregator module 340 that analyzes each presence document to
determine their respective presence priority settings. The presence
priority setting is a value calculated using information specified
in the presence document for a device, such as from the summation
of the availability level 208 and activity level 209 of a presence
document 207, to determine the level of presence of the respective
device. A higher presence priority setting for a particular
presence document indicates a higher degree of presence with
respect to a particular computing device. It should be noted that a
higher degree of presence is not strictly based upon numeric
values, but rather to the meaning associated with a particular
availability or activity level. By comparing the presence priority
settings of several presence documents, the presence agent 152 can
determine which document most accurately reflects the presence of
the user 320 and the user's corresponding computing devices
322-326. In turn, the presence agent 152 conveys this information
to the watcher 320 to ensure the watcher 320 has access to the most
accurate presence information.
[0051] With respect now to FIG. 7, the aggregator component 340
operates upon the server 328 to interpret presence documents
generated by one or more registered devices, in accordance with an
embodiment of the invention. The aggregator component 340 is
implemented as an executable module, such as a dynamic link library
(DLL) or computer executable application that is capable of
processing presence information. Presence information is generated
by the registered devices (desktop 322, laptop 324 and cell phone
326), and conveyed as presence documents 350-354. As described
previously with respect to the invention, each presence document
comprises information such as an availability level, an activity
level, description attribute and any other relevant presence
information. Consider the presence document 350 generated by the
desktop computer 322, for example, which specifies an availability
level 356 equal to 300 and an activity level 358 equal to 000. The
activity 358 and availability levels 356 provide an indication of
the current state or operation of the desktop computer 322 or user
320, and correspond to the description attributes "online" 360 and
"no explicit activity" 362 respectively. Also included within the
presence document 350 is any other information 364 pertaining to
the presence of the desktop computer 322, such as diagnostic data,
user profile data, or the like. Like the desktop computer 322, the
laptop computer 324 and cell phone 326 also generate presence
documents in a similar fashion.
[0052] Once the server 328 receives the presence documents 350-354,
the aggregator component 340 performs a computation to determine
which document indicates the highest presence priority setting
(event 380). More specifically, the aggregator component 340
calculates the presence priority setting for each document such as
by comparing the indicated activity level and availability level
values and setting the presence priority setting to that of the
highest value. For example, the presence priority settings for the
desktop computer 322, laptop computer 324 and cell phone 326 as
calculated as shown in TABLE 4 below.
7TABLE 4 Presence priority settings for the registered devices of
FIGS. 6 and 7 Device Availability Activity Description Desktop
Computer 322 300 000 online, no explicit activity Laptop computer
324 200 400 connected, active Cell Phone 326 000 000 offline, no
explicit activity Aggregate presence 300 400 online, active
[0053] As TABLE 4 shows, the laptop computer 404 has a presence
activity setting of 400, the highest of all the computing devices.
This setting indicates to the presence agent 152 that the laptop
computer 324 is connected to the network for receiving calls, and
that the user 320 is actively using the laptop computer 326. Hence,
while the desktop computer 322 and cell phone 326 are registered
with the server 328, their presence priority settings indicate a
lesser likelihood of them engaging in a communication session
(e.g., the user 320 is not currently using these devices). In
contrast, a higher presence priority setting more explicitly and
accurately indicates the presence of the computing devices 322-326
and user 320.
[0054] The aggregator component 340 generates a single presence
document that conveys overall presence information related to the
single person who owns each of the computing devices 322-326 (event
382). In accordance with yet another embodiment of the invention,
this single presence document only specifies the highest
availability and activity levels of the computing devices, as
illustrated in FIG. 8. Thus, since the highest availability level
of the three devices is 300, and the highest activity level of the
three devices is 400, the aggregate availability and activity
levels are 300 and 400. Hence, the single presence document is
generated such that the presence agent can detect which of the
user's computing devices 322-326 indicates the highest degree of
presence upon the network. In this regard, the single (or
aggregate) presence document 400 indicates the availability level
402, activity level 404 and corresponding description attributes
406 and 408 associated with the desktop computer 322 and the laptop
computer 400, respectively. Additionally, the other presence
information 156 related to each computing device is included within
the single presence document 400 just as it was indicated in the
original presence documents 350-354. This single presence document
400 is then passed to the presence agent 152 operating upon the
server 328 (event 386), where it is stored in an accessible memory
location 158 for subsequent retrieval.
[0055] Those skilled in the art will appreciate that the resulting
single presence document generated by the aggregator component 340,
and having an aggregate availability level of 300 and an aggregate
activity level of 400, provides a more accurate indication of
presence for users that employ several computing devices. Unlike
conventional means for conveying the presence information of
several computing devices, the single presence document indicates
the presence information associated with each device (e.g., the
other relevant information 526), but only reflects the highest
availability and activity level of the devices. Consequently, the
information that most accurately reflects the presence of the user
is what ultimately gets conveyed to any watchers. It will also be
appreciated by those skilled in the art that because the aggregator
component 340 operates in connection with the presence agent 152,
the presence agent can call upon the aggregator component to
generate a new presence document in response to common tasks
performed by the server 328. For example, the presence agent 152
can activate the aggregator component 340 whenever a REGISTER
request is received by the server 328 from a computing device being
operated by the user 320, or conversely when a REGISTER request
expires. Also, the presence agent 152 in can activate the
aggregator component 340 whenever the server 328 receives a new
SERVICE message that requires processing. In this way, the most
up-to-date presence information for one or more computing devices
is continually maintained by the presence agent 152.
[0056] In view of the many possible embodiments to which the
principles of this invention may be applied, it should be
recognized that the embodiment described herein with respect to the
drawing figures is meant to be illustrative only and should not be
taken as limiting the scope of invention. For example, those of
skill in the art will recognize that the elements of the
illustrated embodiment shown in software may be implemented in
hardware and vice versa or that the illustrated embodiment can be
modified in arrangement and detail without departing from the
spirit of the invention. Therefore, the invention as described
herein contemplates all such embodiments as may come within the
scope of the following claims and equivalents thereof.
* * * * *