The post that sparked this topic:
My contribution to this topic:
Agent2 is a primary resource for Q2, which takes a lot of calls. At any given time there are always at least 5 calls in queue. Agent1 is a primary resource for Q1, which takes fewer calls than Q2, and rarely has calls waiting in queue. Agent1 is special, because he/she is cross-trained in Q2 and helps out when needed. Agent1 should never take a call for Q2 if a call for Q1 is waiting; regardless of how long the caller in Q2 has been waiting.
CSQs select their resources independently of what is going on in other CSQs. They only look at their own available resource pool. If a resource is available, that resource becomes the selected resource to handle the current contact; regardless of that resource's other CSQ associations.
Agent1 runs the risk of helping Q2 callers who have been waiting longer than Q1 callers, even though he/she should be primarily helping Q1 callers.
Agent1 (Skills: Q1 ; Q2 )
Agent2 (Skills: Q2 )
Q1_t1 (Most Skilled; Skill Q1 - 6 and above)
Q1_t2 (Most Skilled; Skill Q1 - 1 and above)
Q2_t1 (Most Skilled; Skill Q2 - 6 and above)
Q2_t2 (Most Skilled; Skill Q2 - 1 and above)
You create a tiered structure out of your CSQs.
Instead of having 10 levels of skill to choose from, you have 5. You can think of this like a 5 star rating for your agents.
We take advantage of the fact that scripts are interruptible, and at any time during a queue loop an agent becomes available, they will be placed into reserved state immediately.
We also take advantage of the fact that, if a resource is Ready in a second tier queue, then we know that there are no callers waiting in their primary queue. Otherwise, the resource would be reserved, talking, or not ready.
In your Q2 script, select from Q2_t1 first.
If queued and if Get Reporting Statistics shows > 0 resources Ready in Q2_t2, then select from Q2_t2. Dequeue if queued or if a Connect step failure occurs.
This creates a situation where Agent1, who is skilled in both CSQs, empties his/her primary queue (Q1_t1) before ever taking a call from his/her secondary queue (Q2_t2). If no calls are waiting in Q1, then he/she is still eligible to help out Q2.
1. There would be a change in the way you look at reporting.
2. There are now two CSQs, because you cannot change the skill criteria in a script.
3. In a rare instance the secondary script could get the report stats, see 1 resource ready, and right as it executes the select resource step, the primary script executes its own select resource step. Agent1 is now talking to a secondary contact, and his/her primary contact has to wait.
The likely hood of this happening increases as callers waiting in Q2 increases.
What are some of your thoughts on this topic?
How have you solved cross-training previously?
What would you add, subtract, or modify from my proposed solution?