SYSTEM AND METHOD FOR BOT SELECTION CALIBRATION IN TWO-WAY COMMUNICATION - Patent application

JP7639148B2Active Publication Date: 2025-03-04LIVEPERSON INC
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
JP2023539799
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2020-12-29
Filing Date
2021-12-28
Publication Date
2025-03-04
Estimated Expiration
2041-12-28

Smart Images

  • Figure 0007639148000001
    Figure 0007639148000001
  • Figure 0007639148000002
    Figure 0007639148000002
  • Figure 0007639148000003
    Figure 0007639148000003
Patent Text Reader

Abstract

The present disclosure generally relates to facilitating two-way communication. One example involves receiving input data as part of a two-way communication session associated with multiple bots and accessing reliability scores from the bots. A bot score mapper is then used to generate mapped scores for the multiple bots from the reliability scores. Using the mapped scores, a selected bot is identified and the two-way communication session is facilitated using the selected bot. Additionally, techniques are provided for using feedback and machine learning systems to track the performance of the selected bot and dynamically updated mapping adjustments in the bot score mapper.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS

[0001] This patent application claims the benefit of priority to U.S. Provisional Patent Application No. 63 / 131,434, filed December 29, 2020, the disclosure of which is incorporated herein by reference.

[0002]

[0002] The present disclosure relates generally to facilitating interactive communications. More particularly, techniques are provided for dynamically identifying bots or similar automated support systems to improve content in interactive communications, forwarding messaging between network devices and terminal devices to the bots, and tracking the performance of the bots during automation. [Background technology]

[0003]

[0003] Clients often use telephony and / or network-based chat systems to field communications from users seeking assistance with products or services. Communication systems that support such user interaction may allow users to speak or chat with a live representative of the client. Such communication systems may additionally or alternatively use automated bot systems for two-way interaction with users. Summary of the Invention

[0004]

[0004] The term "embodiment" and similar terms are intended to broadly refer to all of the subject matter of this disclosure and the following claims. Statements containing these terms should be understood not to limit the subject matter described herein or to limit the meaning or scope of the following claims. The embodiments of the disclosure encompassed herein are defined by the following claims, not the Summary of the Invention. The Summary of the Invention is a high-level overview of various aspects of the disclosure and introduces some of the concepts that are further described in the Detailed Description section below. The Summary of the Invention is not intended to identify key or essential features of the claimed subject matter, nor is it intended to be used independently to determine the scope of the claimed subject matter. The subject matter should be understood by reference to the entire specification of this disclosure, any or all drawings, and appropriate portions of each claim.

[0005]

[0005] The examples described herein relate to communication systems configured to provide information to users through assistance computation-based systems, sometimes referred to as "bots." Such systems may be configured to provide assistance and facilitate two-way communication for a wide variety of user queries. Given that the nature of user queries covers a wide range of possible scenarios, categorizing the user intent associated with the system communication and identifying an appropriate system for response is a major problem in providing a positive user experience.

[0006]

[0006] A communication system may be associated with many different bots to assist with a wide variety of user queries. Because individual bots are often associated with specific user intents or tasks, one aspect of a positive user experience is to identify useful or effective bots in response to user queries. One way that bots operate in this context is for them to accept input data (e.g., text from a user query) and respond with a confidence score. In a system with many bots (e.g., tens, hundreds, thousands, or more bots), the confidence scores returned by the bots are not correlated or standardized. Furthermore, feedback systems that attempt to correct or update bots may have unintended effects on the behavior of the bots.

[0007]

[0007] The examples described herein use a calibration system that can use locally relevant feedback to adjust calibration scores for bots in response to user input data. The adjustment can act as a mapping to correct the calibration scores for locally relevant data and dynamically select bots using the adjusted mapped scores from the bot-provided calibration scores. The mapping or calibration system can provide improvements to the accuracy of the bot selection process while avoiding the complexities associated with modifying the bots themselves. The mapping process instead acts as an overlay or independent modification to the calibration scores to efficiently improve bot selection. Independence from bot behavior can further enable recognition of bot modifications and incorporation of real-time feedback into both bot training and bot usage to appropriately weigh the impact of feedback on the mapping system, and can enable efficient use of computing resources to incorporate feedback into bot selection. Additional examples and variations are possible as described herein and throughout the specification.

[0008] Some embodiments of the present disclosure include a system, which may include one or more data processors and a non-transitory computer-readable storage medium containing instructions that, when executed on the one or more data processors, cause the one or more data processors to perform the methods described above and herein.

[0009]

[0009] Some embodiments of the present disclosure include a computer program product tangibly embodied in a non-transitory machine-readable storage medium, comprising instructions configured to cause a data processing device to perform the methods described above and herein.

[0010]

[0010] The present disclosure is described with reference to the accompanying drawings. [Brief description of the drawings]

[0011] [Figure 1]

[0011] FIG. 1 is a block diagram of one embodiment of a network interaction system that may be used in accordance with examples described herein. [Diagram 2]

[0012] 4 is a block diagram of another embodiment of a network interaction system that may be used in accordance with examples described herein. [Figure 3A]

[0013] 11 is a block diagram of another embodiment of a network interaction system including a connection management system that may be used in accordance with examples described herein. [Figure 3B] 11 is a block diagram of another embodiment of a network interaction system including a connection management system that may be used in accordance with examples described herein. [Figure 3C] 11 is a block diagram of another embodiment of a network interaction system including a connection management system that may be used in accordance with examples described herein. [Figure 4]

[0014] 1 illustrates a representation of a protocol stack mapping of the operation of a connectivity component that may be used in accordance with examples described herein. [Diagram 5]

[0015] 1 illustrates a multi-device communication switching system that may be used in accordance with examples described herein. [Figure 6]

[0016] 1 is a block diagram of one embodiment of a connection management system that may be used in accordance with examples described herein. [Figure 7]

[0017] A block diagram of a network environment for dynamically switching between a bot and a terminal device during a communication session, according to examples described herein. [Figure 8]

[0018] 1 is a block diagram illustrating communications that may be used in accordance with examples described herein. [Figure 9]

[0019] FIG. 1 is a block diagram illustrating a network environment for feedback using machine learning techniques, according to examples described herein. [Figure 10]

[0020] 1 illustrates aspects of a two-way communication session and associated input data, according to examples described herein. [Figure 11]

[0021] A diagram illustrating aspects of two-way communication facilitated using selected bots, according to examples described herein. [Figure 12]

[0022] FIG. 1 illustrates two-way communication facilitated using natural language understanding (NLU), bots, and a feedback system, according to examples described herein. [Figure 13]

[0023] 11 is a flowchart illustrating aspects of bot selection calibration, according to certain examples described herein. [Figure 14]

[0024] 1 is a flowchart of a method for bot selection calibration, according to examples described herein. [Figure 15]

[0025] A diagram illustrating an example of a computing device that can be used to implement a device in a two-way communication system with bot selection calibration, according to examples described herein. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0012]

[0026] In the accompanying figures, similar components and / or features may have the same reference label. Furthermore, various components of the same type may be distinguished by following the reference label with a dash and a second label that distinguishes between the similar components. If only a first reference label is used in this specification, the description is applicable to any one of the similar components having the same first reference label, regardless of the second reference label.

[0013]

[0027] The following description merely provides a preferred example of embodiment(s) and is not intended to limit the scope, applicability, or configuration of the present disclosure. Instead, the following description of the preferred example of embodiment(s) provides those skilled in the art with an enabling description for implementing the preferred example of embodiment. It should be understood that various changes may be made in the function and arrangement of elements without departing from the spirit and scope as set forth in the appended claims.

[0014]

[0028] As described above, examples relate to communication systems configured to provide information to users through assistance computation-based systems, sometimes referred to as "bots." When a user (e.g., an individual or customer of a business) contacts or is contacted via the interactive communication system for information related to a client (e.g., a merchant or business providing information or services via the interactive communication system), such a bot may be configured to provide assistance, either in a fully automated manner or by assisting an agent in responding to a wide variety of user inquiries. Given that the nature of user inquiries covers a wide range of possible scenarios, categorizing the user intent associated with the system communication and identifying an appropriate system for response is a major issue in providing a positive experience to users.

[0015]

[0029] A communication system may be associated with many different bots to assist with a wide variety of user inquiries. Individual bots are often associated with customized tasks and may use natural language understanding (NLU) to provide a positive user experience by identifying whether the bot is relevant to the user inquiry. One way that bots operate in this context is that they accept input data (e.g., text from a user query), process the data using an NLU system, and respond with a confidence score. In a system with many bots (e.g., tens, hundreds, thousands, or more bots), the confidence scores returned by the bots are not correlated or standardized. Furthermore, bots may be trained on data that has different characteristics than local data associated with a merchant, a particular implementation, or a particular set of customers. Thus, the relevance of a bot determined based on general training data may differ from the bot's relevance to a particular local implementation, with a different "correct" confidence score associated with it.

[0016]

[0030] Examples described herein use a mapping or calibration system to modify bot-generated confidence scores. Locally relevant feedback may be used to adjust the calibration scores for the bot. The adjustments can act as a mapping to correct the calibration scores for locally relevant data and dynamically select bots using the mapped scores adjusted from the bot-provided calibration scores. The mapping or calibration system can provide improvements to the accuracy of the bot selection process while avoiding the complexities associated with modifying the bots themselves. The mapping process instead acts as an overlay or independent modification to the calibration scores to efficiently improve bot selection. Independence from bot behavior can further enable awareness of bot modifications and incorporation of real-time feedback into both bot training and bot usage to appropriately determine the impact of feedback on the mapping system, and can enable efficient use of computing resources to incorporate feedback into bot selection.

[0017]

[0031] Some examples may further track local feedback to seek a locally relevant reliability score that differs from the bot's natural reliability score using an adaptive feedback mechanism that adjusts the amount of adjustment made in each feedback loop to efficiently find a locally relevant reliability score, and to track changes in the score over time. For example, initial feedback may be used to make large calibration adjustments, and the size of the calibration adjustments may be reduced over time as additional local feedback is received. Additionally, in some examples, the mapping system may identify when a bot has been modified or revised and reset the feedback system based on this identification. For example, if a bot begins to consistently return different reliability scores in response to the same input, the calibration system may reset the feedback system. In some examples, bot revisions may be identified from other bot-provided data (e.g., reports on bot revisions, changes in input commands, etc.).

[0018]

[0032] 1 illustrates a block diagram of one embodiment of a network interaction system 100 that implements and supports certain embodiments and features described herein. Some embodiments relate to establishing a connection channel between a network device 105 (which may be operated by a user 110) and a terminal device 115 (which may be operated by an agent 120). In some embodiments, the network interaction system 100 may include a client device 130 associated with a client 125.

[0019]

[0033] In some embodiments, the user 110 may be an individual browsing a website or accessing an online service provided by the remote server 140. The client 125 may be an entity that provides, operates, or executes the website or online service, or an individual employed or assigned by such an entity to perform tasks available to the client 125 as described herein. The agent 120 may be an individual, such as a support agent, tasked with providing support or information regarding the website or online service to the user 110. Of a large number of agents, a subset of agents may be appropriate for providing support or information to a particular client 125. The agent 120 may or may not be affiliated with the client 125. Each agent may be associated with one or more clients 125. In some non-limiting examples, the user 110 may be an individual shopping at an online store from a personal computing device, the client 125 may be a company that sells products online, and the agent 120 may be a representative employed by the company. In various embodiments, the user 110, the client 125, and the agent 120 may be other individuals or entities.

[0020]

[0034] While FIG. 1 shows only a single network device 105, terminal device 115, and client device 130, the dialogue system 100 can include multiple or many (e.g., tens, hundreds, or thousands) of each of one or more of these types of devices. Similarly, while FIG. 1 shows only a single user 110, agent 120, and client 125, the dialogue system 100 can include multiple or many of each of one or more of such entities. Thus, it may be necessary to determine which terminal device should be selected to communicate with a given network device. To further complicate things, a remote server 140 may also be configured to receive and respond to select network device communications. Furthermore, any device that implements bot calibration or bot selection can perform calibration and associated bot selection both dynamically and in real-time, as well as simultaneously as a parallel process with many bot systems. Such simultaneous bot operation can involve a device or system running many bots at the same time, with feedback, calibration, and updates to the bot selection system being done simultaneously (e.g., in parallel) for bots executed by a single system. A bot may, for example, be operating to communicate with a customer at the same time that another customer is providing feedback associated with the bot from a separate communication, and a third bot may be initiated using updated bot calibration metrics at the same time that actions associated with those other two bots, or any number of other bots, are occurring.

[0021]

[0035] The connection management system 150 can facilitate strategic routing of communications. A communication can include a message with content (e.g., defined based on input from an entity, such as typed or spoken input). A communication can also include additional data, such as data about the sending device (e.g., IP address, account identifier, device type and / or operating system), destination address, client identifier, identifier of a web page or web page element (e.g., a web page or web page element that is visited when the communication is generated or otherwise associated with the communication) or online history data, time (e.g., time and / or date), and / or destination address. Other information can be included in a communication. In some cases, the connection management system 150 routes the entire communication to another device. In some cases, the connection management system 150 modifies the communication (e.g., based on the initial communication) or generates a new communication. The new or revised communication may include at least some (or all) of the message (or a processed version of it), additional data (e.g., relating to the sending device, web page or online history and / or time), and / or other data identified by connection management system 150 (e.g., a particular account identifier or account data associated with the device). The new or revised communication may include other information as well.

[0022]

[0036] Part of the strategic routing facilitation can include establishing, updating and using one or more connection channels between the network device 105 and one or more terminal devices 115. For example, upon receiving a communication from the network device 105, the connection management system 150 can initially estimate which client (if any) the communication corresponds to. Upon identifying the client, the connection management system 150 can identify the terminal device 115 associated with the client for communication with the network device 105. In some instances, the identification can include evaluating a profile of each of a plurality of agents (or experts or representatives), each agent (e.g., agent 120) in the plurality of agents being associated with a terminal device (e.g., terminal device 115). The evaluation can relate to content in the network device message. The identification of the terminal device 115 can include, for example, techniques described in U.S. Application No. 12 / 725,799, filed March 17, 2010, which is incorporated herein by reference in its entirety for all purposes.

[0023]

[0037] In some cases, the connection management system 150 can determine whether any connection channel is established between the network device 105 and a terminal device associated with the client (or remote server 140), and if so, whether such a channel should be used to exchange a series of communications including that communication.

[0024]

[0038] Upon selecting a terminal device 115 for communicating with the network device 105, the connection management system 150 can establish a connection channel between the network device 105 and the terminal device 115. In some instances, the connection management system 150 can send a message to the selected terminal device 115. The message may request acceptance of a proposed assignment for communicating with the network device 105 or identify that such an assignment has been generated. The message may include information about the network device 105 (e.g., IP address, device type, and / or operating system), information about the associated user 110 (e.g., language spoken, duration of interacting with the client, skill level, emotion, and / or topic preferences), the received communication, code for generating and sending the communication to the network device 105 (e.g., a clickable hyperlink), and / or instructions for generating and sending the communication to the network device 105.

[0025]

[0039] In one instance, communications between network devices 105 and terminal devices 115 may be routed through a connection management system 150. Such a configuration may enable the connection management system 150 to monitor communication exchanges and detect problems (e.g., rule-based defined), such as unresponsiveness of either devices or extended latency. Additionally, such a configuration may facilitate selective or complete storage of communications that may be used later, for example, to promote specific post-communication targets, to assess the quality of the communication exchange, and / or to support learning to update or generate routing rules.

[0026]

[0040] In some embodiments, the connection management system 150 can monitor communication exchanges in real time and perform automated actions (e.g., rule-based actions) based on the live communication. For example, when the connection management system 150 determines that a communication is about a particular item (e.g., a product), the connection management system 150 can automatically send an additional message to the terminal device 115 containing additional information about the item (e.g., the amount of the item available, links to supporting documentation related to the item, or other information about the item or similar items).

[0027]

[0041] In one instance, a designated terminal device 115 may communicate with the network device 105 without relaying the communications through the connection management system 150. One or both devices 105, 115 may (or may not) report certain communication metrics or content to the connection management system 150 to facilitate communication monitoring and / or data storage.

[0028]

[0042] As described above, the connection management system 150 may route the selected communication to the remote server 140. The remote server 140 may be configured to provide information in a predetermined manner. For example, the remote server 140 may access one or more defined text passages, audio recordings, and / or files for transmission in response to the communication. The remote server 140 may select a particular text passage, recording, or file based on, for example, an analysis (e.g., a semantic or mapping analysis) of the received communication.

[0029]

[0043] Routing and / or other decisions or processes implemented in the connection management system 150 may be implemented based on rules and / or data defined or provided at least in part by one or more client devices 130. For example, the client device 130 may send a communication identifying agent prioritization, terminal device type, and / or topic / skill matching. As another example, the client device 130 may identify one or more weights to be applied to various variables (e.g., language suitability, expected response time, device type and capabilities, and / or terminal device load balancing) that potentially affect the routing decision. It will be appreciated that which terminal devices and / or agents should be associated with a client may be dynamic. A communication from the client device 130 and / or terminal device 115 may provide information indicating that a given terminal device and / or agent should be added or removed as associated with the client. For example, the client device 130 may send a communication with an IP address and an indication as to whether a terminal device with that address should be added or removed from a list identifying terminal devices associated with the client.

[0030]

[0044] Each communication (e.g., between devices, between devices and the connection management system 150, between the remote server 140 and the connection management system 150, or between the remote server 140 and a device) may take place over one or more networks 170. Any combination of open or closed networks may be included in the one or more networks 170. Examples of suitable networks include the Internet, a personal area network, a local area network (LAN), a wide area network (WAN), or a wireless local area network (WLAN). Other networks may also be suitable. The one or more networks 170 may be fully embedded within or may include an intranet, an extranet, or a combination thereof. In some cases, a network in the one or more networks 170 includes a short-range communication channel, such as a Bluetooth® or Bluetooth Low Energy channel. In an embodiment, communication between two or more systems and / or devices may be achieved by a secure communication protocol, such as Secure Sockets Layer (SSL) or Transport Layer Security (TLS). Further, the data and / or transaction details may be encrypted based on any convenient, known, or to be developed scheme, such as, but not limited to, Data Encryption Standard (DES), Triple DES, Rivest-Shamir-Adelman Encryption (RSA), Blowfish encryption, Advanced Encryption Standard (AES), CAST-128, CAST-256, Decorrelated Fast Cipher (DFC), Tiny Encryption Algorithm (TEA), Extended TEA (XTEA), Correction Block TEA (XXTEA), and / or RC5.

[0031]

[0045] The network devices 105, the terminal devices 115 and / or the client devices 130 may include, for example, portable electronic devices (e.g., smartphones, tablets, laptop computers, or smart wearable devices) or non-portable electronic devices (e.g., one or more desktop computers, smart appliances, servers, and / or processors). The connection management system 150 may be stored separately from the network, terminal and client devices, or may be part of one or more such devices (e.g., via installation of an application on the device). The remote server 140 may be stored separately from each device and the connection management system 150, and / or may be part of another device or system. Although each device, server and system in FIG. 1 is shown as a single device, it will be appreciated that multiple devices may be used instead. For example, a set of network devices may be used to transmit various communications from a single user, or the remote server 140 may include a server stack.

[0032]

[0046] Software agents or applications may be installed and / or executable on the illustrated devices, systems, or servers. In one instance, the software agents or applications are configured to enable the various illustrated elements to work in a complementary manner. For example, a software agent on a device may be configured to collect and send data regarding device usage to a separate connection management system, and a software application on the separate connection management system may be configured to receive and process that data.

[0033]

[0047] Figure 2 illustrates a block diagram of another embodiment of a network interaction system 200. Generally, Figure 2 illustrates various components configured and arranged to enable a network device 205 to communicate with one or more terminal devices 215. The illustrated example includes nine terminal devices 215 contained in three local area networks 235.

[0034]

[0048] In some instances, communications from network device 205 include destination data (e.g., a destination IP address) that indicates at least partially or completely which end device should receive the communication. Network interaction system 200 can include one or more inter-network connectivity components 245 and / or one or more intra-network connectivity components 255 that can process the destination data and facilitate appropriate routing.

[0035]

[0049] Each internetworking component 245 may be connected to multiple networks 235 and may have multiple network cards installed (e.g., each card connected to a different network). For example, an internetworking component 245 may be connected to a wide area network 270 (e.g., the Internet) and to one or more local area networks 235. In the illustrated case, in order for a communication to be transmitted from a network device 205 to any of the terminal devices, in the illustrated system, the communication must be handled by multiple internetworking components 245.

[0036]

[0050] When the network interworking component 245 receives a communication (or a set of packets corresponding to a communication), the network interworking component 245 can determine at least a portion of a route for passing the communication to a network associated with the destination. The route can be determined using a routing table (e.g., stored in the router), which can include one or more routes that are predefined, generated based on an incoming message (e.g., from another router or from another device), or learned.

[0037]

[0051] Examples of interworking components 245 include routers 260 and gateways 265. Interworking components 245 (e.g., gateways 265) may be configured to convert between network systems or protocols. For example, gateways 265 may facilitate communication between Transmission Control Protocol / Internet Protocol (TCP / IP) devices and Internetwork Packet Exchange / Sequenced Packet Exchange (IPX / SPX) devices.

[0038]

[0052] Upon receiving a communication at the local area network 235, further routing may still need to be performed. Such intra-network routing may be performed via intra-network connectivity components 255, such as switches 280 or hubs 285. Each intra-network connectivity component 255 may be connected (e.g., wirelessly or wired, such as via an Ethernet cable) to multiple terminal devices 215. The hubs 285 may be configured to retransmit all received communications to each device to which the hubs 285 are connected. Each terminal device may then evaluate each communication to determine whether the terminal device is a destination device or whether the communication should be ignored. The switches 280 may be configured to selectively direct communications only to the destination terminal devices.

[0039]

[0053] In some instances, the local area network 235 may be divided into multiple segments, each of which may be associated with independent firewalls, security rules, and network protocols. Intra-network connectivity components 255 may be provided within each of one, more than one, or all of the segments to facilitate intra-segment routing. Bridges 290 may be configured to route communications across the segments 275.

[0040]

[0054] To properly route communications across or within a network, various components analyze destination data in the communication. For example, such data may indicate which network the communication should be routed to, which device within the network the communication should be routed to, or which communications should be processed (or, conversely, ignored) by an end device. In some instances, however, it is not immediately clear which end device (or even which network) should participate in a communication from a network device.

[0041]

[0055] To illustrate, a set of terminal devices may be configured to provide similar types of response communications. Thus, it may be expected that a query in communication from a network device may be responded to in a similar manner regardless of which network device the communication is routed to. While this assumption may be true at a high level, various details relating to the terminal devices may result in certain routing being advantageous compared to others. For example, the terminal devices in the set may differ from one another with respect to (for example) which communication channels are supported, geographic and / or network proximity to the network devices, and / or characteristics of associated agents (e.g., knowledge base, experience, language spoken, availability, general personality or sentiment, etc.). Thus, selective routing may facilitate faster responses that respond more accurately and / or completely to network device communications. A complication is that static routing that maps network devices to terminal devices may fail to account for variations in communication topics, channel types, agent availability, etc.

[0042]

[0056] 3A-3C show block diagrams of other embodiments of network interaction systems 300a-c including a connection management system. Each of the illustrated systems 300a-c shows only two local area networks 235 for simplicity, but it will be appreciated that the embodiments can be expanded to increase the number of local area networks. Each of the systems 300A-C includes a connection management system 350 that can identify which terminal devices should communicate with the network device 205, can establish and manage (e.g., maintain or close) connection channels, can determine whether and when to reroute communications in an exchange, and the like. Thus, the connection management system 350 can be configured to dynamically and in real time evaluate communications, agent availability, capabilities of terminal devices or agents, and the like to affect routing decisions.

[0043]

