System and method for maintaining and updating caller status in communication center

By introducing script executors into the contact center system, dynamically executing the instructions required before pairing, the lack of capacity and throughput of traditional systems when handling concurrent agents and high-speed incoming contacts is solved, and efficient resource management and system are achieved Performance improvement.

CN119404495APending Publication Date: 2025-02-07AFINITI AI LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202380047661.7
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2022-06-22
Filing Date
2023-06-21
Publication Date
2025-02-07

AI Technical Summary

Technical Problem

Traditional contact center systems lack capacity and throughput when handling concurrent agents and high-speed incoming contacts, resulting in the need for additional infrastructure such as load balancers.

Method used

Optimize resource management to improve system capacity and throughput by using script executors in the contact center system.

Benefits of technology

This enables increased capacity and throughput of contact center systems without the need for additional infrastructure, able to handle 100 or more calls per second, and supports more than 100,000 concurrent callers and agents.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119404495A_ABST
    Figure CN119404495A_ABST
Patent Text Reader

Abstract

A method in a call center system is provided. The method includes obtaining a script including a plurality of instructions for execution before a contact is paired with a seat at a contact center system and obtaining a first plurality of contacts at a contact center. The method further includes, for each contact, determining whether the contact has reached a predetermined threshold associated with any instruction in the obtained script; and if any one of the predetermined thresholds is reached, executing an associated instruction from the script for contacting.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] Embodiments related to systems and methods for maintaining and updating caller status in a communication system are disclosed. Background Art

[0002] An example of a communication system is a contact center system. A contact center system may employ a pairing node that is used to assign contacts to agents that are available to handle those contacts. Sometimes, a contact center may have agents available and waiting to be assigned to an inbound or outbound contact (e.g., a phone call, an Internet chat session, an email). At other times, a contact center may have contacts waiting in one or more queues for agents to be available for assignment. Summary of the invention

[0003] Certain challenges currently exist. For example, traditional contact center systems do not have sufficient capacity to handle many concurrent agents, nor do they have sufficient throughput to handle high rates of incoming contacts. Therefore, traditional contact center systems often require additional infrastructure, such as load balancers, which are used to manage the load across multiple systems (e.g., multiple automatic call distributors or ACDs with groups of agents distributed between them). Therefore, it is advantageous for communication systems (such as, for example, contact center systems) to manage computing resources including CPU, network bandwidth, and memory to efficiently perform necessary operations as quickly as possible and reduce or eliminate the need for load balancers or other additional computing resources and infrastructure.

[0004] Thus, in one aspect, a method in a call center system is provided, comprising: obtaining a script including a plurality of instructions for execution before a contact is paired with an agent at a contact center system; obtaining a first plurality of contacts at the contact center; for each contact, determining whether the contact has reached a predetermined threshold associated with any instruction in the obtained script; and if the predetermined threshold has been reached, executing the associated instruction from the script for the contact.

[0005] Therefore, in a second aspect, a method in a call center system is provided, comprising: obtaining a script including multiple instructions for execution before a contact is paired with an agent at a contact center system; obtaining a first plurality of contacts at the contact center; determining whether each of the multiple contacts has reached a first predetermined threshold or a second predetermined threshold; executing a first instruction of the multiple instructions for each contact of the multiple contacts that has reached the first predetermined threshold; and executing a second instruction of the multiple instructions for each contact of the multiple contacts that has reached the second predetermined threshold.

[0006] Therefore, in a third aspect, a method in a contact center system is provided, comprising: executing a first script executor at a first node; determining at the first node when the first script executor generates an action to be performed on one or more contacts; based on determining that the first script executor has generated an action, (i) executing the action at the first node, and (ii) synchronizing the action with a second standby node; updating a memory state associated with the action at a second node; determining at the second node whether a failure event has occurred at the first node; based on determining that a failure event has indeed occurred at the first node, the second node becomes an active node of the contact center; and executing a second script executor by the second node on the contacts recorded in the memory of the second node.

[0007] Therefore, in a fourth aspect, a method in a contact center system is provided, comprising: at a first node of the contact center system, obtaining a script including multiple instructions, which is used to execute before a contact is paired with an agent at the contact center system; at the first node, obtaining multiple contacts at the contact center, wherein the multiple contacts obtained by the first node were previously connected to a second node of the contact center system, which was previously an active node and has now experienced a failure event; for each of the multiple contacts, executing, by the first node, instructions of the obtained script associated with the state of the contact.

[0008] In another aspect, a computer program is provided, comprising instructions that, when executed by a processing circuit of a device, cause the device to perform any of the methods disclosed herein. In one embodiment, a carrier containing the computer program is provided, wherein the carrier is one of an electronic signal, an optical signal, a radio signal, and a computer-readable storage medium. In another aspect, a device configured to perform the method disclosed herein is provided. The device may include a memory and a processing circuit coupled to the memory. BRIEF DESCRIPTION OF THE DRAWINGS

[0009] The accompanying drawings, which are incorporated herein and constitute a part of the specification, illustrate various embodiments.

[0010] Figure 1A An example communication system according to an embodiment is illustrated.

[0011] Figure 1B An example communication system according to an embodiment is illustrated.

[0012] Figure 1C An example communication system according to an embodiment is illustrated.

[0013] Figure 1D An example communication system according to an embodiment is illustrated.

