Video link:
You might have noticed this feature in the Connect applet. The ideal goal of this feature is to route an equal number of calls to all the agents in a group.
In other words, enabling this option routes the calls in a “round-robin” manner among all the agents in a group. Obviously, it also considers the availability of the agents at the moment the call arrives.
Let us say, there are four people in a group Ajay, Bhaskar, Chaitanya, and Dev with their numbers being 011xx, 022xx, 033xx, and 044xx respectively.
When the first call lands on the VN which is supposed to be equally distributed between the agents in this group, the system will first stack the agent numbers which are free (in this case all four) in ascending order of agent numbers and route the call to the agent with the first number in the stack, in this example it is Ajay. It will also mark Ajay’s position in the stack as the lastMarkedAgent ie, the last called agent for future reference.
If the same group is present in different flows then there will be different lastMarkedAgent for each flow.
Status of Agents prior to the 1st call
Ajay - 011xx - free
Bhaskar - 022xx - free
Chaitanya - 033xx - free
Dev - 044xx - free
Stack for the 1st call
Ajay - 011xx - the first call routed to Ajay and Ajay is the lastMarkedAgent now
Bhaskar - 022xx - free
Chaitanya - 033xx - free
Dev - 044xx - free
Now when the second call comes in, the stack will rearrange itself with all numbers above the last marked agent moving to the end of the stack. Please note in case the lastMarkedAgent number itself is busy, all free agent numbers which come above it when ascendingly arranged in the original stack will move to the end of the stack. In the example here, Ajay will be pushed below Dev and Bhaskar is the agent to whom the call will be routed, and Bhaskar is marked as the last marked agent. Please note, that it is now up to Bhaskar whether he answers the call or not which is handled as a standard flow of the connect applet which moves on to the next free agent if Bhaskar does not pick up the call in a while.
Status of Agents prior to the 2nd call
Ajay - 011xx - free - lastMarkedAgent
Bhaskar - 022xx - free
Chaitanya - 033xx - free
Dev - 044xx - free
Stack for the 2nd call
Bhaskar - 022xx - the second call routed to Bhaskar and Bhaskar is the lastMarkedAgent now
Chaitanya - 033xx
Dev - 044xx
Ajay - 011xx
Now let's say after N calls came into the system, the status looks like the below:
Status of Agents prior to (N+1)th call
Ajay - 011xx - busy
Bhaskar - 022xx - free
Chaitanya - 033xx - free
Dev - 044xx - free - lastMarkedAgent
When the (N+1)th call lands, Ajay should be marked as the lastMarkedAgent. But here since Ajay is busy, the stack will not consider him. As per the stack, the call will now route to Bhaskar. It's important to remember that the stack only consists of agent numbers that are at that point in time free to receive calls.
Stack for (N+1)th call
Bhaskar - 022xx - (N+1)th call is routed to Bhaskar and Bhaskar marked as lastMarkedAgent
Chaitanya - 033xx
Dev - 044xx
When the (N+2)th call lands, first both Ajay and Bhaskar will be pushed to the end of the stack (since the lastMarkedAgent is Bhaskar), then Chaitanya is marked as the lastMarkedAgent and the call is routed to him.
Status of Agents prior to (N+2)th call
Ajay - 011xx - free
Bhaskar - 022xx - free - lastMarkedAgent
Chaitanya - 033xx - free
Dev - 044xx - free
Stack for (N+2)th call
Chaitanya - 033xx - lastMarkedAgent - (N+2)th call routed to Chaitanya
Dev - 044xx
Ajay - 011xx
Bhaskar - 022xx
This way the equal distribution logic ensures that the calls are routed in a perfect ‘round robin’ manner, and the sorted list keeps moving in a round path. There are a couple of scenarios that need to be highlighted here
Scenario 1: The agent is in an “OFF” state and switches to “ON”
Exotel provides the option to individual agents to mark themselves as not available to receive calls by marking themselves as “OFF”. Agents who have marked themselves as “OFF” will not be considered in the stack itself. So there can be a scenario where an agent was initially in an “OFF” state and now marks themselves as ON, then the entry point for the person in the next calculated stack will be the place where they would fit if all the agent numbers were arranged in ascending order. Let us have a look at how this works.
Let us consider the scenario as shown below. Here Chaitanya is OFF. Naturally, the running stack would not have included him. So the current stack at the end of the Nth call looks like below, while Chaitanya is in OFF state.
Dev - 044xx - free - lastMarkedAgent | Chaitanya - 033xx - is in “OFF” state currently
Ajay - 011xx - free
Bhaskar - 022xx - free
Let's say now Chaitanya marks themselves as “ON”. He enters the stack on top of the number which is immediately succeeding them in ascending order. So the stack will now look like this.
Chaitanya - 033xx - free
Dev - 044xx - free - lastMarkedAgent
Ajay - 011xx - free
Bhaskar - 022xx - free
So when the (N+1)th call comes in all the numbers from the top till the lastMarkedAgent are moved to the end of the stack en block. The stack will now look like this:
Ajay - 011xx - free - (N+1) the call was routed to Ajay and marked as lastMarkedAgent
Bhaskar - 022xx - free
Chaitanya - 033xx - free
Dev - 044xx - free
Here, both Chaitanya and Dev move to the end of the stack. Ajay is marked as the lastMarkedAgent and the call is routed to him.
Scenario 2: “Sticky Agent” option is enabled
Exotel allows generating call flows which when enabled, every time the end-user calls in the VN will connect them to the agent he has earlier spoken to. In this case, let us go back to the stack that we had at the end of the Nth call.
Dev - 044xx - free - lastMarkedAgent
Ajay - 011xx - free
Bhaskar - 022xx - free
Chaitanya - 033xx - free
Now, the (N+1)th call comes in from a customer whose sticky agent is Chaitanya. In this case, Chaitanya will be promoted to the top when the stack is calculated and the call will be routed to him. However, Dev will still continue to be the lastMarkedAgent.
Chaitanya - 033xx - free - (N+1)th call routed to Chaitanya
Dev - 044xx - free - lastMarkedAgent
Ajay - 011xx - free
Bhaskar - 022xx - free
Just like in scenario 1, when the (N+2)th call would come in, then both Chaitanya and Dev would move to the end of the stack.
Contact us: If you have any questions or concerns, please connect with us using the chat widget on your Exotel Dashboard or Whatsapp us at 08088919888.