Patent ID: 12192406

DETAILED DESCRIPTION

In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of various embodiments disclosed herein. It will be apparent, however, to one skilled in the art that various embodiments of the present disclosure may be practiced without some of these specific details. The ensuing description provides exemplary embodiments only, and is not intended to limit the scope or applicability of the disclosure. Furthermore, to avoid unnecessarily obscuring the present disclosure, the preceding description omits a number of known structures and devices. This omission is not to be construed as a limitation of the scopes of the claims. Rather, the ensuing description of the exemplary embodiments will provide those skilled in the art with an enabling description for implementing an exemplary embodiment. It should however be appreciated that the present disclosure may be practiced in a variety of ways beyond the specific detail set forth herein.

While the exemplary aspects, embodiments, and/or configurations illustrated herein show the various components of the system collocated, certain components of the system can be located remotely, at distant portions of a distributed network, such as a Local Area Network (LAN) and/or the Internet, or within a dedicated system. Thus, it should be appreciated, that the components of the system can be combined in to one or more devices or collocated on a particular node of a distributed network, such as an analog and/or digital telecommunications network, a packet-switched network, or a circuit-switched network. It will be appreciated from the following description, and for reasons of computational efficiency, that the components of the system can be arranged at any location within a distributed network of components without affecting the operation of the system.

Embodiments of the disclosure provide systems and methods for utilizing chatbots to support interactions with human users. Embodiments of the disclosure also provide systems and methods that enable human users (e.g., customers) to interact with a contact center via an asynchronous communication channel. The human user is presented with an asynchronous communication channel to support efficient and intuitive communications with the contact center. Meanwhile, elements of the contact center are designed to present the human user with an appearance of constant availability and communication readiness, while handling the challenges associated with implementing and presenting an asynchronous communication channel.

Various additional details of embodiments of the present disclosure will be described below with reference to the figures. While the flowcharts will be discussed and illustrated in relation to a particular sequence of events, it should be appreciated that changes, additions, and omissions to this sequence can occur without materially affecting the operation of the disclosed embodiments, configuration, and aspects.

Referring initially toFIG.1, a communication system100will be described in accordance with at least some embodiments of the present disclosure. The communication system100is shown to include a communication network104that interconnects a contact center108and resources thereof with multiple customer communication devices112. As the name suggests, a customer communication device112may be owned and/or operated by a customer116. The customer116may correspond to a user or person that interacts with their customer communication device112to communicate with a resource of the contact center108. Specifically, the contact center108may include a number of resources that facilitate customer116interactions via an asynchronous communication channel that is presented to and maintained for use by the customer116and one or more of their customer communication devices112. As shown inFIG.1, a customer116may utilize one or multiple customer communication devices112to interact with the contact center. Moreover, embodiments of the present disclosure contemplate that the customer116may use multiple different customer communication devices112to communicate via a single asynchronous communication channel. As a non-limiting example, a customer116may login to a web-based portal or authenticate themselves with a particular chat channel and then utilize the web-based portal or chat channel to communicate with any one of their customer communication devices112.

A customer communication device112may correspond to a computing device, a personal communication device, a portable communication device, a laptop, a smartphone, a personal computer, and/or any other device capable of running an operating system, a web browser, or the like. For instance, a customer communication device112may be configured to operate various versions of Microsoft Corp.'s Windows® and/or Apple Corp.'s Macintosh® operating systems, any of a variety of commercially-available UNIX® such as LINUX or other UNIX-like operating systems, iOS, Android®, etc. These customer communication devices112may also have any of a variety of applications, including for example, a database client and/or server applications, web browser applications, chat applications, social media applications, calling applications, etc. A customer communication device112may alternatively or additionally be any other electronic device, such as a thin-client computer, Internet-enabled mobile telephone, and/or personal digital assistant, capable of communicating via communication network104and/or displaying and navigating web pages or other types of electronic documents.

The communication network104can be any type of network familiar to those skilled in the art that can support data communications using any of a variety of commercially-available protocols, including without limitation SIP, TCP/IP, SNA, IPX, AppleTalk, and the like. Merely by way of example, the communication network104may correspond to a LAN, such as an Ethernet network, a Token-Ring network and/or the like; a wide-area network; a virtual network, including without limitation a virtual private network (“VPN”); the Internet; an intranet; an extranet; a public switched telephone network (“PSTN”); an infra-red network; a wireless network (e.g., a network operating under any of the IEEE 802.9 suite of protocols, the IEEE 802.11 suite of protocols, the Bluetooth® protocol known in the art, and/or any other wireless protocol); and/or any combination of these and/or other networks.

The contact center108is shown to include one or more computing devices that enable a contact center agent172and/or chatbot148to interact with a customer116via a communication channel established between the customer communication device112and the contact center108. In particular, the contact center108is shown to include a network border device120and a number of servers124,128,132that enable functionality of the contact center108. The network border device120may correspond to one or a number of devices that establish and maintain information security for the contact center108. The network border device120, in some embodiments, may include a Session Border Controller (SBC), a firewall, a Network Address Translator (NAT) device, a protocol converter, or combinations thereof. Because the communication network104may be untrusted from the perspective of an operator of the contact center108, the network border device120, in some embodiments, may be configured to implement security policies or rules. When communications, messages, packets, or the like are received at the network border device120, components of the network border device120may analyze the received communications, messages, packets, etc. to determine if the contents of the received communications, messages, packets, etc. can be safely passed to other components of the contact center108. In some embodiments, all contents that safely pass through the network border device120may be transferred to the communication server128or routing engine124for further analysis and processing (e.g., for inclusion with a particular conversation, for assigning/forwarding to a particular contact center agent172, etc.).

In some embodiments, each server of the contact center108may be configured to perform a particular task or a set of tasks specific to supporting functions of the contact center108. For instance, the routing engine124may correspond to a server or set of servers that are configured to receive messages from the network border device120and make routing decisions for the message(s) within the contact center108. The communication server128may correspond to a single server or a set of servers that are configured to establish and maintain a communication channel between customers116and the contact center108. In some embodiments, the routing engine124and communication server128may work in cooperation to ensure that an appropriate agent172or set of agents172are assigned to a particular communication channel (e.g., an asynchronous communication channel) for purposes of servicing/addressing contacts initiated by customers116of the contact center108. Specifically, but without limitation, the routing engine124may be configured to determine which agent172should be assigned to a particular communication channel for purposes of answering a customer's116question and/or for purposes of providing a service to the customer116. The routing engine124may provide appropriate signaling to an agent's communication device168that enables the agent's communication device168to connect with the communication channel over which the customer116is communicating and to enable the agent172to view messages sent by the customer's communication device112, which are eventually assigned to and posted on the appropriate communication channel. Even more specifically, the communication server128may establish and maintain a digital chat communication channel that is presented to the customer's communication device112and which enables the customer116to send chat messages to the contact center108when desired. When messages are received from a customer communication device112and assigned to a particular chat communication channel, the routing engine124may determine which agent172will service the customer's116needs (e.g., answer a question, provide a service, etc.) and then connect the selected agent's communication device168to the same chat communication channel, thereby enabling the agent172to engage in a chat session with the customer116. Alternatively or additionally, as will be described in further detail herein, the routing engine124may connect an automated agent (e.g., a chatbot) to the communication channel to help service the customer's116needs in a similar way that an agent's communication device168is connected with the communication channel. The difference is that the automated agent (e.g., chatbot) may be configured to respond to the customer's116messages transmitted over the communication channel in an automated fashion (e.g., without requiring input from a human user). It should be appreciated that the routing engine124may be configured to connect both a human agent172and an automated agent (e.g., a chatbot) to the communication channel if it is desirable to allow the automated agent respond to the customer's116messages in a semi-automated fashion (e.g., where the chatbot generates a suggested reply to a message, but a human agent172is required to approve or edit the message prior to being transmitted/committed to the communication channel and delivered to the customer communication device112).

Although described as a chat server, it should be appreciated that the communication server128may be configured to support any number of communication protocols or applications whether synchronous or asynchronous. Non-limiting examples of communication protocols or applications that may be supported by the communication server128include the Session Initiation Protocol (SIP), File Transfer Protocol (FTP), Hypertext Transfer Protocol (HTTP), HTTP secure (HTTPS), Transmission Control Protocol (TCP), Java, Hypertext Markup Language (HTML), Short Message Service (SMS), Internet Relay Chat (IRC), Web Application Messaging (WAMP), SOAP, MIME, Real-Time Messaging Protocol (RTP), Web Real-Time Communications (WebRTC), WebGL, XMPP, Skype protocol, AIM, Microsoft Notification Protocol, email, etc. In addition to supporting text-based communications, the communication server128may also be configured to support non-text-based communications such as voice communications, video communications, and the like.

Another server or set of servers that may be provided in the contact center108is a contact management server132. The contact management server132may be configured to manage the contacts or work items that exist within the contact center108and that represent tasks to be performed by a human agent172and/or automated agent (e.g., a chatbot) in connection with providing a service to a customer116. The contact management server132may be configured to maintain state information for some or all of the contacts in the contact center108at any given point in time. The contact management server132may also be configured to manage and analyze historical contacts as part of training and updating automated agents (e.g., a chatbot engine148). In some embodiments, the contact management server132may maintain state information for human agents172in the contact center108and may further interact with the routing engine124to determine which agents172are currently available for servicing a contact and have the appropriate skills for servicing a contact. Additional capabilities of the contact management server132will be described in further detail with respect to operation of a chatbot engine148and a dialog engine164, which are both shown to be provided by the contact management server132.

While certain components are depicted as being included in the contact management server132, it should be appreciated that such components may be provided in any other server or set of servers in the contact center108. For instance, components of the contact management server132may be provided in a routing engine124and/or communication server128, or vice versa. Further still, embodiments of the present disclosure contemplate a single server that is provided with all capabilities of the routing engine124, the communication server128, and the contact management server132.