[0014] Figure 2Illustrated is a pairing node of a contact center according to an embodiment.

[0015] Figure 3 is a flow chart illustrating a process according to an embodiment.

[0016] Figure 4 is a flow chart illustrating a process according to an embodiment.

[0017] Figure 5 is a flow chart illustrating a process according to an embodiment.

[0018] Figure 6 is a flow chart illustrating a process according to an embodiment.

[0019] Figure 7 is a flow chart illustrating a process according to an embodiment.

[0020] Figure 8 is a block diagram of a node according to an embodiment. DETAILED DESCRIPTION

[0021] Figure 1A An example communication system 100A is illustrated. In this example, the communication system 100A is a contact center system. Figure 1A As shown, the communication system 100A may include a central switch 110. The central switch 110 may receive incoming contacts (e.g., callers) or support outbound connections to contacts via a telecommunications network (not shown). The central switch 110 may include contact routing hardware and software to help route contacts between one or more contact centers, or to one or more private branch exchanges (PBXs) and / or automatic call distributors (ACDs) or other queuing or switching components, including other Internet-based, cloud-based, or otherwise networked contact-agent hardware or software-based contact center solutions.

[0022] If there is only one contact center in the communication system 100A, or only one PBX / ACD routing component, the central switch 110 may not be necessary. If multiple contact centers are part of the communication system 100A, each contact center may include at least one contact center switch (e.g., contact center switches 120A and 120B). Contact center switches 120A and 120B may be communicatively coupled to the central switch 110. In an embodiment, various topologies of routing and network components may be configured to implement a contact center system.

[0023] Each contact center switch for each contact center may be communicatively coupled to a plurality (or "pool") of agents. Each contact center switch may support a certain number of agents (or "seats") logged in simultaneously. At any given time, a logged in agent may be available and waiting to be connected to a contact, or a logged in agent may be unavailable for a variety of reasons, such as connecting to another contact, performing some post-call function (such as recording information about the call), or taking a break.

[0024] exist Figure 1A In the example of FIG. 1 , the central switch 110 routes the contact to one of two contact centers via the contact center switch 120A and the contact center switch 120B, respectively. Each of the contact center switches 120A and 120B is shown with two agents. Agents 130A and 130B can log in to the contact center switch 120A, and agents 130C and 130D can log in to the contact center switch 120B.

[0025] The communication system 100A may also be communicatively coupled to integration services from, for example, third-party vendors. Figure 1A In an example of the present invention, the paired node 140 can be communicatively coupled to one or more switches in the switch system of the communication system 100A, such as the central switch 110, the contact center switch 120A, or the contact center switch 120B. In some embodiments, the switch of the communication system 100A can be communicatively coupled to multiple paired nodes. In some embodiments, the paired node 140 can be embedded in a component of the contact center system (e.g., embedded in the switch or otherwise integrated with the switch). The paired node 140 can receive information about the seats (e.g., seats 130A and 130B) logged into the switch and information about the contacts incoming via another switch (e.g., the central switch 110) from the switch (e.g., the contact center switch 120A), or in some embodiments, receive information from a network (e.g., the Internet or a telecommunications network) (not shown).

[0026] The contact center may include multiple pairing nodes. In some embodiments, one or more pairing nodes may be components of the pairing node 140, or may be one or more switches, such as the central switch 110 or the contact center switches 120A and 120B. In some embodiments, the pairing node may determine which pairing node may handle the pairing for a particular contact. For example, the pairing node may alternate between enabling pairing via a behavioral pairing (BP) strategy and enabling pairing using a first-in, first-out (FIFO) strategy. In other embodiments, a pairing node (e.g., a BP pairing node) may be configured to simulate other pairing strategies.

[0027] Figure 1BA second example communication system 100B is illustrated. Figure 1B As shown, the communication system 100B may include one or more agent endpoints 151A, 151B and one or more contact endpoints 152A, 152B. The agent endpoints 151A, 151B may include an agent terminal and / or an agent computing device (e.g., a laptop, a mobile phone). The contact endpoints 151A, 151B may include a contact terminal and / or a contact computing device (e.g., a laptop, a mobile phone). The agent endpoints 151A, 151B and / or the contact endpoints 152A, 152B may be connected to a contact center as a service (CCaaS) 170 via the Internet or a public switched telephone network (PSTN) according to the capabilities of the endpoint devices.

[0028] Figure 1C An example communication system 100C is illustrated with an example configuration of a CCaaS 170. For example, the CCaaS 170 may include multiple data centers 180A, 180B. The data centers 180A, 180B may be physically separated and may even be located in different countries and / or continents. The data centers 180A, 180B may communicate with each other. For example, one data center may be a backup for another data center; thus, in some embodiments, only one data center 180A or 180B receives agent endpoints 151A, 151B and contact endpoints 152A, 152B at a time.

[0029] Each data center 180A, 180B includes a network demilitarized zone device (DMZ) 171A and 171B, respectively, which is configured to receive agent endpoints 151A, 151B and contact endpoints 152A, 152B, which are communicatively connected to CCaaS via the Internet. The DMZ devices 171A and 171B can operate outside the firewall to connect with the agent endpoints 151A, 151B and the contact endpoints 152A, 152B, while the remaining components of the data center 180A, 180B can be within the firewall (except for the phone DMZ devices 172A, 172B, which can also be outside the firewall). Similarly, each data center 180A, 180B includes a phone DMZ device 172A and 172B, respectively, which is configured to receive agent endpoints 151A, 151B and contact endpoints 152A, 152B, which are communicatively connected to CCaaS via the PSTN. The Telephony DMZ devices 172A and 172B may operate outside of a firewall to connect the agent endpoints 151A, 151B and the contact endpoints 152A, 152B, while the remaining components of the data center 180A, 180B (excluding the Web DMZ devices 171A, 171B) may be within the firewall.

