Bot system performance insights
An integrated analysis system for bot systems enhances performance by visualizing conversation paths and identifying underperforming elements, addressing the lack of effective monitoring and analysis in existing technologies.
Patent Information
- Application Number
- JP2021563286
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2019-04-26
- Filing Date
- 2020-03-25
- Publication Date
- 2025-10-31
- Estimated Expiration
- 2040-03-25
AI Technical Summary
Existing bot systems lack effective methods for monitoring, analyzing, and improving performance, particularly in identifying the root cause of underperformance and providing actionable insights for enhancing user experience.
An integrated analysis system that collects and analyzes conversation events, generates graphical reports, and provides actionable insights to improve bot system performance by visualizing conversation paths and identifying underperforming elements.
Enables bot system administrators to pinpoint issues, improve user experience, and enhance bot performance by providing detailed insights and training suggestions.
Smart Images

Figure 0007763103000002 
Figure 0007763103000003 
Figure 0007763103000004
Abstract
Description
[Technical Field]
[0001] REFERENCE TO RELATED APPLICATIONS This application is a nonprovisional application of and claims the benefit of and priority to U.S. Provisional Application No. 62 / 839,270, entitled "Insights into Performance of a Bot System," filed April 26, 2019, the entire contents of which are incorporated herein by reference for all purposes.
[0002] FIELD OF THE INVENTION The present disclosure relates generally to techniques for analyzing and improving bot systems, and more particularly to an analysis system integrated with a bot system for monitoring, analyzing, visualizing, diagnosing, and improving the performance of the bot system. [Background technology]
[0003] background Many users around the world are on instant messaging or chat platforms to get immediate responses. Organizations often use these instant messaging or chat platforms to engage in live conversations with customers (or end users). However, hiring service personnel to engage in live communication with customers or end users can be very costly for organizations. Chatbots, or bots, have begun to be developed to simulate conversations with end users, especially over the Internet. End users can communicate with bots through messaging apps that the end users already have installed and are using. Intelligent bots, generally driven by artificial intelligence (AI), can communicate more intelligently and contextually in live conversations, thus enabling more natural conversations between bots and end users for an improved conversational experience. Instead of end users learning a fixed set of keywords or commands that the bot knows how to respond to, intelligent bots can understand the end user's intent based on end user utterances in natural language and respond accordingly. Summary of the Invention [Problem to be solved by the invention]
[0004] overview Techniques are provided (e.g., methods, systems, non-transitory computer-readable media storing code or instructions executable by one or more processors) for monitoring, analyzing, visualizing, diagnosing, and improving the performance of bot systems.
[0005] According to some embodiments, the analysis system can monitor events occurring in conversations between end users and bot systems, aggregate and analyze the collected events, and provide information about the conversations graphically on a graphic user interface as insight reports at different levels of generalization, such as an overall overview of all conversations, to different categories of conversations, and to individual conversations. For example, the graphic user interface can display options for filtering or selecting certain types of conversations or individual conversations, and graphically display information about the selected types of conversations or individual conversations, for example, by visualizing the conversation paths. The insights provide developer-oriented analysis that skillfully pinpoints issues so that users can address them before they cause problems. The insights allow users to track conversation trends over time, identify execution paths, determine the accuracy of their intent resolution, and access the entire conversation transcript. The analysis system can also provide suggestions, options, or other information to improve the training of the bot system.
[0006] In some embodiments, a graphical user interface (GUI) may display information related to individual and / or aggregated end-user conversations or other interactions with a bot system as paths including different nodes representing different stages or states of the conversation. For example, an end-user conversation with a bot system may be represented by a path showing transitions from state to state, with each state being represented by a node on the path. Statistics of user conversations with the bot system may be generated and graphically displayed through the GUI. The analysis system's visualization of conversations as paths may enable a bot system administrator or developer to filter or select groups of conversations with the bot system based on different criteria. The analysis system may also provide an option for the bot system administrator or developer to select and review individual conversations of interest. The visualized path information may enable a bot system administrator or developer to visually monitor and analyze how end users interact with the bot system and how the bot system performs during conversations with end users to identify underperforming elements and potential areas for improvement of the bot system.
[0007] Thus, the analysis system may provide, via a graphical user interface, information about end-user conversations with the bot system at different levels of generalization, including all conversations, groups of conversations that meet certain criteria, conversations associated with specific intents or end states, and individual conversations. Thus, the analysis system may enable a bot system administrator or developer to identify specific end-user utterances and end-user intents associated with incomplete or unsuccessful conversations, thereby identifying and improving underperforming elements of the bot system. By analyzing and improving the performance of the bot system, the user experience from interacting with the bot system may be improved.
[0008] In certain embodiments, the system may include an event collector, an analysis engine, and a graphic user interface server communicatively coupled to the analysis engine. The event collector may be configured to collect one or more attributes for one or more events associated with a set of conversations with the bot system. The analysis engine may be configured to select one or more conversations from the set of conversations based on one or more attributes for the one or more events using one or more filtering criteria selected by a user, and generate one or more insight reports for the selected one or more conversations. The graphic user interface (GUI) server may be configured to graphically display on the GUI a first report from the one or more insight reports and one or more user-selectable items associated with the first report, where the one or more user-selectable items may include at least one element of the first report, and at least one of the one or more user-selectable items may correspond to a filtering criterion of the one or more filtering criteria. The GUI server may also receive a user selection of the one or more user-selectable items and graphically display on the GUI a second report from the one or more insight reports based on the user selection.
[0009] In certain embodiments, a computer-implemented method may include: an event collector of an analysis system collecting one or more attributes for one or more events associated with a set of conversations with a bot system; an analysis engine of the analysis system using one or more filtering criteria selected by a user selecting one or more conversations from the set of conversations based on the one or more attributes for the one or more events; and the analysis engine of the analysis system generating one or more insight reports for the selected one or more conversations. The computer-implemented method may also include graphically displaying, on a GUI, a first report from the one or more insight reports and one or more user-selectable items associated with the first report, wherein the one or more user-selectable items may include at least one element of the first report, and at least one of the one or more user-selectable items corresponds to a filtering criterion of the one or more filtering criteria. The computer-implemented method may further include receiving a user selection of the one or more user-selectable items through the GUI and graphically displaying a second report from the one or more insight reports on the GUI based on the user selection. In some embodiments, the computer-implemented method may also include receiving user input through a user-selectable item of the one or more user-selectable items and training the bot system based on the user input.
[0010] In particular embodiments, a system may include one or more processors and a memory coupled to the one or more processors and storing instructions. When executed by the one or more processors, the instructions may cause the system to collect, by an event collector of the system, one or more attributes for one or more events associated with a set of conversations with a bot system; select, by an analysis engine of the system using one or more filtering criteria selected by a user, one or more conversations from the set of conversations based on the one or more attributes for the one or more events; and generate, by the analysis engine, one or more insight reports for the selected one or more conversations. The instructions may also cause the system to graphically display, on a GUI, a first report from the one or more insight reports and one or more user-selectable items associated with the first report, wherein the one or more user-selectable items may include at least one element of the first report, and at least one of the one or more user-selectable items may correspond to a filtering criterion of the one or more filtering criteria.
[0011] In a particular embodiment, a method is provided, the method including: an event collector of an analysis system collecting one or more attributes for one or more events associated with a set of conversations with a bot system; an analysis engine of the analysis system using one or more filtering criteria selected by a user selecting one or more conversations from the set of conversations based on one or more attributes for the one or more events; and the analysis engine of the analysis system generating an aggregate path diagram for the selected one or more conversations, the aggregate path diagram including a plurality of nodes and a plurality of connections between the plurality of nodes, each node of the plurality of nodes corresponding to a respective state of the bot system during one or more conversations, the state of each node naming a component of the bot system that provides a required function at that point in the one or more conversations, and each connection of the plurality of connections representing a transition from one state of the bot system during one or more conversations to another state of the bot system, the method further including graphically displaying the aggregate path diagram on a GUI, wherein displaying the aggregate path diagram provides user context for the state of the bot system during the one or more conversations at each node, the context including the state of the node immediately preceding other nodes in the aggregate path diagram and the components defined for each state in the aggregate path diagram.
[0012] In some embodiments, the one or more filtering criteria include an incomplete result, and the attributes are dialog state attributes, intent resolution attributes, entity resolution attributes, error and timeout attributes, or a combination thereof, and displaying the aggregate path diagram includes displaying each node of the plurality of nodes as a user-selectable item and displaying nodes of the plurality of nodes that indicate stopping points of one or more conversations that resulted in the incomplete result.
[0013] In some embodiments, the method further includes receiving a first user selection of a node indicating a stopping point through the GUI, and graphically displaying on the GUI based on the first user selection one or more utterances received by the bot system prior to stopping the one or more conversations.
[0014] In some embodiments, the method further includes graphically displaying user-selectable items for one or more transcripts of the one or more conversations on the GUI based on the first user selection, receiving a second user selection of one or more transcripts of the one or more conversations through the GUI, and graphically displaying, based on the second user selection, one or more transcripts of the one or more conversations between the user and the bot system before stopping the one or more conversations.
[0015] In some embodiments, the method further includes the analysis system training the bot system based at least on one or more utterances received by the bot system prior to stopping one or more conversations.
[0016] In some embodiments, the aggregate path diagram includes a number associated with each respective connection, the number indicating the total number of conversations, among the one or more conversations, that include the transition represented by the respective connection.
[0017] In some embodiments, the method further includes: an analysis engine of the analysis system generating one or more reports regarding the selected one or more conversations; and graphically displaying on the GUI a first report from the one or more reports and one or more user-selectable items associated with the first report, the one or more user-selectable items including a menu for selecting a conversation from the set of conversations associated with the particular end user intent; and the method further includes receiving, through the GUI, a user selection of a conversation from the set of conversations associated with the particular end user intent; and graphically displaying on the GUI a second report including the conversation from the one or more reports based on the user selection.
[0018] In one embodiment, a non-transitory computer-readable memory is provided for storing a plurality of instructions executable by one or more processors, the plurality of instructions including instructions that, when executed by the one or more processors, cause the one or more processors to perform a process, the process including: an event collector of the analysis system collecting one or more attributes for one or more events associated with a set of conversations with a bot system; an analysis engine of the analysis system using one or more filtering criteria selected by a user selecting one or more conversations from the set of conversations based on the one or more attributes for the one or more events; and an analysis engine of the analysis system generating an aggregate path diagram for the selected one or more conversations. The aggregate path diagram includes a plurality of nodes and a plurality of connections between the plurality of nodes, each node of the plurality of nodes corresponding to a respective state of the bot system during one or more conversations, the state of each node designating a component of the bot system that provides the functionality required at that point in the one or more conversations, and each connection of the plurality of connections representing a transition from one state of the bot system during one or more conversations to another state of the bot system, and the processing further includes graphically displaying the aggregate path diagram on a GUI, wherein displaying the aggregate path diagram provides user context for the state of the bot system during one or more conversations at each node, the context including the state of the node immediately preceding other nodes in the aggregate path diagram and the components defined for each state in the aggregate path diagram.
[0019] In some embodiments, the one or more filtering criteria include an incomplete result, and the attributes are dialog state attributes, intent resolution attributes, entity resolution attributes, error and timeout attributes, or a combination thereof, and displaying the aggregate path diagram includes displaying each node of the plurality of nodes as a user-selectable item and displaying nodes of the plurality of nodes that indicate stopping points of one or more conversations that resulted in the incomplete result.
[0020] In some embodiments, the processing further includes receiving a first user selection of a node indicating a stopping point through the GUI, and graphically displaying on the GUI based on the first user selection one or more utterances received by the bot system prior to stopping one or more conversations.
[0021] In some embodiments, the processing further includes graphically displaying user-selectable items for one or more transcripts of the one or more conversations on the GUI based on the first user selection, receiving a second user selection of one or more transcripts of the one or more conversations through the GUI, and graphically displaying, based on the second user selection, one or more transcripts of the one or more conversations between the user and the bot system before stopping the one or more conversations.
[0022] In some embodiments, the processing further includes the analysis system training the bot system based at least on one or more utterances received by the bot system prior to stopping one or more conversations.
[0023] In some embodiments, the aggregate path diagram includes a number associated with each respective connection, the number indicating the total number of conversations, among the one or more conversations, that include the transition represented by the respective connection.
[0024] In some embodiments, the processing further includes: an analysis engine of the analysis system generating one or more reports regarding the selected one or more conversations; and graphically displaying on the GUI a first report from the one or more reports and one or more user-selectable items associated with the first report, the one or more user-selectable items including a menu for selecting a conversation from the set of conversations that is associated with the particular end user intent; and the processing further includes receiving, through the GUI, a user selection of a conversation from the set of conversations that is associated with the particular end user intent; and graphically displaying on the GUI a second report including the conversation from the one or more reports based on the user selection.
[0025] In a particular embodiment, a system is provided, the system comprising one or more processors and a memory coupled to the one or more processors, the memory storing a plurality of instructions executable by the one or more processors, the plurality of instructions including instructions that, when executed by the one or more processors, cause the one or more processors to perform a process, the process including: an event collector of the analysis system collecting one or more attributes for one or more events associated with a set of conversations with a bot system; an analysis engine of the analysis system using one or more filtering criteria selected by a user selecting one or more conversations from the set of conversations based on the one or more attributes for the one or more events; and an analysis engine of the analysis system filtering the selected one or more conversations. The method includes generating an aggregate path diagram for a number of conversations, the aggregate path diagram including a plurality of nodes and a plurality of connections between the plurality of nodes, each node of the plurality of nodes corresponding to a respective state of the bot system in one or more conversations, the state of each node naming a component of the bot system that provides the functionality required at that point in the one or more conversations, and each connection of the plurality of connections representing a transition from one state of the bot system in one or more conversations to another state of the bot system, the process further including graphically displaying the aggregate path diagram on a GUI, wherein displaying the aggregate path diagram provides user context for the state of the bot system in one or more conversations at each node, the context including the state of the node immediately preceding other nodes in the aggregate path diagram and the components defined for each state in the aggregate path diagram.
[0026] In some embodiments, the one or more filtering criteria include an incomplete result, and the attributes are dialog state attributes, intent resolution attributes, entity resolution attributes, error and timeout attributes, or a combination thereof, and displaying the aggregate path diagram includes displaying each node of the plurality of nodes as a user-selectable item and displaying nodes of the plurality of nodes that indicate stopping points of one or more conversations that resulted in the incomplete result.
[0027] In some embodiments, the processing further includes receiving a first user selection of a node indicating a stopping point through the GUI, and graphically displaying on the GUI based on the first user selection one or more utterances received by the bot system prior to stopping one or more conversations.
[0028] In some embodiments, the processing includes graphically displaying user-selectable items for one or more transcripts of the one or more conversations on the GUI based on a first user selection, receiving a second user selection of one or more transcripts of the one or more conversations through the GUI, and graphically displaying, based on the second user selection, one or more transcripts of the one or more conversations between the user and the bot system before stopping the one or more conversations.
[0029] In some embodiments, the processing further includes the analysis system training the bot system based at least on one or more utterances received by the bot system prior to stopping one or more conversations.
[0030] In some embodiments, the aggregate path diagram includes a number associated with each respective connection, the number indicating the total number of conversations, among the one or more conversations, that include the transition represented by the respective connection.
[0031] The techniques described above and below can be implemented in several ways and in several contexts. Some example implementations and contexts are provided, as described in more detail below and with reference to the following drawings. However, the following implementations and contexts are only a few of many. [Brief explanation of the drawings]
[0032] [Figure 1] 1 illustrates a distributed system implementing a bot system for communicating with end users using messaging applications, according to various embodiments. [Figure 2] 1 illustrates an integrated system including a bot system and a bot analytics system for monitoring, analyzing, visualizing, and improving the performance of the bot system, according to various embodiments. [Figure 3] 1 is a simplified flowchart illustrating a process for monitoring, analyzing, visualizing, and improving the performance of a bot system, according to various embodiments. [Figure 4A] 1 illustrates an example of a graphical user interface screen displaying a digital assistant's perspective for improving the bot system, according to various embodiments. [Figure 4B] 1 illustrates an example of a graphical user interface screen displaying a digital assistant's perspective for improving the bot system, according to various embodiments. [Figure 4C] 1 illustrates an example of a graphical user interface screen displaying a digital assistant's perspective for improving the bot system, according to various embodiments. [Figure 5A] 1 illustrates an example of a graphical user interface screen displaying a line of business insight for improving a bot system, according to various embodiments. [Figure 5B] 1 illustrates an example of a graphical user interface screen displaying a line of business insight for improving a bot system, according to various embodiments. [Figure 5C]1 illustrates an example of a graphical user interface screen displaying a line of business insight for improving a bot system, according to various embodiments. [Figure 5D] 1 illustrates an example of a graphical user interface screen displaying a line of business insight for improving a bot system, according to various embodiments. [Figure 5E] 1 illustrates an example of a graphical user interface screen displaying a line of business insight for improving a bot system, according to various embodiments. [Figure 6A] 1 illustrates an example of a graphical user interface screen displaying skill insights for improving a bot system, according to various embodiments. [Figure 6B] 1 illustrates an example of a graphical user interface screen displaying skill insights for improving a bot system, according to various embodiments. [Figure 6C] 1 illustrates an example of a graphical user interface screen displaying skill insights for improving a bot system, according to various embodiments. [Figure 6D] 1 illustrates an example of a graphical user interface screen displaying skill insights for improving a bot system, according to various embodiments. [Figure 6E] 1 illustrates an example of a graphical user interface screen displaying skill insights for improving a bot system, according to various embodiments. [Figure 6F] 1 illustrates an example of a graphical user interface screen displaying skill insights for improving a bot system, according to various embodiments. [Figure 6G] 1 illustrates an example of a graphical user interface screen displaying skill insights for improving a bot system, according to various embodiments. [Figure 6H] 1 illustrates an example of a graphical user interface screen displaying skill insights for improving a bot system, according to various embodiments. [Figure 6I]1 illustrates an example of a graphical user interface screen displaying skill insights for improving a bot system, according to various embodiments. [Figure 6J] 1 illustrates an example of a graphical user interface screen displaying skill insights for improving a bot system, according to various embodiments. [Figure 6K] 1 illustrates an example of a graphical user interface screen displaying skill insights for improving a bot system, according to various embodiments. [Figure 6L] 1 illustrates an example of a graphical user interface screen displaying skill insights for improving a bot system, according to various embodiments. [Figure 6M] 1 illustrates an example of a graphical user interface screen displaying skill insights for improving a bot system, according to various embodiments. [Figure 6N] 1 illustrates an example of a graphical user interface screen displaying skill insights for improving a bot system, according to various embodiments. [Figure 7A] 1 illustrates an example of a graphical user interface screen displaying exemplary ideas for improving a bot system, according to various embodiments. [Figure 7B] 1 illustrates an example of a graphical user interface screen displaying exemplary ideas for improving a bot system, according to various embodiments. [Figure 7C] 1 illustrates an example of a graphical user interface screen displaying exemplary ideas for improving a bot system, according to various embodiments. [Figure 7D] 1 illustrates an example of a graphical user interface screen displaying exemplary ideas for improving a bot system, according to various embodiments. [Figure 7E] 1 illustrates an example of a graphical user interface screen displaying exemplary ideas for improving a bot system, according to various embodiments. [Figure 7F]1 illustrates an example of a graphical user interface screen displaying exemplary ideas for improving a bot system, according to various embodiments. [Figure 7G] 1 illustrates an example of a graphical user interface screen displaying exemplary ideas for improving a bot system, according to various embodiments. [Figure 7H] 1 illustrates an example of a graphical user interface screen displaying exemplary ideas for improving a bot system, according to various embodiments. [Figure 7I] 1 illustrates an example of a graphical user interface screen displaying exemplary ideas for improving a bot system, according to various embodiments. [Figure 8] 1 is a simplified flowchart illustrating a process for using insights to improve the performance of a bot system, according to various embodiments. [Figure 9] 1 is a simplified diagram of a distributed system for implementing various embodiments. [Figure 10] FIG. 1 is a simplified block diagram of one or more components of a system environment in which services provided by one or more components of an embodiment system may be offered as cloud services, according to various embodiments. [Figure 11] 1 illustrates an exemplary computer system that can be used to implement various embodiments. DETAILED DESCRIPTION OF THE INVENTION
[0033] Detailed Description In the following description, various embodiments are described. For purposes of explanation, specific configurations and details are set forth in order to provide a thorough understanding of the embodiments. However, it will be apparent to those skilled in the art that the embodiments may be practiced without the specific details. Furthermore, well-known features may be omitted or simplified so as not to obscure the described embodiments.
[0034] introduction A digital assistant is an artificial intelligence-driven interface that helps users accomplish various tasks in natural language conversation. For each digital assistant, customers can assemble one or more skills. Skills (also referred to herein as chatbots, bots, or skillbots) are individual bots that focus on specific types of tasks, such as tracking inventory, submitting time cards, and creating expense reports. When an end user engages with a digital assistant, the digital assistant evaluates the end-user input and routes the conversation to and from the appropriate chatbot. Digital assistants can be made available to end users through various channels, such as Facebook Messenger, SKYPE MOBILE Messenger, or short message service (SMS). Channels route chats back and forth from the end user to the digital assistant and its various chatbots over various messaging platforms. Channels may also support user-agent escalation, event-triggered conversations, and testing.
[0035] Intents enable a chatbot to understand what a user wants it to do. Intents consist of sequences of typical user requests and statements, also referred to as utterances (e.g., get account balance, make a purchase, etc.). As used herein, an utterance or message may refer to a set of words (e.g., one or more sentences) exchanged during a conversation with a chatbot. An intent may be created by providing a name that denotes some user action (e.g., order a pizza) and compiling a set of real-life user statements or utterances commonly associated with triggering that action. Because the chatbot's cognition is derived from these intents, each intent is created from a dataset that is robust (one to a few dozen utterances) and may vary to enable the chatbot to interpret ambiguous user input. A rich set of utterances enables the chatbot to understand what the user wants when it receives messages that mean the same thing but are expressed differently, such as "Ignore this order" or "Cancel delivery!" Collectively, the intents and their associated utterances constitute the training corpus for chat. By training a model with a corpus, customers can essentially transform the model into a reference tool for resolving end-user input to a single intent. Customers can improve chat cognitive acuity through cycles of intent testing and intent training.
[0036] However, building a chatbot that can determine an end user's intent based on end user utterances is a challenging task, due in part to the subtleties and ambiguities of natural language and the dimensionality of the input space (e.g., possible user utterances) and the size of the output space (number of intents). Therefore, chatbots may need to be trained, monitored, debugged, and retrained to improve the chatbot's performance and the user experience with the chatbot. In conventional systems, training models are provided that are essentially default training models hard-coded into the design system for training and retraining digital assistants or chatbots. For example, a first model may be provided that only requires a small training corpus, and thus it may develop entities, intents, and a training corpus using matching rules. Once the training corpus matures to the point where testing reveals highly accurate intent resolution, a second model may be used to add a deeper dimension to the chatbot's cognition by training it using machine learning based on word vectors and other text-based features. These default training models are typically inflexible in the training methodology employed. Therefore, it can be difficult to identify the root cause of a chatbot's less-than-desired performance and determine how to improve it without a more flexible approach to training.
[0037] An analytics system may be integrated with a bot system to monitor events that occur during conversations between an end user and the bot system, aggregate and analyze the collected events, and provide the user with information based on the analysis that can be used to improve the performance of the bot system, including the performance of intent classification. However, (i) these systems typically do not identify the root cause of lower-than-desired performance (instead, they provide information such as, "Bot A failed to identify intent x number of times over n time periods"), and it is up to the customer to identify the root cause of the problem from the information, and (ii) these types of analytics systems can become ineffective when hundreds or thousands of bots are used in a bot system.
[0038] Therefore, a different approach is needed to address these issues. In various embodiments, an analytics system may be integrated with a bot system. The analytics system may collect conversation logs and histories and define information related to individual and / or aggregated end-user conversations with the bot system as paths including different nodes representing different stages or states of the conversation. For example, an end-user conversation with a bot system may be represented by a path showing transitions from state to state, and each state may be represented by a node on the path. Statistics of user conversations with the bot system may be generated for each node. The paths include (i) the number of conversations flowing through intent-specific paths in the dialog flow over a given period of time, (ii) the number of conversations maintained between each state, and the different execution paths taken because the conversation diverged due to values being set (or not set) or stalled due to some other issue, such as a malfunctioning custom component, and (iii) the final state, which provides insight into the ultimate success or failure of the conversation. Analytics tools can then use the information generated for each path and node to retrain the bot system or individual bots carrying the intent / path.
[0039] In some embodiments, an event collector of the analysis system can collect one or more attributes for one or more events associated with a set of conversations with the bot system. The event collector is reconfigurable to selectively collect desired attributes for desired events. The one or more events may include, for example, at least one of a conversation event, a bot state event, an intent resolution event, an entity resolution event, an error event, a timeout event, or a custom event. The analysis engine of the analysis system may then select one or more conversations from the set of conversations based on one or more attributes for the one or more events collected by the event collector using one or more filtering criteria selected by a user. The one or more filtering criteria may include, for example, conversations that ended in a particular state, conversations that started from a particular state, completed or incomplete conversations, conversations associated with a particular end user intent, conversations from a particular channel or locale, conversations that occurred during a particular time period, etc. For the selected one or more conversations, the analysis engine can calculate statistics for the set of conversations, statistics for conversations associated with a particular end user intent, statistics for completed conversations, statistics for incomplete conversations, statistics for conversations for which the end user intent is not determined, or any combination thereof. The analytics engine can generate options for improving the bot system based on the calculated statistics.
[0040] In some embodiments, the analysis engine can generate an aggregate path diagram for one or more selected conversations. The aggregate path diagram can include multiple nodes and multiple connections between the multiple nodes. Each of the multiple nodes can correspond to a respective state of the bot system. Each of the multiple connections can represent a transition from one state of the bot system to another state of the bot system. The multiple nodes can include a start node and an end node. In some embodiments, the aggregate path diagram can include a number associated with each respective connection, which can indicate the total number of conversations that include the transition represented by the respective connection.
[0041] The analytics engine can incorporate statistics into the aggregate path diagram to determine additional information, such as the number of conversations that flowed through intent-specific paths in the dialog flow over a given period of time, the number of conversations that persisted between each state, and the different execution paths taken because the conversations diverged due to values being set (or not being set) or stalled due to some other issue such as a malfunctioning custom component. Optionally, the bot system may be retrained using the statistics and aggregate path diagram to improve the performance of the bot system, such as retraining the bot system's intent classification model to more accurately determine a user's intent.
[0042] In some embodiments, a graphical user interface (GUI) may display information related to individual and / or aggregated end-user conversations with a bot system as paths including different nodes representing different stages or states of the conversation. For example, an end-user conversation with a bot system may be represented by a path showing transitions from state to state, with each state being represented by a node on the path. Statistics of user conversations with the bot system may be generated and graphically displayed through the GUI. Path visualization by the analysis system may allow an administrator or developer to filter or select groups of end-user conversations with the bot system based on different criteria. The analysis system may also provide an option for the bot system administrator or developer to select and review individual conversations of interest. The visualized path information may enable the bot system administrator or developer to visually monitor and analyze how end users interact with the bot system and how the bot system performs during a conversation to identify underperforming elements and potential areas for improvement in the bot system.
[0043] As described above, the analysis system can provide, via a GUI, information about end-user conversations with the bot system at different levels of generalization, including all conversations, conversations that meet certain criteria, conversations associated with specific intents or end states, and individual conversations. Thus, the analysis system can enable a bot system administrator or developer to identify specific end-user utterances and intents associated with incomplete or unsuccessful conversations, and thus identify and improve suboptimal elements of the bot system. By analyzing and improving the performance of the bot system, the end-user experience with the bot system can be improved.
[0044] Bots and Analytics Systems A bot (also referred to as a skill, chatbot, chatterbot, or talkbot) is a computer program that can conduct a conversation with an end user. Bots can generally respond to natural language messages (e.g., questions or comments) through a messaging application using natural language messages. Businesses can use one or more bot systems to communicate with end users through messaging applications. The messaging application, sometimes called a channel, can be the end user's preferred messaging application that the end user already has installed and is familiar with. Thus, end users do not need to download and install a new application to chat with a bot system. Messaging applications can include, for example, over-the-top (OTT) messaging channels (e.g., Facebook Messenger, Facebook WhatsApp, WeChat, Line, Kik, Telegram, Talk, Skype, Slack, or SMS), virtual private assistants (e.g., Amazon Dot, Echo, or Show, Google® Home, Apple HomePod, etc.), mobile and web app extensions that extend native or hybrid / responsive mobile apps or web applications with chat capabilities, or voice-based input (e.g., devices or apps with interfaces that use Siri, Cortana, Google Voice, or other voice input for interaction).
[0045] In some examples, a bot system may be associated with a Uniform Resource Identifier (URI). The URI may identify the bot system using a string of characters. The URI may be used as a webhook for one or more messaging application systems. The URI may include, for example, a Uniform Resource Locator (URL) or a Uniform Resource Name (URN). The bot system may be designed to receive a message (e.g., a HyperText Transfer Protocol (HTTP) post call message) from the messaging application system. The HTTP post call message may be directed to the URI from the messaging application system. In some embodiments, the message may differ from the HTTP post call message. For example, the bot system may receive a message via Short Message Service (SMS). While the discussion herein may refer to a communication received by the bot system as a message, it should be understood that the message may be an HTTP post call message, an SMS message, or any other type of communication between two systems.
[0046] End users can interact with bot systems through conversational interactions (sometimes called conversational user interfaces (UIs)), much like interactions between people. In some cases, an interaction may involve the end user saying "Hello" to the bot, and the bot responding with "Hi" and asking the end user how it can assist the end user. In some cases, an interaction may also be a transactional interaction with a banking bot, e.g., transferring money from one account to another; an informational interaction with an HR bot, e.g., checking a vacation balance; or an interaction with a retail bot, e.g., discussing returning a purchased item or seeking technical support.
[0047] In some embodiments, the bot system can intelligently handle end-user interactions without interaction with a bot system administrator or developer. For example, an end user may send one or more messages to the bot system to achieve a desired goal. The messages may include content such as text, emojis, audio, images, video, or other methods of conveying a message. In some embodiments, the bot system can convert the content into a standardized format (e.g., a representational state transfer (REST) call to an enterprise service with appropriate parameters) and generate a natural language response. The bot system can also prompt the end user for additional input parameters or request other additional information. In some embodiments, the bot system can also initiate communication with the end user rather than passively responding to end-user utterances. Various techniques are described herein for identifying explicit invocations of the bot system and determining input for the invoked bot system. In some embodiments, explicit invocation analysis is performed by a master bot based on detecting an invocation name in the utterance. In response to detecting the invocation name, the utterance may be refined for input to a skill bot associated with the invocation name.
[0048] A conversation with a bot can follow a specific conversational flow that includes multiple states. The flow can define what happens next based on input. In some embodiments, a bot system can be implemented using a state machine that includes user-defined states (e.g., end user intents) and actions to be taken in and from states. A conversation can take different paths based on end user input, which can affect the decisions the bot makes about the flow. For example, at each state, based on end user input or utterances, the bot can determine the end user's intent and decide the appropriate action to take next. As used herein, and in the context of utterances, the term "intent" refers to the intent of the user who gave the utterance. For example, a user may intend to engage a bot in a conversation to order a pizza, and the user's intent may be expressed by the utterance "order a pizza." A user's intent can be directed to a specific task the user wants the chatbot to perform on their behalf. Thus, an utterance can be expressed as a question, command, request, etc. that reflects the user's intent. An intent may include a goal the end user wants to achieve.
[0049] In the context of chat configuration, the term “intent” is used herein to refer to configuration information for mapping a user’s utterance to a specific task / action or category of task / action that a chatbot can perform. To distinguish between an utterance intent (i.e., a user’s intent) and a chatbot’s intent, the latter may be referred to herein as a “bot intent.” A bot intent may include a set of one or more utterances associated with the intent. For example, an intent for ordering a pizza may have various permutations of utterances expressing a desire to place a pizza order. These associated utterances may be used to train the chatbot’s intent classifier, which can then determine whether an input utterance from a user matches the pizza ordering intent. A bot intent may be associated with one or more dialog flows for initiating a conversation with a user in a certain state. For example, the first message for a pizza ordering intent may be the question, “What kind of pizza would you like?” In addition to the associated utterance, a bot intent may further include a named entity associated with the intent. For example, a pizza ordering intent may include variables or parameters used to perform the task of ordering a pizza, such as topping 1, topping 2, pizza type, pizza size, pizza quantity, etc. The values of the entities are typically obtained through conversation with the user.
[0050] FIG. 1 is a simplified block diagram of a distributed environment 100 incorporating an exemplary embodiment. The distributed environment 100 includes a Digital Assistant Builder Platform (DABP) 102 that enables businesses to create and deploy digital assistants for users. For purposes of this disclosure, a “digital assistant” is an entity that helps users of the digital assistant accomplish various tasks through natural language conversation. A digital assistant may be implemented using software alone (e.g., a digital assistant is a digital entity implemented using programs, code, or instructions executable by one or more processors), using hardware, or using a combination of hardware and software. A digital assistant may be embodied or implemented in various physical systems or devices, such as a computer, a mobile phone, a watch, an appliance, a vehicle, etc. A digital assistant is sometimes referred to as a chatbot system. The DABP 102 can be used to create one or more digital assistants (or DAs) 106. A DABP 102 can be used by multiple businesses to create digital assistants for users of multiple businesses. 1, a user 104 representing a particular business can use DABP 102 to create and deploy a digital assistant 106 for users of the particular business. For example, the owner of a restaurant (e.g., a pizza shop) can use DABP 102 to create and deploy a digital assistant that enables customers of the restaurant to order food (e.g., order pizza).
[0051] Once the digital assistant 106 is deployed, a user 108 can use the digital assistant 106 to perform various tasks through natural language-based conversations with the digital assistant 106. As part of the conversation, the user 108 can provide one or more user inputs 110 and obtain responses 112 from the digital assistant 106. Through these conversations, the user can request one or more tasks to be performed by the digital assistant 106, and in response, the digital assistant 106 is configured to perform the user-requested tasks and respond to the user with an appropriate response.
[0052] User input 110 is in natural language and is called speech. User utterances can be in text format (e.g., when a user types something as input to digital assistant 106) or in auditory or speech format (e.g., when a user says something as input to digital assistant 106). Speech is typically in the language spoken by user 108. If user input 110 is in speech format, the speech input is converted into textual speech in that particular language, and the textual speech is processed by digital assistant 106. Various speech-to-text processing techniques may be used to convert speech or auditory input into textual speech, which is then processed by digital assistant 106.
[0053] A text utterance entered by a user 108 or generated by converting voice input to text form can be a text fragment, a sentence, multiple sentences, etc. The digital assistant 106 is configured to apply natural language understanding (NLU) techniques to the text utterance to understand the meaning of the user input. As part of the NLU processing on the utterance, the digital assistant 106 is configured to perform processing to understand the meaning of the utterance, which involves identifying one or more intents and one or more entities that correspond to the utterance. Upon understanding the meaning of the utterance, the digital assistant 106 can perform one or more actions or operations in response to the understood meaning or intent.
[0054] For example, user input 110 may request that a pizza be ordered, such as, "I would like to order a pizza." Digital assistant 106 is configured to understand the meaning of the utterance and take appropriate action, which may involve responding to the user with a question requesting user input for the type of pizza the user wants to order, the size of the pizza, any toppings on the pizza, etc. Response 112 provided by digital assistant 106 may also be in the form of natural language, which may include natural language generation (NLG) processing performed by digital assistant 106. Once digital assistant 106 obtains the necessary information from the user, digital assistant 106 proceeds to order the pizza. Digital assistant 106 may conclude the conversation with the user by outputting information indicating that the pizza has been ordered.
[0055] In particular embodiments, utterances received as input by digital assistant 106 pass through a series or pipeline of processing steps. These steps may include, for example, parsing the utterance, understanding the meaning of the utterance, examining and modifying the utterance to develop a more understandable structure for the utterance, determining an action to be performed in response to the utterance, causing the action to be performed, generating a response to be output to the user in response to the user utterance, outputting the response to be output to the user, etc.
[0056] NLU processing performed by a digital assistant, such as digital assistant 106, may include various NLP-related processes such as sentence analysis (e.g., tokenization, reordering, identifying part-of-speech tags for sentences, identifying named entities in sentences, generating dependency trees to represent sentence structure, dividing sentences into clauses, analyzing individual clauses, resolving anaphora, performing chunking, etc.). Digital assistant 106 can use an NLP engine and / or machine learning models (e.g., intent classifiers) to map end-user utterances to specific intents (e.g., specific tasks / actions or categories of tasks / actions that the chatbot can perform). For example, a machine learning-based NLP engine can be trained to understand and classify natural language conversations from end users and extract necessary information from the conversation so that precise actions can be taken, such as completing a transaction or retrieving data from a back-end system of record. In some embodiments, NLU processing, or portions thereof, are performed by digital assistant 106 itself. In some other embodiments, digital assistant 106 can use other resources to perform portions of the NLU processing. For example, the syntax and structure of a sentence may be identified by processing the sentence with syntactic parsing, part-of-speech tagging, and / or named entity recognition. In one implementation, for English, syntactic parsing, part-of-speech tagging, and / or named entity recognition provided by the Stanford Natural Language Processing (NLP) Group are used to analyze sentence structure and syntax. These are provided as part of the Stanford CoreNLP toolkit.
[0057] Although the various examples provided in this disclosure show English utterances, this is meant as an example only. In certain embodiments, the digital assistant 106 can also process utterances in languages other than English. In certain embodiments, the digital assistant 106 provides subsystems (e.g., components that implement NLU functionality) configured to perform processing for different languages. These subsystems may be implemented as pluggable units that can be invoked using service calls from the NLU core server. This makes NLU processing flexible and extensible for each language, including allowing for different orders of processing. Language packs may be provided for individual languages, and the language packs can register a list of subsystems that can be provided by the NLU core server and can also utilize provided generic subsystems as needed.
[0058] A digital assistant, such as digital assistant 106, can be made available to its user through a variety of different channels, such as, but not limited to, through a particular application, through social media platforms, through various messaging services and applications, and through other applications or channels. A single digital assistant can have several channels configured for it, so that it can run on and be accessed by different services simultaneously.
[0059] A digital assistant includes or is associated with one or more skills. In some embodiments, these skills are individual chatbots (called skillbots) designed to interact with a user and fulfill specific types of tasks, such as tracking inventory, submitting a timecard, creating an expense report, ordering food, checking a bank account, making a reservation, purchasing a widget, etc. For example, in the embodiment shown in FIG. 1 , digital assistant 106 includes skills 116-1, 116-2, .... For purposes of this disclosure, the term "skill" is used synonymously with the term "skillbot."
[0060] Each skill associated with a digital assistant helps a user of the digital assistant complete a task through a conversation with the user, where the conversation can include a combination of text or auditory input provided by the user and responses provided by the skill bot. These responses can be in the form of text or auditory messages to the user and / or with simple user interface elements (e.g., selection lists) presented to the user for the user to make a selection.
[0061] There are various ways in which skills or skillbots can be added to a digital assistant. In one example, a skillbot can be developed by a company and then added to a digital assistant using DABP 102. In another example, a skillbot can be developed and created using DABP 102 and then added to a digital assistant created using DABP 102. In yet another example, DABP 102 provides an online digital store (referred to as a "skill store") that offers multiple skills aimed at a wide range of tasks. Skills offered through the skill store can expose various cloud services. A user 104 of DABP 102 can access the skill store via DABP 102, select a desired skill, and add the selected scale to a digital assistant created using DABP 102. Scales from the skill store can be added to a digital assistant as is or in modified form (e.g., a user of DABP 102 can select and clone a specific skill offered by the skill store, customize or modify the selected skillbot, and then add the modified skillbot to a digital assistant created using DABP 102).
[0062] In one embodiment, digital assistants created and deployed using DABP 102 are implemented using a masterbot / child (or sub)bot paradigm or architecture. According to this paradigm, the digital assistant is implemented as a masterbot that interacts with one or more child bots, which are skillbots. For example, in the embodiment shown in FIG. 1, digital assistant 106 includes masterbot 114 and skillbots 116-1, 116-2, etc., that are child bots of masterbot 114. In one embodiment, digital assistant 106 itself functions as the masterbot.
[0063] A digital assistant implemented according to the master-child bot architecture allows a user of the digital assistant to interact with multiple skills through a unified user interface. When a user engages with the digital assistant 106, user input is received by the master bot 114, which processes the user input to identify the user request and, based on the processing, determines whether the user-requested task can be handled by the master bot 114 itself. If not, the master bot 114 selects an appropriate skill bot 116-1, 2, or 3 to handle the user request and routes the conversation to the selected skill bot 116-1, 2, or 3. This allows a user 108 to interact with and use several skill bots configured to perform specific tasks through a common, single interface. For example, in the case of a digital assistant 106 developed for an enterprise, the master bot 114 of the digital assistant 106 can interface with skill bots 116-1, 116-2, etc. that have specific functions, such as a CRM bot to perform functions related to customer relationship management (CRM), an ERP bot to perform functions related to enterprise resource planning (ERP), an HCM bot to perform functions related to human capital management (HCM), etc. In this way, an end user or consumer 108 of the digital assistant 106 only needs to know how to access the digital assistant 106.
[0064] In a masterbot / childbot infrastructure, the masterbot is configured to be aware of a list of skillbots. The masterbot has access to metadata identifying various available skillbots, and for each skillbot, has access to each skillbot's capabilities, including the tasks that can be performed by each skillbot. Upon receiving a user request in the form of an utterance, the masterbot is configured to identify or predict a specific skillbot from multiple available skillbots that can best process or handle the user request. The masterbot then routes the utterance (or a portion of the utterance) to that specific skillbot for further processing. Thus, control flows from the masterbot to the skillbot. A masterbot can support multiple input and output channels.
[0065] 1 illustrates a digital assistant 106 with a masterbot 114 and skillbots 116-1, 116-2, and 116-3, but this is not intended to be limiting. A digital assistant can include various other components (e.g., other systems and subsystems) that provide the functionality of the digital assistant. These systems and subsystems may be realized solely in software (e.g., code, instructions stored on a computer-readable medium and executable by one or more processors), solely in hardware, or in an implementation using a combination of software and hardware.
[0066] DABP 102 provides infrastructure and various services and features that enable users to create digital assistants using DABP 102, including one or more skillbots associated with the digital assistant. For example, a skillbot can be created by cloning an existing skillbot and then modifying the skillbot, or it can be created from scratch using tools and services provided by DABP 102. In one embodiment, DABP 102 provides a skill store or skill catalog that offers multiple skillbots for performing various tasks. Users of DABP 102 can clone skillbots from the skill store and create new skillbots.
[0067] DABP 102 also allows a user (e.g., a skillbot designer) to create a skillbot from scratch. In a particular embodiment, at one high level, creating a skillbot includes the following steps: (1) Set up the settings for the new skill bot (2) Configure one or more intents for the skill bot (3) Set an entity for one or more intents (4) Training the SkillBot (5) Create a dialog flow for your skill bot (6) Adding custom components to your skill bot (7) Test and deploy the skill bot.
[0068] (1) Set Settings for a New Skillbot—A skillbot designer can specify one or more invocation names for the skillbot being created. These invocation names can be used in utterances to explicitly identify and invoke the skillbot in the digital assistant. The skillbot designer can also specify example utterances for the skillbot. These example utterances represent utterances for the skillbot. When user input is received, the digital assistant's intent analysis engine compares the user input with these example utterances to determine whether a particular skillbot should be invoked.
[0069] (2) Set One or More Intents for the Skillbot—A skillbot designer can set one or more intents (also referred to as bot intents) for the skillbot being created. These intents identify tasks that the skillbot can perform for a user of the digital assistant. Each intent is given a name. For example, for a skillbot configured to help a user perform various banking transactions, the skillbot designer may specify intents for the skillbot such as "CheckBalance," "TransferMoney," and "DepositCheck." For each intent, the skillbot designer specifies a set of example utterances that represent and illustrate the meaning of the intent and are typically associated with the task performed by that intent. For example, for a balance inquiry intent, example utterances may include "What's my savings account balance?", "How much is in my checking account?", "How much money do I have in my account?", etc. Thus, typical user requests and permutations of statements can be specified as example utterances for an intent.
[0070] (3) Configuring Entities for One or More Intents of a Skill Bot—In some cases, additional context may be necessary to enable a skill bot to respond appropriately to a user request. For example, there may be situations where a user input utterance resolves to the same intent in a skill bot. For example, in the example above, the utterances "What's my savings account balance?" and "How much is in my checking account?" both resolve to the same balance inquiry intent, but these utterances are different requests for different things. To disambiguate such requests, one or more entities are added to the intent. Using the banking skill example, an entity called AccountType defines values called "checking" and "savings," which may enable the skill bot to parse the user request and respond appropriately. One or more entities may be specified for a particular intent configured for a skill bot. Thus, entities are used to add context to the intent itself. Entities help more fully describe intents and enable a skill to complete a user request. In one embodiment, there are two types of entities: (a) built-in entities provided by DABP 102 and (2) custom entities that can be specified by a skill bot designer. Built-in entities are general-purpose entities that can be used with a wide variety of bots. Examples of built-in entities include, but are not limited to, entities related to time, date, address, number, email address, duration, circulation period, currency, phone number, URL, etc. Custom entities are used for more customized purposes. For example, for a banking skill, an account type entity can be defined by a skill bot designer to enable various banking transactions by checking user input for keywords such as checking, saving, and credit card.
[0071] (4) Train the Skillbot—The skillbot is configured to receive user input, parse or otherwise process the received input, and identify or select an intent associated with the received user input. For this to occur, the skillbot must be trained. In one embodiment, the skillbot is trained based on configured intents for the skillbot and example utterances associated with those intents (collectively referred to as training data), thereby enabling the skillbot to resolve user input to one of the skillbot's configured intents. In particular embodiments, the skillbot is trained using training data and is represented by a model that enables the skillbot to identify what a user is saying (or, in some cases, what they are trying to say). DABP 102 provides a variety of different training techniques that can be used by a skillbot designer to train a skillbot, including various machine learning-based training techniques, rule-based training techniques, and / or combinations thereof, as described in detail herein with respect to a DAG-based framework. In one embodiment, a portion (e.g., 80%) of the training data is used to train the skillbot model, and another portion (e.g., the remaining 20%) is used to test or validate the model. Once trained, a skill bot can be used to address and respond to user utterances. In some cases, a user utterance may be a question that requires only a single answer and no further conversation. To address such situations, a Q&A (Question and Answer) intent can be configured for a skill bot. This allows the skill bot to output a response to a user request without the need to update the dialog definition. A Q&A intent is created similarly to a regular intent. However, the dialog flow for a Q&A intent is different from a regular intent.
[0072] (5) Create a Dialog Flow for the Skill Bot—The dialog flow specified for a skill bot describes how the skill bot responds as different intents for the skill bot are resolved depending on the user input it receives. The dialog flow defines the behavior or actions the skill bot takes (e.g., how the skill bot responds to user utterances, how the skill bot prompts the user for input, and how the skill bot returns data). The dialog flow is like a flowchart that the skill bot follows. Skill bot designers specify the dialog flow using a language such as Markdown. In one embodiment, a version of YAML called OBotML can be used to specify the dialog flow for a skill bot. The dialog flow definition for a skill bot serves as a model of the conversation itself, allowing skill bot designers to choreograph the interactions between the skill bot and the users it serves.
[0073] In one embodiment, a dialog flow definition includes three sections: (a) Context Section (b) Default transition section (c) State section.
[0074] Context Section - In the context section, the skill bot designer can define variables used in the conversation flow. Other variables that can be named in the context section include, but are not limited to, variables for error handling, variables for built-in or custom entities, user variables that allow the skill bot to recognize and persist user preferences, etc.
[0075] Default Transition Section - Transitions for a skill bot can be defined in the dialog flow state section or the default transition section. Transitions defined in the default transition section act as fallbacks and are triggered when there is no applicable transition defined in a state or when the conditions required to trigger a state transition cannot be met. The default transition section can be used to define routing that allows the skill bot to gracefully handle unexpected user actions.
[0076] State Section - A dialog flow and its associated behavior are defined as a series of temporary states that govern the logic within the dialog flow. Each state node in a dialog flow definition names a component that provides the functionality needed at that point in the dialog. In this way, you build states around components. States contain component-specific characteristics and define transitions to other states that are triggered after the component executes.
[0077] Special case scenarios can be handled using the state section. For example, you might want to give a user the option to temporarily exit a first skill they're working with and do something in a second skill within the digital assistant. For example, if a user is engaged in a conversation with a shopping skill (e.g., the user has made some selections for a purchase), the user might want to jump to a banking skill (e.g., the user might want to verify that they have enough money for the purchase) and then return to the shopping skill to complete the user's order. To address this, an action in a first skill can be configured to initiate an interaction with a second, different skill in the same digital assistant and then return to the original flow.
[0078] (6) Adding Custom Components to a Skillbot—As described above, a state specified in a dialog flow for a skillbot names a component that provides the necessary functionality corresponding to that state. The component enables the skillbot to perform the function. In one embodiment, DABP 102 provides a set of pre-configured components to perform a wide range of functions. A skillbot designer can select one or more of these pre-configured components and associate them with states in the dialog flow for the skillbot. A skillbot designer can also create custom or new components using tools provided by DABP 102 and associate the custom components with one or more states in the dialog flow for the skillbot.
[0079] (7) Testing and Deploying Skillbots - DABP 102 provides several features that allow skillbot designers to test the skillbots they are developing. The skillbots can then be deployed and included in a digital assistant.
[0080] While the above description describes how to create a skillbot, similar techniques can also be used to create a digital assistant (or masterbot). At the masterbot or digital assistant level, built-in system intents can be configured for the digital assistant. These built-in system intents are used to identify common tasks that the digital assistant itself (i.e., the masterbot) can handle without invoking a skillbot associated with the digital assistant. Examples of system intents defined for a masterbot include: (1) Exit, which applies when a user signals a desire to end the current conversation or context in the digital assistant; (2) Help, which applies when a user requests assistance or orientation; and (3) Unresolved Intent, which applies to user input that does not satisfactorily match the Exit and Help intents. The digital assistant also stores information about one or more skillbots associated with the digital assistant.
[0081] At the masterbot or digital assistant level, when a user inputs a phrase or utterance into the digital assistant, the digital assistant is configured to process and determine how to route the conversation. The digital assistant makes this determination using a routing model, which can be rule-based, AI-based, or a combination thereof. The digital assistant uses the routing model to determine whether the conversation corresponding to the user input should be routed to a specific skill for processing, handled by the digital assistant or masterbot itself according to built-in system intents, or handled as a different state in the current conversation flow.
[0082] In certain embodiments, as part of this processing, the digital assistant determines whether the user input identifies a skill bot using its invocation name. If an invocation name is present in the user input, it is treated as an explicit invocation of the skill bot corresponding to the invocation name. In such a scenario, the digital assistant can route the user input to the explicitly invoked skill bot for further processing. In the absence of a specific invocation, in some embodiments, the digital assistant evaluates the received user input and calculates confidence scores for the system intents and skill bots associated with the digital assistant. The calculated scores for the skill bots or system intents represent the likelihood that the user input represents a task that the skill bot is configured to perform or represents a system intent. System intents or skill bots whose associated calculated confidence scores exceed a threshold (e.g., a Confidence Threshold routing parameter) are selected as candidates for further evaluation. The digital assistant then selects a specific system intent or skill bot from the identified candidates for further processing of the user input. In particular embodiments, after one or more skill bots are identified as candidates, the intents associated with those candidate skills are evaluated (according to the intent model for each skill), and a confidence score is applied to each intent. Generally, intents with a confidence score above a threshold are treated as candidate flows. If a particular skill bot is selected, the user input is routed to that skill bot for further processing. If a system intent is selected, one or more actions are performed according to the selected system intent.
[0083] 2 illustrates an integrated system 200 including a bot system (such as the digital assistant or bot system 106 described with respect to FIG. 1 ) and a bot analytics system 210 for monitoring, analyzing, visualizing, and improving the performance of the bot system, according to certain embodiments. As illustrated, the bot system 205 may include a connector 215 and multiple bot engines 220, such as a dialog engine 222, an intent modeler 224, an entity resolver 226, and custom components 228. The bot system 205 may also include a database 230, an administration API 235, a user interface 240, and a UI server 245. The bot analytics system 210 may include a collector 250, an enrichment engine 255, a database 260, and a REST server 265. The bot analytics system 210 may also include a user interface 270 and a UI server 275. The collector 250 of the bot analytics system 210 may collect events 290 that occur in the bot system 205. Feedback 285 from the bot analytics system 210 may be provided to the bot system 205 via user interface 270 and user interface 245.
[0084] Connectors 215 may act as an interface between bot system 205 and one or more end users through one or more channels, such as channels 286 and 287. Each channel may be, for example, a messaging channel (such as Facebook Messenger, Facebook WhatsApp, WeChat, Line, Kik, Telegram, Talk, Skype, Slack, or SMS), a virtual private assistant (such as Amazon Dot, Echo, or Show, Google Home, Apple HomePod, etc.), a mobile and web app extension that extends a native or hybrid / responsive mobile app or web application with chat functionality, or a device or app with an interface that uses voice-based input (e.g., Siri, Cortana, Google Voice, or other voice input for interaction). In some embodiments, connectors 215 can normalize content from different channels so that bot system 205 can analyze the content across different messaging application systems. The content normalization process may include formatting content from each type of messaging application into a common format for processing. In some embodiments, bot system 205 may include one or more connectors for each of the channels. The intent modeler 228 may be used to determine an end user's intent associated with an end user's utterance. After normalization, the probability that a word occurrence indicates a certain intent may be determined. In some instances, the probabilities may be combined using basic probability arithmetic as if they were independent.
[0085] Examples can also be provided to prevent the model from making incorrect assertions. For example, certain subphrases or words that only appear for certain intents can cause incorrect assertions. Similarly, examples can prevent the model from synthesizing broad rules using similar sentences belonging to different intents for training.
[0086] The entity resolver 224 can identify entities (e.g., objects) associated with an end user's intent. For example, in addition to the end user's intent identified by the intent modeler 228, such as "order a pizza," the entity resolver 224 can resolve entities associated with the intent, such as the type of pizza, toppings, etc.
[0087] The dialog engine 226 may be used to process conversations between an end user and a bot system. For example, the dialog engine 226 may respond to an end user's utterances based on the end user's intents identified by the intent modeler 228 and entities associated with the end user's intents identified by the entity resolver 224. In some embodiments, the dialog engine 226 may use a state machine that includes user-defined states (e.g., the end user's intents) and actions taken in and from the states to process a conversation with the end user.
[0088] Custom components 222 can include customized modules for a particular bot system. For example, a financial bot can include custom components that can be used to check balances, transfer funds, or pay bills, for example.
[0089] The database 230 may be used to store data for the bot system, such as data for classification models, conversation logs, etc. The management API 235 may be used by an administrator or developer of the bot system to manage the bot system, such as retraining classification models, editing intents, or otherwise modifying the bot system. The administrator or developer may manage the bot system using the user interface 245 and the UI server 240.
[0090] Various events 290 may be generated while the bot system 205 is operating. The events 290 may be generated based on one or more instructions included in the bot system. For example, an event 290 may be generated when the bot system 205 enters a particular state, the particular state being defined by an administrator or developer of the bot system. Once an event 290 is generated, the event 290 may be collected, stored, and analyzed by the bot analytics system 210. When capturing an event 290, additional information associated with the event 290 may also be collected, and the additional information may indicate the current context in which the event 290 is generated.
[0091] For example, a conversation event may be generated by the dialog engine 226. The conversation event may include a message (referred to as a received msg) received by the bot system from an end user device. The received msg may include one or more of the following parameters or variables: message content, time the message was received by the bot system 205, language of the received message, device properties (e.g., version or name), operating system properties (e.g., version or name), geolocation properties (e.g., Internet Protocol address, latitude, longitude, etc.), identification information (e.g., user ID, session ID, bot system ID, tenant ID, etc.), timestamp (e.g., device created, device sent, collector derived timestamp), channel, etc.
[0092] Conversation events may also include messages (referred to as outgoing msgs) sent by the bot system 205 to the end user device. The outgoing msgs may include one or more of the message content (e.g., the text or HTML of the message), the time the message is sent by the bot system, the language of the message, the creator of the message (e.g., the bot system or the end user device), device properties, operating system properties, browser properties (e.g., version or name), app properties (e.g., version or name), geolocation properties (e.g., Internet Protocol address, latitude, longitude, etc.), identification information (e.g., user ID, session ID, bot system ID, tenant ID, etc.), channel (e.g., Facebook or Webhook), etc.
[0093] The dialog engine 226 can also generate dialog state execution events. As described above, the dialog engine 226 can use a state machine to determine the flow of a conversation with an end user. The state machine can include a set of states and rules for transitioning between states. The dialog engine 226 can execute a state machine for each end-user conversation and generate a dialog state execution event for each state through which the dialog engine 226 advances to process an end-user utterance. Attributes of the dialog state execution event can include, for example, a state name, a component name, a next action, an entity match, an intent match, variables, a user query statement, a response statement, an execution time, a communication language, a device property, an operating system property, a geolocation property, an identification information, a timestamp, a channel, etc. The state name can be the name of the currently executed state or an "error state." The component name can be the name of the bot component to be executed for the current state. The next action can be the next action to be executed. The entity match can be the entity to be resolved in the current message. The intent match can be the intent to be resolved with a score value. The variable can be the variable value for the current state. The query statement may be a message sent by an end user. The response statement may be a message sent to an end user. The execution time may be a timestamp of a completed state execution. The communication language may be the language of the messages being spoken. The device and / or operating system property may be associated with an end user interacting with the bot system. The browser and / or app property may be associated with an end user interacting with the bot system. The geolocation property may be the location of an end user interacting with the bot system.
[0094] An intent resolution event may occur as a result of execution of the intent modeler 228. The intent modeler 228 may use a trained or otherwise defined classification model to identify an end user's intent from a set of intents based on the end user's utterance. The results of the intent classification may be captured as intent resolution event attributes, which may include, for example, the final intent classification result (e.g., the identified intent) and a confidence score associated with each respective intent in the set of intents.
[0095] The entity resolver 224 may generate entity resolver events. An entity is an object associated with an end user intent. Entity definition rules may be determined when the bot system is created. For example, in addition to resolving an end user intent such as "order a pizza," the bot system may also use the entity resolver 224 to resolve associated entities, such as pizza type, toppings, etc. Entity resolver events may be captured during entity resolution. Examples of attributes associated with an entity resolver event may include the entity name, the applied rule, the search term, the resolved state, the query statement, the entity type, the execution time, the communication language, the device properties, the operating system properties, the browser properties, the app properties, the geolocation properties, the identification information, the timestamp, the channel, etc. The entity name may be the name of the entity currently being resolved. The applied rule may be, for example, predecessor, successor, or aggregation. The search term may be from, to, destination, origin, etc. The resolved state may be the dialog state to be resolved for the entity. The query statement may be a message including an entity value. The entity type may be system or derived. The execution time may be a timestamp of the entity resolution. The communication language may be the language of the messages in the conversation. The device and / or operating system property may be associated with the end user interacting with the bot system. The browser and / or app property may be associated with the end user interacting with the bot system. The geolocation property may be the location of the end user interacting with the bot system.
[0096] Custom components 222 may also generate events, such as predefined events or custom events. Predefined events may be properties captured during execution of the custom component. Examples of attributes of predefined events may include a component name, an event name, a payload, an execution time, a communication language, a device property, an operating system property, a browser property, an app property, a geolocation property, an identification, a timestamp, a channel, etc. The component name may be the name of the currently executing custom component. The event name may be invoked, invoked failed, replied, or reply failed, etc. The payload may be, in the case of a failure, the reason for the failure, a stack trace, etc. The execution time may be a timestamp indicating when the event occurred. The communication language may be the language of the message being spoken. The device and / or operating system properties may be associated with an end user interacting with the bot system. The browser and / or app properties may be associated with an end user interacting with the bot system. The geolocation property may be the location of an end user interacting with the bot system.
[0097] The custom component 222 can also issue custom events during execution of the custom component. Attributes of a custom event may include, for example, a component name, an event name, a custom payload, an execution time, a communication language, a device property, an operating system property, a browser property, an app property, a geolocation property, an identification, a timestamp, a channel, and the like. The component name may be the name of the currently executing custom component. The event name may be a user-defined event name (e.g., balance lookup). The payload may be, for example, ("Amount": "USD100", "Account": "Current"). The execution time may be a timestamp indicating when the event occurred. The communication language may be the language of the message being spoken. The device and / or operating system properties may be associated with an end user interacting with the bot system. The browser and / or app properties may be associated with an end user interacting with the bot system. The geolocation property may be the location of an end user interacting with the bot system.
[0098] Error and timeout events may also be generated by the bot system 205 during execution. An error event may be generated when an error occurs. A timeout event may be generated when an end-user conversation has been inactive for a period of time, which may be configured in a channel.
[0099] The bot analytics system 210 can collect events 290 and additional information as the bot system 205 converses with end users and generates corresponding events. For example, a collector 250 can collect events 290 and additional information and send the collected information to a queue. In some embodiments, the collector 250 can be configurable and programmed to collect different events and / or event attributes described above as desired. For example, the collector 250 can be configured to capture dialog state attributes, intent resolution attributes, entity resolution attributes, error and timeout attributes, or a combination thereof. In some embodiments, the collector 250 can also be configured to collect information about events 280 generated by systems other than the bot system.
[0100] The enrichment engine 255 can verify and enrich the collected events and other information and write them to the database 260. For example, based on the collected IP addresses, the enrichment engine 255 can determine the location of the end user associated with the IP address. As another example, the enrichment engine 255 can extract specific features from the collected information, such as determining the web browser or channel used by the end user. The REST server 265 can analyze the enriched events and other information and generate various reports based on certain aggregate metrics 295. The reports can be displayed to the owner, administrator, or developer of the bot system 205 on the user interface 270 via the UI server 275. The owner, administrator, or developer of the bot system 205 can provide feedback 285 to the bot system 205 to improve the bot system 205.
[0101] Techniques for Providing Insight into the Performance of Bot Systems FIG. 3 is a simplified flowchart 300 illustrating an example of a process for monitoring, analyzing, visualizing, and improving the performance of a bot system according to certain embodiments. The process illustrated in FIG. 3 may be performed by a bot analysis system, such as the bot analysis system described with respect to FIG. 2. The process illustrated in FIG. 3 may be implemented in software (e.g., code, instructions, programs) executed by one or more processing units (e.g., processors, cores) of the respective system, hardware, or a combination thereof. The software may be stored on a non-transitory storage medium (e.g., on a memory device). The process presented in FIG. 3 and described below is intended to be exemplary and non-limiting. While FIG. 3 depicts various process steps occurring in a particular sequence or order, this is not intended to be limiting. In some alternative embodiments, the steps may be performed in several different orders, or some steps may be performed in parallel.
[0102] In step 310, an event collector of the bot analytics system, such as collector 250 described with reference to FIG. 2, can be configured to capture specific attributes associated with specific events generated by the bot system. As described above, events generated by the bot system can include, for example, conversation events, dialog state execution events, intent resolution events, entity resolution events, and events generated by custom components. The event collector can be configured to collect desired attributes associated with desired events or various events. In step 320, the event collector can collect attributes of events that occurred during a conversation with the bot system based on the event collector's configuration. In step 330, attributes of events that occurred during a conversation and were captured by the event collector can be aggregated and analyzed. As described above, the event attributes can also be enriched and stored in a database before being aggregated based on several aggregation metrics. In step 340, various analytical insight reports about the conversation can be generated based on the aggregate metrics, such as an overview report, an intent report, a path report, a conversation report, a bot improvement report, or any combination thereof, as described in detail below. In step 350, at the request of a bot owner, administrator, or developer, the analysis system may provide information about one or more conversations that meet certain criteria, such as conversations that end in a particular state (e.g., an incomplete state, an aborted state, or an error state). The bot owner, administrator, or developer may filter or select conversations by selecting different options provided through a graphic user interface to monitor, analyze, visualize, debug, or improve the performance of the bot system.
[0103] As described above, the analysis reports may include, for example, an overview report, an intent report, a path report, a conversation report, a bot improvement report, or any combination thereof. The overview report may include, for example, a trend chart showing completed / incomplete conversations over time and a bar graph showing conversation counts for each intent. The intent report may include, for example, information about conversations and errors for each intent, as well as the most or least popular conversation flows. The path report may include a chart showing different conversation flows for the bot system, as well as information such as conversation counts and error metrics. The conversation report may provide an overview of the conversation log. The bot improvement report may provide information about intent classification results, which may be used by an administrator or developer of the bot system to correct some classification results and retrain the classification model using the corrected classification results.
[0104] In some embodiments, the report may include information indicating one or more utterances from one or more end users for which an intent could not be identified (sometimes referred to as unresolved intents). For example, the bot system may calculate the likelihood that an utterance or an utterance from an end user is associated with an intent. If the likelihood is below a threshold, the utterance may not be associated with an intent. If the utterance is not associated with any intent, the bot system may not be able to converse further. Instead, the bot system may have to request one or more additional questions to identify the intent. By presenting information about utterances for which an intent could not be identified, the opinion report may enable the user to reconfigure the bot system to properly identify the intent when receiving a new utterance similar to the utterance. For example, the opinion report may present one or more potential intents based on the likelihood and allow the user to select an intent from the one or more potential intents and add the utterance to a training dataset used to train a classification model to identify intents from utterances.
[0105] In some embodiments, a user can be presented with information about which conversations were successful and which were not. Additionally, a user can drill down into conversation data to identify errors and improve the performance of the bot system. By analyzing the path of an end-user conversation, one or more performance metrics may be provided for different conversation types (e.g., intents). For example, a user can view, per intent, how many conversations were successful and how many were unsuccessful. In some embodiments, there may be predefined thresholds for determining what percentage of successful conversations are considered good, what percentage are considered medium, and what percentage are considered poor. Performance metrics for conversation success may be shown in different colors according to the thresholds. A user can also view the source (e.g., Facebook, webhook, etc.) of each visit to the bot system. A user can view the total number of conversations, state length, time length per intent, etc. Conversations may be grouped into predefined types, such as abandoned and completed. Conversation metrics may be filtered based on conversation type to view a subset of conversations.
[0106] In some embodiments, conversations can be viewed by state. A conversation flow (or path) may be a graphical visualization that includes one or more states of a conversation. In some embodiments, paths may be filtered by conversation type (e.g., abandoned, most popular, etc.). In some embodiments, error conditions for a path can be viewed, for example, for a given state in the path.
[0107] In some embodiments, metrics and / or metadata can be viewed for a route. Metrics may include the number of instances of the route, the length of the route, the route's popularity ranking, and the average time to complete the route.
[0108] In some embodiments, an instance of a conversation type may be viewed and analyzed through a series of states. In such embodiments, the states and conversations may be synchronized to identify errors and performance issues.
[0109] Metrics can be calculated based on one or more of the events described above. Metrics may be calculated daily, weekly, monthly, or over a custom range. Examples of basic metrics include: (1) number of unique, aggregate, new, active, inactive, or returning end users; (2) total sessions / conversations; (3) average, maximum, median, or minimum conversation duration; (4) average time between two conversations for an end user; (5) sentiment (positive, negative, or neutral); (6) number of end users, conversations, or unique end users; (7) average, maximum, median, or minimum utterance count; etc. Each metric may be filtered by channel (e.g., Facebook or webhook), geography (e.g., country, state, city, or zip code), language (e.g., English or Spanish), device and its type (e.g., iPhone, Samsung, Motorola, LG, HP, or Dell), OS and its version (e.g., Windows, iOS, Android, Mac, or Linux), browser and its version (e.g., Firefox, Safari, Internet Explorer, or Chrome), app name and its version (e.g., integrated chat within the app), agent type (e.g., bot system or user device), etc. In some examples, custom events from custom components may have custom insight reporting developed by the bot developer using customer experience analytics (CxA).
[0110] Conversations may be analyzed using buzz graphs and / or word clouds of the most frequently used words. Conversations can also be sorted by ranking for each category. Comparative buzz graphs for utterances and conversations can also be used.
[0111] In some embodiments, the bot analytics system may identify which parts of a conversation with the bot system are working well and which parts are not. The bot analytics system may allow a user to drill down into conversation history, track abandoned / completed intents and conversations, identify the most popular / least popular paths taken for completed paths based on depth, time, or both, or identify the history of all abandoned conversations with transcripts to troubleshoot why a conversation was abandoned (e.g., number of states passed through, error conditions, etc.). In some embodiments, the results generated by the bot analytics system may be filtered. Filtering can be based on channel, length, intent, abandonment / completion, etc.
[0112] The following description describes some example analytical insight reports and graphic user interface screens. Note that these examples are for illustrative purposes only and are not intended to limit the scope of the present disclosure to any particular example.
[0113] Digital Assistant Perspective FIG. 4A illustrates an example graphical user interface screen 400 displaying summarized information 405 of conversations associated with a digital assistant, according to certain embodiments. As described herein, a digital assistant is an artificial intelligence-driven interface that helps users accomplish various tasks in natural language conversations. For each digital assistant, one or more skills or chatbots are assembled. The one or more skills or chatbots can focus on specific types of tasks, such as tracking inventory, submitting time cards, and creating expense reports. Summarized information 405 may be generated for conversations between a user and one or more chatbots for the digital assistant. Summarized information 405 can be associated with any channel and any locale, or any combination of channel and locale. Summarized information 405 may also be generated for conversations that occurred within a specific time period, such as the last 90 days. For each digital assistant, users can view an insights report, which is a developer-oriented analysis of usage patterns. In the Digital Assistant Perspective Report, users can see (i) Total Conversations - the number of conversations over a given period and their completion rate, and (ii) How Skills are Performing - the popularity of skills on the Digital Assistant.
[0114] To access the insights report, a user may open the digital assistant and then select the insights icon 410 in the navigation bar, as shown in FIG. 4A. As discussed in more detail below with respect to skill insights, a user can also view detailed reports for individual skills, showing how frequently each intent is invoked (and what percentage of those invokes are completed), the path the user takes through the skill, and more. The screenshot of the Total Conversations report includes the number of conversations over a user-selectable time range. These conversations may be divided into completed conversations and errors (conversations that did not complete due to system processing errors, infinite loops, or timeouts). On the left side of the report is a table with status and count columns. There are rows for completed, errors, and unresolved. On the right side is a graph showing the number of completed and other conversations over a 30-day period.
[0115] Figure 4B shows an interface screen 415 of the trends tab of the "How Are My Skills Performing" report, showing the number of conversations per skill. On the left side of the interface screen 415 is a pie chart 420 showing the percentage of conversations using each skill. The graph on the right shows the number of completed conversations for each skill over a 30-day period. Figure 4C shows an interface screen 425 of the summary tab of the "How Are My Skills Performing" report, showing the number of completed conversations, unresolved conversations, and errors for each skill. The interface screen 425 includes a table with columns for skill, completion rate, errors, unresolved, and performance history.
[0116] LOB view FIG. 5A shows an example graphical user interface screen 500 displaying summarized information for conversations associated with a digital assistant, according to certain embodiments. These dashboard insight reports can be used to measure how well a company's public skills complete conversations, both individually and as a group. More specifically, these reports can be used to return the following key performance indicators (KPIs) for all skills (or a selection of those skills) currently produced by a given company for a given period: (i) Total Conversations—the total number of conversations segmented by completed or incomplete; (ii) Completed Conversations—the ranking of the selected skill by the number of completed conversations; and (iii) Incomplete Conversations—the ranking of the selected skill by the number of incomplete conversations. Customers may not have completed those conversations because they lost interest or because they were interrupted by an error handled by the system (rather than the skill itself), a timeout, or an infinite loop caused by a flaw in the skill definition. For each skill, the report provides an overall count of timeouts, system processing errors, and infinite loops for the period. The report renders a pie chart to show how much these factors contributed to the overall impairment of the skill.
[0117] Interface screen 500 shows the Total Conversations report, which is part of the LOB view. The report is organized into four panels: from left to right: Total Conversations, Completed Conversations, Incomplete Conversations, and Errors. Total Conversations is a pie chart comparing completed and incomplete data series. Completed Conversations displays a list of skills ranked by the number of completed conversations. The user can sort this list using Completed Descending and Completed Ascending options. Incomplete Conversations also has a list of skills, but now they are ranked by the number of incomplete conversations. The user can also sort this list using Completed Descending and Completed Ascending options. Adjacent to this list is the Errors pie chart, which compares data series for timeouts, infinite loops, and system processing errors.
[0118] Figure 5B shows an interface screen 505 displaying the "How Are My Skills Performing" report, which is part of the LOB view. In interface screen 505, the "Individual Skills" tab is selected. This report displays a set of rows (one for each skill) with the following columns (from left to right): Skill, Completion Rate, Errors, Unresolved Intents, and Performance History. At the top left of the report is a sorting option drop-down menu. In this image, Global Ascending is selected. This report can be used to view the conversation completion rates for all of the skills for a selected time period and on a per-skill basis. More specifically, this report can be used to find how skills compare to each other in terms of completion rate for that period, i.e., the number of completed conversations taken relative to the total conversations for that period. For each skill, the report presents a "Performance History" line graph, which is a tool for assessing whether the skill's completion rate is increasing, decreasing, or stable over that period. The report includes other factors that affect the skill's performance during this period: errors (system processing errors, infinite loops, timeouts) and the number of unresolved intents. For these, the report counts the number of intents that could not be resolved up to the confidence threshold for all uncompleted conversations during that period.
[0119] FIG. 5C shows an interface screen 510 showing performance trends for all of the selected skills, which can be viewed using a stacked area graph for the entire ecosystem report that is part of the LOB view. In interface screen 510, the stacked area graph plots the completed and incomplete data series. The y-axis of the graph shows the number of conversations. The x-axis plots the day (e.g., July 7, August 8). The stacked area graph contrasts completed conversations with conversations that the customer was unable to complete due to unresolved intents (or other issues) and conversations that remained incomplete due to customer abandonment.
[0120] Figure 5D shows interface screen 515 displaying the "How Have My Bots Added Value?" report, which is part of the LOB view. In interface screen 515, a line graph plots two series, agents and bots. The y-axis of this graph is the number of hours. The x-axis plots the day (e.g., July 7, August 8). For skills that are integrated with human agents through a service like Oracle Service Cloud, users can use this report to compare the number of hours these skills spent handling user tasks themselves with the number of hours that human agents had to spend helping customers out. (Ideally, skills should be doing the majority of the work.) FIG. 5E shows an interface screen 520 that displays the "How Are Users Interacting with Skills?" report, which is part of the LOB view. Interface screen 520 provides a clustered bar graph where each bar graph is plotted from data from the user channel and the agent channel. The y-axis displays counts. The x-axis names the skill that corresponds to each bar graph cluster. This popularity report compares customer traffic on different channels routed to each skill for a selected time period. The graph also includes channels for agent integration, if present.
[0121] Skills View FIG. 6A shows an example graphical user interface screen 600 displaying summarized information for conversations associated with a digital assistant, according to certain embodiments. These dashboard insight reports can be used to provide developer-oriented analytics that point out issues with skills so users can address them before they cause problems. To access the reports, a user may open the digital assistant and then select the insight icon in the navigation bar. Dashboard reports include an overview report, an intent report, a path report, a conversation report, a retrainer, and an optional export interface. Overview—Presents the user with a graph of total conversation metrics for conversations abandoned or completed over time by users of the enterprise's skills. This report also shows the user the top intents, along with execution metrics, most used channels, and conversation duration and error counts. The overview report is also the user's access point for intent and conversation reports. Intent—Provides intent-specific data and information for execution metrics (state, conversation duration, and most and least popular paths). Path—Shows a visual representation of the conversation flow for an intent. Conversation - Viewed in the context of the dialog flow and in the chat window, Skills - Displays the actual transcript of the user dialogue. Retrainer - Allows users to get insights to improve their skills through gradual self-study. Export - Allows users to download insight data into a CSV file that they can use to create their own reports.
[0122] Figure 6B shows an interface screen 605 showing the Overview report, which is part of Skills Insights. The Overview report is a dashboard whose key performance indicators and charts show your skill in terms of the number of conversations the skill completed or failed to complete for a given period of time. In interface screen 605, the upper left side of the image shows the breadcrumb path for the Insights report: Overview (selected here) > Intents > Paths > Conversations > Retrainer. Immediately to the right is a date picker that reads Last 30 Days. Immediately below the trail is a section titled Conversation Trends. Within it is a line graph with two trend graphs: Incomplete and Completed. The y-axis is conversation count, and the x-axis tracks time in terms of months and years. In this image, the cursor is hovering over the Incomplete graph to show point-in-time statistics.
[0123] Figure 6C shows the interface screen 610 for a segment of the overview view report. This is a section called Intents. Within it is a horizontal stacked bar graph. Its segments (as identified by the text directly below the bar graph) are incomplete and completed. The y-axis of this graph is Intents, and the x-axis is Conversation Count. In this image, the cursor hovers over one of the incomplete segments to reveal the sequence-group-value statistics for that point in time. From this high-level view, the user can focus on the intents that are causing the incomplete conversations. The user can also see whether the frequency of use for these intents supports or contradicts the user's use case. Do the number of completed conversations for intents that serve secondary purposes exceed the number of completed conversations for the user's primary intent? To put this in more practical terms, has the user's pizza-ordering skill become their complaint-filing skill? Figure 6D shows the interface screen 615 for a segment of the overview view report. This is a section called Conversations. Within it, key performance indicators are displayed, which are also hyperlinks that give the user access to other view reports. These indicators are: Conversations (total), which is broken down by completed and incomplete. In this image, the cursor hovers over the latter; top channels; average duration; average status; and error conditions.
[0124] FIG. 6E shows an interface screen 620 that displays the Intent Report, which is part of the Skills View. The Intent Report provides the user with a more detailed look at user traffic per intent for a given period of time. While the user already knows the number of completed or incomplete conversations for each intent on the Overview page, the Intent Report shows the user how these conversations flowed through the dialog flow definition by displaying the paths taken and the average length of time it took to reach the endpoint. Using the Intent Report, the user can isolate problematic parts of the dialog flow that are preventing the conversation from completing. The user can also use this report to improve the dialog flow. In some embodiments, the Intent Report renders the dialog flow as a topographical map, similar to a Transit Map, except that here, each stop is a state. To show the user how the conversation is progressing (and to aid user debugging), the map identifies the components for each state along the way. The user can scroll through this path to see where values slotted from user input drove the conversation forward, and where the conversation stalled due to incorrect user input, timeouts due to lack of user input, system errors, or other issues. The final stop in a completed path is green, but for incomplete paths where these issues occur, it is red. Because the report returns the intents defined for a skill over a given period, its content changes to reflect intents added, reassigned, or removed from the skill at various times. For each intent, the user can switch between views of completed and incomplete conversations for a given period.
[0125] For incomplete conversations, the user can identify the state in which these conversations ended using the Incomplete Status horizontal bar graph, as shown in Figure 6E. Graph 625 helps users spot recurring issues because it indicates the number of conversations in which a particular state was a failure point. Directly below the Opinion Report-Wide Filter is the Opinion Report navigation path: Intent (selected here) > Path > Conversations > Retrainer > Export. At the top right of the screen is a date picker (in this screen capture, it displays "Last 365 Days"). Above that is a status message for refreshing the opinion data. It reads "Last updated 5 minutes ago." Immediately to the left is a "Refresh" icon. At the top left is an edit icon. Next to that are the Opinion Report-Wide Filter, Channel, and Locale. In this screen capture, they are set to Channel: All and Locale: All. Immediately to the right of these is a "Reset to All" option. Intent is displayed on the far left of the report. To their right, parallel to the first intent, is a results drop-down menu. In this image, the Incomplete option is selected. The report is divided into three distinct sections: Incomplete States: A horizontal bar graph. Its y-axis indicates the state. The x-axis indicates the number of conversations. In this screen capture, one of the bar graphs is selected to invoke hover text explaining why the conversation stopped at this state: timeout. Error Conditions: Shows errors for the selected state in the bar graph, broken down by error type and # of instances. Most Incomplete Paths: A set of topographical representations of incomplete execution paths. For each of these paths, the report displays two indicators: count (number of conversations through the path) and average duration (in seconds). The user can also scroll along the path to see previous states. As explained in detail herein, path reporting allows the user to know why the flow ended at this state (meaning an error, timeout, or bad user input).
[0126] For a complete conversation, the user can use the statistics and path in the completion view as an indicator of the user experience, as shown in Figure 6F. For example, the user can use report 630 to see if the time spent is appropriate for the task, or if the shortest path still results in a dampened user experience that encourages the user to drop off. For example, could slotting values using a composite bag entity instead of prompt and value-setting components guide the user through the skill more quickly? Immediately below the View Report-Wide Filter is the navigation path for this View Report: Intent (selected here) > Path > Conversation > Retrainer > Export. At the top left of the screen is a date picker (in this screen capture, it displays "Last 30 Days"). Above it is a status message for refreshing the view data. It reads "Last updated 1 minute ago." Immediately to the left is a "Refresh" icon. At the top left is an edit icon. Next to that are the View Report-Wide Filter, Channel, and Locale. In this screen capture, they are set to Channel: All and Locale: All. Immediately to the right of these is a "Reset All" option. Intents are displayed on the far left side of the report. To their right, parallel to the first intent, is a Results drop-down menu. In this image, the Completed option is selected. With this option selected, the report outputs a section called Most Completed Paths, which is a set of topographical representations of completed execution paths. For each of these paths, associated on the left side with each path are two indicators: Count (number of conversations through the path) and Average Duration (in seconds). Above the paths are a series of indicators for the group of completed paths returned by the report. These are Path; Second Average. This number is further broken down by Fastest and Slowest; and State Average. This number is further broken down by Shortest and Longest.
[0127] In addition to the duration and path of task-oriented intents, the intent report also returns utterances that could not be resolved. To view these utterances, click on an unresolved intent. Figure 6G shows an interface screen 635 for a segment of the intent perspective report. At the top left is the navigation path for the perspective report: Intent (selected here) > Path > Conversation > Retrainer > Export. Intents are displayed on the far left side of the report. In this screen capture, an unresolved intent is selected. As a result, the screen populates two panes: Closest Prediction: a horizontal bar graph. The y-axis is the intent, and the x-axis is the intent count. Top Unresolved Utterances (immediately to the "Closest Prediction" pane): The phrase and score columns are used to rank the utterances. This report does not show path or speed because they do not apply to this user input. Instead, the bar graph ranks each intent by the number of utterances that either could not be resolved to any intent, or had the potential to be resolved (meaning the system could have guessed the intent) but were prevented from doing so by a low confidence score. The user can view these candidate utterances sorted by probability score by clicking on an intent in the bar graph. In some embodiments, these are the same utterances returned by the default search criteria in the Retrainer report, so the user can add them there.
[0128] 6H shows an interface screen 640 illustrating path reporting, which is part of the Skills view. Path reporting allows users to discover how many intent-specific paths in the dialog flow a conversation has taken over a given period of time.
[0129] It shows the user the number of conversations maintained between each state, and the different execution paths taken as the conversations branched due to values being set (or not being set) or stalled due to some other issue, such as a malfunctioning custom component. Figure 6H illustrates a section of the execution path for an intent. It looks like a subway station, starting on the left and ending on the right. In between, the paths can branch horizontally. The various states along the way resemble train stops. The states are connected both horizontally and vertically with directional arrows. Each arrow has a number representing the number of conversations carried from one state to another. When a path branches, the number of conversations that remained stable on the horizon decreases as the path splits in different directions, carrying the conversations accordingly.
[0130] For an intent, when a query is performed on this report for an incomplete execution path, the user can also select the final state. By clicking the final state, the user can find out more about the success or failure of the conversation from the error utterance or the last customer utterance displayed in the details panel. Figure 6I shows the statistics interface screen 645 that the path view report displays when the user clicks on the final state in the execution path. Information specific to this state is displayed in the panel. The panel is named after the highlighted state and has the following sections: Abandoned—with two subsections: Timeouts and Errors; Phrases; and Conversation—which is a hyperlink that opens the Conversation View Report. The report displays a null response for any customer utterance that is blank (or otherwise not plain text) or contains unexpected input. For non-text responses that are postback actions, it displays the payload of the most recent action. For example: {"orderAction":"confirm""system.state":"orderSummary"}.
[0131] FIG. 6J shows an interface screen 650 showing a conversation report that is part of the skill view. For example, clicking "Conversation," as shown in FIG. 6I, opens the conversation report, allowing the user to review the entire transcript. With the conversation report, the user can examine the actual transcript of the conversation to see how the user completed intent-related paths and why they did not. To view these transcripts, the report allows the user to filter by the intent that enabled them. The user can add dimensions such as the length and outcome of the conversation, which are noted as either completed or incomplete. The user can also switch the view to include any system or custom component errors that may have interfered with the conversation. Each row returned by the report shows the transcript of the conversation and the path that carried it. The user can view this dialog within the context of the chat window by clicking the "View Conversation" view.
[0132] As shown in Figure 6J, at the very top left is the Edit icon. Next to it are the Opinion Report - Wide Filter, Channel, and Locale. In this screen capture, they are set to Channel: All and Locale: All. Immediately to the right of these is the "Reset to All" option. At the top left of the screen is a date picker (in this screen capture, it displays "Last 30 Days"). Above that is a status message for refreshing the opinion data. It reads "Last Updated a few seconds ago." Immediately to the left is the "Refresh" icon. Immediately below the Opinion Report - Wide Filter is the Opinion Report navigation path: Intent > Path > Conversation (selected here) > Retrainer. Immediately below the navigation path are the filtering options for this report. From left to right, they are Intent, Results, Sort By, and Errors. Intent, Results, and Sort By are drop-down menus, while Errors is a toggle switch (positioned "Off" for this image). Below the filtering options is a table displaying the results. It has the following columns: Intent; Result; Time; User; and Bot. The User and Bot columns display transcripts of utterances from both the customer and the skill, respectively. Immediately to the left of the transcript is an option called "View Conversation." At the bottom right of the table are pagination controls. Below the table is a section called "Selected Conversation Details," which shows a topographical representation of the transcript. It is a linear transit map spanning from left (start of conversation) to right (end of conversation), with each state traversed in the course of the conversation shown as the equivalent of a station or stop.
[0133] Figure 6K shows that in some embodiments, various data can be obfuscated (**) in both the chat window and transcript to protect sensitive information such as credit card numbers. Specifically, interface screen 655 shows the user-skill bot conversation in a panel called "Conversation." Directly above this panel, on the left, is the intent name and session ID. The bot-user chat is in the conversation panel itself, with the user's utterance on the right and the skill bot's response on the left. In this screen capture, all numbers in the chat are obfuscated with asterisks. For example, "I would like to send ** red roses."
[0134] Figure 6L shows an interface screen 660 depicting the Retrainer, part of the Skills view. The Retrainer allows users to incorporate user input into their training corpus to improve a skill or chatbot. Customers can ask about the same task using different phrases. This report identifies these phrases and suggests intents to which the user can assign them. Like other reports, users can filter the conversation history for user utterances delivered through a specific channel or locale. However, here, users can search for user utterances by intent, by properties related to intent resolution (top confidence, win margin), or by combinations of these linked together using the less than, equal to, or greater than comparison operators. Each user utterance returned by the report is accompanied by a 100% stacked bar graph—that is, a representation of the confidence level resolution for each intent from highest to lowest. Users can refer to segments of the graph to match user input to intents.
[0135] As shown in Figure 6L, at the very top left is the edit icon. Next to it are the Opinion Report-Wide Filter, Channel, and Locale. In this screen capture, they are set to Channel: All and Locale: All. Immediately to the right of these is the "Reset to All" option. Immediately below the Opinion Report-Wide Filter is the Opinion Report navigation path: Intent > Path > Conversation > Retrainer (selected in this screen capture). Immediately below the navigation path are filter options for Retrainer. Retrainer lets the user sort using "All" or "Any" on different options (located on the upper left side of the screen) and a date picker (located on the upper right side of the screen). Immediately above this date picker (which in this screen capture displays "Last 30 Days") is a status message for refreshing the opinion data. It reads "Last Updated a few seconds ago." Immediately to the left is the "Refresh" icon. In this screen capture, the options are the top intent name, matches, and unresolved intents. This is the only criteria for this particular report, but if the user desires more, they can click on the criteria button (located on the right side of the screen) to add another set of filter options. On the left, located below the filtering options is a search button.
[0136] The retrainer sorts the utterances into the following columns: Utterance: The actual user message or speech. Immediately to the left of the utterance are selection options. Resolved Intent: The intent (if any) to which the utterance or user utterance resolved or matched. Intent Classification: A 100% bar graph segmented by the retrainer's best guess for matching intents. Each different segment has a different color and a corresponding "caption" to the immediate right. Immediately to the right is the name of the matched intent, or if no intents can be matched, the retrainer displays "Select Intent." Immediately to the right is the option to open a menu to select either an intent (if no match was found) or a new intent (if a match was found). The "Select Intent" option also appears above the table of results, which can be used as a filter. Below the table is an "Add Example" button. At the bottom left of the screen is pagination for the results. In this image, it is page 1 of 2. In some embodiments, when a user adds user utterances to their training corpus, they may need to consider the following: if the user adds a user utterance as an intent, they will need to retrain the skill; the user cannot add user input that already exists as an utterance in the training corpus; the user can add utterances to individual intents or select all of the user utterances by clicking "Utterances" and then "Add Examples."
[0137] By setting the top confidence filter below the confidence threshold set for the skill, or through the default filters, "Intents," "Matches," and "Unresolved Intents," the user can update their training corpus with the confidence rankings created by the intent processing framework. This is a gradual self-learning process that improves intent resolution while preserving the integrity of the skill. For example, the default search criteria for reporting shows the user random user inputs that cannot be resolved to a confidence level because they are inappropriate, off-topic, or contain spelling errors. By referencing the bar graph segments and captions, the user can assign user inputs—i.e., augment the skill's intent to handle unresolved intents by assigning inputs consisting of gibberish—or the user can add misspelled entries to the appropriate task-oriented intent (e.g., "send money" to the "Transfer Money" intent). For example, as shown in interface screen 665 of FIG. 6M, if a user's skill has a "welcome" intent, the user can assign an unrelated, off-topic utterance that the user's skill can respond with, for example, "I don't know about that, but I can help you order flowers."
[0138] Figure 6N shows an interface screen 670 illustrating the exporter, which is part of the skill view. The various view reports provide users with different perspectives on the view data, but if users need to view this data differently, they can create their own reports from a CSV file of the exported view data. For example, users can define the type of data they want to analyze by creating an export task. The export task applies to the current version of the skill. Once the task is complete, users can download a CSV file, which contains details such as user utterances, skill responses, component types, and state names in a readable format. The export page lists tasks by: Name: the name of the export task; Last Run: the date the task was most recently run; Created By: the name of the user who created the task; Export Status: Started, In Progress, Failed, No Data (if there is no data to export within the date range defined for the task), or Completed, along with a hyperlink to download the exported data as a CSV file. Hovering over the "Failed" status displays an explanatory message.
[0139] As shown in Figure 6N, the right side of the screen contains a date picker drop-down menu. Directly below the breadcrumbs is an "Add Export" button. Below this button are search and filtering fields: "Filter by Name or Author," "Filter by Status" (drop-down menu), and "Sort by" (drop-down menu). Below the search field is a table that sorts exports by the following columns, from left to right: Name, Last Run, Author, and Status. If users do not want to export data through the UI but instead prefer their own code or scripts to export, store, or schedule export tasks, users can refer to the REST API for endpoints, syntax, and methods related to export tasks, export task history, and exporting the view data itself. Users may require external authentication and authorization flows to access this API programmatically.
[0140] Example of interpreting opinion data In this example, assume a user has developed a skill called Florist Bot, whose primary use case is ordering flowers for delivery. However, after viewing activity for the past 90 days, the user quickly sees from the overview report that something is wrong. Here, there are a few things that should jump out at the user: the KPIs reveal that the majority of conversations (approximately 57%) are incomplete (see, for example, Figure 7A). The intent bar chart shows the opposite of what the user wants to see: the execution paths for the Order Flowers and Welcome intents are underutilized. These should be the top-ranked intents whose execution paths are frequently traversed, but instead are ranked below File a Complaint, the inverse of Order Flowers (see, for example, Figure 7B). Nearly all of the conversations for the primary use case, "Order Flowers," remained incomplete for the selected time period. Meanwhile, the "File a Complaint" conversation has a 100% completion rate, as does the secondary function, "Open a Franchise." The unresolved intent bar in the graph indicates that there may be some gap in the skill's training because the skill is unable to recognize utterances from half of the conversations during that period. To get this skill back on track, the user may need to use intent reporting and path reporting to indicate where the user aborted the "order flowers" execution path. Using opinion prediction and retrainers, the user can also leverage unresolved utterances for their training corpus.
[0141] Step 1: Examine the "Order Flowers" execution path in the Intent Report. First, the user can click on the incomplete series in the "Order Flowers" bar graph to open the Intent Report (see, e.g., Figure 7C). From the incomplete series, the user can drill down to open the incomplete report in its incomplete outcome mode for "Order Flowers." The report's bar graph shows the user how many conversations stopped due to system errors (the System.DefaultErrorHandler bar graph), but also shows the user two states ("Make Payment" and "Show Flower Menu") where the conversation ended prematurely (see, e.g., Figure 7D). Scrolling along the path gives the user context about these states; the user can see the states immediately preceding these problem areas, and icons show the user which components were defined for each state in the flow. Of particular interest in this regard are the "Make Payment" and "Show Flower Menu" states, which are defined in the "System.Interactive" and "System.CommonResponse" components, respectively.
[0142] Step 2: Inspect the path report to understand errors and user utterances. The "order flowers" intent report shows the user where the conversation ended, but to find out why, the user can open the path report and filter by the "order flowers" intent, the "incomplete" outcome, and "make payment" as the final state (see, for example, Figure 7E). This report gives the user an additional dimension to understand where the conversation branches after a common starting point. Here, the conversation branches because of the "checkFlowerBouquetEntity" state. Its "System.Switch" component and Apache FreeMarker representation route the customer to either the "order flowers" or "order bouquet" state if the user utterance explicitly mentions the type of flower or bouquet name, or to the "ShowOrderTypeMenu" (System.List component) if these details are missing.
[0143]
number
[0144] Both execution paths have system errors. The user can see the utterances received by the skill before it threw these errors by clicking the red System.Output stop in the path (see, for example, Figure 7F).
[0145] To see a transcript of the conversation, possibly resulting in a standard "excuse me" message that indicates when the skill ends the session, the user can click "Conversation" to open the "Conversation" report (see, for example, Figure 7G). If the report indicates significant occurrences of system errors along each execution path, the user may want to extend the dialog flow definition with an error transition-related routing that allows the customer to continue with the skill. Troubleshooting Timeouts—The user can also see the common failure point for both of these paths: the "Make Payment" state that invokes the Instant App (or, in this case, perhaps not even invoking the Instant App). While a system error would have blocked the user elsewhere, here, the null response indicates that the user appears to have abandoned the skill when the Instant App was invoked. Clicking "Conversation" opens the transcript, which indicates that the user either stopped short of the Instant App or never bothered to complete it. Because the customer consistently abandons the skill when the Instant App is invoked, investigate whether the problem lies with the Instant App, the dialog flow definition, or a combination of both. Checking the dialog flow against an Instant App verifies the following: the id matches the name of the Instant App, the value in the sourceVariableList property variable is set and populated in the Instant App, and the Instant App payload is stored in a variable.
[0146] If the skill-instant app interaction is functioning properly, the customer may be losing interest at this point. Revisiting the intent report for the "Order Flowers" execution path completed during this period shows that the customer spent approximately three minutes navigating through 50 states. If this seems too long, you can revise the skill to collect user input more efficiently. There's also a "showFlowersMenu" state to examine. To see where the customer stopped, open the path report and then filter by "Order Flowers," "Incomplete," and "showFlowersMenu" as the final state. Clicking "showFlowersMenu" indicates that the customer stopped using the skill at this state, which is defined using the System.CommonResponse component. The skill times out because it's not responding to the customer's needs (in this case, a bouquet of red roses). By clicking "Conversation" and drilling down into the transcript, you can see that even after the customer declines to make a selection, it automatically selects daisies instead.
[0147] Step 3: Update the training corpus using the retrainer. In addition to the problem with the "order flowers" execution path, the user should notice that the overview reveals that the skill is unable to process 50% of customer inputs. Instead of resolving to one of the task-oriented intents, the majority of the user utterances during the period are classified as unresolved intents. This may be appropriate in some cases, but in other cases, it may provide the user with utterances that the user can add to the training corpus. The user can investigate these utterances in the following ways: click on the intent; click on the unresolved intent; click on the unresolved intent bar in the closest prediction graph; and inspect the unresolved utterances panel. There are some utterances that capture users' attention because they can help the user's skills fulfill their primary goal, even when customer input contains typos, slang, or non-conversational contractions: "get flowers" (68%) and "i wud like to order flwrs." (64%) (see, for example, Figure 7H).
[0148] To add these utterances as training data, the user can do the following: click Retrainer; filter the reports about these utterances by adding the following criteria: the intent matches an unresolved intent and the top intent confidence is greater than 62%; add these utterances as bulk to the "Order Flowers" intent by choosing "Utterances," selecting "Order Flowers" from the "Add" menu, and then clicking "Add Example"; and retrain the skill (e.g., see Figure 7I). Using the closest prediction graph and Retrainer, the user can separate gibberish from useful content that the user can use to complete the training corpus. The user can also indicate directions the user may want to take to robustify the user's skill. For example, if there are a large number of unresolved user utterances that are negative, the user might consider adding an intent (or even creating a standalone skill) to handle user abuse.
[0149] Techniques for using insights to improve the performance of bot systems FIG. 8 is a simplified flowchart 800 illustrating an example of a process for using insights to improve the performance of a bot system, according to certain embodiments. The process illustrated in FIG. 8 may be implemented in software (e.g., code, instructions, programs) executed by one or more processing units (e.g., processors, cores) of the respective system, hardware, or a combination thereof. The software may be stored on a non-transitory storage medium (e.g., on a memory device). The process presented in FIG. 8 and described below is intended to be exemplary and non-limiting. While FIG. 8 depicts various process steps occurring in a particular sequence or order, this is not intended to be limiting. In some alternative embodiments, the steps may be performed in several different orders, or some steps may be performed in parallel. In certain embodiments, a graphical user interface generated according to the process presented in FIG. 8 may appear as shown in one of FIGS. 4A-4C, 5A-5E, and 6A-6N.
[0150] In step 810, an event collector of the analysis system may collect one or more attributes for one or more events associated with a set of conversations with the bot system. As described above, the event collector is reconfigurable to selectively collect desired attributes for desired events. The one or more events may include, for example, at least one of a conversation event, a bot state event, an intent resolution event, an entity resolution event, an error event, a timeout event, or a custom event. The one or more attributes may include, for example, the attributes described above with respect to FIG. 2. In some embodiments, the one or more attributes for the one or more events associated with the set of conversations may be enriched and stored in a data store.
[0151] In step 820, the analysis engine of the analysis system can select one or more conversations from the set of conversations based on one or more attributes for one or more events collected by the event collector using one or more filtering criteria selected by the user. The one or more filtering criteria can include, for example, conversations that ended in a particular state, conversations that started from a particular state, completed or incomplete conversations, conversations associated with a particular end user intent, conversations from a particular channel or locale, conversations that occurred during a particular time period, etc.
[0152] In step 830, the analysis engine of the analysis system may generate one or more reports for the selected one or more conversations. In some embodiments, the analysis engine may include a REST server. The one or more reports may include, for example, a report including statistics for a set of conversations, a report including statistics for conversations associated with a particular end user intent, a report including conversations associated with a particular end user intent, a report including statistics for incomplete conversations, a report including incomplete conversations, a report including statistics for conversations for which the end user intent is not determined, a report including conversations for which the end user intent is not determined, a report including options for improving the bot system, or combinations thereof. In some embodiments, the report including conversations for which the end user intent is not determined may include, for each conversation for which the end user intent is not determined, a score indicating a match between the conversation and each respective end user intent in the set of end user intents.
[0153] In some embodiments, the one or more reports may include an aggregated path diagram for one or more selected conversations. The aggregated path diagram may include multiple nodes and multiple connections between the multiple nodes. Each of the multiple nodes may correspond to a respective state of the bot system. Each of the multiple connections may represent a transition from one state of the bot system to another state of the bot system. The multiple nodes may include a start node and an end node. In some embodiments, the aggregated path diagram may include a number associated with each respective connection, which may indicate a total number of conversations that include the transition represented by the respective connection. In some embodiments, each node of the multiple nodes may be a user-selectable item of one or more user-selectable items. In some embodiments, each connection of the multiple connections may be a user-selectable item of one or more user-selectable items.
[0154] At step 840, the GUI may graphically display a first report from the one or more reports and one or more user-selectable items associated with the first report. The one or more user-selectable items may include at least one element of the first report. At least one of the one or more user-selectable items may correspond to a filtering criterion of the one or more filtering criteria. In some embodiments, the one or more user-selectable items may include a user-selectable item that, when selected, causes one or more individual conversations to be displayed on the GUI. In some embodiments, the one or more user-selectable items may include a menu for selecting, from the set of conversations, a conversation that ended in a particular state. In some embodiments, the one or more user-selectable items may include a menu for selecting, from the set of conversations, a conversation that starts from a particular state. In some embodiments, the one or more user-selectable items may include a menu for selecting, from the set of conversations, a conversation that is associated with a particular end-user intent.
[0155] At step 850, the GUI server may receive a user selection of one or more user-selectable items through the GUI. At 860, a second report from the one or more reports may be graphically displayed on the GUI based on the user selection. In some embodiments, the second report may include, for example, utterances associated with the respective conversations and user intents associated with the utterances.
[0156] Optionally, in step 870, user input may be received through a user-selectable item of the one or more user-selectable items. For example, the one or more user-selectable items may include user-editable items, such as utterances and / or intents associated with the utterances. An administrator or developer of the bot system may add, remove, or edit utterances and / or add, remove, or edit intents for the utterances. The user input may include modified utterances or modified intents for the utterances.
[0157] Optionally, in step 880, the bot system may be retrained using user input to improve the performance of the bot system, such as retraining the bot system's intent classification model to more accurately determine the user's intent.
[0158] Exemplary System 9 shows a simplified diagram of a distributed system 900. In the illustrated example, the distributed system 900 includes one or more client computing devices 902, 904, 906, and 908 coupled to a server 912 via one or more communication networks 910. The client computing devices 902, 904, 906, and 908 may be configured to run one or more applications.
[0159] In various examples, server 912 may be adapted to run one or more services or software applications that enable one or more embodiments described in this disclosure. In certain examples, server 912 may also provide other services or software applications, which may include non-virtualized and virtualized environments. In some examples, these services may be provided as web-based or cloud services, such as under a Software as a Service (SaaS) model, to users of client computing devices 902, 904, 906, and / or 908. Users operating client computing devices 902, 904, 906, and / or 908 may utilize the services provided by these components by interacting with server 912 utilizing one or more client applications.
[0160] 9, server 912 may include one or more components 918, 920, and 922 that implement the functions performed by server 912. These components may include software components that may be executed by one or more processors, hardware components, or a combination thereof. It should be appreciated that a wide variety of system configurations are possible that may differ from distributed system 900. Thus, the example shown in FIG. 9 is one example of a distributed system for implementing the example system and is not intended to be limiting.
[0161] A user uses client computing devices 902, 904, 906, and / or 908 to run one or more applications, which may generate one or more storage requests, which may then be processed according to the teachings of this disclosure. A client device may provide an interface that allows a user of the client device to interact with the client device. The client device may also output information to the user via this interface. Although FIG. 9 shows only four client computing devices, any number of client computing devices may be supported.
[0162] Client devices may include various types of computing systems, such as portable handheld devices, general-purpose computers such as personal computers and laptops, workstation computers, wearable devices, gaming systems, thin clients, various messaging devices, sensors or other sensing devices, etc. These computing devices may include various types and versions of software applications and operating systems (e.g., Microsoft Windows®, Apple Macintosh®, UNIX® or UNIX-like operating systems, Linux or Linux-like operating systems, various mobile operating systems (e.g., Microsoft Windows Mobile®, iOS®, Windows Phone®, Android®, BlackBerry®, Google Chrome® OS, including Palm OS®). Portable handheld devices may include cellular phones, smartphones (e.g., iPhone®), tablets (e.g., iPad®), personal digital assistants (PDAs), etc. Wearable devices may include Google Glass® head-mounted displays and other devices. The gaming systems may include various handheld gaming devices, internet-enabled gaming devices (e.g., Microsoft Xbox® gaming consoles with or without Kinect® gesture input devices, Sony PlayStation® systems, various gaming systems offered by Nintendo®, etc.) The client devices may be capable of running a wide variety of applications, such as various internet-related applications, communication applications (e.g., email applications, short message service (SMS) applications), and may use a variety of communication protocols.
[0163] Network 910 may be any type of network known to those skilled in the art that is capable of supporting data communications using any of a variety of available protocols, including, but not limited to, TCP / IP (Transmission Control Protocol / Internet Protocol), SNA (Systems Network Architecture), IPX (Internet Packet Exchange), AppleTalk®, etc. By way of example only, network 910 may include a local area network (LAN), an Ethernet-based network, a token ring, a wide area network (WAN), the Internet, a virtual network, a virtual private network (VPN), an intranet, an extranet, a public switched telephone network (PSTN), an infrared network, a wireless network (e.g., a wireless network operating under any of the Institute of Electrical and Electronics Engineers (IEEE) 802.11 protocol suite, Bluetooth®, and / or any other wireless protocol), and / or any combination of these and / or other networks.
[0164] Servers 912 may be comprised of one or more general-purpose computers, dedicated server computers (including, by way of example, PC (personal computer) servers, UNIX servers, midrange servers, mainframe computers, rack-mounted servers, etc.), server farms, server clusters, or other suitable configurations and / or combinations. Servers 912 may include one or more virtual machines running a virtual operating system or other computing architecture involving virtualization, such as one or more flexible pools of logical storage that can be virtualized to maintain virtual storage for the servers. In various examples, servers 912 may be adapted to run one or more services or software applications that provide the functionality described in the above disclosure.
[0165] The computing systems within server 912 may run one or more operating systems, including any of the operating systems described above, as well as commercially available server operating systems. Server 912 may also run any of a variety of other server and / or middle-tier applications, including an HTTP (Hypertext Transfer Protocol) server, an FTP (File Transfer Protocol) server, a CGI (Common Gateway Interface) server, a JAVA server, a database server, etc. Exemplary database servers include, but are not limited to, those commercially available from Oracle®, Microsoft®, Sybase®, IBM® (International Business Machines), etc.
[0166] In some implementations, server 912 may include one or more applications for parsing and consolidating data feeds and / or event updates received from users of client computing devices 902, 904, 906, and 908. By way of example, the data feeds and / or event updates may include, but are not limited to, Twitter® feeds, Facebook® updates, or real-time updates received from one or more third-party sources and continuous data streams that may include real-time events related to sensor data applications, financial stock tickers, network performance measurement tools (e.g., network monitoring and traffic management applications), clickstream analysis tools, automobile traffic monitoring, etc. Server 912 may also include one or more applications for displaying the data feeds and / or real-time events via one or more display devices of client computing devices 902, 904, 906, and 908.
[0167] The distributed system 900 may also include one or more data repositories 914, 916. In particular examples, these data repositories may be used to store data and other information. For example, one or more of the data repositories 914, 916 may be used to store information, such as information related to views used by the server 912 in performing various functions according to various embodiments. The data repositories 914, 916 may be in a variety of locations. For example, the data repository used by the server 912 may be local to the server 912 or may be remote from the server 912 and communicate with the server 912 via a network-based or dedicated connection. The data repositories 914, 916 may be of different types. In particular examples, the data repository used by the server 912 may be a database, for example, a relational database such as those provided by Oracle Corporation® and other manufacturers. One or more of these databases may be adapted to allow data to be stored, updated, and retrieved from the database in response to SQL-formatted commands.
[0168] In particular examples, one or more of the data repositories 914, 916 may be used by an application to store application data. The data repositories used by the application may be of various types, such as, for example, a key-value store repository, an object store repository, or a general-purpose storage repository supported by a file system.
[0169] In particular examples, the functionality described in this disclosure may be provided as services via a cloud environment. Figure 10 is a simplified block diagram of a cloud-based system environment that may provide various services as cloud services, according to particular examples. In the example shown in Figure 10, a cloud infrastructure system 1002 may provide one or more cloud services that users may request using one or more client computing devices 1004, 1006, and 1008. The cloud infrastructure system 1002 may include one or more computers and / or servers, which may include those described above with respect to server 912. The computers in the cloud infrastructure system 1002 may be organized as general-purpose computers, dedicated server computers, server farms, server clusters, or any other suitable arrangement and / or combination.
[0170] The network 1010 may facilitate communication and exchange of data between the clients 1004, 1006, and 1008 and the cloud infrastructure system 1002. The network 1010 may include one or more networks. The networks may be of the same type or different types. The network 1010 may support one or more communication protocols, including wired and / or wireless protocols, to facilitate communication.
[0171] The example shown in Figure 10 is merely one example of a cloud infrastructure system and is not intended to be limiting. It should be understood that in other examples, cloud infrastructure system 1002 may have more or fewer components than those shown in Figure 10, may combine two or more components, or may have components in a different configuration or arrangement. For example, while Figure 10 shows three client computing devices, in alternative examples, any number of client computing devices may be supported.
[0172] The term cloud service generally refers to services made available to users on demand via a communications network, such as the Internet, by a service provider's system (e.g., cloud infrastructure system 1002). Typically, in a public cloud environment, the servers and systems that comprise the cloud service provider's system are distinct from a customer's own on-premise servers and systems. The cloud service provider's systems are managed by the cloud service provider. Thus, customers can use cloud services offered by the cloud service provider without purchasing separate licenses, support, or hardware and software resources for the services. For example, the cloud service provider's system may host applications, and users can order and use the applications on demand via the Internet without purchasing infrastructure resources to run the applications. Cloud services are designed to provide easy and scalable access to applications, resources, and services. Several providers offer cloud services. For example, several cloud services, such as middleware services, database services, and Java cloud services, are offered by Oracle Corporation of Redwood Shores, California.
[0173] In particular examples, cloud infrastructure system 1002 may provide one or more cloud services using a variety of models, such as a Software as a Service (SaaS) model, a Platform as a Service (PaaS) model, an Infrastructure as a Service (IaaS) model, etc., including a hybrid service model. Cloud infrastructure system 1002 may include a suite of applications, middleware, databases, and other resources that enable the provision of various cloud services.
[0174] The SaaS model allows applications or software to be delivered as a service to customers over a communications network such as the Internet, without the customer having to purchase the hardware or software for the underlying application. For example, the SaaS model may be used to provide customers with access to on-demand applications hosted by cloud infrastructure system 1002. Examples of SaaS services offered by Oracle Corporation® include, but are not limited to, various services for human resource / capital management, customer relationship management (CRM), enterprise resource planning (ERP), supply chain management (SCM), enterprise performance management (EPM), analytics services, and social applications.
[0175] The IaaS model is commonly used to provide flexible computing and storage capabilities by providing infrastructure resources (e.g., servers, storage, hardware, and networking resources) to customers as cloud services. Various IaaS services are offered by Oracle Corporation (registered trademark).
[0176] The PaaS model is generally used to provide platform and environment resources as a service that enable customers to develop, run, and manage applications and services without having to procure, build, or manage the environment resources. Examples of PaaS services provided by Oracle Corporation (registered trademark) include, but are not limited to, Oracle Java Cloud Service (JCS), Oracle Database Cloud Service (DBCS), data management cloud services, and various application development solution services.
[0177] Cloud services are generally provided on an on-demand, self-service basis, on a subscription basis, and in a flexible, scalable, reliable, highly available, and secure manner. For example, a customer may order one or more services offered by cloud infrastructure system 1002 via a subscription order. Cloud infrastructure system 1002 then performs processing to provide the services requested in the customer's subscription order. For example, a user may request the cloud infrastructure system to obtain insight data as described above and provide services for a chatbot system as described herein. Cloud infrastructure system 1002 may be configured to provide one cloud service or even multiple cloud services.
[0178] Cloud infrastructure system 1002 may provide cloud services through a variety of deployment models. In a public cloud model, cloud infrastructure system 1002 may be owned by a third-party cloud service provider, and cloud services are offered to general public customers. These customers may be individuals or businesses. In another example, under a private cloud model, cloud infrastructure system 1002 may function within an organization (e.g., within a corporate organization), and services are offered to customers within the organization. For example, these customers may be various departments within a company, such as human resources, payroll, or individuals within the company. In another example, under a community cloud model, cloud infrastructure system 1002 and the services it offers may be shared among various organizations within an associated community. Various other models, including hybrids of the above models, may also be used.
[0179] Client computing devices 1004, 1006, and 1008 may be of different types (e.g., client computing devices 902, 904, 906, and 908 shown in FIG. 9 ) and may be capable of operating one or more client applications. Users may use the client devices to interact with cloud infrastructure system 1002, such as to request services provided by cloud infrastructure system 1002. For example, users may use client devices to request view data, as described in this disclosure.
[0180] In some examples, the processing performed by cloud infrastructure system 1002 to provide services may include big data analytics. This analytics may involve using large data sets, analyzing, and processing them to detect and visualize various trends, behaviors, relationships, etc. within this data. This analytics may be performed by one or more processors, possibly processing the data in parallel, running simulations with the data, etc. For example, big data analytics may be performed by cloud infrastructure system 1002 to determine insight data for a chatbot system. The data used in this analytics may include structured data (e.g., data stored in a database or structured according to a structured model) and / or unstructured data (e.g., data blobs (binary large objects)).
[0181] 10 , cloud infrastructure system 1002 may include infrastructure resources 1030 utilized to facilitate the provision of various cloud services offered by cloud infrastructure system 1002. Infrastructure resources 1030 may include, for example, processing resources, storage or memory resources, networking resources, etc. In particular examples, storage virtual machines available to handle storage requested by applications may be part of cloud infrastructure system 1002. In other examples, the storage virtual machines may be part of a different system.
[0182] In certain examples, to facilitate efficient provisioning of these resources to support various cloud services offered by cloud infrastructure system 1002 to different customers, resources may be organized into resource sets or resource modules (also referred to as "pods"). Each resource module or pod may include a pre-integrated, optimized combination of one or more types of resources. In certain examples, different pods may be pre-provisioned for different types of cloud services. For example, a first set of pods may be provisioned for database services, while a second set of pods may be provisioned for Java services, etc., which may include a different combination of resources than the pods in the first set of pods. For some services, the resources allocated for provisioning these services may be shared between services.
[0183] Cloud infrastructure system 1002 itself may use services 1032 internally that are shared by different components of cloud infrastructure system 1002 and that facilitate the provisioning of services by cloud infrastructure system 1002. These internal shared services may include, but are not limited to, security and identity services, integration services, enterprise repository services, enterprise manager services, virus scanning and whitelist services, high availability, backup and recovery services, services enabling cloud support, email services, notification services, file transfer services, etc.
[0184] Cloud infrastructure system 1002 may include multiple subsystems. These subsystems may be implemented in software, hardware, or a combination thereof. As shown in FIG. 10 , the subsystems may include a user interface subsystem 1012 that allows users or customers of cloud infrastructure system 1002 to interact with cloud infrastructure system 1002. User interface subsystem 1012 may include a variety of different interfaces, such as a web interface 1014, an online store interface 1016 through which cloud services offered by cloud infrastructure system 1002 are advertised and available for purchase by consumers, and other interfaces 1018. For example, a customer may use a client device to request one or more services (service request 1034) offered by cloud infrastructure system 1002 using one or more of interfaces 1014, 1016, and 1018. For example, a customer may access an online store, browse cloud services offered by cloud infrastructure system 1002, and place a subscription order for one or more services offered by cloud infrastructure system 1002 and for which the customer wishes to subscribe. The service request may include information identifying the customer and one or more services for which the customer wishes to subscribe. For example, a customer may submit an order to subscribe to services provided by cloud infrastructure system 1002. As part of the order, the customer may provide information identifying the chatbot system for which the service will be provided, and optionally one or more credentials for the chatbot system.
[0185] 10 , cloud infrastructure system 1002 may include an order management subsystem (OMS) 1020 configured to process new orders. As part of this processing, OMS 1020 may be configured to create an account for the customer if not already created, receive billing and / or account information from the customer to use for billing the customer for providing the requested services to the customer, verify the customer information, and, once verified, reserve the order for the customer and prepare the order for provisioning by coordinating various workflows.
[0186] Upon proper validation, the OMS 1020 may invoke an order provisioning subsystem (OPS) 1024 configured to provision resources for the order, including processing, memory, and networking resources. Provisioning may include allocating resources for the order and configuring the resources to facilitate the service requested by the customer order. The manner in which resources are provisioned for the order and the type of resources provisioned may depend on the type of cloud service ordered by the customer. For example, following a workflow, the OPS 1024 may be configured to determine the specific cloud service being requested and identify the number of pods that will be pre-configured for this specific cloud service. The number of pods allocated for an order may depend on the size / amount / level / scope of the requested service. For example, the number of pods to allocate may be determined based on the number of users the service is to support, the duration for which the service is requested, etc. The allocated pods may then be customized to the specific requesting customer to provide the requested service.
[0187] In particular examples, the setup phase processing may be performed as part of the provisioning process, as described above, by cloud infrastructure system 1002. Cloud infrastructure system 1002 may generate an application ID and select a storage virtual machine for the application from among storage virtual machines provided by cloud infrastructure system 1002 itself or from storage virtual machines provided by other systems other than cloud infrastructure system 1002.
[0188] Cloud infrastructure system 1002 may send a response or notification 1044 to the requesting customer to indicate when the requested service will be available for use. In some examples, the customer may be sent information (e.g., a link) that enables the customer to begin using and utilizing the benefits of the requested service. In particular examples, for a customer requesting a service, the response may include a chatbot system ID generated by cloud infrastructure system 1002 and information identifying the chatbot system selected by cloud infrastructure system 1002 for the chatbot system corresponding to the chatbot system ID.
[0189] Cloud infrastructure system 1002 may provide services to multiple customers. For each customer, cloud infrastructure system 1002 manages information related to one or more subscription orders received from the customer, maintains customer data related to the orders, and is responsible for providing the requested services to the customer. Cloud infrastructure system 1002 may also collect usage statistics regarding the customer's use of the subscribed services. For example, statistics may be collected about the amount of storage used, the amount of data transferred, the number of users, and the amount of system uptime and downtime. This usage information may be used to bill the customer. Billing may be on a monthly basis, for example.
[0190] Cloud infrastructure system 1002 may provide services to multiple customers in parallel. Cloud infrastructure system 1002 may store information about these customers, possibly including copyright information. In particular examples, cloud infrastructure system 1002 includes an identity management subsystem (IMS) 1028 configured to manage customer information and separate the managed information so that information about one customer is not accessed from information about another customer. IMS 1028 may be configured to provide various security-related services, such as identity services such as information access management, authentication and authorization services, services for managing customer identities and roles and associated capabilities, etc.
[0191] 11 illustrates an example of a computer system 1100. In some examples, the computer system 1100 may be used to implement any of the digital assistant or chatbot systems in a distributed environment, as well as the various servers and computer systems described above. As shown in FIG. 11, the computer system 1100 includes various subsystems, including a processing subsystem 1104 that communicates with several other subsystems via a bus subsystem 1102. These other subsystems may include a processing acceleration unit 1106, an I / O subsystem 1108, a storage subsystem 1118, and a communication subsystem 1124. The storage subsystem 1118 may include non-transitory computer-readable storage media, including a storage medium 1122 and a system memory 1110.
[0192] Bus subsystem 1102 provides a mechanism for allowing the various components and subsystems of computer system 1100 to communicate with each other as intended. While bus subsystem 1102 is shown schematically as a single bus, alternative embodiments of the bus subsystem may utilize multiple buses. Bus subsystem 1102 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, a local bus, etc., using any of a variety of bus architectures. For example, such architectures may include an Industry Standard Architecture (ISA) bus, a Micro Channel Architecture (MCA) bus, an Enhanced ISA (EISA) bus, a Video Electronics Standards Association (VESA) local bus, and a Peripheral Component Interconnect (PCI) bus, which may be implemented as a mezzanine bus manufactured in accordance with the IEEE P1386.1 standard.
[0193] The processing subsystem 1104 controls the operation of the computer system 1100 and may include one or more processors, application-specific integrated circuits (ASICs), or field-programmable gate arrays (FPGAs). The processors may include single-core or multi-core processors. The processing resources of the computer system 1100 may be organized into one or more processing units 1132, 1134, etc. The processing units may include one or more processors, one or more cores from the same or different processors, a combination of cores and processors, or other combinations of cores and processors. In some examples, the processing subsystem 1104 may include one or more dedicated coprocessors, such as a graphics processor, a digital signal processor (DSP), etc. In some examples, some or all of the processing units of the processing subsystem 1104 may use customized circuitry, such as an application-specific integrated circuit (ASIC) or a field-programmable gate array (FPGA).
[0194] In some examples, processing units within processing subsystem 1104 may execute instructions stored in system memory 1110 or computer-readable storage medium 1122. In various examples, the processing units may execute various program or code instructions and maintain multiple programs or processes running simultaneously. At any given time, some or all of the program code to be executed may reside in system memory 1110 and / or computer-readable storage medium 1122, potentially including one or more storage devices. Through appropriate programming, processing subsystem 1104 may provide the various functions described above. In examples where computer system 1100 is running one or more virtual machines, one or more processing units may be assigned to each virtual machine.
[0195] In certain examples, a processing acceleration unit 1106 may optionally be provided to accelerate the overall processing performed by the computer system 1100, to perform customized processing, or to offload some of the processing performed by the processing subsystem 1104.
[0196] I / O subsystem 1108 may include devices and mechanisms for inputting information into computer system 1100 and / or outputting information from or through computer system 1100. In general, use of the term "input device" is intended to include all conceivable types of devices and mechanisms for inputting information into computer system 1100. User interface input devices may include, for example, keyboards, pointing devices such as mice or trackballs, touchpads or touchscreens integrated into displays, scroll wheels, click wheels, dials, buttons, switches, keypads, voice input devices with voice command recognition systems, microphones, and other types of input devices. User interface input devices may also include motion-sensing and / or gesture-recognition devices, such as a Microsoft Kinect® motion sensor that allows a user to control and interact with the input device, a Microsoft Xbox® 360 game controller, or devices that provide an interface for receiving input using gestures and voice commands. The user interface input devices may also include eye gesture recognition devices, such as a Google Glass® blink detector, that detects eye movements from the user (e.g., "blinks" while taking a picture and / or making a menu selection) and translates the eye gestures as input to the input device (e.g., Google Glass®). The user interface input devices may also include voice recognition sensing devices that allow the user to interact with a voice recognition system (e.g., Siri® navigator) via voice commands.
[0197] Other examples of user interface input devices may include, but are not limited to, three-dimensional (3D) mice, joysticks or pointing sticks, gamepads, and graphic tablets, as well as audio / visual devices such as speakers, digital cameras, digital camcorders, portable media players, webcams, image scanners, fingerprint scanners, barcode readers, 3D scanners, 3D printers, laser range finders, and eye-tracking devices. User interface input devices may also include medical imaging input devices such as, for example, computed tomography, magnetic resonance imaging, position emission tomography, and medical ultrasound devices. User interface input devices may also include audio input devices such as, for example, MIDI keyboards, digital musical instruments, and the like.
[0198] In general, the use of the term output device(s) is intended to encompass all conceivable types of devices and mechanisms for outputting information from computer system 1100 to a user or to another computer. User interface output devices may include display subsystems, indicator lights, or non-visual displays such as audio output devices. Display subsystems may be flat-panel devices such as those using cathode ray tubes (CRTs), liquid crystal displays (LCDs), or plasma displays, plotting devices, touchscreens, etc. For example, user interface output devices may include, but are not limited to, various display devices that visually convey text, graphics, and audio / visual information, such as monitors, printers, speakers, headphones, automobile navigation systems, plotters, audio output devices, and modems.
[0199] The storage subsystem 1118 provides a repository or data store for storing information and data used by the computer system 1100. The storage subsystem 1118 provides a tangible, non-transitory, computer-readable storage medium for storing the basic programming and data constructs that provide some example functionality. Software (e.g., programs, code modules, instructions) that, when executed by the processing subsystem 1104, provide the functionality described above may be stored in the storage subsystem 1118. The software may be executed by one or more processing units of the processing subsystem 1104. The storage subsystem 1118 may also provide authentication in accordance with the teachings of the present disclosure.
[0200] The storage subsystem 1118 may include one or more non-transitory memory devices, including volatile and non-volatile memory devices. As shown in FIG. 11, the storage subsystem 1118 includes a system memory 1110 and a computer-readable storage medium 1122. The system memory 1110 may include several memories, including volatile main random access memory (RAM) for storing instructions and data during program execution and non-volatile read-only memory (ROM) or flash memory in which fixed instructions are stored. In some implementations, a basic input / output system (BIOS), containing the basic routines that help transfer information between elements within the computer system 1100, such as during start-up, may typically be stored in ROM. Typically, RAM contains data and / or program modules currently being operated on and executed by the processing subsystem 1104. In some implementations, the system memory 1110 may include several different types of memory, such as static random access memory (SRAM), dynamic random access memory (DRAM), etc.
[0201] 11, system memory 1110 may load running application programs 1112, program data 1114, and operating system 1116, which may include various applications such as a web browser, a middle-tier application, a relational database management system (RDBMS), etc. By way of example, operating system 1116 may include Microsoft Windows®, Apple Macintosh®, and / or Linux operating systems, various commercially available UNIX® or UNIX-like operating systems (including, but not limited to, various GNU / Linux operating systems, Google Chrome® OS, etc.), and / or various versions of mobile operating systems such as iOS®, Windows Phone, Android® OS, BlackBerry® OS, Palm® OS operating systems, etc.
[0202] The computer-readable storage medium 1122 may store programming and data constructs that provide some example functionality. The computer-readable storage medium 1122 may provide storage of computer-readable instructions, data structures, program modules, and other data for the computer system 1100. Software (programs, code modules, instructions) that, when executed by the processing subsystem 1104, provide the above-described functionality may be stored in the storage subsystem 1118. By way of example, the computer-readable storage medium 1122 may include non-volatile memory such as a hard disk drive, a magnetic disk drive, a CD-ROM, a DVD, an optical disk drive such as a Blu-Ray® disk, or other optical media. The computer-readable storage medium 1122 may include, but is not limited to, a Zip® drive, a flash memory card, a Universal Serial Bus (USB) flash drive, a Secure Digital (SD) card, a DVD disk, a digital video tape, etc. The computer-readable storage medium 1122 may also include solid-state drives (SSDs) based on non-volatile memory such as flash memory-based SSDs, enterprise flash drives, solid-state ROM, etc., SSDs based on volatile memory such as solid-state RAM, dynamic RAM, static RAM, DRAM-based SSDs, magnetoresistive RAM (MRAM) SSDs, and hybrid SSDs that use a combination of DRAM and flash memory-based SSDs.
[0203] In particular examples, storage subsystem 1118 may also include a computer-readable storage medium reader 1120 that may be further connected to a computer-readable storage medium 1122. Reader 1120 may be configured to receive and read data from a memory device such as a disk, flash drive, or the like.
[0204] In certain examples, computer system 1100 may support virtualization techniques, including, but not limited to, virtualization of processing and memory resources. For example, computer system 1100 may provide support for running one or more virtual machines. In certain examples, computer system 1100 may execute a program such as a hypervisor that facilitates configuration and management of virtual machines. Each virtual machine may be assigned memory, computing (e.g., processors, cores), I / O, and networking resources. Each virtual machine typically runs independently from other virtual machines. A virtual machine typically runs its own operating system, which may be the same as or different from the operating systems run by other virtual machines executed by computer system 1100. Thus, potentially multiple operating systems may be running simultaneously by computer system 1100.
[0205] The communications subsystem 1124 provides an interface to other computer systems and networks. The communications subsystem 1124 serves as an interface for sending and receiving data between other systems and the computer system 1100. For example, the communications subsystem 1124 may enable the computer system 1100 to establish a communications channel to one or more client devices over the Internet to send and receive information to and from the one or more client devices. For example, if the computer system 1100 is used to implement the bot system 120 shown in FIG. 1, the communications subsystem may also be used to communicate with an application system and a system running a storage virtual machine selected for the application.
[0206] The communications subsystem 1124 may support both wired and / or wireless communication protocols. In certain examples, the communications subsystem 1124 may include radio frequency (RF) transceiver components for accessing wireless voice and / or data networks (e.g., using cellular telephone technology, advanced data network technologies such as 3G, 4G, or EDGE (High Data Rates for Global Evolution), WiFi (IEEE 802.XX family of standards, or other mobile communications technologies, or any combination thereof), global positioning system (GPS) receiver components, and / or other components. In some examples, the communications subsystem 1124 may provide a wired network connection (e.g., Ethernet) in addition to or instead of a wireless interface.
[0207] The communications subsystem 1124 may receive and transmit data in various formats. In some examples, the communications subsystem 1124 may receive incoming communications in the form of structured and / or unstructured data feeds 1126, event streams 1128, event updates 1130, etc., among other formats. For example, the communications subsystem 1124 may be configured to receive (or transmit) data feeds 1126 in real time from users of social media networks and / or other communications services, such as web feeds such as Twitter® feeds, Facebook® updates, Rich Site Summary (RSS) feeds, and / or real-time updates from one or more third-party sources.
[0208] In particular examples, the communications subsystem 1124 may be configured to receive data in the form of a continuous data stream, which may include an event stream 1128 of real-time events and / or event updates 1130 that may be continuous or infinite in nature without a clear end. Examples of applications that generate continuous data may include, for example, sensor data applications, financial stock ticker boards, network performance measurement tools (e.g., network monitoring and traffic management applications), clickstream analysis tools, automobile traffic monitoring, etc.
[0209] The communications subsystem 1124 may be configured to communicate data from the computer system 1100 to other computer systems or networks. This data may be communicated in a variety of different formats, such as structured and / or unstructured data feeds 1126, event streams 1128, event updates 1130, etc., to one or more databases that may be in communication with one or more streaming data source computers coupled to the computer system 1100.
[0210] Computer system 1100 may be one of a variety of types, including a handheld portable device (e.g., an iPhone® cellular phone, an iPad® computing tablet, a PDA), a wearable device (e.g., a Google Glass® head-mounted display), a personal computer, a workstation, a mainframe, a kiosk, a server rack, or other data processing system. Due to the ever-changing nature of computers and networks, the description of computer system 1100 shown in FIG. 11 is intended only as a specific example. Many other configurations are possible, having more or fewer components than the system shown in FIG. 11. It should be recognized that other aspects and / or methods for implementing various examples are possible, based on the disclosure and teachings herein.
[0211] While specific examples have been described, various variations, modifications, alternative configurations, and equivalents are possible. The examples are not limited to operation in a particular data processing environment, but may freely operate in multiple data processing environments. Furthermore, while the examples have been described using a particular sequence of transactions and steps, it should be apparent to those skilled in the art that this is not intended to be limiting. While some flowcharts describe operations as a sequential process, many of these operations may be performed in parallel or simultaneously. Additionally, the order of operations may be re-specified. A process may have additional steps not included in the figures. Various features and aspects of the above examples may be used individually or together.
[0212] Additionally, while particular examples have been described using particular combinations of hardware and software, it should be understood that other combinations of hardware and software are possible. Particular examples may be implemented exclusively in hardware, exclusively in software, or using a combination thereof. The various processes described herein may be implemented on the same processor or any combination of different processors.
[0213] Where a device, system, component, or module is described as being configured to perform a particular operation or function, such configuration may be achieved, for example, by designing an electronic circuit to perform the operation, by programming a programmable electronic circuit (such as a microprocessor) to perform the operation, by executing, for example, computer instructions or code, or a processor or core programmed to execute code or instructions stored on a non-transitory memory medium, or any combination thereof. Processes may communicate using a variety of techniques, including, but not limited to, conventional techniques for inter-process communication, and different pairs of processes may use different techniques, and the same pair of processes may use different techniques at different times.
[0214] In this disclosure, specific details are provided to ensure a thorough understanding of the examples. However, the examples may be practiced without these specific details. For example, well-known circuits, processes, algorithms, structures, and techniques are shown without unnecessary detail so as not to obscure the examples. This specification provides illustrative examples only and is not intended to limit the scope, applicability, or configuration of other examples. Rather, the above description of the examples provides one skilled in the art with an enabling description for implementing various examples. Various changes are possible within the function and configuration of elements.
[0215] Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense. It will be apparent, however, that additions, subtractions, deletions, and other modifications and alterations may be made thereto without departing from the broader spirit and scope as set forth in the claims. Thus, while specific examples have been described, they are not intended to be limiting. Various modifications and equivalents are within the scope of the appended claims.
[0216] While the foregoing specification describes aspects of the disclosure with reference to specific examples thereof, those skilled in the art will recognize that the disclosure is not limited thereto. Various features and aspects of the above disclosure may be used individually or together. Moreover, the examples can be utilized in a variety of environments and applications beyond those described herein without departing from the broader spirit and scope of the specification. Accordingly, the specification and drawings should be regarded as illustrative rather than restrictive.
[0217] In the above description, the methods are described in a particular order for purposes of illustration. It should be understood that in alternative examples, the methods may be performed in an order different from that described. It should also be understood that the methods described above may be performed by hardware components or embodied in a sequence of machine-executable instructions that, when used, may cause a machine, such as a general-purpose or special-purpose processor or logic circuitry programmed with such instructions, to perform the method. These machine-executable instructions may be stored on one or more machine-readable media, such as a CD-ROM or other type of optical disk, floppy disk, ROM, RAM, EPROM, EEPROM, magnetic or optical card, flash memory, or other type of machine-readable medium suitable for storing electronic instructions. Alternatively, the methods may be performed by a combination of hardware and software.
[0218] Where a component is described as being configured to perform particular operations, such configuration may be achieved, for example, by designing electronic circuitry or other hardware to perform the particular operations, by programming a programmable electronic circuitry (e.g., a microprocessor or other suitable electronic circuitry) to perform the particular operations, or any combination thereof.
[0219] While illustrative examples of the present application have been described in detail herein, it is to be understood that the concepts of the present invention may be variously embodied and employed in other forms, and that the claims are intended to be construed to include such variations except insofar as limited by the prior art.
Claims
1. 1. A method comprising: an event collector of the analytics system collecting one or more attributes for one or more events associated with a set of conversations with the bot system; an analysis engine of the analysis system using one or more filtering criteria selected by a user selecting one or more conversations from the set of conversations based on the one or more attributes of the one or more events; the one or more filtering criteria include incomplete results; generating an aggregated path diagram for the selected one or more conversations, the aggregated path diagram including a plurality of nodes and a plurality of connections between the plurality of nodes; each node of the plurality of nodes corresponds to a respective state of the bot system during the one or more conversations, the state of each node designating a component of the bot system that provides functionality required at that point in the one or more conversations; Each connection of the plurality of connections represents a transition from one state of the bot system to another state of the bot system during the one or more conversations, and the method further comprises: and graphically displaying the aggregate path diagram on a GUI, wherein displaying the aggregate path diagram includes displaying nodes among the plurality of nodes that indicate stopping points of the one or more conversations that resulted in the incomplete result, and providing a user context for the state of the bot system during the one or more conversations at each node, the context including the components defined for each state in the aggregate path diagram; receiving, through the GUI, a first user selection of the node indicating the stopping point; and graphically displaying on the GUI based on the first user selection, one or more utterances received by the bot system prior to stopping the one or more conversations; the attributes are dialog state attributes, intent resolution attributes, entity resolution attributes, error and timeout attributes, or a combination thereof; displaying the aggregated path diagram includes displaying each node of the plurality of nodes as a user-selectable item, and displaying a node among the plurality of nodes that indicates a stopping point of the one or more conversations that resulted in the incomplete result; the analysis system further comprising training the bot system based at least on the one or more utterances received by the bot system; The training includes displaying the one or more utterances, properties related to intent resolution including margin gain, as well as user-selectable items for unresolved intent resolution attributes of the attributes for the training; and updating an outstanding intent resolution attribute of the attribute based on the user selection.
2. The method further comprises: graphically displaying on the GUI user-selectable items for one or more transcripts of the one or more conversations based on the first user selection; receiving, through the GUI, a second user selection of the one or more transcripts of the one or more conversations; 2. The method of claim 1, further comprising: graphically displaying on the GUI based on the second user selection, the one or more transcripts of the one or more conversations between the user and the bot system before stopping the one or more conversations.
3. 3. The method of claim 1, wherein the aggregated path diagram includes a number associated with each respective connection, the number indicating a total number of conversations, among the one or more conversations, that include a transition represented by the respective connection.
4. The method further comprises: generating, by the analysis engine of the analysis system, one or more reports relating to the selected one or more conversations; and graphically displaying on the GUI a first report from the one or more reports and one or more user selectable items associated with the first report, the one or more user selectable items including a menu for selecting a conversation from the set of conversations associated with a particular end user intent, the method further comprising: receiving, via said GUI, a user selection of one of said conversations from said set of conversations associated with said particular end user intent; and graphically displaying a second report including the certain conversation from the one or more reports on the GUI based on the user selection.
5. A program for causing a computer to execute the method according to any one of claims 1 to 4.
6. a memory for storing the program according to claim 5; a processor for executing the program.
Citation Information
Patent Citations
Analytics for a BOT system
US20190102078A1