The contact management server132is shown to include a processor136, a network interface140, and memory144. The processor136may correspond to one or many computer processing devices. Non-limiting examples of a processor include a microprocessor, an Integrated Circuit (IC) chip, a General Processing Unit (GPU), a Central Processing Unit (CPU), or the like. Examples of the processor136as described herein may include, but are not limited to, at least one of Qualcomm® Snapdragon® 800 and 801, Qualcomm® Snapdragon® 620 and 615 with 4G LTE Integration and 64-bit computing, Apple® A7 processor with 64-bit architecture, Apple® M7 motion coprocessors, Samsung® Exynos® series, the Intel® Core™ family of processors, the Intel® Xeon® family of processors, the Intel® Atom™ family of processors, the Intel Itanium® family of processors, Intel® Core® i5-4670K and i7-4770K 22 nm Haswell, Intel® Core® i5-3570K 22 nm Ivy Bridge, the AMD® FX™ family of processors, AMD® FX-4300, FX-6300, and FX-8350 32 nm Vishera, AMD® Kaveri processors, Texas Instruments® Jacinto C6000™ automotive infotainment processors, Texas Instruments® OMAP™ automotive-grade mobile processors, ARM® Cortex™-M processors, ARM® Cortex-A and ARM926EJ-S™ processors, other industry-equivalent processors, and may perform computational functions using any known or future-developed standard, instruction set, libraries, and/or architecture.

The network interface140may be configured to enable the contact management server132to communicate with other machines in the contact center108and/or to communicate with other machines connected with the communication network104. The network interface140may include, without limitation, a modem, a network card (wireless or wired), an infra-red communication device, etc.

The memory144may include one or multiple computer memory devices. The memory144may be configured to store program instructions that are executable by the processor136and that ultimately provide functionality of the communication management server132described herein. The memory144may also be configured to store data or information that is useable or capable of being called by the instructions stored in memory144. One example of data that may be stored in memory144for use by components thereof is conversation state data152. The conversation state data152may represent a particular state of one or multiple conversations occurring on a communication channel. The memory144may include, for example, Random Access Memory (RAM) devices, Read Only Memory (ROM) devices, flash memory devices, magnetic disk storage media, optical storage media, solid-state storage devices, core memory, buffer memory devices, combinations thereof, and the like. The memory144, in some embodiments, corresponds to a computer-readable storage media and while the memory144is depicted as being internal to the contact management server132, it should be appreciated that the memory144may correspond to a memory device, database, or appliance that is external to the contact management server132.

Illustratively, the memory144is shown to store a chatbot engine148for execution by the processor136. In some embodiments, the chatbot engine148may correspond to a set of processor-executable instructions (e.g., a finite instruction set with defined inputs, variables, and outputs). In some embodiments, the chatbot engine148may correspond to an Artificial Intelligence (AI) component of the contact management server132that is executed by the processor136. The chatbot engine148, in some embodiments, may utilize one or more conversation models156, which may be in the form of an artificial neural network, for recognizing and responding to messages transmitted by a customer116over a communication channel supported by the communication server128. In some embodiments, the chatbot engine148may be trained with training data160and may be programmed to learn from additional conversations as such conversations occur or after conversations occur. In some embodiments, the chatbot engine148may update one or more of the conversation models156as it learns from ongoing conversations.

The memory144is also shown to include a dialog engine164, which may be configured to support capabilities of the chatbot engine148. It should be appreciated that the chatbot engine148and dialog engine164may be provided in a single component without departing from the scope of the present disclosure. The dialog engine164may be configured to analyze a conversation between a chatbot engine148and a customer116and determine, based on the analysis, a current state of the conversation (e.g., a dialog or conversation state152). Accordingly, the dialog engine164may be configured to update the conversation state152based on a content of messages sent by a customer116and based on a content of messages sent by the chatbot engine148. The dialog engine164may be configured to advance conversation states152. In some embodiments, the chatbot engine148and/or dialog engine164may be configured to analyze messages received from a customer communication device112, determine (e.g., with a confidence score) a topic of conversation associated with the message, and take certain actions based on the topic and/or based on the determined conversation state152. These additional functions of the chatbot engine148and dialog engine164will be described in further detail herein.

As mentioned above, the chatbot engine148may be configured to operate using a set of guidelines (e.g., as a set of static instructions) or by using machine learning. Further details of a chatbot engine148utilizing machine learning will now be described with reference toFIG.2. Again, the chatbot engine148utilizing machine learning may have access to training data160to initially train behaviors of the chatbot engine148. The chatbot engine148may also be configured to learn from further conversations based on feedback, which may be provided in an automated fashion (e.g., via a recursive learning neural network) and/or a human-provided fashion (e.g., by a human agent172confirming or denying that a particular response prepared by the chatbot engine148was appropriate for a particular message received from a customer116).

A learning/training module204of the chatbot engine148may have access to and use one or more conversation models156. The conversation models156may be built and updated by the training/learning module204based on the training data and feedback. The learning/training module204may also be configured to access information from a reporting database212for purposes of building a bot response database216, which effectively stores bot responses that have been previously provided by the chatbot engine148and have been identified as valid or appropriate under the circumstances (e.g., based on a positive response from a customer116and/or based on administrative user inputs). Responses within the bot response database216may constantly be updated, revised, edited, or deleted by the learning/training module204as the chatbot engine148engages in more conversations with customers116.

In some embodiments, the chatbot engine148may include a recommendation engine208that has access to the bot response database216and selects appropriate response recommendations from the bot response database216based on dialog inputs224received from the dialog engine164. As shown inFIG.2, the dialog engine164may provide dialog inputs224in the form of real-time chat data and/or in the form of conversation state152information. The real-time chat data may correspond to the content of a message received on a communication channel from a customer's communication device112. In other words, the dialog engine164may be configured to retrieve message content from a digital communication channel and provide such content to the chatbot engine148in the form of dialog inputs224. Using the dialog inputs and the bot response database216, the recommendation engine208may be configured to recommend one or multiple responses to a response generator220. The response generator220may be configured to provide a selected response to the dialog engine164for sending on the appropriate communication channel. Stated another way, the dialog engine164may be responsible for managing a state of a conversation and may provide the mechanism by which the chatbot engine148engages with the communication channel and the customer116. For instance, the dialog engine164may produce a response message for a chat channel over which a customer116previously transmitted a message. The interactions between the chatbot engine148and customer116may represent a contact within the contact center108and the status of the contact may be determined by the dialog engine164, which updates the conversation state152accordingly. In some embodiments, the chatbot engine148may be configured to interact with a customer116in such a way that the customer116is unaware they are interacting with an automated agent, but rather think themselves to be interacting with a human agent172. To achieve this capability, the chatbot engine148may constantly be provided training data from conversations between human agents172and customers116that have occurred over a particular communication channel. It may be possible to train a chatbot engine148to have a particular skill (e.g., by training the chatbot engine148with conversations related to a particular topic such as sales, product troubleshooting, billing, reservation assistance, etc.). Accordingly, it should be appreciated that the contact center108may include a plurality of chatbot engines148of different types without departing from the scope of the present disclosure.

With reference now toFIGS.3A-4B, additional capabilities and functions of a chatbot engine148and a contact center108will be described in accordance with at least some embodiments of the present disclosure. Specifically, each ofFIGS.3A-4Bdepict a screen shot of a graphical user interface304of an agent communication device168displaying a first conversation in accordance with at least some embodiments of the present disclosure. While particular conversations are shown for ease of description, it should be appreciated that embodiments of the present disclosure are not so limited. Moreover, while shown as an agent communication device168, it should be appreciated that a customer communication device112may include a graphical user interface304that presents a same or similar version of the same conversation. Further still, in embodiments where the conversation is being handled in the contact center by a fully automated agent (e.g., the chatbot engine148), there may not be a device within the contact center108that is actually depicted/rendering/displaying a version of the conversation. Instead, the conversation may be maintained in memory of the contact management server132and may not necessarily be reproduced for display via a communication device. The depiction of the conversation on a graphical user interface304is for purposes of understating the concepts described herein.

Referring initially toFIG.3A, a first example conversation is shown in which a customer116“C” is interacting with a contact center108over a digital communication channel (e.g., a chat communication channel). It should be appreciated that this communication channel could correspond to any type of asynchronous communication channel and does not necessarily need to correspond to a communication channel that is accessed via a chat application.

In the first example conversation, the agent “A” (e.g., in the form of an automated agent, such as the chatbot engine148) has been interacting with the customer116. At some point in time during the conversation, the customer116may provide a customer message312stating, “Can I get the status of flight CJ1140?” The chatbot engine148may respond with an agent message316stating, “Looks like the flight1140is on-time.” As shown in the example, the first two messages exchanged between the customer116and agent may correspond to a first set of messages exchanged at or around a similar day/time (e.g., Jan. 9, 2019 at 5:36 PM). These set of messages exchanged at or around a similar day/time may be referred to as a first portion of a conversation308.

At some point later in time (e.g., 6 days later), the customer116may return to the communication channel and provide another customer message312stating, “You lost my bag!” Upon receiving this additional customer message312and having the customer message312added to the communication channel and ongoing conversation between the customer116and contact center108, the chatbot engine148is now faced with a response decision. Embodiments of the present disclosure provide mechanisms for the chatbot engine148to determine an appropriate agent message316to send in response to the customer message312that was received on Jan. 15, 2019 at 6:15 AM. A first step to determining an appropriate agent message316to send in response to the customer message312is to determine whether or not the newly received customer message312relates to the same topic previously discussed in the first portion of the conversation308a, or whether the newly received customer message312relates to a different topic. In other words, because the communication channel offered to the customer116is asynchronous and persists over an extended period of time, it is not appropriate or natural to assume that the newly received message is a continuation of the topic(s) being discussed in the first portion of the conversation308a. Accordingly, embodiments of the present disclosure enable the chatbot engine148to analyze content of the newly received customer message312and determine a topic with which the newly received customer message312is associated. Specifically, the chatbot engine148, with assistance from the dialog engine164, may be configured to analyze the newly received customer message312and determine if a topic of the message substantially matches (e.g., corresponds to a continuation) of the topic determined for the message(s) in the first portion of the conversation308a.

In some embodiments, the chatbot engine148may be configured to determine a topic classification for each and every customer message312received over the digital communication channel. As a conversation progresses (e.g., as additional messages are sent and received), the chatbot engine148may continue to determine a topic for each newly received customer message312. If the chatbot engine148determines that the topic of a newly received customer message312corresponds to the same topic as a previously-received customer message312, then the chatbot engine148may attempt to continue a dialog associated with that topic and may update a conversation state152accordingly. On the other hand, if the chatbot engine148determines that the topic of the newly received customer message312corresponds to a different topic with some degree of confidence or if the chatbot engine148determines that the newly received customer message312does not correspond to any topic with a particular degree of confidence, then the chatbot engine148may provide a different agent message316as part of the second portion of the conversation308b. This may also involve changing the conversation state152for the second portion of the conversation308bto a different topic than is associated with the first portion of the conversation308a.