[0030] In addition, each data center 180A, 180B may include one or more nodes 173A, 173B and 173C, 173D, respectively. All nodes 173A, 173B and 173C, 173D may communicate with the network DMZ devices 171A and 171B, respectively, and with the phone DMZ devices 172A and 172B, respectively. In some embodiments, only one node in each data center 180A, 180B may communicate with the network DMZ devices 171A, 171B and the phone DMZ devices 172A, 172B at a time.

[0031] Each node 173A, 173B, 173C, 173D may have one or more pairing modules 174A, 174B, 174C, 174D, respectively. Figure 1A Similar to the pairing module 140 of the communication system 100A of FIG. 1 , the pairing modules 174A, 174B, 174C, 174D can pair contacts with agents. For example, the pairing modules can alternate between enabling pairing via a behavioral pairing (BP) module and enabling pairing using a first-in, first-out (FIFO) module. In other embodiments, a pairing module (e.g., a BP module) can be configured to emulate other pairing strategies.

[0032] Now go to Figure 1D , the disclosed CCaaS communication system (eg, Figure 1B and / or Figure 1C ) can support multi-tenancy so that multiple contact centers (or contact center operations or businesses) can operate in a shared environment. That is, multiple tenants can be handled by the disclosed CCaaS communication system, each tenant having its own non-overlapping set of agents, where each agent interacts only with contacts of a single tenant. CCaaS 170 Figure 1D 190A and 190B. Figure 1C For example, multiple tenants may be supported by node 173A supporting tenant 190A, while node 173B supports tenant 190B. In another embodiment, data center 180A supports tenant 190A, while data center 180B supports tenant 190B. In another example, multiple tenants may be supported by shared machines or shared virtual machines; thus, tenants 190A and 190B may be supported simultaneously at node 173A, and so may nodes 173B, 173C, and 173D.

[0033] In other embodiments, the system may be configured as a single tenant within a dedicated environment, such as a private machine or private virtual machine. In other embodiments, the system may be configured as multiple tenants within a business process outsourcer (BPO) or other service provider premises.

[0034] Contact centers often have multiple services running at any time within a computer node, competing for processing power and bandwidth. Each service may have a private memory segment allocated to it, and these services typically pass objects or blocks of information from one service to another through the kernel of a traditional operating system. This is a slow process because of (1) the time constraints of copying objects or other data through traditional data replication techniques, and (2) the additional processing power required by kernel-based operations, such as running additional checks to protect each service's individual memory allocations and multitasking overhead. In some examples, as described below with respect to Figure 3 As discussed, a single microservice may execute many separate processing threads through a kernel, where each processing thread may perform tasks for objects of the microservice. For larger contact center systems, the kernel becomes increasingly overwhelmed, quickly reaching capacity and / or throughput limits and creating other bottlenecks within the system. Contact centers receive hundreds, thousands, and hundreds of thousands of contacts; each contact has a state associated with it, and in traditional contact center systems, each contact typically receives a separate state update. These separate updates place a significant burden on the kernel and increase the lag of each microservice task. As a result, these processing threads limit the ability of traditional contact centers to handle more contacts and agents.

[0035] The present disclosure newly provides systems and methods for efficiently maintaining and updating caller status in a communication system, as discussed herein. The systems and methods discussed herein provide contact centers with greatly increased capacity and throughput, operating at faster speeds, higher efficiency, and greater bandwidth. The systems and methods of the present disclosure enable the throughput of the contact center to reach 100 or more calls per second, and the capacity of concurrent callers and / or agents exceeds 100,000. The present disclosure also provides systems and methods for transition call failover, as discussed herein. In a traditional contact center, when a switch or other component fails, both contacts and agents may be disconnected, including contacts waiting in a hold queue or talking to an agent. The systems and methods of the present disclosure provide a contact center system that is capable of maintaining high availability synchronization of transition call status, so that a script executor in a standby node can continue from where the active node left off when an active node fails, thereby not disconnecting agents and callers.

[0036] Figure 2 An example paired node 200 according to an embodiment is illustrated (ie, for example, a paired node 200 may be used to implement Figure 1A L3 partner node 140, or Figure 1B173A, 173B, 173C, 173D). In the illustrated embodiment, the pairing node 200 includes a physical memory 210 (e.g., random access memory RAM), such as a dynamic RAM (DRAM) or a static RAM (SRAM) for storing contact center information, the contact center information identifying: (i) a set of contact identifiers (IDs) associated with contacts available for pairing (i.e., contacts waiting to be connected to an agent) and (ii) a set of agent IDs associated with agents available for pairing. In some embodiments, the contact center information includes: i) for each contact ID, metadata of the contacts associated with the contact ID (the metadata may include status information indicating whether the contact is available (i.e., waiting for pairing), a score assigned to the contact, and / or information about the contact) and ii) for each agent ID, metadata of the agent associated with the agent ID (the metadata may include status information indicating whether the agent is available, a score assigned to the agent, and / or information about the agent).

