A more complete understanding of the present invention may be obtained by reference to the following detailed description when taken in conjunction with the accompanying drawings wherein:
In general, the instant message device 10 includes a processor 20, memory 30, user interface 40, display 50, input device 60 and external interface 70. The processor 20 includes one or more processors that execute instructions (e.g., applications) and the memory 30 includes one or more memories that store instructions (e.g., applications) and data used by the processor 20. As used herein, the term “processor” is generally understood to be a device that drives a general-purpose computer. It is noted, however, that other processing devices, such as microcontrollers, Field Programmable Gate Arrays (FPGAs), Application Specific Integrated Circuits (ASICs), or a combination thereof, can be used as well to achieve the benefits and advantages described herein.
For example, within the memory 30 is shown an operating system 32, an instant message client 35 (e.g., an instant message application or software program) and other applications 38 that include instructions executable by the processor 20. To transmit and/or receive instant messages, the processor 20 accesses and runs the instant message client 35 within the memory 30. During execution of the instant message client 35, the instant message client 35 is operable to generate and transmit a text-based instant message via the processor 20. For example, the instant message client 35 can communicate with the input device 60 via the processor 20 and user interface 40 to generate an outgoing instant message and communicate with the external interface 70 via the processor 20 to transmit the outgoing instant message over a communications network. In addition, the instant message client 35 is operable to receive and display incoming instant messages via the processor 20. For example, the instant message client 35 can communicate with the external interface 70 via the processor 20 to receive an incoming instant message and communicate with the display 50 via the processor 20 and user interface 40 to display the received instant message.
In accordance with embodiments of the present invention, the instant message client 35 is further capable of managing multiple instant message threads, in which each of the instant message threads identifies at least one instant message in a stream of instant messages transmitted during an instant message communication session between a user operating the instant message device 10 and at least one additional user. Once the processor 20 executes the instant message client 35 to initiate the instant message communication session, each new incoming instant message is processed by the processor 20 to associate that new incoming instant message with one of the instant message threads.
For example, in one embodiment, the new incoming instant message includes a thread indicator identifying one of the instant message threads as the associated instant message thread. The processor 20 extracts the thread indicator from the new incoming instant message, and communicates with the instant message client 35 to identify the associated instant message thread and display the new incoming instant message on the display 50 such that the new incoming instant message is visually associated with the identified instant message thread. For example, the new incoming instant message may be displayed directly underneath the last instant message in the associated instant message thread regardless of the number of instant messages received in between. As another example, the new incoming instant message may be displayed in a separate window associated with that instant message thread. As a further example, the new incoming instant message, along with other instant messages associated with the same instant message thread may be displayed as bold-face, italicized or other type-face to indicate their association. As still a further example, the new incoming instant message may be displayed with reference to a particular previous instant message in the instant message thread (e.g., “In response to the message beginning with . . . .”).
In addition, the processor 20 processes each new outgoing instant message generated by the user to associate the new outgoing instant message with one of the instant message threads. For example, in one embodiment, the instant message client 35 enables the user to generate a response instant message in response to one of the previous instant messages in the instant message stream (e.g., either a previous outgoing instant message previously generated by the user or one of the incoming instant messages generated by another user involved in the instant message communication session). The instant message client 35 determines which previous instant message that the user is responding to based on input from the user via the input device 60 and user interface 40. For example, the user can either click on the previous instant message on the display 50 to which the user is responding or immediately begin typing a response to the last received instant message before any other instant messages are received.
Based on the user-input, the processor 20 identifies the instant message thread associated with the responded-to instant message, and includes a thread indicator identifying the associated instant message thread within the outgoing instant message. In one embodiment, the thread indicator can identify a specific instant message in the stream of instant messages (e.g., a message number). In this embodiment, the instant message thread includes the instant message identified by the message number (identified previous instant message), and the outgoing instant message can be displayed on the receiving instant message display device so as to visually associate the outgoing instant message with the identified previous instant message. In another embodiment, the thread indicator can include a timestamp that is used by the recipient instant message device 10 to determine the instant message displayed on the display 50 of the recipient instant message device 10 immediately prior to the timestamp. In this embodiment, the instant message thread includes the instant message displayed immediately prior to the timestamp (identified previous instant message), and the outgoing instant message can be displayed on the receiving instant message display device so as to visually associate the outgoing instant message with the identified previous instant message. Additional details of the multi-threaded capability of the instant message client 35 will be discussed below in connection with
In an exemplary embodiment, the user interface 40 is a graphical user interface (GUI) that displays tools in the form of icons and/or text to a user of the instant message device 10 on the display 50 to enable the user to generate (compose) a text-based instant message to a message recipient and transmit that instant message to the message recipient. For example, the GUI 40 may provide a “Buddy List” to the user that indicates whether a particular message recipient is on-line and available to receive instant messages, a “Send Instant Message” or other similar button that the user can click on to initiate an instant message to an identified message recipient, a textual pop-up window within which the user can type the instant message and a transmission button (e.g., “Send”, “Enter” or other button) that instructs the instant message client 35 to send the typed instant message to the identified message recipient.
The GUI 40 interfaces with the input device 60 to receive instructions regarding message generation and transmission from the user and to provide such instructions to the instant message client 35. For example, the input device 60 may include one or more of a keyboard, mouse, stylus, touch screen, voice recognition application or other similar device.
As described above, each instant message device 10 is a user-operated physical communications device capable of sending and/or receiving electronic text-based instant messages 130 over the communications network 120. Thus, each instant message device 10 includes an instant message client 35 for generating, transmitting and receiving instant messages and a GUI 40 for displaying the sent and received instant messages on a display 50 of the instant message device 10.
The message server 150 is coupled to receive instant messages 130 generated by the instant message devices 10 via the communications network 120. In addition, the message server 150 is coupled to provide the instant messages 130 to the correct instant message devices 10 (i.e., instant message recipients) via the communications network 120. For example, in exemplary embodiments, the message server 150 is a computer network server, a telephony server (e.g., a circuit switch or end office, IP router, gateway, etc.), an e-mail server, a web server or any other networked device capable of sending and/or receiving electronic text-based instant message communications over communications network 120.
In
In an exemplary operation, an originating user accesses one of the instant message devices 10 and initiates the instant message client 35 on his/her instant message device 10 to generate an instant message 130 to a recipient user. The originating user enters the recipient address (e.g., e-mail address of the recipient) and a textual message stream into the instant message 130, and the instant message client 35 transmits the instant message 130 over the communications network 120. The recipient address is used by the communications network 120 to identify and locate the instant message server 150 associated with the recipient, and to route the instant message 130 to that instant message server 150.
Upon receiving the instant message 130, the instant message server 150 may perform additional processing on the instant message 130 (e.g., filtering, automatically forwarding the instant message 130 to another instant message subscriber or another instant message device associated with the recipient and/or converting the instant message into a format desired by the recipient) before providing the instant message 130 to the appropriate receiving instant message device 10 (e.g., downloading the instant message 130 via communications network 120 substantially instantly to the instant message client 35 running on the receiving instant message device 10). The instant message client 35 on the receiving instant message device 10 displays the instant message to the recipient user on the display 50 of the receiving instant message device 10 via the GUI 40.
In addition, the instant message server 150, in combination with the instant message client 35, may provide various instant messaging options to the recipient user for responding to the received instant message 130. For example, the instant message server 150 in conjunction with the instant message client 35 may enable the recipient user to generate and transmit a response to the received instant message 130, forward the instant message 130 to another subscriber or another instant message device 10 associated with the recipient or save the instant message 130 in a folder on the instant message server 150 or a local folder on the instant message device 10 associated with the recipient user.
For example, in accordance with embodiments of the present invention, the instant message client 35 can enable the recipient user to generate a response to the received instant message 130 by either clicking on the received instant message 130 on the display 50 or immediately beginning to type a response to the received instant message 130 before any other instant messages are received. Thus, the user specifically identifies to the instant message client 35 the received instant message 130 to which the response instant message is directed, and from the identified received instant message 130, the instant message client 35 determines a thread indicator identifying the instant message thread associated with the identified received instant message and includes that thread indicator in the response instant message.
Thereafter, at 330, User A composes a second instant message (IM2) to User B on IM Device A 10a. Around the same time, at 335, User B composes a third instant message (IM3) to User A on IM Device B 10b. User A's instant message (IM2) is transmitted to the IM server 150 before User B's instant message (IM3), as can be seen at 340 and 345. Therefore, at 350, the IM server 150 transmits IM2 to both IM Device B 10b and IM Device A 10a, where IM2 is displayed at 355 and 360, and then at 370, the IM server 150 transmits IM3 to both IM Device B 10b and IM Device A 10a, where IM3 is displayed at 375 and 380.
Turning now to
As can be seen in
However, looking at the instant message exchange displayed in
Thereafter, at 535, User B composes a second instant message (IM2) to User A and User C on IM Device B 10b. Around the same time, at 540, User C composes a third instant message (IM3) to User A and User B on IM Device C 10c. User B's instant message (IM2) is transmitted to the IM server 150 before User C's instant message (IM3), as can be seen at 545. Therefore, at 550, the IM server 150 transmits IM2 to IM Device C 10c, IM Device B 10b and IM Device A 10a, where IM2 is displayed at 555, 560 and 565. Then, at 570, User C's instant message (IM3) is transmitted to the IM server 150, and at 575, the IM server 150 transmits IM3 to IM Device C 10c, IM Device B 10b and IM Device A 10a, where IM3 is displayed at 580, 585 and 590.
Turning now to
By contrast, the instant message exchange is displayed in
The thread indicator field 730 includes a thread indicator identifying a particular instant message thread associated with the instant message 130. For example, in one embodiment, the thread indicator can include a message number that identifies a specific previous instant message in a stream of instant messages, and this message number can be used to determine the instant message thread associated with the instant message 130. For example, the instant message thread may be identified as including the previous instant message identified by the message number. In another embodiment, the thread indicator can include a timestamp that identifies the specific time that composure of the instant message 130 began, and this timestamp can be used to determine the instant message thread associated with the instant message. For example, the instant message thread may be identified as including the instant message immediately prior to the timestamp.
At block 950, the current instant message with the timestamp is received during the instant message communication session by one of the users. The timestamp is extracted from the current instant message at block 960, and at block 970, the timestamp is used to determine the last displayed message prior to the timestamp. For example, in one embodiment, the timestamp (start composure time) is compared with the display times (or receive times) of displayed instant messages to identify the displayed instant message with the display time (or receive time) immediately prior to the value of the timestamp. From the identified last displayed message, at block 980, an instant message thread associated with the current instant message is identified (e.g., the instant message thread including the identified last displayed message). Finally, at block 990, the current instant message is displayed such that the current instant message is visually associated with the identified instant message thread.
Thereafter, at block 1020, one of the users identifies an instant message by message number to which that user would like to generate a response. Upon composing the response instant message, at block 1030, the response instant message is transmitted with the message number of the message to which the response instant message is directed. At block 1040, the response instant message with the message number is received during the instant message communication session by one of the users. The message number is extracted from the response instant message at block 1050, and at block 1060, the message number is used to identify an instant message thread associated with the message number (i.e., the instant message to which the response instant message is directed). Finally, at block 1070, the response instant message is displayed such that the response instant message is visually associated with the identified instant message thread.
As will be recognized by those skilled in the art, the innovative concepts described in the present application can be modified and varied over a wide rage of applications. Accordingly, the scope of patents subject matter should not be limited to any of the specific exemplary teachings discussed, but is instead defined by the following claims.