Method and system for supporting the communication of presence information regarding one or more telephony devices

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.

TECHNICAL FIELD

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

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.

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.

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

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.

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.

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

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.

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.

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.

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.

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.

DETAILED DESCRIPTION OF THE INVENTION

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.

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.

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

An example of a networked environment in which the invention may be used will now be described with reference toFIG. 1. The example network includes several computers20communicating with one another over a network30, such as the Internet, as represented by a cloud. Network30may include many well-known components, such as routers, gateways, hubs, etc. and may allow the computers20to communicate via wired and/or wireless media.

Referring toFIG. 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 computer20typically includes at least one processing unit42and memory44. Depending on the exact configuration and type of the computer20, the memory44may 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 inFIG. 2by dashed line46. Additionally, the computer may also have other features/functionality. For example, computer20may 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 computer20. Any such computer storage media may be part of computer20.

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

Computer20may also have input devices such as a keyboard, mouse, pen, voice input device, touch input device, etc. Output devices such as a display48, 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.

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 inFIG. 3. The server, labeled102, 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, labeled104, and the second computing device labeled106are devices capable of communicating with one another over a computer network using network telephony. A first user103uses the first computing device104, while a second user107uses the second computing device106. In order to support the communication of presence information, the server102includes 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 agent152receives 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 server102includes a memory158for storing the data. The registration program154processes registration request messages (e.g., an SIP REGISTER messages) received from over the network. Registration messages are sent to the registration program154by computing devices that are new to the network, and serve to “introduce” such new devices to the presence agent program152. Operating in connection with the presence agent152and registration program154is the access control list156. The ACL156may be implemented as a data structure, database, or even as a program, and is referenced by the server102to allow the server102to determine how it is supposed to interact with other devices on the network.

As shown inFIG. 3, the first user103operates the first computing device104to establish register with the server102. The registration program154handles this registration process. In some embodiments, the registration program154is 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 user103may 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.

The first computing device104executes a program, referred to as a presence user agent (PUA) that generates presence information relating to the first user103. 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 user107wishes to gain access to the presence information of the first user103, the second user107interacts with the second computing device106to generate a SUBCRIBE message. The second computing device106sends the message to the server102(event120). The SUBSCRIBE message alerts the server102that the second user107wants to “subscribe” as a watcher of the first computing device104and the corresponding first user103. 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 agent152to initiate a call to the server102to process the message as a presence subscription (as opposed to some other type of network event). In response to the subscription request, the server102(acting as a presence agent on behalf of the first computing device104) stores the contents of the request into a data structure150, referred to as an offline subscribes data structure. The offline subscribes data structure150is 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 structure150, 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 agent152.

After the subscription request is stored into the offline subscribes data structure150, the server102makes a determination as to whether to accept the subscription request. This determination is made according to rules or conditions defined by the first user103, which are maintained in the access control list (ACL)152. In general, the ACL152includes access preferences that informs the server102as 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 device104and first user103. The actual settings of the ACL152as defined by the first computing device104will be described in a later section of this description. When the subscription message is accepted, the presence agent152generates an acceptance message, such as a SIP202message (event124) and a NOTIFY message (event126), which the server102sends to the second computing device106. For standard telephony protocols such as SIP, the body of the NOTIFY message contains the presence information of the first computing device104and/or of the corresponding first user103. If the presence agent152rejects the request, the presence agent152generates an acceptance message (e.g., a SIP202message) in the same manner as when the request is accepted. However, the server102does not send presence information to the second computing device106, but rather sends a NOTIFY message containing no presence information. As a result, the second user107is allowed to subscribe as a watcher of the first user103, but does not gain access to the presence information.

According to an embodiment of the invention, access to presence information pertaining to the first user103and/or the corresponding first computing device104is limited only to those users specified by the ACL156. Since the server102accepts all subscription requests, access to the presence information of the first computing device104and/or the first user103is not dependent upon the first computing device104or first user103actually being present. In other words, it is possible for the first computing device104or first user103to 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 device104results in all SUBSCRIBE requests received by the server102being 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 server102, and, ultimately reduces its scalability.

