The IM server computer 104 in this embodiment similarly includes a central processing unit 130 connected to a main memory 132, a mass storage interface 134, a network interface 136, and an I/O interface 138 by a system bus 142. The memory 132 in the server computer 103 contains an operating system 144, an instant messaging backend program 148, a database program 150, and a message queuing manager 152. As best shown in
In operation, the IM system 100 assigns a default priority level to each other user of the IM system 100, then dynamically adjusts that priority level accordance with the users' (i.e., both the user of the primary client device 102 and the other client devices 102 in the system) activities. Using this information, the IM system 100 can determine an “on-line presence level” that affects the ability of other messaging users to see whether the primary user is on-line. That is, the on-line presence level in this embodiment is a score that dynamically limits the visibility of the primary user of a device 102 to specific other users. Thus, for example, if the chat client user (called client A) has configured priorities for users listed in their chat client and the presence level threshold is “priority 3,” users of other chat clients 102 will only be notified that Client A is on-line if their associated priority is “3” or higher. Similarly, the IM system 100 uses these priority levels to determine whether or not to display immediately messages between pairs of users. That is, messages from high priority users are immediately displayed visible panes 304a-304c, whereas messages from low priority users are assigned to minimized panes 304d-304g.
In this embodiment, the priority score comprises a base score plus a dynamic modifier. The base levels can be set when the primary user adds a person to their “buddy” list and can be modified freely thereafter. Base priority scores also can be associated with groups. In these embodiments, each member of the group will automatically gain the group's base priority score if the base priority of the group is higher than the user's own base priority score.
The IM system 100 generates the dynamic component by analyzing the activities of its primary user, the interactive patterns of the primary user, and the activities of other participants in the chat sessions to determine priority levels associated with each conversation. That is, each chat session has a priority score that is increased or decreased according to one or more of the following criteria: (i) with respect to a particular chat partner, the overall importance assigned to their chat partner, a frequency of general interaction with that chat partner, a average response time for the user to respond to messages from that chat partner, and a length of time it takes that chat partner to respond to the user's messages, and whether the user is actually waiting for a response as opposed to working on something else; (ii) with respect to all users of the messaging system 100, a length of time a particular user has been waiting for response, an amount of text received without a response, a text entry pane containing text not-yet-sent, and whether or not one of the participants in a chat will be leaving shortly; and (iii) with respect to the overall environment, an online status indicator of the chat partners (e.g., priority decreases when the partner goes off-line, to do-not-disturb, etc.) The system 100 will then dynamically adjust who can see the primary user online and dynamically rearranges the chat icons 310 as their priority level within the queue changes. In this way, the highest priority session is displayed in the largest chat window 304A, the next highest priority session in window 304B, etc. until a user selectable number of displayable conversation has been filled. In some embodiments, the IM client 170 may automatically respond to low priority conversations to inform the user/sender that the primary user is busy and that it may be some time before they receive a reply.
In some embodiments, primary IM user may “lock” the highest priority pane 310A until that user chooses another session to replace the conversation in that pane (e.g., by selecting “B” icon 310b or closing pane 310a); and the priority and ordering of conversations B-G is dynamic. In other embodiments, all of the panes 310 may be dynamically selected. Regardless, all chat sessions in these embodiments share a single window 302 and a single text entry pane, with the text being sent to the currently selected icon.
Some IM system 100 embodiments may further weight the priority assigned to particular users using social networking techniques. Still other embodiments may use directory information, such as title, management status, and department organization, to provide starting values and/or to weight that user's priority score. Thus, in one embodiment, the system 100 assigns a medium priority to people within a user's own department, a high priority to the user's first and second line managers or team leads, and low priority to all other users.
Some embodiments may further consider the user's interaction with the operating system, IM application, word processor application, or other desktop resources to compute the dynamic component. For example, if a sender sends a message containing “thanks” and then closes their IM session, the recipient's IM session could display the “thanks” and fade away/close unless the window/icon is touched. Similarly, the one user is typing text in their text input area 308, the excess noise filter will suppress all text until the thought completes. This could range from monitoring the typing (if X seconds pass, display the message), to analyzing the content and if it is personal or non-work related, then it can be very low priority or not displayed at all.
Still other embodiments may use textual analysis to allow for additional intelligence in determining the relative importance of a message. In these embodiments, a message like “see ya later” would not significantly bump up the score of a conversation; whereas a reference related to an open application, or its content, within the client device 102 would bump the conversation significantly. Thus, for example, when a programmer/user is developing an application in an IDE for a particular project, other messages about that particular IDE or that particular project would have high priority. Those skilled in the art will appreciate that these same techniques can be used to analyze the sender's system to determine whether or not the sender is asking an important question.
At block 508, the sender/user composes a message to be sent to the recipient/user. At block 510, the server computer 104 analyzes the text of the sent message, the sender's activity, and the recipient's activity to determine a priority adjustment score for the message. At block 510, the server computer 104 sends the message to the recipient's IM client device 102 along with the priority adjustment score. At block 512, the recipient's client device 102 assigns the message to the appropriate conversation 304 or 310 and then uses the priority adjustment to place the conversation in the ranked priority queue. At block 514, a callback mechanism allows the queue manager 152 to determine which conversations have the highest priority and, based on each user's profile, whether the conversation should be presented the user/recipient. This callback mechanism will constantly reevaluate the user/recipient's activity to determine whether the user/recipient's activity has dropped sufficiently to warrant presentation of lower priority conversations.
At block 814, for each conversation, the IM client 102 determines if its priority score is above a threshold level. If no suitably high priority conversations exist, the IM client 170 waits at block 816 for a change in the priority queue or a change in the threshold. At block 818, the IM client 170 begins displaying the conversations to the primary user, in order of the conversation's priority score, until a user-selected maximum number of simultaneous conversations have been met. At block 820, the IM client 170 assigns the conversations that do not meet the display threshold or that are below higher ranked conversations to un-displayed conversation icons 310. In some embodiments, the sender is also notified that the message has been received and is in a queued state.
One suitable way to generate keyword metadata 206 is to use the display contents represented within a program using accessibility APIs, similar to those utilized by screen readers, to intercept what words are being shown for any application active on the IM client 102. Once this display content is known, some embodiments use UIMA (Unstructured Information Management Architecture) to interpret the full meaning of sentences. This technology uses annotators in a pipeline framework to understand data with a high degree of confidence. The top stages are name disambiguators and domain specific context mappings. The IM client 102 can make these understandings with a degree of confidence (do we know what it says) and certainty (does the text of the document leave ambiguity in the language). Thus, for example, the IM client 170 can analyze a document and determine that it has a DIAGNOSIS of Leukemia for patient JOHN DOE, because the person had NOT headaches AND poor muscle tone. In the case where applications are written to aid in the implementation of our invention (or plug-ins for current applications are created), then callback methods could be provided to allow the IM client to probe application content. More information about UIMA techniques can be found in:
This computing system 1000 embodiment comprises a plurality of central processing units 1010a-1010d (herein generically referred to as a processor 1010 or a CPU 1010) connected to a main memory unit 1012, a mass storage interface 1014, a terminal/display interface 1016, a network interface 1018, and an input/output (“I/O”) interface 1020 by a system bus 1022. The mass storage interfaces 1014, in turn, connect the system bus 1022 to one or more mass storage devices, such as a direct access storage device 1040 or a readable/writable optical disk drive 1042. The network interfaces 1018 allow the computer system 1000 to communicate with other computing systems 1000 over the communications medium 1006. The main memory unit 1012 in this embodiment also comprises an operating system 1024, a plurality of application programs 1026 and some program data 1028.
The computing system 1000 in this embodiment is a general-purpose computing device. Accordingly, the CPU's 1010 may be any device capable of executing program instructions stored in the main memory 1012 and may themselves be constructed from one or more microprocessors and/or integrated circuits. In this embodiment, the computing system 1000 contains multiple processors and/or processing cores, as is typical of larger, more capable computer systems; however, in other embodiments, the computing systems 1000 may comprise a single processor system and/or a single processor designed to emulate a multiprocessor system.
When the computing system 1000 starts up, the associated processor(s) 1010 initially execute the program instructions that make up the operating system 1024, which manages the physical and logical resources of the computer system 1000. These resources include the main memory 1012, the mass storage interface 1014, the terminal/display interface 1016, the network interface 1018, and the system bus 1022. As with the processor(s) 1010, some computer system 1000 embodiments may utilize multiple system interfaces 1014, 1016, 1018, 1020, and busses 1022, which in turn, may each include their own separate, fully programmed microprocessors.
The system bus 1022 may be any device that facilitates communication between and among the processors 1010; the main memory 1012; and the interfaces 1014, 1016, 1018, 1020. Those skilled in the art will appreciate that the system bus 1022 may be a relatively simple, single bus structure that provides a direct communication path among the system bus 1022 (as depicted in
The main memory 1012 and the mass storage devices 1040 work cooperatively in this to store the operating system 1024, the application programs 1026, and the program data 1028. In this embodiment, the main memory 1012 is a random-access semiconductor device capable of storing data and programs. Although
Although the operating system 1024, the application programs 1026, and the program data 1028 are illustrated as being contained within the main memory 1012, some or all of them may be physically located on different computer systems and may be accessed remotely, e.g., via the communications medium 106, in some embodiments. Thus, while the operating system 1024, the application programs 1026, and the program data 1028 are illustrated as being contained within the main memory 1012, these elements are not necessarily all completely contained in the same physical device at the same time, and may even reside in the virtual memory of other computer systems 1000.
The system interface units 1014, 1016, 1018, 1020 support communication with a variety of storage and I/O devices. The mass storage interface unit 1014 supports the attachment of one or more mass storage devices 1040, which are typically rotating magnetic disk drive storage devices, although they could alternatively be other devices, including arrays of disk drives configured to appear as a single large storage device to a host and/or archival storage media, such as hard disk drives, tape (e.g., mini-DV), writeable compact disks (e.g., CD-R and CD-RW), digital versatile disks (e.g., DVD, DVD-R, DVD+R, DVD+RW, DVD-RAM), holography storage systems, blue laser disks, IBM Millipede devices and the like.
The terminal/display interface 1016 directly connects one or more display units 1080 to the computer system 1000. These display units 1080 may be non-intelligent (i.e., dumb) terminals, such as a cathode ray tube, or may themselves be fully programmable workstations used to allow IT administrators and users to communicate with the computing system 1000. Note, however, that while the interface 1016 is provided to support communication with one or more displays 1080, the computer systems 1000 does not necessarily require a display 1080 because all needed interaction with users and other processes may occur via network interface 1018.
The computing system 1000 in
The communications medium 106 may be any suitable network or combination of networks and may support any appropriate protocol suitable for communication of data and/or code to/from multiple computing systems 1000. Accordingly, the network interfaces 1018 can be any device that facilitates such communication, regardless of whether the network connection is made using present day analog and/or digital techniques or via some networking mechanism of the future. Those skilled in the art will appreciate that many different network and transport protocols can be used to implement the network. The Transmission Control Protocol/Internet Protocol (“TCP/IP”) suite contains suitable network and transport protocols.
One exemplary computing system 1000, particularly suitable for use as a client device 102 and/or a server computer 104 is the System i platform running the i5/OS multitasking operating system, both of which are available from International Business Machines Corporation of Armonk, N.Y. However, those skilled in the art will appreciate that the methods, systems, and apparatuses of the present invention apply equally to any computing system 1000 and operating system combination, regardless of whether one or both of the computer systems 1000 are complicated multi user computing apparatuses, a single workstations, lap-top computers, mobile telephones, personal digital assistants (“PDAs”), video game systems, or the like.
Although the present invention has been described in detail with reference to certain examples thereof, it may be also embodied in other specific forms without departing from the essential spirit or attributes thereof. For example, those skilled in the art will appreciate that the present invention is capable of being distributed as a program product in a variety of forms, and applies equally regardless of the particular type of tangible, computer-readable signal bearing medium used to actually carry out the distribution. Examples of suitable tangible, computer-readable signal bearing media include, but are not limited to: (i) non-writable storage media (e.g., read only memory devices (“ROM”), CD-ROM disks readable by a CD drive, and Digital Versatile Disks (“DVDs”) readable by a DVD drive); (ii) writable storage media (e.g., floppy disks readable by a diskette drive, CD-R and CD-RW disks readable by a CD drive, random access memory (“RAM”), and hard disk drives); and (iii) communications media (e.g., computer networks, such as those implemented using “Infiniband” or IEEE 802.3× “Ethernet” specifications; telephone networks, including cellular transmission networks; and wireless networks, such as those implemented using the IEEE 802.11×, IEEE 802.16, General Packet Radio Service (“GPRS”), Family Radio Service (“FRS”), and Bluetooth specifications). Those skilled in the art will appreciate that these embodiments specifically include computer software downloaded over the Internet.
The present invention may also be embodied part of a service engagement with a client corporation, nonprofit organization, government entity, internal organizational structure, or the like. Aspects of these embodiments may include configuring a computer system to perform, and deploying software, hardware, and web services that implement, some or all of the methods described herein. Aspects of these embodiments may also include analyzing the client's operations, creating recommendations responsive to the analysis, building systems that implement portions of the recommendations, integrating the systems into existing processes and infrastructure, metering use of the systems, allocating expenses to users of the systems, and billing for use of the systems. These service engagement embodiments may be directed at providing both end-to-end IM services, to providing only the back-end IM services, or some combination thereof. Accordingly, these embodiments may further comprise receiving charges from other entities and associating that charge with users of the IM system 100.
In addition, although the embodiments described with reference to
The accompanying figures and this description depicted and described embodiments of the present invention, and features and components thereof. Those skilled in the art will appreciate that any particular program nomenclature used in this description was merely for convenience, and thus the invention should not be limited to use solely in any specific application identified and/or implied by such nomenclature. Thus, for example, the routines executed to implement the embodiments of the invention, whether implemented as part of an operating system or a specific application, component, program, module, object, or sequence of instructions could have been referred to as a “program”, “application”, “server”, or other meaningful nomenclature. Indeed, other alternative hardware and/or software environments may be used without departing from the scope of the invention. Therefore, it is desired that the embodiments described herein be considered in all respects as illustrative, not restrictive, and that reference be made to the appended claims for determining the scope of the invention.
This application is related to the following commonly owned application: U.S. patent application Ser. No. ______, filed on ______, 2006, entitled “MONITORING AND RESPONDING TO INSTANT MESSAGING USER ACTIVITY”, Attorney Docket No. ROC920060009US1.