WO2005032045A1 - Method and system for busy presence state detection in an instant messaging system - Google Patents

Method and system for busy presence state detection in an instant messaging system Download PDF

Info

Publication number
WO2005032045A1
WO2005032045A1 PCT/US2004/031622 US2004031622W WO2005032045A1 WO 2005032045 A1 WO2005032045 A1 WO 2005032045A1 US 2004031622 W US2004031622 W US 2004031622W WO 2005032045 A1 WO2005032045 A1 WO 2005032045A1
Authority
WO
WIPO (PCT)
Prior art keywords
activity
presence state
computer system
user
recited
Prior art date
Application number
PCT/US2004/031622
Other languages
French (fr)
Inventor
Rahul L. Shah
Original Assignee
Sun Microsystems, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems, Inc. filed Critical Sun Microsystems, Inc.
Priority to EP04785117.5A priority Critical patent/EP1673899B1/en
Publication of WO2005032045A1 publication Critical patent/WO2005032045A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • G06Q10/107Computer-aided management of electronic mailing [e-mailing]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/04Real-time or near real-time messaging, e.g. instant messaging [IM]

Definitions

  • TITLE METHOD AND SYSTEM FOR BUSY PRESENCE STATE DETECTION LN AN INSTANT MESSAGING SYSTEM
  • This invention relates to instant messaging systems and, more particularly, to instant messaging presence state information.
  • Instant messaging systems such as SunONE Instant Messenger, AOL Instant Messenger (ATM), and Yahoo! Messenger, for example, may provide a convenient method for users of a computer system to interact with one another in various different ways.
  • instant messaging systems provide the capability for several computer system users to "chat" or exchange messages nearly instantaneously, such that when one user enters and sends a message, another user sees that message soon thereafter.
  • instant messaging systems may provide users engaging in such a chat the ability to see their messages interspersed with those of other respondents and displayed in the order the messages were exchanged.
  • Instant messaging systems may thus provide a context for dialogue when other modes of communication are inaccessible or inconvenient.
  • instant messaging systems may provide other features in addition to a chat operation.
  • a given instant messaging system may provide for users to establish static virtual "conference rooms," which may permit users to engage in chats with whoever happens to be in the virtual conference room at a given time.
  • Such a feature may, for example, enable users situated at different locations to conduct group meetings.
  • a given instant messaging system may enable users to send alerts to one another.
  • an instant messaging alert may be used to convey information when no response is desired, such as a, meeting reminder, for example.
  • an instant messaging presence state is implemented.
  • a presence state may include a status indication, such as a text message that a user selects from a list or enters directly. Changes to a user's presence state may then become visible to other users of the system. For example, if a given user is busy with other tasks, he or she may select a "busy" instant messenger presence state, which may indicate a busy status to other users.
  • the presence state may effectively indicate a given user's presence status to other users of a system.
  • a user may fail to select the presence state that actually corresponds to that user's status at a given time. For example, a given user may be busy with other tasks but forget to select a busy presence state. Thus, other users may potentially interrupt the given user with requests to chat or other instant messenger operations.
  • a given user indicates an availability to chat but is actually away at an appointment, other users may mistakenly assume the given user is in fact available.
  • the method may include detecting a computer system activity level indicative of computer system activity, dete ⁇ nining whether the activity level exceeds an activity threshold in response to detecting the activity level, and transitioning a presence state of an instant messenger to a busy state in response to determining that the activity level exceeds the activity threshold, where the presence state corresponds to a given user.
  • the method may further include determining whether the activity level does not exceed the activity threshold subsequent to transitioning the presence state to the busy state, and transitioning the presence state of the instant messenger to an online state in response to determining that the level of computer system activity does not exceed the activity threshold.
  • the system may include a computer system and an mstant messenger software module configured to execute on the computer system.
  • the instant messenger software module may be further configured to detect a computer system activity level indicative of computer system activity, determine whether the activity level exceeds an activity threshold in response to the detection, and transition a presence state of the mstant messenger software module to a busy state in response to the detemiination that the activity level exceeds the activity threshold, where the presence state corresponds to a given user.
  • the instant messenger software module may be further configured to determine whether the activity level does not exceed the activity threshold subsequent to ti'ansitioning the presence state to the busy state, and to transition the presence state of the instant messenger software module to an online state in response to determining that the level of computer system activity does not exceed the activity threshold.
  • FIG. 1 is a block diagram illustrating one embodiment of an mstant messaging software system.
  • FIG. 2 is a block diagram illustrating one embodiment of a system configured to execute instant messaging system software modules.
  • FIG. 3 is a block diagram of one embodiment of an exemplary computer system.
  • FIG. 4A is a flow diagram illustrating the operation of one embodiment of an instant messaging system during processing of presence state using computer system activity information.
  • FIG. 4B is a flow diagram illustrating the operation of a second embodiment of an instant messaging system during processing of presence state using computer system activity information.
  • FIG. 5 is a flow diagram illustrating the operation of one embodiment of an mstant messaging system during processing of presence state using schedule information.
  • FIG. 6 is a flow diagram illustrating the operation of one embodiment of an instant messaging system during selective processing of instant messaging operations.
  • FIG. 7 is a flow diagram illustrating the operation of another embodiment of an instant messaging system during selective processing of instant messaging operations.
  • FIG. 8 is a flow diagram illustrating the operation of one embodiment of an instant messaging system during execution of instant messaging operations in response to presence state changes.
  • instant messenger (IM) system 10 includes the following software modules: instant messenger clients 100a and 100b, web browsers 110a and 110b, IM multiplexor 130, IM server 140, directory server 150, SMTP server 160, web server 170, IM resources 180, and calendar server 190. Arrows interconnecting the software modules illustrated in FIG. 1 represent communication paths between the interconnected modules, through which data and control information may be passed.
  • Communication along the illustrated paths may be implemented using a variety of software techniques.
  • software function calls such as may be defined in an application programming interface (API) may be used to implement communication between software modules.
  • software modules may communicate by passing messages, for example directly through a commonly-defined message passing port interface or indirectly through reading and writing shared memory.
  • software modules may communicate over a network mfrasrructure using a protocol such as hypertext transfer protocol (HTTP), file transfer protocol (FTP), or transmission control protocol (TCP), for example.
  • HTTP hypertext transfer protocol
  • FTP file transfer protocol
  • TCP transmission control protocol
  • instant messaging may provide a mode of communication among two or more users of a computer system that minimally provides the capability for users to exchange text messages in real time, which messages may be referred to as instant messages.
  • instant messaging may further allow users exchanging instant messages to view all instant messages exchanged (including a user's own entered instant messages) in the order they were exchanged.
  • mstant messagmg may include numerous other mstant messagmg opeiations as described m detail below
  • an mstant messenger may comp ⁇ se a software application or a hardware device with which a given user mteracts to engage m mstant messagmg opeiations
  • An mstant messengergei may also be leferred to herem as an instant messenger client
  • an mstant messagmg software system may compiise one or more software modules configured to implement mstant messagmg, as described m furthei detail below
  • Instant messenger (IM) clients 100a and 100b which may be referred to mdividually or collectively herem as IM client 100, may be configured to provide access to mstant messagmg opeiations for one or more users of IM system 10 Although only two instant messenger clients are illustrated m FIG 1, it is contemplated that IM system 10 may include an arbitiary number of IM clients 100
  • IM client 100 may provide access to mstant messaging opeiations that may include a chat operation, an alert operation, a polling opeiation, and a news channel opeiation, although m other embodiments it is contemplated that diffeient lands and combinations of mstant messagmg opeiations may be provided Geneial descnptions of the operation of the chat, alert, poll g and news channel opeiations from the peispective of IM client 100 follow Greater detail legaidmg the operation of the other modules of
  • presence state may comprise a state indicative of the presence or absence of a given instant messaging user, as well as any additional available information about that's user's current activity.
  • presence state may include textual infonnation such as "online,” “busy,” “away,” “be right back,” “on the phone,” “out to lunch,” and “gone home.”
  • other default presence states may be defined and users may be able to create new presence states.
  • a presence state may include numeric codes or encrypted values.
  • a given user may manually select a particular presence state value from a menu, list, or other selection mechanism, and the selected presence state may then be displayed to other users of IM system 10 whenever they query the status of the given user.
  • user A may select the "away" presence state in IM client 100a. If user A is in user B's customized list of users of DVI system 10, IM client 100b may show the "away" presence state associated with user A whenever user B views the list. Alternatively, IM client 100b may show the "away" presence state associated with user A if user B specifically queries the status of user A within IM system 10, such as by providing user A's user ID.
  • User B may then utilize the presence state of user A in dete ⁇ nining whether to initiate or respond a chat session request with user A.
  • the presence state of a given user may change in response to events other than manual selection by that user, and changes in presence state may result in actions beyond simply displaying that user's presence state to other users of IM system 10.
  • user A of IM system 10 may wish to communicate information to user B without expecting a response from user B. Rather than attempt to establish a chat session in tins case, user A may send an alert to user B using an alert operation.
  • the alert operation may provide a unidirectional communication capability among users of IM system 10.
  • user A may determine whether user B is online. After making this detemiination, user A may enter the information to be sent to user B via IM client 100a, and may then direct IM client 100a to send an alert to user B. Alternatively, user A may send the alert without determining whether user B is online, whereupon IM system 10 may queue the alert for later delivery to user B if user B is currently offline. If user B is online, upon receiving the infonnation in the alert IM client 100b may then display the alert for user B.
  • IM client 100b may generate a visual and/or audible indication that an alert has ai ⁇ ived and may cause the infonnation content of the alert to be displayed on a video display device or played audibly via an audio system.
  • IM client 100b may notify IM client 100a, winch may in turn display to user A a notification (such as a text message, for example) that user B has received and acknowledged the alert.
  • alerts may originate from sources other than individual users of IM system 10.
  • a given user may customize an email application to send an alert to the IM client 100 of that user whenever an email message arrives for that user.
  • a calendar application may be configured to send an alert when particular calendar appointments come due.
  • a polling operation may provide a mechanism for a given user to solicit responses from other users of IM system 10 without establishing a chat session with each solicited user.
  • the polling operation may provide a bidirectional question-and-response commumcation capability among users of IM system 10, wherein a given user (referred to herein as d e respondent) may formulate a question to be directed to other users (refened to herein as the recipients) along with a list of possible responses to the question.
  • d e respondent a given user
  • each recipient may select a particular response and send the selected response to the respondent.
  • the polling operation may support "write-in" responses that may allow recipients to specify a response other than those listed in the poll.
  • the respondent may enter a polling question as well as a list of possible responses via IM client 100a, and may further select the recipients from the users of IM system 10 by using a directory service or a predefined list of users as described above.
  • the respondent may then direct IM client 100a to send the poll to the specified recipients.
  • the recipients may receive the poll via their respective IM clients 100, which may display the polling question and responses in a manner similar to displaying an alert as described above.
  • Each recipient may then select a response and direct his or her respective IM client 100 to send the selected response to the respondent.
  • IM client 100a may receive and display responses to the respondent, and may also indicate which recipients have and have not responded to the poll.
  • a news channel opeiation may provide a mechanism for a given user to disseminate information to other users of Evl system 10 without establishing a chat session with each other user or sending an alert or poll to each other user.
  • the news channel operation may provide a forum, referred to herem as a news channel, for users to post and read infomiation.
  • a given news channel may be static, in that information posted to it may remain available to be read until it is explicitly deleted or until it expires.
  • a news channel may thereby provide an asynchronous communication mechanism in wliich users may exchange information without simultaneously actively using IM system 10.
  • a given user may use IM client 100a to compose infonnation, such as text infonnation, to be posted to a particular news channel specified by the user. That user may then direct IM client 100a to post the infomiation to the specified news channel and may optionally specify a date and/or time when the posting should expire. Other users may subsequently direct their respective IM clients 100 to view the contents of the particular news channel and may compose and post then responses or other infonnation.
  • infonnation such as text infonnation
  • IM system 10 some instant messagmg operations described above as well as some sub-operations of those operations may not be available to all users of the system. For example, in one embodiment, certain news channels may only be accessed for reading by a specific group of users, and only a subset of that group may be allowed to post content to those news channels. Similarly, some users may be restricted from establishing chat sessions or sending alerts to other users. In such embodiments, privileges to use various features and operations of IM system 10 may be assigned to individual users. In one embodiment, IM server 140 (described below) may be configured to manage user privileges and control access to features and operations of IM system 10 based on those privileges.
  • IM client 100 may provide the most user-visible portion of these operations, in the embodiment of IM system 10 illustrated in FIG. 1 numerous software modules may interact to support instant messaging functionality.
  • IM clients 100a and 100b are configured as web-based clients associated with a respective web browser 100a or 100b rather than as standalone applications, although as noted below, in alternative embodiments IM clients 100a and 100b may be configured as standalone applications.
  • a user may begin using a given web-based IM client 100 by navigating to a particular uniform resource locator (URL) identifying a path to the IM client software from within a conesponding web browser 110.
  • URL uniform resource locator
  • web browser 110 may be a software application configured for accessing documents or applications over a network via a protocol such as hypertext transfer protocol (HTTP).
  • HTTP hypertext transfer protocol
  • web browser 110 may be a software application such as Netscape NavigatorTM or Netscape CommunicatorTM, although in other embodiments different browser application software may be used.
  • IM client URL for example by typing the URL into the appropriate input field of web browser 110
  • web browser 110 requests and downloads IM resources 180 via web server 170.
  • web server 170 may be a software application configured to deliver documents or applications to a web browser in response to a request.
  • web server 170 may be a software application such as Sun ONE Web Server, although in other embodiments different web server application software may be used.
  • IM resources 180 may include executable application code files, such as Java files, for example. When downloaded by and executed within web browser 110, IM resources 180 may provide the software functionality of IM client 100. For example, execution of IM resources 180 may cause an IM user interface to be displayed within web browser 110 or in a window separate from web browser 100. It is noted that in some embodiments, web browser 110, web server 170, and IM resources 180 may all be located on and operate from a single computing device. In other embodiments, some or all of these software modules may be located on and operate from separate computing devices interconnected via a commumcation network such as an Ethernet network, for example.
  • IM clients 100 may communicate with one another to perform the chat, alert, poll, and/or news channel operations described above, as well as any other instant messaging operations that may be implemented in a particular embodiment.
  • communication among IM clients may take place through IM 1 multiplexor 130 and IM server 140.
  • IM server 140 may be a software application configured to control IM privileges and security, for example by limiting access to certain instant messaging operations by certain users of IM system 10.
  • IM server 140 may also store presence state data associated with each user of IM system 10 and make the presence state data visible to users that request it.
  • DVI server 140 may be configured to support the execution of the various instant messagmg operations by IM clients 100.
  • IM server 140 may establish chat operations by responding to a request to initiate a chat operation from one IM client 100, locating the appropriate IM client 100 associated with the target user of the chat operation request, and notifying the latter IM client 100 of the chat operation request.
  • IM server 140 may be configured to mediate the subsequent exchange of data among the IM clients 100 participating in the chat session, while in other embodiments IM server 140 may be configured only to initiate the chat session, whereupon IM clients 100 may then directly communicate without server intervention.
  • IM server 140 may also be configured to receive alert and poll operations originating from EV1 clients 100 and route such operations to the IM clients 100 of the appropriate users.
  • IM server 140 may be configured to receive and store messages destined for the various news channels that have been configured in IM system 10 and to deliver the contents of those news channels to IM clients 100 of requesting users.
  • IM system 10 there may be numerous IM clients 100 that collectively generate numerous instant messaging operations to be serviced by a given M server 140.
  • multiple instances of IM server 140 may be employed to ensure adequate system performance.
  • IM multiplexor 130 may be configured to consolidate multiple requests from IM clients 100 into a single communication stream such as a transmission control protocol (TCP) stream, which may then be sent to a given IM server 140 over a single communication port.
  • TCP transmission control protocol
  • interposing IM multiplexor 130 between LM clients 100 and a given IM server 140 may increase system performance by reducing the number of individual communication ports a given IM server 140 may need to service.
  • IM server 140 may be configured to authenticate the user and to detennine what privileges of IM system 10 operation that user may be entitled to.
  • IM server 140 may be configured to authenticate a given user by receiving a user ID and password from the IM client 100 associated with a user seeking to initiate mstant messagmg operations.
  • IM server 140 may then consult a directory server 150 to detem ine whether the user ID and password combination is valid.
  • directory server 150 may be a software application configured to store data regarding authorized users of IM system 10, such as a user ID, full name, and contact information for a given user.
  • directory server 150 may implement the lightweight directory access protocol (LDAP), whereas in other embodiments dnectory server 150 may store user data using a different protocol. If directory server 150 confinns the validity of the user ID and password supplied by IM server 140, IM server 140 may update the presence status of the user in question to reflect an online status and allow the user to proceed to initiate instant messaging operations.
  • LDAP lightweight directory access protocol
  • IM server 140 may update the presence status of the user in question to reflect an online status and allow the user to proceed to initiate instant messaging operations.
  • IM server 140 may be configured to send email to users who are offline when an alert is directed to them. Specifically, IM server 140 may communicate with SMTP server 160 to provide the content and addressee infonnation for such emails.
  • SMTP server 160 may be a software application configured to process the sending and receiving of email.
  • SMTP server 160 may implement the simple mail transfer protocol (SMTP), although in other embodiments other protocols may be employed.
  • SMTP simple mail transfer protocol
  • the anival of email destined for a given online user may trigger an instant messaging alert operation to that user.
  • IM server 140 may be configured to receive incoming email anival infomiation and to direct alerts to the appropriate IM clients 100 in response to such infonnation.
  • IM system 10 includes calendar server 190.
  • Calendar server 190 may be a software application configured to maintain schedule infomiation for a given user of IM system 10, where such schedule infomiation may indicate an activity status of a given user at a given time of day.
  • calendar server 190 may be compliant with the Internet Calendaring and Scheduling Core Object Specification standard (RFC 2445), while in other embodiments, other standards may be employed.
  • Schedule infonnation may include the beginning and ending times of various events such as meetings, appointments, or other activity, for example.
  • Schedule infomiation may also include infomiation about recurrence of events, locations, and contact infomiation pertinent to a given event, as well as names of events and remarks pertaining to a given event.
  • An activity status may include whether a user is free or busy at a particular time, and may additionally include more specific states such as, but not limited to, the presence states described above.
  • calendar server 190 may interact with IM clients 100 to to modify presence state information based on schedule data. Calendar server 190 may also interact directly witii IM server 140 on behalf of a user. It is noted that in some embodiments, IM system 10 may omit calendar server 190 while including other modules and functions such as those illustrated in FIG. 1. Additionally, in some embodiments IM system 10 may incorporate the functionality of calendar server 190 into a different software module, such as IM seiver 140, for example.
  • IM system 10 depicts a web-based IM client application and a client-server IM system topology
  • alternative embodiments are contemplated in which different IM client application structures and different IM system topologies are employed.
  • IM client 100 may be configured as a standalone application program rather than as a web-based application.
  • IM client 100 may be invoked independently of web browser 110, without downloading application code such as DVI resources 180 via web server 170.
  • IM system 10 may be configured in a peer-to-peer topology rather than a client-server topology.
  • the functions performed by IM server 140 as described above may be distributed among the IM clients 100 within the system.
  • a given IM client 100 may store presence state infonnation for other IM clients 100 that are nearby (e.g., on the same portion of a network).
  • presence state changes and requests for presence state infomiation may propagate from one IM client 100 to another.
  • IM multiplexor 130 may be unnecessary.
  • Other embodiments of IM system 10 are possible and contemplated, including combinations of the aforementioned embodiments.
  • FIG. 1 a block diagram illustrating one embodiment of a system configured to execute instant messaging system software modules. Elements conespondmg to elements of FIG. 1 are numbered identically.
  • System 12 includes a plurality of computer systems 20a-f, which collectively may be refened to as computer system 20. Each of computer systems 20a-f is coupled to interconnect medium 15.
  • Interconnect medium 15 may be configured to transfer data among computer systems 20.
  • interconnect medium 15 may be a wired communications medium such as an Ethernet, fiber optic, or telephony network, for example.
  • interconnect medium 15 may be a wireless communications medium such as, for example, a wireless 802.11 local area network (LAN) or a wireless telephony network (e.g., a cellular, PCS, or GSM network). It is contemplated that in some embodiments interconnect medium 15 may include multiple types of communications media and may represent the Internet or an intranet.
  • LAN local area network
  • GSM Global System for Mobile communications
  • interconnect medium 15 may include multiple types of communications media and may represent the Internet or an intranet.
  • computer system 20a is configured to execute directory server 150 as well as web browser 100b and IM client 100b.
  • Computer system 20b is configured to execute web browser 100a and IM client 100a.
  • Computer system 20c is configured to execute web server 170 and to seive IM resources ISO.
  • Computer system 20d is configured to execute SMTP server 160.
  • Computer system 20e is configured to execute IM multiplexor 130 and IM server 140, while computer system 20f is configured to execute calendar server 190.
  • each computer system 20 may communicate with other computer systems 20 to perform the various IM system operations described above.
  • computer system 20b may communicate with computer system 20c so that web browser 110a may obtain IM resources 180 via web server 170. Additionally, computer system 20b may communicate with computer system 20e so that IM server 140 may authenticate and authorize the user. Computer system 20e may communicate with computer system 20a so that IM server 140 may obtain information regarding the user's identity from directory server 150.
  • server-type software modules may be configured to operate on a first set of one or more computer systems 20, while client-type software modules (e.g.
  • DVI client 100 and web browser 110 may be configured to operate on a second set of one or more computer systems that is distinct from the first set. Additionally, in some embodiments each software module may operate on a respective computer system 20, whereas in other embodiments multiple software modules may operate on a given computer system 20.
  • FIG. 3 a block diagram of one embodiment of an exemplary computer system is shown.
  • computer system 20 includes processor 200 coupled to memory 210. Both processor 200 and memory 210 are coupled to a variety of devices via input/output (I/O) subsystem 220, including input device 230, display device 240, mass storage device 250, and network interface device 260.
  • I/O input/output
  • Processor 200 may be configured to execute program instructions stored in memory 210 or received via I/O subsystem 220.
  • processor 200 may be a microprocessor configured to implement a given instruction set architecture (ISA), such as the SPARC ISA or die x86 ISA, for example.
  • ISA instruction set architecture
  • processor 200 may be a digital signal processor, while in still another embodiment, processor 200 may be an integrated device such as a microcontroller.
  • processor 200 may include an integrated memory controller (not shown) enabling it to couple directory to memory such as memory 210, whereas in other embodiments, processor 200 may couple to memory via a separate interface (e.g., a north bridge) or via I/O subsystem 220.
  • Memory 210 may be configured to store program instructions and data during operation of computer system 20.
  • memory 210 may include any of a variety of memory technologies such as static random access memory (SRAM) or dynamic RAM (DRAM), including variants such as dual data rate synchronous DRAM (DDR SDRAM), enor correcting code synchronous DRAM (ECC SDRAM), or Rambus DRAM (RDRAM), for example.
  • SRAM static random access memory
  • DRAM dynamic RAM
  • DDR SDRAM dual data rate synchronous DRAM
  • ECC SDRAM enor correcting code synchronous DRAM
  • RDRAM Rambus DRAM
  • Memory 210 may also include nonvolatile memory technologies such as nonvolatile "flash” RAM (NVRAM) or read-only memory (ROM).
  • NVRAM nonvolatile "flash” RAM
  • ROM read-only memory
  • memory 210 may include a combination of technologies such as the foregoing, as well as other technologies not specifically mentioned.
  • memory 210 includes software code 215, winch may include program instructions and data conesponding to one or more of the software modules of IM system 10 of FIG. 1. Code 215 may also include program instructions and data conesponding to other application or operating system software modules.
  • I/O subsystem 220 may be configured to interface various peripheral devices to processor 200 and to memory 210.
  • I/O subsystem 220 may include logic and interconnect devices configured to implement a bus interconnect standard such as the peripheral component interconnect (PCI) bus standard, although in other embodiments other bus interconnect types or a combination of such types may be supported.
  • I/O subsystem 220 may include logic configured to support direct memory access (DMA) transfers between peripheral devices and memory 210.
  • DMA direct memory access
  • Input device 230 may be configured to receive input from one or more users of computer system 20 and to deliver such input to processor 200 and/or memory 210 via I/O subsystem 220.
  • input device 230 may include tactile input devices such as a computer keyboard, a computer mouse, or a stylus/touchpad interface.
  • input device 230 may include video or audio input devices such as a video camera, a still camera, or a microphone, for example.
  • input device 230 may include more than one input device, including other types of input devices.
  • Input device 230 may also include hardware necessary to convert the format of the input data to the format required by computer system 20.
  • Display device 240 may be configured to display output of computer system 20 to one or more users.
  • display device 240 may mclude a video display terminal such as a computer monitor or a liquid crystal display (LCD) screen, as well as a graphics processor configured to convert output data from the format produced by processor 200 to the fonnat required by the display device.
  • Display device 240 may also include audio output hardware or other output devices such as printers or plotters.
  • display device 240 may include more then one display device, including other types of display devices.
  • a given device such as a touch screen, for example, may function as both an input device and a display device.
  • Mass storage device 250 may be configured to store data, including program instructions and data, for use during operation of computer system 20.
  • mass storage device 250 may be both readable and writable, and may thereby be configured to store data produced by computer system 20 or received from input device 230 or another computer system.
  • mass storage device 250 may include a magnetic storage device such as a fixed disk drive (also refened to as a hard drive or hard disk), a removable magnetic disk drive, or a tape drive.
  • Mass storage device 250 may also include a rewritable optical storage device such as a recordable or rewritable compact disk (CD-R or CD-RW) or a recordable digital video disk (DVD), for example.
  • CD-R or CD-RW recordable or rewritable compact disk
  • DVD recordable digital video disk
  • mass storage device 250 may be a read-only optical device such as a CD-ROM or DVD-ROM. In still other embodiments, mass storage device 250 may be a solid-state storage device such as a removable flash RAM device, for example. In some embodiments, it is contemplated that optional mass storage device 250 may include more than one storage device, including other types of storage devices.
  • Network interface device 260 may be configured to transmit data from computer system 20 to other computer systems as well as to receive data from other computer systems via a communication network.
  • network mterface device 260 may be physically coupled to one or more other computer systems and may implement a networking standard such as Ethernet, for example.
  • network interface device 260 may implement a fiber optic communication network protocol, or it may implement a telephony protocol and function as a dial-up modem, for example.
  • network interface device 260 may use a wireless networking protocol to interface with one or more other computer systems, such as a wireless Ethernet protocol (e.g., Wi-Fi), the Bluetooth standard, or a wireless telephony standard.
  • network interface device 260 may include more than one network interface implementing more than one type of interface protocol, including other types of devices and protocols.
  • a microcontroller may integrate some or all of the functions of processor 200, memory 210, and I/O subsystem 220.
  • input device 230 and display device 240 may be integrated into a single device, for example.
  • computer system 20 may omit one or more of input device 230, display device 240, mass storage device 250, and network interface device 260.
  • Various embodiments of computer system 20 may conespond to various types of well-known computing devices, depending on the configuration of the various components of computer system 20.
  • an embodiment of computer system 20 that includes a high-performance processor 200, a large quantity of memory 210, a large quantity of hard disk storage as mass storage device 250, and a high-bandwidth network interface device 260 may be configured to operate as a server computer system.
  • a server computer system may further be configured to execute the server software modules of the IM system 10 embodiment illustrated in FIG. 1, as well as other software modules of IM system 10.
  • computer system 20 may be a desktop or portable computer system or a tablet computer system.
  • a personal digital assistant may be an embodiment of computer system 20 configured, for example, to include a touch screen and/or a voice recognition interface as input device 230, a low-power- consumption processor 200, flash NVRAM as memory 210, and a wireless Ethernet interface (e.g., implementing the 802.1 1 "Wi-Fi" standard) as network interface device 260.
  • a wireless telephony device may also be an embod ⁇ nent of computer system 20.
  • wireless telephony devices may include, for example, an analog or digital "cellular" telephone device implementing a wireless telephony standard such as GSM, TDMA, CDMA, or another standard.
  • the aforementioned embodiments may be configured to execute software modules of the IM system 10 embodiment illustrated in FIG. 1 such as IM client 100 and/or web browser 110, as well as other software modules of IM system 10. It is noted that numerous other embodiments of computer system 20 are possible and contemplated.
  • code 215 may conespond to one or more of the software modules of IM system 10 illustrated in FIG. 1.
  • code 215 resides in memory 210.
  • Memory 210 may be one embodiment of a computer-accessible medium configured to store program instructions and/or data such as mcluded m code 215
  • the program instructions and or data mcluded m code 215 may be received, sent oi stored upon different types of computer- accessible media
  • a computer-accessible medium may mclude storage media or memory media such as magnetic or optical media, e g , disk or CD-ROM mcluded m some embodiments of computei system 20 as mass stoiage device 250
  • a computer-accessible medium may also mclude volatile or non-volatile media such as RAM (e g SDRAM, DDR SDRAM, RDRAM, SRAM, etc ), ROM, etc, that may be mcluded in some embodiments of computer system 20 as
  • IM system users may manually change thedepositednce state associated with then respective IM clients to leflect an "away" presence status
  • useis may wish to mdicate that they are unavailable to participate m mstant messagmg operations
  • Such users may then manually transition the presence state associated with their respective IM clients to an "away" presence state
  • the "away"transportnce state of such users may then be viewed by other IM system users
  • the presence state of an IM system user may be automatically tiansitioned to a busy state depending on some c teiion
  • a busystagence state may be any IM mecanicnce state designated to repiesent busy status infomiation
  • a busyfilmnce state may be a custom presence state defined by a given IM system usei, such as "leave me alone," for example
  • whether oi not a given IM system user is busy may be associated with the activity of that user's computei system
  • a high level of activity of mput device 230 such as keyboaid or mouse activity, may indicate that a given user of computer system 20 is busy and that the presence state of that user should be tiansitioned to a busy state Snmlarly, foi example, if such a high level of activity is followed by a lowei level of activity, this may mdicate that the user is no longer busy and that the conveyornce state of the user should be transitioned to an onlme state
  • an onlmegronce state may be any IM presence state designated to repiesent onlme status mformation, where onlme status may represent a lower level of activity than that conespondmg to a busy state
  • an onlme presence state may be a custom presence state defined by a given IM system user, such as "I'm
  • computer system activity may include keyboard activity, mouse activity, or processor utilization
  • the conesponding computer system activity levels may be keyboard strokes per unit of time, mouse movements per unit of time, or the fraction of processor time spent performing operations other than idling, respectively.
  • Processor utilization may further be segregated into utilization conesponding to foreground and background software processes, where in one embodiment, foreground software processes include processes a user is directly interacting with and background software processes include processes a user is not directly interacting with (such as batch jobs, for example).
  • computer system activity may also include instant messaging operations, such as chat sessions, where the conesponding activity level may include the number of simultaneous chat sessions a given user is participating in, for example.
  • the computer system activity to be detected may be configurable by a user. For example, a given user of IM client 100 may determine that the relevant computer system activities to be considered when detenriining whether to transition to a busy presence state include keyboard activity and processor utilization, but not mouse activity. The given user may then configure the appropriate activities to be detected, for example through a user interface provided by IM client 100.
  • IM client 100 may be configured to compare the detected activity level to a conesponding activity threshold to determine whether the activity threshold has been exceeded. In one embodiment, IM client 100 may make this determination at a single point in time, whereas in another embodiment, IM client 100 may include a threshold time parameter conesponding to a given activity level and may require the activity level to exceed the activity threshold for at least the threshold time before detemiuiing that the activity threshold has been exceeded. In one embodiment, the various activity thresholds and conesponding threshold times may be parameters configurable by a user of IM client 100. For example, IM client 100 may provide a user interface through which a user may specify which activities are to be detected, as well as what thresholds conespond to the specified activities.
  • IM client 100 may be configured to transition the presence state conesponding to a given user to a busy state in response to determining that the detected activity level exceeds the conesponding activity threshold. In such an embodiment, IM client 100 may further be configured to determine whether the detected activity level does not exceed the conesponding activity threshold and to transition the presence state to an online state in response to this detemiination.
  • IM client 100 may further be configured to determine whether no activity has been detected and to transition the presence state to an idle state in response to this detemiination.
  • IM client 100 may employ respective threshold times for online state determination and idle state detemiination that in various embodiments may be the same parameters as that used for busy detemiination, or separate parameters.
  • busy status detection and conesponding presence state transitioning have been described as aspects of IM client 100, in other embodiments, it is contemplated tiiat these functions may be implemented in other software modules of IM system 10 in various embodiments as noted above. It is further noted that in some embodiments, these functions may be implemented as program instructions and/or data of a computer-accessible medium as described above.
  • FIG. 4A is a flow diagram illustrating the operation of one embodiment of an mstant messaging system during processing of presence state using computer system activity infomiation. Operation begins in block 300, where a computer system activity level indicative of computer system activity is detected.
  • a software module such as IM client 100 of FIG. 1, for example, may be configured to perform computer system activity level detection, as described above.
  • the computer system exhibiting die detected activity may be a system such as computer system 20 of FIG. 3.
  • d e types and levels of computer system activity detected may be those described above, including, for example, keyboard, mouse, processor (including foreground and background process activity), and instant messaging operation activity.
  • the computer system activity detected may be configurable by a user.
  • the instant messaging system may determine whether the detected activity level exceeds an activity threshold (block 302).
  • Activity threshold types may be as described above, and in some embodiments may be configurable by a user.
  • detemiining whether the detected activity level exceeds an activity threshold may include detennn ing whether the duration of the detected level of activity exceeds a threshold time.
  • the threshold time may be configurable by a user.
  • the instant messaging system may transition the presence state conesponding to a given user to a busy state (block 306). In another embodiment, operation may optionally continue from block 306, as described below.
  • FIG. 4B is a flow diagram illustrating the operation of a second embodiment of an instant messagmg system during processing of presence state using computer system activity information.
  • the operation illustrated in FIG. 4B represents a continuation of the operation illustrated in FIG. 4A. Specifically, operation begins subsequent to block 306 of FIG. 4A, where the instant messaging system has transitioned the presence state conesponding to a given user to a busy state. In block 308, subsequent to transitioning the presence state to the busy state, the instant messaging system may determine whether the detected activity level does not exceed the activity tirreshold.
  • detemiining whether the detected activity level does not exceed an activity threshold may mclude detemiining whether the duration of the detected level of activity exceeds a threshold time, which time may be the same value as or a different value from the time refened to in block 302 of FIG. 4A.
  • the instant messagmg system may distinguish between whether the detected activity level does not exceed an activity threshold and whether no activity is detected.
  • the instant messaging system may transition the presence state conesponding to a given user to an online state (block 312). In an alternative embodiment in which the instant messaging system distinguishes between whether die detected activity level does not exceed an activity threshold and whether no activity has been detected, the instant messaging system may transition the presence state conesponding to a given user to an idle state in response to determining that no activity has been detected. Changing instant messenger presence state based on schedule information
  • IM system users may manually select a busy presence state, or such a presence state may be assigned by a respective IM client without a user's intervention in response to detecting various types of computer system activity.
  • IM system users may manually select their presence state based on their schedule information. For example, at the beginning or end of a scheduled event such as a meeting, users may wish to indicate their activity status to others via their presence state. Such users may then manually transition the presence state associated with their respective IM clients to a presence state indicative of their activity status, such as "engaged,” “in a meeting,” “away from my desk,” or “available,” for example.
  • users may define custom presence states indicative of specific activity status infonnation, such as "in the weekly sales meeting," for example.
  • the presence state of an IM system user may be automatically transitioned to a presence state conesponding to a given activity status depending upon that user's schedule information. For example, if a user stores schedule information in a calendar application accessible by the IM system, in one embodiment, the stored schedule infonnation may be used to transition that user's presence state as his or her activity status, as indicated by the stored schedule infomiation, changes throughout the day.
  • a software module of IM system 10 of FIG. 1, such as calendar server 190, for example, may be configured to store schedule infomiation indicative of the activity status of conesponding users of IM system 10. Additionally, a software module of IM system 10 such as IM client 100, for example, may be configm'ed to query the schedule infomiation and to assign a presence state conesponding to the activity status indicated by a given user's schedule infonnation, if the current presence state of that user does not so conespond.
  • calendar server 190 may be a calendar application program configured to store schedule information indicative of a user's activity status.
  • calendar server 190 may be configured to store start and end times of various scheduled events occuming throughout a user's day.
  • calendar server 190 may also be configured to store additional infomiation regardmg scheduled events such as die name of the event, its location, and the identities of other attendees, for example.
  • calendar server 190 may make a given user's schedule information visible to other users for reading and/or modification.
  • calendar server 190 may allow one user to add events to another's schedule information, such as when scheduling a meeting.
  • calendar server 190 may require authentication and authorization of a given user prior to allowing the given user to access Iris or her own schedule infomiation or the schedule infonnation of another user.
  • calendar server 190 may be configured to respond to queries for schedule information conesponding to a given user, tiiereby making schedule information available to other applications.
  • calendar server 190 may be compliant with the Internet Calendaring and Scheduling Core Object Specification (also refened to as RFC (Request for Comments) 2445), a standard specifying a format for data exchange with calendar applications, although in other embodiments, a different standard for data exchange may be employed.
  • calendar server 190 may be accessible for queries as a web application via a uniform resource locator (URL) or "web address," although in other embodiments, calendar server 190 may be accessible via a different interface.
  • URL uniform resource locator
  • calendar server 190 may be accessible via a different interface.
  • calendar server 190 may return an indication of free (i.e., available) or busy (i.e., engaged) activity status of that user. For example, if there is any scheduled event at the time specified in the query, calendar server 190 may return an indication of engaged activity status. Otherwise, calendar server 190 may return an indication of available activity status. In another embodiment, calendar server 190 may return more details about a given user's schedule infonnation instead of or in addition to an indication of available or engaged activity status. For example, if there is any scheduled event at the tune specified in the query, calendar server 190 may return the name of the event, its location (if known), and its duration.
  • a given IM client 100 may be configured to query calendar server 190 for the schedule infomiation conesponding to the user associated with the given IM client 100.
  • the activity status indicated by the schedule information returned by calendar server 190 may not conespond with the cunent presence state of the user associated with the given IM client 100. If the cunent presence state does not conespond to the indicated activity status, in one embodiment, IM client 100 may be configured to assign a different presence state that does conespond to the indicated activity status. For example, the cunent presence state of the user may be idle or onlme, but at the queried time, a scheduled meeting may have begun, and calendar server 190 may have returned an engaged activity status.
  • IM client 100 may assign an engaged presence state in response to the schedule query. Conversely, the cunent presence state of the user may be engaged, but at the queried time, a scheduled meeting may have ended, and calendar server 190 may have returned an available activity status. Conespondingly, IM client 100 may assign an idle or online presence state in response to the schedule query. Alternatively, IM client 100 may store the presence state of the user prior to the beginning of a scheduled event, and may return the presence state of the user to the stored state after the scheduled event ends. [0082] In an altemative embodiment, calendar server 190 may return more detailed schedule information instead of or in addition to an indication of available or engaged activity status, as described above.
  • IM client 100 may be configmed to assign a different presence state detemiined by die schedule information returned by calendar server 190 in response to the query. For example, prior to querying calendar server 190, IM client 100 may indicate that the cunent presence state of the user is online. If at the queried time, the weekly sales meeting has begun, calendar server 190 may return the event title "weekly sales meeting" and a specific event end time, or other similar indications, in response to die schedule query.
  • IM client 100 may assign a presence state specific to the returned schedule infomiation, such as "at weekly sales meeting" or "back at ⁇ end time>" where ⁇ end time> represents die event end time returned by calendar server 190.
  • IM client 100 may query calendar server 190 for a given user's schedule infomiation periodically or aperiodically, using the current time at the time of each query as the basis for the query. Depending on the interval between queries, such an embodiment may approximate real-time synchronization of IM client 100 with calendar server 190.
  • IM client 100 may at a given time make multiple queries of calendar server 190, each query for a different time.
  • IM client 100 may then queue the query results internally and monitor the queue for activity status changes as cunent time progresses. Such an embodiment may enable IM client 100 to retain an indication of pending schedule information in case calendar server 190 is not continuously accessible, for example if the user disconnects a portable computer system from the network that provides access to calendar server 190 on a different computer system.
  • calendar server 190 may be configured to initiate a query of schedule infomiation for a given user and to send the results of the query to the appropriate IM client 100 without waiting for a query to originate from IM client 100.
  • IM seiver 140 may interact directly with calendar server 190 to store a queue of schedule infonnation on behalf of a given IM client 100. It is also contemplated that in one embodiment, these functions may be combined in a single software module. It is further contemplated that in some embodiments, these functions may be implemented as program instructions and/or data of a computer-accessible medium as described above. [0085] FIG.
  • FIG. 5 is a flow diagram illustrating the operation of one embodiment of an mstant messaging system during processmg of presence state using schedule information. Operation begins in block 400, where schedule information corresponding to a given user and indicative of that user's activity status at a given time is stored.
  • schedule information corresponding to a given user and indicative of that user's activity status at a given time is stored.
  • a software module such as calendar server 190 of FIG. 1, for example, may be configured to store such schedule information, as described above.
  • the schedule information stored may be as described above, including, for example, a user identity, an event title, an event location, and event start and end times.
  • the stored schedule infomiation is queried.
  • a software module such as IM client 100 of FIG. 1, for example, may be configm'ed to query such stored schedule infomiation, as described above.
  • a common software module may be configured to both store and query schedule infomiation conesponding to a given user.
  • calendar server 190 and IM client 100 may be configmed to execute on one or more computer systems such as computer system 20 of FIG. 3.
  • IM client 100 may assign a different presence state that conesponds to the activity status for the given user.
  • die cunent presence state may be transitioned to an engaged state in response to detecting an engaged activity status of the given user, and the cunent presence state may be transitioned to an online state in response to detecting an available activity status of the given user.
  • the cunent presence state may be transitioned to a state determined by the schedule infomiation of the given user.
  • die schedule information may indicate an event title or location, and in one embodiment IM client may assign a conesponding presence state that includes some or all of such schedule information.
  • presence states and presence state transitions may function only as advisory indications. That is, the presence state of a given user may indicate state information to other users, but may not modify other users' ability to engage in instant messaging operations with the given user. For example, if the given user's presence state changes to a busy state, either manually or without user intervention as described above, other users may not be prevented from sending alert operations or chat session requests to the given user despite the busy presence state. Additionally, in such embodiments, transitions from one presence state to another may have no particular significance in themselves, other than to advise that the given user's presence state has changed.
  • mstant messaging operations directed to a given user may operate selectively depending on the presence state of the user. For example, if a given user has a busy presence state, alert operations and chat session requests directed to die given user may be queued rather than delivered, thereby potentially eliminating the distraction of an instant messaging operation. In contrast, if the given user has an idle or online presence state, such alert operations and chat session requests may be processed and delivered normally. Additionally, in one embodiment, certain instant messenger operations may be associated with certain presence states for a given user, such that when the given user's presence state transitions to a new state, any instant messenger operations associated with the new state may be performed.
  • an alert operation including a task reminder message may be scheduled for the particular day and associated with a "gone home” presence state.
  • the associated alert operation may be processed and delivered to the given user.
  • a software module of IM system 10 of FIG. 1, such as IM client 100 may be configm'ed to receive an instant messagmg operation directed to a given user, detennine the presence state of the given user, and to selectively process the instant messagmg operation dependent upon the presence.
  • a software module of IM system 10 of FIG. 1, such as IM client 100 may be configured to store an instant messaging operation associated with a given presence state conespondmg to a given user, detect a fransition to the given presence state, and perfomi the instant messagmg operation associated with the given presence state.
  • IM client 100 may be configured to receive an instant messaging operation directed to a given IM system user who is not offline.
  • a given IM client 100 may be configured to receive a chat, alert, or poll operation as described above, although in other embodiments it is contemplated that additional or different operations may be received.
  • the operation may be directed to a user who is online in IM system 10, associated with the given IM client 100, and whose presence state as indicated by the given IM client 100 is other than an offline presence state.
  • IM client 100 may be configured to determine the presence state of the user.
  • IM client 100 may detennine that the presence state of the user is an idle presence state, an online presence state, or another presence state that may be indicative of an idle user state.
  • LM client 100 may determine that the presence state of the user is a busy presence state or another presence state that may be indicative of a busy user state.
  • a presence state may mdicate a user's presence or absence as well as available information regarding that user's activity status.
  • a user's activity status may also be refened to herein as a user state, and various presence states may be grouped according to user states the presence states may indicate.
  • IM client 100 may be configured to selectively process the received operation dependent upon the presence state of the user.
  • IM client 100 may be configured to notify the user of the received operation if the presence state of the user is indicative of an idle user state. For example, if the user has an online presence state and receives an alert operation, the alert operation may be processed normally, and the user may receive whatever alert notification the alert operation, such as a visual or audible notification.
  • IM client 100 may be further configured to queue the received operation without notifying the user if the presence state of the user is indicative of a busy user state.
  • the alert operation may be queued without notifying the user with a visual or audible notification.
  • the usual notification associated with the received operation may be modified in this case, such as by displaying a visual or audible notification of reduced intensity.
  • IM client 100 may be configm'ed to selectively queue the received operation depending on other information pertaining to the operation. For example, IM client 100 may be configured to queue operations originated from certain users, while allowing operations originating from other users to notify the busy user, thereby providing the capability for the busy user to "screen" incoming operations.
  • IM client 100 associated with the intended recipient may be configured to notify the second user that the operation was queued.
  • a second user may attempt to initiate a chat operation with a user having an engaged presence state.
  • the chat operation may be queued at the IM client 100 of the busy user, which may send the second user a notification that the intended target of the chat operation is busy and/or that the chat operation has been queued.
  • IM client 100 may be configm'ed to detect a transition from a presence state indicative of a busy user state to a presence state indicative of an idle user state, and in response, to notify the associated user of queued instant messaging operations. For example, a user may manually fransition his or her presence state from an away state to an online state, or such a fransition may occur based on computer system activity status or schedule infomiation as described above. Once the user transitions to an onlme presence state, queued operations may be delivered, for example in the order they were queued.
  • FIG. 6 is a flow diagram illustrating the operation of one embodiment of an instant messaging system during selective processing of instant messaging operations. Operation begins in block 500, where an instant messaging operation directed to a given user who is not offline is received.
  • a software module such as IM client 100 of FIG. 1, for example, may be configured to receive such an operation, as described above.
  • such an operation may include a chat operation, an alert operation, a poll operation, or another mstant messenger operation.
  • the presence state of the given user to whom the received operation is directed is determined (block 502).
  • DVI client 100 may be configured to detennine the presence state of the given user.
  • the received operation is selectively processed dependent upon the presence state (block 504).
  • IM client 100 may select a particular action to take in response to the received operation, as described above.
  • FIG. 7 is a flow diagram illustrating the operation of another embodiment of an instant messaging system during selective processing of instant messaging operations. Operation begins in block 600, where an instant messaging operation directed to a given user who is not offline is received.
  • a software module such as IM client 100 of FIG. 1, for example, may be configured to receive such an operation, as described above.
  • such an operation may include a chat operation, an alert operation, a poll operation, or another mstant messenger operation.
  • the presence state of the given user to whom the received operation is directed is determined (block 602).
  • IM client 100 may be configured to detennine the presence state of the given user.
  • the given user may be notified of the received instant messagmg operation, and the operation may be processed according to its specified behavior (block 604). For example, if the received operation is an alert operation, the given user may be notified of the alert operation.
  • the received operation may be queued without notifying the given user (block 606).
  • IM client 100 may be configured to queue the received operation.
  • IM client 100 may be configured to notify a second user initiating the received operation of the queuing of the operation.
  • a fransition from a presence state indicative of a busy user state to a presence state indicative of an online user state may be detected (block 608).
  • IM client 100 may be configured to detect such a fransition.
  • the given user may be notified of a queued instant messaging operation (block 610).
  • IM client 100 may be configured to notify the given user of queued operations, such as by delivering them in the order they were queued, for example.
  • IM client 100 may be configured to store an instant messaging operation associated with a given presence state conesponding to a given user.
  • IM client 100 may be configured to store a chat, alert, message or poll operation as described above, although in otiier embodiments it is contemplated that additional or different operations may be stored.
  • the stored operation may be associated with a presence state such as an online presence state, for example.
  • IM client 100 may be configured to store sufficient infomiation about die stored operation to enable the stored operation to be initiated. For example, if the stored operation is a chat operation, IM client 100 may store the identity of the user or the group of users to whom the chat operation is directed.
  • IM client 100 may maintain a plurality of queues in which to store mstant messaging operations, with each queue associated with a respective presence state and configured to store operations associated with that presence state.
  • DM client 100 may maintain an online queue configured for storing operations associated with the online presence state, and a busy queue configured for storing operations associated with the busy presence state.
  • the stored operations may be stored in different numbers and types of queues, or in data structures other than queues.
  • another software module such as IM server 140, may be configured to maintain and monitor queues or other data structures that store instant messaging operations associated with a particular presence state on behalf of a given IM client 100.
  • IM client 100 may further be configured to detect a transition to a given presence state. For example, IM client 100 may detect a transition to an online presence state resulting from a user's manual selection or from processing computer system activity or schedule information without user intervention, as described above.
  • DVI client 100 may be configured to perform an instant messaging operation associated with the given presence state. For example, upon detecting a fransition to an online presence state, IM client 100 may perform an operation stored in an online queue.
  • a given user may wish to enter a particular chat session, such as a customer support chat session, whenever he or she is in an online presence state.
  • the chat operation and infomiation associated with the desired chat session may be stored in the online queue of the given user's IM client 100.
  • the given user's IM client 100 may perfonn the queued chat operation, taking whatever steps may be necessary to place the given user in the customer support chat session.
  • Performing instant messaging operations in response to presence state changes may also incorporate schedule infomiation from calendar server 190 described above.
  • a given user may wish to receive an alert as a reminder of a relative's birthday the first time the given user's presence state changes to online on or after the birthday. (Alternatively, the given user may wish to send an alert to the relative as a birthday greeting under the same circumstances.)
  • calendar seiver 190 may maintain schedule information regarding the birthday event and may store the alert operation, an effective date before which the operation should not be performed, and associated information, such as the identity of the user who is to receive the alert, in the online queue of the given user's IM client 100 on behalf of that user.
  • the given user's IM client 100 may check the effective date of the queued alert operation. If the current date is equal to or later than the effective date, the given user's IM client 100 may perform the queued alert operation.
  • the stored alert could be associated with other presence states, such as the idle state, for example.
  • FIG. 8 is a flow diagram illustrating the operation of one embodiment of an instant messaging system during execution of instant messaging operations in response to presence state changes. Operation begins in block 700, where an instant messaging operation associated with a given presence state conesponding to a given user is stored.
  • a software module such as DVI client 100 of FIG. 1, for example, may be configured to store such an operation, as described above.
  • such an operation may include a chat operation, an alert operation, a poll operation, or another instant messenger operation.
  • LM client 100 may be configured to store a chat operation in a queue associated with an online presence state, and may subsequently detect a transition to an online presence state.
  • the stored operation may be perfonned (block 704).
  • IM client 100 may be configured to initiate the chat operation stored in queue associated with an online presence state in response to detecting a fransition to an online presence state.
  • modification of a given user's presence state based on computer system activity or schedule infomiation may be combined with processing of instant messenger operations dependent on that user's presence state or perfomiing instant messenger operations in response to presence state transitions.
  • such combinations of features may be implemented in several software modules such as those illustrated in the embodiment of IM system 10 of FIG. 1. In other embodiments, such combinations of features may be implemented in a single software module, for example IM client 100 of FIG. 1. In some embodiments, such combinations of features may be implemented as program instructions and/or data of a computer-accessible medium as described above.

Abstract

A method and system for busy presence state detection in an instant messenger system. The method may include detecting a computer system activity level (300), determining whether the activity level exceeds an activity threshold (302), and transitioning a presence state of an instant messenger to a busy state (306) in response to determining that the activity level exceeds the activity threshold, where the presence state corresponds to a given user. The system may include a computer system and an instant messenger software module configured to execute on the computer system. The instant messenger software module may be further configured to detect a computer system activity level (300), determine whether the activity level exceeds an activity threshold (302), and transition a presence state of the instant messenger software module to a busy state (306) in response to the determination that the activity level exceeds the activity threshold, where the presence state corresponds to a given user.

Description

TITLE: METHOD AND SYSTEM FOR BUSY PRESENCE STATE DETECTION LN AN INSTANT MESSAGING SYSTEM
BACKGROUND OF THE INVENTION
Field of the Invention
[0001] This invention relates to instant messaging systems and, more particularly, to instant messaging presence state information.
Description of the Related Art
[0002] Instant messaging systems, such as SunONE Instant Messenger, AOL Instant Messenger (ATM), and Yahoo! Messenger, for example, may provide a convenient method for users of a computer system to interact with one another in various different ways. Generally, instant messaging systems provide the capability for several computer system users to "chat" or exchange messages nearly instantaneously, such that when one user enters and sends a message, another user sees that message soon thereafter. In many embodiments, instant messaging systems may provide users engaging in such a chat the ability to see their messages interspersed with those of other respondents and displayed in the order the messages were exchanged. Instant messaging systems may thus provide a context for dialogue when other modes of communication are inaccessible or inconvenient. [0003] In some embodiments, instant messaging systems may provide other features in addition to a chat operation. For example, a given instant messaging system may provide for users to establish static virtual "conference rooms," which may permit users to engage in chats with whoever happens to be in the virtual conference room at a given time. Such a feature may, for example, enable users situated at different locations to conduct group meetings. Additionally, a given instant messaging system may enable users to send alerts to one another. In one embodiment an instant messaging alert may be used to convey information when no response is desired, such as a, meeting reminder, for example. These and other types of instant messaging operations are discussed in greater detail below.
[0004] In an instant messaging environment, some indication of whether or not a given user is available to engage in instant messaging operations may be useful. For example, users may temporarily step away from their desks, attend meetings, or leave the office. Even when physically present, users may be busy with other tasks and unavailable for instant messaging operations. Consequently, in some instant messaging system embodiments an instant messaging presence state is implemented. In one embodiment, such a presence state may include a status indication, such as a text message that a user selects from a list or enters directly. Changes to a user's presence state may then become visible to other users of the system. For example, if a given user is busy with other tasks, he or she may select a "busy" instant messenger presence state, which may indicate a busy status to other users. [0005] The presence state may effectively indicate a given user's presence status to other users of a system. However, a user may fail to select the presence state that actually corresponds to that user's status at a given time. For example, a given user may be busy with other tasks but forget to select a busy presence state. Thus, other users may potentially interrupt the given user with requests to chat or other instant messenger operations. Likewise, if a given user indicates an availability to chat but is actually away at an appointment, other users may mistakenly assume the given user is in fact available.
[0006] Even if a user selects a busy presence state to notify other users of a desire not to be disturbed, tins may not actually prevent other users from attempting to initiate instant messenger operations with the busy user. For example, another user could simply ignore the busy presence state and send alerts, requests to chat, or other operations to the busy user. Additionally, changes in presence state may not result in relevant instant messenger operations being performed. For example, a busy user may wish to chat with another user once he is no longer busy, but may forget this fact by the time he changes his presence state to reflect an idle status. SUMMARY OF THE INVENTION
[0007] Various embodiments of a method and system for busy presence state detection in an instant messenger system are disclosed. In one embodiment, the method may include detecting a computer system activity level indicative of computer system activity, deteπnining whether the activity level exceeds an activity threshold in response to detecting the activity level, and transitioning a presence state of an instant messenger to a busy state in response to determining that the activity level exceeds the activity threshold, where the presence state corresponds to a given user.
[0008] In one specific implementation, the method may further include determining whether the activity level does not exceed the activity threshold subsequent to transitioning the presence state to the busy state, and transitioning the presence state of the instant messenger to an online state in response to determining that the level of computer system activity does not exceed the activity threshold.
[0009] In one embodiment, the system may include a computer system and an mstant messenger software module configured to execute on the computer system. The instant messenger software module may be further configured to detect a computer system activity level indicative of computer system activity, determine whether the activity level exceeds an activity threshold in response to the detection, and transition a presence state of the mstant messenger software module to a busy state in response to the detemiination that the activity level exceeds the activity threshold, where the presence state corresponds to a given user.
[0010] In one specific implementation of the system, the instant messenger software module may be further configured to determine whether the activity level does not exceed the activity threshold subsequent to ti'ansitioning the presence state to the busy state, and to transition the presence state of the instant messenger software module to an online state in response to determining that the level of computer system activity does not exceed the activity threshold.
BRIEF DESCRIPTION OF THE DRAWINGS [0011] FIG. 1 is a block diagram illustrating one embodiment of an mstant messaging software system. [0012] FIG. 2 is a block diagram illustrating one embodiment of a system configured to execute instant messaging system software modules.
[0013] FIG. 3 is a block diagram of one embodiment of an exemplary computer system. [0014] FIG. 4A is a flow diagram illustrating the operation of one embodiment of an instant messaging system during processing of presence state using computer system activity information. [0015] FIG. 4B is a flow diagram illustrating the operation of a second embodiment of an instant messaging system during processing of presence state using computer system activity information.
[0016] FIG. 5 is a flow diagram illustrating the operation of one embodiment of an mstant messaging system during processing of presence state using schedule information. [0017] FIG. 6 is a flow diagram illustrating the operation of one embodiment of an instant messaging system during selective processing of instant messaging operations.
[0018] FIG. 7 is a flow diagram illustrating the operation of another embodiment of an instant messaging system during selective processing of instant messaging operations. [0019] FIG. 8 is a flow diagram illustrating the operation of one embodiment of an instant messaging system during execution of instant messaging operations in response to presence state changes.
[0020] While the invention is susceptible to various modifications and alternative forms, specific embodiments thereof are shown by way of example in the drawings and will herein be described in detail. It should be understood, however, that the drawings and detailed description thereto are not intended to limit the invention to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents and alternatives falling within the spirit and scope of the present invention as defined by the appended claims.
DETAILED DESCRIPTION OF EMBODIMENTS
Overview of instant messaging system software and hardware [0021] Turning now to FIG. 1, a block diagram illustrating one embodiment of an instant messaging software system is shown. In the illustrated embodiment, instant messenger (IM) system 10 includes the following software modules: instant messenger clients 100a and 100b, web browsers 110a and 110b, IM multiplexor 130, IM server 140, directory server 150, SMTP server 160, web server 170, IM resources 180, and calendar server 190. Arrows interconnecting the software modules illustrated in FIG. 1 represent communication paths between the interconnected modules, through which data and control information may be passed.
[0022] Communication along the illustrated paths may be implemented using a variety of software techniques. For example, in one embodiment, software function calls such as may be defined in an application programming interface (API) may be used to implement communication between software modules. In another embodiment, software modules may communicate by passing messages, for example directly through a commonly-defined message passing port interface or indirectly through reading and writing shared memory. In still another embodiment, software modules may communicate over a network mfrasrructure using a protocol such as hypertext transfer protocol (HTTP), file transfer protocol (FTP), or transmission control protocol (TCP), for example. The function of specific interconnections among software modules illustrated in IM system 10 is described in greater detail below in conjunction with the descriptions of the relevant modules. [0023] In one embodiment, instant messaging may provide a mode of communication among two or more users of a computer system that minimally provides the capability for users to exchange text messages in real time, which messages may be referred to as instant messages. In one embodiment, instant messaging may further allow users exchanging instant messages to view all instant messages exchanged (including a user's own entered instant messages) in the order they were exchanged. Capabilities provided by instant messaging may be referred to geneπcally heiein as mstant messaging operations, and the specific capability just descnbed may be refened to heiem as a chat operation Depending on implementation, mstant messagmg may include numerous other mstant messagmg opeiations as described m detail below In one embodiment, an mstant messenger may compπse a software application or a hardware device with which a given user mteracts to engage m mstant messagmg opeiations An mstant messengei may also be leferred to herem as an instant messenger client In one embodiment, an mstant messagmg software system may compiise one or more software modules configured to implement mstant messagmg, as described m furthei detail below
Instant messenger client and operations [0024] Instant messenger (IM) clients 100a and 100b, which may be referred to mdividually or collectively herem as IM client 100, may be configured to provide access to mstant messagmg opeiations for one or more users of IM system 10 Although only two instant messenger clients are illustrated m FIG 1, it is contemplated that IM system 10 may include an arbitiary number of IM clients 100 In one embodiment, IM client 100 may provide access to mstant messaging opeiations that may include a chat operation, an alert operation, a polling opeiation, and a news channel opeiation, although m other embodiments it is contemplated that diffeient lands and combinations of mstant messagmg opeiations may be provided Geneial descnptions of the operation of the chat, alert, poll g and news channel opeiations from the peispective of IM client 100 follow Greater detail legaidmg the operation of the other modules of IM system 10 is provided in subsequent sections [0025] In one embodiment, the chat opeiation may provide a real-time conveisation capability among users of IM system 10 Foi example, two given useis A and B may log on and be authenticated by IM system 10 (such as by providing a user ID and a passwoid) and may begm using IM clients 100a and 100b, lespectively In one embodiment, authentication of useis and authoiizahon of users to access lesouices provided by IM system 10 may be performed by IM server 140, winch may be configured to queiy dnectory servei 150 to authenticate the identities of useis A and B and determine then privileges with IM system 10 IM client 100 may provide access for authenticated and authonzed useis to a dnectory service and may indicate to user A that user B is onl e and vice vetsa For example, m one embodiment, IM client 100 may enable a given usei to cieate customized lists of users and may display the status of each user specified m the list whenever the given user logs on to IM system 10 or requests such a display IM client 100 may also provide a procedure for a given user to specifically query foi the onlme status of another user, such as by providing that usei 's user ID [0026] Once user A has determined that usei B is onlme, usei A may direct IM client 100a to initiate a chat opeiation (also referred to herem as a chat session) with user B In one embodiment, user A may then enter text via IM client 100a that may be forwarded to and displayed via IM client 100b for user B to read User B may then enter response text via IM client 100b that may be forwarded to and displayed via IM client 100a for user A to read, thereby providing the afoiementioned real-time conveisation capability Although the preceding description of chat session functionality mcludes only two participants, it is contemplated that a chat session may mclude an arbitiary number of participants Also, in some embodiments, text may be sent from one IM client 100 to the IM clients 100 of other chat session participants immediately upon entry In other embodiments, text may be held and displayed at the IM client 100 at which it was entered until the user directs it to be sent, such as by entering a carriage return or invoking a "send" feature Such an embodunent of IM client 100 may thereby enable chat session useis to edit their mput prior to making it visible to other participants [0027] In addition to indicating whether or not a given user is online within IM system 10, IM client 100 may implement and display a presence state for a user. In one embodiment, presence state may comprise a state indicative of the presence or absence of a given instant messaging user, as well as any additional available information about that's user's current activity. In some embodiments, presence state may include textual infonnation such as "online," "busy," "away," "be right back," "on the phone," "out to lunch," and "gone home." In some embodiments, other default presence states may be defined and users may be able to create new presence states. It is also contemplated that in some embodiments, a presence state may include numeric codes or encrypted values. [0028] In one embodiment, a given user may manually select a particular presence state value from a menu, list, or other selection mechanism, and the selected presence state may then be displayed to other users of IM system 10 whenever they query the status of the given user. For example, user A may select the "away" presence state in IM client 100a. If user A is in user B's customized list of users of DVI system 10, IM client 100b may show the "away" presence state associated with user A whenever user B views the list. Alternatively, IM client 100b may show the "away" presence state associated with user A if user B specifically queries the status of user A within IM system 10, such as by providing user A's user ID. User B may then utilize the presence state of user A in deteιτnining whether to initiate or respond a chat session request with user A. As described in greater detail below, the presence state of a given user may change in response to events other than manual selection by that user, and changes in presence state may result in actions beyond simply displaying that user's presence state to other users of IM system 10. [0029] In some circumstances, user A of IM system 10 may wish to communicate information to user B without expecting a response from user B. Rather than attempt to establish a chat session in tins case, user A may send an alert to user B using an alert operation. In one embodiment, the alert operation may provide a unidirectional communication capability among users of IM system 10. For example, in a manner similar to that illustrated in the exemplary chat session described above, user A may determine whether user B is online. After making this detemiination, user A may enter the information to be sent to user B via IM client 100a, and may then direct IM client 100a to send an alert to user B. Alternatively, user A may send the alert without determining whether user B is online, whereupon IM system 10 may queue the alert for later delivery to user B if user B is currently offline. If user B is online, upon receiving the infonnation in the alert IM client 100b may then display the alert for user B. For example, in some embodiments IM client 100b may generate a visual and/or audible indication that an alert has aiτived and may cause the infonnation content of the alert to be displayed on a video display device or played audibly via an audio system. Once user B has acknowledged the alert, IM client 100b may notify IM client 100a, winch may in turn display to user A a notification (such as a text message, for example) that user B has received and acknowledged the alert.
[0030] In some embodiments, alerts may originate from sources other than individual users of IM system 10. For example, a given user may customize an email application to send an alert to the IM client 100 of that user whenever an email message arrives for that user. Alternatively, a calendar application may be configured to send an alert when particular calendar appointments come due.
[0031] A polling operation may provide a mechanism for a given user to solicit responses from other users of IM system 10 without establishing a chat session with each solicited user. In one embodiment, the polling operation may provide a bidirectional question-and-response commumcation capability among users of IM system 10, wherein a given user (referred to herein as d e respondent) may formulate a question to be directed to other users (refened to herein as the recipients) along with a list of possible responses to the question. Upon receiving die poll, each recipient may select a particular response and send the selected response to the respondent. In one embodiment, the polling operation may support "write-in" responses that may allow recipients to specify a response other than those listed in the poll.
[0032] For example, the respondent may enter a polling question as well as a list of possible responses via IM client 100a, and may further select the recipients from the users of IM system 10 by using a directory service or a predefined list of users as described above. The respondent may then direct IM client 100a to send the poll to the specified recipients. The recipients may receive the poll via their respective IM clients 100, which may display the polling question and responses in a manner similar to displaying an alert as described above. Each recipient may then select a response and direct his or her respective IM client 100 to send the selected response to the respondent. IM client 100a may receive and display responses to the respondent, and may also indicate which recipients have and have not responded to the poll. [0033] A news channel opeiation may provide a mechanism for a given user to disseminate information to other users of Evl system 10 without establishing a chat session with each other user or sending an alert or poll to each other user. In one embodiment, the news channel operation may provide a forum, referred to herem as a news channel, for users to post and read infomiation. In such an embodiment, a given news channel may be static, in that information posted to it may remain available to be read until it is explicitly deleted or until it expires. A news channel may thereby provide an asynchronous communication mechanism in wliich users may exchange information without simultaneously actively using IM system 10. As an example, a given user may use IM client 100a to compose infonnation, such as text infonnation, to be posted to a particular news channel specified by the user. That user may then direct IM client 100a to post the infomiation to the specified news channel and may optionally specify a date and/or time when the posting should expire. Other users may subsequently direct their respective IM clients 100 to view the contents of the particular news channel and may compose and post then responses or other infonnation.
[0034] In some embodiments of IM system 10, some instant messagmg operations described above as well as some sub-operations of those operations may not be available to all users of the system. For example, in one embodiment, certain news channels may only be accessed for reading by a specific group of users, and only a subset of that group may be allowed to post content to those news channels. Similarly, some users may be restricted from establishing chat sessions or sending alerts to other users. In such embodiments, privileges to use various features and operations of IM system 10 may be assigned to individual users. In one embodiment, IM server 140 (described below) may be configured to manage user privileges and control access to features and operations of IM system 10 based on those privileges.
Instant messaging system software modules
[0035] While in the above description of instant messaging operations IM client 100 may provide the most user-visible portion of these operations, in the embodiment of IM system 10 illustrated in FIG. 1 numerous software modules may interact to support instant messaging functionality. [0036] In the illustrated embodiment, IM clients 100a and 100b are configured as web-based clients associated with a respective web browser 100a or 100b rather than as standalone applications, although as noted below, in alternative embodiments IM clients 100a and 100b may be configured as standalone applications. A user may begin using a given web-based IM client 100 by navigating to a particular uniform resource locator (URL) identifying a path to the IM client software from within a conesponding web browser 110. In one embodiment, web browser 110 may be a software application configured for accessing documents or applications over a network via a protocol such as hypertext transfer protocol (HTTP). For example, web browser 110 may be a software application such as Netscape Navigator™ or Netscape Communicator™, although in other embodiments different browser application software may be used. [0037] Once a user specifies the IM client URL, for example by typing the URL into the appropriate input field of web browser 110, in the illustrated embodiment web browser 110 requests and downloads IM resources 180 via web server 170. In one embodiment, web server 170 may be a software application configured to deliver documents or applications to a web browser in response to a request. For example, web server 170 may be a software application such as Sun ONE Web Server, although in other embodiments different web server application software may be used. In the illustrated embodiment, IM resources 180 may include executable application code files, such as Java files, for example. When downloaded by and executed within web browser 110, IM resources 180 may provide the software functionality of IM client 100. For example, execution of IM resources 180 may cause an IM user interface to be displayed within web browser 110 or in a window separate from web browser 100. It is noted that in some embodiments, web browser 110, web server 170, and IM resources 180 may all be located on and operate from a single computing device. In other embodiments, some or all of these software modules may be located on and operate from separate computing devices interconnected via a commumcation network such as an Ethernet network, for example.
[0038] Various IM clients 100 may communicate with one another to perform the chat, alert, poll, and/or news channel operations described above, as well as any other instant messaging operations that may be implemented in a particular embodiment. In the illustrated embodiment, communication among IM clients may take place through IM1 multiplexor 130 and IM server 140. In one embodiment, IM server 140 may be a software application configured to control IM privileges and security, for example by limiting access to certain instant messaging operations by certain users of IM system 10. IM server 140 may also store presence state data associated with each user of IM system 10 and make the presence state data visible to users that request it. [0039] Additionally, DVI server 140 may be configured to support the execution of the various instant messagmg operations by IM clients 100. For example, IM server 140 may establish chat operations by responding to a request to initiate a chat operation from one IM client 100, locating the appropriate IM client 100 associated with the target user of the chat operation request, and notifying the latter IM client 100 of the chat operation request. In some embodiments, IM server 140 may be configured to mediate the subsequent exchange of data among the IM clients 100 participating in the chat session, while in other embodiments IM server 140 may be configured only to initiate the chat session, whereupon IM clients 100 may then directly communicate without server intervention. IM server 140 may also be configured to receive alert and poll operations originating from EV1 clients 100 and route such operations to the IM clients 100 of the appropriate users. Further, IM server 140 may be configured to receive and store messages destined for the various news channels that have been configured in IM system 10 and to deliver the contents of those news channels to IM clients 100 of requesting users. [0040] In a given embodiment of IM system 10, there may be numerous IM clients 100 that collectively generate numerous instant messaging operations to be serviced by a given M server 140. In some embodiments of IM system 10, multiple instances of IM server 140 may be employed to ensure adequate system performance. Additionally, IM multiplexor 130 may be configured to consolidate multiple requests from IM clients 100 into a single communication stream such as a transmission control protocol (TCP) stream, which may then be sent to a given IM server 140 over a single communication port. Owing to the fact that in some embodiments, numerous IM clients 100 may be operating on numerous different computing devices, each of which may be connected to an IM server 140 via a communication network, interposing IM multiplexor 130 between LM clients 100 and a given IM server 140 may increase system performance by reducing the number of individual communication ports a given IM server 140 may need to service.
[0041] Prior to allowing an individual user to begin performing instant messaging operations via a given LM client 100, IM server 140 may be configured to authenticate the user and to detennine what privileges of IM system 10 operation that user may be entitled to. In the illustrated embodiment, IM server 140 may be configured to authenticate a given user by receiving a user ID and password from the IM client 100 associated with a user seeking to initiate mstant messagmg operations. IM server 140 may then consult a directory server 150 to detem ine whether the user ID and password combination is valid. In one embodiment directory server 150 may be a software application configured to store data regarding authorized users of IM system 10, such as a user ID, full name, and contact information for a given user. In some embodiments, directory server 150 may implement the lightweight directory access protocol (LDAP), whereas in other embodiments dnectory server 150 may store user data using a different protocol. If directory server 150 confinns the validity of the user ID and password supplied by IM server 140, IM server 140 may update the presence status of the user in question to reflect an online status and allow the user to proceed to initiate instant messaging operations.
[0042] In the illustrated embodiment of IM system 10, IM server 140 may be configured to send email to users who are offline when an alert is directed to them. Specifically, IM server 140 may communicate with SMTP server 160 to provide the content and addressee infonnation for such emails. SMTP server 160 may be a software application configured to process the sending and receiving of email. In one embodiment, SMTP server 160 may implement the simple mail transfer protocol (SMTP), although in other embodiments other protocols may be employed. In some embodiments of IM system 10, the anival of email destined for a given online user may trigger an instant messaging alert operation to that user. In such embodiments, IM server 140 may be configured to receive incoming email anival infomiation and to direct alerts to the appropriate IM clients 100 in response to such infonnation.
[0043] In the illustrated embodiment, IM system 10 includes calendar server 190. Calendar server 190 may be a software application configured to maintain schedule infomiation for a given user of IM system 10, where such schedule infomiation may indicate an activity status of a given user at a given time of day. In one embodiment, calendar server 190 may be compliant with the Internet Calendaring and Scheduling Core Object Specification standard (RFC 2445), while in other embodiments, other standards may be employed. Schedule infonnation may include the beginning and ending times of various events such as meetings, appointments, or other activity, for example. Schedule infomiation may also include infomiation about recurrence of events, locations, and contact infomiation pertinent to a given event, as well as names of events and remarks pertaining to a given event. An activity status may include whether a user is free or busy at a particular time, and may additionally include more specific states such as, but not limited to, the presence states described above. As described in greater detail below, calendar server 190 may interact with IM clients 100 to to modify presence state information based on schedule data. Calendar server 190 may also interact directly witii IM server 140 on behalf of a user. It is noted that in some embodiments, IM system 10 may omit calendar server 190 while including other modules and functions such as those illustrated in FIG. 1. Additionally, in some embodiments IM system 10 may incorporate the functionality of calendar server 190 into a different software module, such as IM seiver 140, for example.
[0044] It is noted that although the illustrated embodiment of IM system 10 depicts a web-based IM client application and a client-server IM system topology, alternative embodiments are contemplated in which different IM client application structures and different IM system topologies are employed. In one alternative embodiment, IM client 100 may be configured as a standalone application program rather than as a web-based application. In such an embodiment, IM client 100 may be invoked independently of web browser 110, without downloading application code such as DVI resources 180 via web server 170. In another alternative embodiment, IM system 10 may be configured in a peer-to-peer topology rather than a client-server topology. In such an embodiment, the functions performed by IM server 140 as described above may be distributed among the IM clients 100 within the system. For example, rather than storing presence state infonnation for users centrally within IM server 140 as in the client- server implementation, in one peer-to-peer embodiment a given IM client 100 may store presence state infonnation for other IM clients 100 that are nearby (e.g., on the same portion of a network). In such a peer-to-peer embodiment, presence state changes and requests for presence state infomiation may propagate from one IM client 100 to another. Further, in embodiments where the function of IM server 140 is distributed among IM clients 100, IM multiplexor 130 may be unnecessary. Other embodiments of IM system 10 are possible and contemplated, including combinations of the aforementioned embodiments.
[0045] It is also noted that in some embodiments, various combinations of software modules illustrated as distinct in FIG. 1 may be combined into one or more different software modules. It is further noted that the various software modules illustrated in FIG. 1 may operate within a varying number of computer systems in different embodiments. For example, in one embodiment, each software module of the illustrated embodiment of IM system 10 may operate within a single computer system. In another embodiment, each of IM server 140, directory server 150, SMTP server 160, and web server 170 may operate within a respective computer system, winch systems may be interconnected via a communication network. Other such variations are possible and contemplated. [0046] Refening to FIG. 2, a block diagram illustrating one embodiment of a system configured to execute instant messaging system software modules. Elements conespondmg to elements of FIG. 1 are numbered identically. System 12 includes a plurality of computer systems 20a-f, which collectively may be refened to as computer system 20. Each of computer systems 20a-f is coupled to interconnect medium 15.
[0047] Each computer system 20 may be configured to execute software code such as the software modules of IM system 10 illustrated in FIG. 1 and FIG. 2. Various embodiments of computer system 20 are described in greater detail below in conjunction with the description of FIG. 3. Interconnect medium 15 may be configured to transfer data among computer systems 20. In some embodiments, interconnect medium 15 may be a wired communications medium such as an Ethernet, fiber optic, or telephony network, for example. In other embodiments, interconnect medium 15 may be a wireless communications medium such as, for example, a wireless 802.11 local area network (LAN) or a wireless telephony network (e.g., a cellular, PCS, or GSM network). It is contemplated that in some embodiments interconnect medium 15 may include multiple types of communications media and may represent the Internet or an intranet.
[0048] In the illustrated embodiment, computer system 20a is configured to execute directory server 150 as well as web browser 100b and IM client 100b. Computer system 20b is configured to execute web browser 100a and IM client 100a. Computer system 20c is configured to execute web server 170 and to seive IM resources ISO. Computer system 20d is configured to execute SMTP server 160. Computer system 20e is configured to execute IM multiplexor 130 and IM server 140, while computer system 20f is configured to execute calendar server 190. In the course of executing its respective software modules, each computer system 20 may communicate with other computer systems 20 to perform the various IM system operations described above. For instance, when a user of computer system 20b wishes to initiate an IM session, computer system 20b may communicate with computer system 20c so that web browser 110a may obtain IM resources 180 via web server 170. Additionally, computer system 20b may communicate with computer system 20e so that IM server 140 may authenticate and authorize the user. Computer system 20e may communicate with computer system 20a so that IM server 140 may obtain information regarding the user's identity from directory server 150. [0049] It is noted that in alternative embodiments, the illustrated software modules may be distributed differently among computer systems 20. For example, server-type software modules may be configured to operate on a first set of one or more computer systems 20, while client-type software modules (e.g. DVI client 100 and web browser 110) may be configured to operate on a second set of one or more computer systems that is distinct from the first set. Additionally, in some embodiments each software module may operate on a respective computer system 20, whereas in other embodiments multiple software modules may operate on a given computer system 20.
Instant messaging system hardware
[0050] As noted above, the software modules comprising the illustrated embodiment of IM system 10 may be executed by one or more computer systems during operation of IM system 10. Refening to FIG. 3, a block diagram of one embodiment of an exemplary computer system is shown. In the illustrated embodiment, computer system 20 includes processor 200 coupled to memory 210. Both processor 200 and memory 210 are coupled to a variety of devices via input/output (I/O) subsystem 220, including input device 230, display device 240, mass storage device 250, and network interface device 260.
[0051] Processor 200 may be configured to execute program instructions stored in memory 210 or received via I/O subsystem 220. In one embodiment, processor 200 may be a microprocessor configured to implement a given instruction set architecture (ISA), such as the SPARC ISA or die x86 ISA, for example. In another embodiment, processor 200 may be a digital signal processor, while in still another embodiment, processor 200 may be an integrated device such as a microcontroller. In some embodiments, processor 200 may include an integrated memory controller (not shown) enabling it to couple directory to memory such as memory 210, whereas in other embodiments, processor 200 may couple to memory via a separate interface (e.g., a north bridge) or via I/O subsystem 220.
[0052] Memory 210 may be configured to store program instructions and data during operation of computer system 20. In various embodiments, memory 210 may include any of a variety of memory technologies such as static random access memory (SRAM) or dynamic RAM (DRAM), including variants such as dual data rate synchronous DRAM (DDR SDRAM), enor correcting code synchronous DRAM (ECC SDRAM), or Rambus DRAM (RDRAM), for example. Memory 210 may also include nonvolatile memory technologies such as nonvolatile "flash" RAM (NVRAM) or read-only memory (ROM). In some embodiments, it is contemplated that memory 210 may include a combination of technologies such as the foregoing, as well as other technologies not specifically mentioned. In the illustrated embodiment, memory 210 includes software code 215, winch may include program instructions and data conesponding to one or more of the software modules of IM system 10 of FIG. 1. Code 215 may also include program instructions and data conesponding to other application or operating system software modules. [0053] I/O subsystem 220 may be configured to interface various peripheral devices to processor 200 and to memory 210. In one embodiment I/O subsystem 220 may include logic and interconnect devices configured to implement a bus interconnect standard such as the peripheral component interconnect (PCI) bus standard, although in other embodiments other bus interconnect types or a combination of such types may be supported. In some embodiments, I/O subsystem 220 may include logic configured to support direct memory access (DMA) transfers between peripheral devices and memory 210. [0054] Input device 230 may be configured to receive input from one or more users of computer system 20 and to deliver such input to processor 200 and/or memory 210 via I/O subsystem 220. For example, in one embodiment input device 230 may include tactile input devices such as a computer keyboard, a computer mouse, or a stylus/touchpad interface. Additionally, in one embodiment input device 230 may include video or audio input devices such as a video camera, a still camera, or a microphone, for example. In some embodiments, it is contemplated that input device 230 may include more than one input device, including other types of input devices. Input device 230 may also include hardware necessary to convert the format of the input data to the format required by computer system 20. For example, input device 230 may include analog-to-digital processing hardware to convert audio or video input to a digital fonnat. [0055] Display device 240 may be configured to display output of computer system 20 to one or more users. For example, in one embodiment display device 240 may mclude a video display terminal such as a computer monitor or a liquid crystal display (LCD) screen, as well as a graphics processor configured to convert output data from the format produced by processor 200 to the fonnat required by the display device. Display device 240 may also include audio output hardware or other output devices such as printers or plotters. In some embodiments, it is contemplated that display device 240 may include more then one display device, including other types of display devices. Further, in some embodiments a given device such as a touch screen, for example, may function as both an input device and a display device.
[0056] Mass storage device 250 may be configured to store data, including program instructions and data, for use during operation of computer system 20. In one embodiment, mass storage device 250 may be both readable and writable, and may thereby be configured to store data produced by computer system 20 or received from input device 230 or another computer system. For example, mass storage device 250 may include a magnetic storage device such as a fixed disk drive (also refened to as a hard drive or hard disk), a removable magnetic disk drive, or a tape drive. Mass storage device 250 may also include a rewritable optical storage device such as a recordable or rewritable compact disk (CD-R or CD-RW) or a recordable digital video disk (DVD), for example. In other embodiments, mass storage device 250 may be a read-only optical device such as a CD-ROM or DVD-ROM. In still other embodiments, mass storage device 250 may be a solid-state storage device such as a removable flash RAM device, for example. In some embodiments, it is contemplated that optional mass storage device 250 may include more than one storage device, including other types of storage devices.
[0057] Network interface device 260 may be configured to transmit data from computer system 20 to other computer systems as well as to receive data from other computer systems via a communication network. In one embodiment, network mterface device 260 may be physically coupled to one or more other computer systems and may implement a networking standard such as Ethernet, for example. Alternatively, network interface device 260 may implement a fiber optic communication network protocol, or it may implement a telephony protocol and function as a dial-up modem, for example. In another embodiment, network interface device 260 may use a wireless networking protocol to interface with one or more other computer systems, such as a wireless Ethernet protocol (e.g., Wi-Fi), the Bluetooth standard, or a wireless telephony standard. In some embodiments, it is contemplated that network interface device 260 may include more than one network interface implementing more than one type of interface protocol, including other types of devices and protocols.
[0058] It is noted that in some embodiments of computer system 20, functions of various elements depicted in the embodiment of FIG. 1 may be integrated into a single element. For example, in one embodiment, a microcontroller may integrate some or all of the functions of processor 200, memory 210, and I/O subsystem 220. Alternatively, as noted above, in one embodiment input device 230 and display device 240 may be integrated into a single device, for example. Further, it is noted that in some embodiments, computer system 20 may omit one or more of input device 230, display device 240, mass storage device 250, and network interface device 260. [0059] Various embodiments of computer system 20 may conespond to various types of well-known computing devices, depending on the configuration of the various components of computer system 20. For example, an embodiment of computer system 20 that includes a high-performance processor 200, a large quantity of memory 210, a large quantity of hard disk storage as mass storage device 250, and a high-bandwidth network interface device 260 may be configured to operate as a server computer system. Such a server computer system may further be configured to execute the server software modules of the IM system 10 embodiment illustrated in FIG. 1, as well as other software modules of IM system 10.
[0060] In other embodiments, computer system 20 may be a desktop or portable computer system or a tablet computer system. A personal digital assistant (PDA) may be an embodiment of computer system 20 configured, for example, to include a touch screen and/or a voice recognition interface as input device 230, a low-power- consumption processor 200, flash NVRAM as memory 210, and a wireless Ethernet interface (e.g., implementing the 802.1 1 "Wi-Fi" standard) as network interface device 260. A wireless telephony device may also be an embodύnent of computer system 20. Various embodiments of such wireless telephony devices may include, for example, an analog or digital "cellular" telephone device implementing a wireless telephony standard such as GSM, TDMA, CDMA, or another standard. The aforementioned embodiments may be configured to execute software modules of the IM system 10 embodiment illustrated in FIG. 1 such as IM client 100 and/or web browser 110, as well as other software modules of IM system 10. It is noted that numerous other embodiments of computer system 20 are possible and contemplated.
[0061] As noted above, in some embodiments code 215 may conespond to one or more of the software modules of IM system 10 illustrated in FIG. 1. In the illustrated embodiment of computer system 20, code 215 resides in memory 210. Memory 210 may be one embodiment of a computer-accessible medium configured to store program instructions and/or data such as mcluded m code 215 However, in other embodiments, the program instructions and or data mcluded m code 215 may be received, sent oi stored upon different types of computer- accessible media Generally speaking, a computer-accessible medium may mclude storage media or memory media such as magnetic or optical media, e g , disk or CD-ROM mcluded m some embodiments of computei system 20 as mass stoiage device 250 A computer-accessible medium may also mclude volatile or non-volatile media such as RAM (e g SDRAM, DDR SDRAM, RDRAM, SRAM, etc ), ROM, etc, that may be mcluded in some embodiments of computer system 20 as memory 210 Further, a computer-accessible medium may mclude transmission media or signals such as electrical, electromagnetic, or digital signals, conveyed via a commumcation medium such as nerwoik and/oi a wireless lmk, winch may be mcluded m some embodiments of computer system 20 as netwoik mteiface device 260
Changing instant messenger presence state based on busy detection
[0062] As described above, m some embodiments, IM system users may manually change the piesence state associated with then respective IM clients to leflect an "away" presence status Foi example, upon commencing a particulai woik activity, useis may wish to mdicate that they are unavailable to participate m mstant messagmg operations Such users may then manually transition the presence state associated with their respective IM clients to an "away" presence state The "away" piesence state of such users may then be viewed by other IM system users [0063] In some embodiments, the presence state of an IM system user may be automatically tiansitioned to a busy state depending on some c teiion It is noted that in some embodiments, a busy piesence state may be any IM piesence state designated to repiesent busy status infomiation In one embodiment, a busy piesence state may be a custom presence state defined by a given IM system usei, such as "leave me alone," for example
[0064] In one embodiment, whether oi not a given IM system user is busy may be associated with the activity of that user's computei system For example, a high level of activity of mput device 230, such as keyboaid or mouse activity, may indicate that a given user of computer system 20 is busy and that the presence state of that user should be tiansitioned to a busy state Snmlarly, foi example, if such a high level of activity is followed by a lowei level of activity, this may mdicate that the user is no longer busy and that the piesence state of the user should be transitioned to an onlme state It is noted that in some embodiments, an onlme piesence state may be any IM presence state designated to repiesent onlme status mformation, where onlme status may represent a lower level of activity than that conespondmg to a busy state In one embodiment, an onlme presence state may be a custom presence state defined by a given IM system user, such as "I'm free," for example Alternatively, if a high level of activity is followed by no activity, this may mdicate that the user is no longer busy and that the presence state of the user should be transitioned to an idle state It is noted that in some embodiments, an idle piesence state may be any IM presence state designated to represent idle status infonnation, and in one embodiment, an idle presence state may be a custom presence state defined by a given IM system user [0065] In one embodiment, a software module of IM system 10 of FIG 1, such as IM client 100, for example, may be configured to detect a computer system activity level, to determine whether that activity level exceeds an activity threshold, and to transition the presence state conespondmg to a given user to a busy state in response to determining that the activity level exceeds the activity threshold It is noted that m some embodiments, the computer system activity detected may occur on a computer system different from the one executing the software module configured to perform the detection [0066] In one embodiment, the computer system activity level may be a metric conesponding to an aspect of activity of computer system 20. For example, in various embodiments, computer system activity may include keyboard activity, mouse activity, or processor utilization, and the conesponding computer system activity levels may be keyboard strokes per unit of time, mouse movements per unit of time, or the fraction of processor time spent performing operations other than idling, respectively. Processor utilization may further be segregated into utilization conesponding to foreground and background software processes, where in one embodiment, foreground software processes include processes a user is directly interacting with and background software processes include processes a user is not directly interacting with (such as batch jobs, for example). In one embodiment, computer system activity may also include instant messaging operations, such as chat sessions, where the conesponding activity level may include the number of simultaneous chat sessions a given user is participating in, for example. In other embodiments, other types and levels of computer system activity may be detected. It is noted that in some embodiments, the computer system activity to be detected may be configurable by a user. For example, a given user of IM client 100 may determine that the relevant computer system activities to be considered when detenriining whether to transition to a busy presence state include keyboard activity and processor utilization, but not mouse activity. The given user may then configure the appropriate activities to be detected, for example through a user interface provided by IM client 100.
[0067] In one embodiment, IM client 100 may be configured to compare the detected activity level to a conesponding activity threshold to determine whether the activity threshold has been exceeded. In one embodiment, IM client 100 may make this determination at a single point in time, whereas in another embodiment, IM client 100 may include a threshold time parameter conesponding to a given activity level and may require the activity level to exceed the activity threshold for at least the threshold time before detemiuiing that the activity threshold has been exceeded. In one embodiment, the various activity thresholds and conesponding threshold times may be parameters configurable by a user of IM client 100. For example, IM client 100 may provide a user interface through which a user may specify which activities are to be detected, as well as what thresholds conespond to the specified activities. As a specific example, a user may select tiiat keyboard activity should be detected with an activity threshold of 50 keystrokes per minute and a threshold time of three minutes and that foreground processor utilization should be detected with an activity threshold of 60% and a threshold time of five minutes. [0068] In one embodiment, IM client 100 may be configured to transition the presence state conesponding to a given user to a busy state in response to determining that the detected activity level exceeds the conesponding activity threshold. In such an embodiment, IM client 100 may further be configured to determine whether the detected activity level does not exceed the conesponding activity threshold and to transition the presence state to an online state in response to this detemiination. In one embodiment, IM client 100 may further be configured to determine whether no activity has been detected and to transition the presence state to an idle state in response to this detemiination. IM client 100 may employ respective threshold times for online state determination and idle state detemiination that in various embodiments may be the same parameters as that used for busy detemiination, or separate parameters.
[0069] It is noted that although in one embodiment, busy status detection and conesponding presence state transitioning have been described as aspects of IM client 100, in other embodiments, it is contemplated tiiat these functions may be implemented in other software modules of IM system 10 in various embodiments as noted above. It is further noted that in some embodiments, these functions may be implemented as program instructions and/or data of a computer-accessible medium as described above.
[0070] FIG. 4A is a flow diagram illustrating the operation of one embodiment of an mstant messaging system during processing of presence state using computer system activity infomiation. Operation begins in block 300, where a computer system activity level indicative of computer system activity is detected. In one embodiment, a software module such as IM client 100 of FIG. 1, for example, may be configured to perform computer system activity level detection, as described above. Also, in one embodiment, the computer system exhibiting die detected activity may be a system such as computer system 20 of FIG. 3. In various embodiments, d e types and levels of computer system activity detected may be those described above, including, for example, keyboard, mouse, processor (including foreground and background process activity), and instant messaging operation activity. Additionally, as noted above, the computer system activity detected may be configurable by a user. [0071] In response to detecting computer system activity, the instant messaging system may determine whether the detected activity level exceeds an activity threshold (block 302). Activity threshold types may be as described above, and in some embodiments may be configurable by a user. In one embodiment, detemiining whether the detected activity level exceeds an activity threshold may include detennn ing whether the duration of the detected level of activity exceeds a threshold time. In some embodiments, as noted above, the threshold time may be configurable by a user.
[0072] In response to determming whether the detected activity level exceeds an activity threshold, if die threshold is not exceeded, no action may be taken (block 304). If the threshold is exceeded, the instant messaging system may transition the presence state conesponding to a given user to a busy state (block 306). In another embodiment, operation may optionally continue from block 306, as described below.
[0073] FIG. 4B is a flow diagram illustrating the operation of a second embodiment of an instant messagmg system during processing of presence state using computer system activity information. The operation illustrated in FIG. 4B represents a continuation of the operation illustrated in FIG. 4A. Specifically, operation begins subsequent to block 306 of FIG. 4A, where the instant messaging system has transitioned the presence state conesponding to a given user to a busy state. In block 308, subsequent to transitioning the presence state to the busy state, the instant messaging system may determine whether the detected activity level does not exceed the activity tirreshold. In one embodiment, detemiining whether the detected activity level does not exceed an activity threshold may mclude detemiining whether the duration of the detected level of activity exceeds a threshold time, which time may be the same value as or a different value from the time refened to in block 302 of FIG. 4A. In an alternative embodiment, the instant messagmg system may distinguish between whether the detected activity level does not exceed an activity threshold and whether no activity is detected.
[0074] In response to deten ining whether the detected activity level does not exceed an activity threshold, if the threshold is exceeded, no action may be taken (block 310). If the tirreshold is not exceeded, the instant messaging system may transition the presence state conesponding to a given user to an online state (block 312). In an alternative embodiment in which the instant messaging system distinguishes between whether die detected activity level does not exceed an activity threshold and whether no activity has been detected, the instant messaging system may transition the presence state conesponding to a given user to an idle state in response to determining that no activity has been detected. Changing instant messenger presence state based on schedule information
[0075] As described above, in some embodiments IM system users may manually select a busy presence state, or such a presence state may be assigned by a respective IM client without a user's intervention in response to detecting various types of computer system activity. In addition to these techniques for changing presence state to a busy presence state, in some embodiments IM system users may manually select their presence state based on their schedule information. For example, at the beginning or end of a scheduled event such as a meeting, users may wish to indicate their activity status to others via their presence state. Such users may then manually transition the presence state associated with their respective IM clients to a presence state indicative of their activity status, such as "engaged," "in a meeting," "away from my desk," or "available," for example. In some embodiments, users may define custom presence states indicative of specific activity status infonnation, such as "in the weekly sales meeting," for example.
[0076] In one embodiment, the presence state of an IM system user may be automatically transitioned to a presence state conesponding to a given activity status depending upon that user's schedule information. For example, if a user stores schedule information in a calendar application accessible by the IM system, in one embodiment, the stored schedule infonnation may be used to transition that user's presence state as his or her activity status, as indicated by the stored schedule infomiation, changes throughout the day.
[0077] In one embodiment, a software module of IM system 10 of FIG. 1, such as calendar server 190, for example, may be configured to store schedule infomiation indicative of the activity status of conesponding users of IM system 10. Additionally, a software module of IM system 10 such as IM client 100, for example, may be configm'ed to query the schedule infomiation and to assign a presence state conesponding to the activity status indicated by a given user's schedule infonnation, if the current presence state of that user does not so conespond. [0078] In one embodiment, calendar server 190 may be a calendar application program configured to store schedule information indicative of a user's activity status. For example, calendar server 190 may be configured to store start and end times of various scheduled events occuming throughout a user's day. In some embodiments, calendar server 190 may also be configured to store additional infomiation regardmg scheduled events such as die name of the event, its location, and the identities of other attendees, for example. In some embodiments, calendar server 190 may make a given user's schedule information visible to other users for reading and/or modification. For example, calendar server 190 may allow one user to add events to another's schedule information, such as when scheduling a meeting. In some embodiments, calendar server 190 may require authentication and authorization of a given user prior to allowing the given user to access Iris or her own schedule infomiation or the schedule infonnation of another user. In such embodiments, authentication and authorization may be performed directly by calendar server 190 or by another module of IM system 10 such as IM server 140, for example. Further, in some embodiments directory server 150 may be employed to assist in authentication and autiiorization of users of calendar server 190 in a manner similar to that described above for the general case of IM user authentication. [0079] In one embodiment, calendar server 190 may be configured to respond to queries for schedule information conesponding to a given user, tiiereby making schedule information available to other applications. In one embodiment, calendar server 190 may be compliant with the Internet Calendaring and Scheduling Core Object Specification (also refened to as RFC (Request for Comments) 2445), a standard specifying a format for data exchange with calendar applications, although in other embodiments, a different standard for data exchange may be employed. In one embodiment, calendar server 190 may be accessible for queries as a web application via a uniform resource locator (URL) or "web address," although in other embodiments, calendar server 190 may be accessible via a different interface.
[0080] In response to a query for schedule infonnation of a given user, in one embodiment calendar server 190 may return an indication of free (i.e., available) or busy (i.e., engaged) activity status of that user. For example, if there is any scheduled event at the time specified in the query, calendar server 190 may return an indication of engaged activity status. Otherwise, calendar server 190 may return an indication of available activity status. In another embodiment, calendar server 190 may return more details about a given user's schedule infonnation instead of or in addition to an indication of available or engaged activity status. For example, if there is any scheduled event at the tune specified in the query, calendar server 190 may return the name of the event, its location (if known), and its duration.
[0081] In one embodiment, a given IM client 100 may be configured to query calendar server 190 for the schedule infomiation conesponding to the user associated with the given IM client 100. The activity status indicated by the schedule information returned by calendar server 190 may not conespond with the cunent presence state of the user associated with the given IM client 100. If the cunent presence state does not conespond to the indicated activity status, in one embodiment, IM client 100 may be configured to assign a different presence state that does conespond to the indicated activity status. For example, the cunent presence state of the user may be idle or onlme, but at the queried time, a scheduled meeting may have begun, and calendar server 190 may have returned an engaged activity status. Conespondingly, IM client 100 may assign an engaged presence state in response to the schedule query. Conversely, the cunent presence state of the user may be engaged, but at the queried time, a scheduled meeting may have ended, and calendar server 190 may have returned an available activity status. Conespondingly, IM client 100 may assign an idle or online presence state in response to the schedule query. Alternatively, IM client 100 may store the presence state of the user prior to the beginning of a scheduled event, and may return the presence state of the user to the stored state after the scheduled event ends. [0082] In an altemative embodiment, calendar server 190 may return more detailed schedule information instead of or in addition to an indication of available or engaged activity status, as described above. In such an embodiment, if the cunent presence state does not conespond to the indicated activity status, IM client 100 may be configmed to assign a different presence state detemiined by die schedule information returned by calendar server 190 in response to the query. For example, prior to querying calendar server 190, IM client 100 may indicate that the cunent presence state of the user is online. If at the queried time, the weekly sales meeting has begun, calendar server 190 may return the event title "weekly sales meeting" and a specific event end time, or other similar indications, in response to die schedule query. In response, IM client 100 may assign a presence state specific to the returned schedule infomiation, such as "at weekly sales meeting" or "back at <end time>" where <end time> represents die event end time returned by calendar server 190. [0083] In one embodiment, IM client 100 may query calendar server 190 for a given user's schedule infomiation periodically or aperiodically, using the current time at the time of each query as the basis for the query. Depending on the interval between queries, such an embodiment may approximate real-time synchronization of IM client 100 with calendar server 190. In an alternative embodiment, IM client 100 may at a given time make multiple queries of calendar server 190, each query for a different time. IM client 100 may then queue the query results internally and monitor the queue for activity status changes as cunent time progresses. Such an embodiment may enable IM client 100 to retain an indication of pending schedule information in case calendar server 190 is not continuously accessible, for example if the user disconnects a portable computer system from the network that provides access to calendar server 190 on a different computer system. In still another alternative embodiment, calendar server 190 may be configured to initiate a query of schedule infomiation for a given user and to send the results of the query to the appropriate IM client 100 without waiting for a query to originate from IM client 100.
[0084] It is noted that although in one embodiment, storage of schedule information and assignment of presence state based on such schedule information have been described as aspects of calendar server 190 and IM client 100 respectively, in other embodiments, it is contemplated that these functions may be implemented in other software modules of IM system 10 in various embodiments as noted above. For example, in one embodiment IM seiver 140 may interact directly with calendar server 190 to store a queue of schedule infonnation on behalf of a given IM client 100. It is also contemplated that in one embodiment, these functions may be combined in a single software module. It is further contemplated that in some embodiments, these functions may be implemented as program instructions and/or data of a computer-accessible medium as described above. [0085] FIG. 5 is a flow diagram illustrating the operation of one embodiment of an mstant messaging system during processmg of presence state using schedule information. Operation begins in block 400, where schedule information corresponding to a given user and indicative of that user's activity status at a given time is stored. In one embodiment, a software module such as calendar server 190 of FIG. 1, for example, may be configured to store such schedule information, as described above. In various embodiments, the schedule information stored may be as described above, including, for example, a user identity, an event title, an event location, and event start and end times.
[0086] In block 402, the stored schedule infomiation is queried. In one embodiment, a software module such as IM client 100 of FIG. 1, for example, may be configm'ed to query such stored schedule infomiation, as described above. In another embodiment, a common software module may be configured to both store and query schedule infomiation conesponding to a given user. Also, in one embodiment, calendar server 190 and IM client 100 may be configmed to execute on one or more computer systems such as computer system 20 of FIG. 3.
[0087] In block 404, in response to the schedule infomiation query, if the current presence state of IM client 100 does not conespond to the activity status indicated by the schedule infomiation for the given user, IM client 100 may assign a different presence state that conesponds to the activity status for the given user. As described above, in one embodiment, die cunent presence state may be transitioned to an engaged state in response to detecting an engaged activity status of the given user, and the cunent presence state may be transitioned to an online state in response to detecting an available activity status of the given user. In another embodiment, the cunent presence state may be transitioned to a state determined by the schedule infomiation of the given user. For example, die schedule information may indicate an event title or location, and in one embodiment IM client may assign a conesponding presence state that includes some or all of such schedule information.
Linking instant messaging operations to presence state
[0088] The foregoing description illustrates how, in various embodiments, the presence state of an IM system user may be changed without that user's intervention based on such factors as computer system activity and user schedule information, for example. Even with these features, however, in some embodiments presence states and presence state transitions may function only as advisory indications. That is, the presence state of a given user may indicate state information to other users, but may not modify other users' ability to engage in instant messaging operations with the given user. For example, if the given user's presence state changes to a busy state, either manually or without user intervention as described above, other users may not be prevented from sending alert operations or chat session requests to the given user despite the busy presence state. Additionally, in such embodiments, transitions from one presence state to another may have no particular significance in themselves, other than to advise that the given user's presence state has changed.
[0089] In one embodiment, mstant messaging operations directed to a given user may operate selectively depending on the presence state of the user. For example, if a given user has a busy presence state, alert operations and chat session requests directed to die given user may be queued rather than delivered, thereby potentially eliminating the distraction of an instant messaging operation. In contrast, if the given user has an idle or online presence state, such alert operations and chat session requests may be processed and delivered normally. Additionally, in one embodiment, certain instant messenger operations may be associated with certain presence states for a given user, such that when the given user's presence state transitions to a new state, any instant messenger operations associated with the new state may be performed. For example, if a given user needs to perform a task before leaving on a particular day, an alert operation including a task reminder message may be scheduled for the particular day and associated with a "gone home" presence state. When the given user manually selects the "gone home" presence state, or alternatively when the user's calendar-based schedule information causes the "gone home" presence state to be selected as described above, the associated alert operation may be processed and delivered to the given user.
[0090] In one embodiment, a software module of IM system 10 of FIG. 1, such as IM client 100, for example, may be configm'ed to receive an instant messagmg operation directed to a given user, detennine the presence state of the given user, and to selectively process the instant messagmg operation dependent upon the presence. Additionally, in one embodiment a software module of IM system 10 of FIG. 1, such as IM client 100, for example, may be configured to store an instant messaging operation associated with a given presence state conespondmg to a given user, detect a fransition to the given presence state, and perfomi the instant messagmg operation associated with the given presence state.
Processing instant messenger operations dependent on presence state [0091] In one embodiment, IM client 100 may be configured to receive an instant messaging operation directed to a given IM system user who is not offline. For example, a given IM client 100 may be configured to receive a chat, alert, or poll operation as described above, although in other embodiments it is contemplated that additional or different operations may be received. The operation may be directed to a user who is online in IM system 10, associated with the given IM client 100, and whose presence state as indicated by the given IM client 100 is other than an offline presence state. In response to receiving the instant messaging operation, IM client 100 may be configured to determine the presence state of the user. Specifically, IM client 100 may detennine that the presence state of the user is an idle presence state, an online presence state, or another presence state that may be indicative of an idle user state. Likewise, LM client 100 may determine that the presence state of the user is a busy presence state or another presence state that may be indicative of a busy user state. As noted above, in one embodiment a presence state may mdicate a user's presence or absence as well as available information regarding that user's activity status. A user's activity status may also be refened to herein as a user state, and various presence states may be grouped according to user states the presence states may indicate. For example, "available" may be a presence state indicative of an idle user state, and "engaged" and "away" may be presence states indicative of a busy user state. [0092] As noted above, IM client 100 may be configured to selectively process the received operation dependent upon the presence state of the user. In one embodiment, IM client 100 may be configured to notify the user of the received operation if the presence state of the user is indicative of an idle user state. For example, if the user has an online presence state and receives an alert operation, the alert operation may be processed normally, and the user may receive whatever alert notification the alert operation, such as a visual or audible notification. In such an embodiment, IM client 100 may be further configured to queue the received operation without notifying the user if the presence state of the user is indicative of a busy user state. In the example above, if the user has an engaged presence state and receives an alert operation, the alert operation may be queued without notifying the user with a visual or audible notification. Alternatively, the usual notification associated with the received operation may be modified in this case, such as by displaying a visual or audible notification of reduced intensity. In another embodiment, IM client 100 may be configm'ed to selectively queue the received operation depending on other information pertaining to the operation. For example, IM client 100 may be configured to queue operations originated from certain users, while allowing operations originating from other users to notify the busy user, thereby providing the capability for the busy user to "screen" incoming operations.
[0093] In one embodiment, if an instant messaging operation initiated by a second user is queued in response to a busy user state of the intended recipient as described above, IM client 100 associated with the intended recipient may be configured to notify the second user that the operation was queued. For example, a second user may attempt to initiate a chat operation with a user having an engaged presence state. The chat operation may be queued at the IM client 100 of the busy user, which may send the second user a notification that the intended target of the chat operation is busy and/or that the chat operation has been queued. [0094] In another embodiment, IM client 100 may be configm'ed to detect a transition from a presence state indicative of a busy user state to a presence state indicative of an idle user state, and in response, to notify the associated user of queued instant messaging operations. For example, a user may manually fransition his or her presence state from an away state to an online state, or such a fransition may occur based on computer system activity status or schedule infomiation as described above. Once the user transitions to an onlme presence state, queued operations may be delivered, for example in the order they were queued. [0095] It is noted that although in one embodiment, selective processing of mstant messaging operations dependent upon a given user's presence state has been described as an aspect of IM client 100, in other embodiments, it is contemplated that this function may be implemented in oti er software modules of IM system 10 in various embodiments as noted above. It is further contemplated that in some embodiments, this function may be implemented as program instructions and/or data of a computer-accessible medium as described above. [0096] FIG. 6 is a flow diagram illustrating the operation of one embodiment of an instant messaging system during selective processing of instant messaging operations. Operation begins in block 500, where an instant messaging operation directed to a given user who is not offline is received. In one embodiment, a software module such as IM client 100 of FIG. 1, for example, may be configured to receive such an operation, as described above. In various embodiments, such an operation may include a chat operation, an alert operation, a poll operation, or another mstant messenger operation.
[0097] In response to receiving the instant messaging operation, the presence state of the given user to whom the received operation is directed is determined (block 502). In one embodiment, DVI client 100 may be configured to detennine the presence state of the given user.
[0098] In response to detennining the presence state of the given user, the received operation is selectively processed dependent upon the presence state (block 504). In one embodiment, IM client 100 may select a particular action to take in response to the received operation, as described above.
[0099] FIG. 7 is a flow diagram illustrating the operation of another embodiment of an instant messaging system during selective processing of instant messaging operations. Operation begins in block 600, where an instant messaging operation directed to a given user who is not offline is received. In one embodiment, a software module such as IM client 100 of FIG. 1, for example, may be configured to receive such an operation, as described above.
In various embodiments, such an operation may include a chat operation, an alert operation, a poll operation, or another mstant messenger operation. [0100] In response to receiving the instant messaging operation, the presence state of the given user to whom the received operation is directed is determined (block 602). In one embodiment, IM client 100 may be configured to detennine the presence state of the given user.
[0101] If the presence state of the given user is indicative of an idle user state, the given user may be notified of the received instant messagmg operation, and the operation may be processed according to its specified behavior (block 604). For example, if the received operation is an alert operation, the given user may be notified of the alert operation.
[0102] If the present state of the given user is indicative of a busy user state, the received operation may be queued without notifying the given user (block 606). In one embodiment, IM client 100 may be configured to queue the received operation. In another embodiment, IM client 100 may be configured to notify a second user initiating the received operation of the queuing of the operation.
[0103] Subsequent to queuing of a received operation, a fransition from a presence state indicative of a busy user state to a presence state indicative of an online user state may be detected (block 608). In one embodiment, IM client 100 may be configured to detect such a fransition.
[0104] In response to detecting such a transition, the given user may be notified of a queued instant messaging operation (block 610). In one embodiment, IM client 100 may be configured to notify the given user of queued operations, such as by delivering them in the order they were queued, for example.
Perfomiing instant messenger operations in response to presence state changes
[0105] In one embodiment, IM client 100 may be configured to store an instant messaging operation associated with a given presence state conesponding to a given user. For example, IM client 100 may be configured to store a chat, alert, message or poll operation as described above, although in otiier embodiments it is contemplated that additional or different operations may be stored. The stored operation may be associated with a presence state such as an online presence state, for example. In one embodiment, IM client 100 may be configured to store sufficient infomiation about die stored operation to enable the stored operation to be initiated. For example, if the stored operation is a chat operation, IM client 100 may store the identity of the user or the group of users to whom the chat operation is directed. In one embodiment, IM client 100 may maintain a plurality of queues in which to store mstant messaging operations, with each queue associated with a respective presence state and configured to store operations associated with that presence state. For example, DM client 100 may maintain an online queue configured for storing operations associated with the online presence state, and a busy queue configured for storing operations associated with the busy presence state. In other embodiments, it is contemplated that the stored operations may be stored in different numbers and types of queues, or in data structures other than queues. Further, it is contemplated that in some embodiments another software module, such as IM server 140, may be configured to maintain and monitor queues or other data structures that store instant messaging operations associated with a particular presence state on behalf of a given IM client 100.
[0106] In one embodiment, IM client 100 may further be configured to detect a transition to a given presence state. For example, IM client 100 may detect a transition to an online presence state resulting from a user's manual selection or from processing computer system activity or schedule information without user intervention, as described above. In response to detecting the fransition, in one embodiment DVI client 100 may be configured to perform an instant messaging operation associated with the given presence state. For example, upon detecting a fransition to an online presence state, IM client 100 may perform an operation stored in an online queue. [0107] As a more specific example, a given user may wish to enter a particular chat session, such as a customer support chat session, whenever he or she is in an online presence state. The chat operation and infomiation associated with the desired chat session, such as the identity of the customer support chat session, may be stored in the online queue of the given user's IM client 100. Upon detecting a transition to an online presence state, the given user's IM client 100 may perfonn the queued chat operation, taking whatever steps may be necessary to place the given user in the customer support chat session.
[0108] Performing instant messaging operations in response to presence state changes may also incorporate schedule infomiation from calendar server 190 described above. For example, a given user may wish to receive an alert as a reminder of a relative's birthday the first time the given user's presence state changes to online on or after the birthday. (Alternatively, the given user may wish to send an alert to the relative as a birthday greeting under the same circumstances.) In one embodiment, calendar seiver 190 may maintain schedule information regarding the birthday event and may store the alert operation, an effective date before which the operation should not be performed, and associated information, such as the identity of the user who is to receive the alert, in the online queue of the given user's IM client 100 on behalf of that user. Upon detecting a fransition to an online presence state, the given user's IM client 100 may check the effective date of the queued alert operation. If the current date is equal to or later than the effective date, the given user's IM client 100 may perform the queued alert operation. In alternative embodiments, the stored alert could be associated with other presence states, such as the idle state, for example. [0109] It is noted that although in one embodiment, perfomiing instant messaging operations in response to presence state changes has been described as an aspect of IM client 100, in other embodiments, it is contemplated that this function may be implemented in other software modules of LM system 10 in various embodiments as noted above. For example, this function may be implemented in DM server 140. It is further contemplated that in some embodiments, this function may be implemented as program instructions and/or data of a computer-accessible medium as described above. [0110] FIG. 8 is a flow diagram illustrating the operation of one embodiment of an instant messaging system during execution of instant messaging operations in response to presence state changes. Operation begins in block 700, where an instant messaging operation associated with a given presence state conesponding to a given user is stored. In one embodiment, a software module such as DVI client 100 of FIG. 1, for example, may be configured to store such an operation, as described above. In various embodiments, such an operation may include a chat operation, an alert operation, a poll operation, or another instant messenger operation.
[0111] Subsequent to storing the mstant messenger operation, a transition to the given presence state may be detected (block 702). For example, in one embodiment LM client 100 may be configured to store a chat operation in a queue associated with an online presence state, and may subsequently detect a transition to an online presence state.
[0112] In response to detecting a fransition to the given presence state, the stored operation may be perfonned (block 704). Refening to the above example, in one embodiment IM client 100 may be configured to initiate the chat operation stored in queue associated with an online presence state in response to detecting a fransition to an online presence state. [0113] It is noted that alternative embodiments employing combinations and aspects of the foregoing features are possible and contemplated. For example, in one embodiment, modification of a given user's presence state based on computer system activity or schedule infomiation may be combined with processing of instant messenger operations dependent on that user's presence state or perfomiing instant messenger operations in response to presence state transitions. In some embodiments, such combinations of features may be implemented in several software modules such as those illustrated in the embodiment of IM system 10 of FIG. 1. In other embodiments, such combinations of features may be implemented in a single software module, for example IM client 100 of FIG. 1. In some embodiments, such combinations of features may be implemented as program instructions and/or data of a computer-accessible medium as described above. [0114] Although the embodiments above have been described in considerable detail, numerous variations and modifications will become apparent to those skilled in the art once the above disclosure is fully appreciated. It is intended that the following claims be interpreted to embrace all such variations and modifications.

Claims

WHAT IS CLAIMED IS:
1. A method, comprising: detecting a computer system activity level indicative of computer system activity; determining whether said activity level exceeds an activity threshold in response to said detecting; and transitioning a presence state of an instant messenger to a busy state in response to deterrniiiing that said activity level exceeds said activity threshold, wherein said presence state conesponds to a given user.
2. The method as recited in claim 1, further comprising: deteiTnining whether said activity level does not exceed said activity threshold subsequent to transitioning said presence state to said busy state; and transitioning said presence state of said instant messenger to an onlme state in response to detemiining that said level of computer system activity does not exceed said activity threshold.
3. The method as recited in claim 1, wherein said computer system activity comprises keyboard activity.
4. The method as recited in claim 1, wherein said computer system activity comprises mouse activity.
5. The method as recited in claim 1, wherein said computer system activity comprises one or more simultaneous instant messenger sessions.
6. The method as recited in claim 1, wherein said computer system activity comprises processor utilization.
7. The method as recited in claim 6, wherein said processor utilization further comprises a foreground processor utilization conesponding to activity of foreground computer system processes and a background processor utilization conesponding to activity of backgrotmd computer system processes, and wherein said activity threshold further comprises a foreground process threshold conespondmg to said foreground processor utilization.
8. The method as recited in claim 1, wherein said computer system activity is configurable by a user from a plurality of types of computer system activity.
9. The method as recited in claim 1, wherein said activity threshold is configurable by a user.
10. The method as recited in claim 1, wherein said activity tiueshold further comprises a tirreshold time, and wherein determining whether said level of computer system activity exceeds an activity threshold further comprises determining whether die duration of said level of computer system activity exceeds said threshold time.
11. The method as recited in claim 10, wherein said threshold time is configurable by a user.
12. The method as recited in claim 1, further comprising: storing schedule infomiation conesponding to a given user, wherein said schedule information is indicative of an activity status of said given user at a given time; querying said schedule information; and if a cunent presence state of said instant messenger does not conespond to said activity status indicated by said schedule infomiation, assigning a different presence state that conesponds to said activity status in response to said querying, wherein said current presence state and said different presence state each conespond to said given user.
13. The method as recited in claim 1, further comprising: receiving an instant messaging operation directed to a given user, wherein said given user is not offline; detemiining said presence state of said instant messenger in response to receiving said mstant messaging operation; and selectively processing said instant messaging operation dependent upon said presence state in response to said determining.
14. The method as recited in claim 1, further comprising: storing an mstant messaging operation associated with a given presence state of said instant messenger, wherein said given presence state conesponds to a given user; detectmg a transition to said given presence state subsequent to said storing; and performing said mstant messaging operation in response to said detecting.
15. A computer-accessible medium comprising program instructions, wherein the program instructions are computer-executable to: detect a computer system activity level indicative of computer system activity; determine whether said activity level exceeds an activity tirreshold in response to said detection; and transition a presence state of an instant messenger to a busy state in response to said detemiination that said activity level exceeds said activity threshold, wherein said presence state conesponds to a given user.
16. The computer-accessible medium as recited in claim 15, wherein said program instructions are further computer-executable to: determine whether said activity level does not exceed said activity tirreshold subsequent to transitioning said presence state to said busy state; and transition said presence state of said instant messenger to an online state in response to detemiining that said level of computer system activity does not exceed said activity threshold.
17. The computer-accessible medium as recited in claim 15, wherein said computer system activity comprises keyboard activity.
18. The computer-accessible medium as recited in claim 15, wherein said computer system activity comprises mouse activity.
19. The computer-accessible medium as recited in claim 15, wherein said computer system activity comprises one or more simultaneous instant messenger sessions.
20. The computer-accessible medium as recited in claim 15, wherein said computer system activity comprises processor utilization.
21. The computer-accessible medium as recited in claim 20, wherein said processor utilization further comprises a foreground processor utilization conesponding to activity of foreground computer system processes and a background processor utilization conesponding to activity of background computer system processes, and wherein said activity threshold further comprises a foreground process threshold conesponding to said foreground processor utilization.
22. • The computer-accessible medium as recited in claim 15, wherein said computer system activity is configurable by a user from a plurality of types of computer system activity.
23. The computer-accessible medium as recited in claim 15, wherein said activity threshold is configurable by a user.
24. The computer-accessible medium as recited in claim 15, wherein said activity threshold further comprises a tirreshold time, and wherein deterrriining whether said level of computer system activity exceeds an activity threshold further comprises deteirnrriing whether the duration of said level of computer system activity exceeds said tirreshold time.
25. The computer-accessible medium as recited in claim 24, wherein said tirreshold time is configurable by a user.
26. The computer-accessible medium as recited in claim 15, wherein said program instructions are further computer-executable to: store schedule infomiation conesponding to a given user, wherein said schedule infomiation is indicative of an activity status of said given user at a given time; query said schedule information; and if a cunent presence state of said instant messenger does not conespond to said activity status indicated by said schedule infomiation, assign a different presence state that conesponds to said activity status in response to said querying, wherein said current presence state and said different presence state each conespond to said given user.
27. The computer-accessible medium as recited in claim 15, wherein said program instructions are further computer-executable to: receive an instant messaging operation directed to a given user, wherein said given user is not offline; determine said presence state of said instant messenger in response to receiving said instant messaging operation; and selectively process said instant messaging operation dependent upon said presence state in response to said detemiining.
28. The computer-accessible medium as recited in claim 15, wherein said program instructions are further computer-executable to: store an instant messaging operation associated with a given presence state of said instant messenger, wherein said given presence state conesponds to a given user; detect a transition to said given presence state subsequent to said storing; and perform said instant messaging operation in response to said detecting.
29. A system, comprising: a computer system; and an mstant messenger software module configured to execute on said computer system; wherein said instant messenger software module is further configured to: detect a computer system activity level indicative of computer system activity; determine whether said activity level exceeds an activity tirreshold in response to said detection; and fransition a presence state of said instant messenger software module to a busy state in response to said determination that said activity level exceeds said activity threshold, wherein said presence state conesponds to a given user.
30. The system as recited in claim 29, wherein said instant messenger software module is further configured to: determine whether said activity level does not exceed said activity threshold subsequent to transitioning said presence state to said busy state; and transition said presence state of said instant messenger software module to an online state in response to determining that said level of computer system activity does not exceed said activity threshold.
31. The system as recited in claim 29, wherein said computer system activity comprises keyboard activity.
32. The system as recited in claim 29, wherein said computer system activity comprises mouse activity.
33. The system as recited in claim 29, wherein said computer system activity comprises one or more simultaneous mstant messenger sessions.
34. The system as recited in claim 29, wherein said computer system activity comprises processor utilization.
35. The system as recited in claim 34, wherein said processor utilization further comprises a foreground processor utilization conesponding to activity of foregroimd computer system processes and a backgi'ound processor utilization conesponding to activity of background computer system processes, and wherein said activity tirreshold further comprises a foreground process threshold conesponding to said foreground processor utilization.
36. The system as recited in claim 29, wherein said computer system activity is configurable by a user from a plurality of types of computer system activity.
37. The system as recited in claim 29, wherein said activity threshold is configurable by a user.
38. The system as recited in claim 29, wherein said activity tirreshold further comprises a threshold time, and wherein detennniing whether said level of computer system activity exceeds an activity threshold further comprises determining whether the duration of said level of computer system activity exceeds said threshold time.
39. The system as recited in claim 38, wherein said tirreshold time is configurable by a user.
40. The system as recited in claim 29, wherem said instant messenger software module is ftirther configured to: store schedule infomiation conesponding to a given user, wherein said schedule infomiation is indicative of an activity status of said given user at a given time; query said schedule infonnation; and if a cun'ent presence state of said instant messenger software module does not conespond to said activity status indicated by said schedule information, assign a different presence state that conesponds to said activity status in response to said querying, wherein said cunent presence state and said different presence state each conespond to said given user.
41. The system as recited in claim 29, wherein said instant messenger software module is further configured to: receive an instant messaging operation directed to a given user, wherein said given user is not offline; determine said presence state of said mstant messenger software module m response to receivmg said instant messagmg operation, and selectively process said mstant messagmg opeiation dependent upon said piesence state m response to said determining
42. The system as recited m claun 29, wherem said mstant messenger software module is furthei coiifiguied to stoie an mstant messagmg operation associated with a given piesence state of said mstant messenger software module, wherem said given piesence state conesponds to a given usei, detect a transition to said given presence state subsequent to said stormg, and perfonn said mstant messagmg operation m response to said detectmg
PCT/US2004/031622 2003-09-25 2004-09-24 Method and system for busy presence state detection in an instant messaging system WO2005032045A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
EP04785117.5A EP1673899B1 (en) 2003-09-25 2004-09-24 Method and system for busy presence state detection in an instant messaging system

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/670,550 2003-09-25
US10/670,550 US8688786B2 (en) 2003-09-25 2003-09-25 Method and system for busy presence state detection in an instant messaging system

Publications (1)

Publication Number Publication Date
WO2005032045A1 true WO2005032045A1 (en) 2005-04-07

Family

ID=34393446

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2004/031622 WO2005032045A1 (en) 2003-09-25 2004-09-24 Method and system for busy presence state detection in an instant messaging system

Country Status (3)

Country Link
US (1) US8688786B2 (en)
EP (1) EP1673899B1 (en)
WO (1) WO2005032045A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102821060A (en) * 2012-07-24 2012-12-12 上海量明科技发展有限公司 Method, client and system for setting reward body in instant messaging

Families Citing this family (70)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7716289B2 (en) * 2002-10-17 2010-05-11 At&T Intellectual Property I, L.P. Transferring instant messaging (IM) messages
US20040078445A1 (en) * 2002-10-17 2004-04-22 Malik Dale W. Forwarding instant messaging (IM) messages
US8688786B2 (en) 2003-09-25 2014-04-01 Oracle America, Inc. Method and system for busy presence state detection in an instant messaging system
US7912903B2 (en) * 2003-09-25 2011-03-22 Oracle America, Inc. Method and system for processing instant messenger operations dependent upon presence state information in an instant messaging system
US7499974B2 (en) * 2003-09-30 2009-03-03 International Business Machines Corporation Instant message user management
US8180840B2 (en) * 2003-10-14 2012-05-15 At&T Intellectual Property I, L.P. Automatically replying to instant messaging (IM) messages
US7146385B1 (en) 2004-03-04 2006-12-05 Sun Microsystems, Inc. System and method for application-transparent synchronization with a persistent data store
US20050204004A1 (en) * 2004-03-11 2005-09-15 International Business Machines Corporation Method and apparatus for managing status in a messaging program
US20050227216A1 (en) * 2004-04-12 2005-10-13 Gupta Puneet K Method and system for providing access to electronic learning and social interaction within a single application
US20060031317A1 (en) * 2004-06-04 2006-02-09 Wanrong Lin System for synthesizing instant message and presence attributes from polled, queried and event information sources
US20060036712A1 (en) * 2004-07-28 2006-02-16 Morris Robert P System and method for providing and utilizing presence information
US7593984B2 (en) * 2004-07-30 2009-09-22 Swift Creek Systems, Llc System and method for harmonizing changes in user activities, device capabilities and presence information
US7500200B2 (en) * 2004-09-15 2009-03-03 International Business Machines Corporation System and method for instant messenger busy gauge
US7539732B2 (en) * 2004-09-15 2009-05-26 International Business Machines Corporation Client based instant messenger queue limit
US20070198725A1 (en) * 2004-10-06 2007-08-23 Morris Robert P System and method for utilizing contact information, presence information and device activity
US20070198696A1 (en) * 2004-10-06 2007-08-23 Morris Robert P System and method for utilizing contact information, presence information and device activity
US8176086B2 (en) * 2004-11-30 2012-05-08 Avaya Inc. Methods and apparatus for determining a presence of a user
US20060212757A1 (en) * 2005-03-15 2006-09-21 International Business Machines Corporation Method, system, and program product for managing computer-based interruptions
US20060242232A1 (en) * 2005-03-31 2006-10-26 International Business Machines Corporation Automatically limiting requests for additional chat sessions received by a particula user
US8036140B2 (en) 2005-04-22 2011-10-11 Microsoft Corporation Application programming interface for inviting participants in a serverless peer to peer network
US7571228B2 (en) * 2005-04-22 2009-08-04 Microsoft Corporation Contact management in a serverless peer-to-peer system
US20060248185A1 (en) * 2005-04-29 2006-11-02 Morris Robert P System and method for utilizing a presence service to advertise activity availability
US20060277262A1 (en) * 2005-06-06 2006-12-07 Boss Gregory J Session management enhancements for instant messaging applications
US7567553B2 (en) * 2005-06-10 2009-07-28 Swift Creek Systems, Llc Method, system, and data structure for providing a general request/response messaging protocol using a presence protocol
US20070005725A1 (en) * 2005-06-30 2007-01-04 Morris Robert P Method and apparatus for browsing network resources using an asynchronous communications protocol
US20070005763A1 (en) * 2005-07-01 2007-01-04 Cisco Technology, Inc. Method and system for using load information in an instant messaging system
US20070027915A1 (en) * 2005-07-29 2007-02-01 Morris Robert P Method and system for processing a workflow using a publish-subscribe protocol
US20070043646A1 (en) * 2005-08-22 2007-02-22 Morris Robert P Methods, systems, and computer program products for conducting a business transaction using a pub/sub protocol
US20070061405A1 (en) * 2005-09-15 2007-03-15 Keohane Susann M Automatically setting an avoidance threshold and adjusting a chat presence based on user avoidance of chat sessions
CN100390734C (en) * 2005-09-22 2008-05-28 华为技术有限公司 Method for processing device state relative news
US20070094304A1 (en) * 2005-09-30 2007-04-26 Horner Richard M Associating subscription information with media content
US7584258B2 (en) * 2005-12-05 2009-09-01 International Business Machines Corporation Method and system for managing instant messaging status
US20070150441A1 (en) * 2005-12-23 2007-06-28 Morris Robert P Methods, systems, and computer program products for associating policies with tuples using a pub/sub protocol
US7512880B2 (en) * 2005-12-23 2009-03-31 Swift Creek Systems, Llc Method and system for presenting published information in a browser
US7499942B2 (en) 2005-12-28 2009-03-03 Microsoft Corporation Modeling recurring events in a data store
US8005073B2 (en) * 2006-02-13 2011-08-23 Nokia Corporation Representing network availability status information in presence information
CN1808983A (en) * 2006-02-15 2006-07-26 阿里巴巴公司 Method and system of implementing instant communication
US8005912B2 (en) * 2006-02-17 2011-08-23 Cisco Technology, Inc. System and method for presence notification for video projection status
US20070208702A1 (en) * 2006-03-02 2007-09-06 Morris Robert P Method and system for delivering published information associated with a tuple using a pub/sub protocol
US20080005238A1 (en) * 2006-06-29 2008-01-03 Microsoft Corporation Roaming consistent user representation information across devices and applications
US20080005294A1 (en) * 2006-06-30 2008-01-03 Morris Robert P Method and system for exchanging messages using a presence service
US20080040431A1 (en) * 2006-07-25 2008-02-14 Bleeker Troy C Monitoring and responding to instant messaging user activity
US20080052389A1 (en) * 2006-08-24 2008-02-28 George David A Method and apparatus for inferring the busy state of an instant messaging user
US20080091782A1 (en) * 2006-10-13 2008-04-17 Gabriel Jakobson Method and system for delegating and managing tasks over instant messenger
US20080120337A1 (en) * 2006-11-21 2008-05-22 Fry Jared S Method And System For Performing Data Operations Using A Publish/Subscribe Service
US9330190B2 (en) 2006-12-11 2016-05-03 Swift Creek Systems, Llc Method and system for providing data handling information for use by a publish/subscribe client
US8880615B2 (en) * 2006-12-15 2014-11-04 International Business Machines Corporation Managing a workflow using an instant messaging system to gather task status information
US20080183816A1 (en) * 2007-01-31 2008-07-31 Morris Robert P Method and system for associating a tag with a status value of a principal associated with a presence client
US20090037588A1 (en) * 2007-07-31 2009-02-05 Morris Robert P Method And System For Providing Status Information Of At Least Two Related Principals
US20090043856A1 (en) * 2007-08-09 2009-02-12 At&T Knowledge Ventures, Lp Instant Messenger with Visible Attributes on the Presence Line
US9697501B2 (en) * 2007-09-25 2017-07-04 Microsoft Technology Licensing, Llc Interruptibility management via scheduling application
US20090094368A1 (en) * 2007-10-08 2009-04-09 Steven Francis Best Instant messaging general queue depth management
US8495660B1 (en) * 2008-03-28 2013-07-23 Symantec Corporation Methods and systems for handling instant messages and notifications based on the state of a computing device
US8745133B2 (en) * 2008-03-28 2014-06-03 Yahoo! Inc. System and method for optimizing the storage of data
US20090307374A1 (en) * 2008-06-05 2009-12-10 Morris Robert P Method And System For Providing A Subscription To A Tuple Based On A Schema Associated With The Tuple
US20100088140A1 (en) * 2008-10-06 2010-04-08 Lahav Gil Automated systems and methods for time management
US9588803B2 (en) * 2009-05-11 2017-03-07 Microsoft Technology Licensing, Llc Executing native-code applications in a browser
US9148301B2 (en) * 2009-10-23 2015-09-29 Novell, Inc. Dynamic status reporting
US20110117886A1 (en) 2009-11-18 2011-05-19 International Business Machines Corporation Method and system for controlling delivery of notifications in real-time communications based on communication channel state
US9229773B1 (en) * 2010-06-30 2016-01-05 Crimson Corporation Determining when to perform a maintenance operation on a computing device based on status of a currently running process or application on the computing device
JP5472155B2 (en) * 2011-02-25 2014-04-16 ブラザー工業株式会社 COMMUNICATION DEVICE, COMMUNICATION METHOD, AND COMMUNICATION PROGRAM
US9411970B2 (en) * 2011-08-19 2016-08-09 Microsoft Technology Licensing, Llc Sealing secret data with a policy that includes a sensor-based constraint
US8825778B2 (en) 2012-01-18 2014-09-02 International Business Machines Corporation Selective display of past instant messages
JP5915406B2 (en) * 2012-06-22 2016-05-11 富士通株式会社 Control method of portable terminal device, control program, and portable terminal device
US9270630B1 (en) 2013-01-23 2016-02-23 Google Inc. Integrating communication modes in persistent conversations
US9338403B2 (en) 2013-01-23 2016-05-10 Google Inc. Persistent conversations
US9253223B1 (en) 2013-01-23 2016-02-02 Google Inc. Live interaction in persistent conversations
WO2014178822A1 (en) * 2013-04-29 2014-11-06 Nokia Corporation White space database discovery
US10205690B1 (en) 2014-09-24 2019-02-12 Google Llc Automatic real-time indication of user non-chat activity during a chat session
CN113472633B (en) * 2021-06-29 2022-10-14 平安普惠企业管理有限公司 Method, device and equipment for automatically feeding back working state of user and storage medium

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001045368A2 (en) * 1999-12-14 2001-06-21 Nortel Networks Limited Aggregates in a presence management system
WO2001069387A2 (en) * 2000-03-16 2001-09-20 Microsoft Corporation Notification platform architecture
WO2003032613A1 (en) * 2001-10-10 2003-04-17 Hotsip Ab A method and a system for providing a user with a presence service

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4591840A (en) 1983-11-04 1986-05-27 International Business Machines Corp. Calendar event description abbreviation
JP2967961B2 (en) 1991-12-16 1999-10-25 インターナショナル・ビジネス・マシーンズ・コーポレイション How to show monthly calendar display
US6212548B1 (en) * 1998-07-30 2001-04-03 At & T Corp System and method for multiple asynchronous text chat conversations
US6301609B1 (en) * 1999-07-07 2001-10-09 Lucent Technologies Inc. Assignable associate priorities for user-definable instant messaging buddy groups
US6622160B1 (en) * 1999-07-30 2003-09-16 Microsoft Corporation Methods for routing items for communications based on a measure of criticality
US20020065894A1 (en) 1999-12-03 2002-05-30 Dalal Siddhartha R. Local presence state and user-controlled presence and message forwarding in unified instant messaging
US6728530B1 (en) 1999-12-28 2004-04-27 Nokia Corporation Calendar-display apparatus, and associated method, for a mobile terminal
US7337210B2 (en) * 2000-01-13 2008-02-26 International Business Machines Corporation Method and apparatus for determining availability of a user of an instant messaging application
US20020035605A1 (en) * 2000-01-26 2002-03-21 Mcdowell Mark Use of presence and location information concerning wireless subscribers for instant messaging and mobile commerce
US20020152305A1 (en) * 2000-03-03 2002-10-17 Jackson Gregory J. Systems and methods for resource utilization analysis in information management environments
US7444383B2 (en) * 2000-06-17 2008-10-28 Microsoft Corporation Bounded-deferral policies for guiding the timing of alerting, interaction and communications using local sensory information
US8024415B2 (en) 2001-03-16 2011-09-20 Microsoft Corporation Priorities generation and management
JP3895092B2 (en) * 2000-03-24 2007-03-22 富士通株式会社 Communications system
US20020120697A1 (en) 2000-08-14 2002-08-29 Curtis Generous Multi-channel messaging system and method
US7272662B2 (en) 2000-11-30 2007-09-18 Nms Communications Corporation Systems and methods for routing messages to communications devices over a communications network
US6868544B2 (en) 2000-12-08 2005-03-15 Telcordia Technologies, Inc. Method and system for general-purpose interactive notifications
US7120424B1 (en) 2001-03-12 2006-10-10 Cingular Wireless Ii, Llc Method and apparatus for providing enhanced services at a mobile communication device
US7330895B1 (en) * 2001-03-15 2008-02-12 Microsoft Corporation Representation, decision models, and user interface for encoding managing preferences, and performing automated decision making about the timing and modalities of interpersonal communications
US6988132B2 (en) 2001-03-15 2006-01-17 Microsoft Corporation System and method for identifying and establishing preferred modalities or channels for communications based on participants' preferences and contexts
US20020152117A1 (en) 2001-04-12 2002-10-17 Mike Cristofalo System and method for targeting object oriented audio and video content to users
US6782350B1 (en) * 2001-04-27 2004-08-24 Blazent, Inc. Method and apparatus for managing resources
US7370085B2 (en) 2001-05-03 2008-05-06 International Business Machines Corporation Method, system, and program for providing user location information with a personal information management program
US7035865B2 (en) 2001-08-28 2006-04-25 International Business Machines Corporation Calendar-enhanced awareness for instant messaging systems and electronic status boards
US6993327B2 (en) 2001-10-29 2006-01-31 Motorola, Inc. Multicast distribution of presence information for an instant messaging system
WO2003041429A1 (en) 2001-11-07 2003-05-15 Teltier Technologies, Inc. Method and system for supporting differentiated network service for mobile customers and applications
US7092952B1 (en) 2001-11-20 2006-08-15 Peter Wilens Method for grouping computer subscribers by common preferences to establish non-intimate relationships
US7310532B2 (en) 2001-12-05 2007-12-18 Intel Corporation Method of automatically updating presence information
US7281215B1 (en) * 2002-04-30 2007-10-09 Aol Llc IM conversation counter and indicator
US7461378B2 (en) 2002-06-11 2008-12-02 Siemens Communications, Inc. Methods and apparatus for processing an instant message
US8452631B2 (en) 2002-09-17 2013-05-28 International Business Machines Corporation Keeping working hours and calendar entries up-to date
US7317716B1 (en) * 2003-07-25 2008-01-08 Verizon Laboratories Inc. Methods and systems for presence-based telephony communications
US8688786B2 (en) 2003-09-25 2014-04-01 Oracle America, Inc. Method and system for busy presence state detection in an instant messaging system
US7752268B2 (en) 2003-09-25 2010-07-06 Oracle America, Inc. Method and system for presence state assignment based on schedule information in an instant messaging system
US7383291B2 (en) 2004-05-24 2008-06-03 Apple Inc. Method for sharing groups of objects

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001045368A2 (en) * 1999-12-14 2001-06-21 Nortel Networks Limited Aggregates in a presence management system
WO2001069387A2 (en) * 2000-03-16 2001-09-20 Microsoft Corporation Notification platform architecture
WO2003032613A1 (en) * 2001-10-10 2003-04-17 Hotsip Ab A method and a system for providing a user with a presence service

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102821060A (en) * 2012-07-24 2012-12-12 上海量明科技发展有限公司 Method, client and system for setting reward body in instant messaging

Also Published As

Publication number Publication date
US20050080848A1 (en) 2005-04-14
EP1673899A1 (en) 2006-06-28
US8688786B2 (en) 2014-04-01
EP1673899B1 (en) 2019-03-06

Similar Documents

Publication Publication Date Title
US7912903B2 (en) Method and system for processing instant messenger operations dependent upon presence state information in an instant messaging system
US8688786B2 (en) Method and system for busy presence state detection in an instant messaging system
US7752268B2 (en) Method and system for presence state assignment based on schedule information in an instant messaging system
US9621502B2 (en) Enhanced buddy list interface
EP2891297B1 (en) Shared resource and session model using presence data
EP2025099B1 (en) User presence aggregation at a server
EP1596546B1 (en) Method and device for sharing data within an instant mesaging session
US8639755B2 (en) System and method of managing real-time communications using context-based awareness states
US8650255B2 (en) System and method for joining a conversation
KR101077739B1 (en) User initiated invite for automatic conference participation by invitee
US7062533B2 (en) Specifying monitored user participation in messaging sessions
US20100022225A1 (en) Methods and systems for setting, scheduling, optimizing, and initiating personal communication and prioritizing communication channels and devices
US20070143417A1 (en) Instant messaging confirmation and receipt
US20060210034A1 (en) Enabling a user to store a messaging session entry for delivery when an intended recipient is next available
WO2006060744A2 (en) System and method of initiating an on-line meeting or teleconference via a web page link or a third party application
JP2009043201A (en) Instant messaging system, method and program
US9224134B2 (en) Arranging a conversation among a plurality of participants
WO2008046825A1 (en) A method for reducing time lost in initial stages of a web conference due to participants not being in-place on-time
WO2022150094A1 (en) Queue management for visual interruption symbols in a virtual meeting
CN112346806A (en) Method, device, terminal and storage medium for displaying information
US10218664B1 (en) Recurrent invitation loop
EP2096588A1 (en) Designation of delegate for modifying an electronic meeting definition defined using electronic calendaring software
US9055420B2 (en) Mediation and presentation of communications
WO2023278887A2 (en) Selective engagement of users and user content for a social messaging platform
US20090024708A1 (en) Instant messaging in a data processing system

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NA NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GM KE LS MW MZ NA SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LU MC NL PL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 2004785117

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 2004785117

Country of ref document: EP