This application is a continuation application claiming priority to Ser. No. 12/688,239, filed, Jan. 15, 2010, which is a continuation of Ser. No. 10/777,799, filed Feb. 12, 2004, U.S. Pat. No. 7,650,380, issued Jan. 19, 2010.
BACKGROUND OF THE INVENTION1. Technical Field of the Invention
This invention relates to messaging and collaboration in a corporate Intranet environment using an HTTP proxy server.
2. Background Art
Advances and developments in packet networks, consumer premises equipment, network servers, and client software provide a synergistic environment for the development of new communication modes and complexities. Networks such as private intranets and the Internet have become features of private and public telecommunications infrastructures. E-mail is now a standard form of communication and information exchange, and instant messaging has become prevalent as a private extension to chat groups. Instant messaging services enable online or network connected parties to generate and deliver text messages to one another over the network. Some such services allow users to select other persons as collaborators and assign these collaborators to groups, automatically register a person when on-line, advertise the user's selected collaborators to the user when those collaborators register on-line, advertise the user's presence on-line to others who have selected the user as a collaborator, and participate in instant messaging communications between two on-line users.
One messaging solution utilizes instant messaging services and communication protocols to locate a registered user, query the user for a proposed message disposition or other action, and coordinate services among a plurality of communication devices, modes, and channels. A user proxy is registered to the user with an instant messaging system as a personal communication services platform. The user creates collaboration groups and defines specific attributes to associates within each group. Included within each associate definition is a user-selected priority assignment. If an associate is assigned a low priority by the user, the associate will never discern whether the user is online or offline, instead the associate will always communicate and interact with the user via the user proxy. If, however, the associate is assigned a high priority by the user, the associate will discern the user's online status any time he is registered on line. Associates assigned a highest priority by the user are able to interface with the user directly when the user is online, and interface with the user proxy when the user is offline.
Thus, in today's corporate environment there is a well known and addressed business need for messaging and collaboration software, such as Lotus Sametime, Microsoft Netmeeting, and the like. These solutions share the following characteristics. First, the user is required to explicitly start the client messaging application. Second, the user can explicitly terminate the messaging application instead of switching to ‘Do Not Disturb’ mode. Third, the client messaging application requires a separate login procedure.
SUMMARY OF THE INVENTIONIn accordance with an aspect of the invention, there is provided a method for operating a server for managing message communications in a network system by first receiving from a first user a request to enter chat mode with a second user; second receiving asynchronously from the second user a request to download any content from said server or any other server; and responding to the request from the second user with the content modified to instantiate a chat session between the first and second users.
In accordance with a further aspect of the invention, a messaging system includes first and second user browsers, a common server, and a network interconnecting them. A message engine at the common server receives from the first user browser a request to enter chat mode with the second user browser; then receives asynchronously from the second user browser a request to download any content from the common server or any other server; and then responds to the request with content modified to instantiate a chat session between the first and second user browsers.
In accordance with an aspect of the invention, there is provided a computer program product configured to be operable to manage message communications in a network system by first receiving from a first user a request to enter chat mode with a second user; second receiving asynchronously from the second user a request to download any content from that or any other server; and responding to the request from the second user with the content modified to instantiate a chat session between the first and second users.
In accordance with an additional aspect of the invention, there is provided a program storage device for storing computer executable code for managing message communications in a network system by first receiving from a first user a request to enter chat mode with a second user; second receiving asynchronously from the second user a request to download any content from that or any other server; and responding to the request from the second user with the content modified to instantiate a chat session between the first and second users.
Other features and advantages of this invention will become apparent from the following detailed description of the presently preferred embodiment of the invention, taken in conjunction with the accompanying drawings.
BRIEF DESCRIPTION OF THE DRAWINGSFIG. 1 is system diagram illustrating the architecture of a chat environment.
FIG. 2 is a schematic representation of the sequence of HTTP requests and responses during chat initiation in accordance with the preferred embodiment of the invention.
FIG. 3 illustrates schematically a chat invitation form.
FIG. 4 illustrates schematically a chat user interface.
FIG. 5 is a high level system diagram illustrating a program storage device readable by a machine, tangibly embodying a program of instructions executable by a machine to perform method steps for dynamically assigning I/O priority.
BEST MODE FOR CARRYING OUT THE INVENTIONIn accordance with the preferred embodiment of the invention, a multimedia broadcast, unicast and real-time messaging functionality is provided for users of a corporate network which does not use any client software other than an HTTP browser, does not require a separate sign on, and may be configured by the network administrator to prevent users from disabling the messaging functionality delivered via the browser.
Referring toFIG. 1, a system diagram illustrates the architecture of the preferred embodiment of the invention.Host10 includesHTTP proxy server12 andmessage engine14.Communication link31 connectshost10 to a POP3/IMAP server16, and link33 toadmin server18.Links45 connecthost10 to users/groups storage20,link35/37 to user Abrowser22,link41 touser B browser24, andlink43 touser C browser26.
Message engine (ME) is put atHTTP proxy server12 since proxy servers can be and usually are enforced for all browsers22-26 in a corporate environment.Message engine14 may be implemented as a software module which looks and acts as an HTTP proxy server from the browsers' point of view.
To enable unicast messaging capabilities, auser22 must authenticate with themessage engine14. This may be done in a number of ways: (1) the user may be required to authenticate with the HTTP proxy server as part of an organization's network security procedure; or (2)if an SSO engine is implemented, its user authentication mechanism can be used; or (3) the user authentication may be substituted with the client machine authentication, which is a trivial task for static IP addresses; or (4) a dynamic host configuration protocol (DHCP) server assigning IP addresses to client machines can keep track of hardware address of network cards (MAC addresses); or (5) if none of (1)-(4) is implemented, a user can be explicitly asked to authenticate with theME14 on the first attempt to use it.
Content which is sent to a user, say22, is, generally speaking, a user interface to a collaboration tool with the ability to convey text and/or multimedia messages (including audio-video-stream) in one or both directions. Thus, the content can include HTML, Java applets, Javascript, and so forth.
As will be more fully described hereafter, acontent page37 sent to a user A will be returned tobrowser22 as a response to anext HTTP request35 from a browser, whatever theactual HTTP request35 was.Message37 can either replace altogether the content of an original response to request35, or modify it by causingbrowser22 to open a separate window with the message text.
To further improve the timely delivery ofmessage37,proxy server12 may set a short time to live to all, or most popular, pages served. This is done by setting the time in the header of HTML pages in cache.
In accordance with the present invention, the following functionality may be implemented.
First, message broadcast for all or a group of users in a corporate Intranet. This functionality is primarily intended for the delivery of urgentpublic announcement messages31,33, ranging from weather, fire or civil defense alerts to corporate-level announcements.User groups20 can be organized according either to the organizational chart (departments, divisions, etc.) or to actual user location (building, floor, etc.) For broadcast functionality, user authentication with themessage engine14 is not required.
Second, message unicast for a particular user. This functionality is primarily intended for delivery ofurgent messages31,33, such as urgent e-mails, short messages, reminders, etc.
Third, chat mode. When user C wishes to open a chat session with user A, he sends arequest43 tomessage engine14 used by bothbrowsers22,26. ME14 signals theHTTP proxy server12, which then incorporates a chat user interface into thenext HTTP response37 served in response to anHTTP request35 to user A'sbrowser22. Chat functionality is implemented in executable client-side code and in theME14 server side module.
Referring toFIG. 2, a schematic representation of the sequence of HTTP requests and responses during chat initiation is presented.
Prior to step43, user C pointsbrowser26 to a known chat URL residing on alocal Intranet server10, and downloads an executable piece of content (a Java applet). Upon downloading and executing the code,browser26 displays a chat invitation form50 (FIG. 3), which in this exemplary embodiment includes header field orpanel51,instruction field52, one or more fields53-55 for entering the user IDs ofusers22,24 to chat with, and amessage field56. ATCP connection43,44 is established withmessage engine14. User C enters the userID of, say, user A, enters a message indata field56, and instep43 submits the request.
Table 1 illustrates a sample format forchat message43.
| TABLE 1 |
|
| SAMPLE CHAT MESSAGE FORMAT |
|
|
| CHAT-START userC@mail.some-corp.com |
| INVITE userID=userA@mail.some-corp.com |
| CHAT-MSG Hi%2CBob,%2Chow%2Csales%2Care%2Cdoing |
| CHAT-END |
| |
Some time after User C submitted chat invitation43 (form50) tomessage engine14, user A asynchronously submits someHTTP request35 to download any document or other content from the corporate Intranet or the Internet. At this stage, user A does not know about user C's intention to initiate the chat, but rather is performing some normal activity.
Table 2 illustrates asample HTTP request35.
| TABLE 2 |
|
| SAMPLE HTTP REQUEST SUBMITTED BY USER A |
|
|
| GET /index.html HTTP/1.1 |
| Accept: text/plain,text/html,*/*;q=0.3 |
| Host: www.cnn.com |
| User-Agent: Mozilla |
| Connection: Keep-Alive |
| |
WhenHTTP proxy server12 detects theHTTP request35 from user A (with which user C desires to chat), it accesses the URL requested by user A and serves it asresponse message37 tobrowser22, modifying it as illustrated by the bold highlighted material in Table 3, at lines42-44. The modification is added immediately after the <body> flag, and cause another browser window60 (FIG. 4) to open atbrowser22, including aheader field61, amessages field62, and aresponse field63. The contents of thisbrowser22 window cause a chat applet instance to download fromhost10 and execute atbrowser22. This applet establishes a TCP connection withserver12, thus establishing achannel35,37,43,44 for message exchange between twochat clients22,26, withchat server12 acting as proxy.
| TABLE 3 |
|
| MODIFIED HTTP RESPONSE FROM PROXY SERVER TO USER B |
|
|
| Last-modified: Mon, 28 Jul 2003 18:59:47 GMT |
| Expires: Mon, 28 Jul 2003 19:00:47 GMT |
| Cache-control: private, max-age=60 |
| Content-type: text/html |
| Transfer-Encoding: chunked |
| <!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 |
| Transitional//EN”> |
| <html lang=“en”> |
| <head> |
| <meta http-equiv=“content-type” content=“text/html; |
| charset=iso-8859-1”> |
| <meta http-equiv=“refresh” content=“1800”> |
| <title>CNN.com</title> |
| <link rel=“Start” href=“/”> |
| <link rel=“Search” href=“/search/”> |
| <link rel=“stylesheet” |
| href=“http://i.cnn.net/cnn/.element/ssi/css/1.0/main.css” |
| type=“text/css”> |
| <script language=“JavaScript1.2” |
| src=“http://i.cnn.net/cnn/.element/ssi/js/1.0/main.js” |
| type=“text/javascript”></script> |
| <script language=“JavaScript1.1” |
| src=“http://ar.atwola.com/file/adsWrapper.js”></script> |
| <style type=“text/css”> |
| <!-- |
| .aoltextad text-align: justify; font-size: 12px; color: black; |
| font-family: Georgia, sans-serif |
| --> |
| </style> |
| <script language=“JavaScript1.1” type=“text/javascript” |
| src=“http://ar.atwola.com/file/adsPopup2.js”></script> |
| <script language=“JavaScript”> |
| document.adoffset = 0; |
| document.adPopupDomain = ‘www.cnn.com’; |
| document.adPopupFile = ‘/cnn_adspaces/adsPopup2.html’; |
| document.adPopupInterval = ‘P24’; |
| document.adPopunderInterval = ‘P24’; |
| adSetOther(‘&TVAR=’+escape(‘class=us.low’)); |
| </script> |
| </head> |
| <body class=“cnnMainPage”> |
| <script language=javascript> |
| window.open(‘http://proxy-chat.some-corp.com/index.jsp’); |
| </script> |
| <a name=“top_of_page”></a> |
| <a href=“#ContentArea”><img |
| src=“http://i.cnn.net/cnn/images/1.gif” alt=“Click here to skip |
| to main content.” width=“10” height=“1” border=“0” |
| align=“right”></a> |
| <table width=“770” border=“0” cellpadding=“0” cellspacing=“0” |
| style=“speak: none”> |
| |
User A'sresponse44 to user C will be delivered bychat proxy server12 to user C's chat client over theTCP connection43,44client browser26 has previously established withchat server12 based on the CHAT-RESPOND field value of the chat response message example of Table 4, atline 2.
| TABLE 4 |
|
| CHAT RESPONSE MESSAGE EXAMPLE |
|
|
| CHAT-START userA@mail.some-corp.com |
| CHAT-RESPOND userC@mail.come-corp.com |
| CHAT-MSG Not%2Cvery%2Chow%2Clately... |
| CHAT-END |
| |
Alternative EmbodimentsIt will be appreciated that, although specific embodiments of the invention have been described herein for purposes of illustration, various modifications may be made without departing from the spirit and scope of the invention.FIG. 5 depicts a computer system comprising acomputer102 and a computer program product or program element, or a program storage ormemory device100 such as a computerreadable storage medium110, magnetic or optical wire, tape ordisc106,108, or the like, for storing computer readable program code (i.e., a program of instructions) readable by a machine as is illustrated byline104, or controlling the operation of acomputer102, such as ahost system10 orstorage controller31 or processor coupled to the computerreadable storage medium110, according to the method of the invention and/or to structure its components in accordance with the system of the invention (i.e., execution of the program code by the processor causes the processor of the computer to perform the method of the invention).
Further, each step of the method may be executed on any general purpose computer, such as IBM Systems designated as zSeries, iSeries, xSeries, and pSeries, or the like and pursuant to one or more, or a part of one or more, program elements, modules or objects generated from any programming language, such as C++, Java, Pl/1, Fortran or the like. And still further, each said step, or a file or object or the like implementing each said step, may be executed by special purpose hardware or a circuit module designed for that purpose.
Accordingly, the scope of protection of this invention is limited only by the following claims and their equivalents.