The server102overcomes this challenge through the use of the offline subscribes data structure150. When the first computing device104and the first user103resume their activity upon the network after having previously not been present upon the network, the first computing device104sends a SUBSCRIBE request to the server102to obtain any data stored in the offline subscribes data structure150(event128). This subscribe request differs from the subscription request transmitted by the second computing device106for obtaining presence information (event120). In that, the subscribe message sent by the first computing device104indicates to the server102that the first computing device104wishes to determine which other devices, if any, have attempted to monitor its presence or that of the first user103during the offline period. In response to this request, the server102accesses the offline subscribes data structure150, extracts the data, and forwards an acceptance message to the first computing device104followed by a NOTIFY message (events130and132). 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 device104is able to recognize all of the computing devices and users that subscribed as watchers during the time it was not present on the network.

Once the first computing device receives the list of subscribers obtained from the offline subscribes data structure, the first computing device104and/or the first user103determines whether to accept or reject the subscription requests. The first user103makes this determination by responding to message prompts generated to a display screen110of the first computing device104by a presence enabled program (e.g., the PUA). In this scenario, the first user103responds using an input device such as a mouse or keyboard. Subscription requests can also be accepted or rejected by the first computing device104automatically, without user intervention, according to the preferences or auto-settings of the first computing device104. When a subscription request is accepted, the first computing device104generates an updated presence document, which is a file that contains the presence information, and forwards it to the server102(event134). The presence agent152, operating on the server102, processes the contents of the presence document, and stores the presence information obtained from the document into an accessible memory location158for subsequent retrieval. Also, upon receiving the presence information, the ACL156is updated to indicate that the second user107has been permitted to act as a watcher of the first computing device104and the first user103(event136). As such, the second computing device106may freely access the presence information of the first computing device104and first user103. On the other hand, if the subscription is not accepted, the ACL156is updated to indicate that the second user107is not to have access to the presence information (event136). No subsequent NOTIFY message is sent to the second computing device106in this case, ensuring that the second user107is not aware of the presence of the first computing device104or first user103.

In the foregoing paragraphs, the operation of the server102for 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 device104is able to insert descriptive presence information into any updated presence document and transmit the presence document to the server104to the presence agent152Further, the server102recognizes 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 device104and/or the first user103. Also, the first computing device104is able to update the ACL156to control the extent to which other devices may access the presence information maintained by the server102. In the following paragraphs, the mechanisms employed by the first computing device104and server102for setting presence and controlling access to the presence information is described. This functionality is presented inFIGS. 4-5.

Setting and Updating Presence Information

Referring now toFIG. 4, a computer network includes a first computing device200that is operated by a first user200, a server201, and a second computing device211having that is operated by a second user210. Each of these components has much of the same functionality as those ofFIG. 3, with additional features described in the following paragraphs. The first computing device200is capable of generating presence information and exchanging it in the form of a presence document with the server201in accordance with an embodiment of the invention. The presence document207contains information pertaining to the presence of the first computing device200and first user202. Specifically, the first computing device200submits the presence document by sending a SERVICE message204to the server201(event300). The service message204conforms 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 server201, that causes the agent152operating on the server201to set (update) the presence information for the first user202and the first computing device200in memory158. 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.

In further accordance with an embodiment of the invention, the presence document207generated by the first computing device200is comprised of one or more attributes that relate to the presence of the first computing device200or corresponding first user202. Such attributes include an availability level208and activity level209. Also, in association with the availability level208and activity level209is the description attribute210. 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 device200. For each presence document generated by a computing device related to the first user202, one activity level and availability level is specified. By specifying these attributes within the presence document207, the server102is able to provide a more accurate indication of the presence for the first computing device200or first user202to a user211that is acting as a watcher.