In some embodiments, the chatbot engine148may be configured to determine a topic associated with a customer message312based on analyzing the content of the customer message312and metadata associated with the customer message. Content of the customer message312may be analyzed using one or many different neural networks or conversation models156. In some embodiments, the chatbot engine148may include or have access to a plurality of different conversation models156, each of which is associated with or trained to determine whether a message corresponds to a particular topic. More specifically, the chatbot engine148may provide content of the newly received customer message312through a plurality of different conversation models156.

Each conversation model156may be trained to determine whether or not the message content indicates the customer message312should be assigned a particular topic classification and provide a confidence score for the determination. As an example, a first conversation model156may be trained and designed to determine whether a message corresponds to a first topic (e.g., new device sales) and provide a confidence score on whether or not the message corresponds to the first topic. A second conversation model156may be trained and designed to determine whether a message corresponds to a second topic (e.g., troubleshooting for a device) and provide a confidence score on whether or not the message corresponds to the second topic. A third conversation model156may be trained and designed to determine whether a message corresponds to a third topic (e.g., billing inquiries) and provide a confidence score on whether or not the message corresponds to the third topic. The chatbot engine148may have access to any number (e.g., up to N, where N is any integer greater than or equal to one) of conversation models156which have been trained with different training data160uniquely designed for the particular topic.

To analyze the content of a customer message312, the chatbot engine148may process the content of the customer message312using some or all of the conversation models156and receive outputs from each conversation model156. If one conversation model156determines the customer message312is associated with a particular topic with more than a predetermined confidence score (e.g., a confidence score above 50%) and that particular topic received a higher confidence score than any other confidence score determined for any other topic, then the chatbot engine148may determine that the content of the customer message312should be associated with/assigned to the particular topic. The chatbot engine148may further compare the particular topic assigned to the newly received customer message312with topics assigned to previously received customer messages312. If there is any match between topics, then the chatbot engine148may continue processing the newly received customer message312as a continuation of the first portion of the conversation308a. If there is a mismatch between topics, then the chatbot engine148may interact with the dialog engine164to change the conversation state152and begin a dialog on the new topic rather than continuing the dialog on the previous topic.

If the chatbot engine148determines that the content of the customer message312does not provide a determination of a particular topic (e.g., no output of any particular conversation model156is determinative), then additional processing may be required or assumptions may be made by the chatbot engine148. For instance, if the content of the newly received customer message312is not associated with any particular topic with more than a predetermined confidence score (e.g., a confidence score above 30%), then the chatbot engine148may determine that the newly received customer message312is topic neutral, which may suggest that the newly received customer message312is still a continuation of the first portion of the conversation308a(e.g., because a new topic has not definitively been initiated by the customer116). Using this assumption, the chatbot engine148may attempt to continue the dialog of the first portion of the conversation308awhen generating the next agent response316in the second portion of the conversation308b. Additionally, if the topic for a customer message312is not determinable with a predetermined confidence score, then the chatbot engine148may request human agent172input, assistance, or approval prior to committing an agent response316to the communication channel. In some embodiments, as the chatbot engine148produces suggested responses that are approved by a human agent172, those suggested responses may be recorded in the reporting database212and used to further tune or train the chatbot engine148for future message analysis.

The metadata that may be analyzed by the chatbot engine148may include a day/time at which the customer message312is received, a length of the customer message312, an elapsed time between receiving a customer message312and a previous customer message312, an elapsed time between transmitting an agent message316and receiving a new customer message312, etc. The metadata may be considered in combination with the content analysis performed by the chatbot engine148as described above for purposes of determining a topic classification for the customer message312and for purposes of determining if the topic classification matches a topic classification assigned to a previously received customer message312. In some embodiments, it may be possible to determine a topic with just content analysis or just metadata analysis, but a confidence score for a topic determination may be stronger if the topic determination is supported by both content analysis and metadata analysis. As can be appreciated, a confidence score for a topic determination may correspond to a combination of a confidence score based on content analysis and a confidence score based on metadata analysis.