[0037] Exemplary information about contacts and / or agents that may be stored in memory 210 and associated with contact IDs or agent IDs includes: attributes, arrival times, hold times or other duration data, estimated wait times, historical contact-agent interaction data, agent percentiles, contact percentiles, states (e.g., “available” when a contact or agent is waiting to be paired, “abandoned” when a contact is disconnected from the contact center, “connected” when a contact is connected to an agent or an agent is connected to a contact, “completed” when a contact has completed an interaction with an agent, “unavailable” when an agent is disconnected from the contact center), and patterns associated with agents and / or contacts.

[0038] The paired node 200 also includes several modules (software and / or hardware components) (e.g., microservices), including a contact detector 202 and an agent detector 204. The contact detector 202 is operable to detect available contacts (e.g., the contact detector 202 can communicate with a switch, which signals the contact detector 202 whenever a new contact calls the contact center), and, in response to detecting an available contact, stores at least one contact ID associated with the detected contact in the memory 210 (the above metadata can also be stored in association with the contact ID). Similarly, the agent detector 204 is operable to detect when an agent is available, and, in response to detecting that an agent is available, stores at least one agent identifier uniquely associated with the detected agent in the memory 210 (the metadata related to the identified agent can also be stored in association with the agent ID). In this way, once a contact / agent becomes available, the memory 210 is updated to include the corresponding contact / agent identifier and status information indicating that the contact / agent is available. Thus, at any given point in time, memory 210 will contain: zero or more sets of contact identifiers, each associated with a different contact waiting to be connected to an agent; and zero or more sets of agent identifiers, each associated with a different available agent.

[0039] The pairing node 200 also includes other modules (e.g., microservices), including: (i) a contact / agent (C / A) batch selector 220, which is used to identify (e.g., based on state information) a set of contacts and agents available for pairing, and once contacts and agents are selected for pairing, provide state updates (i.e., modify state information) for the contacts and agents; (ii) a C / A pairing evaluator 221, which is used to evaluate information associated with available contacts and information associated with available agents in order to propose contact-agent pairings; and (iii) a script executor 244, which can execute instructions associated with the state of each contact according to embodiments further discussed herein. Figure 2As shown, the C / A batch selector 220 is in communication with the memory 210 and is thereby able to read the contact center information stored therein (e.g., a set of contact IDs, each of which identifies an available contact, and a set of agent IDs, each of which identifies an available agent) from the memory 210. In one embodiment, the C / A batch selector 220 is configured to occasionally (e.g., periodically) read the memory 210 to obtain a list of available contacts and available agents based on the states associated with the agents and contacts listed in the memory 210. In addition, the C / A batch selector 220 is in contact with the C / A pairing evaluator 221, and after obtaining the list of available contacts and available agents, the C / A batch selector 220 may send the list to the C / A pairing evaluator 221 (e.g., send the contact ID and the agent ID to the C / A pairing evaluator 221).

[0040] After C / A pairing evaluator 221 receives the set of contact IDs and the set of agent IDs from C / A batch selector 220, C / A pairing evaluator 221 may read more information about the received contact IDs and agent IDs from memory 210. C / A pairing evaluator 221 uses the read information to identify and suggest agent-contact pairings for the received contact IDs and agent IDs based on a pairing strategy, which may result in no contact / agent pairings, a single contact / agent pairing, or multiple contact-agent pairings depending on the pairing strategy used and the available contacts and agents.

[0041] After identifying the contact / agent pairs, the C / A pair evaluator 221 sends the contact / agent pair set to the batch selector 220. The C / A batch selector 220 provides the contact / agent pair set to the contact / agent connector 222 (e.g., if the contact associated with contact ID C12 is paired with the agent associated with agent ID A7, the C / A batch selector 220 provides these contact / agent IDs to the contact / agent connector 222). If the pairing process results in one or more contact / agent pairs, then for each contact / agent pair, the C / A batch selector 220 transmits the updated state associated with each contact ID and each agent ID in the one or more contact / agent pairs to the memory 210, and then associates the updated state with each contact ID and agent ID. Thus, the memory 210 retains the contact ID and agent ID for future analysis.

[0042] The contact / agent connector 222 is used to connect the identified agent with the paired identified contact. In addition, the C / A connector 222 transmits the updated state associated with each contact ID and each agent ID in one or more contact / agent pairs to the memory 210, and then associates the updated state with each contact ID and agent ID.

[0043] Thus, in one embodiment, the paired node 200 provides an asynchronous polling process, wherein the memory 210 provides a central repository that is read and updated by the contact detector 202, the agent detector 204, the script executor 244, the C / A batch selector 220, the C / A pairing evaluator 221, and the C / A connector 222. Thus, the objects of each agent and contact do not need to be moved or copied between the microservices of the paired node 200; instead, the identifier associated with the object is transmitted or shared between the contact detector 202, the agent detector 204, the memory 210, the C / A batch selector 220, the C / A pairing evaluator 221, and the C / A connector 222, and the object remains in the memory 210, which can be shared and accessed by each microservice without relying on the operating system kernel to facilitate data replication between microservices. This process saves bandwidth, processing power, memory associated with each microservice, and is more convenient than traditional event-based paired nodes.

