Decision tree navigation through text messages

Disclosed are various embodiments for navigating a workflow using a text messaging interface. A client device executes an application. The application renders the messaging interface on a display. The application also renders within the messaging interface a response to a previous selection of a first user interface element. The application further renders a second user interface element within the messaging interface that, when manipulated, causes the application to remove the response and the second user interface element from the messaging interface and also to rerender the first user interface element within the messaging interface.

BACKGROUND

Decision trees are often used to make informed decisions regarding workflow management. For example, a decision tree may be used to guide a user through a particular workflow or to guide a user to select the appropriate workflow to initiate. As another example, a decision tree can be used to solicit information based on various factors.

DETAILED DESCRIPTION

A decision tree is a graph used to model decisions and their possible consequences. Accordingly, decision trees can be used to model workflows, algorithms, and other automated or semi-automated behavior. In some instances, a decision tree can be used to model communications between an automated service agent, such as a chat bot, an automated attendant (e.g., for an interactive voice response unit), or similar artificially intelligent service agent. In these instances, the decision tree can model a conversation, where a user may be presented with a question (e.g., “How may I help you?”) and several potential responses (e.g., “I would like to make a return.” or “I would like to check the status of my package.”). The response that the user provides thereby determines which branch of the decision tree is followed to continue the conversation, with multiple levels of the decision tree reflecting multiple levels of conversation.

However, artificially intelligent service agents are generally unable to allow a user to reverse the flow of the conversation modeled by a decision tree. For example, in a natural language conversation between two people, if a misunderstanding occurs or if someone changes his or her mind, one can communicate the misunderstanding or change in intent to the other easily while continuing the conversation. The following conversation illustrates the point:

Person 1: How can I help you?

Person 2: I want to return an item for a refund to my credit card.

Person 1: Sure, do you have your credit card with you?

Person 2: I changed my mind. Can I get store credit instead?

In contrast, a decision tree guiding an artificially intelligent service agent's conversation with a user may not provide for a user to notify the artificially intelligent service agent that he or she has changed his or her mind without introducing cycles into the decision tree.

However, various embodiments of the present disclosure allow for a user to navigate a decision tree or a similarly modeled workflow in a bi-directional manner. Should a user change his or her mind about a response provided to a message from an artificially intelligent service agent (e.g., a “chat bot”), the user can delete or otherwise cancel his or her response. This allows for the user to arbitrarily change the path the user wishes to follow through a decision tree without having to restart from the beginning. In the following discussion, a general description of the system and its components is provided, followed by a discussion of the operation of the same.

FIG. 1depicts a user interface103rendered on a display106of a client device109according to an embodiment of the present disclosure. In the illustration ofFIG. 1, the user interface103shows a message asking a user to select an issue the user would like addressed or for which the user is seeking assistance. The user interface103also contains a plurality of user interface elements113from which the user can select an issue (e.g., “Issue 1,” “Issue 2,” and “Issue 3”) or type of issue. In some instances, these user interface elements113can be rendered as separate user interface elements113. In other instances, the issues may be presented as a subelements of a single user interface element (e.g., as options in a list of options, etc.).

The client device109may include, for example, a processor-based system such as a computer system. Such a computer system may be embodied in the form of a personal computer (e.g., a desktop computer, a laptop computer, or similar device), a mobile computing device (e.g., personal digital assistants, cellular telephones, smartphones, web pads, tablet computer systems, music players, portable game consoles, electronic book readers, and similar devices), media playback devices (e.g., media streaming devices, BluRay® players, digital video disc (DVD) players, set-top boxes, and similar devices), a videogame console, or other devices with like capability. The client device109may include one or more displays106, such as liquid crystal displays (LCDs), gas plasma-based flat panel displays, organic light emitting diode (OLED) displays, electrophoretic ink (“E-ink”) displays, projectors, or other types of display devices. In some instances, the display106may be a component of the client device109or may be connected to the client device109through a wired or wireless connection.

Moving on toFIG. 2, shown is an example of a subsequent rendering of the user interface103on the display106of the client device109in response to a user selecting an issue from the issues previously presented in the user interface103ofFIG. 1. In the illustrated example, the user has previously selected that he or she would like help with “Issue 2.” In response, the user interface103has been updated to reflect a new message asking the user to select a sub-issue. A new set of user interface elements203are rendered that allow a user to select an individual sub-issue. An issue can have multiple sub-issues if there are multiple options for resolving the issue. For example, a user that wishes to return an item can resolve the issue by having the item replaced, having the purchase amount refunded, etc.

In addition, a cancellation element206is rendered within the user interface103. In this particular example, the cancellation element206is depicted as a button or similar control that a user could manipulate. If the user were to manipulate the cancellation element206, the user would be able to cancel or “undo” their previous selection of an issue. For example, if the user were to manipulate the cancellation element206, the user interface103would be updated. For example, the user interface103might be re-rendered to match the user interface103depicted inFIG. 1to allow a user to select a different issue. In some instances, the cancellation element206may be rendered as part of an indication of a previous selection. However, the cancellation element206can be rendered in a number of forms other than what is depicted inFIG. 2.

For example, a cancellation element206could be integrated into the individual messages, allowing for gestures to be used to manipulate the user interface to cancel or “undo” a previous selection of an issue. For instance, a user could touch the area of the display106where a messaging element is rendered and swipe in a particular direction (e.g., left, right, up, down, diagonally, etc.). In response to the user's swipe, the user interface103would be updated. For example, the user interface103might be re-rendered to match the user interface103depicted inFIG. 1to allow a user to select a different issue.

FIG. 3is another depiction of some of the principles of the various embodiments of the present disclosure.FIG. 3illustrates an example of a subsequent rendering of the user interface103on the display106of the client device109in response to a user selecting a sub-issue from the sub-issues previously presented in the user interface103ofFIG. 2. A further set of user interface elements303is shown, asking the user to selection how he or she would prefer to resolve his or her issue/sub-issue. Another cancellation element206is rendered within the user interface103to allow a user to reverse, cancel, or otherwise undo his or her selection of a sub-issue. As illustrated, a user is moving to manipulate the cancellation element206in order to move back to the previous set of potential sub-issues. Although only a single cancellation element206is illustrated for purposes of simplicity and clarity, some embodiments may include a cancellation element206with each selection a user has previously made in order to allow the user to cancel or reverse multiple selections by manipulating a single cancellation element206.

FIG. 4depicts an example of a result of the user manipulating the cancellation element206inFIG. 3. Here, the user's previous selection of “Issue 2.3” has been removed as well as any references to the user's previous selection of “Issue 2.3.” In some embodiments of the present disclosure, however, a confirmation element403can be rendered that provides an indication to a user that he or she has cancelled his or her previous selection. Accordingly, the user interface103is similar to or the same as the previous user interface103depicted inFIG. 2. For example, a set of user interface elements203is presented allowing the user to select a sub-issue. As depicted, the user can change his or her selection by selecting a new sub-issue by manipulating a different one of the user interface elements203. To illustrate this functionality, the user is depicted inFIG. 4as selecting a new sub-issue, in this case “Issue 2.4.”

Moving on toFIG. 5, an example of an updated user interface103is depicted as rendered on the display106of the client device109in response to the user's selection of “Issue 2.4” as previously depicted inFIG. 4. A further set of user interface elements503is shown, asking the user to selection how he or she would prefer to resolve his or her issue/sub-issue. For example, the user could select either to have a refund applied to his or her card or to have a refund applied to a gift card. Another cancellation element206is rendered within the user interface103to allow a user to reverse, cancel, or otherwise undo his or her selection of sub-issue 2.4 the was previously selected inFIG. 4.

FIGS. 6 and 7show examples of a user interface103rendered on the display106of the client device109in response to a user's selection of a preferred resolution of his or her issue inFIG. 5. InFIG. 6, a confirmation message is rendered to indicate the user when the refund can be expected to be issued.FIG. 7depicts the user finishing the exchange.

AlthoughFIGS. 1-7depict an embodiment of the present disclosure that incorporates a text based interface on a touchscreen mobile device, other interfaces could incorporate the principals of the present disclosure. In a first example, a personal computer (PC) application could incorporate the principals of the present disclosure. For instance, a user could use a mouse to manipulate a cancellation element206or drag a text or message box across the display106. In a second instance, a user could interact with a voice interface. The client device109could dictate responses to a user. Likewise, the client device109could listen for commands spoken by a user, including commands to cancel a previous instruction, selection, or other voice command or instruction provided by the user.