As can be appreciated, the chatbot engine148may be configured to generate an appropriate agent response316to address or start a dialog with the customer for the newly received customer message312. In this particular example, the time between receiving the new customer message312and the previous customer message312suggests that a new topic should be assigned to the newly received customer message312(e.g., based on metadata analysis). Similarly, the content of the newly received customer message312appears to be related to a topic of bag whereas the content of the previously received customer message312appears to be related to a topic of flight status. The chatbot engine148may be configured to determine a topic for each of the customer messages312and determine that the topics assigned to each customer message312are different. Based on a content analysis and metadata analysis, the chatbot engine148may, with a degree of certainty, determine that the newly received customer message312is assigned a new topic classification than the previously received customer message312and an appropriate agent response316may be generated. In some embodiments, the chatbot engine148and dialog engine164may update the conversation state152to relate to the new topic classification (e.g., bag) and initiate a dialog based on the new topic classification rather than continuing a discussion on the old topic classification (e.g., flight status). The initial agent response316may include content that attempts to confirm the new topic (e.g., “It appears you have an issue with your luggage. Is that correct?”) before continuing a more detailed dialog on the new topic. Alternatively, the initial agent response316may include content that assumes the new topic determination is correct and initially attempts to progress the dialog (e.g., “I'm sorry to hear that. Please provide me with baggage tag number for the missing bag and I will see what I can do to help.”).

Referring now toFIG.3B, a second example conversation is shown in which a customer116“C” is interacting with a contact center108over a digital communication channel (e.g., a chat communication channel). It should be appreciated that this communication channel could correspond to any type of asynchronous communication channel and does not necessarily need to correspond to a communication channel that is accessed via a chat application.

The second example conversation may be similar to the first example conversation in that the first conversation portion308ais the same in both example conversations. The second example conversation differs from the first example conversation in that the second customer message312has different content in each example conversation. Specifically, in the second example conversation, the newly received customer message312states, “Can I get the status of flight CJ412?” In this example, the topic of the newly received customer message312may be determined to be the same or similar to the topic of the previously received customer message312, particularly because the content of each message is so similar, but for different flight numbers. In some embodiments, the chatbot engine148may be configured to extract an entity value (e.g., the flight number) from the content of the newly received customer message312for purposes of preparing an agent response316thereto. Specifically, while the topics of both customer messages312are similar or the same, the agent response316thereto may be different and dependent upon the entity value (e.g., the flight number) contained in the content of the customer message312. In some embodiments, the chatbot engine148may be configured to analyze or scan content of customer messages312for entity values that match an expected data pattern (e.g., a predetermined number of characters/symbols, a predetermined string size, a predetermined starting character or ending character, etc.) and then utilize any found entity values for purposes of preparing an agent response316. As an example, the first agent response316in the first portion of the conversation308amay provide flight status information for the flight associated with the entity value=CJ1140 whereas the second agent response316in the second portion of the conversation308bmay provide flight status information for the flight associated with the entity value=CJ412.

If an entity value does not match an expected data pattern, but the chatbot engine148determines that the content of the customer message312may possibly include an entity value, the agent response316may include a request for the customer116to confirm or reconfirm that they intended to provide an entity value (e.g., “Do you want the status of a flight? If so, can you confirm the <entity value name>?”). Accordingly, even though both customer messages312are determined to be associated with the same topic classification, the chatbot engine148may be trained to start a new dialog for the newly received customer message312based on different entity values found in each customer message312.

Referring now toFIG.3C, a third example conversation is shown in which a customer116“C” is interacting with a contact center108over a digital communication channel (e.g., a chat communication channel). It should be appreciated that this communication channel could correspond to any type of asynchronous communication channel and does not necessarily need to correspond to a communication channel that is accessed via a chat application.

The third example conversation may be similar to the first example conversation and/or second example conversation in that the first conversation portion308ais the same in each example conversation. The third example conversation differs from the previous example conversations in that the newly received customer message312is received in relatively close temporal proximity with messages of the first portion of the conversation308a. In the example, the newly received customer message312is received within an hour of the previous customer message312, suggesting that the newly received customer message312is continuing the conversation from the first portion of the conversation308. However, the content of the newly received customer message312may not be closely associated with any particular topic. In other words, the content of the newly received customer message312may not receive a topic classification with a confidence score exceeding a predetermined threshold since the comment “Thank you!” is not likely determinable with respect to a particular topic.

In this instance, the chatbot engine148may utilize the metadata analysis to determine that the newly received customer message312is associated with the topic of the previous customer message312. Additionally, since the content analysis of the newly received customer message312may be non-determinable with respect to topic, the chatbot engine148may determine (or assume) that the newly received customer message312is more likely than not still associated with the previous conversation. Additionally, the simple content of “Thank you!” suggests that the chatbot engine148could prepare a generic and form agent response316of something like, “You are welcome!” to conclude the conversation.

Referring now toFIG.3D, a fourth example conversation is shown in which a customer116“C” is interacting with a contact center108over a digital communication channel (e.g., a chat communication channel). It should be appreciated that this communication channel could correspond to any type of asynchronous communication channel and does not necessarily need to correspond to a communication channel that is accessed via a chat application.

The fourth example conversation may be similar to previous example conversations in that the first conversation portion308ais the same as in other example conversations. However, the fourth example conversation differs from previous example conversations in that the newly received customer message312is received a year after receiving a previous customer message312. Additionally, the content of the newly received customer message312is different in the fourth example as compared to other examples. In the fourth example, the newly received customer message312indicates a desire for help with booking a flight. In this example, the metadata associated with the newly received customer message312as well as the content of the newly received customer message312may allow the chatbot engine148to determine that a new topic is being started (e.g., “flight reservation” as compared to “flight status”). This determination may be made with a relatively high confidence score, especially if the content analysis results in a confidence score for the topic of “flight reservation” above a predetermined threshold. However, even if the content analysis does not provide a confidence score above the predetermined threshold, the additional information provided by the metadata analysis may increase the likelihood that the chatbot engine148is able to provide an appropriate agent response316to the customer116. With the information obtained via content and metadata analysis, the chatbot engine148may prepare an agent response316related to progressing a flight reservation dialog rather than progressing the previous dialog related to flight status.

Referring now toFIG.3E, a fifth example conversation is shown in which a customer116“C” is interacting with a contact center108over a digital communication channel (e.g., a chat communication channel). It should be appreciated that this communication channel could correspond to any type of asynchronous communication channel and does not necessarily need to correspond to a communication channel that is accessed via a chat application.

The fifth example conversation may be similar to other example conversations in that the first conversation portion308ais the same in these example conversations. However, the fifth example conversation differs from previous example conversations in that the newly received customer message312is received in close temporal proximity (e.g., on the same day) to receiving a previous customer message312. This close temporal proximity will suggest, based on metadata analysis, that the newly received customer message312is associated with the same topic as previous customer messages312. However, the content of the newly received customer message312may indicate that the newly received customer message is associated with a new topic and deserves a new dialog. Specifically, the newly received customer message312may be determined to have a topic classification associated with “flight reservation” whereas the previously received customer message312had a topic classification associated with “flight status.” If the chatbot engine148determines, based on content analysis, that the newly received customer message312is associated with a new topic classification and that determination is supported by a confidence score meeting or exceeding a predetermined threshold, then the chatbot engine148may ignore the results of the metadata analysis and prepare an agent response316for the new topic of “flight reservation” instead of the topic of “flight status.”

Referring now toFIG.3F, a sixth example conversation is shown in which a customer116“C” is interacting with a contact center108over a digital communication channel (e.g., a chat communication channel). It should be appreciated that this communication channel could correspond to any type of asynchronous communication channel and does not necessarily need to correspond to a communication channel that is accessed via a chat application.

The sixth example conversation may be similar to other example conversations in that the first conversation portion308ais the same in these example conversations. However, the sixth example conversation differs from previous example conversations in that the newly received customer message312is received in close temporal proximity (e.g., on the same day) to receiving a previous customer message312, but includes content suggesting a different topic than previously received customer messages312. So, much like the fifth example conversation, the chatbot engine148in this example conversation may need to weigh its content analysis with its metadata analysis. In this example conversation, the chatbot engine148may determine the newly received customer message312is associated with the topic of “upgrade” whereas the previously received customer message312is associated with the topic of “flight status.” So, in a similar manner to the fifth example conversation, the chatbot engine148may determine a new topic of conversation should be followed. However, in this example, the chatbot engine148may rely on information from previously received customer messages to generate an appropriate agent response316. Specifically, the agent response316may be designed to address the new topic of “upgrade”, but may utilize an entity value (e.g., flight number CJ1140) obtained from a previously received customer message312. Thus, in this example, the agent response316may begin a discussion of the new topic, but may utilize information from messages exchanged on the previous topic of flight status. In this way, the second portion of the conversation308bmay be considered to be related to the first portion of the conversation308aalthough the portions are related to different topics.

Referring now toFIGS.4A and4B, more example conversations are shown in which a customer116“C” is interacting with a contact center108over a digital communication channel (e.g., a chat communication channel). It should be appreciated that this communication channel could correspond to any type of asynchronous communication channel and does not necessarily need to correspond to a communication channel that is accessed via a chat application.

The example shown inFIG.4Ais different from previously described examples, but further show how a chatbot engine148may be configured to assist with a discussion of a different topic even though a newly received customer message312is incorporated on a same conversation and communication channel as previous messages. Additionally,FIG.4Aillustrates an example of providing an indicator404related to topic determination. The indicator404provided via the graphical user interface304may correspond to one example of an indicator404. In the depicted embodiment, the indicator may include a note for a human agent172, where the note is generated by the chatbot engine148based on a content and/or metadata analysis of the newly received customer message312.

In the depicted example, the conversation between customer116and agent initially relates to a router troubleshooting topic. However, the newly received customer message312appears to have content indicating a different topic classification of phone repair. Based on a content analysis of the newly received customer message312, the chatbot engine148may generate a proposed agent response316to be reviewed/approved/edited by a human agent172. In addition to providing the proposed agent response316, the chatbot engine148may also provide the indication404to the human agent's172communication device168that indicates a result of determining whether the topic classification determined for the newly received customer message312corresponds to the continuation of the topic classification for previously-exchanged messages or whether the topic classification determined for the newly received customer message312message corresponds to the different topic classification than the topic classification for the previously-exchanged messages.

In the example ofFIG.4A, the indication404shows a new topic classification whereas the example conversation ofFIG.4Bshows that the indication includes a note related to the topic classification determination (or lack thereof) for the newly received customer message312. The indication404also includes a note that no topic was determined with at least a predetermined confidence score. This information may quickly assist a human agent172in determining whether a proposed agent response316prepared by the chatbot engine148is appropriate given the context of the conversation.

It should be appreciated that the indication404can be configured to include textual comments prepared by the chatbot engine148. Alternatively or additionally, the indication404may include visual or audible indications that are readily apparent to an agent. For instance, the indication404may simply include changing the color/font type/font size/border/presentation of the proposed agent response316based on whether the newly received customer message312is associated with the same or different topic. As discussed in other examples, the example ofFIG.4Bdepicts a newly received customer response312that does not score well for any particular topic, so the chatbot engine148may be configured to assume a dialog continuation on the previous topic of router troubleshooting. In this example, the agent response316may be related to the previous topic, but may include content that tries to progress the dialog in a different way (e.g., by asking different questions, by restating previous messages in a different way, etc.).

While the example(s) described in connection withFIGS.4A and4Brelate primarily to detecting topic changes and providing notifications, it should be appreciated that embodiments of the present disclosure can configure a contact center108to respond in many different ways to detecting a change in topic. As a non-limiting example, embodiments provided herein are not only concerned with the ability to detect a topic change, but also aim to provide an opportunity to either route the conversation to a different agent with skills better suited for the new topic or to return the customer116to an automated experience with a chatbot engine148with the new topic. The examples ofFIGS.4A and4Brelate to generating a notification, but other embodiments contemplate transferring the conversation to a different agent or returning the customer116to a chatbot engine148. The mechanism behind this is that when the customer116has been determined to have disengaged, for example, the first customer message received is evaluated by the chatbot engine148to determine the topic remains the same or has changed. If it has changed, then the contact center108logic can decide if the current agent172should continue, the conversation should be sent to a different agent172, or the customer's116message should be processed by the chatbot and an automated dialog used in place of a human agent. It also implies that even when a conversation is between a human agent and a customer, the customer messages should be monitored, and a topic generated for that dialog. This could be done as the conversation progresses, it could be done AFTER a disengagement has been identified, or it could be done when the first customer message arrives after the disengagement was declared. The latter case may prompt a review of the prior dialog to generate the last topic of conversation prior to the disengagement.

With reference now toFIG.5, additional information regarding conversation states152will be described in accordance with at least some embodiments of the present disclosure. It should be appreciated that the state information for conversation may be stored as conversation states152and may be managed by the combined efforts of the chatbot engine148and dialog engine164.

FIG.5illustrates an example state diagram500in which multiple conversation states152are possible. Specifically, the state diagram500includes a depiction of individual dialog states, where each dialog may be considered related to a particular topic. In other words, different states504of any given dialog may correspond to a progression of a dialog on a particular topic. It can be seen that advancing state transitions508may progress a dialog on a particular topic. This generally occurs when the chatbot engine148determines a newly received customer message312has the same topic as a previously received customer message312and/or a newly received customer message312does not score well for any particular topic.FIG.5also illustrates that a dialog on a topic may have a regressing state transition512if it is later determined that a state transition was advanced prematurely.

In addition to having the ability to move between states for a particular dialog, there is also the ability to have an inter-dialog state transition516. Use of the inter-dialog state transition516may occur when a newly received customer message312is determined, with a particular confidence score, to be associated with a new topic or different topic from the previously received customer messages312. Providing the ability to transition between different dialog types enables the chatbot engine148to facilitate interactions with a customer116an asynchronous communication channel that is likely to contain message exchanges on different topics over time.

With reference now toFIGS.6-22, various methods will be described in accordance with at least some embodiments of the present disclosure. The methods depicted and described herein may be performed by any of the components depicted and described herein. Additionally, it should be appreciated that any step of any method may be combined with any step of any other method and they may be combined in any order. Further still, it should be appreciated that the depicted order of steps in any particular method is for purposes of conversation and should not be construed as limiting the claims to any particular order of operations. Rather, methods contemplated herein may include any combination of steps from any method, performed in any order.

Referring now toFIG.6, a first communication method will be described in accordance with at least some embodiments of the present disclosure. The method begins when a message is received from a customer communication device112in a contact center108(step604). The message may be referred to as a customer message312.

The method continues with the routing engine124and communication server128determining that the customer message312is received on a communication channel that was previously established for/by the customer116. In other words, the method progresses by determining that the newly received customer message312is received for a conversation and on a communication channel that was previously being used by the customer116(step608).

Thereafter, the method continues with the communication server128including the newly received customer message312on the communication channel, thereby causing the customer message312to be presented in the conversation among other messages previously exchanged on the same communication channel (step612). The method then progresses with the chatbot engine148analyzing the newly received customer message312(step616). As discussed above, the analysis may include a content analysis of the customer message312as well as a metadata analysis of the customer message312.

Based on the analysis, the chatbot engine148may determine a topic classification and topic confidence score for the newly received customer message312(step620). As discussed above, the determination of topic classification and topic confidence score may be based solely on content analysis, solely on metadata analysis, or a combination of content analysis and metadata analysis. Additionally, the content analysis performed by the chatbot engine148may include utilizing a plurality of different conversation models156, each trained to determine whether content of a message corresponds to a particular topic and each trained to provide a confidence score for their determination with respect to the particular topic. The chatbot engine148may be configured to analyze the determinations for multiple topics and select a topic that received the highest confidence score. Alternatively, the chatbot engine148may determine that the message is indeterminable with respect to any particular topic because each topic was unable to receive a confidence score exceeding a predetermined threshold. In other words, the chatbot engine148may be configured to determine whether the newly received customer message312is: (1) associated with a new topic as compared to previous messages exchanged on the communication channel; (2) associated with the same topic as compared to previous messages exchanged on the communication channel; or (3) not associated with any topic (step624).

The method will proceed based on the results of the chatbot engine's148analysis performed in step624(step628). In particular, if the chatbot engine148determines that the newly received customer message312is associated with the same topic as previous messages or is not associated with any particular new topic, then the chatbot engine148may decide to continue the conversation on the previous topic. In this situation, the chatbot engine148may generate an appropriate agent response316that is committed automatically to the communication channel and transmitted to the customer communication device112. Alternatively or additionally, the chatbot engine148may generate a suggested agent response316that is presented to a human agent172for approval/editing prior to being committed to the communication channel. In some embodiments, the chatbot engine148may also provide a notification or indication404to a human agent172indicating that the newly received customer message312is associated with the same topic as previous messages (step632).

On the other hand, if the chatbot engine148determines that the newly received customer message312is associated with a new topic, then the method may proceed with the chatbot engine148preparing an appropriate agent response316for the new topic. The agent response316may be committed automatically to the communication channel or may be provided to a human agent172for approval/editing prior to commitment. In some embodiments, the chatbot engine148may also provide a notification or indication404to the human agent172indicating that the newly received customer message312is associated with a different topic than previous messages (step636). Beyond using a simple notification to the agent172of the topic change, an alternative would be a notification to a centralized control logic (e.g., a contact center108controller or business rules engine) of the topic change and that entity would have the options of leaving the conversation with the current agent172, sending the conversation to a new agent172with an appropriate skill for the new topic, or sending the conversation to a chatbot that has been designed to handle dialog on the new topic.

Referring now toFIG.7, a second communication method will be described in accordance with at least some embodiments of the present disclosure. The method begins with determining a topic confidence score exceeds a predetermined confidence threshold (step704). The topic confidence score may be provided as an output of the chatbot engine148in response to providing content of a customer message312to a conversation model156(or artificial neural network in the form of a conversation model156). The topic confidence score may be provided in any format (e.g., a percentage, a scalar value, etc.). The topic confidence score may be compared with a programmatically-defined confidence threshold (e.g., a static threshold) or a dynamic threshold that varies depending upon other variables (e.g., previous topic confidence scores, time of day, customer importance, topic, etc.).

In response to determining that the topic confidence score exceeds the predetermined confidence threshold, the method may continue with the chatbot engine148comparing the topic classification determined for the newly received customer message312with the topic classification of one or more previously received customer messages312in the same conversation (step708). Based on the comparison, the chatbot engine148may determine that a match exists between the topic classification determined for the currently received customer message312and at least one of the previously received customer messages312(step712). Based on determining such a match exists, the chatbot engine148may continue by providing a notification or indication404that indicates the newly received customer message312is associated with a topic assigned to a previously received customer message312(step716). This notification or indication404may also provide an identification of the previously received customer message(s)312that have the shared topic (e.g., by highlighting the messages).

Referring now toFIG.8, another communication method will be described in accordance with at least some embodiments of the present disclosure. The method begins with the chatbot engine148analyzing a customer message312and determining that a topic confidence score for a topic (or for all possible topics) does not meet or exceed a predetermined confidence threshold (step804). The predetermined confidence threshold used in this step may be the same as or different from the predetermined confidence threshold used in connection with step704. That is to say, different predetermined confidence thresholds may be, but are not required to be, used in connection with determining a customer message312affirmatively should have a topic classification assigned thereto (as discussed inFIG.7) as compared to determining a customer message312has no topic classification assigned thereto.

Upon determining that the customer message312did not have content sufficient to assign it a particular topic classification (e.g., based on the analysis of the confidence score), the method may continue with the chatbot engine148providing a notification or indication404to a human agent172that indicates the new customer message312is not associated with the previous topic (step808).

Referring now toFIG.9, yet another communication method will be described in accordance with at least some embodiments of the present disclosure. The method begins with a chatbot engine148determining that a customer message312has been determined to have a topic classification with a topic confidence score and further determining that the topic confidence score exceeds a predetermined confidence threshold (step904). In response to determining that the topic confidence exceeds the predetermined confidence threshold, the method continues with the chatbot engine148comparing the topic classification determined for the newly received customer message312with a topic classification of one or more previously received customer messages312(step908). The method may further continue with the chatbot engine148determining that a match does not exist between the topic classification of the newly received customer message312and one or more of the previously received customer messages312(step912). In this step, the chatbot engine148may only compare the topic classification of the newly received customer message312with one previously received customer message312(e.g., the most recent previous customer message312) or a number of previously received customer messages (e.g., a set of most recent previous customer messages312or messages received in the same day as the newly received customer message312).

Based on determining that the newly received customer message312does not have the same topic classification assigned thereto as one or multiple previously received customer messages312, the chatbot engine148may provide a notification or indication404to a human agent172that indicates the newly received customer message312is associated with a new or different topic than previously received customer messages312.

Referring now toFIG.10, another communication method will be described in accordance with at least some embodiments of the present disclosure. The method begins with the chatbot engine148determining an amount of time between receiving a newly received customer message312and receiving a previous customer message312(step1004). The chatbot engine148may then be configured to consider the amount of time that elapsed between receiving the two message as part of determining whether a topic continuation exists for a conversation (step1008). In other words, the chatbot engine148may be configured to perform a metadata analysis as part of determining whether a newly received message corresponds to a continued discussion of a previous topic or not.

Based on the metadata analysis performed in step1008, alone or in combination with a content-based analysis of the newly received customer message312, the chatbot engine148may then determine whether or not the newly received customer message312is associated with a previously discussed topic or a new/different topic. The chatbot engine148may then provide a notification or indication404to a human agent172that indicates whether the newly received customer message312is associated with a previously discussed topic or a new/different topic (step1012).

Referring now toFIG.11, another illustrative communication method will be described in accordance with at least some embodiments of the present disclosure. The method begins when a new message is received in the contact center108from a customer communication device112(step1104). The method may then include determining that a conversation and communication channel is already established to enable the customer116that sent the message to communicate with the contact center108in an asynchronous fashion (step1108).

The routing engine124and/or communication server128may then proceed by including the newly received customer message among other messages that are assigned to the customer's116conversation with the contact center108(step1112). In other words, the newly received customer message312may be added to other messages that were previously exchanged between the same customer116and the contact center108. As an example, the newly received customer message312may be added to a chat conversation that has been established and maintained by the contact center108.

The method may further continue with the chatbot engine148analyzing the newly received customer message312(step1116). In some embodiments, the analysis in this step may include a content analysis and metadata analysis for the newly received customer message312. Based on the analysis, the chatbot engine148may determine that a predetermined amount of time has passed between receiving the newly received customer message312and a previous customer message312(step1120). This determination may correspond to a determination made based on a metadata analysis performed on the newly received customer message312.

The method may also include the chatbot engine148determining that the newly received customer message312includes content that indicates a continuation of an existing dialog or that does not indicate with any amount of certainty/confidence that the newly received customer message312is associated with a new topic (step1124). This determination may correspond to a determination made based on a content analysis performed on the newly received customer message312and may have been facilitated by providing content of the newly received customer message312to a plurality of different conversation models156. The determination of step1124may occur if none of the different conversation models156determine the message is associated with a particular topic or is unable to produce a confidence score that exceeds a predetermined confidence threshold.

Based on the determinations made in steps1120and1124, the chatbot engine148may continue by providing a notification or indication404to a human agent172that indicates the newly received customer message312is being treated as a continuation of the conversation (e.g., that the newly received customer message312is still attempting to discuss a previous conversation topic) (step1128).

Referring now toFIG.12, another communication method will be described in accordance with at least some embodiments of the present disclosure. The method begins with a chatbot engine148analyzing interactions on a digital communication channel (step1204). The digital communication channel may correspond to an asynchronous communication channel supported by the communication server128.

The method may then continue with the chatbot engine148initiating a process of determining a probability of customer disengagement from a conversation (or conversation topic) based on content of the messages exchanged between the customer116and contact center108. Specifically, the chatbot engine148may analyze content of some or all customer messages312received on the digital communication channel. In some embodiments, the chatbot engine148may determine a probability of disengagement from contact center108interactions based on a content analysis of the most recently received customer messages312(step1208). The chatbot engine148may then compare the determined probability of disengagement with a predetermined probability threshold (step1212).

If the probability of disengagement meets or exceeds the predetermined probability threshold (step1216), then the chatbot engine148may determine that the customer116has likely disengaged from the conversation. In response to making such a determination, the chatbot engine148may continue by updating a state of one or more agents172assigned to the conversation (step1220). In particular, the chatbot engine148and dialog engine164may update a conversation state152and may further inform the routing engine of the updated conversation state152(e.g., as an IDLE state). This may cause the routing engine to update a state of the human agent172assigned to the conversation to some different state (e.g., from a BUSY state to an AVAILABLE state), thereby releasing the agent172from responsibilities associated with responding to further customer messages312received from the customer116.

With reference now toFIG.13, another communication method will be described in accordance with at least some embodiments of the present disclosure. The method begins with a chatbot engine148analyzing interactions between a customer116and a contact center108on a digital communication channel (step1304). The digital communication channel may correspond to an asynchronous communication channel that supports an exchange of text-based messages over an extended period of time (e.g., over multiple days or years).

The method may continue with the chatbot engine148analyzing content of messages exchanged between the customer116and an agent (step1308). In this step, the chatbot engine148may analyze the content of customer messages312, agent messages316produced and transmitted by an automated agent, agent messages316produced by an automated agent but approved by a human agent172, and/or agent messages316produced by a human agent172. Based on the analysis of the messages, the chatbot engine148may determine that a natural break in the conversation has occurred (step1312). In response to determining that a natural break in the conversation has occurred, the chatbot engine148may increase a determined probability of customer disengagement from the conversation (step1316).

With reference now toFIG.14, yet another communication method will be described in accordance with at least some embodiments of the present disclosure. The method begins with a chatbot engine148analyzing interactions between a customer116and a contact center108on a digital communication channel (step1404). This step may be similar or identical to step1304ofFIG.13. The digital communication channel may correspond to an asynchronous communication channel that supports an exchange of text-based messages over an extended period of time.

The method may continue with the chatbot engine148analyzing content of messages exchanged between the customer116and an agent (step1408). Similar to step1308ofFIG.13, in this step the chatbot engine148may analyze the content of customer messages312, agent messages316produced and transmitted by an automated agent, agent messages316produced by an automated agent but approved by a human agent172, and/or agent messages316produced by a human agent172.

Based on the analysis of the messages, the chatbot engine148may determine that the customer116is actively disengaging from the interactions (step1412). As an example, one or more customer messages312may include content that indicates a dialog for a particular topic has progressed to a natural end (e.g., a final state) and the customer messages312may include salutations or other content indicating a natural disengagement from the conversation (e.g., “bye”, “thank you”, etc.). In response to determining that the customer is actively disengaging from the conversation, the chatbot engine148may increase a determined probability of customer disengagement from the conversation (step1416).

Referring now toFIG.15, another communication method will be described in accordance with at least some embodiments of the present disclosure. The method begins with the chatbot engine148applying a conversation model156to interactions exchanged over a digital communication channel (step1504). In some embodiments, the content of interactions is applied to the conversation model(s)156as the content is exchanged. In other words, the chatbot engine148may be configured to analyze the content of messages exchanged over the digital communication channel in real-time.

Based on the analysis, the chatbot engine148may determine a likelihood of a match between a conversation model156trained to identify customer disengagement and interactions exchanged over the digital communication channel (step1508). Based on the likelihood of a match between the conversation model156and the interactions occurring over the digital communication channel, the chatbot engine148may determine a probability of disengagement for the customer116(step1512). In other words, if the conversation model156trained to identify customer disengagement determines, based on having the content of interactions applied thereto, that the customer is likely disengaging from the conversation (e.g., with at least a predetermined confidence score), the chatbot engine148may determine that there is a probability of customer disengagement from the conversation.

Referring now toFIG.16, another communication method will be described in accordance with at least some embodiments of the present disclosure. The method begins with a chatbot engine148restarting a timer after each customer message312is received at the contact center108(step1604). More specifically, the chatbot engine148may perform a portion of its metadata analysis by restarting a timer after each message is exchanged between the customer116and an agent (whether automated or human).

The method continues by determining whether a new message has been exchanged by either the customer116or agent (step1608). If a new message has been exchanged, then the method returns to step1604and the timer is restarted. If the query of step1608is answered negatively, then the method proceeds by determining whether the current timer value exceeds a predetermined timer threshold (step1612). If the query of step1612is answered negatively, then the method returns to step1608.

If, on the other hand, the query of step1612is answered positively, then the method proceeds with the chatbot engine148initiating a process of analyzing interactions exchanged over the digital communication channel (step1616). In particular, the analysis initiated in step1616may correspond to a content-based analysis of messages exchanged over the digital communication channel.

Referring now toFIG.17, still another communication method will be described in accordance with at least some embodiments of the present disclosure. The method begins with the chatbot engine148and/or dialog engine164analyzing interactions on a digital communication channel (step1704). Based on the analysis of the interactions, the chatbot engine148and/or dialog engine164may determine a conversation velocity for the conversation (step1708). In some embodiments, a conversation velocity may refer to a speed or frequency with which messages are being exchanged over the communication channel, a speed or frequency with which customer messages312are being received, a speed or frequency with which agent messages316are being transmitted, a speed or frequency with which conversation states152are changing, a speed or frequency with which topics are changing during the conversation, or some combination thereof. The determination of a conversation velocity represents one way to measure or determine a customer's116level of engagement with the conversation. A relatively low conversation velocity represents a correspondingly low level of customer116engagement with the conversation whereas a relatively high conversation velocity represents a correspondingly high level of customer116engagement.

The method may continue with the chatbot engine148and/or dialog engine164determining a customer engagement factor for the interactions, based at least in part on the determined conversation velocity (step1712). The method may further include the chatbot engine148and/or dialog engine164determining a customer service level required for interactions, based at least in part on the customer's116status (step1716). As an example, a customer having a relatively higher status level (e.g., Platinum customer or Gold customer) may be entitled to certain additional service benefits from the contact center108than a customer not having the same status level. This may be particularly true if the customer having the higher status level paid/pays for the benefit of that status level. In some embodiments, a customer116having a relatively higher status level may be entitled to more interactions with a human agent172whereas a customer116having a relatively lower status level may be required to interact with a chatbot engine148for a longer period of time before being transferred to a human agent172.

The method may then continue with the chatbot engine148and/or dialog engine164adjusting an engagement factor for the conversation based on the customer service level required for the interactions (step1720). Based on this engagement factor, the method may continue with re-assigning one or more human agents172onto or away from the conversation (step1724). The re-assignment may be implemented at the routing engine124by changing an agent state at the routing engine124. In some embodiments, a human agent172that was previously assigned to the conversation may be assigned to other interactions with other customers if the conversation velocity is below a predetermined threshold and/or the customer service level does not require a human agent172at all times (e.g., as represented by the engagement factor). Conversely, a human agent172may be assigned to the conversation if the conversation velocity is above a predetermined threshold and/or the customer service level does require a human agent172(e.g., as represented by the engagement factor).

Referring now toFIG.18, another communication method will be described in accordance with at least some embodiments of the present disclosure. The method begins with a chatbot engine148and/or dialog engine164analyzing interactions on a digital communication channel (step1804). The method may continue with the chatbot engine148and/or dialog engine164determining a conversation velocity for the interactions, based at least in part on the analysis performed in step1804(step1808). It should be appreciated that the analysis and resulting determination of a conversation velocity may include metadata analysis as well as content analysis for the messages exchanged during an interaction.

The chatbot engine148and/or dialog engine164, based on the determination of a conversation velocity, may determine that interactions in the conversation are resulting in an acceleration of the conversation (step1812). In some embodiments, the determination that interactions are accelerating may be made by determining that a conversation velocity is increasing over a period of time. Specifically, an acceleration of the conversation may be represented as a positive change in the conversation velocity over a period of time.

Based on determining that the interactions are resulting in an acceleration of the conversation, the method may continue by relieving a human agent172already assigned to the conversation of at least one other task that is not related to the conversation (step1816). As an example, if the human agent172were simultaneously assigned to seven (7) different chat interactions and the conversation velocity of one of the chat interactions is determined to be accelerating, then the human agent172may be unassigned from one, two, three, or more of the other different chat interactions, thereby allowing the human agent172to focus their attention on the chat interaction that is accelerating.

Referring now toFIG.19, another communication method will be described in accordance with at least some embodiments of the present disclosure. The method begins with a chatbot engine148and/or dialog engine164analyzing interactions on a digital communication channel (step1904). The method may continue with the chatbot engine148and/or dialog engine164determining a conversation velocity for the interactions, based at least in part on the analysis performed in step1904(step1908). It should be appreciated that the analysis and resulting determination of a conversation velocity may include metadata analysis as well as content analysis for the messages exchanged during an interaction.

The chatbot engine148and/or dialog engine164, based on the determination of a conversation velocity, may determine that interactions in the conversation are resulting in a deceleration of the conversation (step1912). In some embodiments, the determination that interactions are decelerating may be made by determining that a conversation velocity is decreasing over a period of time. Specifically, a deceleration of the conversation may be represented as a negative change in the conversation velocity over a period of time.

Based on determining that the interactions are resulting in a deceleration of the conversation, the method may continue by assigning a human agent172already assigned to the conversation to at least one additional task that is not related to the conversation (step1916). As an example, if the human agent172were only assigned to two (2) different chat interactions and the conversation velocity of one of the chat interactions is determined to be decelerating, then the human agent172may be further assigned to one, two, three, or more additional chat interactions, thereby maximizing a utilization of the human agent172.

Referring now toFIG.20, still another communication method will be described in accordance with at least some embodiments of the present disclosure. The method begins with a chatbot engine148and/or dialog engine164analyzing interactions on a digital communication channel (step2004). Based on the analysis, the chatbot engine148and/or dialog engine164may determine that interactions have paused for an amount of time or are about to pause for a future amount of time (step2008). In some embodiments, this may include determining that no new customer messages312have been received for more than a predetermined amount of time. This step may also include determining that a natural break in a conversation has occurred based on analyzing content of messages exchanged during the interaction. As an example, if the customer messages312includes content saying something like, “Give me a minute, while I check” or “I will find out later tonight”, the content suggests that the customer116has to leave the conversation to obtain additional information to progress the conversation. Such content found in a customer message312may provide an indication that a conversation is about to have a natural break or pause therein.

In response to determining that the interactions have paused, the method may continue with the chatbot engine148and/or dialog engine164analyzing a content of the interactions to determine an estimate for an additional amount of time that the interactions will be paused (step2012). The estimate for the additional amount of time may be made based on a content analysis of the messages. Alternatively or additionally, the estimate for the additional amount of time may be made based on a processing of the interactions with a conversation model156that is trained to estimate an amount of time until a next customer message312is received based on previous interactions in a conversation.

The method may then continue by updating a state of a human agent172to release the agent for an amount of time that is equal to (or nearly equal to) to estimate for the additional amount of time as determined in step2012(step2016). The state of the human agent172, in some embodiments, may be changed from BUSY to AVAILABLE. Alternatively, the state of the human agent172may be changed to enable the human agent172to service additional other chat conversations (possibly multiple chat conversations) while maintaining responsibility for the current conversation that is experiencing a pause.

The method may further continue by setting a timer that, when expired, automatically changes the state of the human agent172back to an UNAVAILABLE/OCCUPIED/BUSY state with respect to the conversation (step2020). In some embodiments, the timer may be set to a starting value that is equal to the estimate for the additional amount of time as determined in step2012. The method may also include the ability to determine if the human agent172will be off duty (e.g., on a break or done working for the day) when the timer is set to expire. If it is determined that the human agent172will be off duty at or near the time at which the timer will expire, then the method may identify an alternate agent to resume interactions on behalf of the human agent172when the timer expires (step2024). The alternate agent may also correspond to a human agent172, but doesn't necessarily have to correspond to a human agent172. The alternate agent, if a human agent172, may correspond to a different person that is determined to likely be available and on duty when the timer expires.

Referring now toFIG.21, another communication method will be described in accordance with at least some embodiments of the present disclosure. The method begins with a chatbot engine148and/or dialog engine164analyzing interactions on a digital communication channel (step2104). The method then continues by determining that interactions have paused for an amount of time or are likely to pause for some amount of time in the future (step2108).

In response to the determination of step2108, the method may continue with the chatbot engine148and/or dialog engine164analyzing the content of interactions to determine an estimated amount of time for which the interactions will be paused (step2112). The process of this step may be similar or identical to step2012. Thereafter, the state of an agent172assigned to the conversation may be updated to release the agent172for an amount of time that is similar to or equal to the estimated amount of time (step2116).

The method may then continue if customer116reengagement is detected prior to expiration of a timer that was set based on the estimated amount of time (step2120). Customer116reengagement may be detected by receiving a new customer message312prior to the timer expired. If the original agent172handling the conversation is AVAILABLE, then the agent172may be reassigned back to the conversation. However, if the original agent172is determined to be UNAVAILABLE, BUSY, or OCCUPIED (step2124), then the method may continue by providing an option to the customer116that allows the customer116to select whether they want to wait for the original agent172to become AVAILABLE or to resume interactions with an alternate agent (step2128). The customer's116response may then control further actions of the contact center108, including determining whether to wait for the original agent172and then reassign the original agent172back to the conversation or to assign an alternate agent to the conversation.

With reference now toFIG.22, another communication method will be described in accordance with at least some embodiments of the present disclosure. The method begins with a chatbot engine148and/or dialog engine164analyzing historical communications between a customer116and the contact center108over an asynchronous communication channel (step2204). The interactions analyzed in this step may correspond to some or all messages exchanged over the asynchronous communication channel.

The method may continue with the chatbot engine148and/or dialog engine164applying some or all of the messages exchanged during the historical communications to a predictive conversation model156(step2208). The predictive conversation model156may then be used to detect that a pattern of communications exists between the customer116and the contact center108(step2212). In response to and based on detecting the pattern of communications, an agent work force schedule may be updated to account for the pattern of communications (step2216). The agent work force schedule may be updated by an agent workforce management engine or by some other server depicted and described in the contact center108(e.g., the routing engine124, contact management server132, etc.).

Based on the update to the agent work force schedule, one or more human agents172may be deployed in the contact center108to accommodate an expected workload (step2220). In some embodiments, the expected workload may be based, at least in part, on the detected pattern of communications between the customer116and the contact center108. It should be appreciated that this particular method may be scaled to analyze a plurality of customer interactions and to build a predictive communication model based on the plurality of historical customer interactions.

With reference now toFIGS.23A-23C, additional embodiments will be described in connection with monitoring conversation content and context and then automatically updating a graphical user interface of an agent172based on the monitored conversation content and context. In particular,FIG.23Aillustrates a screen shot of a graphical user interface304of an agent communication device168displaying a plurality of chat windows2304. Each chat window2304may contain content exchanged between an agent172(or chatbot engine148) and a customer116. In some embodiments, each chat window2304may represent a different work item to the agent172and may be associated with a different asynchronous communication channel established between the contact center108and a different customer116. In other words, a single agent172may be responsible for maintaining multiple different conversations with different customers116via each of the different chat windows2304. Thanks to the asynchronous nature of the communication channel supported by the contact center108, the customer116may not expect an immediate response to their message, thereby allowing the agent172to have multiple conversations/work items assigned to them at the same time.

It should be appreciated that while the chat window2304will be described in connection with supporting an asynchronous text-based communication session, the agent172may use different communication channels to process a work item and communicate with the customer116. For instance, the graphical user interface304may present the agent172with a number of different applications (e.g., chat applications, email applications, social media applications, web-collaboration applications, etc.). A suitably skilled agent172may utilize different communication channels simultaneously to carry on different conversations with different customers116. Embodiments of the present disclosure should not be construed as being limited to chat or IM simply because a chat window2304is described as the GUI element for presenting conversation content to the agent172.

As shown inFIG.23A, each of the plurality of chat windows2304may be presented via the graphical user interface304substantially simultaneously. The presented chat windows2304may not necessarily represent every conversation currently assigned to the agent172. Rather, one or more chat windows2304or GUI elements may be minimized or hiding behind another chat window2304. If a new customer message is received for a conversation with a chat window2304currently hidden from view, then the associated chat window2304may be brought in front of other chat windows or highlighted for the agent172to signify that an agent response to the customer message is required.

With reference toFIG.23B, it can be seen that conversational activity and customer116engagement for each conversation assigned to the agent172may not be equal. Rather, some chat windows2304may have higher levels of customer116engagement (e.g., the customer116is responding quickly to the agent172and with substantive input) whereas other chat windows2304may have lower levels of customer116engagement. In accordance with at least some embodiments, each the content and context of each conversation assigned to the agent172may be analyzed to determine a customer116engagement level as well as a conversation velocity. In the depicted example, a first conversation associated with the first chat window2304may have a determined engagement level of 56% that is holding steady (e.g., not changing by more than 10% within a predetermined period of time). A second conversation associated with the second chat window2304may have a higher determined engagement level of 70% that is also rising (e.g., has a positive conversational velocity above a predetermined threshold). A third conversation associated with the third chat window2304may have a lower determined engagement level of 10% that is falling (e.g., has a negative conversational velocity that is below a predetermined threshold). An Nth conversation associated with the Nth chat window2304may have an average determined engagement level of 50% that is falling. Actions that may be taken by the agent communication device168in response to such determinations of customer engagement and velocity will now be described with reference toFIG.23C.

In the example ofFIG.23C, the graphical user interface304is shown to have the second chat window2304highlighted2308whereas the third chat window2304was automatically removed/closed and the Nth chat window2304is minimized or presented in a less conspicuous manner than other chat windows2304having a higher customer engagement and/or conversational velocity. In some embodiments, the automated actions of closing, minimizing, or highlighting a chat window2304(or other associated GUI element) for a particular conversation may be triggered in response to analyzing content and context of each conversation.

In accordance with at least some embodiments, the chatbot engine148and/or dialog engine164may be configured to perform the analysis of conversation and determine the customer engagement level as well as the conversational velocity. Both of these factors (and possibly other factors) may result in the chatbot engine148and/or dialog engine164sending a command to the agent communication device168that causes the agent communication device168to perform the automated action. It may be desirable to enable automated actions at the agent communication device168because the agent172is having to split their attention across multiple conversations. When devoting attention to highly active conversations, it is less likely that the agent172will notice a particular conversation is becoming less active (e.g., based on customer engagement and/or conversational velocity) and so the agent172will keep the chat window2304on the graphical user interface304. Such inaction may result in the graphical user interface304becoming unnecessarily crowded with multiple chat windows2304that are associated with conversations that do not require the agent's172attention. Accordingly, embodiments of the present disclosure propose the ability to enable the chatbot engine148and/or dialog engine164to automatically clean up or manage the graphical user interface304for the agent172based on information obtained from associated conversations.

In some embodiments, new customer messages for all conversations in the contact center108may be provided to the chatbot engine148and/or dialog engine164where conversational features like intent, entities, and possibly sentiment can be analyzed. The chatbot engine148and/or dialog engine164may be configured to utilize one or more conversation models156to determine a probability that represents the likelihood that the customer116is still engaged in the conversation. Specifically, when a new customer message is received, the conversation model156may be polled at regular intervals to produce the new engagement probability. Thereafter, the engagement probability would be compared to an engagement threshold (e.g., 50%) to determine if the customer116has likely disengaged from the conversation, at least for a period of time. If yet another customer message is received before the engagement probability falls below the engagement threshold, then the evaluation performed by the chatbot engine148and/or dialog engine164with the conversation model(s)156may be performed again. If the engagement probability falls below the engagement threshold before a new customer message arrives, then the agent172may be relieved of responsibility for managing the conversation. In this situation, the conversation and the chat window2304associated with the conversation may be parked (e.g., closed, minimized, etc.) as idle until the customer116responds with a new customer message.

A variation of this concept may enable the chatbot engine148and/or dialog engine164to produce a signal indicating that the engagement probability for the conversation has fallen below a second engagement threshold (e.g., 15%). In response to the chatbot engine148and/or dialog engine164determining the engagement probability has fallen yet again and further than before when the conversation was parked as idle, the contact center108may now consider the conversation complete and accordingly close the chat window2304for the associated conversation. The contact center108may also remove the work item associated with the conversation from assignment with the agent172, thereby relieving the agent of any responsibility for the conversation and causing any such activity (or inactivity) associated with the conversation to not impact the agent's172Key Performance Indicators (KPIs).

It should be appreciated that embodiments of the present disclosure enable the chatbot engine148and/or dialog engine164to produce a probability curve that enables a determination of customer engagement over time based on input text, extracted analytical values, etc. The conversation models156used for this purpose may be sampled at predetermined time intervals after the customer message has been received to produce the engagement probability and conversational velocity. At all times or periodically, the engagement probability and/or conversational velocity may be compared with appropriate thresholds until either a new customer message is received or the probability of engagement and/or conversational velocity has dropped below a particular threshold.

It should be appreciated that while concepts described herein refer to an engagement probability, it may also be appropriate to refer to disengagement probabilities and compare such disengagement probabilities with appropriate thresholds to determine whether a customer116is likely (or not) to require additional attention from an agent172within a predetermined amount of time. Because many conversations assigned to an agent172may be facilitated over an asynchronous communication channel, it may be difficult to determine the true end of a conversation versus a disengagement with a likelihood of resumption.

It can be difficult to determine the “true” end of a conversation versus a disengagement with likelihood of resumption. In the past, a timeout period was used to determine that a digital channel user disengaged. The determination requires the agent172to wait for the full period of the timeout before the work item can be “parked.” Embodiments of the present disclosure enable the chatbot engine148and/or dialog engine164to model content of a conversation to determine a probability of engagement (or disengagement) based on time since last user message and change in conversation state152.

It should also be appreciated that some conversations may have natural breaks where the customer116has been asked to perform a task that takes time (e.g., modeling shows that 95% of conversations on this topic have a disengagement at this point if the customer116does not respond with a next customer message in 2 minutes). Some conversations may have content that can indicate that the user will be disengaging purposefully for an extended period of time (e.g., Customer: “I will check tomorrow and get back to you.”). The conversational context and historic patterns of engagement and disengagement are modeled to provide a prediction and to enable better management of the agent's172time and attention.

Referring now toFIG.24, an additional communication method enabled by the chatbot engine148and/or dialog engine164will be described in accordance with at least some embodiments of the present disclosure. The method may be used to implement the behaviors depicted and described in connection withFIGS.23A-23C. The method may start by enabling the chatbot engine148and/or dialog engine164to analyze the content/context of each conversation assigned to an agent172(or to all agents in the contact center108) (step2404). The analysis may be performed immediately upon receiving a new customer message for a conversation or in response to some other trigger event (e.g., a request from an agent172). The analysis may be performed across multiple conversations that are assigned to a particular agent108or for every conversation assigned to every agent172in the contact center108.

The method continues with the chatbot engine148and/or dialog engine164determining a customer engagement level (e.g., a customer engagement probability or customer disengagement probability) for each conversation (step2408). In some embodiments, the analysis performed in step2404results in the determination of a customer engagement level for each conversation. The method may also include the chatbot engine148and/or dialog engine164determining a conversational velocity for each conversation (step2412). The steps2408and2412may be performed concurrently or in any order and both may be based on the analysis of step2404.

The method further continues with the chatbot engine148and/or dialog engine164determining whether any automated actions are to be taken for one or more conversations based on determinations made in steps2408and2412. Specifically, the chatbot engine148and/or dialog engine164may determine if any conversation should be parked as idle (step2416). This determination may be affirmatively made in response to comparing the customer engagement probability (or disengagement probability) with a predetermined probability threshold and/or in response to comparing the conversational velocity with a predetermined velocity threshold. If the decision is made to park any particular conversation as idle, then the chatbot engine148and/or dialog engine164may provide appropriate instructions to an agent communication device168to minimize, hide, or close a chat window2304associated with the conversation that is being parked as idle (step2420).

The method may also include determining, by the chatbot engine148and/or dialog engine164, whether an agent172needs to be alerted with respect to any conversation (step2424). In some embodiments, an alert may include highlighting a chat window2304associated with a conversation and/or sending a message to the agent172indicating that an agent response is needed for the particular conversation. Again, determining whether or not to provide an alert in connection with a particular conversation may include comparing the engagement probability with an appropriate probability threshold (which may be different from the threshold used in step2416) and/or comparing the conversational velocity with an appropriate velocity threshold (which may be different from the threshold used in step2416). As shown inFIG.23C, the alert may be provided by changing one or more properties of the chat window2304(e.g., making it larger, bolder, different color, etc.) and/or by bringing the appropriate chat window2304into a more conspicuous position on the agent's172graphical user interface304(step2428).

The method may also include determining, by the chatbot engine148and/or dialog engine164, whether it would be desirable to delay an agent response for a particular conversation (e.g., to slow down the conversational velocity or because it does not appear that the customer116is immediately expecting a response from the agent) (step2432). Like steps2416and2424, this step may include comparing the engagement probability with an appropriate probability threshold (which may be different from the thresholds used in steps2416and2424) and/or comparing the conversational velocity with an appropriate velocity threshold (which may be different from the thresholds used in steps2416and2424). If this query is answered affirmatively for any particular conversation, then the method may continue with the chatbot engine148and/or dialog engine164providing an instruction to an agent communication device168to modify the associated chat window or otherwise notify the agent172that a delayed response is acceptable (and possibly desirable) (step2436). The modification to the chat window2304may include hiding the chat window2304until such time as an agent response is desired/required and/or providing a message to the agent172within the chat window2304that indicates a response is not required. The modification to the chat window2304may also include a suggested response prepared by the chatbot engine148and/or dialog engine164for review and approval by the agent172, but along with a note that the response (when approved) will not be sent to the customer communication device for at least a predetermined amount of time.

It should be appreciated that steps2416,2424, and2432may be performed simultaneous with one another and various types of automated actions may be taken simultaneously. Indeed, the order with which steps2416,2424, and2432(and their associated automated actions in response to an affirmative determination) may be performed in any order without departing from the scope of the present disclosure.

After automated actions have been taken for any conversations deemed appropriate, the method may continue by waiting for agent172input or for another customer message (step2440). In response to agent172input and/or another receipt of another customer message, the method may revert back to step2404where the analysis is performed again on the newly-received customer message and/or content shared by the agent172.

Referring now toFIG.25, an additional communication method enabled by the chatbot engine148and/or dialog engine164will be described in accordance with at least some embodiments of the present disclosure. The method begins by receiving content from a prior conversation that occurred between the contact center108and a customer116(step2504). The conversation may correspond to a previous conversation between a single customer116and a single agent (e.g., a human agent172and/or automated agent) and the conversation may have utilize one or a number of different communication channels. In some embodiments, the conversation may correspond to a text-based conversation that occurred over an asynchronous communication channel. In some embodiments, the conversation may include a non-text-based conversation (e.g., a voice or video conversation) or the conversation may include both text and non-text content.

The method may continue by determining one or more parameters associated with the prior conversation (step2508). Such parameters may include metadata of the conversation (e.g., time of conversation, duration of message exchanges, maximum conversational velocity, customer116information, length of messages exchanged, etc.).

The content and parameters of the prior conversation may be analyzed to determine if the prior conversation included an extended pause and then a customer re-engagement on a common topic (e.g., a topic that was being discussed prior to the extended pause) (step2512). An extended pause may correspond to any length of conversational pause or delay in message exchanges that resulted in the conversational velocity falling below a predetermined threshold. Alternatively or additionally, an extended pause may correspond to any amount of time that exceeds a predetermined time threshold. Alternatively or additionally, an extended pause may correspond to any amount of time that results in a human agent172being undesirably assigned to the conversation even though no message is received from the customer116for the amount of time. As an example, an extended pause may correspond to an amount of time on the order of a couple of minutes, an hour, multiple hours, or any length of time that is longer than a human agent's172shift.

If the prior conversation is determined to not include an extended pause or not include some aspect of re-engagement after an extended pause, the method may continue by discarding the prior conversation (step2516). Specifically, the prior conversation may be determined to be a poor candidate for determining re-engagement since it did not exhibit an appropriate re-engagement of a conversation. In response to making such a determination, the conversation may be discarded such that it is not included in a model for future use in determining re-engagement, although the conversation may still be included in other models used to determined other aspects of a conversation.

If the query of step2512was answered positively, however, the method may proceed by including the prior conversation in a model (or multiple models) for determining customer re-engagement (step2520). In this way, the model may be applied to future conversations to predict customer116re-engagement (step2524). The model may be used to predict customer116re-engagement in addition to using other conversational analysis techniques described herein (e.g., content-based analysis of future conversation, customer-specific analysis, etc.).

With reference now toFIG.26, yet another communication method enabled by the chatbot engine148and/or dialog engine164will be described in accordance with at least some embodiments of the present disclosure. The method may begin by determining that a particular customer116corresponds to a frequent customer116of the contact center108(step2604). A frequent customer116may correspond to any customer or entity that interacts or has previously interacted with the contact center108more than a predetermined number of times (e.g., more than two times in the past). Alternatively or additionally, a frequent customer116may correspond to a customer116that has only interacted with the contact center108once, but is in a position where more future interactions are anticipated. Alternatively or additionally, a frequent customer116may correspond to a customer116that interacts with a business with a predetermined frequency or more than a predetermined number of times, but doesn't necessarily interact with the contact center108for each of those interactions (e.g., the customer116frequents the businesses' website or brick and mortar store with some regularity). Alternatively or additionally, a frequent customer116may correspond to any customer116that has a preferred status with a company (e.g., gold statute, premier status, etc.) regardless of whether or not the customer116interacts with the company at a particular frequency.