[0044] Figure 3 3 is a flow chart illustrating a multithreaded process 300 for executing a call processing script according to an embodiment. The process 300 begins at step 310 by obtaining arrival event information of a first contact at a contact center. For example, the first contact is referred to herein as C1. In some examples, the first contact is received at the contact detector 202 of the node 200.

[0045] Step 320 includes initializing, at a processor at the contact center, a first call processing thread associated with C1 to execute a call processing script for C1. For example, the call processing script is stored in a predefined configuration file of node 200. For example, the call processing thread continues to execute the call processing script for C1 until there is a call disposition event for C1. The disposition event may include any of the following: the call is no longer connected to the contact center, the caller abandons and leaves the queue (intentionally or unintentionally through call interruption), the caller is connected to an agent, and / or the call is associated with a callback request.

[0046] Step 330 includes obtaining arrival event information of a second contact (eg, C2) at the contact center.

[0047] Step 340 includes initializing a second call processing thread associated with C2 at the processor of the contact center to execute a call processing script for C2. For example, the call processing thread continues to execute the call processing script for C2 until there is a call handling event for C2. For example, the call processing script for C2 may be different from the call processing script for C1 (e.g., if C1 and C2 have different priorities and / or different call types) or may be the same (e.g., if C1 and C2 have the same priority and / or the same call type).

[0048] Step 350 includes multitasking by the processor between all existing threads to execute the call handling script for each call. For all threads associated with calls for which a call handling event has not occurred, the multitasking continues.

[0049] Step 360 includes obtaining a follow-up contact at a contact center (e.g., C n )'s arrival event information. For example, during process 300, any number of contacts may arrive at the contact center.

[0050] Step 370 includes initializing the nth call processing thread associated with Cn at the processor to execute the call processing script for Cn. That is, each call has a call processing script associated with the call. Then, process 300 returns to step 350.

[0051] In summary, process 300 provides a method for executing a call processing script for each call. However, process 300 provides a process that is time-inefficient and computationally resource-intensive. For example, the system suffers from overhead due to multitasking between threads for each caller. In addition, process 300 has low fault tolerance if a node executing the call processing script for each call fails. Because process 300 requires many threads with many related operations, process 300 requires many computing resources to synchronize backup nodes with the state of each call, each related thread, and each related state update when new instructions from the script are executed. If such a process 300 is used in a contact center, all calls (including (1) calls that agents are connected to contacts, and (2) calls that are waiting in a queue) face a high risk of disconnection when an active node goes offline, even if there is a backup node, because the information backup in the multithreaded process 300 is too slow and consumes too much bandwidth to be designed for contact centers to manage transitional or active call states.

[0052] Therefore, the present disclosure provides a new and efficient system and method for executing call processing scripts for calls in a contact center. The present disclosure contemplates that a call processing script may include a series of instructions and a time for each instruction to be executed. For example, this is shown in Table 1 below.

[0053]

[0054] Table 1: Example call processing script instruction set

[0055] As shown, the timing can be the length of time from the start of the call event (e.g., 5 seconds from the call arrival), the length of time from the initiation of another instruction (e.g., instruction 2 can be executed 10 seconds after instruction 1 is initiated for the call) or can be triggered directly by the call event (e.g., after the agent marks the call complete).

[0056] In addition, the present disclosure provides a data structure (e.g., stored in the memory 212 of the node 200) in which each call received at the contact center has an associated state. As shown in Table 2 below, the associated state of each call may be the time when the call initiated a specific instruction of the call processing script.

[0057]

[0058] Table 2. Caller objects and associated states

[0059] Figure 4 4 is a flow chart illustrating a first single-threaded process 400 for executing a call processing script according to an embodiment. For example, the process 400 may use the data structures shown in Tables 1 and 2. The process 400 begins at step 410, which includes obtaining a script including a plurality of instructions for execution before a contact is paired with an agent at a contact center system. For example, the script may include a plurality of instructions, wherein each instruction is associated with an identification (e.g., a reference number or key), an execution time (e.g., a predetermined threshold), and a task to be performed by the contact center for the call.

[0060] Step 420 includes obtaining a first plurality of contacts at a contact center. For example, the first plurality of contacts may be contacts waiting in one or more queues of the contact center at time t=t0. The plurality of contacts may be continuously updated, for example, by the contact detector 202 of the node 200. In some examples, the plurality of contacts may be stored as a linked list, wherein newly arrived contacts are added to the tail of the linked list (as objects or object identifiers), and any call handling results in deleting the object from the linked list or deleting the object identifier of the caller.

[0061] Step 430 includes checking the state or states of each contact for each contact. Based on the state or states, step 430 also includes determining whether the contact has reached a predetermined threshold associated with any instruction in the obtained script. For example, the predetermined threshold can be the "Execution Time" column shown in Table 1. If any of the predetermined thresholds are reached, the associated instructions from the script for the contact are executed. Thus, the contacts can be processed sequentially by process 400.

[0062] After completing step 430, process 400 may proceed to step 440 or return to step 420. Following the latter path first, if process 400 returns directly to step 420, process 400 may obtain a second plurality of contacts at the contact center. For example, the second plurality of contacts may be contacts waiting in one or more queues at the contact center at time t=t1, where time t=t1 is after time t=t0. Step 430 may then be performed on the second plurality of contacts. This process can loop indefinitely as long as there are contacts at the contact center and as long as the contact center is operational.