With reference toFIG. 8, shown is a networked environment800according to various embodiments. The networked environment800includes a computing environment803, and a client device109, which are in data communication with each other via a network806. The network806includes wide area networks (WANs) and local area networks (LANs). These networks can include wired or wireless components or a combination thereof. Wired networks can include Ethernet networks, cable networks, fiber optic networks, and telephone networks such as dial-up, digital subscriber line (DSL), and integrated services digital network (ISDN) networks. Wireless networks can include cellular networks, satellite networks, Institute of Electrical and Electronic Engineers (IEEE) 802.11 wireless networks (i.e., WI-FI®), BLUETOOTH® networks, microwave transmission networks, as well as other networks relying on radio broadcasts. The network806can also include a combination of two or more networks806. Examples of networks806can include the Internet, intranets, extranets, virtual private networks (VPNs), and similar networks.

Various applications or other functionality may be executed in the computing environment803according to various embodiments. The components executed on the computing environment803, for example, include a chat bot809and potentially other applications, services, processes, systems, engines, or functionality not discussed in detail herein.

The chat bot209is executed to communicate with a user of a client device100through various media. For example, the chat bot209can be configured to provide text responses to queries, requests, or instructions provided by a user (e.g., via electronic mail, a social media forum, a chat application, or similar messaging application). In another example, the chat bot209can include a voice synthesizer component that would allow the chat bot209to participate in a voice communication session with a user. For instance, the chat bot209could include a text-to-speech and a speech-to-text component in order to identify user requests or instructions and convert an appropriate response to a voice response.

Also, various data is stored in a data store813that is accessible to the computing environment803. The data store813may be representative of a plurality of data stores813, which can include relational databases, object-oriented databases, hierarchical databases, hash tables or similar key-value data stores, as well as other data storage applications or data structures. The data stored in the data store813is associated with the operation of the various applications or functional entities described below. This data can include one or more decision trees816, and potentially other data.

A decision tree816is a tree or similar graph that is used to model conversations, workflows, or otherwise represent decisions, responses and potential outcomes. Accordingly, a decision tree816can include a plurality of nodes, where each node is linked to one or more other nodes. A root or head node represents the entry point to the decision tree816. The root node may have one or more leaf or child nodes representing potential paths. Each leaf or child node can also be a parent node to one or more of its own leaf or child nodes. Each node in the decision tree816can include information such as a response or message to be used by the chat bot209, an action to be performed or undertaken by a computing device or application, and other information. Each node can also include identifiers to its child or leaf nodes as well as the parent node.

For example, a decision tree816used by the chat bot809could include an root or head node that serves as an entry point for addressing customer issues. The root or head node could include a text message to be used by the chat bot809(e.g., “How can I help you?”) and links to child nodes representing possible issues the customer may have (e.g., a child node for returning items, a child node for tracking order status, etc.). A child node for returning items could include a message to be used by the chat bot809(e.g., “What is wrong with the item?” or “Would you like a refund or a replacement?”) and a list to additional child nodes representing potential resolutions. Individual nodes within the decision tree816may also include instructions or operations to be performed by various systems or applications. For example, a node within the decision tree816may instruct the chat bot809to provide information (e.g., order number, item number, purchase amount, etc.) to a payments system in order to initiate or process a refund. As another example, a node within the decision tree816may instruct the chat bot809to provide information (e.g., order number) to an order or shipment tracking application to determine the status of a current order or shipment.

The client device109is representative of a plurality of client devices that may be coupled to the network806. The client device109may be configured to execute various applications such as a client application819or other applications. The client application819may be executed in a client device109, for example, to access network content served up by the computing environment803or other servers, thereby rendering a user interface103(FIG. 1) on the display106(FIG. 1). To this end, the client application819may include, for example, a browser, a messaging application or other dedicated application, or other executable. The user interface103may include a network page, an application screen, or other user mechanism for obtaining user input. The client device109may be configured to execute applications beyond the client application819such as, for example, email applications, social networking applications, word processors, spreadsheets, or other applications.

Next, a general description of the operation of the various components of the networked environment800is provided. To begin, the client application819creates a connection to the chat bot809and receives an initial message from the chat bot809. For example, if the client application819were a browser, the connection could be established using one or more hypertext transfer protocol (HTTP) requests using various synchronous or asynchronous web-application frameworks. If the client application819were a dedicated or independent application, the connection could be initiated using a custom protocol or could rely on one or more established messaging protocols (e.g., the extensible messaging and presence protocol (XMPP) or other messaging protocols). The initial message may be specified, for example, in a root node of a decision tree816used by the chat bot809to communicate with users. The chat bot809may also include a list of potential actions for the client application819to present to the user. Individual potential actions may correspond to individual child nodes to the root node.

The client application819then causes a user interface103to be rendered on a display106of the client device109. The user interface can include the content of the initial message received from the chat bot809and one or more user interface elements (e.g., buttons, a drop-down list, etc.) that allow a user to select a response to the initial message. Once the user manipulates a user interface element, the corresponding response is provided to the chat bot809.

When the chat bot809receives the response from the client application819, the chat bot809selects the corresponding child node associated with the response to determine the next action to take. For example, if the response is that that the user is requesting to return an item, then the chat bot809may select a child node related to returns. The chat bot809could then send a message to the client application819specified in the child node. The chat bot809could also include a list of potential actions for the client application819to present to the user. For example, one action could be to exchange the item while another action could be to receive a refund for the item.

The client application819can then update the user interface103rendered on the display106of the client device109to reflect the response from the chat bot809. For example, the client application819could display the message received from the chat bot809and one or more user interface elements that allow the user to select another response to the chat bot809(e.g., “I want to exchange the item.” and “I want to receive a refund.”). The client application819could also display a cancellation element206(FIG. 2) next to the initial action selected by the user. If the user were to manipulate the cancellation element206, the user's previous reply to the chat bot809would be cancelled or undone, allowing the user to select an alternative branch in the decision tree816to follow.

Referring next toFIG. 9, shown is a flowchart that provides one example of the operation of a portion of the client application819according to various embodiments. It is understood that the flowchart ofFIG. 9provides merely an example of the many different types of functional arrangements that may be employed to implement the operation of the portion of the client application819as described herein. As an alternative, the flowchart ofFIG. 9may be viewed as depicting an example of elements of a method implemented in the client device109(FIG. 8) according to one or more embodiments.

Beginning with box903, the client application819initiates a connection with the chat bot809. This connection may be initiated, for example, when the client application819is opened or launched (e.g., a standalone or dedicated messaging application) or when a messaging component of the client application819is invoked (e.g., a messaging window or “Live Chat” window provided by a website and rendered in a browser). In some instances, the client application819can provide information to the chat bot809(FIG. 8), such as a user name or other identifier, in order for the chat bot809to provide more relevant or personalized responses.

Proceeding to box906, the client application819receives and renders a first response received from the chat bot809. An example of an initial response rendered on a display106(FIG. 1) of the client device109is depicted inFIG. 1. However, the initial response can be rendered in other manners. Generally, the initial response from the chat bot809will include a message and a list of options that a user can select. The user interface103(FIG. 1) created to display the message and options can include a mechanism for the user one or more of the options (e.g., a set of buttons, a scroll-wheel, a drop-down menu, etc.). In some instances, the options are mutually exclusive, such that selecting one option precludes selection of another option.

Moving on to box909, the client application819can subsequently obtain a user's reply and forward it to the chat bot809. For example, the client application819may detect a user's manipulation of a user interface element corresponding to a particular option or issue. The client application819could then forward this information to the chat bot809to notify the chat bot809which branch in the decision tree816should be followed.

Referring next to box913, the client application819receives a second response from the chat bot809and renders information included in the second response within the user interface103. An example of the client application819rendering the contents of the second response is previously provided inFIG. 2. The second response can contain information from the child node corresponding to the previous selection of the user. This can include a message for the user to be rendered in the user interface103as well as one or more further options for the user to select. These options can be rendered in a manner that allows the user to select one or more of the options (e.g., a set of buttons, a scroll-wheel, a drop-down menu, etc.). In some instances, the options are mutually exclusive, such that selecting one option precludes selection of another option.

In addition, the client application819can cause a cancellation element206(FIG. 2) to be rendered in association with the user's previous selection. Should a user select the cancellation element206, the client application819would send a message to the chat bot809to return to node in the decision tree corresponding to the user's cancelled selection. An example of the user selecting a cancellation element206is previously provided inFIG. 3.

Proceeding to box916, the client application819can obtain a cancellation event and forward it to the chat bot809. For example, the client application819may detect that the user has manipulated a cancellation element206. In response, the client application819can send a message to the chat bot809that the user has manipulated the cancellation element206and indicating the corresponding reply to the chat bot809or node in the decision tree816that the user has chosen to cancel.