[0057] In FIG. 3A , a connection management system 350 is associated with each of the network device 205 and the remote server 340 (e.g., connection management system 350a is associated with the network device 205 and connection management system 350b is associated with the remote server 340). For example, the connection management system 350a and / or the connection management system 350b may be installed or stored as an application on each of the network device 205 and the remote server 340, respectively. Execution of the application(s) may facilitate communication between the network device 205 and the remote server 340, for example, to identify the terminal device 215 selected to participate in a communication exchange with the network device 205. The identification may be based on one or more factors disclosed herein (e.g., availability, matching between the topic / level of detail of the communication and the agent or terminal device's knowledge base, expected latency, channel type availability, etc.).

[0044]

[0058] The client device 330 may provide client data that indicates how routing decisions should be made. For example, such data may include instructions regarding how certain characteristics should be weighted or matched, or constraints or biases (e.g., related to load balancing or expected response latency). The client data may also include specifications related to when a communication channel should be established (or closed) or when a communication should be rerouted to a different network device. The client data may be used to define various client-specific rules, such as rules for communication routing.

[0045]

[0059] The connection management system 350b executing on the remote server 340 may monitor various metrics related to the terminal device (e.g., related to a given client), such as which communication channels are supported, geographic and / or network proximity to the network device, communication latency and / or stability with the terminal device, the type of terminal device, the capabilities of the terminal device, whether the terminal device (or agent) has previously communicated with a given network device (or user), and / or characteristics of the associated agent (e.g., knowledge base, experience, language spoken, availability, general personality or sentiment, etc.). Thus, the connection management system 350b may be enabled to select routing based on those metrics to promote faster responses that respond more accurately and / or completely to network device communications.

[0046]

[0060] In the example illustrated in FIG. 3A, communication exchanges between the network device 205 and the remote server 340 can facilitate early identification of a destination address. The network device 205 can then use the destination address to direct subsequent communications. For example, the network device 205 can send an initial communication to the remote server 340 (e.g., via one or more inter-network connections and a wide area network), which can identify one or more corresponding clients. The remote server 340 can then identify a set of terminal devices associated with the one or more corresponding clients and collect metrics for those terminal devices. The metrics can be evaluated (e.g., by the remote server 340) to select terminal devices to be involved in the communication exchange, and information related to the terminal devices (e.g., IP addresses) can be sent to the network device 205. In some embodiments, the remote server 340 can continuously or periodically collect and evaluate metrics for various terminal devices and store the evaluation results in a data store. In such an embodiment, upon identifying a set of terminal devices associated with one or more corresponding clients, the remote server 340 can access the stored evaluation results from the data store and select the terminal devices to be involved in the communication exchange based on the stored evaluation results.

[0047]

[0061] In FIG. 3B, the connection management system 350 may be configured to act as a relay and / or destination address. Thus, for example, a set of network devices 205 may send communications that each identify the connection management system 350 as the destination. The connection management system 350 may receive each communication and may simultaneously monitor the set of terminal devices (e.g., to generate metrics for each terminal device). Based on the monitoring and rules, the connection management system 350 may identify terminal devices 215 to which it may relay each communication. In some embodiments, terminal device communications may be similarly directed to a consistent destination (e.g., in the connection management system 350) for further relaying, or the terminal devices may begin communicating directly with the corresponding network devices. These embodiments may facilitate efficient routing and thorough communication monitoring.

[0048]

[0062] The embodiment illustrated in Figure 3C is similar to the embodiment in Figure 3B. However, in some embodiments, the connection management system 350 is directly connected to the in-network components (e.g., terminal devices, in-network connections, etc.).

[0049]

[0063] It will be appreciated that many variations of Figures 3A-3C are contemplated. For example, the connection management system 350 may be associated with a connectivity component (e.g., the inter-network connectivity component 245 or the intra-network connectivity component 255) such that an application corresponding to the connection management system 350 (or a portion thereof) is installed on the component. The application may be implemented, for example, independently or by communicating with one or more similar or complementary applications (e.g., running on one or more other components, network devices, or remote servers).

[0050]

[0064] Figure 4 shows a representation of a protocol stack mapping 400 of the operation of connected components. More specifically, Figure 4 identifies layers of operation in the Open Systems Interaction (OSI) model that correspond to various connected components.

[0051]

[0065] The OSI model may include multiple logical layers 402-414. The layers are arranged in an ordered stack such that layers 402-412 each service a higher level and layers 404-414 are each serviced by a lower layer. The OSI model includes a physical layer 402. The physical layer 402 may define parameters physical communication (e.g., electrical, optical, or electromagnetic). The physical layer 402 also defines connection management protocols, such as protocols for establishing and closing connections. The physical layer 402 may further define flow control protocols and transmission modes.

[0052]

[0066] The link layer 404 may manage inter-node communication. The link layer 404 may detect and correct errors (e.g., transmission errors in the physical layer 402) and manage access permissions. The link layer 404 may include a medium access control (MAC) layer and a logical link control (LLC) layer.

[0053]

[0067] The network layer 406 can coordinate the transfer of data (e.g., of variable length) across nodes in the same network (e.g., as datagrams). The network layer 406 can convert logical network addresses to physical machine addresses.

[0054]

[0068] The transport layer 408 may manage transmission and reception quality. The transport layer 408 may provide protocols for transferring data, such as the Transmission Control Protocol (TCP). The transport layer 408 may perform segmentation / desegmentation of data packets for transmission and may detect and account for transmission errors that occur in layers 402-406. The session layer 410 may initiate, maintain, and terminate connections between local and remote applications. Sessions may be used as part of remote procedure interactions. The presentation layer 412 may encrypt, decrypt, and format data based on data types known to be accepted by the application or network layer.

[0055]

[0069] The application layer 414 may interact with software applications that control or manage communications. Through such applications, the application layer 414 may identify (for example) the destination, local resource status or availability, and / or communication content or formatting. The various layers 402-414 may perform other functions as available and applicable.

[0056]

[0070] The network connectivity components 422, 424 are shown operating at the physical layer 402 and the link layer 404. More specifically, hubs can operate at the physical layer so that operation can be controlled with respect to receiving and transmitting communications. Hubs have little to no ability to operate at a higher level since they have no ability to handle communications or filter data. Switches, on the other hand, can operate at the link layer 404 since they are able to filter communication frames based on addresses (e.g., MAC addresses).

[0057]

[0071] Interworking components 426, 428, on the other hand, are shown operating at a higher level (e.g., layers 406-414). For example, a router may filter communication data packets based on address (e.g., IP address). A router may forward packets to a particular port based on address to direct the packet to the appropriate network. Gateways operate at the network layer or above and may perform similar filtering and directing, as well as further transformation of data (e.g., across protocols or architectures).

[0058]

[0072] The connection management system 450, in various embodiments, can interact with and / or operate on one, more, all, or any of the various layers. For example, the connection management system 450 can interact with a hub to dynamically adjust which end devices the hub communicates with. As another example, the connection management system 450 can communicate with a bridge, switch, router, or gateway to influence which end device the component selects as a destination (e.g., MAC, logical, or physical) address. As a further example, the connection management system 450 can monitor, control, or direct the segmentation of data packets on the transport layer 408, the session duration on the session layer 410, and / or the encryption and / or compression on the presentation layer 412. In some embodiments, the connection management system 450 can interact with various layers by exchanging communications with (e.g., sending commands to) equipment operating on a particular layer (e.g., a switch operating on the link layer 404), by routing or modifying existing communications (e.g., between a network device and an end device) in a particular manner, and / or by generating new communications containing particular information (e.g., a new destination address) based on existing communications. Thus, the connection management system 450 can affect communication routing and channel establishment (or maintenance or termination) through interacting with various devices and / or through affecting operations at various protocol stack layers.

[0059]

[0073] 5 illustrates a multi-device communication switching system 500 according to one embodiment. The system 500 includes a network device 505 configured to communicate with various types of terminal devices over various types of communication channels.

[0060]

[0074] In the illustrated case, the network device 505 may transmit a communication over a cellular network (e.g., via a base station 510). The communication may be routed to an operational network 515. The operational network 515 may include a connection management system 520 that receives the communication and identifies which terminal device should respond to the communication. Such a determination may depend on identifying a client to which the communication pertains (e.g., based on content analysis or user input indicative of the client) and determining one or more metrics for each of the one or more terminal devices associated with the client. For example, in FIG. 5, each cluster of terminal devices 530a-c may correspond to a different client. The terminal devices may be geographically co-located or distributed. The metrics may be determined based on stored or learned data and / or real-time monitoring (e.g., based on availability).

[0061]

[0075] The connection management system 520 may communicate with various terminal devices via one or more routers 525 or other inter- or intra-network connection components. The connection management system 520 may collect, analyze, and / or store data from or relating to communications, terminal device operations, client rules, and / or user-related actions (e.g., online activities) in one or more data stores. Such data may affect communication routing.

[0062]

[0076] In particular, various other devices may also be used to affect communication routing and / or processing. For example, in the illustrated case, the connection management system 520 is also connected to a web server 540. Thus, the connection management system 520 may retrieve data of interest, such as technical item details.

[0063]

[0077] Network device 505 may also be connected to web servers (including, for example, web server 545). In some instances, communication with such servers provided an initial option for initiating a communication exchange with connection management system 520. For example, network device 505 may detect that a communication opportunity is available while visiting a particular web page and such an option may be presented.

[0064]

[0078] One or more elements of the communication system 500 may also be connected to a social networking server 550. The social networking server 550 may aggregate data received from various user devices. Thus, for example, the connection management system 520 may be able to infer general (or user-specific) behavior of a given user or class of users.

[0065]

[0079] FIG. 6 illustrates a block diagram of an embodiment of the connection management system 600. The message receiver interface 605 can receive a message. In some cases, the message can be received as part of a communication sent by a source device (e.g., stored separately from the connection management system 600 or in the same housing), such as, for example, a network device or a terminal device. In some cases, the communication can be part of a series of communications or communication exchanges that can include a series of messages or message exchanges routed between two devices (e.g., a network device and a terminal device). This message or communication exchange can be part of and / or define an interaction between the devices. The communication channel or operable channel can include one or more protocols (e.g., a routing protocol, a task assignment protocol, and / or an addressing protocol) used to facilitate routing and communication exchanges between the devices.

[0066]

[0080] In some cases, the message may include a message generated based on input received at a local or remote user interface. For example, the message may include a message generated based on a button or key press or a recorded speech signal. In one case, the message includes an automatically generated message, such as one generated upon detecting that a network device is presenting a particular app page or web page or has provided a particular input command (e.g., a key sequence). The message may include an instruction or request, such as one to initiate a communication exchange.

[0067]

[0081] In some instances, the message may include or be associated with an identifier for the client. For example, the message may explicitly identify the client (or a device associated with the client), the message may include or be associated with a web page or app page associated with the client, the message may include or be associated with a destination address associated with the client, or the message may include or be associated with an identification of an item (e.g., a product) or service associated with the client. To illustrate, the network device may be presenting an app page for a particular client, which may provide an option to send a communication to the agent. Upon receiving user input corresponding to the message, a communication may be generated to include the message and an identifier for the particular client.

[0068]

[0082] The processing engine 610 may process received communications and / or messages. Processing may include, for example, extracting one or more particular data elements (e.g., a message, a client identifier, a network device identifier, an account identifier, etc.). Processing may include formatting or converting the communication type (e.g., to suit a particular device type, operating system, communication channel type, protocol, and / or network).

[0069]

[0083] The message assessment engine 615 may assess a (e.g., extracted or received) message. The assessment may include, for example, identifying one or more categories or tags for the message. Examples of category or tag types may include (for example) topic, sentiment, complexity, and urgency. The difference between categorizing and tagging a message may be that a category may be limited (e.g., according to a predefined set of category options), while a tag may be open. A topic may include, for example, a technical issue, a usage question, or a request. A category or tag may be determined based, for example, on a semantic analysis of the message (e.g., by identifying keywords, sentence structure, repeated words, punctuation characters, and / or non-article words), user input (e.g., with one or more categories selected), and / or message-related statistics (e.g., typing speed and / or response latency).

[0070]

[0084] In some instances, the message assessment engine 615 can determine metrics for the message. The metrics can include, for example, the number of letters, words, capital letters, words in all capital letters, or instances of particular characters or punctuation marks (e.g., exclamation points, question marks, and / or periods). The metrics can include ratios such as the ratio of sentences that end with an exclamation point (or question mark), the ratio of words written in all capital letters, etc.

[0071]

[0085] The message assessment engine 615 can store messages, message metrics, and / or message statistics in the message data store 620. Each message can also be stored in association with other data (e.g., metadata), such as data identifying a corresponding source device, destination device, network device, terminal device, client, one or more categories, one or more stages, and / or message-related statistics. Various components of the connection management system 600 (e.g., the message assessment engine 615 and / or the dialogue management engine 625) can query the message data store 620 to retrieve query response messages, message metrics, and / or message statistics.

[0072]

[0086] The dialogue management engine 625 can determine which device the communication should be routed to, how the receiving and sending devices should communicate, and the relevant bots to be used as part of the two-way communication or recommended to the agent. Each of these decisions can depend, for example, on whether a particular network device (or any network device associated with a particular user) has previously communicated with a terminal device in the set of terminal devices (e.g., any terminal device associated with the connection management system 600 or any terminal device associated with one or more particular clients).

[0073]

[0087] The dialogue management engine 625 can interact with the account engine 630 in various contexts. For example, the account engine 630 may look up an identifier for a network device or terminal device in the account data store 635 to identify an account corresponding to that device. Additionally, the account engine 630 can maintain data regarding previous communication exchanges (e.g., time, other device(s) involved, channel type, resolution stage, topic(s) and / or associated client identifiers), connected channels (e.g., indicating, for each of one or more clients, whether any channels exist, the terminal device associated with each channel, the establishment time, frequency of use, date of last use, any channel constraints and / or types of communication supported), user or agent preferences or constraints (e.g., relating to terminal device selection, response latency, terminal device consistency, agent expertise, and / or communication type preferences or constraints), and / or user or agent characteristics (e.g., age, language(s) spoken or preferred, geographic location, interests, etc.).

[0074]

[0088] Additionally, the dialogue management engine 625 can alert the account engine 630 of various connection channel actions so that the account data store 635 can be updated to reflect current channel data. For example, upon establishing a channel, the dialogue management engine 625 can notify the account engine 630 of the establishment and identify one or more of the network device, the terminal device, the account, and the client. The account engine 635 can then (in some instances) notify the user of the existence of the channel so that the user can be aware of agent consistency in action.

[0075]

[0089] The dialogue management engine 625 may further interact with a client mapping engine 640, which may map the communication to one or more clients (and / or associated brands). In some instances, the communication received from the network device itself includes an identifier corresponding to the client (e.g., an identifier of the client, web page, or app page). The identifier may be included as part of the message (e.g., which the client mapping engine 640 may detect) or may be included as other data in a communication encompassing the message. The client mapping engine 640 may then look up the identifier in a client data store 645 to retrieve additional data about the client and / or the client's identifier.

[0076]

[0090] In some cases, the message may not specifically correspond to any client. For example, the message may include a general query. The client mapping engine 640 may, for example, perform a semantic analysis on the message to identify one or more keywords and identify one or more clients associated with the keyword(s). In some cases, a single client is identified. In some cases, multiple clients are identified. The identification information of each client may then be presented via the network device such that a user may select a client with which to communicate (e.g., via an associated terminal device).

[0077]

[0091] The client data store 645 may include identification information of one or more terminal devices (and / or agents) associated with the client. The terminal routing engine 650 may retrieve or collect data related to each of one, more than one, or all such terminal devices (and / or agents) to affect routing decisions. For example, the terminal routing engine 650 may maintain a terminal data store 655 that may store information such as the device type, operating system, communication type capabilities, installed application accessories, geographic location, and / or identifier (e.g., IP address) of the terminal device. Some information may be dynamically updated. For example, information indicating whether a terminal device is available may be dynamically updated based on (for example) a communication from the terminal device (e.g., identifying whether the device is sleeping, turned off / on, inactive / active, or identifying whether an input has been received within a period of time), a communication routing (e.g., indicating whether the terminal device is involved in or assigned to be part of a communication exchange), or a communication from a network device or terminal device indicating that a communication exchange has ended or started.

[0078]

[0092] It will be appreciated that in various contexts, engaging in one or more communication exchanges does not necessarily indicate that the terminal device is unavailable to engage in another communication exchange. Various factors, such as communication type (e.g., message), client-identified or user-identified target response time, and / or system load (e.g., generally or with respect to a user), may affect how many exchanges a terminal device may engage in.

[0079]

[0093] Systems and methods are provided for transferring messaging to automation via a bot during a communication session with a network device (e.g., operated by a user). The user may use the network device to initiate a conversation with an agent regarding the resolution of a problem. The agent may launch a widget on an associated terminal device to accelerate the resolution of the user's intent. The user's intent may be automatically identified and a recommended automation may be made for transfer to the bot. Key user information, such as order number, account number, etc., may also be provided. The agent may manually or automatically initiate the transfer to the bot, which allows the agent to provide feedback on the recommendation to transfer. Additionally, the agent may use the terminal device to watch the transferred conversation and help the conversation if the user begins to seem dissatisfied. The conversation between the user and the bot may appear inline in the conversation with the agent.

[0080]

[0094] In some embodiments, the agent can monitor multiple conversations transferred to the bot and help the conversations as needed. Sentiment scores can be utilized to be displayed on the terminal device to promote priority of helping the conversation. Assistance features that utilize artificial intelligence, such as "intent hints" and "suggested automations", can be shown as actionable inline suggestions within the conversation window. The feedback can be used and analyzed as a whole to apply data science as training inputs to models.

[0081]

[0095] In some implementations, the bot may be configured to communicate autonomously with the network device. Additionally, the bot may be configured for specific capabilities. Examples of capabilities may include updating database records, providing updates to a user, providing additional data about the user to an agent, determining the intent of the user and routing the user to a destination system based on the intent, predicting or suggesting a response to an agent communicating with the user, escalating the communication session to include one or more additional bots or agents, and other suitable capabilities. In some implementations, while the bot is communicating with a network device (e.g., operated by a user) during a communication session (e.g., using a chat-enabled interface), the communication server may automatically and dynamically decide to switch the bot with a terminal device. For example, the bot may communicate with the user for some tasks (e.g., updating a database record associated with the user), while the terminal device may communicate with the user for more difficult tasks (e.g., communication using a communication channel to resolve technical issues).

[0082]

[0096] In some implementations, determining whether to switch to automation during a communication session may be based on an analysis of one or more characteristics of messages during the communication session. Additionally, dynamic emotion parameters may be generated to represent emotions of messages, conversations, entities, agents, etc. For example, if the dynamic emotion parameters indicate that a user is annoyed with the bot, the system may automatically switch the bot with the terminal device so that a live agent can communicate with the user. In some examples, determining whether to switch the bot with the terminal device may be performed without prompting from the user. The determination may be performed automatically in the communication server based on any number of factors, including characteristics of a current message during a communication session (e.g., chat), characteristics of a previous message sent by the user in a previous communication session, a trajectory of a characteristic (e.g., emotion) across multiple messages in a conversation, or additional information associated with the user (e.g., profile information, preference information, and other suitable information associated with the user).

[0083]

[0097] In conjunction with the functionality described above, the dialogue management engine 625 can, in some examples, query the bot to have the bot return a reliability score indicative of the bot's relevance to a particular set of input data. The query can be made in conjunction with the sentiment or intent analysis described above, or can be independent. In some examples, the query is local and the bot can run on a shared device or system with the dialogue management engine 625. In some examples, the bot can run remotely, such as on an independent server or on a remote cloud-based system. In such examples, the query is associated with sending a request for a reliability score remote system. The dialogue management engine 625 can then manage the assessment of the reliability score, including managing calibration or mapping operations, as described further below.

[0084]

[0098] FIG. 7 illustrates a block diagram of a network environment for dynamically switching between a bot and a terminal device during a communication session. In some implementations, the network environment 700 can include a network device 705, a communication server 710, a terminal device 715, and a bot 720. The communication server 710 can be a server with one or more processors with at least one storage device and can be configured to implement the methods and techniques described herein. For example, the communication server 710 can manage a communication session between a network device (e.g., operated by a user) and a terminal device (e.g., operated by an agent). The communication server 710 can establish a communication channel between the network device 705 and the terminal device 715 such that the network device 705 and the terminal device 715 can communicate with each other during the communication session. The communication session can facilitate the exchange of one or more messages between the network device 705 and the terminal device 715. The present disclosure is not limited to the exchange of messages during the communication session. Other forms of communication may be facilitated by the communication session, for example, video communication (eg, a video feed) and audio communication (eg, a voice over IP connection).

[0085]

[0099] In some implementations, the communication server 710 can establish a communication channel between the network device 705 and a bot 720. The bot 720 can be code configured to autonomously communicate with the network device 705 when executed. For example, the bot 720 can be a bot for automatically generating messages to initiate conversations with a user associated with the network device 705 and / or automatically responding to messages from the network device 705. Additionally, the communication server 710 can be associated with a platform. Clients (e.g., systems external to the platform) can deploy different types of bots in their internal communication systems using the platform. In some examples, the clients can use their own bots within the platform that allows the clients to implement the methods and techniques described herein within their internal communication systems.

[0086]

[0100] In some implementations, bots may be defined by one or more sources. For example, data store 730 may store code representing bots defined (e.g., created or coded) by clients of the communication server. For example, a client that has defined its own bot may load the bot into the communication server 710. Bots defined by clients may be stored in client bot data store 730. Data store 740 may store code representing bots defined by a third party system. For example, a third party system may include an independent software vendor. Data store 750 may store code representing bots defined by an entity associated with the communication server 710. For example, a bot coded by an entity may be loaded into or accessible by the communication server 710 such that the bot may be executed and communicate autonomously with a user. In some implementations, the communication server 710 may use a cloud network 760 to access bots stored in data store 730, data store 740, and / or data store 750. The cloud network 760 may be any network and may include an open network such as the Internet, a personal area network, a local area network (LAN), a campus area network (CAN), a metropolitan area network (MAN), a wide area network (WAN), a wireless local area network (WLAN), a private network such as an intranet, an extranet, or other backbone.

[0087]

[0101] Additionally, the terminal device 715 may be operated by an agent. The terminal device 715 may be any portable (e.g., mobile phone, tablet, laptop) or non-portable device (e.g., electronic kiosk, desktop computer, etc.). In some instances, the agent may access a website using a browser running on the terminal device 715. For example, the website may include a console or platform running on the browser of the terminal device 715. The agent may log into the platform using the browser. One or more login credentials (e.g., username, password, etc.) may be used to authenticate the identity of the agent before allowing the agent to gain access to the console or a web application included in the console. An example console may include a platform including one or more APIs (application programming interfaces), a dashboard including one or more functions, a web-hosted application running on a web browser capable of establishing or joining a communication session (without the need to download a plug-in), and other suitable interfaces. Additionally, the console may include one or more web applications or functions that may be executed. The web applications or functions may be executed in the browser, on the communication server 710, on a local server, a remote server, or on other suitable computing devices. For example, a web application, native application, or functionality may enable an agent to communicate with a user and to view communications between the user and one or more bots.

[0088]

[0102] In some implementations, the communication server 710 can recommend automation that causes the conversation to dynamically switch between the bot 720 and the terminal device 715 during a particular communication session. Such automation or support can be selected from a set of bots available to the communication server 710. In some examples, the communication server 710 can query any number of bots, such as client bot 730, external bot 740, or source bot 750, in real time as input data from the two-way communication is analyzed. The bot query results in the communication server 710 receiving a reliability score from the queried bot. When the reliability score is available at the communication server 710 (e.g., received from a remote device running the bot 730, 740, and / or 750 and / or the score was generated locally), a local mapping calibration is used to modify the reliability score, and the bot selected to be used in facilitating the two-way communication is selected based on the modified reliability score. The modification can include a filter to reject some bots from consideration based on a threshold reliability value, or score modification based on historical feedback.

[0089]

[0103] In some examples, the communication server 710 can facilitate a communication session between the network device 705 and a selected bot 720. The bot 720 can be configured to communicate autonomously with the network device 705 by exchanging one or more messages with the network device 705 during the communication session. The communication server 710 can dynamically determine whether to switch the bot 720 with the terminal device 715 (or vice versa, as the case may be) so that a live agent can communicate with the network device 705 instead of the bot 720. In some implementations, the switching can be performed without prompting from the network device 705 or the terminal device 715. For example, the switching can be based on message parameters (e.g., a score representing the sentiment of a message or a series of messages) of messages exchanged between the network device 705 and the bot 720 without prompting the network device 705 to request the terminal device.

[0090]

[0104] In some implementations, the communication server 710 utilizes one or more machine learning models or artificial intelligence to automatically determine whether the bot 720 should be switched with the terminal device 715 (or vice versa, as the case may be). For example, messages exchanged between the network device 705 and the bot 720 may be used as input by one or more machine learning models or artificial intelligence to generate an output. The output may specify whether the communication session between the network device 705 and the bot 720 should be switched to a live agent or maintained. The machine learning model may be trained using supervised learning techniques. For example, a dataset of input messages and corresponding outputs specifying an appropriate response entity (e.g., a live agent or a bot) may be selected for training the machine learning model. In some examples, the input messages may be obtained from administrators of the communication server 710, users of the network device 705 and of other network devices that may interact with the communication server 710, and / or other sources associated with the communication server 710. The machine learning model or artificial intelligence may be evaluated to determine whether, based on the input messages provided to the machine learning model or artificial intelligence, the machine learning model or artificial intelligence provides useful output that may be used to determine whether the corresponding communication session should be handled by a live agent or a bot. Based on this evaluation, the machine learning model or artificial intelligence may be modified (e.g., one or more parameters or variables may be updated) to increase the likelihood that the machine learning model or artificial intelligence will produce the desired result.

[0091]

[0105] In some implementations, the one or more machine learning models or artificial intelligence may generate as output a score representing the sentiment of the input message or sequence of messages. The communication server 710 may determine whether the resulting score exceeds a threshold corresponding to the allocation of the communication session to the bot 720 or a live agent. For example, if the score exceeds the threshold, the communication server 710 may determine that the communication session is best suited for the bot 720. Thus, if the communication session is currently between the network device 705 and the terminal device 715 (e.g., a live agent), the communication server 710 may automatically transition the communication session from the terminal device 715 to the bot 720 or indicate to a live agent operating the terminal device 715 that the bot 720 may handle the communication session with the network device 705. Alternatively, if the score does not exceed this threshold, the communication server 710 may determine that the communication session is best suited for the terminal device 715 (e.g., a live agent). In this example, if a communication session is currently between the network device 705 and the bot 720, the communication server 710 may automatically transition the communication session from the bot 720 to the terminal device 715. In some cases, if the score does not exceed this threshold, the communication server 710 may indicate to a live agent operating the terminal device 715 that it should intervene in the communication session. It should be noted that the thresholds and scores described above are intended to be exemplary, and alternative thresholds and scoring mechanisms may be implemented to determine whether the bot 720 or the terminal device 715 should be utilized for a particular communication session with the network device 705.

[0092]

[0106] In some instances, the communication server 710 may implement a dynamic set of rules or policies that may be used to determine a relevant action for a given communication session with the network device 705. The set of rules may be provided by an administrator or other authorized entity associated with the communication server 710, or may be generated using one or more machine learning algorithms or artificial intelligence as described above. As an illustrative example, the communication server 710 may evaluate the progress of a conversation between the network device 705 and either the bot 720 or the terminal device 715 to determine whether to initiate an alternative action (e.g., transitioning the communication session from the bot 720 to the terminal device 715, or vice versa) based on the set of rules or policies. For example, if the communication server 710 determines that there is a flux in the reliability score for the bot 720 and / or in the sentiment score for the user of the network device 705 based on the captured messages exchanged during the communication session, the communication server 710 may determine an appropriate action based on the set of rules or policies that are relevant to the communication session. This may include transitioning the communication session from the bot 720 to the terminal device 715, sending a notification to the terminal device 715 indicating that it should intervene in the communication session, etc. Once the relevant action has been taken, the communication server 710 may continue to monitor subsequent messages exchanged during the communication session to evaluate the impact of the action taken contingent on the set of rules or policies. Based on feedback accumulated from these subsequent messages and / or from subsequent sessions of the user and the live agent, the communication server 710 may update the machine learning algorithms or artificial intelligence utilized to generate the set of rules or policies. These updates may result in the dynamic creation or modification of the set of rules or policies to provide improved recommendations for actions to be taken during the communication session.If the set of rules or policies is defined by an administrator or other authorized entity associated with the communication server 710, the communication server 710 may provide the obtained feedback and a set of recommendations for updating the set of rules or policies to the administrator or other authorized entity.

[0093]

[0107] In some implementations, the communication server 710 can determine to automatically switch between the bot 720 and the terminal device 715 based on characteristics of messages exchanged between the bot 720 and the network device 705. In some cases, analyzing the text of the message to determine characteristics (e.g., message parameters) can include analyzing text or non-text attributes associated with the message. For example, the communication server 710 can extract one or more lines of text included in the message from the network device 705. The communication server 710 can identify whether the one or more lines of text include an anchor. Examples of anchors include strings of text associated with polarity (e.g., emotion or intent, the word "irritated" corresponding to a negative polarity or an annoyed polarity, the word "happy" corresponding to a positive polarity, etc.). For example, the term "argument" to one client may be negative, but neutral or positive to a second client. In some cases, the anchors may be dynamically determined using supervised machine learning techniques. For example, one or more clustering algorithms may be run on the stored messages to find patterns within the stored messages. The clustered messages may be further filtered and evaluated to determine anchors. Additionally, one or more words near the identified anchors may be parsed for amplifiers. One example of an amplifier is a term that increases or decreases the strength associated with the polarity of the anchor, such as "really," "not really," or "kind of."The characteristics may include, for example, typing speed, the number of special characters used in the message (e.g., exclamation marks, question marks, etc.), semantic analysis of the message (e.g., by identifying keywords, sentence structure, repeated words, punctuation characters and / or non-article words), user input (e.g., with one or more categories selected), and / or message-related statistics (e.g., response latency).

[0094]

[0108] As a non-limiting example, the message parameter may be a number indicating a high intensity of negative polarity (e.g., a message parameter of 20 on a scale of 0-100, with lower numbers indicating negative polarity and higher numbers indicating positive polarity). An algorithm may be used to calculate the message parameter. For example, the algorithm may be based on supervised machine learning techniques. In a further example, if the term "hey" is near the anchor "don't like" (e.g., as in the sentence "I kind of don't like"), the term "hey" may be identified as an amplifier term indicating a medium intensity of negative polarity. In this case, the message parameter may be generated based on the identification of the medium intensity of negative polarity. As a non-limiting example, the message parameter may be a number indicating a medium intensity of negative polarity (e.g., a message parameter of 40 as opposed to a message parameter of 20). In some instances, the message parameter may be used to determine which secondary queue should store the communication.

[0095]

[0109] In some implementations, the characteristic of the message may be an emotion associated with the message. The message parameter may represent the emotion of the message. For example, if the emotion of the message is happy, the message parameter may be one value or a range of values, and if the emotion of the message is angry, the message parameter may be another value or a range of values. Determining whether to switch between the bot and the terminal device may be based on the message parameter, which is continuously and automatically updated with each new message received at the communication server 710.

[0096]

[0110] In some implementations, if the communication server 710 determines that the conversation should be switched from the bot 720 to a terminal device (e.g., a live agent), the communication server 710 identifies which terminal device (e.g., an agent) is more likely to reliably resolve the technical problem presented by the user of the network device 705. For example, based on characteristics of a message received from the network device 705 and the technical problem expressed by the user of the network device 705 via that message, the communication server 710 may identify a terminal device associated with an agent that is likely to address the technical problem while providing a higher likelihood of a positive interaction with the user.

[0097]

[0111] To identify which agent is best suited to respond to the user about the technical issue, the communication server 710 may use characteristics of the message received from the network device 705 and the technical issue expressed by the user of the network device 705 as inputs to a machine learning model or artificial intelligence algorithm configured to provide a selection of a particular agent as an output. The machine learning model or artificial intelligence algorithm may be trained using feedback associated with a previously conducted conversation between the user and a live agent. This feedback may be used to identify several characteristics about each agent. These characteristics may include, but are not limited to, areas of expertise associated with the technical issue, responsiveness to particular emotions (e.g., ability to reduce a user's annoyance or anger, etc.), response latency, user satisfaction rating or score, etc. When an agent is needed to intervene in a conversation between the network device 705 and the bot 720, the communication server 710 may use the machine learning model or artificial intelligence algorithm to select a particular agent who may intervene in the conversation and provide an increased likelihood of a positive user experience.

[0098]

[0112] In some implementations, the communication server 710 uses feedback from the network device 705 to train or update a machine learning model or artificial intelligence algorithm used to select an agent to intervene in a conversation between the network device and a bot. For example, if the network device 705 provides feedback indicating a negative experience with the selected agent, the communication server 710 may update the machine learning model or artificial intelligence algorithm to reduce the likelihood of selection of an agent for a conversation having equivalent or similar characteristics to the conversation associated with the received feedback. Alternatively, if the network device 705 provides feedback indicating a positive experience with the selected agent, the communication server 710 may update the machine learning model or artificial intelligence algorithm to further enhance the agent's ability to positively handle equivalent or similar conversations.

[0099]

[0113] In some implementations, the communications server 710 may recommend or predict responses to messages received from the network device 705. For example, the communications server 710 may include a message recommendation system that may use machine learning models to evaluate messages received from the network device 705 and recommend responses to those received messages. The message recommendation system may display a set of recommended messages on the terminal device 715 to assist the agent in communicating with the network device 705.

[0100]

[0114] Figure 8 shows a block diagram of a communication server 805 according to some embodiments. The communication server 805 may represent internal components of the communication server 710 of Figure 7. The communication server 805 may include a central processing unit (CPU) 807 including a processor 810 and a memory 815. The communication server 805 may further include storage 820.

[0101]

[0115] The CPU 807 may be coupled to a computer-readable medium 825. The computer-readable medium 805 may have any number of modules and engines. Although five modules and engines are shown, it is contemplated that fewer or more modules or engines may be implemented in the computer-readable medium 825 to perform the functions described herein. As shown in FIG. 8, the computer-readable medium 825 may include an intent determination engine 827, a bot forwarding engine 829, a feedback module 831, a user interface (UI) configuration engine 833, and a machine learning engine 835.

[0102]

[0116] The intent determination engine 827, together with the processor 810, may be configured to receive a request for a conversation. The request may be received from a network device operated by a user. The request may be received, for example, at a terminal device operated by an agent. The intent determination engine 827, together with the processor 810, may be further configured to determine an intent of the conversation. The intent may be determined from the request. For example, the request may state "I want my order status." The intent may be extracted from the request as "order_status."

[0103]

[0117] The calibration engine 837 may be configured to manage the selection of bots or other resources during a two-way communication session as described herein. For example, using the intent from the intent determination engine 827, a subset of bots available to the communication server 805 and relevant to the identified intent may be identified. An initial query to the subset of bots may result in a set of reliability scores received from the subset of bots. The calibration engine 837 may then use the mapping data generated by the machine learning engine 835 to provide real-time selection of bots or resources to be used in the two-way communication session. For example, if the system parses the input data and identifies "order status" as the intent, the system may identify five available bots relevant to that intent. The bots may return respective reliability scores of 0.9, 0.85, 0.6, 0.5, and 0.5. Rather than selecting the bot with the highest returned reliability score, the system may apply a dynamic calibration mapping to these scores based on feedback from previous two-way communications. The mapping may result, for example, in a confidence score of 0.9 being adjusted to a mapped score of 0.78, and a score of 0.85 being adjusted to a mapped score of 0.84. If the mapped scores for the remaining bots are lower than this, then the bot with a confidence score of 0.84 and a mapped score of 0.84 may be selected for use.

[0104]

[0118] During use of the bot, participants in the two-way communication (e.g., either customers or agents) may provide feedback regarding the bot. Positive feedback may cause adjustments to be made more positive (e.g., for the same or similar input data, the next mapping may be from 0.85 to 0.85 instead of 0.84). Negative feedback may cause adjustments to be made more negative (e.g., the next mapping may be from 0.85 to 0.83 instead of 0.84). Negative feedback may further trigger dynamic selection of a different bot in real time for the current two-way communication using a combination of the calibration engine 837 and the bot forwarding engine 829.

[0105]

[0119] The bot transfer engine 829, together with the processor 810 and the calibration engine 837, may be configured to automatically provide one or more options for dynamically selecting, modifying, or transferring a conversation from a set of different types of bots to a certain type of bot. For example, a two-way communication may involve an agent and a customer sending communications in turn. During such communication, analysis of the communication may involve input data sent to the bot for a confidence score. The input data may be identified by an NLU processing trigger and intent analysis or by a request from the agent. When a confidence score above a threshold is generated, an option may be presented to the agent to transfer the conversation from the agent to a certain type of bot. When this option is selected by the agent, a conversation with a corresponding type of bot may be facilitated. The conversation may be transferred from a terminal device operated by the agent to the bot either manually or automatically. The automatic transfer may be performed for intents with a high confidence of resolution by a particular type of bot, for example, as determined by machine learning techniques or from past experience. In some implementations, if the bot forwarding engine 829 determines that an intent can be resolved by a bot of a certain type with high reliability, the bot forwarding engine 829 may automatically transfer the conversation from the terminal device operated by the agent to a bot of a certain type without providing an option to transfer the conversation to a bot of a certain type. This may eliminate the need for manual selection of an option to facilitate a conversation with a bot. In some implementations, the bot forwarding engine 829 may utilize a reliability threshold to determine whether to present one or more of the above-mentioned options for transferring the conversation to a bot of a certain type. For example, if the bot forwarding engine 829 determines that a certain intent has a high reliability score for resolution by a bot of a certain type, and the high reliability score exceeds the reliability threshold, the bot forwarding engine 829 may automatically transfer the conversation to a bot of this certain type without presenting an option to transfer the conversation to the bot.Alternatively, if the bot forwarding engine 829 determines that a particular intent has a reliability score for resolution by a type of bot that does not exceed a reliability threshold, the bot forwarding engine 829 may present one or more options for forwarding the conversation to that bot. The operation of the bot forwarding engine 829 to use a different bot in a communication may occur simultaneously with the communication server 805 management of other aspects of the communication. For example, while the customer is typing or sending a response as part of the communication, the bot forwarding engine may be simultaneously processing previous data and forwarding the communication to a new bot or initiating execution of a new bot as part of the communication. A new communication from the customer may be analyzed in real time to dynamically inform the forwarding decision made by the bot forwarding engine 829, and the forwarding decision may be made simultaneously as the current bot is performing an action for the communication. Thus, a bot may be performing an action for the communication (e.g., generating a communication text or other communication response) and the bot forwarding engine 829 is selecting a new bot. In some aspects, after a new bot is selected by the bot forwarding engine 829, the new bot can begin analyzing the communication data to construct a subsequent output or response as part of a two-way communication while the current bot finishes the final communication prior to forwarding to the new bot. In some aspects, the bot forwarding engine 829 can determine that multiple bots should operate simultaneously as part of a communication, and the bots can be configured to communicate continuously with the customer while performing analysis operations in parallel. In such an operation, a bot can use processing resources to support the communication at the same time that a different bot is also using processing resources to support the same communication. The bot forwarding engine 829 can then manage the output from the different bots to be communicated to the customer. Additionally, as described herein, any number of customers can simultaneously interact with the communication server 805, and thus the bot forwarding engine(s) 829 can operate to simultaneously support bot selection and use for any number of two-way communications with the customer.

[0106]

[0120] In some instances, the bot forwarding engine 829 may identify one or more types of bots based on the intent determined from the request for the conversation. For example, the bot forwarding engine 829 may implement a reliability score algorithm that is used to calculate a reliability score corresponding to the likelihood or probability that different types of bots will produce a satisfactory response to a given intent. The reliability score may be a percentage or other value, where a lower percentage or value means that the response is less likely to be a good prediction for an incoming message, and a higher percentage means that the response is more likely to be a good prediction for an incoming message. If a user expresses dissatisfaction with a conversation with a particular type of bot, the intelligent routing system may update the reliability score algorithm, such that for comparable or similar intents, the particular type of bot is assigned a lower reliability score, which thereby serves as an indication that those comparable or similar intents are more likely to be handled appropriately by a terminal device (e.g., a live agent) or another type of bot. As another non-limiting example, if a user expresses satisfaction with a conversation with a particular type of bot, the intelligent routing system may update the reliability score algorithm such that, for equal or similar intents, the particular type of bot is assigned an equal or higher reliability score, thereby serving as an indication that those equal or similar intents are more likely to be handled appropriately by that particular type of bot.

[0107]

[0121] In some implementations, the bot transfer engine 829 may dynamically provide one or more options for transferring a conversation from a terminal device operated by an agent to a bot of a certain type. For example, through an interface that may be displayed on the terminal device to recommend bots and receive feedback, the bot transfer engine 829 may provide the agent with one or more recommendations for types of bots that may be capable of handling the identified intent. Each recommendation may include a corresponding reliability score indicating the likelihood that the intent is resolvable using a bot of the corresponding type. In addition to providing a reliability score for each type of bot that may be capable of handling the request, the bot transfer engine 829 may provide the agent with an option to transfer the communication session or conversation to a bot of that type through the interface. If the agent selects an option to transfer the communication session to a bot of a particular type, the bot transfer engine 829 may transfer the communication session to the bot of this particular type. The bot transfer engine 829 may select a bot of a particular type based on one or more factors. For example, the bot transfer engine 829 may select a bot of a particular type that has sufficient bandwidth to enter into a communication session with the user who submitted the request. The bot forwarding engine 829 may additionally or alternatively select a particular type of bot based on one or more characteristics of the user. For example, the bot forwarding engine 829 may select a particular type of bot that is configured to communicate in the user's language.

[0108]

[0122] In some implementations, the bot transfer engine 829 may further provide the agent with an option to provide feedback regarding each recommendation to transfer the conversation to a type of bot. For example, if the agent determines that a particular recommendation to transfer the conversation to a particular type of bot is inappropriate (e.g., that type of bot cannot handle the identified intent, an incorrect intent was identified, etc.), the bot transfer engine 829 may use this feedback to train or otherwise update a machine learning algorithm or artificial intelligence utilized to calculate a reliability score and generate recommendations based on the reliability score for a different type of bot for the given intent and / or similar intent. This may result in a lower reliability score being assigned to that type of bot by the machine learning algorithm or artificial intelligence for the equivalent or similar intent. Alternatively, if the agent selects a particular type of bot to which the communication session should be transferred, the bot transfer engine 829 may use this selection as an indication of positive feedback regarding its recommendation to utilize a particular type of bot. This feedback can be used to train or otherwise update the machine learning algorithms or artificial intelligence described above to further validate confidence scores and recommendations for use of particular types of bots for the same or similar intent.

[0109]

[0123] In some implementations, if an agent rejects a particular recommendation to transfer a conversation to a particular type of bot, the bot transfer engine 829 may use a machine learning algorithm or artificial intelligence to generate one or more new recommendations for transferring a conversation to another type of bot based on the identified intent. As described above, if an agent rejects a particular recommendation to transfer a conversation to a particular type of bot, the bot transfer engine 829 may use this feedback to train or otherwise update the machine learning algorithm or artificial intelligence utilized to calculate a reliability score and generate recommendations based on the reliability score for different types of bots for a given intent and / or similar intents. The bot transfer engine 829 may use the updated machine learning algorithm or artificial intelligence to provide the agent with new recommendations for the identified intent. Thus, the bot transfer engine 829 may dynamically and continuously provide the agent with recommendations for transferring a conversation to different types of bots based on the intent and the reliability scores for these different types of bots calculated using the machine learning algorithm or artificial intelligence.

[0110]

[0124] Different types of bots may be capable of handling some intents in an automated fashion. For example, for an intent of "order_status," an order status bot may be capable of pulling order information using a provided order number, customer name, customer email address, IP address, etc. Once the order information is determined, the order status may be ascertained by the order status bot and provided to the user in the conversation. As another example, for an intent of "payment_status," a payment status bot may be capable of pulling billing information using a provided account number, customer name, customer email address, IP address, etc. Additionally, using the billing information, the payment status bot may determine whether a customer has submitted a payment, whether the submitted payment has been processed, etc. Other types of bots may be capable of handling more complex technical issues (e.g., troubleshooting hardware or software issues, dealing with fraud reports, etc.).

[0111]

[0125] In some embodiments, a conversation between a network device and a bot may be displayed on a terminal device to allow an agent operating the terminal device to intervene in the conversation. The agent may decide to intervene in the conversation (or the conversation may be automatically transferred to the terminal device) based on a calculated emotion score of the user's satisfaction with the conversation. For example, there may be a threshold above which the emotion score should be if the user is satisfied with the conversation. If the emotion score falls below the threshold, the conversation may be manually or automatically transferred to the terminal device.

[0112]

[0126] The sentiment score may be calculated by a machine learning engine 835, which may be configured to utilize messages exchanged during the conversation as inputs to generate the sentiment score. The machine learning engine 835 may utilize one or more machine learning models trained using supervised learning techniques. For example, a dataset of input messages and corresponding sentiments and sentiment scores may be selected for training the machine learning model. In some examples, the input messages may be obtained from administrators of the communication server 805, users, agents, and other sources. The one or more machine learning models may be evaluated to determine whether the one or more machine learning models provide useful outputs that may be used to determine sentiments and corresponding sentiment scores for the conversation based on the input messages provided to the one or more machine learning models. Based on this evaluation, the one or more machine learning models may be modified (e.g., one or more parameters or variables may be updated) to increase the likelihood that the one or more machine learning models will generate a desired result.

[0113]

[0127] In some instances, one or more machine learning models may utilize one or more clustering algorithms to determine the sentiment for a particular conversation between a network device and a bot. For example, the machine learning engine 835 may extract messages exchanged during a conversation between a network device and a bot to identify anchors or other strings of text that may be associated with a polarity. The machine learning engine 835 may determine whether the extracted messages correspond to a particular cluster associated with a known emotion. The clusters may also be associated with or otherwise used to determine a sentiment score of the user's satisfaction with the conversation. For example, in addition to corresponding to a particular emotion, each cluster may be associated with a particular score that may indicate a polarity, as described above.

[0114]

[0128] In some implementations, a conversation between a network device and a bot may be automatically transferred to a terminal device without requiring an agent operating the terminal device to evaluate the conversation and manually intervene in the conversation. For example, if the emotion score for a particular conversation is below an emotion score threshold, the bot transfer engine 829 may automatically transfer the conversation from the bot to the terminal device to cause a live agent to intervene in the conversation. In some instances, the bot transfer engine 829 may utilize multiple thresholds to determine whether to present the conversation at the terminal device to allow an agent operating the terminal device to intervene in the conversation or automatically transfer the conversation to the terminal device. For example, if the emotion score for a conversation is below a first emotion score threshold but not below a lower second emotion score threshold, the bot transfer engine 829 may present the conversation at the terminal device to allow an agent to intervene in the conversation, if necessary. However, if the emotion score is below both the first emotion score threshold and the second emotion score threshold, the bot transfer engine 829 may automatically transfer the conversation to the terminal device for agent intervention. Instead of a bot's confidence score, the emotion score for the bot, selected using the mapped score, may be used as feedback for the mapping: a high emotion score may increase the value of the mapping adjustment, and a low emotion score may decrease the value of the mapping adjustment.

[0115]

[0129] The feedback module 831, together with the processor 810, may be configured to receive feedback regarding the conversation. Such feedback may be fed to the calibration engine 837 to modify the mapping adjustments for the bot using local data without modifying the bot. The feedback may be provided by an agent operating a terminal device, by an automated emotion system, by a customer, or by any other such source. The feedback may reflect how well the bot identified the intent and / or handled the request expressed by the user on the network device. Additionally, the feedback module 831 may obtain feedback from the users involved in the conversation. For example, at the end of the conversation, the feedback module 831 may send a request to the network device utilized by the user to provide feedback regarding its conversation with the bot and / or live agent. The request may be provided in the form of a survey through which the user may indicate its emotion regarding the conversation as well as provide a performance evaluation of the bot and / or live agent. In some instances, the feedback module 831 may obtain feedback from the users involved in the conversation during the conversation. For example, the feedback module 831 may evaluate the user's responses during a conversation to determine the user's sentiment. For example, the feedback module 831 may analyze text or non-text attributes associated with a user message to identify whether the user message includes an anchor associated with a polarity. As an illustrative example, if the user indicates in the message that the user is "annoyed" or indicates that a proposed solution is incorrect (e.g., a "no" response, etc.), the feedback module 831 may determine that the message represents a negative polarity and therefore determine that the bot failed to identify the intent and / or address the request expressed by the user in a satisfactory manner. Feedback may be received in any suitable form.For example, feedback may be represented in letters, numbers, through words, through a selection of icons or graphics, etc. The interface displayed to the agent and / or user for providing feedback and rendering a view of the conversation may be handled by a user interface configuration engine 833 in conjunction with the processor 810.

[0116]

[0130] The machine learning engine 835, along with the processor 810, may be configured to feed the conversation, the identified intent, and the provided feedback to a database and analyze the data to draw inferences regarding how well a type of bot and / or live agent handled the conversation. This data, along with other historical conversation data and feedback, may be used to build a model that may be used to determine future intents associated with one or more future requests. For example, if a particular type of bot successfully handled the “order_status” intent to the user's satisfaction, the future “order_status” intent may also be forwarded to that particular type of bot. Furthermore, a future request stating “I would like the status of my order” may be automatically correlated with the “order_status” intent based on the positive feedback. However, if a particular type of bot unsuccessfully handled the intent to the user's dissatisfaction, future intents similar to the aforementioned intent may be forwarded to the terminal device for these future intents to be handled by a live agent, or may be forwarded to another type of bot that may be better suited to handle the intent, based on a confidence score calculated for that type of bot and based on the intent.

[0117]

[0131] As an example, when a user first contacts an agent with the intent of "delivery_status", the system may query the relevant bots, adjust the reliability value received from the bots based on the current real-time status of the calibration (e.g., mapping) system, and select the order status bot from the available bots based on the mapped score for the order status bot. The user may then be automatically redirected to the order status bot in real-time during the two-way communication (e.g., as part of a two-way communication). After the two-way communication is completed, the agent who managed the transfer to the bot may provide feedback regarding one or more aspects of the interaction, such as whether the order status bot was a suitable bot to transfer the conversation to, whether the order status bot was able to resolve the intent, and an agent rating of how well the two-way communication went when the order status bot was active. Additionally, the user may also provide feedback regarding similar or different aspects of the interaction, such as whether the order status bot successfully resolved the user's intent, whether the order status bot responded to the user's message, whether the response from the order status bot was relevant to the intent and / or the particular message submitted by the user. Other techniques may be used to gather feedback on the interaction without explicit feedback from the agent and / or user, such as by observing whether an agent had to intervene in the conversation, which may indicate that the order status bot was not the correct bot, that the conversation should not have been automatically transferred, or that the order status bot was unable to resolve the intent. The feedback may be used to train a model that may be applied to future interactions. Such information may then be used to adjust the mapping values ​​for the order status bot. The updated adjustments would then be dynamically used for future selection of a bot associated with the same or similar input data (e.g., "delivery status," or input that matches or is associated with the delivery status intent identified by the NLU). The model was applied to future interactions.

[0118]

[0132] 9 shows a block diagram representing a network environment 900 for improving endpoint selection (i.e., terminal device or bot) using machine learning techniques. The network environment 900 may include a network device 905 (operated by a user), a communication server 910, a bot 915, and a terminal device 920. The communication server 910 can facilitate the establishment of a communication channel that allows the network device 905, at least one bot 915, and the terminal device 920 to communicate.

[0119]

[0133] The communication server 910 may include an intelligent routing system 925, a message recommendation system 930, and a message data store 935. In such a system, the intelligent routing system 925 may include a calibration or mapping engine to query the bots for reliability scores during two-way communication and manage the selection and forwarding of communications between selected bots and agent terminals. Each of the intelligent routing system 925 and the message recommendation system 930 may include one or more computing devices with processors and memory that execute instructions to implement certain operations. In some implementations, the intelligent routing system 925 may be a bot configured to implement bot calibration and intelligently route communications received from a network device to an appropriate destination. The intelligent routing system 925 may include one or more processors configured to execute code that causes one or more machine learning or artificial intelligence techniques to provide dynamic feedback to the calibration and bot selection operations along with real-time intelligent routing of messages. In some implementations, the intelligent routing system 925 can perform one or more machine learning techniques to train a model that predicts whether a message received from a network device 905 can be successfully addressed by a bot 915.

[0120]

[0134] As a non-limiting example, the intelligent routing system 925 may receive messages from the network devices 905 through a communication channel established or facilitated by the communication server 910 (e.g., a native application configured to enable users to communicate with each other across various devices). The intelligent routing system 925 may evaluate the incoming message according to some embodiments described above. For example, the intelligent routing system 925 may evaluate the content (e.g., text, audio clips, images, emoticons, or other suitable content) included in the received message using a trained machine learning model to identify the intent. The input data (e.g., communication text and / or intent data) may be sent to available bots to receive a reliability score, and the intelligent routing system 925 may then calibrate the received reliability score. The reliability score may be used to direct the communication to the selected bot 915, or if no bot is selected (e.g., the mapped score does not exceed a threshold, a significantly different type of bot has a reliability score above a threshold, etc.), the communication is routed to an agent using the terminal device 920. Data from the intelligent routing is stored in a message data store 935 and can be integrated with various feedback systems using a message recommendation system 930.

[0121]

[0135] In some implementations, the intelligent routing system 925 may request an acknowledgment from the network device 905 of the predicted destination. As a non-limiting example, the intelligent routing system 925 may use machine learning techniques to evaluate the message, and the result of the evaluation may include a prediction that the bot 915 is the destination for the message. To confirm, the intelligent routing system 925 may automatically request a feedback signal 940. For example, the feedback signal 940 may include a request for the network device 905 to acknowledge whether the bot 915 is the correct destination for the message (e.g., "Is Technical Support the correct destination?"). If the network device 905 sends an acknowledgment that the bot 915 is the correct destination (e.g., the destination intended by the user operating the network device 905), the intelligent routing system 925 may train a machine learning model to predict that future messages that contain exact or similar content to the received message (e.g., a similarity threshold, such as a 10 percent difference in content) should be routed to the bot 915. However, if the intelligent routing system 925 receives a feedback signal 940 indicating that the bot 915 was not the correct or intended destination for the received message, but rather that the terminal device 920 was, the intelligent routing system 925 may train a machine learning model that future messages containing exact or similar content to the received message should be routed to the terminal device 920 (instead of the bot 915).In some implementations, the intelligent routing system 925 may not immediately update or train the machine learning model to route future messages to the terminal device 920, but rather, the intelligent routing system 925 may wait for a threshold number of incorrect routings to the bot 915 before routing all future messages having the exact same or similar content as the received message to the terminal device 920.

[0122]

[0136] The message data store 935 may store some or all messages previously received from one or more network devices. Additionally, the message data store 935 may also store some or all messages sent by a terminal device or a bot during a previous communication session with a network device. The message data store 935 may also store some or all messages sent by a network device to a bot during a communication session. Additionally, the message data store 935 may store some or all messages sent by a bot to a network device during a communication session. In some implementations, the message data store 935 may be a database of all messages processed (e.g., sent or received at the communication server 910).

[0123]

[0137] The message recommendation system 930 may analyze a database of messages stored in the message data store 935. In some implementations, the message recommendation system 930 may use one or more machine learning or artificial intelligence algorithms to evaluate the messages stored in the message data store 935. For example, the message recommendation system 930 may run one or more clustering algorithms, such as K-means clustering, means-shift clustering, Density-Based Spatial Clustering of Applications with Noise (DBSCAN) clustering, Expectation-Maximization (EM) clustering using Gaussian Mixture Models (GMM), and other suitable machine learning algorithms, on the database of messages stored in the message data store 935. In some implementations, a recurrent neural network (RNN) or a convolutional neural network (CNN) may be used to predict a response message to assist the agent. In some implementations, the message recommendation system 930 may use support vector machines (SVM), supervised, semi-supervised, ensemble techniques, or unsupervised machine learning techniques to evaluate all previous messages to predict a response to an incoming message received from a network device during a communication session. For example, the message recommendation system 930 may evaluate the content of a message received from a network device (or a message received at the communication server 910 from a bot or terminal device) and compare the results of the evaluation to one or more clusters of previous messages stored in the message data store 935. Once the clusters are identified, the message recommendation system 930 may identify the most relevant response message based on a confidence threshold.For example, an incoming message (e.g., received at the communication server 910 from the network device 905) may correspond to a technical issue based on the content of the incoming message. The message recommendation system 930 may identify that the incoming message corresponds to a technical issue based on an evaluation (e.g., a text evaluation) of the content of the incoming message. The message recommendation system 930 may access the message data store 935 to identify a cluster of messages associated with the technical issue. The message recommendation system 930 may select one or more response messages in the cluster of messages based on a reliability threshold. As a non-limiting example, a reliability algorithm may be executed to generate a reliability score. The reliability score may be a percentage value where a lower percentage means that the response is less likely to be a good prediction for the incoming message and a higher percentage means that the response is more likely to be a good prediction for the incoming message. The minimum reliability threshold may be defined as a measure of certainty or credibility associated with each discovered pattern. Additionally, one example of a reliability algorithm may be an a priori algorithm, a similarity algorithm indicating the similarity between two data sets, and other suitable reliability algorithms.

[0124]

[0138] FIG. 10 illustrates aspects of a two-way communication session and associated input data according to examples described herein. FIG. 10 illustrates aspects of bot calibration, described above. In the chart of FIG. 10, input data 1010 (e.g., user input as part of two-way communication) is received. In some examples, the user input is text data, but in other examples, the user input can be any such data, including voice data, voice data converted to text data, and structured output data from a natural language processing system. Then, multiple bots 1020, shown as Bot A 1020A, Bot B 1020B, Bot C 1020C, and Bot D 1020D, are queried for confidence scores. The confidence scores provided by the bots are independent (e.g., non-uniform) representations of each bot's response to the input data. When the confidence scores are received, they are used in a bot calibrator 1022 (e.g., using a bot score mapper) to generate a mapped score and select a bot based on the mapped score. As shown, each bot 1020 has an associated bot score mapper 1030 as part of the bot calibrator 1022. In other implementations, a shared bot score mapper 1030 may be used to determine relative reliability scores for different bots. In some aspects, the bot calibrator used may be based on the set of bots being calibrated. For example, in an implementation using only Bot A 1020A and Bot B 1020B, a different calibrator or calibration may be used than for another system using all of Bots A-D 1020A-D. Such a different calibrator may be trained independently based on feedback from previous use of the bots and results from communication with the bots to generate a relative calibration score compared to a particular set of bots. In other implementations, a common calibration system is used for all bots available to the system, regardless of the particular bots used in a given instance of system operation.In operation 1040, the bot calibrator identifies the highest of the mapped scores from the bot mapper(s) 1030 and selects the bot of the plurality of bots 1020 associated with the highest mapped score. In operation 1050, the selected bot with the highest mapped score is evaluated for routing to the user. In some aspects, this may involve simply connecting the bot to the user (e.g., where the bot is routed to the user and then used to facilitate two-way communication in operation 1080). In other examples, additional logic may be used to determine whether the bot should interact directly with the user or to have bot usage criteria and / or agent evaluation in operations 1060 and 1065. The facilitation may involve redirecting the two-way communication to the selected bot (e.g., routing the two-way communication from an agent or handling bot to the selected bot such that the two-way communication is between the customer and the device running the selected bot). Information about the selected bot may be collected in real-time during the interaction so that machine learning or other feedback mechanisms can be used to update the bot mapping for the selected bot in operation 1090. The feedback information may include metadata, surveys, or analysis of the data during the interaction analyzed in operation 1085. The feedback information may also include analysis of the bot performance and selection by the agent in operation 1065. In the example of FIG. 10, after routing the interaction to use the selected bot, the mapped score is checked against bot usage criteria to determine whether the selected bot should be used. The bot usage criteria may be a bot-specific threshold in operation 1060. If the threshold triggers the agent analysis, the agent analyzes the data (e.g., input data, a description of the bot behavior or functionality, or other data about the bot) in operation 1065 to provide additional feedback.In some such examples, if the agent disputes the selection or provides negative feedback, another bot may be selected and the bot-specific information in the bot calibrator may be updated to negatively adjust the association between the input data or similar data (e.g., input data with similar intent value) and the selected bot (e.g., its bot score mapper 1030 generates a mapped score for the selected bot). In operation 1060, the bot usage criteria may be any criteria based on the reliability score or the mapped reliability score (e.g., alone or in combination with other data) to determine whether the selected bot satisfies a basic error check or a reasonable association check. If the selected bot fails the usage check, the bot calibrator may remove the selected bot from consideration and return to operation 1040 to select another bot. In some examples, if a threshold number of bots (e.g., two bots, three bots, five bots, etc.) fail to meet the usage criteria, the system may assume that the bot or related information is not available through the automated system and may maintain two-way communication with the current human agent or route communication to a human agent based on NLU analysis of the input data.

[0125]

[0139] In some examples, rather than routing the user to the selected bot in operation 1050, an intervention analysis may be performed. The intervention analysis may be a manual agent analysis or an automated check against a threshold. In some examples, if the selected bot has a mapped reliability score below a threshold, an agent may be used to confirm the selection of the bot before the user is routed to the bot. In some examples, multiple bots are selected and sent to an agent for the agent to select or reject the top bots from the mapped scores provided by the score mapper(s) 1030. In some examples, an analysis is performed on the top mapped scores to identify irregularities in the identified bots. For example, if multiple unrelated bots have mapped scores above a certain threshold, an agent may be used to confirm that the selected bot is suitable for two-way communication.

[0126]

[0140] In some examples, a server device or server system may simultaneously perform many different instances of the analysis described in FIG. 10 depending on the current status of the communication associated with a given instance or type of communication, with different instances performing different steps simultaneously. For example, some communications associated with some intent values, as described above, may have different sets of associated bot scores since some bots may provide different performance for different customer intents. A communication server may actively manage multiple different bot calibration sessions for different criteria (e.g., intent values, customer problem values, etc.). In some such systems, bot score mapping for different criteria may be performed dynamically and in real time for different criteria simultaneously, and bot score updates and criteria may be used separately for different criteria. Updates to different bot calibrators for different criteria may then be performed simultaneously by the same device or system as data for a given criterion is collected from associated communication sessions.

[0127]

[0141] In one example, Bot A 1020A may be a bot that assists with appointment scheduling for sales, Bot B 1020B may be a bot that assists with appointment scheduling for service calls, Bot C 1020C may be a bot that assists with finding information from a database for the product "widgets," and Bot D 1020D may be a bot that assists with connecting users to technical support. User input may be a voice input from a customer to a call center, which is converted to text by a voice-to-text system and entered as "I need help scheduling assistance for a problem with my widget." This information may be submitted to each of the Bots 1020, and each bot may output an uncalibrated relevance score. For example, Bot A 1020A may return a score of 200, Bot B 1020B may return a score of 9, Bot C may return a score of 50, and Bot D may return a score of 15. The Bot Mapper 1030 for Bots A-D can then accept the scores as part of the Bot Calibrator 1022 and output normalized scores. The scores from Bot A 1020A can be mapped by the score mapper to a normalized scale of 1000, with adjustments based on historical data with similar input data, from a normalized score of 200 to an adjusted normalized score of 90, based on a scale of 1000. The normalized scores in the score mapper can simply be scores that normalize the base scale of the scores (e.g., changing from a maximum score of 20 to a maximum score of 1000, or any other such maximum score). The adjustments can be machine learning driven adjustments based on historical data that use feedback to shift the scores.For example, if a certain bot is selected and feedback data indicates that the bot was not suitable for the user input, the score mapper can receive input to create a negative adjustment for that bot when similar user input data is received in the future.

[0128]

[0142] Returning to the example, the score from Bot B may be based on a scale of 10 and the score mapper 1030 may generate a standardized score of 900, with an adjusted score of 950 based on previous positive outcomes (e.g., mapping the subterm "scheduling assistance" from the input data to a positive outcome in the historical data that is used to create a positive adjustment in the score mapper 1030 for Bot B). The score from Bot C may be based on a scale of 100 and the bot mapper may generate a standardized score of 500, with an adjusted score of 500 (e.g., no adjustment based on historical data). The score from Bot D may be based on a scale of 20 and generate a standardized score of 750, with an adjusted score of 850 based on historical data associated with ("a problem with my widget").

[0129]

[0143] The bot calibrator 1022 can then identify the bot with the highest adjusted normalized score, which in this situation is Bot B, with an adjusted score of 950 out of 1000. In operation 1050, the bot routing can analyze the characteristics of the selected bot for additional criteria. In some implementations, the bot may be routed directly to the user to advance the bot / user conversation in operation 1080. In other implementations, additional criteria may be implemented. For example, if a client (e.g., a merchant associated with a bot and a "widget" product) implemented a criterion that an automated bot (e.g., Bot C) should be used before a bot associated with a human agent (e.g., Bots A, B, and D, with scheduling or connection with a human agent), then in operation 1060, Bot B would be rejected as associated with a human agent and Bot C would be selected based on the criterion that an automated bot should be used. In some aspects, as part of the criteria analysis of operation 1060, the human agent can analyze the user input 1010 and additional information (e.g., a history of the customer associated with the user input 1010 repeatedly requesting information about repairing the widget) and override the usage criteria to allow the scheduling bot B to be used. In other aspects, bot C can be used based on the usage criteria. In some implementations, the bot C operation can have an endpoint where bot C identifies that bot C is unable to resolve the customer problem and additional bot selection can be used. The additional bot selection can use previous calibrated scores stored in memory along with criteria associated with the automated bot. Historical data indicating that the automated bot was used and failed can then be used as part of the bot usage criteria operation 1060 to allow the previous bot B with the highest score, but associated with a human agent, to be selected based on the failure of the automated bot (e.g., a bot not associated with a human agent interaction).

[0130]

[0144] After resolution (e.g., completion or delay) of the communication associated with the bot selection, any data including the user input data 1010, data from the bot / user conversation operation 1080, the calibrated scores from the bot calibrator 1022 and the score mapper(s) 1030, the human agent input from operation 1065, or the usage criteria determination in the system from operation 1060 may be used along with the feedback data received from operation 1085. All such data may then be used to update the bot mapper in operation 1090. In some aspects, the updates to the bot mapper in operation 1090 may use machine learning to update the training for the given bot mapper(s). In some implementations, historical data is collected for a given period of time and the bot mapper(s) 1030 are retrained using the updated data at periodic intervals. In some implementations, data is collected in real time, so that when a system using the bot calibrator 1022 interacts with hundreds or thousands of customers simultaneously, data from each communication with a customer is fed into the bot mapper training system in real time, and the bot mapper can be dynamically updated using the real-time feedback data at the same time that the bot mapper is being used to calibrate scores for new user inputs received by the system. The new user inputs are then assessed to select bots for the new user inputs, and feedback from those communications is similarly fed back into the bot score mapper training (e.g., as modifications to adjustments to standardized scores associated with particular user inputs) to improve system operation by improving the selection of bots used to resolve customer problems.

[0131]

[0145] 11 illustrates aspects of two-way communication facilitated using a selected bot, according to examples described herein, and illustrates an analysis of each turn in the two-way communication (e.g., a communication or action as part of a two-way communication between a user / client and an agent or bot) using the bot calibration described herein.

[0132]

[0146] As illustrated by FIG. 11, input data for each turn results in a set of conversation orchestration operations 1100. The input data for a turn is first processed by an NLU service 1110. Such an NLU service can identify intent values, keywords, or other such input data. The intent values ​​can be generated by leveraging one or more NLU services, including a local NLU service or a remote NLU service. Such NLU analysis is performed in real-time or near real-time, so that the NLU analysis for one turn can be in process as another turn is made, and that additional turn can be incorporated into the in-process NLU analysis for the two-way communication, or additional NLU analysis can be done in real-time for the new turn. The NLU data (e.g., intent values) are then used in conversation planning 1120. Conversation planning can use the NLU data from the NLU service to identify a conversation "type" or response plan. Additionally, conversation planning 1120 can identify multi-intent two-way communication (e.g., a user wants to both schedule a new appointment and receive a list of previously made appointments, or any such multiple different actions that may use multiple different system services, such as multiple different bots.) Conversation planning 1120 can identify scripts from the initial intent identified by the NLU service 1110 or an initial bot to manage the collection or support of additional information to facilitate the two-way communication.

[0133]

[0147] Provider discovery 1130 is then dynamically performed to identify the best resource for two-way communication based on the conversation planning 1120 and the NLU data from the NLU service 1110. Provider discovery 1130 may include the operations described above in FIG. 10 for querying bots, receiving bot reliability scores, and mapping reliability scores. Provider discovery may further compare the identified bot with additional options, such as a human agent associated with the NLU data (e.g., an agent with specialized information associated with the intent), a non-bot application that may facilitate two-way communication, information content for the agent or customer, or other such data. For example, the mapping or calibration system described above may not only receive calibration data from the bot, but may also access values ​​or reliability scores for other resources, such as static help text associated with the NLU data, or an agent profile associated with the NLU data. Various criteria may be used to determine when to provide a non-bot resource to a customer rather than the identified bot. For example, as described above, if a bot does not have a mapped score above a threshold level, an agent resource may be identified or the current agent may be provided with a list of resources including informational text, bots, scripts, or any combination of such resources for the current agent to select from.

[0134]

[0148] In next action selection 1140, the resource identified in provider discovery 1130 is used to select a next action. For example, in the implementation described above with a bot threshold selection criterion, if the bot has a mapped score above the threshold, next action selection 1140 may automatically select the bot with the highest mapped score. In another example, the current agent is presented with one or more options identified by provider discovery 1130, and the agent selects a next action from the available options in selection 1140. Once selection 1140 is made, the selected resource is executed in dispatch operation 1150. Dispatch 1150 may include routing the customer to a connection with the selected bot, providing the customer with the identified information, or other such action associated with the resource selected in next action selection 1140. All such operations from NLU service 1110 to dispatch 1150 are performed dynamically in real time, including multiple such threads being performed simultaneously if the user makes multiple turns, as described below with respect to FIG. 12. Conversation planning 1120 can, for example, manage the presentation of multiple different resources in a multi-intent communication, as well as manage feedback regarding resources used in the communication (e.g., replanning when a user provides negative feedback regarding a dispatched bot). The real-time nature of conversation orchestration 1100 allows customers to receive responses quickly as part of a two-way communication, and the dynamic nature allows conversation orchestration 1100 to adapt or respond to multiple turns from customers in a two-way communication. Bots identified through provider discovery provide efficient responses to standard customer requests, and dynamic analysis by NLU services 1110 and planning 1120 allows conversation orchestration 1100 to use various resources and leverage human agents for complex interactions to improve the efficiency of the system and the quality of information and services provided to customers through the two-way communication system.

[0135]

[0149] A learning operation 1160 can further collect active and passive feedback from each turn of the conversational orchestration 1100, as well as aggregated data about the system operation (e.g., text, metadata, agent analytics, customer polling data, etc.). As described above, such information can be used by the system to improve each step of the conversational orchestration 1100. The examples described herein use feedback from the learning operation 1160 to update mapping data used to generate a mapped score from the bot calibration data, in particular as described above in FIG. 10. The feedback can be used to adjust scores in a mapping table or mapping file that associates NLU data and / or input data with a particular bot, and to adjust the bot calibration score to dynamically generate a mapped score. The system can update the mapping table or other such mapping system in real time without downtime for updates by adjusting the mapping table data in real time in response to the feedback. The real-time feedback allows data from a first two-way communication to inform the selection of a bot in a second two-way communication that is occurring simultaneously with the first two-way communication. As soon as feedback from the first two-way communication is received, the mapping score may be updated to reflect the feedback and to provide a mapping for the second two-way communication if associated input is received that analyzes the same bot in a discovery 1130 operation for a turn of the second two-way communication.

[0136]

[0150] The mapping file can store adjustment data associated with the NLU data, input data, and a particular bot, as well as feedback history data that can be used to determine how future adjustments in response to feedback are made. For example, when an initial association is made between the input data and the bot, there may be no mapping data, and thus the confidence score from the bot may be used without adjustment. The initial feedback in response to a first system identification, or the selection of a bot in response to input data, may be used to make large adjustment calibrations for future selections of bots in response to the same or similar input data. As the system receives additional selections of the same bot in response to similar input data, the magnitude of adjustments allowed in response to feedback may be limited because the feedback system tracks local confidences that are different from the confidence generated directly by the bot.

[0137]

[0151] In some examples, the bot may incorporate feedback as well as the mapping system. In such examples, the mapping system may track changes in the bot reliability score, so rather than providing an adjustment to the bot score, the mapping system identifies an adjusted local score. For example, a "schedule" bot may return a reliability score of .95 in response to input data of "appointment." The mapping system may identify a mapped score of .8 for that combination of input data and bot. Rather than simply adjusting the reliability score by -0.15 for that combination, the mapper may target .8, so if updates and feedback incorporated by the schedule bot shifts the schedule bot's reliability response to appointments to .88, the mapping system maintains the mapped score of .8. In other examples, adjustments may be tracked in the mapping system, and the mapping system may reset the feedback analysis to reflect changes in bot behavior when the bot's reliability score changes in response to the same input. By tracking reliability scores generated by the same input data over time, the mapping system can automatically respond to updates for the bot. For example, if the mapping system identifies an update to the calibration score for one particular input data, the analysis threshold may be adjusted or reset for all inputs associated with the bot to the extent that a change to the bot is identified by the mapping system. A small change to the bot may allow historical data to be used even after a change to the bot is identified, and a large change to the bot may cause the historical data for the bot to be discarded and the mapping system to treat the bot as a new bot with no history. The mapping system may then dynamically track the updated bot over time to determine a local confidence score for the local data until another large update or change to the bot is made.

[0138]

[0152] FIG. 12 illustrates two-way communication facilitated using natural language understanding (NLU), bots, and a feedback system according to examples described herein. FIG. 12 illustrates a user interface 1200 for two-way communication. The interface 1200 can include metadata, such as timestamps and identification information about participants in the two-way communication. The interface 1200 can further include text input data for each turn of the dialogue. As shown in FIG. 12, the interface 1200 includes input data 1210 and input data 1220 for two turns made consecutively by a customer labeled "Visitor". As described above, each turn can be processed separately according to the conversation organization 1100. In the example of FIG. 12, the input data 1210 "order status" can be processed independently from the input data 1220 "return policy". Each of these input data can be processed using the flow described above in FIG. 11, with NLU services 1110 identifying the NLU data, conversation planning 1120 identifying a plan for the input data response, and provider discovery 1130 identifying possible resources associated with the input data.

[0139]

[0153] FIG. 13 illustrates a user interface 1300 for an implementation in which the provider discovery 1130 system presents the top resources for each of the above input data 1210 and 1220 to the agent. A response element 1310 presents the “order status” input data 1210 with an identified bot named “orderBot”. The orderBot may be identified by querying the bots in the system, mapping the calibration scores received from the system bots, and selecting the orderBot as the bot with the highest mapped score (e.g., 96% in the sample of FIG. 13). Similarly, the input data 1210 may be processed using the same analysis. However, rather than identifying bots, articles with information relevant to the input data 1220 named “return policy” are identified. The provider discovery 1130 operation may not identify a bot with a relevance or confidence score above the threshold, and thus the “return policy” article resource is identified as the best resource for facilitating two-way communication in response to the identified input data named “return policy”. A response element 1320 presents information about the article to the agent in the agent user interface 1300 along with input interface elements that enable resources to be used to facilitate two-way communication. In the example of Figure 13, an agent participating in two-way communication can respond to two inputs made by successive customer turns by selecting the "use article" element of response element 1320 to provide information about return policies, and then route the user to the orderBot by selecting the "add" element of response element 1310.

[0140]

[0154] In other examples, rather than a human agent being presented in the user interface 1300 to manage the interaction, a bot or other machine curator for the conversation can automatically incorporate the identified resources into the interaction. In either case, feedback data from the customer in the interaction can be used to dynamically select alternative resources and provide real-time feedback to change the flow or conversation plan for the interaction (e.g., for conversation planning 1120).

[0141]

[0155] 14 is a flowchart of a method 1400 for bot selection calibration, according to examples described herein. The method 1400 may be implemented by a device participating in bidirectional communication, such as a connection management system 150 or 450, a dialogue management engine 625, a communication server 710 or 805, or any other such device including a memory and one or more processors configured to perform the method 1400. In some examples, an agent terminal or a user device may incorporate functionality for the method 1400. In some examples, the method 1400 is implemented as instructions stored on a non-transitory computer-readable medium that, when executed by one or more processors of the device, causes the device to perform operations comprising the method 1400.

[0142]

[0156] The method 1400 includes an operation 1402 for receiving input data as part of a two-way communication session, where the two-way communication is associated with a plurality of bots. The method 1400 includes an operation 1404 including accessing a first reliability score associated with a first bot and the input data, where the first reliability score is generated by analysis of the input data by the first bot, where the analysis represents a non-uniform association strength between the first bot and the input data. The method 1400 includes an operation 1406 including accessing a second reliability score associated with a second bot and the input data, where the second reliability score is generated by analysis of the input data by the second bot, where the analysis represents a non-uniform association strength between the second bot and the input data. The method 1400 includes an operation 1408 that includes generating mapped scores for the plurality of bots including at least a first mapped score associated with the first reliability score and a second mapped score associated with the second reliability score, where the mapped scores are generated by analyzing at least the first reliability score and the second reliability score using a bot score mapper to calibrate uneven reliability scores received from the plurality of bots. The method 1400 includes an operation 1410 that includes identifying a selected bot of the plurality of bots based on the mapped scores. The method 1400 includes an operation 1412 that includes facilitating a two-way communication session using the selected bot.

[0143]

[0157] In some examples, the selected bot does not have the highest reliability score from among the self-generated reliability scores generated by the plurality of bots, and the selected bot has the highest mapped score from among the mapped scores for the plurality of bots. In some examples, the method 1400 may further include comparing the first mapped score to a bot-specific threshold when the first mapped score is the highest value score from among the mapped scores, and rejecting the first mapped score when the first mapped score is below the bot-specific threshold.

[0144]

[0158] In some examples, the method 1400 may further include receiving feedback data about the selected bot and dynamically updating a mapping adjustment value associated with the user input data and the selected bot of the bot score mapper based on the feedback data.

[0145]

[0159] In some examples, the method 1400 may further include repeatedly receiving feedback associated with an input data type associated with the user input data, and dynamically updating a mapping adjustment value associated with the user input data and a selected bot of the bot score mapper based on the feedback, wherein a maximum adjustment of the mapping adjustment value is selected based on a number of previous adjustments to the mapping adjustment value for the selected bot, where the selected bot is based on a real-time feedback state of the bot score mapper associated with receiving the user input data.

[0146]

[0160] In some examples, the method 1400 may further include updating a mapping adjustment value associated with the user input data and the selected bot of the bot score mapper based on feedback data, where the feedback data is automatically generated from metadata of the two-way communication session and the two-way conversation data.

[0147]

[0161] In some examples, the method 1400 may further include updating a mapping adjustment value associated with the user input data and the selected bot of the bot score mapper based on feedback data, where the feedback data is manual feedback provided by an agent participating in the two-way communication session.

[0148]

[0162] In some examples, the method 1400 may further include receiving an agent input rejecting the selected bot and selecting a second selected bot based on the mapped scores excluding the score of the selected bot. Some examples may work when the multiple bots include one or more client bots, one or more source bots, and one or more external bots.

[0149]

[0163] In some examples, the method 1400 may further include sending one or more reliability score requests, where, when the one or more reliability score requests are received by a server executing the one or more bots, the server generates a reliability score for the one or more bots, the reliability score including a first reliability score and a second reliability score.

[0150]

[0164] In some examples, the method 1400 may further include executing instructions for the first bot and the second bot using one or more processors of the device, and generating the first reliability score and the second reliability score using one or more processors of the device. Some examples may be operational when the user input data is text data.

[0151]

[0165] In some examples, any of the operations of method 1400 may be performed simultaneously for many different communications, such that the operations of one instance of method 1400 may be performed simultaneously with the operations of another instance of method 1400. As described above, such examples enable the use of separate bot analysis and calibration for different bot criteria, such as different intent values ​​or customer problem values. Separate bot calibration may include a single device or system performing bot calibration for one set of criteria simultaneously with bot calibration for a separate set of criteria. Furthermore, the bot calibrations described herein, and other such operations, may be performed simultaneously with any number of communication sessions, with data and feedback from the communication sessions being used in real time to update the data set used for training as the system is facilitating any number of communication sessions.

[0152]

[0166] In the above description, specific details are given to provide a thorough understanding of the embodiments. However, it should be understood that the embodiments may be practiced without these specific details. For example, circuits may be shown as block diagrams to avoid obscuring the embodiments in unnecessary detail. In other instances, well-known circuits, processes, algorithms, structures, and techniques may be shown without unnecessary detail to avoid obscuring the embodiments. Furthermore, some examples may operate with repetitive or intervening operations, and multiple instances of the operations may be performed with dynamic adjustments made in response to real-time feedback to update data for the bot score mapper to change adjustments to the credibility scores and to change the selection of selected resources (e.g., bots, articles, human agents, etc.) to facilitate two-way communication.

[0153]

[0167] The implementation of the techniques, blocks, steps, and means described above can be performed in various ways. For example, these techniques, blocks, steps, and means can be implemented in hardware, software, or a combination thereof. In the case of hardware implementation, the processing unit can be implemented within one or more application specific integrated circuits (ASICs), digital signal processors (DSPs), digital signal processing devices (DSPDs), programmable logic devices (PLDs), field programmable gate arrays (FPGAs), processors, controllers, microcontrollers, microprocessors, other electronic units designed to perform the functions described above, and / or combinations thereof.

[0154]

[0168] Also, it should be noted that portions of the embodiments may be described as a process that is depicted as a flowchart, a flow diagram, a data flow diagram, a structure diagram, or a block diagram. Although a flowchart may describe operations as a sequential process, many of the operations may be performed in parallel or simultaneously. Furthermore, the order of operations may be rearranged. A process is terminated when the operations of a process are completed, but may have additional steps not included in the diagram. A process may correspond to a method, a function, a procedure, a subroutine, a subprogram, etc. When a process corresponds to a function, its termination corresponds to a return of the function to the calling function or to the main function.

[0155]

[0169] Further, the embodiments may be implemented by hardware, software, scripting languages, firmware, middleware, microcode, hardware description languages, and / or any combination thereof. When implemented in software, firmware, middleware, scripting languages, and / or microcode, the program code or code segments to perform the necessary tasks may be stored in a machine-readable medium such as a storage medium. A code segment or machine-executable instructions may represent a procedure, a function, a subprogram, a program, a routine, a subroutine, a module, a software package, a script, a class, or any combination of instructions, data structures, and / or program statements. A code segment may be coupled to another code segment or a hardware circuit by passing and / or receiving information, data, arguments, parameters, and / or memory contents. Information, arguments, parameters, data, etc. may be passed, forwarded, or transmitted via any suitable means including memory sharing, message passing, ticket passing, network transmission, etc.

[0156]

[0170] For a firmware and / or software implementation, the methods may be implemented with modules (e.g., procedures, functions, and so on) that perform the functions described herein. Any machine-readable medium that tangibly embodies instructions may be used in implementing the methods described herein. For example, software code may be stored in a memory. The memory may be implemented within the processor or external to the processor. The term "memory" as used herein may refer to long-term memory, short-term memory, volatile memory, non-volatile memory, or any other type of storage medium, and should not be limited to a specific type or number of memories, or the type of medium on which the memory is stored.

[0157]

[0171] Moreover, the terms "storage medium," "storage," or "memory" disclosed herein can refer to one or more memories for storing data, including read-only memory (ROM), random access memory (RAM), magnetic RAM, core memory, magnetic disk storage media, optical storage media, flash memory devices, and / or other machine-readable media for storing information. The term "machine-readable medium" includes, but is not limited to, portable or fixed storage devices, optical storage devices, wireless channels, and / or various other storage media capable of storing, containing or carrying instruction(s) and / or data.

[0158]

[0172] While the principles of the present disclosure have been described above in connection with specific apparatus and methods, it is to be clearly understood that this description is made only by way of example and not as a limitation on the scope of the disclosure. The invention as described in the claims of the original application is set forth below. [C1] receiving input data as part of an interactive communication session, wherein the interactive communication session is associated with a plurality of bots; accessing a first reliability score associated with a first bot and the input data, wherein the first reliability score is generated by a first analysis of the input data by the first bot, wherein the first analysis non-uniformly represents a first association strength between the first bot and the input data; accessing a second reliability score associated with a second bot and the input data, wherein the second reliability score is generated by a second analysis of the input data by the second bot, wherein the second analysis non-uniformly represents a second association strength between the second bot and the input data; generating mapped scores for the plurality of bots including at least a first mapped score associated with the first reliability score and a second mapped score associated with the second reliability score, wherein the mapped scores are generated by analyzing at least the first reliability score and the second reliability score using a bot score mapper to calibrate non-uniform reliability scores received from the plurality of bots; identifying a selected bot of the plurality of bots based on the mapped scores; and facilitating the interactive communication session using the selected bot; and A computer-implemented method comprising: [C2] the selected bot does not have the highest reliability score from among the self-generated reliability scores generated by the plurality of bots; the selected bot has a highest mapped score among the mapped scores for the plurality of bots; The computer-implemented method of claim 1. [C3] comparing the first mapped score to a bot-specific threshold when the first mapped score is a highest value score among the mapped scores; rejecting the first mapped score when the first mapped score is below a bot-specific threshold; The computer-implemented method of C1, further comprising: [C4] receiving feedback data about the selected bot; dynamically updating a mapping adjustment value associated with the input data and the selected bot of the bot score mapper based on the feedback data; The computer-implemented method of C1, further comprising: [C5] iteratively receiving feedback associated with an input data type associated with the input data; dynamically updating a mapping adjustment value associated with the input data and the selected bot in the bot score mapper based on the feedback; wherein a maximum adjustment of the mapping adjustment value is selected based on a number of previous adjustments to the mapping adjustment value for the selected bot; wherein the selected bot is based on a real-time feedback state of the bot score mapper associated with receiving the input data. [C6] updating a mapping adjustment value associated with the input data and the selected bot in the bot score mapper based on feedback data; 4. The computer-implemented method of claim 1, further comprising: wherein the feedback data is automatically generated from metadata of the two-way communication session and two-way conversation data. [C7] updating a mapping adjustment value associated with the input data and the selected bot in the bot score mapper based on feedback data; 4. The computer-implemented method of claim 1, further comprising: wherein the feedback data is manual feedback provided by an agent participating in the interactive communication session. [C8] receiving an agent input rejecting the selected bot; selecting a second selected bot based on the mapped scores excluding the score of the selected bot; The computer-implemented method of C1, further comprising: [C9] The computer-implemented method of C1, wherein the plurality of bots includes one or more client bots, one or more source bots, and one or more external bots. [C10] Sending one or more reliability score requests The computer-implemented method of C1, further comprising: when the one or more reliability score requests are received by a server running one or more bots, the server generates a reliability score for the one or more bots, the reliability score including the first reliability score and the second reliability score. [C11] executing instructions for the first bot and the second bot using one or more processors of a device; generating the first reliability score and the second reliability score using the one or more processors of the device; The computer-implemented method of C1, further comprising: [C12] The computer-implemented method of claim C1, wherein the input data is text data. [C13] Memory, one or more processors coupled to the memory; 11. A system comprising: receiving input data as part of an interactive communication session, wherein the interactive communication session is associated with a plurality of bots; accessing a first reliability score associated with a first bot and the input data, wherein the first reliability score is generated by a first analysis of the input data by the first bot, wherein the first analysis non-uniformly represents an association strength between the first bot and the input data; accessing a second reliability score associated with a second bot and the input data, wherein the second reliability score is generated by a second analysis of the input data by the second bot, wherein the second analysis non-uniformly represents an association strength between the second bot and the input data; generating mapped scores for the plurality of bots including at least a first mapped score associated with the first reliability score and a second mapped score associated with the second reliability score, wherein the mapped scores are generated by analyzing at least the first reliability score and the second reliability score using a bot score mapper to calibrate non-uniform reliability scores received from the plurality of bots; identifying a selected bot of the plurality of bots based on the mapped scores; and facilitating the interactive communication session using the selected bot; and A system configured to perform operations including: [C14] the selected bot does not have the highest reliability score from among the self-generated reliability scores generated by the plurality of bots; the selected bot has a highest mapped score among the mapped scores for the plurality of bots; The system described in C13. [C15] comparing the first mapped score to a bot-specific threshold when the first mapped score is a highest value score among the mapped scores; rejecting the first mapped score when the first mapped score is below a bot-specific threshold; The system of C13, further comprising: [C16] receiving feedback data about the selected bot; dynamically updating a mapping adjustment value associated with the input data and the selected bot of the bot score mapper based on the feedback data; The system of C13, further comprising: [C17] iteratively receiving feedback associated with an input data type associated with the input data; dynamically updating a mapping adjustment value associated with the input data and the selected bot in the bot score mapper based on the feedback; wherein a maximum adjustment of the mapping adjustment value is selected based on a number of previous adjustments to the mapping adjustment value for the selected bot; wherein the selected bot is based on a real-time feedback state of the bot score mapper associated with receiving the input data. [C18] updating a mapping adjustment value associated with the input data and the selected bot in the bot score mapper based on feedback data; 14. The system of claim 13, further comprising: wherein the feedback data is automatically generated from metadata of the two-way communication session and two-way conversation data. [C19] updating a mapping adjustment value associated with the input data and the selected bot in the bot score mapper based on feedback data; 14. The system of claim 13, further comprising: wherein the feedback data is manual feedback provided by an agent participating in the two-way communication session. [C20] receiving an agent input rejecting the selected bot; selecting a second selected bot based on the mapped scores excluding the score of the selected bot; The system of C13, further comprising: [C21] The system of C13, wherein the plurality of bots includes one or more client bots, one or more source bots, and one or more external bots. [C22] Sending one or more reliability score requests The system described in C13 further comprises: when the one or more reliability score requests are received by a server running one or more bots, the server generates a reliability score for the one or more bots, the reliability score including the first reliability score and the second reliability score. [C23] executing instructions for the first bot and the second bot using one or more processors of the system; generating the first reliability score and the second reliability score using the one or more processors of the system; The system of C13, further comprising: [C24] The system of C13, wherein the input data is text data. [C25] A non-transitory computer-readable medium comprising instructions that, when executed by one or more processors of a device, cause the device to: receiving input data as part of an interactive communication session, wherein the interactive communication session is associated with a plurality of bots; accessing a first reliability score associated with a first bot and the input data, wherein the first reliability score is generated by a first analysis of the input data by the first bot, wherein the first analysis non-uniformly represents an association strength between the first bot and the input data; accessing a second reliability score associated with a second bot and the input data, wherein the second reliability score is generated by a second analysis of the input data by the second bot, wherein the second analysis non-uniformly represents an association strength between the second bot and the input data; generating mapped scores for the plurality of bots including at least a first mapped score associated with the first reliability score and a second mapped score associated with the second reliability score, wherein the mapped scores are generated by analyzing at least the first reliability score and the second reliability score using a bot score mapper to calibrate non-uniform reliability scores received from the plurality of bots; identifying a selected bot of the plurality of bots based on the mapped scores; and facilitating the interactive communication session using the selected bot; and A non-transitory computer-readable medium for performing operations comprising: [C26] the selected bot does not have the highest reliability score from among the self-generated reliability scores generated by the plurality of bots; the selected bot has a highest mapped score among the mapped scores for the plurality of bots; A non-transitory computer readable medium as described in C25. [C27] comparing the first mapped score to a bot-specific threshold when the first mapped score is a highest value score among the mapped scores; rejecting the first mapped score when the first mapped score is below a bot-specific threshold; 20. The non-transitory computer-readable medium of claim 19, further comprising: [C28] receiving feedback data about the selected bot; dynamically updating a mapping adjustment value associated with the input data and the selected bot of the bot score mapper based on the feedback data; 20. The non-transitory computer-readable medium of claim 19, further comprising: [C29] iteratively receiving feedback associated with an input data type associated with the input data; dynamically updating a mapping adjustment value associated with the input data and the selected bot in the bot score mapper based on the feedback; wherein a maximum adjustment of the mapping adjustment value is selected based on a number of previous adjustments to the mapping adjustment value for the selected bot; wherein the selected bot is based on a real-time feedback state of the bot score mapper associated with receiving the input data. [C30] updating a mapping adjustment value associated with the input data and the selected bot in the bot score mapper based on feedback data; 26. The non-transitory computer-readable medium of claim 25, further comprising:

Claims

1. A computer-implemented method comprising: receiving input data as part of an interactive communication session, wherein the interactive communication session is associated with a plurality of bots; accessing a first reliability score associated with a first bot and the input data, wherein the first reliability score is generated by a first analysis of the input data by the first bot, wherein the first analysis non-uniformly represents a first association strength between the first bot and the input data; accessing a second reliability score associated with a second bot and the input data, wherein the second reliability score is generated by a second analysis of the input data by the second bot, wherein the second analysis non-uniformly represents a second association strength between the second bot and the input data; generating mapped scores for the plurality of bots including at least a first mapped score associated with the first reliability score and a second mapped score associated with the second reliability score, wherein the mapped scores are generated by analyzing at least the first reliability score and the second reliability score using a bot score mapper to calibrate non-uniform reliability scores received from the plurality of bots; identifying a selected bot of the plurality of bots based on the mapped scores; and facilitating the interactive communication session using the selected bot; and updating a mapping adjustment value associated with the input data and the selected bot in the bot score mapper based on feedback data, wherein the feedback data is automatically generated from metadata of the interactive communication session and interactive conversation data. A computer-implemented method comprising:

2. the selected bot does not have the highest reliability score from among the self-generated reliability scores generated by the plurality of bots; the selected bot has a highest mapped score among the mapped scores for the plurality of bots; 10. The computer-implemented method of claim 1.

3. comparing the first mapped score to a bot-specific threshold when the first mapped score is a highest value score among the mapped scores; rejecting the first mapped score when the first mapped score is below a bot-specific threshold; The computer-implemented method of claim 1 , further comprising:

4. iteratively receiving feedback associated with an input data type associated with the input data; dynamically updating a mapping adjustment value associated with the input data and the selected bot in the bot score mapper based on the feedback; wherein a maximum adjustment of the mapping adjustment value is selected based on a number of previous adjustments to the mapping adjustment value for the selected bot; The computer-implemented method of claim 1 , wherein the selected bot is based on a real-time feedback state of the bot score mapper associated with receiving the input data.

5. updating a mapping adjustment value associated with the input data and the selected bot in the bot score mapper based on feedback data; 2. The computer-implemented method of claim 1, further comprising: wherein the feedback data is manual feedback provided by an agent participating in the interactive communication session.

6. receiving an agent input rejecting the selected bot; selecting a second selected bot based on the mapped scores excluding the score of the selected bot; The computer-implemented method of claim 1 , further comprising:

7. The computer-implemented method of claim 1 , wherein the plurality of bots includes one or more client bots, one or more source bots, and one or more external bots.

8. Sending one or more reliability score requests 2. The computer-implemented method of claim 1, further comprising: when the one or more reliability score requests are received by a server executing one or more bots, the server generates a reliability score for the one or more bots, the reliability score including the first reliability score and the second reliability score.

9. executing instructions for the first bot and the second bot using one or more processors of a device; generating the first reliability score and the second reliability score using the one or more processors of the device; The computer-implemented method of claim 1 , further comprising:

10. The computer-implemented method of claim 1 , wherein the input data is text data.

11. Memory, one or more processors coupled to the memory; 11. A system comprising: receiving input data as part of an interactive communication session, wherein the interactive communication session is associated with a plurality of bots; accessing a first reliability score associated with a first bot and the input data, wherein the first reliability score is generated by a first analysis of the input data by the first bot, wherein the first analysis non-uniformly represents an association strength between the first bot and the input data; accessing a second reliability score associated with a second bot and the input data, wherein the second reliability score is generated by a second analysis of the input data by the second bot, wherein the second analysis non-uniformly represents an association strength between the second bot and the input data; generating mapped scores for the plurality of bots including at least a first mapped score associated with the first reliability score and a second mapped score associated with the second reliability score, wherein the mapped scores are generated by analyzing at least the first reliability score and the second reliability score using a bot score mapper to calibrate non-uniform reliability scores received from the plurality of bots; identifying a selected bot of the plurality of bots based on the mapped scores; and facilitating the interactive communication session using the selected bot; and updating a mapping adjustment value associated with the input data and the selected bot in the bot score mapper based on feedback data, wherein the feedback data is automatically generated from metadata of the interactive communication session and interactive conversation data. A system configured to perform operations including:

12. the selected bot does not have the highest reliability score from among the self-generated reliability scores generated by the plurality of bots; the selected bot has a highest mapped score among the mapped scores for the plurality of bots; The system of claim 11.

13. comparing the first mapped score to a bot-specific threshold when the first mapped score is a highest value score among the mapped scores; rejecting the first mapped score when the first mapped score is below a bot-specific threshold; The system of claim 11 further comprising:

14. iteratively receiving feedback associated with an input data type associated with the input data; dynamically updating a mapping adjustment value associated with the input data and the selected bot in the bot score mapper based on the feedback; wherein a maximum adjustment of the mapping adjustment value is selected based on a number of previous adjustments to the mapping adjustment value for the selected bot; The system of claim 11 , wherein the selected bot is based on a real-time feedback state of the bot score mapper associated with receiving the input data.

15. updating a mapping adjustment value associated with the input data and the selected bot in the bot score mapper based on feedback data; 12. The system of claim 11, further comprising: wherein the feedback data is manual feedback provided by an agent participating in the interactive communication session.

16. receiving an agent input rejecting the selected bot; selecting a second selected bot based on the mapped scores excluding the score of the selected bot; The system of claim 11 further comprising:

17. The system of claim 11 , wherein the plurality of bots includes one or more client bots, one or more source bots, and one or more external bots.

18. Sending one or more reliability score requests 12. The system of claim 11, further comprising: when the one or more reliability score requests are received by a server executing one or more bots, the server generates a reliability score for the one or more bots, the reliability score including the first reliability score and the second reliability score.

19. executing instructions for the first bot and the second bot using one or more processors of the system; generating the first reliability score and the second reliability score using the one or more processors of the system; The system of claim 11 further comprising:

20. The system of claim 11 , wherein the input data is text data.

21. A non-transitory computer-readable storage medium comprising instructions that, when executed by one or more processors of a device, cause the device to: receiving input data as part of an interactive communication session, wherein the interactive communication session is associated with a plurality of bots; accessing a first reliability score associated with a first bot and the input data, wherein the first reliability score is generated by a first analysis of the input data by the first bot, wherein the first analysis non-uniformly represents an association strength between the first bot and the input data; accessing a second reliability score associated with a second bot and the input data, wherein the second reliability score is generated by a second analysis of the input data by the second bot, wherein the second analysis non-uniformly represents an association strength between the second bot and the input data; generating mapped scores for the plurality of bots including at least a first mapped score associated with the first reliability score and a second mapped score associated with the second reliability score, wherein the mapped scores are generated by analyzing at least the first reliability score and the second reliability score using a bot score mapper to calibrate non-uniform reliability scores received from the plurality of bots; identifying a selected bot of the plurality of bots based on the mapped scores; and facilitating the interactive communication session using the selected bot; and updating a mapping adjustment value associated with the input data and the selected bot in the bot score mapper based on feedback data, wherein the feedback data is automatically generated from metadata of the interactive communication session and interactive conversation data. A non-transitory computer-readable storage medium for performing operations comprising:

22. the selected bot does not have the highest reliability score from among the self-generated reliability scores generated by the plurality of bots; the selected bot has a highest mapped score among the mapped scores for the plurality of bots; 22. The non-transitory computer-readable storage medium of claim 21.

23. comparing the first mapped score to a bot-specific threshold when the first mapped score is a highest value score among the mapped scores; rejecting the first mapped score when the first mapped score is below a bot-specific threshold; 22. The non-transitory computer-readable storage medium of claim 21, further comprising:

24. iteratively receiving feedback associated with an input data type associated with the input data; dynamically updating a mapping adjustment value associated with the input data and the selected bot in the bot score mapper based on the feedback; wherein a maximum adjustment of the mapping adjustment value is selected based on a number of previous adjustments to the mapping adjustment value for the selected bot; 22. The non-transitory computer-readable storage medium of claim 21, wherein the selected bot is based on a real-time feedback state of the bot score mapper associated with receiving the input data.

Citation Information

Patent Citations

  • Information providing apparatus, information providing method, and program

    JP2019139574A

  • Automatic collaboration between distinct responsive devices

    US20200372055A1

  • Systems and methods for communication system intent analysis

    WO2020252183A1