[0063] When process 400 proceeds to step 440, the method includes waiting a predetermined amount of time before returning to step 420. According to the systems and methods of the present disclosure, script execution for multiple calls may occur faster than the speed at which calls arrive at the contact center, and therefore, the contact center may experience greater efficiency by waiting a predetermined amount of time before returning to step 420. In contrast, traditional script execution methods are much slower than process 400 and must be run continuously.

[0064] Figure 5 is a flow chart illustrating a second single-threaded process 500 for executing a call handling script according to an embodiment. Figure 5 It can be the above about Figure 4 Alternative embodiments of the disclosed process. Process 500 begins at step 510, which includes obtaining a script including a plurality of instructions for execution before a contact is paired with an agent at a contact center system. For example, step 510 may be as provided above with respect to step 410.

[0065] Step 520 includes obtaining a first plurality of contacts at a contact center. For example, step 520 may be as provided above with respect to step 420.

[0066] Step 530 includes determining whether each of the plurality of contacts has reached a first predetermined threshold or a second predetermined threshold. In some examples, step 530 may check a plurality of predetermined thresholds (e.g., the plurality of predetermined thresholds include a first predetermined threshold, a second predetermined threshold, and an additional threshold). For example, step 530 may include looping through a data structure similar to Table 2 above, and identifying a threshold or a set of contacts that exceed the threshold for each instruction in the obtained script. That is, step 530 may obtain a first set of contacts that have met or exceeded the threshold of instruction 1, a second set of contacts that have met or exceeded the threshold of instruction 2, a third set of contacts that have met or exceeded the threshold of instruction 3, and the like.

[0067] Then, step 540 may include executing a first instruction of the plurality of instructions for each contact of the plurality of contacts that has reached the first predetermined threshold.

[0068] Step 550 may then include executing a second instruction from the plurality of instructions for each contact from the plurality of contacts that has reached a second predetermined threshold.

[0069] For example, steps 540 and 550 include executing the appropriate instruction for each connection set that has reached a predetermined threshold associated with an instruction in the plurality of instructions (e.g., executing instruction 1 for the first connection set, executing instruction 2 for the second connection set, executing instruction 3 for the third connection set, etc.).

[0070] After completing step 550, process 500 may proceed to step 560 or return to step 520. Following the latter path first, if process 500 returns directly to step 520, process 500 may obtain a second plurality of contacts at the contact center. For example, the second plurality of contacts may be contacts waiting in one or more queues at the contact center at time t=t1, where time t=t1 is after time t=t0. Steps 530-550 may then be performed for the second plurality of contacts. This process may loop indefinitely as long as there are contacts at the contact center and as long as the contact center is operational.

[0071] When process 500 proceeds to step 560, the method includes waiting a predetermined amount of time (e.g., 50 milliseconds) before returning to step 520. According to the systems and methods of the present disclosure, script execution for multiple calls may occur faster than the calls arrive at the contact center, and therefore, the contact center may experience greater efficiency by waiting the predetermined amount of time before returning to step 520. In contrast, traditional methods for script execution are much slower than process 500 and must be run continuously.

[0072] Thus, processes 400 and 500 provide a single-threaded process in which multiple calls can be processed sequentially (e.g., process 400) or in combination (process 500); either of these processes is faster than process 300 and conventional script processing. Processes 400 and 500 do not require the use of multiple threads, one for each call, which compete with each other to be executed by the processor. Instead, processes 400 and 500 use fewer computing resources (memory, bandwidth, processing power) than process 300. In addition, processes 400 and 500 have higher fault tolerance when a primary active node fails because processes 400 and 500 can synchronize with backup nodes that have fewer computing resources than process 300 requires, as shown in processes 600 and 700 below.

[0073] Figure 66 is a flow chart illustrating a process 600 according to an embodiment. Process 600 begins at step 610, which includes running a first script executor (e.g., executing process 400 or 500) at a first node (e.g., any one of nodes 173A, 173B, 173C, or 173D). Step 620 includes determining when the first script executor generates an action to be performed on one or more contacts. Based on determining that the first script executor has generated an action, (1) the action is executed at the first node, and (2) the action is synchronized with a second backup node (e.g., the backup node can be one or more of the remaining nodes in nodes 173A, 173B, 173C, or 173D). For example, the action can be synchronized through data replication or operation synchronization. Step 630 includes updating a memory state associated with the action at the backup node. For example, the backup node can maintain a data structure that associates a caller object identifier / address with a state (e.g., Table 2 above). Step 640 includes the second node determining whether a failure event has occurred at the first node. If the first node does not have a failure event, process 600 returns to step 610. If the first node does have a failure event, process 600 proceeds to step 640, which includes the second standby node becoming the active node. Then, the second node runs the second script executor for the contact recorded in the memory of the second node. For example, the same data structure updated in step 630 can be used by step 640 so that the second node runs the second script executor. For example, the second script executor can be any of processes 400 or 500.