The method may continue with the chatbot engine148and/or dialog engine164analyzing conversations between the contact center108and the customer116(step2608). The analysis may include an analysis of content and/or metadata associated with one or multiple conversations. The analysis may be performed on a number of different communication channels and may span multiple conversations.

Based on the analysis of the conversation(s), the method may continue with the development of a predictive model that represents the content and/or metadata from the conversation(s) (step2612). The predictive model may then be compared to the same or additional previous conversations that have occurred between the customer116and the contact center108to determine an accuracy of the model (step2616). The predictive model may also be compared to other predictive models that have been built for other customers116and their conversations and/or that have been previously prepared based on other training data. As the contact center108continues to operate, the predictive model may continue to be compared to conversations to determine if the predictive model is drifting away from or maintaining a close relationship with the dynamics of ongoing conversations.

The method may further include applying the predictive model to conversations between the frequent customer116to assist in predicting whether or not the customer116is continuing a conversation with the contact center108on a particular topic or starting a different conversation on a different topic (step2620). Based on application of the predictive model and other non-customer-specific analytics, the method may proceed by predicting engagement or re-engagement of the customer116with the contact center108after a period of inactivity on a particular communication channel (step2624). This step may also include predicting disengagement of the customer116from a conversation. While the use of a customer-specific predictive model may be useful in connection with predicting behaviors of that particular customer116, it should be appreciated that other techniques (e.g., non-customer-specific techniques) described herein may still be used to predict behaviors of a customer116. Such non-customer-specific techniques may be used in addition to or in lieu of customer-specific predictive modeling. In some embodiments, it may be possible to provide a fall back strategy that would seek to use the model with the finest granularity. As an example, the customer-specific model would be the first choice, followed by a fall back to demographic-based models (e.g., a membership level, customer location, customer language, etc.), then finally to a generic model based on all users.