Moving on to box919, the client application819receives a message from the chat bot809indicating whether the user is permitted to initiate a cancellation at the requested branch or node in the decision tree816. A user may not be permitted to initiate a cancellation for any number of reasons. For example, some actions or decisions may be irreversible once they have occurred. For instance, if a user has requested that refund be issued, the refund may be irreversible once the money has been deposited to a user's bank account. As another example, a user may be unable to cancel an order once the order has shipped, requiring the user to instead separately request a return at a later point in time. In some instances, an action may be deemed irreversible once a triggering event has occurred (e.g., refund deposited or order shipped) or after a predetermined or predefined window of time has elapsed. If the client application819receives a response from the chat bot809indicating that the cancellation is permitted or was successful, then execution proceeds to box923. However, if the client application819receives a response from the chat bot809indicating that that cancellation is not permitted or was unsuccessful, then execution proceeds to box926.

If the process proceeds to box923, the client application819can update the user interface103to reflect a result of the user manipulating the cancellation element206. The client application819can update the user interface103using a variety of approaches. Several examples of various embodiments are provided below, but other approaches can also be used. After updating the user interface103, the process then ends.

As a first example, the client application819can remove the conversational thread occurring after the position where the user selected the cancellation element206. In some instances, this may involve re-rendering an earlier version of the user interface103from a point in time prior to a user's cancelled selections of one or more options. An example of a re-rendering of the user interface103after the user has cancelled a previous selection via manipulation of a cancellation element206is previously presented inFIG. 4.

As a second example, the client application819could leave in place the previously rendered conversational thread. In this instance, the client application819could render a response received from the chat bot806corresponding to a point in time prior to a user's cancelled selections of one or more options. The user's previous selections and the previous responses received from the chat bot806would still be displayed or otherwise rendered in the user interface103.

However, if the process proceeds to box926, the client application819may render an error message within the user interface103. The error message may, for example, inform the user that the user's previous selection of an option or previous reply cannot be cancelled. In some instances, the error message may also include a reason why the user can no longer cancel their previous selection (e.g., refund has already been issued to the user's bank account, the order has already shipped, etc.). The process then ends.

Referring next toFIG. 10, shown is a flowchart that provides one example of the operation of a portion of the chat bot809according to various embodiments. It is understood that the flowchart ofFIG. 10provides merely an example of the many different types of functional arrangements that may be employed to implement the operation of the portion of the chat bot809as described herein. As an alternative, the flowchart ofFIG. 10may be viewed as depicting an example of elements of a method implemented in the computing environment803(FIG. 8) according to one or more embodiments.

Beginning with box1003, the chat bot809identifies a current node in the decision tree816. For example, if the chat bot809is receiving an initial connection from a client application819, the chat bot809could select the root node of a decision tree816. As another example, if the chat bot809is currently interacting with a client application819, the chat bot809could select a node in the decision tree816that corresponds to the most recently received reply or message from the client application819.

Proceeding to box1006, the chat bot809sends a first response to the client application819. The first response can include a message and a list of options that a user can select. The individual options in the list of options can reflect child nodes of or branches from the current node in the decision tree816.

Moving on to box1009, the chat bot809receives a first reply from the client application819. The first reply can include an identifier of an option selected by the user of the client application819. In response, the chat bot selects an appropriate child node of the currently selected node within the decision tree816, wherein the child node corresponds to the option selected by the user.

Referring next to box1013, the chat bot809sends a second response to the client application819. The second response can include a message for the user, which may have been stored in the selected child node. The second response can also include a list of additional options for the user to select. The additional options can represent, for example, one or more child nodes of the selected child node or branches in the decision tree816originating from the selected child node.

Proceeding to box1016, the chat bot809receives a notification or message from the client application819that a user has chosen to cancel a portion of the interactions between the chat bot809and the client application819. The cancellation message can include an identifier of the node in the decision tree816to which the user intends to return. For example, a user may have selected an incorrect option by accident in the first reply sent from the client application819to the chat bot809. In some embodiments, however, a user can choose to cancel any option selected, and therefore any reply sent to the chat bot809.