[0074] Figure 7 700 is a flowchart illustrating a process according to an embodiment, wherein once a failure event has occurred to a previous active node, a previous backup / standby node runs a script executor as a new active node. Process 700 begins at step 710, which includes obtaining a script including a plurality of instructions at a first node of a contact center system, the instructions for execution before a contact is paired with an agent at the contact center system. For example, step 710 may be provided as above with respect to step 410 or 510. Step 720 includes obtaining a plurality of contacts at a contact center at a first node. For example, step 520 may be provided as above with respect to step 420. In addition, the plurality of contacts obtained by the first node may have been previously connected to a second node of the contact center system, which was previously an active node and has experienced a failure event. Step 730 includes, for each of the plurality of contacts, executing the instructions of the obtained script associated with the state of the contact. For example, step 730 may correspond to process 400 or 500.

[0075] Thus, processes 600 and 700 can maintain transitional calls at the contact center - contact endpoints that are transitioning from a "hold" state in a contact center queue to being connected to an agent endpoint. Processes 600 and 700 provide for the contact endpoint to be processed by the script executor via the new active node (e.g., node 173B if a failure event occurs at node 173A) as originally intended to be processed by the script executor of the previous active node (e.g., node 173A); such maintenance of transitional calls is due to the backup node (e.g., node 173B) having data about the caller object identifier / address and associated state that is accurate to the nearest microsecond or nanosecond timescale, and the instance of the script executor now running on the new active node is stateless, processing the call object information that was previously synchronized from the previous active node to the new active node before the failure event occurred.

[0076] Figure 8 8 is a block diagram of a node 800 according to some embodiments. The node 1000 may be an active node or a standby node. Figure 8As shown, the node 800 may include: a processing circuit (PC) 802, which may include one or more processors (P) 855 (e.g., one or more general-purpose microprocessors and / or one or more other processors, such as application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), etc.), which may be co-located in a single housing or a single data center, or may be geographically distributed (i.e., the node 800 may be a distributed computing device); at least one network interface 849 (e.g., a physical interface or an air interface), including a transmitter (Tx) 845 and a receiver (Rx) 847, which are used to enable the node 800 to send data to and receive data from other nodes connected to a network 110 (e.g., an Internet Protocol (IP) network), to which the network interface 849 is connected (physically or wirelessly) (e.g., the network interface 849 may be coupled to an antenna device, which includes one or more antennas, which are used to enable the node 800 to wirelessly send / receive data); and a storage unit (also known as a "data storage system") 809, which may include one or more non-volatile storage devices and / or one or more volatile storage devices. In embodiments where the PC 802 includes a programmable processor, a computer readable storage medium (CRSM) 842 may be provided. The CRSM 842 may store a computer program (CP) 843 including a computer readable instruction (CRI) 844. The CRSM 842 may be a non-transitory computer readable medium, such as a magnetic medium (e.g., a hard disk), an optical medium, a storage device (e.g., a random access memory, a flash memory), etc. In some embodiments, the CRI 844 of the computer program 843 is configured so that when executed by the PC 802, the CRI causes the node 800 to perform the steps described herein (e.g., the steps described herein with reference to the flowchart). In other embodiments, the node 800 may be configured to perform the steps described herein without code. That is, for example, the PC 802 may consist of only one or more ASICs. Therefore, the features of the embodiments described herein may be implemented in hardware and / or software.

[0077] Summary of Various Embodiments

[0078] A1. A method in a call center system, comprising: obtaining a script including a plurality of instructions for execution before a contact is paired with an agent at a contact center system; obtaining a first plurality of contacts at the contact center; for each contact, determining whether the contact has reached a predetermined threshold associated with any instruction in the obtained script; and if any of the predetermined thresholds is reached, executing the associated instruction from the script for the contact.

[0079] B1. A method in a call center system, comprising: obtaining a script including multiple instructions, the instructions being used to execute before a contact is paired with an agent at a contact center system; obtaining a first plurality of contacts at the contact center; determining whether each of the plurality of contacts has reached a first predetermined threshold or a second predetermined threshold; executing a first instruction of the plurality of instructions for each contact of the plurality of contacts that has reached the first predetermined threshold; and executing a second instruction of the plurality of instructions for each contact of the plurality of contacts that has reached the second predetermined threshold.

[0080] C1. A method in a call center system, comprising: executing a first script executor at a first node; determining at the first node when the first script executor generates an action to be performed on one or more contacts; based on determining that the first script executor has generated an action, (i) performing the action at the first node and (ii) synchronizing the action with a second standby node; updating a memory state associated with the action at the second node; determining at the second node whether the first node has a fault event; based on determining that the first node does have a fault event, the second standby node becomes an active node; and executing a second script executor by the second node on contacts recorded in a memory of the second node.

[0081] D1. A method in a call center system, comprising: obtaining a script including multiple instructions at a first node of the contact center system, the instructions being used to execute before a contact is paired with an agent at the contact center system; obtaining a plurality of contacts at the contact center at the first node, wherein the plurality of contacts obtained by the first node were previously connected to a second node of the contact center system, the second node was previously an active node, and has experienced a failure event; for each of the plurality of contacts, executing, by the second node, instructions of the obtained script associated with a state of the contact.

[0082] E1. A computer program (1043), comprising instructions (1044), which, when executed by a processing circuit (1002) of a node, causes the node to execute the method of any one of the above embodiments.

[0083] E2. A carrier embodying the computer program of embodiment E1, wherein the carrier is one of an electronic signal, an optical signal, a radio signal and a computer-readable storage medium (1042).

[0084] F1. A node (1000) in a communication system, the node being configured to execute the method of any one of embodiments A1, B1, C1 or D1.

