PROBLEM: Multiple Virtual Queues with calls targeting the same pool of agents have vastly different wait times.
This problem with priority has been resolved for me (Thanks Jody), but I wanted to share it with the community.
ORS version 8.1.400.58
URS version 8.1.400.32
Composer version 8.1.450.20
SCENARIOYou are in heavy call surplus conditions.
Your agents have multiple skills assigned to them.
There are 10 Virtual Queues (VQs) with calls waiting and each of them have sorted in the same way, highest priority and longest call waiting.
An agent comes available.
URS makes a list of the interactions or ConnIDs that the agent can handle in WAITING CALLS. The list is made up of the calls waiting in all VQs but they are ordered according to the highest priority and the longest wait time between the VQs.
PROBLEMWhen your routing strategy
overflows to a new skill but you
don't clear targets, the URS connid will be listed
more than once in the WAITING CALLS list.
WHY?
Because you didn't clear targets... which is ok really. There were multiple <queue:submit> requests with the same CONNID and they are in a different order in the list.
But if one interaction has multiple submit requests, how do I reprioritize the interaction?
I'm glad you asked. But first, lets understand why we have multiple targets.
CALL ROUTING STRATEGYYour first target is for a highly specialized group of agents who would handle the call in a fraction of the time regular agents could.
After 60 seconds, the wait time concern overrides the handle time concern and you add another skill to the skill expression to enlarge the pool of qualified agents who could handle the call. Don't clear targtets or you reset the time the call has been waiting for the first group of agents. Just add a skill to the target and submit it again (which is going to the next target block after the timeout error).
TARGET 1: "?:mySpecialAgents>=1@.GA"
TARGET2: "?:mySpecialAgents>=1 | myGeneralAgents>=1@.GA"
The calls are heavy today, and after 3 minutes its time to add another skill to answer this special call.
TARGET3: "?:mySpecialAgents>=1 | myGeneralAgents>=1 | myTrainees>=9@.GA"
After 10 minutes, its time to increase the priority, using SCXML tag:
<queue:update>
SAMPLE:
<queue:update requestid="myReqID" priority="toNumber(my_Priority)" />
When updating the
priority of an interaction, you can only specify the requestID. But if you don't clear targets, you have multiple request IDs!
My mistake was in using the original request ID from the <queue:submit> of the first target,
thinking I was changing the priority of the interaction.
When I did so, the first target was changed to a higher priority, but the second and third targets were left at priority 0.
Now I have a large number of general type calls, who have been repriopritized and are waiting 15 minutes, while my special call type, that targets the same pool of agents, is at priority 0 in the general VQ and waiting 25 minutes.
The fix was to save the request IDs from each of the <queue:submit> requests (URS returns the requestID in the events queue.submit.done and queue.update.done) and use each one when its time to update the priority.
<if cond="b_newPriority==true">
<script> var s_reqID = ''; </script>
<assign location="b_newPriority" expr="false"/>
<foreach array="a_targReqID" item="s_reqID">
<log expr="'Update priority for target '+s_reqID"/>
<queue:update requestid="s_reqID" priority="toNumber(i_priority)" />
</foreach>
</if>
I hope this helps someone else out there who may be struggling with prioritizing calls.
Happy Coding!
#Routing(ACD/IVR)------------------------------
Todd McCall
Bank of America
------------------------------