The availability level208is an attribute that indicates whether the first computing device200or first user202may actually receive calls. The first computing device200, 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.

TABLE 1Availability level settingsAssociatedAvailabilityDescription ofLevelAvailability LevelExplanation000OfflineThe user cannot receive calls.100UndeterminedThe user may be online, but there is noway to know until a call is attempted.200ConnectedThe user has a device currentlyconnected that can receive calls.300OnlineThe user is in proximity to a device thatcan receive calls.

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 device200, and that the invention is not limited to any specific implementation. For example, the first computing device200may 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 value250: “likely to take call”. If the second computing device211is 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 to200: “connected”).

The activity level209, provides an indication of the action in which the first computing device200or corresponding first user202is engaged. Also, the activity level209indicates to the second computing device211or other devices that are in the role of watchers the likelihood of calls or messages being accepted by the first computing device200or first user202. Various activity levels may be specified within the presence document207, as shown in Table 2 below.

TABLE 2Activity level settingsAssociatedActivityDescription ofLevelActivity LevelExplanation000No explicit activityThere is no information about the activityof the user.100AwayThe user is away from the device150At lunchThe user is taking a lunch break200IdleNo specific activity is currently beingengaged300TemporarilyThe user is not available at theunavailablepresent time400ActiveThe user is active500In callThe user is already participating in acommunications session.600BusyThe user is busy700Do not disturbThe user does not want to participate in acommunication session800Always interruptibleUser will stop whatever they're doing toreceive a call.

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 level209of the208first computing device200or user202in 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 watcher211to determine if calls can actually be placed with the first computing device200. Just because the first user202is busy does not mean that calls are not to be received from the second computing device210. 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 (ACL)

As described earlier with respect toFIG. 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 inFIG. 5.

The Set ACL procedure call is an executable function or method that specifies the ACL settings for the computing device300of the network shown inFIG. 3. As shown, the computing device300submits a SERVICE message304to a server102in order to initiate the setting, or updating, of the ACL156. The SERVICE message comprises one or more setACL procedure calls305, which trigger the presence agent152operating on the network device102to set (update) the ACL156. 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 message304in order to authorize one or more subscribers. When the network device102receives the SERVICE message, the presence agent152processes it, and the access preferences306indicated by the service message304are stored within the ACL156.

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:

Abbre-RightValueviationMeaningINCOMINGAllow“A”User having this level of access caninvite another user to communicate.Timeout“T”User having this level of access caninvite another user to communicate,but the user's real-time communicationclient program will always timeout thecall. This is a polite way of blockingthe and equates to the phone “ringingoff the hook”.Deny“D”User having this level of access cannotinvite another user to communicate.PRESENCEAllow“A”A user can query or subscribe toanother user's presence and will benotified when status changes occurPrompt“P”A user having this level of access canattempt to subscribe to another user'spresence, but the other user will beprompted for permissionBlock“B”A user having this level of access maysubscribe to another user's presence,but the other user will always appearto be offline.Deny“D”A user with this level of access cannoteven subscribe to the other user

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.

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:

IdentityAccess Right(s)MeaningALLINCOMING = AllowAnybody can communicate withjoeb@microsoft.comPRESENCE = PromptNobody can access the joeb's presencewithout joeb being prompted to grantpermission.DOMAIN “microsoft.com”INCOMING = AllowAnybody at Microsoft cancommunicate with JoebPRESENCE = PromptNobody at Microsoft can access thejoeb's presence without joeb beingprompted to grant permission.URIINCOMING = DenyThe user roberbr@microsoft.com is“roberbr@microsoft.com”PRESENCE = Denyspecifically blocked from any accessto joeb.
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:

IdentityAccess Right(s)MeaningDOMAININCOMING = AllowAllow others in the user's domain full“<insertPRESENCE = Allowaccess to the userdomainName>”ALLINCOMING = AllowDefaults the access for all otherPRESENCE = Promptusers to allow incomingcommunication, but noaccess to presence withoutthe owner explicitly granting
The administrator may also set a “mandatory” access control list that is applied to all users in a particular group.

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 toFIGS. 6-8.

Referring now toFIG. 6, a user320employs several telephony devices, including a desktop computer322, laptop computer324, and cell phone326. Each device is registered with a server328, and generates presence information pertaining to itself and/or the corresponding user320. To communicate the presence information with watchers410(or several watchers), each of the registered devices322-326submits a SERVICE message to the server328that allows it to invoke the Set Presence procedure call, as described earlier. Upon receiving the SERVICE messages (and corresponding presence documents), the server328executes an aggregator module340that 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 level208and activity level209of a presence document207, 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 agent152can determine which document most accurately reflects the presence of the user320and the user's corresponding computing devices322-326. In turn, the presence agent152conveys this information to the watcher320to ensure the watcher320has access to the most accurate presence information.

With respect now toFIG. 7, the aggregator component340operates upon the server328to interpret presence documents generated by one or more registered devices, in accordance with an embodiment of the invention. The aggregator component340is 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 (desktop322, laptop324and cell phone326), and conveyed as presence documents350-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 document350generated by the desktop computer322, for example, which specifies an availability level356equal to 300 and an activity level358equal to 000. The activity358and availability levels356provide an indication of the current state or operation of the desktop computer322or user320, and correspond to the description attributes “online”360and “no explicit activity”362respectively. Also included within the presence document350is any other information364pertaining to the presence of the desktop computer322, such as diagnostic data, user profile data, or the like. Like the desktop computer322, the laptop computer324and cell phone326also generate presence documents in a similar fashion.

Once the server328receives the presence documents350-354, the aggregator component340performs a computation to determine which document indicates the highest presence priority setting (event380). More specifically, the aggregator component340calculates 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 computer322, laptop computer324and cell phone326as calculated as shown in TABLE 4 below.

TABLE 4Presence priority settings for the registered devices of FIGS. 6 and 7DeviceAvailabilityActivityDescriptionDesktop Computer 322300000online, no explicitactivityLaptop computer 324200400connected, activeCell Phone 326000000offline, no explicitactivityAggregate presence300400online, active
As TABLE 4 shows, the laptop computer404has a presence activity setting of400, the highest of all the computing devices. This setting indicates to the presence agent152that the laptop computer324is connected to the network for receiving calls, and that the user320is actively using the laptop computer326. Hence, while the desktop computer322and cell phone326are registered with the server328, their presence priority settings indicate a lesser likelihood of them engaging in a communication session (e.g., the user320is not currently using these devices). In contrast, a higher presence priority setting more explicitly and accurately indicates the presence of the computing devices322-326and user320.

The aggregator component340generates a single presence document that conveys overall presence information related to the single person who owns each of the computing devices322-326(event382). 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 inFIG. 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 devices322-326indicates the highest degree of presence upon the network. In this regard, the single (or aggregate) presence document400indicates the availability level402, activity level404and corresponding description attributes406and408associated with the desktop computer322and the laptop computer400, respectively. Additionally, the other presence information156related to each computing device is included within the single presence document400just as it was indicated in the original presence documents350-354. This single presence document400is then passed to the presence agent152operating upon the server328(event386), where it is stored in an accessible memory location158for subsequent retrieval.

Those skilled in the art will appreciate that the resulting single presence document generated by the aggregator component340, and having an aggregate availability level of300and an aggregate activity level of400, 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 information526), 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 component340operates in connection with the presence agent152, the presence agent can call upon the aggregator component to generate a new presence document in response to common tasks performed by the server328. For example, the presence agent152can activate the aggregator component340whenever a REGISTER request is received by the server328from a computing device being operated by the user320, or conversely when a REGISTER request expires. Also, the presence agent152in can activate the aggregator component340whenever the server328receives 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 agent152.