[0085] Although various embodiments are described herein, it should be understood that they are presented by way of example only and not limitation. Therefore, the breadth and scope of the present disclosure should not be limited by any of the above-mentioned exemplary embodiments. In addition, unless otherwise specified herein or clearly contradictory to the context, otherwise, any combination of the above-mentioned elements in all possible variations thereof is encompassed by the present disclosure.

[0086] Furthermore, although the processes described above and shown in the accompanying drawings are shown as a series of steps, this is for illustration purposes only. Therefore, it is contemplated that some steps may be added, some steps may be omitted, the order of the steps may be rearranged, and some steps may be performed in parallel.

Claims

1. A method (400) in a call center system (100A), comprising: obtaining ( 410 ) a script including a plurality of instructions for execution before a contact is paired with an agent at a contact center system; Obtaining (420) a first plurality of contacts at a contact center; For each contact, determining ( 430 ) whether the contact has reached a predetermined threshold associated with any instruction in the obtained script; If any of the predetermined thresholds are reached, then associated instructions from the script for the contact are executed (430).

2. A method (500) in a call center system (100A), comprising: obtaining ( 510 ) a script including a plurality of instructions for execution before a contact is paired with an agent at a contact center system; Obtaining (520) a first plurality of contacts at a contact center; determining ( 530 ) whether each contact in the plurality of contacts has reached a first predetermined threshold or a second predetermined threshold; executing (540) a first instruction of the plurality of instructions for each contact of the plurality of contacts that has reached the first predetermined threshold; as well as A second instruction in the plurality of instructions is executed (550) for each contact in the plurality of contacts that has reached the second predetermined threshold.

3. A method (600) in a call center system (100A), comprising: At a first node, executing (610) a first script executor; At a first node, determining (620) when the first script executor generates an action to be performed on one or more contacts; Based on determining that the first script executor generated an action, (i) executing (620) the action at the first node, and (ii) synchronizing (620) the action with a second standby node; updating (630) at the second node a memory state associated with the action; determining, at the second node, whether a failure event occurs at the first node; Based on determining that a failure event has indeed occurred at the first node, the second standby node becomes (640) an active node; A second script executor is executed (640) by the second node on the contact recorded in the memory of the second node.

4. A method (700) in a call center system (100A), comprising: At a first node of a contact center system, obtaining ( 710 ) a script including a plurality of instructions for execution before a contact is paired with an agent at the contact center system; obtaining (720) at the first node a plurality of contacts at a contact center, wherein the plurality of contacts obtained by the first node were previously connected to a second node at the contact center system, the second node was previously an active node and has experienced a failure event; For each contact of the plurality of contacts, instructions of the obtained script associated with a state of the contact are executed (730) by the second node.

5. A computer program (1043), comprising instructions (1044) which, when executed by a processing circuit (1002) of a node, cause the node to perform the method according to any one of claims 1 to 4.

6. A carrier containing a computer program according to claim 5, wherein: The carrier is one of an electronic signal, an optical signal, a radio signal, and a computer-readable storage medium (1042).

7. A call center system (100A), the call center system being configured as follows: obtaining ( 410 ) a script including a plurality of instructions for execution before a contact is paired with an agent at a contact center system; Obtaining (420) a first plurality of contacts at a contact center; For each contact, determining ( 430 ) whether the contact has reached a predetermined threshold associated with any instruction in the obtained script; If any of the predetermined thresholds are reached, then associated instructions from the script for the contact are executed (430).

8. A call center system (100A), the call center system being configured as follows: obtaining ( 510 ) a script including a plurality of instructions for execution before a contact is paired with an agent at a contact center system; Obtaining (520) a first plurality of contacts at a contact center; determining ( 530 ) whether each contact in the plurality of contacts has reached a first predetermined threshold or a second predetermined threshold; executing (540) a first instruction of the plurality of instructions for each contact of the plurality of contacts that has reached the first predetermined threshold; as well as A second instruction in the plurality of instructions is executed (550) for each contact in the plurality of contacts that has reached the second predetermined threshold.

9. A call center system (100A), the call center system being configured as follows: At a first node, executing (610) a first script executor; At a first node, determining (620) when the first script executor generates an action to be performed on one or more contacts; Based on determining that the first script executor generated an action, (i) executing (620) the action at the first node, and (ii) synchronizing (620) the action with a second standby node; updating (630) at the second node a memory state associated with the action; At the second node, determining whether a failure event occurs at the first node; Based on determining that a failure event has indeed occurred at the first node, configuring (640) the second standby node to become an active node; A second script executor is executed (640) by the second node on the contact recorded in the memory of the second node.

10. A call center system (100A), the call center system being configured as follows: At a first node of a contact center system, obtaining ( 710 ) a script including a plurality of instructions for execution before a contact is paired with an agent at the contact center system; At the first node, a plurality of contacts at a contact center are obtained (720), wherein: the plurality of contacts acquired by the first node were previously connected to a second node in the contact center system, the second node was previously an active node and has experienced a failure event; For each contact of the plurality of contacts, instructions of the obtained script associated with a state of the contact are executed (730) by the second node.

11. A node (800) in a communication system, the node comprising: Memory (841); as well as A processing circuit (802) coupled to the memory, wherein the node is configured to perform the method according to at least one of claims 1-4.