Abstract:
A method and system are provided that enhance human/machine communication so as to more closely approximate natural human/human communication by more effectively establishing communications links for human-interactive media. Specifically, the speed and quality of the connection are improved by the method and system, resulting in a more natural user experience. The method includes a communication system receiving a call request from a requestor. The communication system has a Connection Proxy (CP) and a plurality of Endpoints (EPs). The CP has an endpoint state table (EST) configured to store state information associated with each of the plurality of endpoints (EPs). Based on the call request, the CP selects an EP using the EST. If the selected EP accepts the requested communications link, the CP establishes a communications link that excludes the CP itself. The CP also updates the EST based on a response to the call request from the selected EP.

Description:
TECHNICAL FIELD 
       [0001]    The present invention relates generally to the field of network telephony, and more particularly to systems for establishing and maintaining human/machine communications links. 
       BACKGROUND 
       [0002]    Modern communication systems facilitate human-to-human communication at a distance. Compared with other information-bearing signals, direct human/human interaction, such as face-to-face speech, is relatively lag-free, noise-free, even, and stable. Accordingly, typical communications systems that support human/human speech are configured to minimize, or at least reduce, signal distortions such as lag, noise, unevenness, and instability. 
         [0003]    One popular approach to communication-at-a-distance is network telephony. Generally, network telephony systems exchange digital signals that represent speech. In some network telephony systems, the digital signals are the result of processing captured analog speech signals. In other network telephony systems, one or more of the digital signals are created by a machine as an original signal. 
         [0004]    Network telephony has grown in popularity, in part because of the advent of a standard protocol, the “Session Initiation Protocol (SIP).” Generally, some SIP systems follow certain protocols to establish and maintain communications links for human-interactive media. In some cases, the human-interactive media is provided by software systems that create synthesized speech for delivery to the human user. In other cases, the human-interactive media is speech generated by another human, digitized and transmitted on the network. Thus, SIP systems support both human/human and human/machine communication. 
         [0005]    These systems, however, suffer from numerous drawbacks with regards to intelligibility and naturalness. For example, humans are generally adept at filtering out signal distortion in ordinary face-to-face human/human communication, in part because visual information such as body language provides additional context. Human/human communication is also delay-free, allowing for a natural pace of conversation. 
         [0006]    In human/machine communications, however, signal distortions can cause significant problems in both signal processing and content extraction. For example, unstable connections, suffering from high drop-out, can greatly degrade human/machine communication. Delays in the human/machine communication can also greatly degrade the quality of the interaction. Keeping the initial setup period short is key to a natural user experience, requiring efficient connection setup of a link between the human interface device and the machine hosting the target application for human/machine communication. 
         [0007]    In typical prior art systems, the machine-side system sets up a communications link for human-interactive media by “polling by options.” In the polling by options approach, a central machine sends options (e.g., available, busy, etc.) to the machines that host the target applications. These machine states are probed by the central machine at regular intervals, which increases network traffic and introduces lag time on the network. Further, periodic polling does not always result in up-to-date machine state information. And, generally, up-to-date machine state information is needed to quickly and effectively select appropriate resources to respond to a request. Without up-to-date machine state information, the call setup process for a human/machine communications link can be so untimely as to cause unsatisfactory connection times and/or increased signal distortion, leading to impaired communications. 
       SUMMARY 
       [0008]    In a general aspect of the invention, a method is provided for establishing a communications link for human-interactive media. The method includes receiving a call request from a requestor. The communication system has a Connection Proxy (CP) and a plurality of Endpoints (EPs). The CP establishes a communications link between an EP and a call provider. The CP has an endpoint state table (EST) configured to store state information associated with each of the plurality of endpoints (EPs). Each EP provides one or more application services to a requestor over a communications link. The method includes selecting a selected EP from the plurality of EPs using the EST based on the call request. The method includes transmitting a first link request to the selected EP. The method includes receiving a first response from the selected EP, the first response indicating whether the EP is configured to establish the requested communications link. The method includes modifying the EST to incorporate the first response. The method includes, in the event the first response indicates that the selected EP is configured to accept the requested communications link, establishing the requested communications link between the selected EP and the call provider, the requested communications link not including the CP. 
         [0009]    In a preferred embodiment, in the event the first response indicates that the selected EP is not configured to establish the requested communications link, the method includes selecting an alternate EP from the plurality of EPs using the EST. The method includes transmitting a second link request to the alternate EP. The method includes receiving a second response from the alternate EP, indicating whether the EP is configured to establish the requested communications link. The method includes modifying the EST to incorporate the second response. The method includes, in the event the second response indicates that the alternate EP is configured to establish the requested communications link, establishing the requested communications link between the alternate EP and the call provider. 
         [0010]    In another preferred embodiment, each EP is configured to retain a current application configuration for a period of time after termination of a communications link. In another preferred embodiment, the first response includes state information associated with the selected EP. In another preferred embodiment, the call request identifies a selected application service from a plurality of application services provided by one or more of the plurality of EPs. 
         [0011]    In yet another preferred embodiment, the state information includes a last known application configuration for each EP. In another preferred embodiment, the state information includes a last known application configuration for each EP, and the selection of a selected EP is based on the last known application configuration for the selected EP. In another preferred embodiment, the CP selects from a subset of EPs whose state information in the EST meets pre-determined criteria, and the pre-determined criteria includes a time since the last received response from the EP. 
         [0012]    In still another preferred embodiment, the CP is one of a plurality of CPs. In another preferred embodiment, the CP is one of a plurality of CPs, and each of the plurality CPs have an identical configuration. In another preferred embodiment, the CP is a Session Initiation Protocol (SIP) proxy. In another preferred embodiment, the plurality of EPs is a Session Initiation Protocol (SIP) enabled call host. In another preferred embodiment, the plurality of EPs sends state information to the CP at a pre-determined interval. 
         [0013]    In another preferred embodiment, the method includes, in the event the first response indicates that the selected EP is configuring itself to accept the requested communications link, but is not yet ready to accept the requested communications link, waiting for a second response from the selected EP. The method includes, in the event the second response indicates that the selected EP is configured to accept the requested communications link, establishing the requested communications link between the selected EP and the call provider, the requested communications link not including the CP. 
         [0014]    In yet another preferred embodiment, the selected EP includes a first task server, a first symbolic server, and a first acoustic server, the first task server being configured to provide application services. In another preferred embodiment, the requestor is a call provider external to the communication system. In another preferred embodiment, the requestor is a Job Initiation Service (JIS) internal to the communication system. 
         [0015]    In another general aspect of the invention, a system is provided for establishing a communications link for human-interactive media. The system includes an interface configured to couple to an internal system and an external system, the external system including at least one call provider. The interface is configured to receive a call request from a requestor, the call request proposing to establish a requested communications link between the call provider and a call host. The system includes an internal system coupled to the interface, the internal system including at least one Connection Proxy (CP) and a plurality of Endpoints (EPs) acting as call hosts. The at least one CP having an Endpoint State Table (EST), the EST being configured to store state information associated with each of a plurality of EPs. The at least one CP is configured to receive the call request from the interface, to select a selected EP from the plurality of EPs using the EST, and to transmit a first link request to the selected EP. Each EP is configured to provide one or more application services, to receive a first link request from the at least one CP, and to transmit a response indicating whether the EP is configured to establish the requested communications link. The at least one CP is further configured to modify the EST to incorporate the response and, in the event the response indicates that the selected EP is configured to establish the requested communications link, to establish the requested communications link between the selected EP and the call provider, the established communications link not including the at least one CP. 
         [0016]    In a preferred embodiment, the at least one CP is further configured to select an alternate EP from the plurality of EPs using the EST, in the event the response indicates that the selected EP is not configured to establish the requested communications link. The CP is further configured to transmit a second link request to the alternate EP and to receive a second response from the alternate EP, the second response indicating whether the EP is configured to establish the requested communications link. The CP is further configured to modify the EST to incorporate the second response; and establish the requested communications link between the alternate EP and the call provider, in the event the second response indicates that the alternate EP is configured to establish the requested communications link. 
         [0017]    In yet another preferred embodiment, each EP is further configured to retain a current application configuration for a period of time after termination of a communications link. In another preferred embodiment, the response includes state information associated with the selected EP. In another preferred embodiment, the request identifies a selected application service from a plurality of application services provided by one or more of the plurality of EPs. 
         [0018]    In still another preferred embodiment, the state information includes a last known application configuration for each EP. In another preferred embodiment, the state information includes a last known application configuration for each EP, and the selecting a selected EP is based on the last known application configuration for the selected EP. In another preferred embodiment, the at least one CP is further configured to select a selected EP from a subset of EPs whose state information in the EST meets pre-determined criteria, and the pre-determined criteria includes a time since the last received response from the EP. 
         [0019]    In yet another preferred embodiment, each of the at least one CPs has an identical configuration. In another preferred embodiment, the at least one CP is a Session Initiation Protocol (SIP) proxy. In another preferred embodiment, each of the plurality of EPs is a Session Initiation Protocol (SIP) enabled call host. In another preferred embodiment, each of the plurality of EPs is further configured to send state information to the at least one CP at a pre-determined interval. 
         [0020]    In another preferred embodiment, the at least one CP is further configured to in the event the first response indicates that the selected EP is configuring itself to accept the requested communications link, but is not yet ready to accept the requested communications link, wait for a second response from the selected EP. The at least one CP is further configured to, in the event the second response indicates that the selected EP is configured to accept the requested communications link, establish the requested communications link between the selected EP and the call provider, the requested communications link not including the at least one CP. 
         [0021]    In still another preferred embodiment, the selected EP includes a first task server, a first symbolic server, and a first acoustic server, the first task server being configured to provide application services. In another preferred embodiment, the requestor is a call provider external to the communication system. In another preferred embodiment, the requestor is a Job Initiation Service (JIS) internal to the communication system. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWING 
         [0022]    The invention will be more fully understood from the following detailed description, in conjunction with the following figures, wherein: 
           [0023]      FIG. 1  is a block diagram showing an embodiment of the invention for communicating human-interactive media via the Internet to and from a plurality of call providers; 
           [0024]      FIG. 2  is a protocol diagram showing a protocol for establishing a communications link for human-interactive media; and 
           [0025]      FIG. 3  is a high-level flow diagram depicting logical operational steps of a method for establishing a communications link for communicating human-interactive media. 
       
    
    
     DETAILED DESCRIPTION 
       [0026]      FIG. 1  is a high-level block diagram illustrating an embodiment of the invention connected to a network  112  so as to provide communication between the invention and a plurality of call providers  114 . External network  100  includes network  112  and a plurality of call providers coupled to network  112 . Network  112  can be the Internet, a wide-area network, a public switched telephone network, or any other suitable network configured to support internet protocol (IP) based switching. Call providers  114  are each otherwise conventional call providers, configured to provide voice-over-IP (VoIP) services to an end user (not shown). 
         [0027]    System  102  includes a plurality of network interfaces  110 , each coupled to network  112 . Generally, each network interface  110  is an otherwise conventional network interface, configured to route IP packets between network  112  and various components of system  102 , as described in more detail below. Specifically, each interface  110  couples to one or more Connection Proxies (CP)  120 , one or more EndPoints (EP)  130 , and at least one Job Initiation Service (JIS)  140 . 
         [0028]    Generally, each CP  120  establishes end-to-end communication links between a call provider  114  and a particular EP  130 , as described in more detail below. In the illustrated embodiment, each CP  120  operates independently. In one embodiment, each CP  120  is configured to be added to or removed from system  102  without causing performance disruptions that significantly affect the system. As described in more detail below with reference to  FIG. 2 , in one embodiment, each CP  120  maintains an independent pool of EP state information (EST)  220  for a group of EPs  130 . 
         [0029]    In one embodiment, CP  120  uses the EP state information to select an EP  130  in the communication link setup process, described in more detail below. During operation of system  102 , CP  120  continually updates the EP state information according to the most recent response by the EP  130  to any request, which decreases the length of time required to select an appropriate EP  130  for a requested communication link. In the illustrated embodiment, once CP  120  successfully selects an EP  130 , and a connection between the selected EP  130  and call provider  114  is established, the CP  120  does not participate in the subsequent communication between the EP  130  and call provider  114  for that session. 
         [0030]    Generally, each EP  130  is an otherwise conventional, SIP-enabled, computer-based, or server-based, host, and is configured to provide application service resources. In one embodiment, an application service resource is any suitable resource configured to deliver or support human-interactive media. In one embodiment, each EP  130  is state-full and dedicated/attached for interaction with a human. In one embodiment, each EP  130  is configured to decide whether to accept or reject a SIP call service request from a CP  120  and to respond to the CP  120  accordingly. The EP  130  transmits a positive final response when the EP  130  is ready to immediately provide the application service resource. In the illustrated embodiment, each EP  130  operates independently, and individual EPs can be added or removed or otherwise altered without substantial performance degradation of the operation of the other system components. 
         [0031]    In the illustrated embodiment, each CP  120  couples to a particular subset of all of the EPs  130  in system  102 . In one embodiment, each CP  120  couples to every EP  130  in system  102 . In one embodiment, each CP  120  couples to a predetermined subset of all of the EPs  130  in system  102 . In one embodiment, each CP  120  couples to a dynamically assigned subset of all of the EPs  130  in system  102 . In one embodiment, each CP  120  couples to an exclusive subset of all of the EPs  130  in system  102 . In an alternate embodiment, each CP  120  couples to a subset of all of the EPs  130  in system  102 , and that subset includes one or more EPs  130  also coupled to another CP  120 . 
         [0032]    Similarly, in the illustrated embodiment, each interface  110  couples to a particular subset of CPs  120  of all the CPs  120  in system  102 . In one embodiment, each interface  110  couples to every CP  120  in system  102 . In one embodiment, each interface  110  couples to a predetermined subset of all of the CPs  120  in system  102 . In one embodiment, each interface  110  couples to a dynamically assigned subset of all of the CPs  120  in system  102 . In one embodiment, each interface  110  couples to an exclusive subset of all of the CPs  120  in system  102 . In an alternate embodiment, each interface  110  couples to a subset of all of the CPs  120  in system  102 , and that subset includes one or more CPs  120  also coupled to another interface  110 . 
         [0033]    Very generally, system  102  receives a call request, requesting establishment of a communications link between system  102  and a target call provider  114 . The request includes certain link characteristics, such as support for a particular application service resource. CP  120  selects an EP  130  to service the request, and if EP  130  accepts the request, establishes a communications link between the selected EP  130  and the target call provider  114 . Having established the communications link, EP  130  and call provider  114  communicate “directly”, that is, without including CP  120  in the communication path. 
         [0034]    Generally, an in-bound request (provider-to-endpoint) is initiated by a call provider  114  sending a request to a CP  120  (through network  112  and interface  110 ). Similarly, an out-bound request (endpoint-to-provider) is initiated by Job Initiation Service (JIS)  140  sending a request to a CP  120  (through interface  110 , or directly). In one embodiment, an out-bound request includes a ‘refer-to’ address designating a target call provider  114 . Generally, the components of system  102  operate as described in more detail with respect to  FIG. 2 . 
         [0035]      FIG. 2  is a protocol diagram illustrating a protocol  200  for establishing a communications link for human-interactive media in accordance with one embodiment. Specifically,  FIG. 2  illustrated the interaction of interface  110 , call provider  114 , CP  120 , EP  130 , and JIS  140  as a communications link is established between EP  130  and call provider  114 . 
         [0036]    As indicated at ( 1 ), call provider  114  initiates an SIP call request, sending a call request to interface  110 . Alternately, as indicated at ( 1 ′), JIS  140  initiates an SIP call request, sending a call request to interface  110 . In both cases, the call request identifies a target call provider  114  and a type of application service resource requested. As indicated at ( 2 ), interface  110  passes the call request to a CP  120 . 
         [0037]    In the illustrated embodiment, CP  120  includes an Endpoint State Table (EST)  220 . Generally, EST  220  is a collection of state information regarding a subset of EPs  130 . In one embodiment, state information includes the status of an EP  130 , including the last-known readiness (e.g., available, busy, etc.), the last-known-application service configuration, the connectivity status (e.g., offline, online), and/or any other suitable information regarding the operational status of an EP  130 . In one embodiment, EST  220  includes state information for each EP  130  of the system  102 . In an alternate embodiment, EST  220  includes state information for a subset of EPs  130  of the system  102 . 
         [0038]    In one embodiment, on startup of system  102 , EST  220  is cleared. In an alternate embodiment, CP  120  receives currently available, previously configured Endpoint state information and updates EST  220  to include the received Endpoint state information. In an alternate embodiment, CP  120  receives a pre-configured EST  220 . 
         [0039]    As indicated at ( 3 ), CP  120  selects an EP  130  to service the call request. In one embodiment, CP  120  selects the EP  130  by referring to EST  220 . In one embodiment, CP  120  searches EST  220  for an EP  130  that best matches the call request, according to the state information known at the time of the request. In one embodiment, CP  120  specifies parameters indicating the type of service being requested in the call request and consults EST  220  to select an appropriate EP  130  for the request based on the request parameters and the Endpoint state information. As indicated at ( 4 ), in one embodiment, CP  120  sends the call request, along with the specified parameters, to the selected EP  130 . 
         [0040]    In the illustrated embodiment, EP  130  includes a call host  230 , a task server  240 , a symbolic server  242 , and an acoustic server  244 . Generally, call host  230  is an otherwise conventional call host, configured to support lines of service for human-interactive media. Generally, call host  230  is configured to control operation of task server  240 , symbolic server  242 , and acoustic server  244 . Generally, task server  240 , symbolic server  242 , and acoustic server  244  are otherwise conventional human-interactive media servers and are collectively configured to provide application service resources. 
         [0041]    In response to a call request, EP  130  determines whether to accept the call request. In one embodiment, EP  130  determines whether to accept the call request based on its own acceptance criteria. In one embodiment, the acceptance criteria include the ability of EP  130  to service additional application service requests. In one embodiment, the acceptance criteria include the ability of EP  130  to create an appropriate application to service the call request, the ability of EP  130  to accommodate necessary request parameters, and other suitable criteria. 
         [0042]    As indicated at ( 5 ), EP  130  sends a response to CP  120 , based on the determination of whether to accept the call request. In one embodiment, allowed responses are grouped into classes designated as 100, 200, 300, 400, 500, and 600. In one embodiment, a 200-class response indicates that EP  130  accepts the call request. In one embodiment, a 400-, 500-, or 600-class response is an error response (e.g., busy, configuration error, etc.), and indicates that EP  130  rejects the call request for the reason indicated by the class. In one embodiment, a 100-class response is a provisional response, indicating that EP  130  is preparing to accept the call request, but is not presently ready. 
         [0043]    As indicated at ( 6 ), CP  120  updates EST  220  based on the response from the EP. In one embodiment, CP  120  updates EST  220  using only information carried in the response code itself. In an alternate embodiment, CP  120  updates EST  220  using additional information in the response, including the headers and other suitable information. 
         [0044]    In the event the selected EP  130  rejects the call request, or if CP  120  does not receive a response within the time-out period, CP  120  updates the EST  220  to indicate that information. Additionally, in one embodiment, CP  120  selects another candidate EP  130  to service the call request. In one embodiment, CP  120  rejects the call quests after a pre-determined number of failed attempts to assign an EP  130 . 
         [0045]    In one embodiment, if the response is a 100-class provisional response, CP  120  is configured to wait while the selected EP  130  configures itself to accept the request. In one embodiment, CP  120  extends the response time-out period in response to a 100-class response. In an alternate embodiment, CP  120  waits a pre-determined period of time before selecting an alternate EP  130 . In one embodiment, the time-out for responses other than 100-class responses is 2 seconds. In one embodiment, the time-out period is configured to allow CP  120  to bypass non-responding EPs  130 , thereby speeding up the Endpoint selection process. 
         [0046]    In one embodiment, if the response is a 200-class acceptance response, or otherwise indicates that the selected EP  130  accepts the call request, CP  120  establishes the communications link on behalf of the selected EP  130 . As indicated at ( 7 ), EP  130  communicates along a communications link with interface  110 . As indicated at ( 8 ), interface  110  communicates along a communications link with call provider  114 . Specifically, EP  130  provides the requested services to call provider  114  via interface  110 . 
         [0047]    As indicated at ( 7 ), EP  130  communicates with call provider  114  through interface  110 , and not through CP  120 . That is, in one embodiment, CP  120  is only responsible for establishing the communications link, and drops out of the communication messaging path once the call request is accepted and the communications link is established. In one embodiment, CP  120  establishes a direct end-to-end connection between call provider  114  and the selected EP  130 . As such, in one embodiment, CP  120  is not required to maintain a call state or proxy media streams to support the communications link. 
         [0048]    Generally, EP  130  remains in communication with call provider  114  along the established communications link for as long as desired by the parties engaged in the communications. In one embodiment, when the communication ends, EP  130  closes the communications link. In one embodiment, EP  130  maintains its configuration after the communications end. 
         [0049]    For example, in one embodiment, when EP  130  accepts a call request, EP  130  is configured to retain the configuration for a pre-determined period of time after the call ends and the communications link closes. In one embodiment, EP  130  is configured to retain the configuration for a pre-determined period of time after the communications link is established, in support of a “full attention” mode. 
         [0050]    Thus, protocol  200  provides a system configured to establish communications links based on EP state information held by CP  120  in an EST  220 . As described above, systems embodying protocol  200  can be configured to respond quickly and efficiently to call requests, by identifying candidate EPs  130  through information maintained in EST  220 . Where a particular EP  130  cannot service a call request, CP  120  selects alternative EPs  130 . 
         [0051]      FIG. 3  is a flow diagram depicting logical operational steps of a method for establishing a communications link for communicating human-interactive media. As indicated at block  305 , the process begins and CP  120  receives a call request from a requestor. As described above, in one embodiment, the call request initiates at a call provider  114 . In an alternate embodiment, the call request initiates at JIS  140 . 
         [0052]    Next, as indicated at block  310 , CP  120  selects a candidate EP  130  using EST  220 . Next, as indicated at block  315 , CP  120  forwards the call request to the selected EP  130 . As described above, in one embodiment, CP  120  includes additional parameters. 
         [0053]    Next, as indicated at block  320 , CP  120  updates EST  220  based on the response from the selected EP  130 . As described above, in one embodiment, CP  120  is configured to time-out after a pre-determined period of time, during which CP  120  does not receive a response from the selected EP  130 . In one embodiment, CP  120  is configured to recognize a time-out as a rejection. 
         [0054]    Next, as indicated at decisional block  325 , CP  120  determines whether the selected EP  130  is available to service the call request. As described above, CP  120  determines whether the selected EP  130  is available to service the call request based on the response (or time-out) received from the selected EP  130 . If the selected EP  130  is not available to service the call request, the process continues along the NO branch, returning to block  310 , wherein CP  120  selects an alternate EP  130 . 
         [0055]    If at block  325  the selected EP  130  is available to service the call request, the process continues along the YES branch to block  330 . As indicated at block  330 , CP  120  establishes the requested communications link between the selected EP  130  and call provider  114 , and the process ends. As described above, the established communications link does not include CP  120 . 
         [0056]    Thus, as described above, the embodiments disclosed herein exploit traffic behavior in systems with many Endpoint resources. As described above, the CPs  120  maintain state information on the Endpoint resources. In large systems, with many EPs  130 , multiple service requests are present in the system simultaneously at different stages in the request process, causing EP  130  states to change very rapidly. But because the CPs  120  update the state information according to the responses received from the EPs  130 , at any given moment the state information reflects the most recent known state of each Endpoint resource, from the perspective of that CP  120 . As such, the up-to-date state information stored in EST  220  increases the speed at which CP  120  identifies the best-suited EP  130  to be selected for future call requests, yielding an substantially faster connection time. 
         [0057]    So configured, system  102  improves maintenance and reparability for highly intensive human-interactive systems. Additionally, because each EP  130  decides independently whether it is in service or available, an EP  130  can be taken out of service for maintenance or repair without disturbing other EPs  130  or other system components. Additionally, as many EPs  130  are available at any one time, idle EPs  130  ones can be reconfigured to any particular human interaction application or application service resource at any time. Furthermore, in one embodiment, system  102  is configured for high scalability for highly intensive human interactive systems. That is, additional EPs  130  can be brought online without requiring system shut down or interruption of service. Additionally, in one embodiment, system  102  is configured for high redundancy, with multiple EPs  130 . In one embodiment, system  102  is configured to avoid a single point of failure, with two or more components of each type always available. 
         [0058]    Other modifications and implementations will occur to those skilled in the art without departing from the spirit and scope of the invention as claimed. Accordingly, the above description is not intended to limit the invention except as indicated in the following claims.