A method and system for providing extended presence information defined by sources other than the developer of a presence service (i.e., a third party) and for detecting when the extended information has changed significantly is provided. An extensible presence system defines a presence document for a publishing user having a section reserved for extended information provided by one or more third parties. For example, the presence document may be formatted using XML, and may contain tags for marking information in the presence document as extended information from a third party. One example of third party extended information of a publisher is a link to the publisher's website. The publisher's employer may provide each employee with a website and publish a link to each employee's website with the employee's presence information. Extended information goes beyond the standard presence information normally contained in a presence document as defined by the developer of the presence service. The extensible presence system publishes the presence document to a presence server, thereby making it available to subscribers of the system. For example, the publishing user may use a SIP client to publish information using a SIP PUBLISH request. Subscribing users, such as contacts of the publishing user, send subscription requests to the presence server to receive updates when the presence document for the publishing user changes. For example, each subscribing user may use a SIP client to send a SIP SUBSCRIBE request to the presence server to create a subscription to the publishing user's presence document. When the extended information provided by the third party is updated, the third party causes the extended information in the presence document maintained by the presence server to be modified. For example, the third party may provide the extended information of a publishing user to an existing SIP client of the user, which publishes a presence document with the extended information to a presence server. Alternatively, the third party may communicate directly with the presence server to update the extended information of the presence document for the publishing user. The third party may also indicate whether the change to the extended information is significant. For example, the extended information may contain a flag that is true when the change to the extended information is substantial, or interesting, and false otherwise. The extensible presence system may allow the third party provider of the information to determine what constitutes a substantial change. For example, if the third party provides GPS information about the location of the publishing user, the third party may consider movements by the publishing user of less than a certain threshold (e.g., 100 feet) to be insubstantial. In this example, the third party would set the interest flag only if the publishing user moved more than 100 feet from the last time the interest flag was set. Next, the presence server sends the updated presence document containing the updated extended information to subscribing users. For example, the presence server may send a SIP NOTIFY request to each subscribing user containing the updated presence document. In this way, third parties are able to provide extended presence information without having to convince a developer of a presence service to modify their format of presence documents or to duplicate functions of the existing presence service. Third parties can also indicate when changes to information provided by the third party are substantial which allows subscribing users to receive accurate presence information, without having to be bothered by changes that are insignificant. A third party can provide multiple instances of extended information and multiple third parties can provide different extended information for the same user, with each instance of extended information having its own indication of whether the extended information is substantial.
In some embodiments, the extensible presence system receives third party information through an automation application programming interface (“API”) of a client software application of the presence service. For example, each publishing user may run instant messaging software, and the third party may interact with the instant messaging software through the API to publish updated extended information. This type of publication is useful when the information published by the third party is available at the publishing user's client. For example, the third party may publish information about the song that the publishing user is currently playing on the computer running the instant messaging software. Alternatively, the third party may publish extended information directly to a presence server, such as when the information is provided by a service. The extended information may be provided by a telephone company, a Microsoft Sharepoint server, a Microsoft Exchange server, a Microsoft MapPoint server, or by another service. For example, the extended information may be provided by a calendaring service that indicates the conference room a publishing user is located in when the publishing user is participating in a meeting.
In some embodiments, the extensible presence system displays information provided by third parties in the user interface of the client software of subscribing users. For example, the client software may provide a details card that is displayed when a subscribing user selects a contact and requests detailed information about the selected contact. The details card may contain both standard presence information provided by the extended information service, such as the contact's status, as well as extended information provided by a third party. For example, if an employer provides each employee with a website, the employer may provide a link to the website in each employee's extended presence information, and the extensible presence system may display the link to the employee's website on the employee's details card. The extended information may be displayed wherever information about a publishing user is displayed, such as next to a contact in the user's contact list, in the user's details card, in a dialog box for displaying members of an email distribution list, or in a list of search results based on a search for users. In some embodiments, the client software or other components of the presence system may store extended information flagged as substantial until the user views the extended information. The system may also reset the flag for extended information flagged as substantial under certain conditions, such as after a subscriber has viewed the extended information.
In some embodiments, the extensible presence system provides a mechanism for third parties to prevent extended information from being displayed in the user interface. For example, the third party may want to publish information that is consumed by an application provided by the third party at each end of the conversation. The information may not make any sense if displayed to the subscribing user, but may be important to provide a unique user experience. For example, the third party may publish encrypted information using a publisher's private key that is only available to subscribers having the publisher's public key. A separate application provided by the third party may be used by each subscriber in conjunction with the client software of the presence service to provide the key to decrypt the information and for viewing the decrypted information.
In some embodiments, the extensible presence system provides an indication in the user interface of the client software when information provided by a third party has changed significantly. For example, the extensible presence system may display an asterisk next to a subscribing user's contacts in the client software that have new extended information. As another example, the details card for a contact may contain an asterisk next to each section that has changed significantly, including a section containing extended information provided by a third party. The extensible presence system may rely on the interest flag specified by the third party to determine when extended information has changed significantly. The extensible presence system may also use other criteria to determine when information has changed significantly. For example, the extensible presence system may maintain a timestamp that indicates when extended information was last published, and may not indicate a change as significant if the information was not published within a threshold (e.g., the last 24 hours). This prevents a user who has not signed on to the system for a long time (e.g., a month) from being inundated with new information indications. The threshold may be a static amount, or may be dynamically determined based on attributes or activity of the subscribing user. The extensible presence system may also track when a subscribing user has viewed information published by a publishing user, and may not indicate that information is significant (even though the interest flag may be set) if the subscribing user has already seen the information.
The computing device on which the 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 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 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 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 extensible presence 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. For example, although communications have been described using SIP, other suitable communication protocols could also be used. Similarly, although the system has been described as an enhancement to instant messaging systems, the system could also be used in other environments, such as to allow third parties to provide news, auction updates, or other information. Accordingly, the invention is not limited except as by the appended claims.