The present disclosure, in various aspects, embodiments, and/or configurations, includes components, methods, processes, systems, and/or apparatus substantially as depicted and described herein, including various aspects, embodiments, configurations embodiments, subcombinations, and/or subsets thereof. Those of skill in the art will understand how to make and use the disclosed aspects, embodiments, and/or configurations after understanding the present disclosure. The present disclosure, in various aspects, embodiments, and/or configurations, includes providing devices and processes in the absence of items not depicted and/or described herein or in various aspects, embodiments, and/or configurations hereof, including in the absence of such items as may have been used in previous devices or processes, e.g., for improving performance, achieving ease and\or reducing cost of implementation.

The foregoing discussion has been presented for purposes of illustration and description. The foregoing is not intended to limit the disclosure to the form or forms disclosed herein. In the foregoing Detailed Description for example, various features of the disclosure are grouped together in one or more aspects, embodiments, and/or configurations for the purpose of streamlining the disclosure. The features of the aspects, embodiments, and/or configurations of the disclosure may be combined in alternate aspects, embodiments, and/or configurations other than those discussed above. This method of disclosure is not to be interpreted as reflecting an intention that the claims require more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive aspects lie in less than all features of a single foregoing disclosed aspect, embodiment, and/or configuration. Thus, the following claims are hereby incorporated into this Detailed Description, with each claim standing on its own as a separate preferred embodiment of the disclosure.

Moreover, though the description has included description of one or more aspects, embodiments, and/or configurations and certain variations and modifications, other variations, combinations, and modifications are within the scope of the disclosure, e.g., as may be within the skill and knowledge of those in the art, after understanding the present disclosure. It is intended to obtain rights which include alternative aspects, embodiments, and/or configurations to the extent permitted, including alternate, interchangeable and/or equivalent structures, functions, ranges or steps to those claimed, whether or not such alternate, interchangeable and/or equivalent structures, functions, ranges or steps are disclosed herein, and without intending to publicly dedicate any patentable subject matter.