Efficient processing of a trie data structure to support customer

By splitting and merging the trie data structure, and utilizing concurrent processing and node graph tracking and counting, the computational intensity and scalability issues of the trie data structure in contact center customer interaction data processing are solved, achieving efficient customer trip visualization.

CN120883200APending Publication Date: 2025-10-31GENESIS CLOUD SERVICES CO LTD
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
CN202580001747.5
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2024-02-13
Filing Date
2025-02-13
Publication Date
2025-10-31

AI Technical Summary

Technical Problem

Existing technologies, when processing customer interaction data from contact centers, have limited filtering and querying capabilities due to the trie data structure, resulting in computational intensity and scalability issues, making it difficult to efficiently generate customer trip visualizations.

Method used

By splitting data frames into multiple partitions, generating and merging trie data structures, and utilizing concurrent processing and node graph tracking and counting, efficient trie data structure processing is achieved, supporting customer itinerary visualization.

Benefits of technology

It improves computational efficiency and system reliability, reduces processing and read/write operations, supports online computation and diverse functions, and ensures the accuracy of node counts in visualization.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120883200A_ABST
    Figure CN120883200A_ABST
Patent Text Reader

Abstract

A method for providing efficient dictionary tree data structure processing according to an embodiment includes splitting a data frame indicating a set of events associated with customer interactions with automated seats of a contact center based on an organization identifier and a sequence identifier to produce a set of multiple partitions; and generating a set of multiple lexicographic tree data structures, including generating a lexicographic tree data structure for each partition. Each dictionary tree data structure represents an aggregate count of a corresponding subset of event sequences associated with a corresponding organization. The method further includes merging a plurality of dictionary tree data structures in the set of dictionary tree data structures to produce a combined organized dictionary tree data structure; and storing the combined organizational dictionary tree data structure to enable a visualization of the combined organizational dictionary tree data structure to be generated.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Cross-references to related applications

[0002] This application claims the benefit of U.S. Provisional Application No. 63 / 552,886, filed February 13, 2024, entitled “Enhanced Generation of Customer Travel Visualizations via Use of Trie Data Structures”. This application also claims the benefit of U.S. Patent Application No. 19 / 051,099, filed February 11, 2025, entitled “Efficient Processing of Trie Data Structures to Support Customer Travel Visualizations”. Background Technology

[0003] Customers of products or services provided by an organization may contact the organization's associated call center or contact center for support related to the products or services. In doing so, customers may interact with human and / or virtual agents via electronic communication using technologies such as telephone, email, web chat, short message service (SMS), dedicated software applications, and / or other technologies. In many cases, as communication proceeds, customers may be routed among multiple agents and determine the type of support and / or the specific agent best suited to provide the requested support. Summary of the Invention

[0004] One implementation relates to unique systems, components, and methods for providing efficient trie data structure processing to support customer trip visualization. Other implementations relate to apparatus, systems, devices, hardware, methods, and combinations thereof for providing efficient trie data structure processing to support customer trip visualization.

[0005] According to an implementation scheme, a method for providing efficient trie data structure processing may include: splitting data frames indicating a set of events associated with customer interactions with automated agents in a contact center by a computing system based on organization identifiers and sequence identifiers to generate a set of multiple partitions. The method may further include: generating a set of multiple trie data structures by the computing system, including generating a trie data structure for each partition. Each trie data structure may represent an aggregate count of a corresponding subset of an event sequence associated with a corresponding organization. The method may further include: merging multiple trie data structures in the set of trie data structures by the computing system to generate a combined organization trie data structure; and storing the combined organization trie data structure by the computing system to enable the generation of a visualization of the combined organization trie data structure.

[0006] In some implementations, the method may further include: the computing system assigning each partition to a separate execution unit for concurrent processing.

[0007] In some implementations, the method may further include: performing analysis of the organizational trie data structure of the combination by the computing system, including filtering the organizational trie data structure of the combination according to path categories, which indicate the type of event that occurs during the customer interaction with the automated agent of the contact center.

[0008] In some implementations, merging the multiple trie data structures may include: identifying a set of unique organization identifiers associated with the multiple trie data structures; repartitioning the data frame based on the organization identifiers; and merging trie data structures associated with shared organization identifiers.

[0009] In some implementations, merging the multiple trie data structures may include: initializing an empty base trie data structure; reading the multiple trie data structures of the group as sub-trie data structures from a storage device; and merging each sub-trie data structure into the base trie data structure.

[0010] In some implementations, merging each sub-tribe data structure into the base trie data structure may include: for each sub-tribe data structure, in response to determining that a node path exists in the base trie data structure, sorting the node paths in ascending order according to their distance to the root, and combining the sub-tribe node with the base trie node; or in response to determining that a node path does not exist in the base trie data structure, adding the sub-tribe node as a new node to the base trie data structure.

[0011] In some implementations, the method may further include: the computing system using a node graph to track the merged nodes of the combined organizational trie data structure; and the computing system calculating edge counts for selected nodes represented in the node graph, including querying the node graph to identify the combined merged nodes and summing the individual counts associated with the merged nodes.

[0012] In some implementations, the method may further include: identifying selected nodes of the combined organizational trie data structure for a drill-down view in the visualization by the computing system; identifying a set of child nodes of one or more child nodes of the selected node by the computing system; and deleting the set of child nodes from the visualization by the computing system.

[0013] In some implementations, the method may further include: identifying a set of parent nodes of one or more parent nodes of the selected node; identifying a set of one or more child nodes of the set of parent nodes; subtracting the count of the identified child nodes from the count of the corresponding parent nodes in the set of parent nodes to provide an accurate representation of the count data in relation to the drill-down view; and deleting the identified child nodes of the set of parent nodes from the drill-down view.

[0014] According to another embodiment, a system for providing efficient trie data structure processing may include: at least one processor; and at least one memory including a plurality of instructions stored thereon, the plurality of instructions being responsive to execution by the at least one processor to cause the system to: split data frames indicating a set of events associated with customer interactions with automated agents in a contact center based on organization identifiers and sequence identifiers to generate a set of multiple partitions; and generate a set of multiple trie data structures, including generating a trie data structure for each partition. Each trie data structure may represent an aggregate count of a corresponding subset of an event sequence associated with a corresponding organization. The plurality of instructions may further cause the system to: merge the multiple trie data structures in the set of trie data structures to generate a combined organization trie data structure; and store the combined organization trie data structure to enable the generation of a visualization of the combined organization trie data structure.

[0015] In some implementations, these multiple instructions can also enable the system to: assign each partition to a separate execution unit for concurrent processing.

[0016] In some implementations, the multiple instructions may also cause the system to: perform analysis on the combined organizational trie data structure, including filtering the combined organizational trie data structure according to path categories, which indicate the type of event that occurred during the customer interaction with the automated agent in the contact center.

[0017] In some implementations, merging the multiple trie data structures may include: identifying a set of unique organization identifiers associated with the multiple trie data structures; repartitioning the data frame based on the organization identifiers; and merging trie data structures associated with shared organization identifiers.

[0018] In some implementations, merging the multiple trie data structures includes: initializing an empty base trie data structure; reading the multiple trie data structures of the group from a storage device as sub-trie data structures; and merging each sub-trie data structure into the base trie data structure.

[0019] In some implementations, merging each sub-tribe data structure into the base trie data structure includes: for each sub-tribe data structure, in response to determining that a node path exists in the base trie data structure, sorting the node paths in ascending order according to their distance to the root, and combining the sub-tribe node with the base trie node; or in response to determining that a node path does not exist in the base trie data structure, adding the sub-tribe node as a new node to the base trie data structure.

[0020] In some implementations, the multiple instructions may also cause the system to: use a node graph to track the merged nodes of the combined organization trie data structure; and calculate edge counts for selected nodes represented in the node graph, including querying the node graph to identify the combined merged nodes and summing the individual counts associated with the merged nodes.

[0021] In some implementations, the multiple instructions may also cause the system to: identify a selected node of the combined organizational trie data structure for a drill-down view in the visualization; identify a set of child nodes of one or more child nodes of the selected node; and delete the set of child nodes from the visualization by the computing system.

[0022] In some implementations, the multiple instructions may also cause the system to: identify a set of parent nodes of one or more parent nodes of the selected node; identify a set of one or more child nodes of the set of parent nodes; subtract the count of the identified child nodes from the count of the corresponding parent node in the set of parent nodes to provide an accurate representation of the count data in relation to the drill-down view; and delete the identified child nodes of the set of parent nodes in the drill-down view.

[0023] According to another embodiment, one or more non-transitory machine-readable storage media may include a plurality of instructions stored thereon, which, in response to execution by a computing system, cause the computing system to: split a set of data frames indicating a set of events associated with customer interactions with automated agents in a contact center based on an organization identifier and a sequence identifier, to generate a set of multiple partitions; and generate a set of multiple trie data structures, including generating a trie data structure for each partition. Each trie data structure may represent an aggregate count of a corresponding subset of an event sequence associated with a corresponding organization. The plurality of instructions may also cause the computing system to: merge multiple trie data structures in the set of trie data structures to generate a combined organization trie data structure; and store the combined organization trie data structure to enable the generation of a visualization of the combined organization trie data structure.

[0024] In some implementations, these multiple instructions can also cause the computing system to assign each partition to a separate execution unit for concurrent processing.

[0025] This invention is not intended to identify key or essential features of the claimed subject matter, nor is it intended to serve as an aid to limiting the scope of the claimed subject matter. Further embodiments, forms, features, and aspects of this application will become apparent from the description and drawings provided herein. Attached Figure Description

[0026] The concepts described herein are illustrated in the accompanying drawings by way of example and not by way of limitation. For simplicity and clarity, the elements shown in the drawings are not necessarily drawn to scale. Where deemed appropriate, reference numerals have been repeated in the drawings to indicate corresponding or similar elements.

[0027] Figure 1 A simplified block diagram of at least one implementation scheme of a contact center system is depicted;

[0028] Figure 2 It is a simplified block diagram of at least one implementation of a computing device;

[0029] Figure 3 It is a simplified flowchart of at least one implementation of a method for filtering a trie data structure by a specific event;

[0030] Figure 4 This is a simplified flowchart of at least one implementation of a method for filtering a trie data structure by event attributes;

[0031] Figure 5 It is a simplified flowchart of at least one implementation of a method for filtering a trie data structure via a robotic process;

[0032] Figures 6 to 7 Examples of various states of a sample trie data structure filtered by specific events are shown;

[0033] Figures 8 to 10 Examples of various states of a sample trie data structure filtered by event attributes are shown;

[0034] Figures 11 to 12 Examples of various states of a sample trie data structure filtered by a robotic process are shown;

[0035] Figures 13 to 14 It is a simplified flowchart of a method for partitioning data to efficiently process trie data structures;

[0036] Figure 15 It is a simplified flowchart of the methods used to merge trie data structures into combined trie data structures;

[0037] Figure 16 This is a simplified flowchart of a method for calculating the accurate edge count for nodes associated with a trie data structure;

[0038] Figure 17 This is a simplified flowchart of a method for calculating the accurate count data of a drill-down view in a visualization of a trie data structure; and

[0039] Figures 18 to 19 The different states of the trie data structure associated with visualization are illustrated. Detailed Implementation

[0040] While the concepts of this disclosure are susceptible to various modifications and alternatives, specific embodiments have been shown by way of example in the accompanying drawings and will be described in detail herein. However, it should be understood that the concepts of this disclosure are not intended to be limited to the specific forms disclosed, but rather are intended to cover all modifications, equivalents, and alternatives consistent with this disclosure and the appended claims.

[0041] References to "an embodiment," "an embodiment," "an exemplary embodiment," etc., in the specification indicate that the described embodiment may include a particular feature, structure, or characteristic; however, each embodiment may or may not include that particular feature, structure, or characteristic. Furthermore, such phrases do not necessarily refer to the same embodiment. It should also be understood that although references to "preferred" components or features may indicate the desirability of a particular component or feature with respect to the embodiment, this disclosure does not therefore limit it to other embodiments where such component or feature may be omitted. Furthermore, when a particular feature, structure, or characteristic is described in connection with an embodiment, it is considered that implementing such a feature, structure, or characteristic in conjunction with other embodiments is within the knowledge of those skilled in the art, whether explicitly described or not. Moreover, in various embodiments, a particular feature, structure, or characteristic may be combined in any suitable combination and / or sub-combination.

[0042] Furthermore, it should be understood that items included in the list in the form of “at least one of A, B, and C” can mean (A); (B); (C); (A and B); (B and C); (A and C); or (A, B, and C). Similarly, items listed in the form of “at least one of A, B, or C” can mean (A); (B); (C); (A and B); (B and C); (A and C); or (A, B, and C). Moreover, with respect to the claims, the use of words and phrases such as “a,” “an,” “at least one,” and / or “at least a portion” should not be construed as limiting to only one such element unless specifically stated otherwise, and the use of phrases such as “at least a portion” and / or “a portion” should be construed as covering both embodiments comprising only a portion of such element and embodiments comprising the entire such element, unless specifically stated otherwise.

[0043] In some cases, the disclosed embodiments may be implemented in hardware, firmware, software, or a combination thereof. The disclosed embodiments may also be implemented as instructions carried or stored on one or more transient or non-transient machine-readable (e.g., computer-readable) storage media, which may be read and executed by one or more processors. Machine-readable storage media may be embodied as any storage device, mechanism, or other physical structure for storing or transmitting information in a machine-readable form (e.g., volatile or non-volatile memory, media disk, or other media device).

[0044] In the accompanying drawings, certain structural or methodological features may be shown in a particular arrangement and / or sequence. However, it should be understood that such a particular arrangement and / or sequence may not be necessary. Rather, in some embodiments, unless otherwise indicated, such features may be arranged in a different manner and / or order than shown in the illustrative figures. Furthermore, the inclusion of a structural or methodological feature in a particular figure does not imply that such a feature is required in all embodiments, and in some embodiments, such a feature may be omitted or may be combined with other features.

[0045] The technologies described in this article relate to customer relationship services and customer relationship management via contact centers and associated cloud-based systems. More specifically, the techniques described herein enable the generation of user-friendly visualizations that assist contact center customer experience managers in improving the "big picture" experience of customers in their interactions with agents associated with the contact center, including automated agents ("bots"). Visualizations may include, for example, process milestones and outcomes of the interaction. In generating visualizations, exemplary techniques can leverage trie data structures while providing functionality for filtering, searching, and querying to show events in a customer journey that begins at a specific event, events including specific attribute values, and / or events associated with a specific bot process (e.g., performed by a bot or an automated agent in the contact center system). Furthermore, the techniques described herein allow for efficient processing of trie data structures, including merging such data structures while maintaining data fidelity, to enhance the generation of customer journey visualizations and related analyses. For example, the implementations provided herein include techniques for splitting and merging tries for relatively large organizations to provide improved computational efficiency and system reliability. Additional implementations are provided that ensure that the inflow and outflow counts at each node in the trie data structure are equal in the visualization of the pathway (e.g., a sequence of events represented by nodes).

[0046] Traditionally, trie data structures have limitations that restrict their capabilities in certain use cases. For example, to achieve filtering and querying capabilities based on any event and to visualize paths to / from that event, it is simple to create multiple trie data structures, one for each event or node within each trie data structure. However, such approaches are computationally intensive and lead to significant scalability issues. Therefore, the technique described in this paper provides a scalable solution that allows for this type of filtering and querying using trie data structures (i.e., without building a separate trie for each query event). Furthermore, the technique described in this paper allows for online (e.g., cloud-based) computation methods while maintaining reasonable latency (e.g., latency that meets typical service level agreement requirements, such as a maximum query response time of one second). Instead of creating a trie for each filtering criterion, a single “big picture” trie can be stored for each organization, which includes each bot process in the bot process and its associated event attributes. This approach significantly reduces the required processing and read / write operations, thereby improving efficiency. The reduced number of files and corresponding read / write operations also results in lower operational costs. The system can also be seamlessly integrated with various robotic processes, allowing for diverse and customizable functionality.

[0047] The techniques provided herein enable efficient processing of event data that forms the basis for generating a trie data structure to be represented in a visualization of a customer's itinerary. As described in more detail herein, in at least some embodiments, efficient processing includes: splitting the event data in a data frame into multiple partitions; generating a trie data structure based on each of these partitions; and selectively merging the trie data structures based on the organization associated with each trie data structure. By partitioning the data frame, the techniques described herein enable the parallel generation of corresponding trie data structures, such as by utilizing corresponding execution units (e.g., processing devices), rather than burdening a single execution unit with the task of generating trie data structures from relatively large data frames. Furthermore, embodiments of the techniques described in more detail herein enable operations to accurately track count data indicating the inflow and outflow of nodes from the trie data structure. Moreover, and as described in more detail, operations may include updating count data associated with selected portions of the trie data structure to achieve an accurate drill-down view of that portion of the trie data structure. Therefore, systems implementing the techniques presented herein can more efficiently utilize available processing capacity (e.g., available cycle time of processing equipment) to generate a trie data structure for a given organization, and can perform operations to ensure accurate counting information is determined for the nodes of the trie data structure represented in a visualization.

[0048] It should be understood that, for simplicity and conciseness, the "trie data structure" may be simply referred to as "trie" in this document. Furthermore, although the technology is described herein with reference to "robotic processes," it should be understood that similar techniques may be applied to other types of processes or client-side processes in other implementations.

[0049] Now for reference Figure 1 This document illustrates a simplified block diagram of at least one embodiment of a communication infrastructure and / or contact center system that can be used in conjunction with one or more of the embodiments described herein. Contact center system 100 can be embodied as any system capable of providing contact center services (e.g., call center services, chat center services, SMS center services, etc.) to customers and otherwise performing the functions described herein. The exemplary contact center system 100 includes customer equipment 102, network 104, switch / media gateway 106, call controller 108, interactive media response (IMR) server 110, routing server 112, storage device 114, statistics server 116, agent devices 118A, 118B, 118C, media server 120, knowledge management server 122, knowledge system 124, chat server 126, web server 128, interactive (iXn) server 130, general contact server 132, reporting server 134, media service server 136, and analytics module 138. Although in Figure 1The exemplary implementation shows only one client device 102, one network 104, one switch / media gateway 106, one call controller 108, one IMR server 110, one routing server 112, one storage device 114, one statistics server 116, one media server 120, one knowledge management server 122, one knowledge system 124, one chat server 126, one iXn server 130, one general contact server 132, one reporting server 134, one media service server 136, and An analysis module 138 is included, but in other embodiments, the contact center system 100 may include multiple client devices 102, a network 104, a switch / media gateway 106, a call controller 108, an IMR server 110, a routing server 112, a storage device 114, a statistics server 116, a media server 120, a knowledge management server 122, a knowledge system 124, a chat server 126, an iXn server 130, a general contact server 132, a reporting server 134, a media service server 136, and / or an analysis module 138. Furthermore, in some embodiments, one or more of the components described herein may be excluded from system 100, one or more independent components described as separate components may form part of another component, and / or one or more components described as forming part of another component may be separate.

[0050] It should be understood that the term "contact center system" is used in this article to refer to... Figure 1 The term “contact center” is used more generally to refer to a contact center system, the customer service providers operating those systems, and / or the organizations or enterprises associated with them. Therefore, unless otherwise expressly limited, the term “contact center” generally refers to a contact center system (such as contact center system 100), the associated customer service providers (such as specific customer service providers / agents providing customer service through contact center system 100), and the organizations or enterprises that provide those customer services on its behalf.

[0051] In the back-end, customer service providers can offer a variety of services through contact centers. Such contact centers may be staffed with employees or customer service agents (or simply "agents") who act as intermediaries between companies, businesses, government agencies, or organizations (hereinafter referred to interchangeably as "organizations" or "enterprises") and individuals such as users, individuals, or customers (hereinafter referred to interchangeably as "individuals," "customers," or "contact center clients"). For example, agents at a contact center can assist customers in making purchasing decisions, receiving orders, or resolving issues with received products or services. Within a contact center, such interactions between contact center agents and external entities or customers can take place over various communication channels, such as, for example, via voice (e.g., telephone calls or VoIP calls), video (e.g., video conferencing), text (e.g., email and text chat), screen sharing, shared browsing, and / or other communication channels.

[0052] Operationally, contact centers generally strive to provide high-quality service to customers while minimizing costs. For example, one way contact centers operate is by handling each customer's interaction with a live agent. While this approach may score well in terms of service quality, it can also be very expensive due to the high cost of agent labor. Therefore, most contact centers utilize some degree of automation to replace live agents, such as interactive voice response (IVR) systems, interactive media response (IMR) systems, internet bots or "bots," automated chat modules or "chatbots," and / or other automated processes. In many cases, this has proven to be a successful strategy because automated processes can handle certain types of interactions very efficiently and effectively reduce the need for live agents. Such automation allows contact centers to use human agents for more challenging customer interactions, while automated processes handle more repetitive or routine tasks. Furthermore, automated processes can be built in ways that optimize efficiency and promote repeatability. While human or live agents may forget to ask certain questions or follow up on specific details, such errors can often be avoided by using automated processes. Although customer service providers are increasingly reliant on automated processes to interact with customers, customers still use such technologies far less. Therefore, although IVR systems, IMR systems, and / or robots are used to automate some interactions on the contact center side of the interaction, the actions on the customer side are still performed manually by the customer.

[0053] It should be understood that customer service providers can use contact center system 100 to provide various types of services to customers. For example, contact center system 100 can be used to participate in and manage interactions between automated processes (or robots) or human agents communicating with customers. It should be understood that contact center system 100 can be an internal facility of a company or enterprise for performing sales and customer service functions relative to products and services available to the enterprise. In another embodiment, contact center system 100 can be operated by a third-party service provider contracted to provide services to another organization. Furthermore, contact center system 100 can be deployed on equipment dedicated to an enterprise or third-party service provider, and / or deployed in a remote computing environment (such as, for example, a private or public cloud environment with infrastructure for supporting multiple contact centers for multiple enterprises). Contact center system 100 may include software applications or programs that can be executed on-site or remotely, or for some combination thereof. It should also be understood that the various components of contact center system 100 can be distributed across various geographical locations and are not necessarily contained in a single location or computing environment.