Moving on to box1019, the chat bot809determines whether the user can return to the identified node in the decision tree816and, therefore, can cancel one or more previous interactions with the chat bot809. A user may not be permitted, for example, to return to a node in the decision tree816for a variety of reasons. For example, a trigger event may have occurred that bars cancellation of one or more interactions (e.g., an order cannot be cancelled because it has already shipped or a refund cannot be cancelled because money has already been disbursed). To determine whether a user can return to the specified node, and thereby cancel any subsequent interactions (e.g., messages between the chat bot809and the client application819), the chat bot809may traverse the decision tree816to determine if any nodes below the node the user wishes to return to are subject to a trigger condition or other constraint. If no trigger condition or other constraint is identified, the process proceeds to box1023. However, if a trigger condition or other constraint is identified, then the process proceeds to box1026.

If execution proceeds to box1023, the chat bot809selects the node in the decision tree816to which the user intends to return. The chat bot809then sends a response to the client application819. The response could include a message to be presented to the user, such as a message stored in the selected node. The response could also include a list of options for the user to select. Individual options in the list of options could include child nodes of the currently selected node in the decision tree816or branches in the decision tree816that proceed from the current position within the decision tree816. After sending the message, the process subsequently ends.

However, if execution proceeds to box1026, the chat bot809sends an error message to the client application819. The error message may include information such as the reason why the user's cancellation request could not be processed. The process then subsequently ends.

With reference toFIG. 11, shown is a schematic block diagram of the computing environment803according to an embodiment of the present disclosure. The computing environment803includes one or more computing devices1100. Each computing device1100includes at least one processor circuit, for example, having a processor1103and a memory1106, both of which are coupled to a local interface1109. To this end, each computing device1100may include, for example, at least one server computer or like device. The local interface1109may include, for example, a data bus with an accompanying address/control bus or other bus structure as can be appreciated.

Stored in the memory1106are both data and several components that are executable by the processor1103. In particular, stored in the memory1106and executable by the processor1103are the chat bot809, and potentially other applications. Also stored in the memory1106may be a data store813and other data. In addition, an operating system may be stored in the memory1106and executable by the processor1103.

A number of software components are stored in the memory1106and are executable by the processor1103. In this respect, the term “executable” means a program file that is in a form that can ultimately be run by the processor1103. Examples of executable programs may be, for example, a compiled program that can be translated into machine code in a format that can be loaded into a random access portion of the memory1106and run by the processor1103, source code that may be expressed in proper format such as object code that is capable of being loaded into a random access portion of the memory1106and executed by the processor1103, or source code that may be interpreted by another executable program to generate instructions in a random access portion of the memory1106to be executed by the processor1103, etc. An executable program may be stored in any portion or component of the memory1106including, for example, random access memory (RAM), read-only memory (ROM), hard drive, solid-state drive, Universal Serial Bus (USB) flash drive, memory card, optical disc such as compact disc (CD) or digital versatile disc (DVD), floppy disk, magnetic tape, or other memory components.

Also, the processor1103may represent multiple processors1103or multiple processor cores and the memory1106may represent multiple memories1106that operate in parallel processing circuits, respectively. In such a case, the local interface1109may be an appropriate network that facilitates communication between any two of the multiple processors1103, between any processor1103and any of the memories1106, or between any two of the memories1106. The local interface1109may include additional systems designed to coordinate this communication, including, for example, performing load balancing. The processor1103may be of electrical or of some other available construction.

The flowcharts ofFIGS. 9 and 10show the functionality and operation of an implementation of portions of the client application819and the chat bot809, respectively. If embodied in software, each block may represent a module, segment, or portion of code that includes program instructions to implement the specified logical function(s). The program instructions may be embodied in the form of source code that includes human-readable statements written in a programming language or machine code that includes numerical instructions recognizable by a suitable execution system such as a processor1103in a computer system or other system. The machine code may be converted from the source code through various processes. For example, the machine code may be generated from the source code with a compiler prior to execution of the corresponding application. As another example, the machine code may be generated from the source code concurrently with execution with an interpreter. Other approaches can also be used. If embodied in hardware, each block may represent a circuit or a number of interconnected circuits to implement the specified logical function or functions.

Further, any logic or application described herein, including the chat bot809and the client application819, may be implemented and structured in a variety of ways. For example, one or more applications described may be implemented as modules or components of a single application. Further, one or more applications described herein may be executed in shared or separate computing devices or a combination thereof. For example, a plurality of the applications described herein may execute in the same computing device1100, the same client device109, or in multiple computing devices in the same computing environment803.