07-25-2011 10:25 AM - edited 03-14-2019 08:16 AM
Hello All,
I am not sure If I am using the right term here. I am stuck with a new requirement raised by the customer. PLease help me with this.
There are to groups of agents L1 and L2.
whenever a support call comes in, it should go to the agents in the L1 first and if all L1 agents are busy, then the call should go to L2. Now if both L1 and L2 agents are busy then call should be queued and routed to the first available agent in either of these.
Can you please help me with this.
regards
Abraham
Solved! Go to Solution.
07-25-2011 11:36 AM
What you're asking for is pretty straightforward. Your script will look something like this:
When your caller comes in, you place them in the Group 1 queue. If an agent is immediately available, great. If not, while still in queue for Group 1, you also place them in the Group 2 queue. If an agent is immediately available in Group 2, great. If not, you run whatever type of "sorry all agents are busy" treatment you like.
The key thing to learn and understand here is that you can have a caller waiting in two queues at once, and it's valid to put a caller in a second queue while in the hold loop for the first.
Many call centers want to introduce a delay between the two queues. For instance, they want the caller to wait for someone in Group 1 for up to X minutes, and then only as a fallback let Group 2 agents answer the call. If you have a similar requirement, you'd add some hold loop treatment and delay in the (Optional) place I show above.
07-25-2011 12:44 PM
You can do that, but it's the long way to get the same job done. Also, you lose some reporting data, and you need to do some more error handling.
If you do a Ready agents check on CSQ_1 (and CSQ_2), you still need to account for that call being queued rather than answered. Setting aside race conditions, you might have one agent Ready, but they might have walked away from their desk for some reason and they might not answer the call. Then you're in queue for CSQ_1 when you didn't expect to be, which you then have to handle with extra code in your script. Also, it's difficult to figure out how often you're bypassing CSQ_1 (for reporting purposes) since you were never in queue, so you don't know how effective CSQ_1 is at handling support calls. For that matter, the math starts to get complicated for something as simple as "how many calls did my support number get?" and you have to resort to other report types and combining reports to answer those simple questions.
If you just go ahead and put the caller into queue, you don't have to go through the extra ready-detection steps, the system only sends you to the Queued branch if nobody in CSQ_1 took the call right away (which is now your reliable trigger to fail over to CSQ_2). Also, if the caller isn't serviced by CSQ_1 (either because they were picked up from another queue or you manually dequeued them) the CSQ gets charged a Dequeue event which you can see in Historical Reporting.
If you use the simple, reliable method I outlined in my earlier reply, the code is very simple and it accomplishes what you need. You would only need two queues instead of three. And, you get useful reporting numbers that tell you more about the effectiveness of CSQ_1 and how much overflow was handled by CSQ_2.
If you're dead set against callers being in multiple queues (which is fully supported and normal and typical) then I would write it as: queue to CSQ_1, if queued dequeue and queue to CSQ_2, if queued dequeue and queue to CSQ_3. Still leaves reporting a mess, but at least avoids the unreliable ready agent check and the follow-on error handling code.
07-25-2011 11:36 AM
What you're asking for is pretty straightforward. Your script will look something like this:
When your caller comes in, you place them in the Group 1 queue. If an agent is immediately available, great. If not, while still in queue for Group 1, you also place them in the Group 2 queue. If an agent is immediately available in Group 2, great. If not, you run whatever type of "sorry all agents are busy" treatment you like.
The key thing to learn and understand here is that you can have a caller waiting in two queues at once, and it's valid to put a caller in a second queue while in the hold loop for the first.
Many call centers want to introduce a delay between the two queues. For instance, they want the caller to wait for someone in Group 1 for up to X minutes, and then only as a fallback let Group 2 agents answer the call. If you have a similar requirement, you'd add some hold loop treatment and delay in the (Optional) place I show above.
07-25-2011 11:41 AM
While I believe the solution offered is close, it has a potential problem.
With the call simoultaneously queued against 2 different CSQ's, you run the risk of ending up with agents stuck in reserved stated.
You should dequeue the call from the first queue before queueing it against the second queue.
Otherwise, I agree.
Cliff
07-25-2011 11:45 AM
Multiple queuing is perfectly valid and supported. If your system was getting agents stuck-in-reserved, you were encountering a separate bug or a problem with your script.
07-25-2011 12:17 PM
I am going to try this one with the help of Get Reporting Statistics - Ready Resources.
Please let me know if this works.
Logic Used
If Step 1 is False then Select Resource from CSQ_1
If Step 3 is False then Select Resource from CSQ_2
Regards,
Abraham
07-25-2011 12:44 PM
You can do that, but it's the long way to get the same job done. Also, you lose some reporting data, and you need to do some more error handling.
If you do a Ready agents check on CSQ_1 (and CSQ_2), you still need to account for that call being queued rather than answered. Setting aside race conditions, you might have one agent Ready, but they might have walked away from their desk for some reason and they might not answer the call. Then you're in queue for CSQ_1 when you didn't expect to be, which you then have to handle with extra code in your script. Also, it's difficult to figure out how often you're bypassing CSQ_1 (for reporting purposes) since you were never in queue, so you don't know how effective CSQ_1 is at handling support calls. For that matter, the math starts to get complicated for something as simple as "how many calls did my support number get?" and you have to resort to other report types and combining reports to answer those simple questions.
If you just go ahead and put the caller into queue, you don't have to go through the extra ready-detection steps, the system only sends you to the Queued branch if nobody in CSQ_1 took the call right away (which is now your reliable trigger to fail over to CSQ_2). Also, if the caller isn't serviced by CSQ_1 (either because they were picked up from another queue or you manually dequeued them) the CSQ gets charged a Dequeue event which you can see in Historical Reporting.
If you use the simple, reliable method I outlined in my earlier reply, the code is very simple and it accomplishes what you need. You would only need two queues instead of three. And, you get useful reporting numbers that tell you more about the effectiveness of CSQ_1 and how much overflow was handled by CSQ_2.
If you're dead set against callers being in multiple queues (which is fully supported and normal and typical) then I would write it as: queue to CSQ_1, if queued dequeue and queue to CSQ_2, if queued dequeue and queue to CSQ_3. Still leaves reporting a mess, but at least avoids the unreliable ready agent check and the follow-on error handling code.
07-26-2011 12:10 AM
Brilliant Plan jasyoung.. I am going to do that tonight.
But in my case this script is not straight forward. Let me explain.
1 TollFree number - 1 Trigger - Same script.
Caller presses 1 for Sales | 2 for Marketing | 3 for HR
Each of these Departments have L1 and L2 agents (L2 being more skilled) seperated into 2 CSQs of their own.
Now, Can you please let me know how do I implement the above plan when there are 3 Departments where a call can route to.
Regads,
Abraham
08-10-2011 01:38 AM
HI
I implemented this script and call flow is working fine as expected. There is one single problem now that is with reporting.
When a call is not picked by CSQ1 or CSQ2 and finally when it gets abandoned, abandoned call count is duplicated in both CSQ1 and CSQ 2 making the count double.
Is there a way to avoid this.
Abraham
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide