The described technology relates generally to providing notifications of changes to presence information.
Real-time conversations between conversation participants via their computer systems are becoming increasingly common. Such real-time conversation requires that the participants be present at their computer systems (e.g., personal digital assistants) and able to respond when a communication is received. A common form of real-time conversation is provided by instant messaging services. An instant messaging service allows participants to send messages and have them received within a second or two by the other participants in the conversation. The receiving participants can then send responsive messages to the other participants in a similar manner. To be effective, a real-time conversation relies on the participants' becoming aware of, reviewing, and responding to received messages very quickly. This quick response is in contrast to conventional electronic mail systems in which the recipients of electronic mail messages respond to messages at their convenience.
When an initiating participant wants to start a real-time conversation, that participant needs to know whether the intended participants are available to respond in real time to a message. If not, then communications via conventional electronic mail, voice mail, or some other mechanism may be more appropriate. For example, if the computers of the intended participants are currently powered off, then a real-time conversation may not be possible. Moreover, if their computers are currently powered on, but the intended participants are away from their computers, a real-time conversation is also not possible. The initiating participant would like to know the availability of the intended participants so that an appropriate decision on the form of communication can be made.
The availability status of an entity such as a computer system or a user associated with that computer system is referred to as “presence information.” Presence information identifies the current “presence state” of the user. Users make their presence information available so that other users can decide how best to communicate with them. For example, the presence information may indicate whether a user is logged on (“online”) with an instant messaging server or is logged off (“offline”). Presence information may also provide more detailed information about the availability of the user. For example, even though a user is online, that user may be away from their computer in a meeting. In such a case, the presence state may indicate “online” and “in a meeting.”
In an instant messaging context, a publishing user (“publisher”) may provide their presence information to a presence server that then provides the presence information to subscribing users (“subscribers”). Thus, a presence server may use a subscriber/publisher model to provide the presence information for the users of the presence service. Whenever the presence information of a user changes, the presence server is notified of the change by that user's computer system and in turn notifies the subscribing users of the change. A subscribing user can then decide whether to initiate an instant messaging conversation based on the presence information of the intended participants. For example, if the presence information indicates that a publishing user is currently in a conference telephone call, then the subscribing user may decide to send an instant message, rather than place a telephone call, to the publishing user. If the subscribing user, however, needs to call and speak with the publishing user, the subscribing user needs to monitor the presence information of the publishing user to know when the call can be placed. When the subscribing user notices that the publishing user's presence information indicates that the telephone conference has been concluded, then the subscribing user can then place the telephone call.
It can, however, be difficult for a user to actually become aware that a particular user, also referred to as a “contact,” has become available to process a certain type of communication. The user may need to check each change in presence information of each contact. The difficulty is increased when the user subscribes to the presence information of many contacts. For example, a member of a large design team (e.g., with 100+ members) may subscribe to the presence information of all the other members so that the subscribing member will know when and how best to communicate with the other members. At any given time, the member may be currently interested in communicating, however, only with a small group of other members and wants to be notified when those members of interest become available for communicating. Because the member subscribes to the presence information from all the other members, the member is notified whenever any member's presence information changes. Thus, the member needs to monitor all those notifications to see whether any of them relate to a member of interest. It would be disruptive for the member to have to check their computer every time a notification is received to see if it relates to a member of interest.
It would be desirable to have a mechanism that would allow a subscribing user to recognize when a publishing contact who is currently of interest becomes available for communicating without having to monitor the presence information of all subscribed-to contacts.
A method and system for providing notifications of changes in the presence state of contacts is provided. A notification system allows a user to specify those contacts of interest for whom the user wants to be notified when the contact enters a certain presence state. A user may subscribe to the presence information of many contacts, but may only currently be interested in a change in a presence state of contacts of interest. When presence information is received about a contact, the notification system determines whether the contact is a contact of interest as specified by the user. If so, then the notification system determines whether the presence information indicates a change in presence state that is of interest to the user. If the contact and the change in presence state are of interest to the user, the notification system notifies the user.
A method and system for providing notifications of changes in the presence state of contacts is provided. In one embodiment, a notification system allows a user to specify those contacts of interest for whom the user wants to be notified when the contact becomes available for communicating (or more generally enters a certain presence state). A user may subscribe to the presence information of many contacts, but may only currently be interested in a change in a presence state of certain specified contacts. For example, a user may want to place a telephone call to a certain contact, but the contact's presence information may indicate that the contact is currently in a meeting. The user would like to be notified when that contact becomes available to answer a telephone call. When presence information is received about a contact, the notification system determines whether the contact is a contact of interest as specified by the user. If so, then the notification system determines whether the presence information indicates a change in presence state such that the contact is now available to communicate with the user. If the contact is available to communicate, the notification system notifies the user, for example, by displaying a dialog box indicating that the contact is now available to communicate. The dialog box may also identify various options for communicating with the contact. For example, the dialog box may include a button for creating and sending an instant message to the contact or for placing a telephone call to the contact. If the contact or the change in presence state is not of interest (e.g., the contact is still not available to communicate), then the notification system does not notify the user. If a user is no longer interested in being notified when a certain contact becomes available to communicate, then the user can indicate that the user has no further interest in being notified when the contact becomes available. In this way, rather than being notified of all changes in presence state for all contacts, a user can selectively indicate those contacts of interest for whom the user wants to receive notifications. The user is thus provided with notifications for only those contacts that are of current interest.
In one embodiment, the notification system may notify the user whenever a contact of interest becomes available to communicate with the user. Each presence state may have an associated attribute that indicates whether the contact in that presence state is available to communicate. For example, the presence state of “on the phone” may have its attribute set to indicate that the contact is not available to communicate, whereas the presence state of “working on the computer” may have its attribute set to indicate that the contact is available to communicate. The notification system may also include attributes to indicate the method of communication that may be available in each presence state. For example, the presence state of “in a meeting” may have its attribute set to indicate that the contact is available to receive an instant message (e.g., via a personal digital assistant), but not available to receive a telephone call. The notification system may also allow a contact to specify these attributes. For example, one contact may specify unavailability to communicate when their presence state is “in a meeting,” whereas another contact may specify availability to receive an instant message. The notification system notifies the user of the availability of a contact to communicate and may provide with the notification an indication of the methods of communication that the contact is available to receive. For example, if a contact is only available to receive an instant message, then the notification may include an option to send an instant message, but not an option to place a telephone call.
In one embodiment, the notification system may allow a user to identify those presence states for which the user wants to receive notifications when a contact enters those states. For example, a user may want to be notified when a contact's presence state changes to “in a meeting,” irrespective of the availability of the contact to communicate. The notification system may allow a user to identify those presence states globally for all contacts or on a contact-by-contact basis.
In one embodiment, the notification system may allow a user to select the method of notification that the notification system uses. For example, one user may want to be notified via a pop-up dialog box, whereas another user may want to be notified by a call to the user's cell phone. The notification system may allow a user to set the method of notification based on the current presence state of the user. For example, the user may select to receive notifications only via their cell phone when their presence state is “in the car.” Alternatively, the notification system may automatically identify the best method of notification based on the user's current presence state. For example, if the presence state of the user is “in the car,” then the notification system may automatically decide to notify the user via their cell phone, rather than a pop-up dialog box. Alternatively, the notification system can notify the contact that a user is waiting to start a conversation. The notification system may give the contact the option of selecting the mode of communication or not allowing the conversation.
The computing device on which the notification system is implemented may include a central processing unit, memory, input devices (e.g., keyboard and pointing devices), output devices (e.g., display devices), and storage devices (e.g., disk drives). The memory and storage devices are computer-readable media that may contain instructions that implement the notification system. In addition, the data structures and message structures may be stored or transmitted via a data transmission medium, such as a signal on a communication link. Various communication links may be used, such as the Internet, a local area network, a wide area network, a point-to-point dial-up connection, a cell phone network, and so on.
Embodiments of the notification system may be implemented in various operating environments that include personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, programmable consumer electronics, digital cameras, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and so on. The computer systems may be cell phones, personal digital assistants, smart phones, personal computers, programmable consumer electronics, digital cameras, and so on.
The notification system may be described in the general context of computer-executable instructions, such as program modules, executed by one or more computers or other devices. Generally, program modules include routines, programs, objects, components, data structures, and so on that perform particular tasks or implement particular abstract data types. Typically, the functionality of the program modules may be combined or distributed as desired in various embodiments.
From the foregoing, it will be appreciated that specific embodiments of the notification system have been described herein for purposes of illustration, but that various modifications may be made without deviating from the spirit and scope of the invention. One skilled in the art will appreciate that the notification system may be used by a user who wants to have a face-to-face conversation with a contact. For example, when the user is notified that the contact is available, the user could walk to the contact's office to have the conversation. One skilled in the art will appreciate that a “telephone call,” as used in this description, encompasses various types of voice conversations (e.g., voice over IP and voice over traditional telephone systems). The notification system can also be used to notify a user when a contact becomes available for many different types of conversations. For example, a user may request to be notified when a contact becomes available for application sharing or video conferencing. The contact may be available for a telephone call or an instant message conversation but may not be available for application sharing, because their personal digital assistant does not support application sharing. In such a case, the user does not want to be notified of the contact's availability until the contact can share an application. One skilled in the art will appreciate that a contact could be a device such as a printer, copy machine, conference room, and so on. Accordingly, the invention is not limited except as by the appended claims.