Abstract:
A method, system and apparatus for integrating dynamic application input and output in an instant messaging/chat system. In this regard, a method for integrating dynamically produced application input and output into instant messaging/chat content in an established instant messaging/chat session can include receiving application input from a remote instant messaging/chat client as a posting to an established instant messaging/chat session and forwarding the received application input to a designated external application. Finally, the application output from the external application can be posted as content in the established instant messaging/chat session. Additionally, the application input can be pre-processed before performing the forwarding step, and the application output can be post-processed before performing the posting step.

Description:
BACKGROUND OF THE INVENTION 
     1. Statement of the Technical Field 
     The present invention relates to the field of collaborative computing and more particularly to instant messaging and chat systems. 
     2. Description of the Related Art 
     Real time communications systems provide a substantial enhancement over more traditional, asynchronous communications systems. Electronic mail delivery systems, the prototypical asynchronous communications systems, in its time represented a giant leap forward in respect to global interpersonal communications. Prior to electronic mail, individuals primarily communicated via telephone, facsimile and post. With electronic mail, however, individuals expect near instant delivery of text, and even imagery, audio and video, without incurring the delay typical of the postal system, or the expense associated with telephony and fax technologies. 
     Despite the ubiquity of electronic mail, asynchronous communications systems lack several elements common in the realm of real time communications systems. In particular, the seemingly instant delivery of a message cannot be experienced in the world of electronic mail. In an real-time society, the minor latencies associated with electronic mail often cannot be suitable for the task at hand where a real-time conversation will be required in addressing a problem or performing a collaborative task. More importantly, often the feel and nature of a “conversation” as it is known to human beings only can be approximated through real time communications where the participants to a conversation feel the spontaneity of an exchange of ideas, much as is the case in a live, face-to-face conversation. 
     The recent rapid development of the Internet has led to advanced modes of synchronous, real-time collaboration able to fulfill the real-time communicative requirements of the modern computing participant. Using the Internet as a backbone, individuals worldwide can converge in real-time in cyberspace to share ideas, documents and images in a manner not previously possible through conventional telephony and video conferencing. To facilitate collaboration over the Internet, a substantial collection of technologies and protocols have been assembled to effectively deliver audio, video and data over the single data communications medium of the Internet. These technologies include several human-to-human collaborative environments such as instant messaging, application sharing, shared document libraries and persistent chat rooms. 
     Current instant messaging and chat systems allow users to communicate through a mostly textual interface. Other channels such as voice, video and application sharing often are bundled with an instant messaging tool in a single collaborative system. Notwithstanding, presently, applications output remains separate and non-cooperative. In this regard, interactions with an application can be shared with other collaborators only through application sharing technology. Application sharing technology, however, can require substantial bandwidth as entire images of an application must be broadcast to collaborators over data communications links. Moreover, it can be difficult to extract contextual elements from a shared image of an application in as much as the shared image ordinarily is a singular graphic image. 
     SUMMARY OF THE INVENTION 
     The present invention addresses the deficiencies of the art in respect to instant messaging and chat systems and provides a novel and non-obvious method, system and apparatus for integrating dynamic application input and output in an instant messaging/chat system. In this regard, an instant messaging/chat system which has been configured in accordance with the present invention can include an instant messaging/chat client and an application event interface to the instant messaging/chat client. The interface can have a configuration for receiving application input and output and integrating the received application input and output with instant messaging/chat content for an established instant messaging/chat session. 
     The system of the present invention further can include an instant messaging/chat server configured for communicative coupling to the instant messaging/chat client, the server having logic for determining whether selected other instant messaging/chat clients can process application output in a data format, or whether the selected other instant messaging/chat clients can process only a textual representation of the application output. The instant messaging/chat client also can include logic for attaching an application to the established instant messaging/chat session so as to integrate input and output to and from the application into the instant messaging/chat content. 
     A method for integrating dynamically produced application input and output into instant messaging/chat content in an established instant messaging/chat session can include receiving application input from a remote instant messaging/chat client as a posting to an established instant messaging/chat session and forwarding the received application input to a designated external application. Finally, the application output from the external application can be posted as content in the established instant messaging/chat session. Additionally, the application input can be pre-processed before performing the forwarding step, and the application output can be post-processed before performing the posting step. The pre-processing and post-processing can be either automatic or manual in nature. For example, the automatic processing can include converting user interface elements to a text-only representation. By comparison, manual processing can include the prevention of subversive calls from reaching the target application. 
     Preferably, it can be determined which of the participating other instant messaging/chat clients can process the application output in a data format, and which of the participating other instant messaging/chat clients can process the application output only as a textual representation of the application output. As such, the application output can be converted to a textual representation and forwarded to the participating other instant messaging/chat clients which can process the application output only as a textual representation of the application output. Conversely, the application output in the data format can be forwarded to the participating other instant messaging/chat clients which can process the application output in a data format. 
     Additional aspects of the invention will be set forth in part in the description which follows, and in part will be obvious from the description, or may be learned by practice of the invention. The aspects of the invention will be realized and attained by means of the elements and combinations particularly pointed out in the appended claims. It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory only and are not restrictive of the invention, as claimed. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The accompanying drawings, which are incorporated in and constitute part of this specification, illustrate embodiments of the invention and together with the description, serve to explain the principles of the invention. The embodiments illustrated herein are presently preferred, it being understood, however, that the invention is not limited to the precise arrangements and instrumentalities shown, wherein: 
         FIG. 1  is a schematic illustration of an instant messaging/chat system configured to integrate dynamically generated application input and output in an instant messaging/chat session; 
         FIG. 2A  is a block diagram of an instant messaging/chat system configured to dynamically integrate application input and output in an instant messaging/chat session; 
         FIG. 2B  is a pictorial illustration of a collective user interface configured to dynamically integrate application input and output in an instant messaging/chat session; 
         FIG. 3  is a flow chart illustrating a client-side process for dynamically integrating application input and output in an instant messaging/chat session in the instant messaging/chat system of  FIG. 1 ; and, 
         FIG. 4  is a flow chart illustrating a server-side process for dynamically integrating application input and output in an instant messaging/chat session in the instant messaging/chat system of  FIG. 1 . 
     
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     The present invention is a method, system and apparatus for dynamically integrate application output in an instant messaging/chat session. In accordance with the present invention, an application can be logically coupled to an instant messaging/chat session. Participants in the session can provide input commands to the application through the instant messaging/chat clients, and application output can be received in the instant messaging/chat system and processed for integration in the content of an ongoing instant messaging or chat session. Specifically, the application output can be included in the ongoing instant messaging or chat session, either as session processible text where individual instant messaging/chat clients are not configured to process a native data format for the application, or in a native data format where the instant messaging/chat clients are configured to process the native data format. 
     In further illustration,  FIG. 1  is a schematic illustration of an instant messaging/chat system configured to dynamically integrate application input and output in an instant messaging/chat session. The system can include one or more instant messaging/chat session clients  110 ,  120  communicatively coupled to one another over a data communications network  130 . An instant messaging/chat server  140  further can be communicatively coupled to the instant messaging/chat session clients  110 ,  120  so as to facilitate instant messaging/chat communications between the instant messaging/chat session clients  110 ,  120 . 
     In the instant messaging/chat session client  110 , an operating system  115  can support the operation of an instant messaging client process  150 . The instant messaging/chat client process  150  can provide a user interface (not shown) through which an end user can both view the content of an instant messaging/chat session, and also add content to the instant messaging/chat session. Notably, at least one instant messaging/chat session client  110  can be configured to dynamically integrate the input and output  180  of an application  160  in an instant messaging/chat session established between the instant messaging/chat session client  110  and at least one other instant messaging/chat session client  120 . 
     In accordance with the present invention, input and output  180  to and from the application  160  can be provided to the instant messaging/chat client process  150  by way of an application programming interface (API)  170  to the instant messaging/chat client process. In this regard, the application  160  can be any application which can produce data output, including command-line applications, standalone applications, applets, and scripts. To that end, the API  170  can accept application input in the form of a command, and the API  170  can accept application output in a text format or a data format, such as an XML compliant markup language document. Subsequently, the API  170  can route application output as an event  125 A to the instant messaging/chat server  140  over the data communications network  130 . By comparison, the API  170  can route application input as a command  125 B to the application  160 . 
     More specifically, application commands can be embedded as chat messages in the instant messaging/chat session. Consequently, upon receiving a command  135 B from one of the instant messaging/chat clients  120 , an instant messaging/chat routing process  190  in the instant messaging/chat server  140  can route the command  135 B as a textual command  125 B to the instant messaging/chat client  110 . The API  170  can detect the command  125 B and can convert the command  125 B into application input for processing by the application  160 . In a preferred aspect of the invention, the API  170  can afford an opportunity to quash or modify the command  125 B before passing the command  125 B to the application  160 . 
     The resulting application output similarly can be integrated into the instant messaging/chat session. More particularly, the application output can be converted by the API  170  into an event  125 A which can be passed to an instant messaging/chat routing process  190 . The instant messaging/chat routing process  190  can determine which of the instant messaging/chat clients  120  are to receive the event  125 A and can forward a data/textual representation  135 A of the event  125 A to those instant messaging/chat clients  120 . 
     Importantly, the instant messaging/chat routing process  190  can determine which of the instant messaging/chat clients  120  are to configured to process the event  125 A in its data format, and which require a text format. For those instant messaging/chat clients  120  which are able to process the event  125 A in a data format, no conversion process will be required. Otherwise, the instant messaging/chat routing process  190  can convert the event  125 A into a textual representation for insertion into the content of the instant messaging/chat session. 
     Referring now specifically to the receipt and processing of application commands through an instant messaging/chat interface,  FIG. 2A  is a block diagram of an instant messaging/chat system configured to integrate dynamically generated application input and output in an instant messaging/chat session. In accordance with the present invention, a remote chat client  240  can issue an application command through an instant messaging/chat interface during the course of an instant messaging/chat session. The command can be distinguished from ordinary conversational text in that the command can be demarcated with a command indicia, whether visible or not, such as the “#” symbol as in “#[application command]”. 
     The instant messaging/chat server  230  can receive the command and can route the command as any other conversational text in an instant messaging/chat session to the owning chat client  220  in the instant messaging/chat session. The owning chat client  220  can detect the presence of a command by locating the command indicia. Pre-processing  250  can be performed on the command, which can include modifying the attributes of the command, modifying the command itself, issuing a different command, or quashing the command. Subsequently, the command if not quashed can be passed to the application  210  for processing. Notably, the pre-processing can be manual or automatic in nature in that the user can intervene prior to the passing of the command to the application  210 , or the intervention can be performed automatically in a programmatic fashion. 
     The output from the application  210  can be returned to the owning chat client  220  which can be post-processed  260  before being inserted into the instant messaging/chat session as ordinary conversational text. The output subsequently can be passed to the instant messaging/chat server  230  which can route the output to appropriately participating remote instant messaging/chat clients  240 . In this way, even those remote instant messaging/chat clients  240  which did not issue the command can view the command and its results in the ordinary course of participating in the instant messaging/chat session. 
     In further illustration,  FIG. 2B  is a pictorial illustration of a collective user interface configured to integrate dynamically generated application input and output in an instant messaging/chat session. The owning instant messaging/chat session client user interface  280  can permit the linking of an application to an active instant messaging/chat session. Upon activating the “Link To” control, an application and any of its controls can be integrated for interoperation with the active instant messaging/chat session. Alternatively, the application  270  can provide a user interface control for linking the application with the active instant messaging/chat session. Once linked, the output of the application can be inserted into the content of the instant messaging/chat session so that the remote instant messaging/chat session user interface  290  of each remote instant messaging/chat session client can view the application output. 
     As it will be apparent to the skilled artisan, the process of integrating dynamically generated application output into the content of an instant messaging/chat session can be bifurcated into a client-side sub-process and a server-side sub-process. In this regard,  FIG. 3  is a flow chart illustrating a client-side process for integrating dynamically generated application input and output in an instant messaging/chat session in the instant messaging/chat system of  FIG. 1 . Beginning in block  310 , an instant messaging/chat session can be established in which one or more other instant messaging/chat session clients participate in exchanging instant messaging/chat content in a collaborative manner. Subsequently, in block  315  an application can be attached to the established session such that the output of the application can be integrated into the content of the established session. 
     In block  320 , an event can be received which event can be an instant message/chat posting or the output of the attached application, though the event also can include other information as it will be recognized by the skilled artisan. In decision block  330 , it can be determined if the event contains application output  330 . If so, in block  350  the application output can be formatted, for instance in an XML compliant markup language document. Subsequently, in block  360  the formatted output can be forwarded to the instant messaging/chat server as an event. If, on the other hand, the received event is not application output, the event can be forwarded in block  340  to the instant messaging/chat server presumably as instant messaging/chat content. In either case, if in decision block it is determined that the session is to be closed, in block  380  the session can be closed. 
     Turning now to the server-side process of  FIG. 4 , a flow chart is shown which illustrates a server-side process for integrating dynamically generated application input and output in an instant messaging/chat session in the instant messaging/chat system of  FIG. 1 . In block  410  an event can be received from a communicatively coupled instant messaging/chat client. In decision block  420 , it can be determined whether the received event is instant messaging/chat content. If so, in block  430  the instant messaging/chat content can be posted to the ongoing instant messaging/chat session by forwarding the instant messaging/chat content to each instant messaging/chat client registered for the instant messaging/chat session. 
     If in decision block  420 , it is determined that the received event is not instant messaging/chat content, in decision block  440  it can be determined if the received event is application output. If so, in block  450  each registered instant messaging/chat client can be queried to determine whether the instant messaging/chat client can process the application output in a (native) data format, or whether the output from the application must be provided as a textual representation (session processible text) able to be processed by the instant messaging/chat client just as if the application output were native instant messaging/chat content when the individual message client is not configured to process a native data format. In decision block  460 , if no conversion is required, in block  470  the application output can be routed as data to the instant messaging/chat client. Otherwise, in block  480  the application output can be converted to a textual representation and in block  490  the textual representation can be posted to the instant messaging/chat client as if the application output were native instant messaging/chat content. 
     The present invention can be realized in hardware, software, or a combination of hardware and software. An implementation of the method and system of the present invention can be realized in a centralized fashion in one computer system, or in a distributed fashion where different elements are spread across several interconnected computer systems. Any kind of computer system, or other apparatus adapted for carrying out the methods described herein, is suited to perform the functions described herein. 
     A typical combination of hardware and software could be a general purpose computer system with a computer program that, when being loaded and executed, controls the computer system such that it carries out the methods described herein. The present invention can also be embedded in a computer program product, which comprises all the features enabling the implementation of the methods described herein, and which, when loaded in a computer system is able to carry out these methods. 
     Computer program or application in the present context means any expression, in any language, code or notation, of a set of instructions intended to cause a system having an information processing capability to perform a particular function either directly or after either or both of the following a) conversion to another language, code or notation; b) reproduction in a different material form. Significantly, this invention can be embodied in other specific forms without departing from the spirit or essential attributes thereof, and accordingly, reference should be had to the following claims, rather than to the foregoing specification, as indicating the scope of the invention.