IP Library Granted Patent US 10,382,625
Granted Patent B2
US 10,382,625 · App. 15/896,012 · Granted Aug 13, 2019

Scalable approach to agent-group state maintenance in a contact center

Inventor: Vitaly Y. Barinov (Clayton, CA)
H04M3/51H04M2203/402H04M2203/558
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,382,625
App. No.
15/896,012
Granted
Aug 13, 2019
Kind
B2
Abstract

A system and method for aggregating state information in a contact center. Agent-owner nodes aggregate state information for the agents they own, and, upon request from a client-side adapter, provide partial agent-group state information to the client side adapter. The client-side adapter aggregates the partial agent-group state information to form full agent-group state information and provides this full agent-group state information to clients upon request.

Claims (73)

1. A system, comprising:

a first server, comprising one or more processors and a first memory, wherein the first memory stores instructions that, when executed by the first server, cause the first server to:

instantiate a plurality of first nodes, the instantiating including associating one or more agents to each of the plurality of first nodes based on a mapping of an agent identifier of each of the one or more agents to a node identifier of the first node, wherein each of the plurality of first nodes is configured to aggregate state information for each agent associated to the first node, the state information comprising state information for one or more directory numbers to which the agent is logged;

a second server, comprising one or more processors and a second memory, wherein the second memory stores instructions that, when executed by the second server, cause the second server to:

instantiate an adapter coupled to a client;

obtain partial agent-group state information from each of the plurality of first nodes;

aggregate the partial agent-group state information to form aggregated agent-group state information; and

output the aggregated agent-group state information to the client for routing an interaction to a particular agent;

wherein each of the plurality of first nodes is further configured to:

receive an agent-group identifier for the agent-group;

determine whether each of the agents associated to the first node is a member of the agent-group; and

send to the adapter agent-state information for each of the agents associated to the first node who is a member of the agent-group.

2. The system of claim 1 , wherein the aggregated agent-group state information is full agent-group state information.

3. The system of claim 1 , wherein the aggregated agent-group state information is partially aggregated agent-group state information.

4. The system of claim 1 , wherein the first memory further stores instructions that, when executed by the first server, cause the first server to instantiate a plurality of second nodes configured:

to obtain agent state information from one or more data sources or from one or more other second nodes, and to communicate agent state information to one or more first nodes of the plurality of first nodes.

5. The system of claim 1 , wherein the plurality of first nodes are configured to be associated with mutually exclusive sets of agents.

6. The system of claim 1 , wherein the first server and the second server are not the same server.

7. The system of claim 6 , wherein the first server and the second server are configured to enable communication between the adapter and the plurality of first nodes over a Transmission Control Protocol and Internet Protocol (TCP/IP) connection.

8. The system of claim 1 , wherein each of the plurality of first nodes is configured:

to determine whether the agent associated with the first node is in a list of agents defining an actual agent group when the agent group is the actual agent group, and

to evaluate a predicate expression corresponding to a virtual agent group with a set of characteristics for the agent associated with the first node when the agent group is the virtual agent group,

in order to determine whether each agent associated to the first node is a member of the agent group.

9. The system of claim 8 , wherein the predicate expression is configured to accept a set of skill level ratings corresponding to an agent's skills, and to return a value of true or false.

10. The system of claim 1 , wherein the adapter is configured to request a connection with each of the plurality of first nodes and each of the plurality of first nodes is configured to establish a connection with the adapter.

11. The system of claim 10 , wherein the adapter is configured to purge agent state information for each agent associated to the first node when the connection between the first node and the adapter is broken.

12. A method, comprising:

instantiating, by a first server, a plurality of first nodes, the instantiating including associating one or more agents to each of the plurality of first nodes based on a mapping of an agent identifier of each of the one or more agents to a node identifier of the first node;

receiving, by each of the plurality of first nodes, agent state information from a plurality of data sources, the state information comprising state information for one or more directory numbers to which the agent is logged;

aggregating, by each of the plurality of first nodes, the received agent state information into full agent state information;

combining, by each of the plurality of first nodes, of the full agent state information corresponding to each of one or more agents in an agent group into partial agent-group state information;

instantiating, by a second server, an adapter coupled to a client;

establishing, by the adapter, a connection with each of the plurality of first nodes;

requesting, by the adapter, from each of the plurality of first nodes, the partial agent-group state information;

providing, by each of the plurality of first nodes, to the adapter, the partial agent-group state information, wherein the providing by the plurality of first nodes, to the adapter, of the partial agent-group state information comprises:

determining, for each agent associated to each of the plurality of first nodes, whether the agent is a member of the agent group; and

