Abstract:
The pages served to a user by a web server ( 12 ) are determined by or configured in dependence on a user id and a content id that have previously been established by a telephone call. A main page from the web server ( 12 ) request that the user enter the user id which is reported back to the server ( 12 ). The server ( 12 ) then retrieves the context id associated context id and serves ( 12 ) a page in dependence on the context id.

Description:
FIELD OF THE INVENTION  
         [0001]    The present invention relates to the serving of hypermedia documents.  
         BACKGROUND TO THE INVENTION  
         [0002]    People are familiar with telephones and the World Wide Web as means of communication. However, they are used independently.  
         SUMMARY OF THE INVENTION  
         [0003]    It is an aim of the present invention to provide for convergence between telephone and hypermedia communication.  
           [0004]    The term “hypermedia document” means HTML documents and the like.  
           [0005]    According to the present invention, there is provided a method of serving hypermedia documents, the method comprising:  
           [0006]    generating a user id from a received telephone call and generating a context id in dependence on the circumstances of the telephone call;  
           [0007]    storing the context id in association with the user id;  
           [0008]    dispatching a first hypermedia document in response to a request therefor from a user, the first hypermedia document comprising means to receiving a user id and causing the user id to be sent in a request for a second hypermedia document;  
           [0009]    receiving a request for the second hypermedia document;  
           [0010]    determining the context id associated with the user id sent in said request;  
           [0011]    configuring or selecting the second hypermedia document in dependence on the determined context id; and  
           [0012]    sending the second hypermedia document to the requester.  
           [0013]    According to the present invention, there is also provided an apparatus for serving hypermedia documents, the apparatus comprising:  
           [0014]    telephony terminal equipment for receiving telephone calls;  
           [0015]    a hypermedia server means; and  
           [0016]    processing means for generating a user id from a telephone call received by the telephony terminal equipment, generating a context id in dependence on the circumstances of the telephone call and storing the context id in association with the user id,  
           [0017]    wherein the hypermedia server means is configured for:  
           [0018]    dispatching a first hypermedia document in response to a request therefor from a user, the first hypermedia document comprising means to receiving a user id and causing the user id to be sent in a request for a second hypermedia document;  
           [0019]    receiving a request for the second hypermedia document;  
           [0020]    determining the context id associated with the user id sent in said request;  
           [0021]    configuring or selecting the second hypermedia document in dependence on the determined context id; and  
           [0022]    sending the second hypermedia document to the requester.  
           [0023]    The first and second hypertext documents need not be sent from the same location or web server process.  
           [0024]    The circumstances may comprise the identity of a contemporaneous event. However, the circumstances may comprise an aspect of the content, e.g. a spoken word or a DTMF sequence, of the call or the time at which or date on which the call is made.  
           [0025]    Preferably, the user id comprises the telephone number from which said call is made. More preferably, the telephone number is automatically determined. However, the user could be asked to enter a user-selected id using the telephone&#39;s keypad or speak in id. If the id is spoken, an applet may be associated with the first hypermedia document to enable the user to speak his id and have it send, e.g. as a compressed audio file, in the request for the second hypermedia document. 
       
    
    
     BRIEF DESCRIPTION OF DRAWINGS  
       [0026]    [0026]FIG. 1 schematically illustrates a state machine server employed in an embodiment of the present invention;  
         [0027]    [0027]FIG. 2 shows an embodiment of the present invention; and  
         [0028]    [0028]FIG. 3 shows a television image broadcast in the embodiment shown in FIG. 2. 
     
    
     DESCRIPTION OF PREFERRED EMBODIMENT  
       [0029]    An embodiment of the present invention will now be described, by way of example, with reference to the accompanying drawings.  
         [0030]    Referring to FIG. 1, a state machine server comprises an input router  1 , a database  2 , a plurality of state machines  3   a ,  3   b ,  3   c  and an output router  4 . The input router  1  receives input data from a plurality of sources, e.g. mobile telephones, web browsers, in messages. These messages contain at least a session reference, e.g. indication of the source of the data or a session ID, and the data itself. The database  2  contains input and output routing tables. When the input router  1  receives a message, it queries the database  2  using the session reference in the message and obtains in response the identity of one of the state machines  3   a ,  3   b ,  3   c . At least the data in the message is then routed to the identified state machine  3   a ,  3   b ,  3   c  by the input router  1 . The state of the identified state machine  3   a ,  3   b ,  3   c  may change in response to the data in the message and an output may be generated, if such is required by the new state. Such outputs comprise output control messages which include at least an output device ID and an output device command. The outputs from the state machines  3   a ,  3   b ,  3   c  are handled by the output router  4  which routes them to the appropriate output device, e.g. a display unit or an audio unit for sending audio via a mobile telephone.  
         [0031]    Referring to FIG. 2, an interactive television system comprises a master station  11 , a server machine  12  connected to the master station  11 , a television processor  13  and a communications processor  14 . The server machine  12  hosts a state machine server as described above and a web server process. The television processor  13  and the communications processor  14  are connected to the server  12  for the exchange of messages therewith. An audio signal path is provided between the television processor  13  and the communications processor  14 . The system also includes a television transmitter  16  for transmitting television signals generated by the television processor  13 , first and second televisions  17 ,  18  for receiving the television signal transmitted by the transmitter  16 , and first and second digital mobile telephones  9 ,  10  near the first and second televisions  17 ,  18  respectively.  
         [0032]    The television processor  13  is connected to receive signals from a video camera  21  and a video tape  22 . The television processor  13  can also generated graphical and text images under program control.  
         [0033]    The communications processor  14  can engage in a plurality of telephone calls, e.g. with the mobile telephones  19 ,  20 , simultaneously and is connected to bank of telephony terminals  23 .  
         [0034]    The server  12  is generally responsive to signals from the communications processor  14  to send command signals to the television processor  13  and back to the communications processor  14 .  
         [0035]    The server  12  supports a web server process which is accessible via the Internet  25  to a web browser running on a personal computer  26 , located near the first television  17 .  
         [0036]    The master station  11  is used to control the server  12 , e.g. initialising the state machine server and the web server process its operation, and for sending control files, defining the server&#39;s operation and the web pages that can be served, to the server  12 .  
         [0037]    Referring to FIG. 3, a television picture produced by the television processor  13  is for a discussion program and comprises a main image  30  showing a discussion group, obtained from the tape  22 , and first, second, third and fourth overlays  31 ,  32 ,  33 ,  34 . The first overlay  31  includes a graph illustrating yes and no votes made by the public in response to the discussion and a first telephone number. The second overlay  32  contains a video image of an expert, filmed using the video camera  31 , giving a commentary on the discussion taking place in the main image and a second telephone number. The third overlay  33  contains the image of a telephone and a third telephone number. The image of a telephone is an invitation to viewers to call a “helpline” related to the subject of the discussion. The fourth overlay  24  contains an image of a notepad and a communication “flash” and a fourth telephone number. The image in the fourth overlay  34  is an invitation to viewers to request additional information.  
         [0038]    When the television programme shown in FIG. 3 is to be transmitted, an operator sends a initialisation signal to the state machine server at the server  12  from the master station  11 . The state machine server at the server  12  responds by instantiating state machine control object instances associated with each of the overlays  31 ,  32 ,  33 ,  34 .  
         [0039]    The operation of the present embodiment in respect of the first overlay  31  will now be described.  
         [0040]    When a viewer dials the first number using his telephone  19 ,  20 , the call is answered by the communications processor  14 . The communications processor  14  then generates a message comprising a voting “function ID” in a routing part and “new call=[channel no.]” in a data part. The channel number identifies a logical channel that the communications processor  14  can use to send signals to the new caller. The message is then sent to the server  12 .  
         [0041]    The message is received by a routing process at the server  12  which obtains the ID of the control object instance for the first overlay  31  from an input routing table, set up using the master station  12 , using the routing part of the message. The routing process then invokes a message handling method of the appropriate control object instance. The method responds to the message by generating a “play invitation” message comprising the function ID and “comms” in the routing part and “[channel no.]=play invitation” in the data part. This message is returned to the routing process which sends it to the communications processor  14  after looking up the destination in an output routing table, set up using the master station, using the routing part of the message.  
         [0042]    When the communications processor  14  receives the message it responds by playing an audio file, telling the caller to press “1” for yes and “0” for no, via the logical channel specified in the message. The communications processor  14  then waits for a digit to be input. When a “1” or a “0” has been entered by the caller, the communications processor  14  hangs up and generates a “vote” message comprising the function ID in the routing part and “vote=[yes/no]” in the data part.  
         [0043]    The “vote” message is routed to the appropriate control object instance which responds by updating a local record of yes or no votes as necessary and incrementing a count of votes. If the count of votes equals a predetermined number, the percentage of yes votes is calculated and the count reset to zero. A message, comprising the function ID and “video” in the routing part and “percentage=[percentage]” in the data part, is then returned to the routing process and sent to the television processor  13 . If the count has not reached the predetermined number, an empty message is returned to the routing process which ignores it.  
         [0044]    When the television processor  13  receives the “percentage message”, it redraws the graph in the first overlay  31  to illustrate the new ratio of yes and no votes.  
         [0045]    The operation of the present embodiment in respect of the second overlay  32  will now be described.  
         [0046]    When a viewer dials the second number using his telephone  19 ,  20 , the call is answered by the communications processor  14 . The communications processor  4  then generates a message comprising an audio feed “function ID” in a routing part and “new call=[channel no.]” in a data part. The channel number identifies a logical channel that the communications processor  14  can use to send signals to the new caller. The message is then sent to the server  12 .  
         [0047]    The message is received by a routing process at the server  12  which obtains the ID of the control object instance for the second overlay  32  from the input routing table. The routing process then invokes a message handling method of the appropriate control object instance. The method responds to the message by generating a “feed audio” message comprising the function ID and “comms” in the routing part and “[channel no.]=feed audio” in the data part. This message is returned to the routing process which sends it to the communications processor  4  after looking up the destination in the output routing table.  
         [0048]    When the communications processor  14  receives the message it responds by connecting the audio feed from the television processor  13  to the logical channel specified in the message. Consequently, the viewer can hear the expert via his telephone  19 ,  20 .  
         [0049]    When the viewer hangs up, the communications processor  14  generates a message comprising an audio feed “function ID” in a routing part and “[channel no.]=hung up” in a data part. The message is then sent to the server  12 .  
         [0050]    The message is received by a routing process at the server  12  which obtains the ID of the control object instance for the second overlay  32  from an input routing table. The routing process then invokes the message handling method of the appropriate control object instance. The method responds to the message by generating an “on hook” message comprising the function ID and “comms” in the routing part and “[channel no.]=on hook” in the data part. This message is returned to the routing process which sends it to the communications processor  14  after looking up the destination in the output routing table.  
         [0051]    The communications processor  14  responds by breaking the link between the audio feed from the television processor  13  and the specified logical channel and drops the telephone line associated with the specified channel number.  
         [0052]    The operation of the present embodiment in respect of the third overlay  33  will now be described.  
         [0053]    When a viewer dials the third number using his telephone  19 ,  20 , the call is answered by the communications processor  14 . The communications processor  4  then generates a message comprising an phone “function ID” in a routing part and “new call=[channel no.]” in a data part. The channel number identifies a logical channel that the communications processor  14  can use to send signals to the new caller. The message is then sent to the server  12 .  
         [0054]    The message is received by a routing process at the server  12  which obtains the ID of the control object instance for the third overlay  33  from the input routing table. The routing process then invokes a message handling method of the appropriate control object instance. The method responds to the message by selecting the ID of a free telephony terminal  33  from a list thereof, setting a busy flag associated with it to true, and generating a “connect” message comprising the function ID and “comms” in the routing part and “[channel no.]=[terminal ID]” in the data part. This message is returned to the routing process which sends it to the communications processor  14  after looking up the destination in the output routing table.  
         [0055]    When the communications processor  14  receives the message it responds by connecting the specified telephony terminal  23  to the logical channel specified in the message. The viewer can then talk to the operator of the specified telephony terminal.  
         [0056]    If the viewer hangs up, the communications processor  14  generates a message comprising a phone “function ID” in a routing part and “[channel no.]=hung up” in a data part. The message is then sent to the server  12 .  
         [0057]    If the operator of the telephony terminal  23  terminates the call, the communications processor  14  generates a message comprising a phone “function ID” in a routing part and “[terminal no.]=terminated” in a data part. The message is then sent to the server  12 .  
         [0058]    When the “hung up” or “terminated” message is received by the routing process at the server  12 , the routing process then invokes the message handling method of the appropriate control object instance. The method responds to the message by generating a “disconnect” message comprising the function ID and “comms” in the routing part and “[channel no.]=disconnect” in the data part. This message is returned to the routing process which sends it to the communications processor  4  after looking up the destination in the output routing table.  
         [0059]    The communications processor  14  responds by breaking the link between the telephony terminal  23  and the specified logical channel and drops the telephone line associated with the specified channel number. The communications processor  14  then sends a “complete” message, comprising the function ID in the routing part and “[channel no.]=complete” to the server  12 . At the server  12 , the message is routed to the appropriate control object instance which responds by setting the busy flag for the telephony terminal to false and returning an empty message.  
         [0060]    The operation of the present embodiment in respect of the fourth overlay  34  will now be described.  
         [0061]    When a viewer, who has access to a personal computer  26 , dials the fourth number using his telephone  19 , the call is answered by the communications processor  14  which stores the caller&#39;s telephone number. The communications processor  14  then generates a message comprising an information “function ID” in a routing part and “new call=[channel no.]“in a data part. The channel number identifies a logical channel that the communications processor  14  can use to send signals to the new caller. The message is then sent to the server  12 .  
         [0062]    The message is received by a routing process at the server  12  which obtains the ID of the control object instance for the fourth overlay  34  from the input routing table. The routing process then invokes a message handling method of the appropriate control object instance. The method responds to the message by generating a “play options” message comprising the function ID and “comms” in the routing part and “[channel no.]=play options” in the data part. This message is returned to the routing process which sends it to the communications processor  14  after looking up the destination in an output routing table.  
         [0063]    When the communications processor  14  receives the message it responds by playing an audio file, telling the caller that he can receive additional information by pressing ”1” for short message service, “2” for e-mail, “3” for fax and “4” for World Wide Web or cancel by pressing “0”, via the logical channel specified in the message. The communications processor  14  then waits for a digit to be input. When a “1”, “2”, “3”, “4” or “0” has been entered by the caller, the communications processor  14  generates a “mode” message comprising the function ID in the routing part and “mode=[entered digit]” in the data part  
         [0064]    The “mode” message is routed to the appropriate control object instance at the server  12 .  
         [0065]    If the mode is “0”, the method returns an “on hook” message, comprising the function ID and “comms” in the routing part and “[channel no.]=on hook”, which is sent to the communications server  14 . The communications server  14  responds in this case, by dropping the telephone call identified by the channel number.  
         [0066]    If the mode is “1”, “2”, “3” or “4”, the method returns a “get number” message, comprising the function ID and “comms” in the routing part and “[channel no.]=get number” in the data part. This message is sent to the communications processor  14  which responds by generating a “telephone number” message, comprising the function ID in the routing part and “number =[telephone number]”. The telephone number for the viewer has been obtained using caller line identification (CLI). The “telephone number” message is sent to the server  12  where it is sent to the message handling method of the appropriate control object instance.  
         [0067]    If the mode is not “4”, the method looks up the viewer&#39;s short message service, e-mail or fax address/number in a registered user database in dependence on the contents of the previously received mode message. If there is not an entry for the telephone number, the method returns an “unregistered” message, comprising the function ID and “comms” in the routing part and “[channel no.]=unregistered” in the data part, which is sent to the communications processor  14 . The communications processor  14  responds to this message by playing an audio file through the specified channel and then dropping the line. The audio file gives the view instructions for registering, e.g. by telephone or e-mail or through a web page form.  
         [0068]    If the mode is “1” and an short message service number is found, the method sends a message, comprising the function ID and “comms” in the data part and “[channel no.]=[short message service number] in the data part, to the communications server  14 . The communications server  14  responds by playing an audio file through the specified channel to inform the user that the information is being sent by short message service and then drops the line. Then it sends the information, which was previously stored at the communication processor  14 , in a series of short message service messages to the viewer&#39;s mobile telephone  19 ,  20 .  
         [0069]    If the mode is “2” and an e-mail address is found, the method sends a message, comprising the function ID and “master” in the data part and “send=[e-mail address, channel no.] in the data part, to the master station  11 . The master station  11  responds by adding the e-mail address to a list of addresses to which the information is to be sent and then sends a “spooled” messaged, comprising the function ID in the routing part and “[channel no.]=spooled” in the data part, to the server  12 . This message is routed in the normal way to the message handling method of the appropriate control object instance.  
         [0070]    Similarly, if the mode is “3” and a fax number is found, the method sends a message, comprising the function ID and “master” in the data part and “send=[fax number, channel no.] in the data part, to the master station  11 . The master station  11  responds by adding the fax number to a list of fax numbers to which the information is to be sent and then sends a “spooled” messaged, comprising the function ID in the routing part and “[channel no.]=spooled” in the data part, to the server  12 . This message is routed in the normal way to the message handling method of the appropriate control object instance.  
         [0071]    On receiving a “spooled” message, the method returns a “spool report” message, comprising the function ID and “comms” in the routing part and “[channel no.]=spooled” in the data part, which is then sent to the communications processor  14 .  
         [0072]    The communications server  14  responds by playing an audio file through the specified channel to inform the user that the information is being sent by the chosen method and then drops the line.  
         [0073]    If it is determined that the mode is “4”, the method does not query the registered user database. Instead, it stores the telephone number and a programme id in a web server control database and then sends a message, comprising the function ID and “comms” in the data part and “[channel no.]=“web enabled” in the data part, to the communications server  14 . The communications server  14  responds by playing an audio file through the specified channel to inform the user that the information is available to him at a particular web site.  
         [0074]    When the viewer desires to obtain the additional information, he uses his personal computer  26  access the web site mentioned in the message which was sent in response to the “web enabled” message. The viewer submits the URL for the web site&#39;s home page and the web server running on the server  12  sends the HTML document for its home page. This document defines a frame into which is loaded an HTML form document. This document includes a text box, a submit button and an invitation to enter one&#39;s telephone number in the text box. The viewer enters his telephone number in the text box and clicks on the button. This causes the web browser to submit the form&#39;s action URL with the telephone number as a parameter.  
         [0075]    The form&#39;s action URL is a reference to a CGI program on the server  12 . When the web server at the server  12  receives the request including the action URL is runs the specified program.  
         [0076]    The specified program queries the web server control database using the entered telephone number. Since the viewer called earlier during the television programme and selected mode “4”, the query returns the associated programme id. The CGI program then responds by “printing” a short HTML document that automatically replaces itself with the first page of a set of linked pages relating to the television programme whose id was obtained from the web server control database. The CGI program responds to different programme ids by including different replacing page URLs in the short HTML document.  
         [0077]    The short HTML document is loaded by the web browser at the personal computer  26  into the frame and is quickly replaced by the first programme specific page.  
         [0078]    When the television program finishes, an operator at the master station  11  causes the master station to send a shut down command to the server  12  which completes any outstanding transactions and terminates its processing of messages from the communications processor  14 . However, the web server process continues to run. The server  12 , the television processor  13  and the communications processor  14  can then be reconfigured for another television programme.  
         [0079]    In another embodiment, the CGI program “prints” the first page of the program-specific set directly rather than causing it to be displayed indirectly by means of the short HTML document.  
         [0080]    In a further embodiment, the CGI program also “prints” the first page of the program-specific set directly rather than causing it to be displayed indirectly by means of the short HTML document. However, this pages is produced by inserting the information relating to the television programme into a predetermined location in a template HTML document.  
         [0081]    In the above-described embodiments, the CGI programs are used to determine the content to be sent to the viewer. It will be appreciated, however, that other technologies such a PHP Hypertext Pre-processing and Active Server Pages could be used.