Contact center seat state management system
By obtaining and processing event indicators, current status objects, and load indicators in the paired nodes of the contact center, and calculating index values to obtain new status objects, the challenge of agent status tracking in high-processing contact centers is solved, achieving efficient status updates and responses.
Patent Information
- Application Number
- CN202380062554.1
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2022-08-31
- Filing Date
- 2023-08-29
- Publication Date
- 2025-03-28
AI Technical Summary
In high processing volume contact centers, it is challenging to keep track of each agent's status in time, especially when the agent can be in multiple possible states and the states are frequently switched.
Get the event indicator (EI), the current status object (CSO), and the load indicator (LI) by pairing nodes, using this information to calculate the index value to obtain the new status object (NSO) of the agent, and associate the NSO with the agent identifier.
It realizes efficient tracking and updating agent status in high-throughput contact centers, improving the system's response speed and processing capabilities.
Smart Images

Figure CN119732033A_ABST
Abstract
Description
Technical Field
[0001] Embodiments related to a contact center agent status management system are disclosed. Background Art
[0002] Contact centers are used to assign contacts to contact center agents (or simply "agents") that are available to handle those contacts. Sometimes, a contact center may have agents available and waiting to be assigned to inbound or outbound contacts (e.g., phone calls, Internet chat sessions, emails). At other times, a contact center may have contacts waiting in one or more queues for agents to become available for assignment. It is important that the contact center maintains state information (SI) for each agent. In a typical contact center, any given agent is in one of several possible agent states at any given time; in addition, when an event for an agent is detected, the agent transitions from its current state to a new state, and the agent state management system updates the agent's SI to reflect the new state. Summary of the invention
[0003] There are certain challenges. For example, at any given time, an agent can exist in one of multiple possible states (e.g., idle, logged out, resting, on-call, after-call work (ACW), etc.), and while in a particular state (e.g., idle), can transition to a new state (e.g., on-call) in response to an event (e.g., a call connection). In a contact center with a large number of agents handling a large call volume, keeping track of each agent state in a timely manner can be challenging.
[0004] Therefore, in one aspect, a paired node is provided that includes a memory and a processing circuit coupled to the memory, wherein the paired node is configured to: obtain an event indicator (EI) indicating an event of an agent; obtain a current state object (CSO) of the agent, the CSO including a current state indicator (CSI) indicating a current state of the agent and a pending state indicator (PSI) indicating a pending state of the agent; obtain an index value using at least one of the CSI or the PSI and the EI; obtain a new state object (NSO) of the agent using at least one of the CSI or the PSI and the index value; and associate the NSO with an agent identifier (AI) associated with the agent.
[0005] In one embodiment, the pairing node is configured to obtain NSO using at least one of CSI or PSI and an index value by performing the following process, the process comprising selecting a row from an agent state transition management data table using the index value; and selecting a field from the selected row using the CSI or PSI, wherein the selected field includes NSO.
[0006] In one embodiment, the paired node is configured to use the EI and PSI to obtain an index value by evaluating a function of at least the EI, PSI, and a load indicator (LI).
[0007] In one embodiment, the evaluation function includes calculating one of: EI+PSI-LI, EIxPSI / Interval+LI, (EI-ESV) / Interval+PSIxTEx2+LI, or LIxInterval+PSIxTE-EI, where TE is the total number of possible events, ESV is the event start value, and Interval is the spacing of the separation.
[0008] In one embodiment, the partner node is configured to obtain the EI by reading a message including the EI from a message queue.
[0009] In one embodiment, the partner node is configured to obtain the agent's CSO by retrieving the CSO from the shared memory using the AI.
[0010] In one embodiment, the message further includes the AI, and the partner node is configured to obtain the AI from the message before using the AI to retrieve the CSO.
[0011] In one embodiment, the partner node is configured to associate the NSO with the AI by storing the NSO in a memory location associated with the AI.
[0012] In another aspect, a pairing node is provided that includes a memory and a processing circuit coupled to the memory, wherein the pairing node is configured to: obtain a first event message associated with a first agent, wherein the first event message includes a first agent identifier (AI) associated with the first agent; use the first AI to obtain a first queue identifier (QI); and add the first event message to a message queue associated with the first QI.
[0013] In one embodiment, the pairing node is configured to obtain the first event message by generating the first event message.
[0014] In one embodiment, the counterpart node includes a first message queue (MQ1) for storing the first event message, and the counterpart node is configured to obtain the first event message by reading the first event message from MQ1.
[0015] In one embodiment, the pairing node is further configured to remove the first event message from MQ1 after adding the first event message to the message queue associated with the first QI.
[0016] In one embodiment, the pairing node is further operable to: obtain a second event message associated with the second agent, wherein the second event message includes a second AI associated with the second agent; obtain a second QI using the second AI; and add the second event message to a message queue associated with the second QI.
[0017] As an embodiment, the second QI identifies the same message queue as the first QI.
[0018] In one embodiment, the second QI identifies a message queue different from the first QI, and the paired node is further configured to: initiate a first message handler (MH) for processing messages in the message queue associated with the first QI; and initiate a second MH for processing messages in the message queue associated with the second QI.
[0019] In another aspect, a method is provided, including: obtaining an event indicator (EI) indicating an event of an agent; obtaining a current state object (CSO) of the agent, the CSO including a current state indicator (CSI) indicating a current state of the agent and a pending state indicator (PSI) indicating a pending state of the agent; obtaining an index value using at least one of the CSI or the PSI and the EI; obtaining a new state object (NSO) of the agent using at least one of the CSI or the PSI and the index value; and associating the NSO with an agent identifier (AI) associated with the agent.
[0020] In another aspect, a method is provided, the method comprising: obtaining a first event message associated with a first agent, wherein the first event message comprises a first agent identifier (AI) associated with the first agent; obtaining a first queue identifier (QI) using the first AI; and adding the first event message to a message queue associated with the first QI. BRIEF DESCRIPTION OF THE DRAWINGS
[0021] The accompanying drawings, which are incorporated herein and form a part of the specification, illustrate various embodiments.
[0022] Figure 1A An example communication system according to an embodiment is shown.
[0023] Figure 1B An example communication system according to an embodiment is shown.
[0024] Figure 1C An example communication system according to an embodiment is shown.
[0025] Figure 1D An example communication system according to an embodiment is shown.
[0026] Figure 2 A paired node of a contact center according to an embodiment is shown.
[0027] Figure 3 A block diagram of a task allocation system with an external pairing system according to an embodiment is shown.
[0028] Figure 4 is a flow chart illustrating a process according to an embodiment.
[0029] Figure 5 A general node of a communication system according to an embodiment is shown.
[0030] Figure 6 is a flow chart illustrating a process according to an embodiment.
[0031] Figure 7 is a flow chart illustrating a process according to an embodiment.
[0032] Figure 8 A message queue according to an embodiment is shown.
[0033] Fig. 9 is a flow chart illustrating a process according to an embodiment.
[0034] Fig.10 is a flow chart illustrating a process according to an embodiment.
[0035] Fig.11 is a flow chart illustrating a process according to an embodiment.
[0036] Fig.12 is a flow chart illustrating a process according to an embodiment.
[0037] Fig.13 is a block diagram of a node according to an embodiment. DETAILED DESCRIPTION
[0038] Figure 1A An example communication system 100A is shown. 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 other networked contact-agent hardware or software-based contact center solutions.
[0039] Central switch 110 may not be required, for example, if there is only one contact center, or if there is only one PBX / ACD routing component in communication system 100A. If more than one contact center is part of 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 central switch 110. In embodiments, various topologies of routing and network components may be configured to implement a contact center system.
[0040] Each contact center switch of 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 at one time. 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 any of a number of reasons, such as connecting to another contact, performing some post-call function, such as recording information about a call, or taking an interruption.
[0041] 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 contact center switch 120A and 120B is shown as having two agents, respectively. Agents 130A and 130B can log into the contact center switch 120A, and agents 130C and 130D can log into the contact center switch 120B.
[0042] 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 switches 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 a switch or otherwise integrated with the switch). The paired node 140 can receive information about the seats (e.g., seats 130 A and 130B) logged into the switch and about the contacts incoming via another switch (e.g., the central switch 110) or in some embodiments from a network (e.g., the Internet or a telecommunications network) (not shown).
[0043] The contact center may include multiple pairing nodes. In some embodiments, one or more pairing nodes may be a pairing node 140 or a component of one or more switches such as a central switch 110 or a contact center switch 120A and 120B. In some embodiments, the pairing node may determine which pairing node may handle the pairing of 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.
[0044] Figure 1B A second example communication system 100B is shown. 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 computer, a mobile phone). The contact endpoints 151A, 151B may include a contact terminal and / or a contact computing device (e.g., a laptop computer, a cellular 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.
[0045] Figure 1C An example communication system 100C with an example configuration of CCaaS 170 is shown. For example, CCaaS 170 may include multiple data centers 180A, 180B. Data centers 180A, 180B may be physically separated, even in different countries and / or continents. Data centers 180A, 180B may communicate with each other. For example, one data center is a backup for another data center; therefore, in some embodiments, only one data center 180A or 180B receives agent endpoints 151A, 151B and contact endpoints 152A, 152B at a time.
[0046] Each data center 180A, 180B includes a network fragmentation zone (DMZ) device 171A and 171B, respectively, which is configured to receive the seat endpoints 151A, 151B and the contact endpoints 152A, 152B that are communicatively connected to the CCaaS via the Internet. The DMZ devices 171A and 171B can operate outside the firewall to connect with the seat 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 the seat endpoints 151A, 151B and the contact endpoints 152A, 152B that are communicatively connected to the CCaaS via the PSTN. The phone DMZ devices 172A and 172B may operate outside of a firewall to connect with the agent endpoints 151A, 151B and 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.
[0047] 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 web DMZ devices 171A and 171B and with phone DMZ devices 172A and 172B, respectively. In some embodiments, only one node in each data center 180A, 180B may communicate with web DMZ devices 171A, 171B and with phone DMZ devices 172A, 172B at a time.
[0048] Each node 173A, 173B, 173C, 173D may have one or more pairing modules 174A, 174B, 174C, 174D, respectively. Similar to the pairing module 140 of the communication system 100A of FIG. 1 , the pairing modules 174A, 174B, 174C, 174D may pair contacts to agents. For example, the pairing modules may 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) may be configured to emulate other pairing strategies.
[0049] 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 enterprises) can operate on a shared environment. That is, multiple tenants, each with its own non-overlapping set of agents, can be handled by the disclosed CCaaS communication system, where each agent interacts only with contacts of a single tenant. CCaaS 170 Figure 1D 190A and 190B. Figure 1C For example, multi-tenancy may be supported by node 173A supporting tenant 190A, while node 173B supports 190B. In another embodiment, data center 180A supports tenant 190A, while data center 180B supports tenant 190B. In another example, multi-tenancy may be supported by shared machines or shared virtual machines; such that node 173A may support both tenants 190A and 190B, and similarly so may nodes 173B, 173C, and 173D.
[0050] In other embodiments, the system may be configured for a single tenant within a dedicated environment such as a dedicated machine or dedicated virtual machine. In other embodiments, the system may be configured for multiple tenants on the premises of a business process outsourcing (BPO) or other service provider.
[0051] Figure 2 An example paired node 200 (ie, for example, Figure 1A The partner node 140 or Figure 1BThe nodes 173A, 173B, 173C, 173D of the contact center system may be implemented using the pairing node 200). 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, which identifies: (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 of the contact center system. 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 a contact SI 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 for the agent associated with the agent ID. The metadata for the agent includes the agent SI of the agent, which indicates, for example, whether the agent is available for pairing. In one embodiment, the agent SI of an agent includes a state object including a current state indicator (CSI) indicating the current state of the agent and a pending state indicator (PSI) indicating the pending state of the agent. The agent SI of an agent (e.g., a state object) may also include a load indicator (LI) indicating the agent load (e.g., indicating that there are multiple interactions). In one embodiment, the LI is a binary indicator (e.g., the LI may be 0 indicating that the agent has at most one interaction, or the LI may be 1 indicating that the agent has two or more interactions). In other embodiments, the LI may be a continuous value, where the value of the LI is based on the number of interactions that the agent is handling. In other embodiments, the LI may be a discrete value, such as determining how much load the agent is handling on a scale of 0-9. For example, the discrete value may be predetermined so that each number on the scale corresponds to a predetermined number of interactions; alternatively, the discrete value may be dynamic based on the state of the contact center system and how many interactions are handled by other agents. The metadata of the agent may also include a score assigned to the agent, attributes of the agent, historical contact-agent interaction data, agent percentiles, and the like.
[0052] 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., whenever a new contact calls the contact center, the contact detector 202 can communicate with a switch that signals the contact detector 202), and in response to detecting an available contact, at least a contact ID associated with the detected contact is stored 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 becomes available or experiences another state change event, and in response to detecting that an agent becomes available or other state change event, at least an agent identifier uniquely associated with the detected agent is stored in the memory 210 (metadata about 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 will be updated to include the corresponding contact / agent identifier and SI indicating that the contact / agent is available. Thus, at any given point in time, the memory 210 will contain a set of zero or more contact identifiers, each of which is associated with a different contact at the contact center system, and a set of zero or more agent identifiers corresponding to agents of the contact center system.
[0053] 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 the SI) a set of available contacts and agents for pairing, and once the contacts and agents are selected for pairing, provide status updates for the contacts and agents (i.e., modify the SI); and (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. Figure 2 As shown, the C / A batch selector 220 communicates with the memory 210, and thereby can read the contact center information stored therein (including, for example, a set of contact IDs in which each contact ID identifies an available contact, and a set of agent IDs in which each agent ID 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 contained 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 can 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).
[0054] After the C / A pairing evaluator 221 receives the set of contact IDs and agent IDs from the C / A batch selector 220, the C / A pairing evaluator 221 may read further information about the received contact IDs and agent IDs from the memory 210. The C / A pairing evaluator 221 uses the read information to identify and propose an agent-contact pairing for the received contact IDs and agent IDs based on the pairing strategy (depending on the pairing strategy used and the available contacts and agents), which may result in no contact / agent pairing, a single contact / agent pairing, or multiple contact-agent pairings.
[0055] When contact / agent pairs are identified, C / A pairing evaluator 221 sends a set of contact / agent pairs to batch selector 220. C / A batch selector 220 provides the set of contact / agent pairs to contact / agent connector 222 (e.g., if the contact associated with contact ID C12 is paired with the agent associated with agent ID A7, C / A batch selector 220 provides these contact / agent IDs to contact / agent connector 222). Contact / agent connector 222 is used to connect the identified agent with the paired identified contact. For each contact / agent connection, C / A batch selector 220 (or C / A connector 222) stores a message including an event indicator (e.g., "connected"), the agent ID, and the contact ID in memory 210 (e.g., in a message queue of memory 210). The agent state manager (ASM) 299 reads the message and, based on the event indicator and the current state object of the identified agent, updates the state object of the identified agent.
[0056] 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 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 is maintained in the appropriate location within the memory 210, which is shared and accessible to each microservice without relying on the operating system kernel to facilitate data replication between microservices. This process saves bandwidth, processing power, and memory associated with each microservice, and is preferable to traditional event-based paired nodes.
[0057] Figure 3Another example contact-agent pairing system 300 is shown including a task assignment system 302 and an external pairing system 395. In the task assignment system 302, a switch 380 can route a plurality of tasks 320 to a plurality of agents 330. The switch 380 can include routing hardware and software, or one or more PBX or ACD routing components or other queuing or switching components for facilitating routing of the plurality of tasks 320 between the plurality of agents 330.
[0058] In the task allocation system 302, an internal pairing system 390 can be communicatively coupled to the switch 380. The internal pairing system 390 can be local (or built-in) to the task allocation system 302 (i.e., "first party"), or can be provided by a third-party vendor. Typically, the internal pairing system 390 can implement a traditional pairing strategy (e.g., first-in-first-out (FIFO) or performance-based routing (PBR)) or some other pairing strategy that may be proprietary to the task allocation system 302. The internal pairing system 390 can receive or otherwise retrieve information about agents 330 logged into the switch 380 and about incoming tasks 320 from the switch 380.
[0059] In the contact-agent pairing system 300, the external pairing system 395 can be communicatively coupled to the switch 380 via the interface 385. The interface 385 can isolate the task allocation system 302 from the external pairing system 395 (e.g., for security purposes) and control the information exchanged between the two systems. An example of the interface 385 can be a public or private proprietary application programming interface (API) provided through a network (e.g., the Internet or a telecommunications network) (not shown).
[0060] The external pairing system 395 may be provided by a third-party vendor, and the external pairing system 395 may provide a pairing strategy (e.g., behavioral pairing (BP)) that improves the performance of the task assignment system 302 compared to the pairing strategy (or multiple pairing strategies) of the internal pairing system 390. The external pairing system 395 may also provide the same or similar pairing strategy as the internal pairing system 390.
[0061] The external pairing system 395 may have access to less information associated with the switch 380 relative to the internal pairing system 390, e.g., a limited subset of information selected and shared by the switch 380. Similarly, the external pairing system 395 may have less control over the operation of the switch 380 relative to the internal pairing system 390. Such information and / or control is generally sufficient for the external pairing system 395 to determine task-agent pairings and communicate the determined task-agent pairings to the switch 380; however, such limited control negatively impacts the performance of the external pairing system 395.
[0062] The task allocation system 302 can operate under shared control, where the switch 380 can send routing requests to one or both of the internal pairing system 390 and the external pairing system 395 to determine which task will be routed to which agent. Shared control may be desirable, for example, when the internal pairing system 390 employs a traditional or proprietary pairing strategy (e.g., FIFO or PBR) that may not be provided by the external pairing system 395, while the external pairing system 395 is used to provide a higher performance pairing strategy (e.g., BP).
[0063] When the external pairing system (EPS) 395 includes the same or similar pairing strategy as the internal pairing system 390, the task allocation system 302 can operate under full control so that the switch 380 sends all route requests to the external pairing system 395. In other words, the EPS 395 has full control over determining each task-agent pairing. Under full control, at times, the EPS 395 can simulate / mimic the pairing strategy of the internal pairing system (IPS) 390 (e.g., FIFO or PBR), and at other times, adopt a different pairing strategy (e.g., BP), and send its pairing recommendation to the switch 380 through the interface 385. The switch 380 can then assign tasks 320 to agents 330 based on the pairing recommendation.
[0064] Figure 4 4 is a flow chart illustrating a process 400 performed by the system 300. In one embodiment, the process 400 begins at step 402. Step 402 includes the EPS 395 providing a pairing instruction to the switch 380, the pairing instruction including an agent identifier (ID) identifying the agent and a contact ID identifying the contact with which the agent is to be paired. Step 404 includes the switch 380 executing the pairing instruction (i.e., connecting the agent with the contact). Assuming the switch successfully pairs the agent with the contact, the switch 380 sets the event indicator of the agent to a specific value (e.g., "connected"). Step 406 includes the switch 380 (or IPS 390) updating the agent's agent state object based on the event indicator and the agent's current state object. Step 408 includes the switch 380 (or IPS 390) transmitting the updated agent SI to the EPS 395. Step 410 includes the EPS 395 updating the agent's agent state object based on the updated agent SI received from the system switch 380 (or IPS 390).
[0065] Process 400 is inefficient because EPS 395 relies on internal components (e.g., switch 380 and / or IPS 390) to maintain and update SI for each agent; however, EPS 395 must have accurate SI in order to properly pair agents with contacts, and therefore, EPS 395 may experience time delays waiting for switch 380 and / or IPS 390. Such time delays reduce the operational efficiency of EPS 395 because EPS 395 may need to make multiple pairing decisions per second in a high-throughput contact center environment. Therefore, systems and methods are needed so that EPS 395 does not rely on status updates from switch 380 and / or IPS 390.
[0066] Furthermore, process 400 is a "stateful" process that requires sequential processing of pairing instructions and updating of SI. If node 200 is used in system 300 according to method 400, process 300 will stop various "stateless" features of node 200. Therefore, there is a need for systems and methods for maintaining seat SI by EPS 395; and further, there is a need for systems and methods for maintaining seat SI in a stateless and / or lockless manner.
[0067] Figure 5 A general node 500 of a communication system according to an embodiment is shown, which may be used to implement a companion node 200. In the embodiment shown, the node 500 includes modules (eg, microservices), such as, for example Figure 2 221, batch selector 220, ASM 299, etc.) and a shared memory segment 510 within memory 599. Specifically, in the example shown, node 500 includes three microservices: MS1, MS2, and MS3. Each microservice includes a shared memory submodule 502 (also referred to as a shared memory library (SHM_lib)) that enables the microservice containing it to read from and write to SHM 510. In one embodiment, each microservice is contained in its own container (e.g., Docker ® container). In one embodiment, one or more modules of the node 200 (e.g., the evaluator 221, the batch selector 220, etc.) include an instance of SHM_lib502. In some embodiments, each microservice is trusted to operate on the shared memory segment 510 through the functionality of SHM_lib502, thereby eliminating the need for the operating system kernel to manage memory protection between different microservices. In addition, each microservice can be developed and maintained more efficiently because any complexity of operating on the shared memory segment 510 is implemented and managed by the SHM_lib502 of each microservice.
[0068] Example of state transition
[0069] When an agent is on a call with a contact, the agent's current state may be "Connected". Each agent is always associated with a state object that includes at least i) a current state indicator (CSI) indicating the agent's current state, and ii) a pending state indicator (PSI) indicating the agent's pending state. The pending state is a state that the system expects the agent to transition to immediately after resolution of the current state. For example, because the agent should complete "After Call Work" (or "ACW"), such as updating notes about the interaction of a contact immediately after a call is terminated, when the agent's current state is "Connected" (i.e., CSI=Connected), the agent typically has a pending state assigned as ACW (i.e., PSI=ACW).
[0070] Consider the following scenario: For a particular agent LI=0, CSI=Connected, PSI=ACW, and the agent attempts to continue the break by pressing the "request break" button on the agent. In this case, the event indicator (EI) will be "on_break". Based on the LI, CSI, PSI, and EI, the ASM 299 will determine a new PSI for the agent (i.e., on_break), and then update the agent's state object so that the PSI changes from ACW to on_break. Note that the CSI remains the same in this scenario.
[0071] Consider another case where LI = 0, CSI = Connected, PSI = on_break for the agent, and the call the agent is handling terminates naturally. In this scenario, EI = "Call_Terminated", and based on LI, CSI, PSI, and EI, ASM 299 will determine a new CSI (i.e., on_break) for the agent, and then update the agent's state object so that CSI changes from Connected to on_break. Note that PSI remains the same in this scenario.
[0072] Consider another case where LI=0, CSI=on_break, PSI=on_break for the agent, and the agent has indicated to the system that the agent has ended its interruption. In this scenario, EI="end_break", and based on LI, CSI, PSI, and EI, ASM 299 will determine a new CSI (i.e., idle) and a new PSI (i.e., idle) for the agent, and then update the agent's state object so that CSI changes from on_break to idle and PSI changes from on_break to Idle.
[0073] Sample Event
[0074] Table 1 below identifies a set of possible event indicators and corresponding descriptions.
[0075] Table 1
[0076]
[0077] Figure 6 is a flow chart illustrating a process 600 performed by one or more modules of the node 200 or 500 according to an embodiment. The process 600 may begin at step 602.
[0078] Step 602 includes MS1 (e.g., ASM299) obtaining agent state transition (AST) information. AST information is information that enables MS1 to determine a new state object (NSO) of an agent based on an event indicator (EI), a load indicator (LI) indicating the current load of the agent, and the current state object (CSO) of the agent. Table 2 below illustrates an example of AST information:
[0079] Table 2
[0080]
[0081] In the above example, the state object is a vector containing two elements: 1) CSI and 2) PSI. Because the state vector shown contains two objects, it can also be called a tuple. If the state vector has n elements, the state vector can be called an "n-tuple". In some embodiments, the load indicator (LI) is an element of the state object. As an example, given the AST information in Table 2 above and assuming the following for a given agent: EI=call_terminated; LI=0, CSO=[CSI=Connected, PSI=ACW], the agent's new state object (NSO) will contain the following information: CSI=ACW, PSI=idle.
[0082] Step 604 includes MS2 determining an agent event for the first agent.
[0083] Step 606 includes MS2 adding a message to a message queue in SHM 510 , wherein the message includes an agent identifier (AI) identifying the first agent and an EI identifying the determined agent event. Figure 8 An example message queue MQ1 is shown in FIG.
[0084] Step 608 includes MS1 (eg, ASM 299 ) reading the message from the message queue.
[0085] Step 610 includes MS1 using the AI from the message to obtain SI associated with the AI, the SI including the LI and CSO for the first agent. In one embodiment, the SI associated with the AI is stored in the shared memory segment 510 at a memory location associated with the AI (e.g., the AI may be associated with a memory pointer pointing to the memory location).
[0086] Step 612 includes MS1 determining the NSO of the first agent based on the EI, CSO, LI and agent state transition information contained in the message.
[0087] Step 614 includes MS1 updating the stored SI associated with the AI so that the determined NSO becomes the CSO of the first agent (eg, the CSO in the SI is replaced by the NSO so that the NSO becomes the CSO). The SI associated with the AI may be stored in the shared memory segment 510 at a memory location associated with the AI.
[0088] Figure 7 is a flow chart illustrating a process 700 performed by one or more modules of the node 200 or 500 according to an embodiment. The process 700 may begin at step 702.
[0089] Step 702 includes MS1 (e.g., ASM299) obtaining an agent state transition management data table, an example of which is shown in Table 3 below. In the example shown, the table includes M rows, where each row is indexed by an index value (e.g., row M is indexed by index value VM); each row includes N new state objects (NSOs); and each field in the row corresponds to a specific state indicator value (e.g., the second field of each row corresponds to the state indicator value of SI_2). Therefore, a tuple consisting of an index value and a state indicator value maps to a specific state object. As described below, the agent state transition management data table is another example of AST information (i.e., information that enables MS1 to determine an agent's NSO based on the agent's EI, LI, and CSO).
[0090] Table 3
[0091]
[0092] The index value (V) is a value that is a function of the EI, LI, and PSI (i.e., an "index value function"). For example, in one embodiment, each value of the EI is associated with a unique numerical value; similarly, each value of the PSI is associated with a unique numerical value. In some examples, the unique numerical value associated with each EI and PSI can be configured so that the function of V results in numerical sequential values of various combinations of EI, LI, and PSI (e.g., V=row number). In order to achieve this numerical sequential output, the numerical values associated with each EI and PSI can be separated by 5, 10, 15, 20, etc. between adjacent EIs / PSIs (i.e., "Interval"). Similarly, the numerically first EI (i.e., "event start value") or PSI in a set of digitally ordered EIs or PSIs can have a starting value offset from zero, which can be input into the index value function.
[0093] Thus, for example: V=(((EI–ESV) / Interval)+(PSIx(TEx2)+LI)), where TE is the total number of possible events (e.g., 16) and ESV is the event start value (e.g., 20). Thus, in this embodiment, each EI is a unique integer rather than a unique string, and each PSI is a unique integer rather than a unique string. Any other index value function may be used that outputs appropriate row numbers for various combinations of EI, PSI, and LI (e.g., V=EI+PSI-LI, V=EI*PSI / Interval+LI, V=LI*Interval+PSI*TE-EI, and / or any other index value formula that may be configured based on EI, PSI, LI, and other variables as contemplated herein). In some examples, the numerical values associated with each EI and PSI may be configured such that multiple combinations of EI, PSI, and LI result in the same index value. Such a configuration may improve computational efficiency and speed in determining new state objects.
[0094] The index-valued function provides a computationally efficient solution and is a method that can be solved quickly (e.g., on the order of milliseconds) to determine the correct new state object for a set of inputs. These efficiencies are particularly beneficial when the system includes a large number of possible states and transitions, all of which need to be accurately and quickly tracked for a large number of agents. In some embodiments, more common new state objects can be sorted earlier in the table for even greater computational resource and time efficiencies.
[0095] Table 4 below shows an example of mapping EI in a string form to EI in an integer form, and Table 5 below shows an example of mapping PSI in a string form to PSI in an integer form.
[0096] Table 4
[0097]
[0098] Table 5
[0099]
[0100] Step 704 includes MS1 detecting an agent event and obtaining an EI of the event and an AI identifying the agent to which the agent event applies. For example, in one embodiment, detecting an agent event includes detecting that an event message has been added to a message queue (e.g., Figure 8 The queue MQ1, queue MQ2, queue MQ3 or queue MQ4 shown in FIG. 1 ), and obtaining the EI and AI includes reading the EI and AI from the event message.
[0101] Step 706 includes MS1 using the acquired AI to acquire the SI of the agent, where the SI includes the LI, CSI and PSI of the agent.
[0102] Step 708 includes MS1 obtaining an index value using the obtained EI, LI and PSI. For example, MS1 calculates the index value by using a predetermined formula configured to output index values for various combinations of EI, ESV, LI and PSI (eg, the index value function described above).
[0103] Step 710 includes MS1 using the index value and the obtained CSI to obtain the NSO of the agent (i.e., the NSO to which the tuple consisting of the index value and the obtained CSI is mapped by the agent state transition management data table). For example, MS1 searches the agent state transition management data table for the NSO corresponding to the index value / CSI pair. Taking Table 3 as an example, if the index value is V3 and the CSI value is SI_2, the NSO corresponding to the tuple [V3, SI_2] is NSO_2N+1. As a more specific example, assuming that the value V3 is obtained by inputting into the index value formula: EI=260 (which corresponds to the event call_terminated), LI=0, and PSI=4 (which corresponds to ACW) and the value of SI_2 is "Connected" or 3, then NSO_2N+1 will be the following tuple: [CSI=ACW, PSI=Idle], which matches what is shown in the first row of Table 2.
[0104] Step 712 includes MS1 performing step 614 .
[0105] As described above, for some embodiments, when an event is detected, an event message is added to the message queue MQ1 (see Figure 8), where the message includes an EI indicating the detected event (the EI may be in string form or in integer form), and the AI identifies the agent to whom the event applies. However, in some embodiments, it is advantageous to have multiple additional message queues (e.g., see message queues MQ2, MQ3, and MQ4), because having multiple additional message queues may facilitate parallel processing of event messages.
[0106] Fig. 9 is a flow chart illustrating a process 900 for managing event messages performed by one or more modules of the node 200 or 500 according to an embodiment. The process 900 may begin at step 902.
[0107] Step 902 includes one or more MSs storing one or more event messages in MQ 1. In this embodiment, MQ 1 is a FIFO queue (ie, the message at the head of the queue is the oldest message in the queue, and new messages are appended to the tail of the queue).
[0108] Step 904 includes MS3 (or another MS) reading the event message at the head of MQ1 and determining a queue identifier (QI) based on the AI included in the event message. For example, in one embodiment, determining the QI includes calculating: QI=((AImod Qn)+2), where Qn is the number of additional message queues (in the example, Figure 8 , Qn=3). In this example, QI will be equal to 2, 3, or 4. For example, in one embodiment, determining the QI includes determining a hash value based on the AI, and determining the QI based on the hash value. In this way, the same AI always returns the same QI.
[0109] Step 906 includes MS3 adding the event message at the head of MQ1 to a message queue (eg, MQ2, MQ3, or MQ4) associated with the determined QI value.
[0110] Step 908 comprises MS3 removing the event message from MQ1 (the event messages following the removed event message, if any, are now located at the head of MQ1).
[0111] Step 910 includes MS3 determining whether MQ1 is now empty. If not, process 900 returns to step 904, otherwise step 910 is repeated.
[0112] exist Figure 8In the example shown, QI=2 when AI=A1 or A2; QI=3 when AI=A3 or A5; and QI=4 when AI=A4; and MQ2 is associated with QI=2, MQ3 is associated with QI=3, and MQ4 is associated with QI=4. Therefore, messages M1, M2, M3, and M6 are added to MQ2; messages M4, M5, and M8 are added to MQ3; and messages M7 and M9 are added to MQ4. It is worth noting that the messages in auxiliary queues MQ2, MQ3, and MQ4 are arranged in order for each agent, that is, M2, which belongs to A2, is still arranged in front of M6, which also belongs to A2, where M6 is submitted later in time than M2.
[0113] In some embodiments, MQ1 is not required. In such embodiments, each module that generates an agent event message associated with an agent determines a QI based on the agent's AI and then simply adds the event message to the message queue associated with the determined AI. For example, if MS1 generates an event message for an agent associated with agent identifier A4, MS1 will simply store the event message in MQ3 because there is no need to store the event message in MQ1.
[0114] Therefore, various microservices can submit messages that will update the status information of the agents in the lock-free system without waiting for the agent status information to be updated in advance by other microservices. Fig.10 As further described, the event information of each agent may be processed in sequence so that the agent status is properly maintained.
[0115] Fig.10 is a flow chart illustrating a process 1000 for managing event messages performed by one or more modules of the node 200 or 500 according to an embodiment. The process 1000 may begin at step 1002.
[0116] Step 1002 includes MS1 (or another MS) initiating a set of two or more message handlers (eg, a set of threads or a set of processes), each message handler corresponding to one of the additional message queues. Figure 8 As an example, MS1 may initiate at least three message handlers denoted as MH2, MH3, and MH4, where MHx corresponds to MQx (ie, MH2 corresponds to MQ2, MH3 corresponds to MQ3, etc.).
[0117] Step 1004 includes each message handler (MH) reading the event message at the head of the message queue corresponding to the MH (ie, MH2 reads the event message at the head of MQ2 and MH3 reads the event message at the head of MQ3). As described above, each event message contains EI and AI.
[0118] Step 1006 includes each MH determining a new state object (NSO) for the identified agent using the EI and AI from the message read in step 1004. That is, for example, MH2 determines the NSO using the EI and AI included in the message read from MQ2. MH2 may implement process 700 to determine the NSO.
[0119] Step 1008 includes each MH performing step 614 .
[0120] Thus, process 1000 provides an efficient multi-threaded process for handling agent state information updates, where updates for different agents can occur simultaneously, rather than each agent update being required to sequentially wait for all previous agent events to be handled (eg, as in process 400 ).
[0121] In summary, the present disclosure provides systems and methods that enable updating agent state objects for multiple agents in a dynamic, high-throughput contact center system. The present disclosure provides systems and methods that enable any microservice to cause a state update for any agent. In addition, the update of agent information can be "elastic" to the impact from microservices because the disclosed agent state information table can be used as a finite state machine to allow certain paths and exclude other paths based on the current state object of the agent, event information, and load information.
[0122] Fig.13 is a block diagram of a node 1300 (eg, node 1300 may be used as a partner node) for performing any of the processes disclosed herein, according to some embodiments. Fig.13As shown, the node 1300 may include: a processing circuit (PC) 1302, which may include one or more processors (P) 1355 (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 located in a single housing or in a single data center, or may be geographically distributed (i.e., the node 1300 may be a distributed computing device); at least one network interface 1349 (e.g., a physical interface or an air interface), including a transmitter (Tx) 1345 and a receiver (Rx) 1347, for enabling the node 1300 to transmit 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 1349 is connected (physically or wirelessly) (e.g., the network interface 1349 may be coupled to an antenna arrangement including one or more antennas for enabling the node 1300 to transmit / receive data wirelessly); and a storage unit (also referred to as a "data storage system") 1309, which may include one or more non-volatile storage devices and / or one or more volatile storage devices. In an embodiment in which the PC 1302 includes a programmable processor, a computer readable storage medium (CRSM) 1342 may be provided. The CRSM 1342 may store a computer program (CP) 1343 including a computer readable instruction (CRI) 1344. The CRSM 1342 may be a non-transitory computer readable medium, such as a magnetic medium (e.g., a hard disk), an optical medium, a memory device (e.g., a random access memory, a flash memory), etc. In some embodiments, the CRI 1344 of the computer program 1343 is configured so that when executed by the PC 1302, the CRI causes the node 1300 to perform the steps described herein (e.g., the steps described herein with reference to the flowchart). In other embodiments, the node 1300 may be configured to perform the steps described herein without requiring code. That is, for example, the PC 1302 may consist of only one or more ASICs. Therefore, the features of the embodiments described herein may be implemented in hardware and / or software.
[0123] Overview of Various Embodiments
[0124] A1. A pairing node, comprising: a memory; and a processing circuit coupled to the memory, wherein the pairing node is configured to: obtain an event indicator (EI) indicating an event of an agent; obtain a current state object (CSO) of the agent, the CSO comprising a current state indicator (CSI) indicating a current state of the agent and a pending state indicator (PSI) indicating a pending state of the agent; obtain an index value using at least one of the CSI or the PSI and the EI; obtain a new state object (NSO) of the agent using at least one of the CSI or the PSI and the index value; and associate the NSO with an agent identifier (AI) associated with the agent.
[0125] A2. A pairing node according to embodiment A1, wherein the pairing node is configured to obtain the NSO using at least one of the CSI or PSI and the index value by performing the following process, the process comprising: selecting a row from an agent state transition management data table using the index value; and selecting a field from the selected row using the CSI or PSI, wherein the selected field includes the NSO.
[0126] A3. The paired node of embodiment A1 or A2, wherein the paired node is configured to use the EI and PSI to obtain the index value by evaluating a function of at least the EI, PSI, and a load indicator (LI).
[0127] A4. A pairing node according to embodiment A3, wherein evaluating the function includes calculating one of the following: EI+PSI-LI, EIxPSI / Interval+LI, (EI-ESV) / Interval+PSIxTEx2+LI or LIxInterval+PSIxTE-EI, wherein TE is the total number of possible events, ESV is the event start value, and Interval is the interval of separation.
[0128] A5. The paired node of any one of embodiments A1-A4, wherein the paired node is configured to obtain the EI by reading a message including the EI from a message queue.
[0129] A6. The paired node of any one of embodiments A1-A5, wherein the paired node is configured to obtain the CSO of the agent by retrieving the CSO from a shared memory using the AI.
[0130] A7. The pairing node of embodiment A6 when dependent on embodiment A5, wherein the message further comprises the AI, and the pairing node is configured to obtain the AI from the message before using the AI to retrieve the CSO.
[0131] A8. The paired node of any one of embodiments A1-A7, wherein the paired node is configured to associate the NSO with the AI by storing the NSO in a memory location associated with the AI.
[0132] B1. A pairing node, comprising: a memory; and a processing circuit coupled to the memory, wherein the pairing node is configured to: obtain a first event message associated with a first agent, wherein the first event message includes a first agent identifier (AI) associated with the first agent; use the first AI to obtain a first queue identifier (QI); and add the first event message to a message queue associated with the first QI.
[0133] B2. The pairing node of embodiment B1, wherein the pairing node is configured to obtain the first event message by generating the first event message.
[0134] B3. The pairing node according to embodiment B1 or B2, wherein the pairing node comprises a first message queue (MQ1) for storing the first event message; and the pairing node is configured to obtain the first event message by reading the first event message from MQ1.
[0135] B4. The pairing node of embodiment B3, wherein the pairing node is further configured to remove the first event message from MQ1 after adding the first event message to the message queue associated with the first QI.
[0136] B5. A pairing node according to any one of embodiments B1-B4, wherein the pairing node is also operable to: obtain a second event message associated with a second seat, wherein the second event message includes a second AI associated with the second seat; use the second AI to obtain a second QI; add the second event message to a message queue associated with the second QI.
[0137] B6. The pairing node according to embodiment B5, wherein the second QI identifies the same message queue as the first QI.
[0138] B7. A pairing node according to embodiment B5, wherein the second QI identifies a message queue different from the first QI, and the pairing node is further configured to: initiate a first message handler (MH) for processing messages in the message queue associated with the first QI; and initiate a second MH for processing messages in the message queue associated with the second QI.
[0139] C1. A method 1100 (see Fig.11 ), including: obtaining an event indicator (EI) indicating an event of an agent (step 1102); obtaining a current state object (CSO) of the agent, the CSO including a current state indicator (CSI) indicating a current state of the agent and a pending state indicator (PSI) indicating a pending state of the agent (step 1104); obtaining an index value using at least one of the CSI or the PSI and the EI (step 1106); obtaining a new state object (NSO) of the agent using at least one of the CSI or the PSI and the index value (step 1108); associating the NSO with an agent identifier (AI) associated with the agent (step 1110).
[0140] C2. The method of embodiment C1, wherein obtaining the NSO using at least one of the CSI or PSI and the index value comprises: selecting a row from an agent state transition management data table using the index value; and selecting a field from the selected row using the CSI or PSI, wherein the selected field comprises the NSO.
[0141] C3. The method of embodiment C1 or C2, wherein using the EI and PSI to obtain the index value comprises evaluating a function of at least the EI, the PSI, and a load indicator (LI).
[0142] C4. A method according to embodiment C3, wherein evaluating the function includes calculating one of the following: EI+PSI-LI, EIxPSI / Interval+LI, (EI-ESV) / Interval+PSIxTEx2+LI, or LIxInterval+PSIxTE-EI, wherein TE is the total number of possible events, ESV is the event start value, and Interval is the interval of separation.
[0143] C5. The method of any one of embodiments C1-C4, wherein obtaining the EI comprises reading a message including the EI from a message queue.
[0144] C6. The method of any one of embodiments C1-C5, wherein obtaining the CSO of the agent comprises retrieving the CSO from a shared memory using the AI.
[0145] C7. The method of embodiment C6 when dependent on embodiment C5, wherein the message further comprises the AI, and the AI is obtained from the message before using the AI to retrieve the CSO.
[0146] C8. The method of any one of embodiments C1-C7, wherein associating the NSO with the AI comprises storing the NSO in a memory location associated with the AI.
[0147] D1. A method 1200 (see Fig.12 ), including: obtaining a first event message associated with a first agent, wherein the first event message includes a first agent identifier (AI) associated with the first agent (step 1202); using the first AI to obtain a first queue identifier (QI) (step 1204); adding the first event message to a message queue associated with the first QI (step 1206).
[0148] D2. The method of embodiment D1, wherein obtaining the first event message includes generating the first event message.
[0149] D3. The method of embodiment D1 or D2, wherein the first event message is stored in a first message queue (MQ1), and obtaining the first event message includes reading the first event message from MQ1.
[0150] D4. The method according to embodiment D3 also includes: after adding the first event message to the message queue associated with the first QI, removing the first event message from MQ1.
[0151] D5. The method according to any one of embodiments D1-D4 further includes: obtaining a second event message associated with a second seat, wherein the second event message includes a second AI associated with the second seat; using the second AI to obtain a second QI; and adding the second event message to a message queue associated with the second QI.
[0152] D6. A method according to embodiment D5, wherein the second QI identifies the same message queue as the first QI.
[0153] D7. A method according to embodiment D5, wherein the second QI identifies a message queue different from the first QI, and the method further includes: initiating a first message handler (MH) for processing messages in the message queue associated with the first QI; and initiating a second MH for processing messages in the message queue associated with the second QI.
[0154] E1. A computer program comprising instructions which, when executed by a processing circuit of a node, cause the node to perform the method of any one of embodiments C1-C8 or D1-D7.
[0155] 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 (1342).
[0156] 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 exemplary embodiments. In addition, unless otherwise specified herein or clearly contradictory to the context, any combination of the above elements in all possible variations thereof is encompassed by the present disclosure.
[0157] In addition, although the processes described above and shown in the accompanying drawings are shown as a series of steps, this is done for illustrative 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 pairing node, comprising: Memory; as well as a processing circuit coupled to the memory, wherein the paired node is configured to: Obtaining an event indicator (EI) indicating an event for the agent; Obtaining a current state object (CSO) for the agent, the CSO comprising a current state indicator (CSI) indicating a current state of the agent and a pending state indicator (PSI) indicating a pending state for the agent; Obtaining an index value using at least one of the CSI or the PSI and the EI; Retrieving a new state object (NSO) for the agent using at least one of the CSI or the PSI and the index value; and The NSO is associated with an agent identifier (AI) associated with the agent.
2. The paired node according to claim 1, wherein: The paired node is configured to obtain the NSO using at least one of the CSI or the PSI and the index value by performing the following process, the process comprising: Using the index value to select a row from an agent state transition management data table; and The CSI or PSI is used to select fields from a selected row, wherein the selected fields include the NSO.
3. The paired node according to claim 1 or 2, wherein: The partner node is configured as: The index value is obtained by evaluating a function of at least the EI, PSI and a load indicator (LI).
4. The paired node according to claim 3, wherein: Evaluating the function includes computing one of: EI + PSI – LI, EIxPSI / Interval + LI, (EI–ESV) / Interval + PSIxTEx2 + LI, or LIxInterval + PSIxTE – EI, where TE is the total number of possible events, ESV is the event start value, and Interval is the spacing between the separators.
5. The paired node according to any one of claims 1 to 4, wherein: The pairing node is configured to obtain the EI by reading a message including the EI from a message queue.
6. The paired node according to any one of claims 1 to 5, wherein: The partner node is configured to obtain the CSO for the agent by retrieving the CSO from a shared memory using the AI.
7. A paired node according to claim 6 when dependent on claim 5, wherein The message also includes the AI; and The pairing node is configured to obtain the AI from the message before using the AI to retrieve the CSO.
8. The paired node according to any one of claims 1 to 7, wherein: The partner node is configured to associate the NSO with the AI by storing the NSO in a memory location associated with the AI.
9. A pairing node, comprising: Memory; as well as a processing circuit coupled to the memory, wherein the paired node is configured to: Obtaining a first event message associated with a first agent, wherein the first event message includes a first agent identifier (AI) associated with the first agent; Using the first AI to obtain a first queue identifier (QI); and The first event message is added to a message queue associated with the first QI.
10. The paired node according to claim 9, wherein: The pairing node is configured to obtain the first event message by generating the first event message.
11. The paired node according to claim 9 or 10, wherein: The paired node comprises a first message queue (MQ1) for storing the first event message; The paired node is configured to obtain the first event message by reading the first event message from MQ1.
12. The paired node according to claim 11, wherein: The partner node is further configured to: After adding the first event message to the message queue associated with the first QI, the first event message is removed from MQ1.
13. The paired node according to any one of claims 9 to 12, wherein: The paired node is further operable to: Acquire a second event message associated with a second seat, wherein the second event message includes a second AI associated with the second seat; Using the second AI to obtain a second QI; and The second event message is added to a message queue associated with the second QI.
14. The paired node according to claim 13, wherein: The second QI identifies the same message queue as the first QI.
15. The paired node according to claim 13, wherein: The second QI identifies a message queue different from the first QI, and The partner node is further configured to: Initiating a first message handling program (MH) for processing messages in the message queue associated with the first QI; and A second MH is initiated to process messages in the message queue associated with the second QI.
16. A method (1100) comprising: Obtaining an event indicator (EI) indicating an event for an agent (1102); Obtaining a current state object (CSO) for the agent, the CSO comprising a current state indicator (CSI) indicating a current state of the agent and a pending state indicator (PSI) indicating a pending state for the agent (1104); Obtaining an index value using at least one of the CSI or the PSI and the EI (1106); obtaining a new status object (NSO) for the agent using at least one of the CSI or the PSI and the index value (1108); and The NSO is associated with an agent identifier (AI) associated with the agent (1110).
17. The method according to claim 16, wherein: Acquiring the NSO using at least one of the CSI or the PSI and the index value includes: Using the index value to select a row from an agent state transition management data table; and The CSI or PSI is used to select fields from a selected row, wherein the selected fields include the NSO.
18. The method according to claim 16 or 17, wherein: Using the EI and PSI to obtain the index value includes evaluating a function of at least the EI, the PSI, and a load indicator (LI).
19. The method according to claim 18, wherein: Evaluating the function includes computing one of: EI + PSI – LI, EIxPSI / Interval + LI, (EI–ESV) / Interval + PSIxTEx2 + LI, or LIxInterval + PSIxTE – EI, where TE is the total number of possible events, ESV is the event start value, and Interval is the spacing between the separators.
20. The method according to any one of claims 16 to 19, wherein: Acquiring the EI includes reading a message including the EI from a message queue.
21. The method according to any one of claims 16 to 20, wherein: Acquiring the CSO for the agent includes: The AI is used to retrieve the CSO from shared memory.
22. A method according to claim 21 when dependent on claim 20, wherein: The message also includes the AI; and The AI is obtained from the message before using the AI to retrieve the CSO.
23. The method according to any one of claims 16 to 22, wherein: Associating the NSO with the AI includes: The NSO is stored in a memory location associated with the AI.
24. A method (1200) comprising: Obtaining a first event message associated with a first agent, wherein the first event message includes a first agent identifier (AI) associated with the first agent (1202); Using the first AI to obtain a first queue identifier (QI) (1204); and The first event message is added to a message queue associated with the first QI (1206).
25. The method according to claim 24, wherein: Acquiring the first event message includes generating the first event message.
26. The method according to claim 24 or 25, wherein storing the first event message in a first message queue (MQ1), and Acquiring the first event message includes: Read the first event message from MQ1.
27. The method according to claim 26, further comprising: After adding the first event message to the message queue associated with the first QI, the first event message is removed from MQ1.
28. The method according to any one of claims 24 to 27, further comprising: Acquire a second event message associated with a second seat, wherein the second event message includes a second AI associated with the second seat; Using the second AI to obtain a second QI; and The second event message is added to a message queue associated with the second QI.
29. The method according to claim 28, wherein: The second QI identifies the same message queue as the first QI.
30. The method of claim 28, wherein: The second QI identifies a message queue different from the first QI, and The method further comprises: Initiating a first message handling program (MH) for processing messages in the message queue associated with the first QI; and A second MH is initiated to process messages in the message queue associated with the second QI.
31. A computer program (1343) comprising instructions (1344) which, when executed by a processing circuit (1302) of a node, cause the node to perform a method according to any one of claims 16 to 23 or 24 to 30.
32. A carrier comprising a computer program according to claim 31, wherein: The carrier is one of an electronic signal, an optical signal, a radio signal and a computer-readable storage medium (1342).