including, in response to determining that the agent is a member of the agent group, agent state information, for the agent, in the partial agent-group state information;

receiving, by the adapter, the partial agent-group state information from each of the plurality of first nodes; and

aggregating, by the adapter, the partial agent-group state information into aggregated agent-group state information; and

outputting, by the adapter, the aggregated agent-group state information to the client for routing an interaction to a particular agent.

13. The method of claim 12 , wherein the aggregated agent-group state information is full agent-group state information.

14. The method of claim 12 , wherein the aggregated agent-group state information is partially aggregated agent-group state information.

15. The method of claim 12 , wherein the first server and the second server are not the same server.

16. The method of claim 12 , wherein the associating of the one or more agents to each of the first nodes comprises associating a particular one of the one or more agents exclusively to one of the first nodes.

17. The method of claim 12 , further comprising,

establishing, by the adapter, a connection with each of the plurality of first nodes;

requesting, by the adapter, from each of the plurality of first nodes, the partial agent-group state information; and

providing, by each of the plurality of first nodes, to the adapter, the partial agent-group state information.

18. The system of claim 1 , wherein the mapping is a static hash function.

19. A system, comprising:

a first server, comprising one or more processors and a first memory, wherein the first memory stores instructions that, when executed by the first server, cause the first server to instantiate:

a plurality of agent-owner nodes, each agent-owner node of the plurality of agent-owner nodes being configured to own one or more agents; and

to maintain state information for each agent owned by the agent-owner node; and

a second server, comprising one or more processors and a second memory, wherein the second memory stores instructions that, when executed by the second server, cause the second server to instantiate:

a client-side adapter, configured to obtain partial agent-group state information from each agent-owner node of the plurality of agent-owner nodes; and

to aggregate the partial agent-group state information to form aggregated agent-group state information;

wherein, each agent-owner node of the plurality of agent-owner nodes is configured:

to receive an agent-group identifier;

to determine whether each of the agents owned by the agent-owner node is a member of the agent group; and

to send to the client side adapter agent-state information for each of the agents owned by the agent-owner node who is a member of the agent group.

20. A method, comprising:

instantiating, by a first server, a plurality of agent-owner nodes;

receiving, by each agent-owner node, agent state information from a plurality of data sources;

aggregating, by each agent-owner node, the received agent state information into full agent state information;

combining, by each agent-owner node, of the full agent state information corresponding to each of one or more agents in an agent group into partial agent-group state information;

instantiating, by a second server, a client-side adapter;

receiving, by the client-side adapter, the partial agent-group state information from each agent-owner node;

aggregating, by the client-side adapter, the partial agent-group state information into aggregated agent-group state information;

establishing, by the client-side adapter, a live connection with each agent-owner node;

requesting, by the client-side adapter, from each agent-owner node, the partial agent-group state information; and

providing, by each agent-owner node, to the client-side adapter, the partial agent-group state information by:

determining, for each agent owned by each agent-owner node, whether the agent is a member of the agent group; and

including, if the agent is a member of the agent group, agent state information, for the agent, in the partial agent-group state information.

Assignments (5)
NOTICE OF SUCCESSION OF SECURITY INTERESTS AT REEL/FRAME 050860/0227 Recorded Feb 3, 2025
From: BANK OF AMERICA, N.A., AS RESIGNING AGENT
To: GOLDMAN SACHS BANK USA, AS SUCCESSOR AGENT
Reel/Frame 070096/0452 →
CHANGE OF NAME Recorded May 13, 2024
From: GENESYS TELECOMMUNICATIONS LABORATORIES, INC.
To: GENESYS CLOUD SERVICES, INC.
Reel/Frame 067391/0085 →
CORRECTIVE ASSIGNMENT TO CORRECT THE TO ADD PAGE 2 OF THE SECURITY AGREEMENT WHICH WAS INADVERTENTLY OMITTED PREVIOUSLY RECORDED ON REEL 049916 FRAME 0454. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT. Recorded Oct 29, 2019
From: GENESYS TELECOMMUNICATIONS LABORATORIES, INC.
To: BANK OF AMERICA, N.A.
Reel/Frame 050860/0227 →
SECURITY AGREEMENT Recorded Jul 31, 2019
From: GENESYS TELECOMMUNICATIONS LABORATORIES, INC.
To: BANK OF AMERICA, N.A.
Reel/Frame 049916/0454 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 6, 2018
From: BARINOV, VITALY Y.
To: GENESYS TELECOMMUNICATIONS LABORATORIES, INC.
Reel/Frame 045125/0069 →
Continuity (2)
Continuation 13672572 · Nov 8, 2012
Related Publication 20180176375A1 · Jun 21, 2018