[0054] It should also be understood that, unless otherwise expressly limited, any of the computing elements of this invention may also be implemented in a cloud-based or cloud computing environment. As used herein and further described below with reference to computing device 200, “cloud computing” (or simply “cloud”) is defined as a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage devices, applications, and services), which can be rapidly configured via virtualization and deployed with minimal management effort or service provider interaction, and then scaled accordingly. Cloud computing can be comprised of various features (e.g., on-demand self-service, extensive network access, resource pooling, rapid elasticity, metered services, etc.), service models (e.g., Software as a Service (“SaaS”), Platform as a Service (“PaaS”), Infrastructure as a Service (“IaaS”), and deployment models (e.g., private cloud, community cloud, public cloud, hybrid cloud, etc.). Cloud execution models are often referred to as “serverless architectures,” which typically involve service providers that dynamically manage the allocation and configuration of remote servers to achieve the required functionality.

[0055] It should be understood that, relative to Figure 1 Any of the computer-implemented components, modules, or servers described can be accessed via one or more types of computing devices (such as, for example...) Figure 2The contact center system 100 is implemented using a computing device 200. As can be seen, the contact center system 100 generally manages resources (e.g., personnel, computers, telecommunications equipment, etc.) to enable the delivery of services via telephone, email, chat, or other communication mechanisms. Such services may vary depending on the type of contact center and may include, for example, customer service, help desk functions, emergency response, remote marketing, order taking, and / or other features.

[0056] Customers wishing to receive services from contact center system 100 can initiate inbound communications (e.g., telephone calls, emails, chats, etc.) to contact center system 100 via customer equipment 102. Although Figure 1 One such client device (i.e., client device 102) is shown, but it should be understood that any number of client devices 102 may exist. Client device 102 may be, for example, a communication device such as a telephone, smartphone, computer, tablet, or laptop. Based on the functions described herein, a client can generally use client device 102 to initiate, manage, and conduct communications with contact center system 100, such as telephone calls, emails, chat, text messages, web browsing sessions, and other multimedia transactions.

[0057] Inbound and outbound communications to and from client equipment 102 can traverse network 104, the nature of which typically depends on the type of client equipment used and the form of communication. For example, network 104 may include communication networks for telephone, cellular, and / or data services. Network 104 may be a private or public switched telephone network (PSTN), a local area network (LAN), a private wide area network (WAN), and / or a public WAN such as the Internet. Furthermore, network 104 may include a wireless carrier network, including Code Division Multiple Access (CDMA) networks, Global System for Mobile Communications (GSM) networks, or any wireless network / technology conventional in the art, including but not limited to 3G, 4G, LTE, 5G, etc.

[0058] Switch / media gateway 106 may be coupled to network 104 for receiving and sending telephone calls between customers and contact center system 100. Switch / media gateway 106 may include a telephone or communications exchange configured to act as a central exchange for agent-level routing within the center. The exchange may be a hardware switching system or implemented via software. For example, exchange 106 may include an automatic call distributor, a private branch exchange (PBX), an IP-based software switch, and / or any other exchange with dedicated hardware and software configured to receive interactions from the Internet and / or from the telephone network from customers and route those interactions to, for example, one of the agent devices in agent device 118. Thus, generally speaking, switch / media gateway 106 establishes a voice connection between a customer and an agent by establishing a connection between customer device 102 and agent device 118.

[0059] As further shown, the switch / media gateway 106 may be coupled to a call controller 108, which may serve as, for example, an adapter or interface between the switch and other routing, monitoring, and communication processing components of the contact center system 100. The call controller 108 may be configured to handle PSTN calls, VoIP calls, and / or other types of calls. For example, the call controller 108 may include computer telephony integration (CTI) software for interfacing with the switch / media gateway and other components. The call controller 108 may include a Session Initiation Protocol (SIP) server for handling SIP calls. The call controller 108 may also extract data about incoming interactions, such as a customer's phone number, IP address, or email address, and then communicate this data to other contact center components while processing the interaction.

[0060] Interactive Media Response (IMR) server 110 can be configured to enable self-service or virtual assistant functionality. Specifically, IMR server 110 can be similar to an Interactive Voice Response (IVR) server, except that IMR server 110 is not limited to voice and can also cover various media channels. In an example exemplifying voice, IMR server 110 can be configured with IMR scripts to inquire about a customer's needs. For example, a bank's contact center can instruct a customer via an IMR script to "press 1" if they wish to retrieve their account balance. By continuing to interact with IMR server 110, the customer can receive service without speaking to an agent. IMR server 110 can also be configured to determine the reason a customer contacts the contact center, enabling communication to be routed to the appropriate resources. IMR configuration can be performed using self-service and / or auxiliary service tools, including web-based tools for developing IVR applications and routing applications that run in a contact center environment.

[0061] Routing server 112 can be used to route incoming interactions. For example, once it is determined that inbound communication should be handled by a human agent, functionality within routing server 112 can select the most appropriate agent and route the communication to them. This agent selection can be based on which available agent is best suited to handle the communication. More specifically, the selection of the appropriate agent can be based on a routing strategy or algorithm implemented by routing server 112. In doing so, routing server 112 can query data related to the incoming interaction, such as data related to a specific customer, available agents, and interaction type, as described herein, which can be stored in a specific database. Once an agent is selected, routing server 112 can interact with call controller 108 to route (i.e., connect) the incoming interaction to the corresponding agent device 118. As part of this connection, information about the customer can be provided to the selected agent via their agent device 118. This information is intended to enhance the service the agent can provide to the customer.

[0062] It should be understood that the contact center system 100 may include one or more mass storage devices (typically represented by storage device 114) for storing data in one or more databases related to the functions of the contact center. For example, storage device 114 may store customer data maintained in a customer database. Such customer data may include, for example, customer profiles, contact information, service level agreements (SLAs), and interaction history (e.g., details of previous interactions with a particular customer, including the nature of the previous interaction, handling data, wait times, processing times, and actions taken by the contact center to resolve customer issues). As another example, storage device 114 may store agent data in an agent database. Agent data maintained by the contact center system 100 may include, for example, agent availability and agent profiles, schedules, skills, processing times, and / or other relevant data. As yet another example, storage device 114 may store interaction data in an interaction database. Interaction data may include, for example, data related to numerous past interactions between customers and the contact center. More generally, it should be understood that, unless otherwise specified, storage device 114 may be configured to include databases and / or store data related to any of the information types described herein, wherein such databases and / or data can be accessed by other modules or servers of contact center system 100 in a manner that facilitates the functionality described herein. For example, a server or module of contact center system 100 may query such a database to retrieve data stored therein or send data thereto for storage. For example, storage device 114 may take the form of any conventional storage medium and may be installed locally or operated from a remote location. For example, the database may be a Cassandra database, a NoSQL database, or an SQL database, and is managed by a database management system such as Oracle, IBM DB2, Microsoft SQL Server, Microsoft Access, or PostgreSQL.

[0063] Statistics server 116 can be configured to record and aggregate data related to the performance and operational aspects of contact center system 100. This information can be compiled by statistics server 116 and made available to other servers and modules such as reporting server 134, which can then use the data to generate reports that are used to manage operational aspects of the contact center and perform automated actions according to the functions described herein. This data may relate to the status of contact center resources, such as average wait time, abandonment rate, agent occupancy rate, and other data required for the functions described herein.

[0064] The agent device 118 of the contact center system 100 may be a communication device configured to interact with various components and modules of the contact center system 100 in a manner that facilitates the functions described herein. For example, agent device 118 may include a telephone suitable for regular telephone calls or VoIP calls. Agent device 118 may also include a computing device configured to communicate with the server of the contact center system 100 according to the functions described herein, perform data processing associated with operations, and interact with customers via voice, chat, email, and other multimedia communication mechanisms. Although Figure 1 Three such agent devices 118 are shown (i.e., agent devices 118A, 118B, and 118C), but it should be understood that any number of agent devices 118 may be present in a particular embodiment.

[0065] The multimedia / social media server 120 can be configured to facilitate media interaction (excluding voice) with client device 102 and / or server 128. Such media interaction may be associated with, for example, email, voicemail, chat, video, text messaging, networking, social media, shared browsing, etc. The multimedia / social media server 120 may take the form of any IP router conventional in the art, equipped with dedicated hardware and software for receiving, processing, and forwarding multimedia events and communications.

[0066] Knowledge management server 122 may be configured to facilitate interaction between clients and knowledge system 124. Generally, knowledge system 124 may be a computer system capable of receiving questions or queries and providing answers as responses. Knowledge system 124 may be included as part of contact center system 100 or remotely operated by a third party. Knowledge system 124 may include an artificial intelligence computer system capable of answering questions posed in natural language by retrieving information from sources such as encyclopedias, dictionaries, newsletter articles, literary works, or other documents submitted to knowledge system 124 as reference material. For example, knowledge system 124 may be embodied in IBM Watson or a similar system.

[0067] Chat server 126 can be configured to conduct, orchestrate, and manage electronic chat communications with clients. Generally, chat server 126 is configured to implement and maintain chat sessions and generate chat transcripts. Such chat communications can be conducted by chat server 126 in a manner where the client communicates with an automated chatbot, a human agent, or both. In an exemplary embodiment, chat server 126 can function as a chat orchestration server that schedules chat sessions between chatbots and available human agents. In such cases, the processing logic of chat server 126 can be rule-driven to leverage intelligent workload distribution among available chat resources. Chat server 126 can also implement, manage, and facilitate user interfaces (UIs) associated with chat features, including those generated at client device 102 or agent device 118. Chat server 126 can be configured to transfer chat between automated and human resources within a single chat session with a specific client, such as transferring a chat session from a chatbot to a human agent or vice versa. Chat server 126 can also be coupled to knowledge management server 122 and knowledge system 124 to receive suggestions and answers to queries made by customers during chat, such as providing links to relevant articles.

[0068] Web server 128 may be included to provide site hosting for various social interaction sites (such as Facebook, Twitter, Instagram, etc.) subscribed to by customers. Although depicted as part of contact center system 100, it should be understood that web server 128 may be provided and / or remotely maintained by a third party. Web server 128 may also provide web pages for businesses or organizations supported by contact center system 100. For example, customers may browse web pages and receive information about the products and services of a particular business. Within such business web pages, mechanisms may be provided for initiating interactions with contact center system 100, such as via web chat, voice, or email. An example of such a mechanism is a desktop widget that may be deployed on a web page or website hosted on web server 128. As used herein, a desktop widget refers to a user interface component that performs a specific function. In some implementations, a desktop widget may include graphical user interface controls that may be overlaid on a web page displayed to a customer via the Internet. Desktop widgets may display information, such as in windows or text boxes, or include buttons or other controls that allow customers to access certain functions, such as sharing or opening files or initiating communications. In some implementations, desktop widgets include user interface components with portable portions of code that can be installed and executed within a separate webpage without compilation. Some desktop widgets may include corresponding or additional user interfaces and may be configured to access various local resources (e.g., calendar or contact information on the client device) or remote resources via a network (e.g., instant messaging, email, or social network updates).

[0069] Interactive (iXn) server 130 can be configured to manage deferred activities in the contact center and their routing to human agents for completion. As used herein, deferred activities can include background work that can be performed offline, such as replying to emails, attending training sessions, and other activities that do not require real-time communication with customers. For example, interactive (iXn) server 130 can be configured to interact with routing server 112 to select an appropriate agent to handle each deferred activity among the deferred activities. Once assigned to a specific agent, the deferred activity is pushed to that agent, making it appear on the selected agent's agent device 118. Deferred activities can appear in a workspace as tasks to be completed by the selected agent. The functionality of the workspace can be implemented using any conventional data structure, such as, for example, linked lists, arrays, and / or other suitable data structures. Each agent device in agent device 118 can include a workspace. For example, the workspace can be maintained in a buffer memory of the corresponding agent device 118.

[0070] The Universal Contact Server (UCS) 132 can be configured to retrieve information stored in a customer database and / or send information to it for storage. For example, the UCS 132 can be used as part of a chat feature to facilitate the maintenance of a history of how chats with a particular customer were handled, which can then be used as a reference for how future chats should be handled. More generally, the UCS 132 can be configured to facilitate the maintenance of a history of customer preferences, such as preferred media channels and optimal contact times. To this end, the UCS 132 can be configured to identify data associated with each customer's interaction history, such as data related to, for example, comments from agents, customer communication history, etc. Each of these data types can then be stored in the customer database 222 or on other modules and retrieved as needed for the functionality described herein.

[0071] Reporting server 134 can be configured to generate reports based on data compiled and aggregated by statistics server 116 or other sources. Such reports may include near real-time or historical reports and relate to the status and performance characteristics of contact center resources, such as average wait time, abandonment rate, and / or agent occupancy. Reports may be generated automatically or in response to specific requests from requesters (e.g., agents, administrators, contact center applications, etc.). These reports can then be used to manage contact center operations according to the functionality described herein.

[0072] Media service server 136 may be configured to provide audio and / or video services to support contact center features. Such features, as described herein, may include prompts to IVR or IMR systems (e.g., playback of audio files), hold music, voicemail / one-way recording, multi-way recording (e.g., multi-way recording of audio and / or video calls), screen recording, speech recognition, dual-tone multi-frequency (DTMF) recognition, fax, audio and video transcoding, Secure Real-Time Transport Protocol (SRTP), audio conferencing, video conferencing, tutorials (e.g., enabling coaches to listen to interactions between customers and agents and enabling coaches to provide comments to agents when customers have not heard them), call analytics, keyword targeting, and / or other relevant features.

[0073] Analysis module 138 can be configured to provide systems and methods for performing analysis on data received from multiple different data sources, as the functionality described herein may require. According to example embodiments, analysis module 138 can also generate, update, train, and modify predictors or models based on collected data, such as, for example, customer data, agent data, and interaction data. Models may include behavioral models of customers or agents. Behavioral models can be used to predict, for example, customer or agent behavior in various situations, thereby allowing embodiments of the invention to tailor interactions or allocate resources to prepare predictive characteristics for future interactions based on such predictions, thereby improving the overall performance of the contact center and the customer experience. It should be understood that while the analysis module is described as part of a contact center, such behavioral models can also be implemented on the customer system (or, as used herein, on the "customer side" of the interaction) and used for customer benefit.

[0074] According to an exemplary embodiment, the analysis module 138 can access data stored in the storage device 114 (including a customer database and an agent database). The analysis module 138 can also access an interaction database that stores data related to interactions and interaction content (e.g., transcriptions of detected interactions and events), interaction metadata (e.g., customer identifiers, agent identifiers, interaction media, interaction duration, interaction start and end times, department, tag category), and application settings (e.g., interaction paths via the contact center). Furthermore, the analysis module 138 can be configured to retrieve data stored in the storage device 114 for use, for example, in developing and training algorithms and models by applying machine learning techniques.

[0075] One or more of the included models can be configured to predict customer or agent behavior and / or aspects related to contact center operation and performance. Furthermore, one or more of the models can be used for natural language processing and, for example, include intent recognition. Models can be developed based on: known first-principles equations describing the system; data that generates the empirical model; or a combination of known first-principles equations and data. When developing models for use with embodiments of the invention, since first-principles equations are often unavailable or not easily derived, it is generally preferable to build empirical models based on collected and stored data. In order to accurately capture the relationship between the manipulating / interference variables and the controlled variables of a complex system, in some embodiments, it may be preferred that the model be nonlinear. This is because nonlinear models can represent a curvilinear relationship between the manipulating / interference variables and the controlled variables rather than a linear one, which is common for complex systems such as those discussed herein. In view of the foregoing requirements, machine learning or neural network-based methods are preferred embodiments for implementing the models. For example, advanced regression algorithms can be used to develop neural networks based on empirical data.

[0076] Analysis module 138 may also include an optimizer. It should be understood that an optimizer can be used to minimize a “cost function” subject to a set of constraints, where the cost function is a mathematical representation of the desired objective or system operation. Since the model can be nonlinear, the optimizer can be a nonlinear programming optimizer. However, it is conceivable that the techniques described herein can be implemented using a variety of different types of optimization methods, individually or in combination, including but not limited to linear programming, quadratic programming, mixed-integer nonlinear programming, stochastic programming, global nonlinear programming, genetic algorithms, and particle / swarm optimization techniques.

[0077] According to some implementation schemes, the model and optimizer can be used together within the optimization system. For example, the analysis module 138 can utilize the optimization system as part of an optimization process to optimize or at least enhance aspects of the contact center's performance and operation. This could include, for example, features related to customer experience, agent experience, interaction routing, natural language processing, intent recognition, or other functionalities related to automation processes.

[0078] Figure 1 The various components, modules, and / or servers (and other figures included herein) may each include one or more processors that execute computer program instructions and interact with other system components to perform the various functions described herein. Such computer program instructions may be stored in memory implemented using standard storage devices such as, for example, random access memory (RAM), or in other non-transitory computer-readable media such as, for example, CD-ROMs, flash drives, etc. Although the functionality of each server is described as being provided by a specific server, those skilled in the art will recognize that the functionality of various servers may be combined or integrated into a single server, or the functionality of a specific server may be distributed across one or more other servers, without departing from the scope of the invention. Furthermore, the terms “interaction” and “communication” are used interchangeably and generally refer to any real-time or non-real-time interaction using any communication channel, including but not limited to telephone calls (PSTN or VoIP calls), email, voicemail, video, chat, screen sharing, text messages, social media messages, WebRTC calls, etc. Access to and control of components of the contact center system 100 can be influenced by a user interface (UI) that may be generated on client equipment 102 and / or agent equipment 118.

[0079] As already noted, in some implementations, the contact center system 100 may operate as a hybrid system in which some or all components are remotely hosted, such as in a cloud-based or cloud computing environment. It should be understood that each of the devices in the contact center system 100 may be embodied in, include, or form similar to those referenced below. Figure 2The computing device 200 described is part of one or more computing devices.

[0080] Now for reference Figure 2 A simplified block diagram of at least one embodiment of computing device 200 is shown. The illustrative computing device 200 depicts at least one embodiment of each of the computing devices, systems, servers, controllers, switches, gateways, engines, modules, and / or computing components described herein (e.g., for the sake of brevity, they may be interchangeably referred to as computing devices, servers, or modules). For example, various computing devices may be processes or threads running on one or more processors of one or more computing devices 200, which may execute computer program instructions and interact with other system modules to perform the various functions described herein. Unless otherwise expressly limited, the functions described with respect to multiple computing devices may be integrated into a single computing device, or the various functions described with respect to a single computing device may be distributed across several computing devices. Furthermore, regarding the computing systems described herein (such as… Figure 1 The contact center system 100 may include various servers and their computer equipment located on local computing devices 200 (e.g., on-site at the same physical location as the contact center agents), on remote computing devices 200 (e.g., off-site or in a cloud-based or cloud computing environment, such as in a remote data center connected via a network), or some combination thereof. In some implementations, functionality provided by servers on off-site computing devices may be accessed and provided via a Virtual Private Network (VPN) as if such servers were on-site, or functionality may be provided using Software as a Service (SaaS) (accessible via the Internet using various protocols), such as exchanging data via Extensible Markup Language (XML) and JSON, and / or the functionality may be accessed / utilized in other ways.

[0081] In some implementations, the computing device 200 may be embodied as a server, desktop computer, laptop computer, tablet computer, notebook computer, netbook, or ultrabook. TM Cellular phones, mobile computing devices, smartphones, wearable computing devices, personal digital assistants, Internet of Things (IoT) devices, processing systems, wireless access points, routers, gateways and / or any other computing, processing and / or communication devices capable of performing the functions described herein.

[0082] The computing device 200 includes a processing device 202 that executes algorithms and / or processes data according to operating logic 208, an input / output device 204 that enables communication between the computing device 200 and one or more external devices 210, and a memory 206 that stores data, for example, received from the external devices 210 via the input / output device 204.

[0083] Input / output device 204 allows computing device 200 to communicate with external device 210. For example, input / output device 204 may include a transceiver, network adapter, network interface card, interface, one or more communication ports (e.g., USB port, serial port, parallel port, analog port, digital port, VGA, DVI, HDMI, FireWire, CAT5, or any other type of communication port or interface) and / or other communication circuitry. Depending on the specific computing device 200, the communication circuitry of computing device 200 may be configured to use any one or more communication technologies (e.g., wireless or wired communication) and associated protocols (e.g., Ethernet, etc.). This communication is achieved using technologies such as WiMAX. Input / output device 204 may include hardware, software, and / or firmware suitable for performing the technologies described herein.

[0084] External device 210 can be any type of device that allows data to be input or output from computing device 200. For example, in various embodiments, external device 210 can be embodied as one or more and / or a portion of the devices / systems described herein. Furthermore, in some embodiments, external device 210 can be embodied as another computing device, switch, diagnostic tool, controller, printer, monitor, alarm, peripheral device (e.g., keyboard, mouse, touchscreen display, etc.) and / or any other computing device, processing device, and / or communication device capable of performing the functions described herein. Additionally, in some embodiments, it should be understood that external device 210 can be integrated into computing device 200.

[0085] Processing device 202 may be embodied as any type of processor capable of performing the functions described herein. In particular, processing device 202 may be embodied as one or more single-core or multi-core processors, microcontrollers, or other processors or processing / control circuitry. For example, in some embodiments, processing device 202 may include or be embodied as an arithmetic logic unit (ALU), a central processing unit (CPU), a digital signal processor (DSP), a graphics processing unit (GPU), a field-programmable gate array (FPGA), an application-specific integrated circuit (ASIC), and / or another suitable processor. Processing device 202 may be of a programmable type, a dedicated hardwired state machine, or a combination thereof. In various embodiments, processing device 202 having multiple processing units may utilize distributed, pipelined, and / or parallel processing. Furthermore, processing device 202 may be dedicated solely to the execution of the operations described herein, or may be utilized in one or more additional applications. In exemplary embodiments, processing device 202 is programmable and executes algorithms and / or processes data according to operating logic 208, as defined by programming instructions (such as software or firmware) stored in memory 206. Alternatively or additionally, the operating logic 208 for the processing device 202 may be at least partially defined by hard-wired logic or other hardware. Furthermore, the processing device 202 may include one or more components of any type suitable for processing signals received from the input / output device 204 or from other components or devices and providing a desired output signal. Such components may include digital circuitry, analog circuitry, or combinations thereof.

[0086] Memory 206 may be one or more types of non-transitory computer-readable media, such as solid-state memory, electromagnetic memory, optical memory, or combinations thereof. Furthermore, memory 206 may be volatile and / or non-volatile, and in some embodiments, some or all of the memory in memory 206 may be portable types, such as disks, magnetic tapes, memory sticks, cassette tapes, and / or other suitable portable storage devices. In operation, memory 206 may store various data and software used during the operation of computing device 200, such as operating systems, applications, programs, libraries, and drivers. It should be understood that, in addition to or instead of storing programming instructions defining operating logic 208, memory 206 may store data manipulated by the operating logic 208 of processing device 202, such as data representing signals received from and / or transmitted to input / output device 204. Figure 2 As shown, depending on the specific implementation, memory 206 may be included together with and / or coupled to processing device 202. For example, in some implementations, processing device 202, memory 206, and / or other components of computing device 200 may form part of a system-on-a-chip (SoC) and be incorporated onto a single integrated circuit chip.

[0087] In some implementations, various components of computing device 200 (e.g., processing device 202 and memory 206) may be communicatively coupled via an input / output subsystem, which may be embodied as circuitry and / or components to facilitate input / output operations with the processing device 202, memory 206, and other components of computing device 200. For example, the input / output subsystem may be embodied as or otherwise include a memory controller hub, an input / output control hub, firmware devices, communication links (i.e., point-to-point links, bus links, wires, cables, light guides, printed circuit board traces, etc.) and / or other components and subsystems to facilitate input / output operations.

[0088] In other embodiments, computing device 200 may include other or additional components, such as those common in typical computing devices (e.g., various input / output devices and / or other components). It should also be understood that one or more of the components of computing device 200 described herein may be distributed across multiple computing devices. In other words, the techniques described herein can be employed by computing systems that include one or more computing devices. Furthermore, although in Figure 2 The illustration illustratively depicts only a single processing device 202, I / O device 204, and memory 206; however, it should be understood that in other embodiments, a particular computing device 200 may include multiple processing devices 202, I / O devices 204, and / or memory 206. Furthermore, in some embodiments, more than one external device 210 may communicate with the computing device 200.

[0089] Computing device 200 can be one of a plurality of devices connected to or via a network to other systems / sources. A network can be embodied as any one or more types of communication networks capable of facilitating communication between various devices communicatively connected via a network. Therefore, a network can include one or more networks, routers, switches, access points, hubs, computers, client devices, endpoints, nodes, and / or other intermediate network devices. For example, a network can be embodied as or otherwise include one or more cellular networks, telephone networks, local area networks or wide area networks, publicly available global networks (e.g., the Internet), ad hoc networks, short-range communication links, or combinations thereof. In some embodiments, a network can include circuit-switched voice or data networks, packet-switched voice or data networks, and / or any other network capable of carrying voice and / or data. In particular, in some embodiments, a network can include Internet Protocol (IP) based and / or Asynchronous Transfer Mode (ATM) based networks. In some embodiments, a network can handle voice traffic (e.g., via Voice over IP (VoIP) networks), web traffic, and / or other network traffic depending on the specific implementation of the systems communicating with each other and / or other devices. In various implementations, the network may include analog or digital wired and wireless networks (e.g., IEEE 802.11 networks, Public Switched Telephone Network (PSTN), Integrated Services Digital Network (ISDN), and Digital Subscriber Line (xDSL)), third-generation (3G) mobile telecommunications networks, fourth-generation (4G) mobile telecommunications networks, fifth-generation (5G) mobile telecommunications networks, wired Ethernet networks, private networks (e.g., intranets), radio, television, cable, satellite, and / or any other delivery or tunneling mechanism for carrying data, or any suitable combination of such networks. It should be understood that various devices / systems may depend on the source and / or destination devices communicating with each other via different networks.

[0090] It should be understood that computing device 200 can communicate with other computing devices 200 via any type of gateway or tunneling protocol (such as Secure Sockets Layer or Transport Layer Security). The network interface may include a built-in network adapter (such as a network interface card) suitable for connecting computing devices to any type of network capable of performing the operations described herein. Furthermore, the network environment can be a virtual network environment in which various network components are virtualized. For example, various machines can be virtual machines implemented as software-based computers running on physical machines. Virtual machines may share the same operating system, or in other embodiments, different operating systems may run on each virtual machine instance. For example, a "hypervisor" type of virtualization is used, where multiple virtual machines run on the same host physical machine, each acting as if it had its own dedicated box. In other embodiments, other types of virtualization may be employed, such as, for example, networking (e.g., via software-defined networking) or functions (e.g., via network function virtualization).

[0091] Therefore, one or more of the computing devices 200 described herein may be embodied as or form part of one or more cloud-based systems. In a cloud-based implementation, the cloud-based system may be embodied as a server-fuzzy computing solution that, for example, executes multiple instructions on demand, includes logic that executes instructions only when prompted by a specific activity / triggering event, and does not consume computing resources when not in use. That is, the system may be embodied as a virtual computing environment (e.g., a distributed network of devices) residing “on” the computing system, where various virtual functions (e.g., lambda functions, Azure functions, Google Cloud functions, and / or other suitable virtual functions) may be executed corresponding to functions of the system described herein. For example, when an event occurs (e.g., data is transferred to the system for processing), communication with the virtual computing environment may occur (e.g., via a request to the virtual computing environment’s API), whereby the API may route the request to the correct virtual function (e.g., a specific server-fuzzy computing resource) based on a set of rules. Thus, when a user makes a request for data transfer (e.g., via the appropriate user interface of the system), the appropriate virtual function may be executed to perform an action before an instance of the virtual function is eliminated.

[0092] Now for reference Figure 3In use, a computing system (e.g., contact center system 100, one or more computing devices 200, and / or other computing devices described herein) may execute method 300 for filtering a trie data structure by specific events. It should be understood that, unless otherwise stated, specific boxes of method 300 are illustrated by way of example, and such boxes may be combined or divided, added or removed, and / or reordered, wholly or partially, depending on a particular implementation.

[0093] The exemplary method 300 begins at box 302, where the computing system receives a trie for the entire dataset of the organization. For example, as described above, the exemplary technique may involve creating a single “large picture” trie that includes all robotic processes for the organization (e.g., including relative attributes and / or other metadata). For simplicity and conciseness, this trie may be referred to as the “mother trie” or “large picture trie.” This mother trie can be received by the computing system or otherwise accessed (e.g., for filtering and querying). Figure 6 An example trie in state 600 is illustrated, where the trie has been organized as a "large picture" parent trie (e.g., storing the state of the trie). In other implementations, it should be understood that the parent trie may include multiple robotic processes of an organization, but not necessarily all robotic processes. For example, a particular organization may be interested in partitioning it for the analysis and / or visualization of robotic processes and events.

[0094] As described above, Figure 6 The example "Large Picture" parent trie is shown in its initial state 600 after its creation. This exemplary trie is a simple example created for an organization comprising three basic robotic processes. For simplicity and clarity, possible sequences of events or "routes" are described using "words". The first robotic process includes the processes BALL (representing a sequence of events B, A, L, and L), CAR (representing a sequence of events C, A, and R), and A (representing a sequence containing only event A). The second robotic process includes the processes BAT (representing a sequence of events B, A, and T) and CART (representing a sequence of events C, A, R, and T). The third robotic process includes the processes CAT (representing a sequence of events C, A, and T), A (representing a sequence containing only event A), XP (representing a sequence of events X and P), and BLL (representing a sequence of events B, L, and L). Figure 11 The same trie is also illustrated in state 1100, which further illustrates the robot process identifier associated with each of the robot processes corresponding to the nearest corresponding event.

[0095] In box 304, the computing system receives a selection of a start event for the trie, which is used to filter the trie. For example, as described above, the administrator can visualize the trie in a graphical user interface and is provided with user input indicating whether they want to filter the trie to include only events containing a specific start event. Figures 6 to 7 In an exemplary implementation, the user has selected event "a" as the start event. In box 306, the system identifies each occurrence of the selected start event in the trie. For example, as... Figure 6 As depicted in state 602, the computational system has identified each occurrence of event "a" in the parent trie, which includes each event in the dataset described above. In some embodiments, in block 308, the computational system may perform a depth-first search to identify each occurrence of a selected start event in the trie. In other embodiments, the computational system may utilize another search algorithm. In some embodiments, it should be understood that upon finding a specific start event (e.g., Figure 6 Each time event “a” in state 602 occurs, the computing system can also identify each sub-dictionary that includes the selected event as the start event (e.g., in...). Figure 6 (The three sub-tribes are highlighted in state 602).

[0096] If the computational system determines in box 310 that one or more occurrences of the selected event have been identified in the trie, then method 300 proceeds to box 312, where the computational system extracts the sub-trie associated with each identified start event. For example, as Figure 7 As depicted in state 700, the computing system has extracted three sub-tribes from the trie in state 602, each of which begins with the selected event "a". In box 314, the computing system merges the extracted sub-tribes to generate an updated trie. For example, as... Figure 7 As depicted in state 702, the computing system has merged the three exemplary sub-tribes of state 700 into a single trie. It should be understood that the resulting updated trie satisfies the properties of a trie, and therefore, for example, there are no duplicate runs. In box 316, the computing system updates the event attributes of the merged and updated trie. For example, if events in the merged trie previously existed in multiple sub-tribes, counts of events from the sub-tribes can be aggregated, and / or other attributes can be aggregated or otherwise combined.

[0097] In box 318, the computing system provides the updated trie to the administrative user. For example, in some implementations, the updated trie may be returned to the requesting administrative user device for display on a graphical user interface for visualization by the administrative user.

[0098] Although blocks 302 to 318 are described in a relatively sequential manner, it should be understood that in some implementations, the individual blocks of method 300 may be executed in parallel.

[0099] Now for reference Figure 4 In use, a computing system (e.g., contact center system 100, one or more computing devices 200, and / or other computing devices described herein) may execute method 400 for filtering a trie data structure by event attributes. It should be understood that, unless otherwise stated, specific boxes of method 400 are illustrated by way of example, and such boxes may be combined or divided, added or removed, and / or reordered, wholly or partially, depending on a particular implementation.

[0100] The exemplary method 400 begins at box 402, in which the computing system receives a trie for the entire dataset of the organization. For example, as described above, the exemplary technique may involve creating a single “large picture” trie (e.g., a “mother trie”) that includes all robotic processes in the organization’s robotic processes (e.g., including relative attributes and / or other metadata). Figure 8 An example trie in state 800 is illustrated, where the trie has been organized as a "large picture" parent trie (e.g., storing the state of the trie). This exemplary trie is a simple example created for an organization comprising three basic robotic processes as described above. However, in the exemplary implementation, each event in the events includes an "animal" attribute, which includes possible values ​​for at least "dog," "cat," and / or "hen." The attribute values ​​associated with each event are... Figures 8 to 10 The middle element is represented as adjacent to each corresponding event.

[0101] In box 404, the computing system receives selections of event attributes of the trie through which it filters the trie, or more specifically, selections of event attribute values ​​of the trie through which it filters the trie. For example, as described above, an administrative user can visualize the trie in a graphical user interface and is provided with user input indicating whether the user wants to filter the trie to include only events containing a specific selected event attribute value. For example, in Figures 8 to 10 In the exemplary implementation, the user has selected the "Animal" attribute, and more specifically, the attribute value "Dog". In box 406, the calculation system identifier excludes each event that does not include the selected event attribute, or more specifically, excludes the selected event attribute value from the trie. For example, as... Figure 8As depicted in state 802, the computing system has identified each event / node that does not include the attribute value "dog". That is, one event is identified as including the attribute value "cat", one event is identified as including the attribute values ​​["cat", "hen"], and another event is identified as including the attribute value "hen". In some implementations, the computing system may perform a depth-first search to identify each event in the trie that does not include the selected event attribute value. In other implementations, the computing system may utilize another search algorithm.

[0102] If the calculation system determines in box 410 that one or more events that do not include the selected event attribute value have been identified, method 400 proceeds to box 412, where the calculation system removes the identified event from the trie. In doing so, in box 414, the calculation system may update the parent-child relationships affected by the deletion of the identified event. For example, the previous parent event / node of the deleted event may be temporarily connected (e.g., via pointers) to the previous child event / node of the deleted event. Figure 9 As depicted in state 900, the computing system has deleted each identified event and created temporary connection 902 to update the parent / child relationships affected by the deleted events.

[0103] In box 416, the computation system identifies each sub-tribe in the sub-tribe of the parent event affected by the deletion event. For example, in some implementations, each previous parent event / node of the deleted event may be identified as the oldest parent node or root node of the sub-tribe. For example, as... Figure 9 As depicted in state 904, the computing system has identified sub-tribes 906 based on the deleted events. In box 418, the computing system merges the identified sub-tribes (e.g., merges events within each corresponding sub-tribe) to generate an updated trie. For example, as... Figure 10 As described in state 1000, the computing system has been merged. Figure 9 Two exemplary sub-tribes 906 are used to create a single trie. As described above, it should be understood that the resulting updated trie satisfies the properties of a trie, and therefore, for example, there are no duplicate runs. In box 420, the computation system updates the event properties of the merged and updated trie. For example, if events in the merged trie previously existed in multiple sub-tribes, counts of events from the sub-tribes can be aggregated, and / or other properties can be aggregated or otherwise combined.

[0104] In box 422, the computing system provides the updated trie to the administrative user. For example, in some implementations, the updated trie may be returned to the requesting administrative user device for display on a graphical user interface for visualization by the administrative user.

[0105] Although blocks 402 to 422 are described in a relatively sequential manner, it should be understood that in some implementations, the blocks of method 400 may be executed in parallel.

[0106] Now for reference Figure 5 In use, a computing system (e.g., contact center system 100, one or more computing devices 200, and / or other computing devices described herein) may execute method 500 for filtering a trie data structure via a robotic process. It should be understood that, unless otherwise stated, specific boxes of method 500 are illustrated by way of example, and such boxes may be combined or divided, added or removed, and / or reordered, wholly or partially, depending on a particular implementation.

[0107] The exemplary method 500 begins at box 502, in which the computing system receives a trie for the entire dataset of the organization. For example, as described above, the exemplary technique may involve creating a single “large picture” trie (e.g., a “mother” trie) that includes all robotic processes in the organization’s robotic processes (e.g., including relative attributes and / or other metadata). Figure 11 An example trie in state 1100 is shown, in which the trie has been organized as a "large picture" parent trie (e.g., the state storing the trie). Figure 11 As shown, state 1100 also exemplifies the robot process identifier (the process identifiers of robot process 1, robot process 2, and robot process 3) associated with each of the adjacent corresponding events.

[0108] In box 504, the computing system receives a selection of robot processes within the trie, which is then used to filter the trie. For example, as described above, the management user can visualize the trie in a graphical user interface and is provided with user input indicating whether they want to filter the trie to include only events associated with a specific robot process. Figures 11 to 12 In an exemplary implementation, the user has selected a filter trie to include only events from robot process 2. In box 506, the calculation system identifies each event not associated with the selected robot process (e.g., based on an associated robot process identifier stored as an attribute associated with the event). For example, as... Figure 11As depicted in state 1102, the computing system has identified each event / node that is not associated with robot process 2. For illustrative purposes, those events that are associated only with robot process 1 and / or robot process 3 (and therefore not robot process 2) have been highlighted. In some embodiments, the computing system may perform a depth-first search to identify each event in the trie that is not associated with the selected robot process. In other embodiments, the computing system may utilize another search algorithm.

[0109] If the computing system determines in block 510 that it has identified one or more events that are not associated with the selected robotic process, method 500 proceeds to block 512, where the computing system removes the identified events from the trie. It should be understood that if a particular event / node is not associated with a particular robotic process, then for inherent reasons, none of the child nodes of that particular event / node will be associated with that particular robotic process. Therefore, in some embodiments, during a depth-first search, the computing system may identify events / nodes that are not associated with the selected process and remove the entire sub-trie of that node without further searching that sub-trie, making the search more efficient. Figure 12 As depicted in state 1200, the computing system has deleted each of the identified events to generate an updated trie. In box 514, the computing system updates the event attributes of the updated trie. It should be understood that deleting an unselected robot process may cause the frequency count to change for the event, and the attributes may also be updated as described above. For example, the event / node attributes in state 1200 reflect the counts and / or other attributes before the deletion of the identified event, while the event / node attributes in state 1202 reflect the updated counts and / or other attributes after the deletion of the identified event. Additionally, it should be understood that robot process 2 is the only robot process identified as associated with the remaining events.

[0110] In box 516, the computing system provides the updated trie to the administrative user. For example, in some implementations, the updated trie may be returned to the requesting administrative user device for display on a graphical user interface for visualization by the administrative user.

[0111] Although blocks 502 to 516 are described in a relatively sequential manner, it should be understood that in some implementations, the individual blocks of method 500 may be executed in parallel.

[0112] To support the visualization of the generated trie data structure, a computing system (e.g., contact center system 100, one or more computing devices 200, and / or other computing devices described herein) may perform operations to break down the processing of data frames (e.g., data structures with rows and columns) of events associated with robotic processes. In doing so, the computing system may partition the data frames into multiple partitions for manipulation by individual execution units (e.g., processing device 202) to produce corresponding trie data structures. The computing system may selectively merge trie data structures (such as trie data structures associated with the same organization) to produce trie data structures indicating combinations of events associated with robotic processes related to that organization. It should be understood that these operations enable more efficient use of the available processing capacity in the computing system, resulting in faster generation and manipulation of trie data structures. Furthermore, the computing system may perform operations to accurately track the data associated with nodes of the trie data structure represented in the visualization (e.g., in the user interface) when manipulating the visualization (e.g., when a user selects a portion of the trie data structure for drilling down the view).

[0113] Implementations of Contact Center System 100 implement path discovery, a trip management feature that provides a aggregated view of the most frequent trips of customers impacting bot activity (i.e., whether a customer escalates from an interaction with an automated agent (bot) to a human agent). Such escalations can indicate a lack of capability of the automated agent to address customer needs and may significantly impact the customer experience. Path discovery can be leveraged in other domains related to trip management, which may involve different source datasets and / or the application of different algorithms or data structures. Therefore, in exemplary implementations, flexibility is built into application programming interface (API) contracts associated with the domain. API contracts can be embodied as rules and expected technical specifications defining how the API is used, including details such as endpoints, data formats, authentication methods, and the structure of requests and responses between system components utilizing the API. In at least some implementations, the path discovery operation requires no configuration and can be executed in a periodic (e.g., nightly) batch process to produce results for one or more organizations associated with Contact Center System 100. Therefore, in at least some implementations, Contact Center System 100 provides read-only endpoints as the primary API resource. In at least some implementations, the main API resource provides path result sets and filtering capabilities to drill down to specific subsets of paths, such as drilling down from paths of all processes across an organization to a path of a specific process, according to the operations described above.

[0114] It should be understood from the description that a single path represents an aggregated sequence of customer trip events, while a set of paths represents a collection of aggregated customer trip event sequences. Furthermore, in the exemplary implementation, information about the paths utilized by the contact center system 100 includes a count for each distinct branch path. That is, the count for a given distinct branch path represents the number of times a customer follows that particular path. When performing a path discovery operation, the contact center system 100 determines paths from a given dataset. Additionally, as used herein, a path domain represents a high-level container for grouping path discovery use cases. Within a given domain, the data structures and algorithms used are consistent. In the context of the contact center system 100, a path category represents a set of paths corresponding to a specific use case or insight within a given path domain. Structurally, a path domain may contain multiple path categories. Path direction refers to the direction of the path. Paths are typically unidirectional, where direction refers to whether paths begin at a specific event and diverge outwards, or whether they converge at a specific ending event. In the context of the contact center system 100, a path type specifies the data structure used to represent the corresponding path.

[0115] It should be understood that a trie data structure (also referred to as a "trie" in this paper) is represented as a tree data structure that aggregates the occurrences of a particular unique sequence of nodes. Furthermore, the trie data structure (which may also be called a number tree or prefix tree in computer science) is used to locate a specific key within a set. Traditionally, tries are used in autocomplete use cases to predict the most likely word by frequency based on a given sequence of input characters. That is, in such use cases, each node can represent a character in a word. Returning to the structure of a reference trie, keys can be represented as strings, where the links between nodes are not defined by the entire key, but by the individual characters. To access a key (e.g., restore the corresponding value, change the value, or remove the value), the trie is traversed depth-first, following the links between nodes representing each character in the key. Unlike a binary search tree, nodes in a trie do not store the associated keys of those nodes. Instead, the location of a node in the trie defines the key associated with that node. Defining the keys of nodes based on their location in the trie ensures that the value of each key is distributed across the trie data structure and implies that every node must have an associated value. All child nodes of a node share a common prefix of the string associated with its parent node, and the root is associated with an empty string (i.e., the value of the root is an empty string). By employing a radix tree, the task of storing data that can be accessed based on a prefix can be performed in a memory-efficient manner. A radix tree is a tree in which each node that is a unique child node is merged with its parent node, such that the number of child nodes of each internal node is at most the radix of the radix tree. Although tries can be typed from strings, they do not need to be. The same algorithm can be applied to sorted lists of any basic type, such as permutations of numbers or shapes. In particular, bitwise tries are typed bit by bit into a fixed-length block of binary data (such as integers or memory addresses). The key lookup complexity of a trie remains proportional to the key size. Specialized trie implementations (such as compressed tries) are used to handle the relatively large space requirements of tries in simple implementations.

[0116] In the context of path discovery for trip management use cases, a trie can represent a set of trip event sequences for each path. Furthermore, in at least some embodiments, the trie can be constructed based on a set of six node types. Each type of node represents a significant event on a customer's trip and has corresponding unique characteristics. The root node is the starting point of the tree and is the only node without a parent node or parent node identifier. In an exemplary embodiment, a result node represents a process outcome within a robotic process. Result nodes can be identified using `flowOutcomeId` and `flowOutcomeValue`. `flowOutcomeValue` indicates whether the outcome represented by the result node was achieved (e.g., success or failure). In an exemplary embodiment, a milestone node represents a flowMilestone within a robotic process. Milestone nodes can be identified using `flowMilestoneId` and associated with `flowOutcomeId`. Error nodes can be represented as leaf nodes (i.e., nodes with no children) and represent a trip that ends with a robotic process error. Transfer nodes can also be represented as leaf nodes (i.e., nodes with no children) and represent the end of a customer trip where the customer is finally transferred from the robot (automated agent) to a human agent queue. An upgrade node can also be represented as a leaf node and signifies one or more processes that end with a customer (such as by stating "Can I speak to an agent?") explicitly requesting (e.g., an upgrade) to be transferred to a human agent queue. An exit node can be represented as a leaf node signifying the normal termination of process execution.

[0117] Contact centers find customer journey data—related to how customers interact with contact center resources—particularly useful for improving service and efficiency. Pathway visualizations generated from this data are important analytical tools to help managers manage resources and improve customer experience, as these visualizations indicate the most frequently encountered sequences of events customers encounter when navigating the contact center (e.g., when interacting with multiple automated agents). Some pathfinder applications (such as those for generating pathway visualizations) leverage trie data structures for efficient path calculation and related analysis. For example, some applications utilize libraries (such as the pygtrie library, suitable for use with the Python programming language) to create and update trie data structures.

[0118] Within a given contact center, path input data can be unevenly distributed across different organizations utilizing the contact center. Batch jobs can be grouped by organization identifiers, and organization-specific data across all organizations can be merged into individual actuators (e.g., execution units). For relatively large organizations, merging can result in data frames becoming too large to be reliably read into memory, and if the size of the data frames exceeds the available memory capacity, it can lead to failures. As described herein, in at least some embodiments, the contact center system 100 can perform operations to artificially increase partition space under a given organization partition using additional sub-partitions, and in doing so, address the reliability issues described above.

[0119] Contact center system 100 can partition event data frames using organization identifiers and sequence identifiers. Preserving the event sequence is a crucial factor in implementing the corresponding trie data structure, as the sequence information indicates the path a customer takes in their interaction with the automated agents of contact center system 100. Repartitioning using organization identifiers and sequence identifiers allows events from the same sequence to be juxtaposed in the same partition, while also distributing organization-related data across multiple data partitions, and thus across multiple executors (e.g., execution units). This allows the processing load to be distributed more evenly than other possible scenarios. As used herein, data partitioning refers to splitting data into multiple partitions (e.g., sets). For example, in at least some embodiments, data is split into multiple Apache Spark partitions. Therefore, contact center system 100 can perform transformations on multiple partitions associated with the event data of an organization in parallel, allowing batch jobs to be completed more conveniently (e.g., faster) than other possible methods. In some embodiments, contact center system 100 can write the partitioned data to a file system (e.g., multiple subdirectories) for faster reading by downstream systems.

[0120] In an exemplary implementation, contact center system 100 computes a trie for each data partition. This produces a trie representing an aggregate count of subsets of all unique event sequences within the corresponding organization. Contact center system 100 then saves the trie to a storage location, such as a temporary S3 storage location, in an efficient intermediate format (e.g., Python pickle). Furthermore, after the trie has been created and persistently saved (e.g., stored), contact center system 100 can generate a data frame representing a unique organization identifier, which can be partitioned by the organization identifier. That is, contact center system 100 can partition the data frame to create a partition for each organization identifier. For each resulting partition, contact center system 100 can iterate through a series of identified organization sub-partitions and merge all corresponding tries for a given organization into a larger trie. Contact center system 100 can save the resulting merged trie in a defined output location (e.g., in an S3 location). Additionally, contact center system 100 can perform category (e.g., path category) filtering, such as to identify upgrades, transfers, or other events on the trie. Compared to the initial event processing that occurs during path computation, the merging operation described above, which can occur on a single executor (e.g., an execution unit), utilizes significantly less memory and has lower computational intensity. See below for reference. Figures 13 to 14 Provide a more detailed description of the process.

[0121] Now for reference Figure 13 In use, a computing system (e.g., contact center system 100, one or more computing devices 200, and / or other computing devices described herein) may execute method 1300 for partitioning data to efficiently process a trie data structure. It should be understood that, unless otherwise stated, specific boxes of method 1300 are illustrated by way of example, and such boxes may be combined or divided, added or removed, and / or reordered, wholly or partially, depending on a particular implementation.

[0122] The exemplary method 1300 begins at block 1302, in which the computing system splits a data frame (e.g., a data structure with rows and columns) by means of an organization identifier and a sequence identifier to produce multiple corresponding partitions. Furthermore, and as indicated in block 1304, in the exemplary embodiment, the computing system splits data frames representing events associated with customer interactions with automated agents in a contact center. As described above, and as indicated in block 1306, the computing system may assign each resulting partition to a separate execution unit (e.g., processing device 202) for parallel processing.

[0123] Continuing with method 1300, in block 1308, in an exemplary embodiment, the computing system generates a trie data structure for each partition generated in block 1302. In doing so, in block 1310, the computing system may generate trie data structures, each representing an aggregate count of a subset of all unique event sequences associated with a corresponding organization. Furthermore, the computing system may iterate through each partition, as indicated in block 1312. For each iteration, the computing system may generate event groups based on organization identifiers (e.g., each event group is associated with a shared organization identifier), as indicated in block 1314. Furthermore, for each group, in an exemplary embodiment, the computing system computes the path to the event sequences represented in that group. In doing so, the computing system generates a corresponding sub-trie data structure for the corresponding organization, as indicated in block 1316. Furthermore, in block 1318, the computing system stores each sub-trie data structure.

[0124] Continuing with method 1300, in box 1320, the computing system generates a combined organization trie data structure for each organization. In doing so, in box 1322, the computing system identifies all unique organization identifiers. Furthermore, the computing system repartitions the data frames based on the organization identifiers, as indicated in box 1324. That is, the computing system generates one partition for each organization identifier. In box 1326, for each organization, the computing system merges the sub-trie data structures associated with that organization. (See reference) Figure 15 An implementation scheme for a method 1500 for merging subtribe data structures is described.

[0125] exist Figure 14Continuing with method 1300 in box 1328, the computing system stores a combined organizational dictionary data structure for each organization. In doing so, the computing system may store the combined organizational dictionary data structure in a format associated with the API contract, as indicated in box 1330. That is, the computing system may store the dictionary data structure in a format defined by a technical specification that defines a set of rules and expectations for how the API is used, including details such as endpoints, data formats, authentication methods, and the structure of requests and responses between system components utilizing the API. Specifically, the API involves sending and receiving data related to the dictionary data structure, such as to support visualization of a given dictionary data structure in a user interface. Continuing with method 1300, the computing system may perform filtering on the combined organizational dictionary data structure for analysis, as indicated in box 1332. For example, and as indicated in box 1334, the computing system may perform filtering on the combined organizational dictionary data structure based on one or more path categories associated with the organization (e.g., a specific sequence of customer interactions with automated agents at customer contact center 100 operating on behalf of the organization). Although blocks 1302 to 1334 are described in a relatively sequential manner, it should be understood that in some implementations, the individual blocks of method 1300 may be executed in parallel.

[0126] Now for reference Figure 15 In use, a computing system (e.g., contact center system 100, one or more computing devices 200, and / or other computing devices described herein) may execute method 1500 for merging trie data structures into a combined trie data structure. It should be understood that, unless otherwise stated, specific boxes of method 1500 are illustrated by way of example, and such boxes may be combined or divided, added or removed, and / or reordered, wholly or partially, depending on a particular implementation.

[0127] The exemplary method 1500 begins at block 1502, in which the computing system initializes an empty base trie data structure. Furthermore, in block 1504, the computing system reads a sub-trie data structure from a storage device (e.g., an S3 storage device). For example, the sub-trie data structure could be the sub-trie data structure generated in block 1316 of method 1300. Continuing with method 1500, in block 1506, the computing system merges each sub-trie data structure from the base trie data structure initialized in block 1502. In doing so, in the exemplary embodiment, the computing system sorts the node paths of the sub-trie data structures based on their distance to the root, as indicated in block 1508. Furthermore, in the exemplary embodiment, the computing system sorts the node paths in ascending order (e.g., from minimum distance to maximum distance). For example, if the trie has node paths: ROOT, ROOT / A, ROOT / A / B, ROOT / A / C, ROOT / D, the computing system can sort the node paths based on their distance to the root as: ROOT, ROOT / A, ROOT / D, ROOT / A / B, ROOT / A / C.

[0128] As indicated in box 1510, for a node path already existing in the underlying trie data structure (e.g., a path from the root to a node), the computation system combines the child trie node with the underlying trie node. This combination involves merging and aggregating the process counts of the two nodes being combined. Furthermore, in the combination operation, the node identifier and parent identifier of the underlying trie data structure take precedence. That is, the newly combined node has the node identifier and parent identifier of the node in the underlying trie data structure, rather than the node identifier and parent identifier from the node in the child trie that was merged into the underlying trie data structure.

[0129] Conversely, for node paths not currently present in the underlying trie data structure, the computation system adds the corresponding sub-trie node as a new node to the underlying trie data structure, as indicated in box 1512. In doing so, in box 1514, the computation system updates the parent identifier of the added node to the node identifier of the parent node path of the newly added node in the underlying trie data structure. In an exemplary implementation, the parent node path will exist in the underlying trie data structure because, as described above, nodes are merged from the sub-tries in order of distance to the root. It should be understood that updating the parent identifier of the newly added node ensures consistency with the rest of the underlying sub-trie data structure. In an exemplary implementation, method 1500 may be performed as part of method 1300 described above, resulting in an organized trie data structure corresponding to the combinations described above with respect to boxes 1320, 1328, and 1332. Although boxes 1502 through 1514 are described in a relatively sequential manner, it should be understood that in some implementations, the various boxes of method 1500 may be executed in parallel.

[0130] As briefly stated above, at least some embodiments of the contact center system 100 can perform operations to ensure that the inflow and outflow counts at each node in the trie data structure are accurate. That is, the contact center system 100 can perform operations to ensure that the inflow and outflow counts at each node are equal in a visualization (e.g., a visual representation) of a set of paths associated with the trie data structure. In at least some embodiments, the user interface for providing such visualization can utilize a recursive loop function to group nodes with the same name, one node at a time, to produce a Sankey-like graph.

[0131] In at least some implementations, inaccurate edge counting (e.g., related to connections between nodes) may occur. At a given node, the count at the input edges may be calculated as the total of all output edges and all output edges of child nodes plus one. When a loop function is executed and nodes with the same name are merged, only the context of one node may be displayed in the user interface, rather than the context of all nodes merged into that node. Therefore, for a selected node for which a count is to be displayed, only the count for that single selected node may be displayed, rather than the total count of all nodes merged into that node. To remedy inaccurate counting information, the contact center system 100 may perform the method 1600 described below.

[0132] Now for reference Figure 16In use, a computing system (e.g., contact center system 100, one or more computing devices 200, and / or other computing devices described herein) may execute method 1600 for calculating the accurate edge count for nodes associated with a trie data structure. It should be understood that, unless otherwise stated, specific boxes of method 1600 are illustrated by way of example, and such boxes may be combined or divided, added or removed, and / or reordered, wholly or partially, depending on a particular implementation.

[0133] The exemplary method 1600 begins at box 1602, where the computing system uses a node graph (e.g., a data structure indicating relationships between nodes) to track merged nodes. Furthermore, in box 1604, the computing system calculates the edge count for selected nodes (e.g., in a user interface). In doing so, in box 1606, the computing system can query the node graph from box 1602 to identify a set of merged nodes merged into the selected nodes. Additionally, in box 1608, the computing system sums the individual counts associated with those merged nodes identified in box 1606. In box 1610, the computing system returns (e.g., to a process that provides visualization of the corresponding trie data structure, such as a combined organized trie data structure) the calculated edge count for the selected nodes.

[0134] The implementation of the contact center system 100 can also perform specialized operations to support drill-down views of a portion of a trie data structure. That is, the visualization allows a user to click (e.g., select) a specific node to obtain a drill-down view (e.g., a focused view) related to that node. In doing so, the contact center system 100 can show all paths leading to the selected node (e.g., an event). Furthermore, the contact center system 100 removes all paths not leading to the selected node and all nodes (e.g., events) that occurred after the selected node from the visualization. A problem related to this functionality is that when drilling down to a selected node, the aforementioned loop function can be used, with the corresponding subset of data, to recalculate the edge count for the node. However, since the loop function does not consider all nodes merged into the selected node, the contact center system 100 may calculate inaccurate count information for the selected node. (See reference...) Figure 17 As described, the contact center system 100 can execute method 1700 to update the count of edges in a drill-down view. To accurately calculate the count for the drill-down view, the contact center system 100 can utilize the node graph described above with reference to method 1600. Although blocks 1602 to 1610 are described in a relatively sequential manner, it should be understood that in some embodiments, the individual blocks of method 1600 can be executed in parallel.

[0135] Now for reference Figure 17In use, a computing system (e.g., contact center system 100, one or more computing devices 200, and / or other computing devices described herein) may execute method 1700 for calculating accurate count data for a drill-down view in a visualization associated with a trie data structure. It should be understood that, unless otherwise stated, specific boxes of method 1700 are illustrated by way of example, and such boxes may be combined or divided, added or removed, and / or reordered, wholly or partially, depending on a particular implementation.

[0136] The exemplary method 1700 begins at box 1702, where the calculation system identifies selected nodes for drilling down the view. Furthermore, in box 1704, the calculation system deletes the child nodes of the selected node. That is, the calculation system removes any data relating to the child nodes of the selected node from the visualization. Continuing with method 1700, in box 1706, the calculation system identifies the parent node (ancestor) of the selected node. In doing so, the calculation system stores the identified parent node (ancestor) in a set of parent nodes. Furthermore, in box 1710, the calculation system identifies the child nodes of the parent nodes from the set of parent nodes in box 1706. In box 1712, the calculation system subtracts the count of the identified child nodes from the count of the corresponding parent nodes. This provides an accurate representation of the subset of data relating to the drill-down view. Furthermore, in box 1714, the calculation system deletes the identified child nodes. That is, the calculation system removes any representation of the child nodes from the visualization. Additionally, in box 1716, the computational system removes (e.g., removes from visualization) any previously unidentified nodes that are irrelevant to the selected node (e.g., do not lead to the selected node). Although boxes 1702 to 1716 are described in a relatively serial manner, it should be understood that in some embodiments, the various boxes of method 1700 may be executed in parallel.

[0137] refer to Figure 18 and Figure 19 Before generating the drill-down view, the trie data structure 1800 in its first state includes nodes 1802, 1804, 1806, 1808, 1810, 1812, 1814, 1816, and 1818. In response to the user selecting a specific node (node ​​1810 in this example), the computing system performs calculations on... Figure 19The state of the illustrated trie data structure 1800 is updated to support drill-down views. As indicated, only nodes 1802, 1806, and 1810 along the path to the selected node 1810 are represented with updated states, because each of nodes 1804, 1808, 1812, 1814, 1816, and 1818 falls within one of the nodes in a set to be removed from the visualization according to method 1700. That is, node 1816 is removed because it is a child node of the selected node 1810. Furthermore, nodes 1804, 1808, 1812, and 1814 are removed because they are children of the parent nodes in that set and are not along the path to the selected node 1810.

Claims

1. A method for providing efficient processing of trie data structures, the method comprising: The computing system splits a set of data frames that indicate a set of events associated with customer interactions with automated agents in the contact center, based on organizational and sequence identifiers, to produce a set of multiple partitions; The computing system generates a set of multiple trie data structures, including generating a trie data structure for each partition, wherein each trie data structure represents an aggregate count of a corresponding subset of an event sequence associated with the corresponding organization; The computing system merges multiple trie data structures from the set of trie data structures to produce a combined organized trie data structure; as well as The computing system stores the combined organizational trie data structure to enable the generation of a visualization of the combined organizational trie data structure.

2. The method according to claim 1, further comprising: The computing system assigns each partition to a separate execution unit for concurrent processing.

3. The method according to claim 1, further comprising: The computing system performs analysis on the combined organizational trie data structure, including filtering the combined organizational trie data structure according to path categories, which indicate the type of event that occurs during the customer interaction with the automated agent in the contact center.

4. The method according to claim 1, wherein merging the plurality of trie data structures includes: A unique set of organization identifiers that identify the plurality of trie data structures; The data frame is re-partitioned based on the organization identifier; as well as Merge the trie data structure associated with the shared organization identifier.

5. The method according to claim 1, wherein merging the plurality of trie data structures comprises: Initialize an empty basic trie data structure; Read multiple trie data structures of the group from the storage device as sub-trie data structures; as well as Each sub-tribe data structure is merged into the base trie data structure.

6. The method of claim 5, wherein merging each sub-tribe data structure into the base trie data structure comprises: For each sub-tribe data structure: Sort the node paths in ascending order based on their distance to the root; as well as In response to determining that a node path exists in the basic dictionary tree data structure, the sub-dictionary node is combined with the basic dictionary tree node; or in response to determining that the node path does not exist in the basic dictionary tree data structure, the sub-dictionary node is added as a new node to the basic dictionary tree data structure.

7. The method according to claim 1, further comprising: The computing system uses a node graph to track the merged nodes of the combined organized trie data structure; as well as The computing system calculates the edge count for selected nodes represented in the node graph, including querying the node graph to identify the set of merged nodes and summing the individual counts associated with the merged nodes.

8. The method according to claim 1, further comprising: The computing system identifies selected nodes of the combined organized trie data structure for the drill-down view in the visualization; The computing system identifies a set of child nodes of one or more child nodes of the selected node; as well as The computing system removes the set of child nodes from the visualization.

9. The method according to claim 8, further comprising: A set of parent nodes that identifies one or more parent nodes of the selected node; A set of one or more child nodes that identify the parent node set; Subtract the count of the identified child node from the count of the corresponding parent node in the parent node set to provide an accurate representation of the count data related to the drill-down view; as well as Delete the identified child node of the parent node set in the drill-down view.

10. A system for providing efficient processing of trie data structures, the system comprising: At least one processor; and At least one memory, the at least one memory including a plurality of instructions stored thereon, the plurality of instructions causing the system to: in response to execution by the at least one processor Data frames that indicate a set of events associated with customer interactions with automated agents in the contact center are split based on organization identifiers and sequence identifiers to produce a set of multiple partitions; Generate a set of multiple trie data structures, including generating a trie data structure for each partition, wherein each trie data structure represents an aggregate count of a corresponding subset of an event sequence associated with the corresponding organization; Merge multiple trie data structures in the aforementioned set of trie data structures. To generate a combined organizational trie data structure; as well as Store the combined organizational trie data structure to enable the generation of a visualization of the combined organizational trie data structure.

11. The system of claim 10, wherein the plurality of instructions further cause the system to assign each partition to a separate execution unit for concurrent processing.

12. The system of claim 10, wherein the plurality of instructions further cause the system to: perform analysis on the combined organizational trie data structure, including filtering the combined organizational trie data structure according to path categories, the path categories indicating the type of event occurring during the customer interaction with the automated agent of the contact center.

13. The system of claim 10, wherein merging the plurality of trie data structures comprises: A unique set of organization identifiers that identify the plurality of trie data structures; The data frame is re-partitioned based on the organization identifier; as well as Merge the trie data structure associated with the shared organization identifier.

14. The system of claim 10, wherein merging the plurality of trie data structures comprises: Initialize an empty basic trie data structure; Read multiple trie data structures of the group from the storage device as sub-trie data structures; as well as Each sub-tribe data structure is merged into the base trie data structure.

15. The system of claim 14, wherein merging each sub-tribe data structure into the base trie data structure comprises: For each sub-tribe data structure: Sort the node paths in ascending order based on their distance to the root; as well as In response to determining that a node path exists in the basic dictionary tree data structure, the sub-dictionary node is combined with the basic dictionary tree node; or in response to determining that the node path does not exist in the basic dictionary tree data structure, the sub-dictionary node is added as a new node to the basic dictionary tree data structure.

16. The system of claim 10, wherein the plurality of instructions further cause the system to: A node graph is used to track the merge nodes of the combined organizational trie data structure; and Calculating the edge count for a selected node represented in the node graph includes querying the node graph to identify the set of merged nodes and summing the individual counts associated with the merged nodes.

17. The system of claim 10, wherein the plurality of instructions further cause the system to: Selected nodes in the drill-down view of the visualization identify the combined trie data structure; A set of child nodes that identifies one or more child nodes of the selected node; as well as Delete the set of child nodes from the visualization.

18. The system of claim 10, wherein the plurality of instructions further cause the system to: A set of parent nodes that identifies one or more parent nodes of the selected node; A set of one or more child nodes that identify the parent node set; Subtract the count of the identified child node from the count of the corresponding parent node in the parent node set to provide an accurate representation of the count data related to the drill-down view; and Delete the identified child node of the parent node set in the drill-down view.

19. One or more non-transitory machine-readable storage media, the non-transitory machine-readable storage media comprising a plurality of instructions stored thereon, the plurality of instructions being responsive to execution by a computing system to cause the computing system to: Data frames that indicate a set of events associated with customer interactions with automated agents in the contact center are split based on organization identifiers and sequence identifiers to produce a set of multiple partitions; Generate a set of multiple trie data structures, including generating a trie data structure for each partition, wherein each trie data structure represents an aggregate count of a corresponding subset of an event sequence associated with the corresponding organization; Merge multiple trie data structures from the set of trie data structures to produce a combined organized trie data structure; as well as Store the combined organizational trie data structure to enable the generation of a visualization of the combined organizational trie data structure.

20. The one or more non-transitory machine-readable storage media of claim 19, wherein the plurality of instructions further cause the computing system to: assign each partition to a separate execution unit for concurrent processing.

Citation Information

Patent Citations

  • Efficient processing of TRIE data structures to support customer journey visualizations

    US20250258802A1