IP Library Granted Patent US 9,900,432
Granted Patent B2
US 9,900,432 · App. 13/672,572 · Granted Feb 20, 2018

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

Inventor: Vitaly Y. Barinov (Clayton, CA)
Assignee: GENESYS TELECOMMUNICATIONS LABORATORIES, INC.
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 9,900,432
App. No.
13/672,572
Granted
Feb 20, 2018
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 (76)

1. A system, comprising:

a first server, having 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 first nodes, wherein each of the one or more agents is associated with exactly one of the first nodes, and wherein each first node 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, wherein at least some of the one or more agents are also associated with an agent-group over a plurality of the first nodes, wherein each first node owns a subset of the one or more agents in the agent-group;

a second server, having 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;

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

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

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

an electronic switch configured to establish a communication session with a communication device of the particular agent in response to the routing of the interaction;

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

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

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

send to the client-side adapter agent-state information for each of the at least some of the one or more agents 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 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 client-side adapter and the first nodes over a Transmission Control Protocol and Internet Protocol (TCP/IP) connection.

8. The system of claim 1 , wherein the first node is configured:

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

to evaluate a predicate expression corresponding to the virtual agent group with a set of characteristics for the agent when the agent group is a 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. A system, comprising:

a first server, having 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 first nodes, wherein each of the one or more agents is associated with exactly one of the first nodes, and wherein each first node 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, wherein at least some of the one or more agents are also associated with an agent-group over a plurality of the first nodes, wherein each first node owns a subset of the one or more agents in the agent-group;

a second server, having 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, wherein the client-side adapter is configured to request a connection with each first node and each first node is configured to establish a connection with the client-side adapter;

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

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

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

an electronic switch configured to establish a communication session with a communication device of the particular agent in response to the routing of the interaction;

wherein the client-side adapter is configured to purge agent state information for each agent associated to a first node in response to the connection between the first node and the client-side adapter being broken.

11. A method, comprising:

instantiating, by a first server having one or more processors, a plurality of first nodes, the instantiating including associating one or more agents to each of the first nodes, wherein each of the one or more agents is associated with exactly one of the first nodes, wherein at least some of the one or more agents are also associated with an agent-group over a plurality of the first nodes, wherein each first node owns a subset of the one or more agents in the agent-group;

receiving, by each first node, 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 first node, the received agent state information into full agent state information;

combining, by each first 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 having one or more processors, a client-side adapter;

establishing, by the client-side adapter, a connection with each first node;

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

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

determining, for each agent associated to each first 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;

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

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

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

establishing, by an electronic switch, a communication session with a communication device of a particular agent in response to the routing of the interaction.

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

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

14. The method of claim 11 , wherein the first server and the second server are not the same server.

15. The method of claim 11 , wherein the associating of one or more agents to each of the first nodes comprises associating an agent exclusively to a first node.

16. The method of claim 11 wherein the determining, for each agent associated to each first node, of whether the agent is a member of the agent group, comprises:

determining whether the agent is in a list of agents defining the actual agent group when the agent group is an actual agent group and

evaluating a predicate expression corresponding to the virtual agent group with a set of characteristics for the agent when the agent group is a virtual agent group.

17. A method, comprising:

instantiating, by a first server having one or more processors, a plurality of first nodes, the instantiating including associating one or more agents to each of the first nodes, wherein each of the one or more agents is associated with exactly one of the first nodes, wherein at least some of the one or more agents are also associated with an agent-group over a plurality of the first nodes, wherein each first node owns a subset of the one or more agents in the agent-group;

receiving, by each first node, 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 first node, the received agent state information into full agent state information;

combining, by each first 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 having one or more processors, a client-side adapter;

establishing, by the client-side adapter, a connection with each first node;

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

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

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

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

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

purging, by the client-side adapter, of state information for each agent associated to the first node, in response to the connection between the client-side adapter and a first node being broken; and

establishing, by an electronic switch, a communication session with a communication device of a particular agent in response to the routing of the interaction.

18. The method of claim 11 , wherein the establishing of a connection, by the client-side adapter, with each first node comprises:

connecting, by the client-side adapter, to a third node;

requesting, by the client-side adapter, from the third node, a list of first nodes; and

providing, by the third node, to the client-side adapter, a list of first nodes.

Assignments (10)
NOTICE OF SUCCESSION OF SECURITY INTERESTS AT REEL/FRAME 04814/0387 Recorded Feb 5, 2025
From: BANK OF AMERICA, N.A., AS RESIGNING AGENT
To: GOLDMAN SACHS BANK USA, AS SUCCESSOR AGENT
Reel/Frame 070115/0445 →
NOTICE OF SUCCESSION OF SECURITY INTERESTS AT REEL/FRAME 040815/0001 Recorded Feb 3, 2025
From: BANK OF AMERICA, N.A., AS RESIGNING AGENT
To: GOLDMAN SACHS BANK USA, AS SUCCESSOR AGENT
Reel/Frame 070498/0001 →
CHANGE OF NAME Recorded May 13, 2024
From: GENESYS TELECOMMUNICATIONS LABORATORIES, INC.
To: GENESYS CLOUD SERVICES, INC.
Reel/Frame 067390/0340 →
SECURITY AGREEMENT Recorded Feb 22, 2019
From: GENESYS TELECOMMUNICATIONS LABORATORIES, INC.; ECHOPASS CORPORATION; GREENEDEN U.S. HOLDINGS II, LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 048414/0387 →
CORRECTIVE RELEASE FOR SECURITY INTEREST IN PATENTS ORIGINALLY RECORDED AT REEL/FRAME (029778/0939) Recorded Feb 27, 2017
From: JPMORGAN CHASE BANK, N.A., AS SUCCESSOR TO THE ORIGINAL COLLATERAL AGENT GOLDMAN SACHS BANK USA
To: GENESYS TELECOMMUNICATIONS LABORATORIES, INC.; ANGEL.COM INCORPORATED; UTOPY, INC.; SOUNDBITE COMMUNICATIONS, INC.
Reel/Frame 041821/0209 →
SECURITY AGREEMENT Recorded Dec 5, 2016
From: GENESYS TELECOMMUNICATIONS LABORATORIES, INC., AS GRANTOR; ECHOPASS CORPORATION; INTERACTIVE INTELLIGENCE GROUP, INC.; BAY BRIDGE DECISION TECHNOLOGIES, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 040815/0001 →
PATENT RELEASE (REEL:031644/FRAME:0814) Recorded Dec 2, 2016
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: GENESYS TELECOMMUNICATIONS LABORATORIES, INC., AS GRANTOR; ANGEL.COM INCORPORATED; UTOPY, INC.; SOUNDBITE COMMUNICATIONS, INC.
Reel/Frame 040798/0428 →
SECURITY AGREEMENT Recorded Nov 15, 2013
From: GENESYS TELECOMMUNICATIONS LABORATORIES, INC.; ANGEL.COM INCORPORATED; UTOPY, INC.; SOUNDBITE COMMUNICATIONS, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 031644/0814 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 20, 2013
From: BARINOV, VITALY Y.
To: GENESYS TELECOMMUNICATIONS LABORATORIES, INC.
Reel/Frame 029844/0107 →
SECURITY AGREEMENT Recorded Feb 8, 2013
From: GENESYS TELECOMMUNICATIONS LABORATORIES, INC.
To: GOLDMAN SACHS BANK USA
Reel/Frame 029778/0939 →
Continuity (1)
Related Publication 20140129617A1 · May 8, 2014