Hi Folks ,
How are you all , I need your help again.
We have a scenario , when the user gets an incoming call to his cisco phone and the user is busy then the call is fwded to a number which is added in CTI RP in turn it is pointed to a script in ICM.
The script has a Queue to Skill Group where the users are assigned and the call will goes to any of those users in the skill group.
Requirement is customer needs another skill group when the first skill group users are busy then the call should fwd to the second skill group.
Can you guys help me with the configuration.
We can certainly help you out here.
please let us know your setup, are you using CVP as IVR?
please share your initial call flow, til its get delivered to agent.
when you say user is busy, what is the status, are they busy on another call or they just don't pick up the call till maximum ring.
Thanks. Here is the call flow.
Call comes from GW to the CUCM --> User IP phone extension. If the user is busy on another call or not answering then the call is forwarding to a number 123456.
123456 is a CTI PORT which is pointed to a Script in ICM.
This Script has a Queue to Skill group node where few agents were mapped and the forwarded call will go to any of these agents in the skill group.
Requirement is , when the agents in the Skill group is busy then the call should be sent to another skill group where another set of agents are mapped.
now are you using CVP? and the Queue till the first Skill groups works?
i am trying to understand till what extend you system is configured.
Sorry for the confusion. We are using CVP comprehensive model for queuing.
I need to know how to transfer the call from SG1 to SG2 when the agents in SG1 are busy / no answer.
ok, lets divide in the 2 parts. no answer will work differently the all agents are not available (ICM not available/busy/talking)
1. in the same skill group node define condition (consider if), that evaluates Available agent is greater then 0.
if condition is not true, the call will get queued to second defined skill group and if you have condition there, it will try to evaluate that.
here is the example. initially call gets queued to first skill. As per the condition in Consider if, if the avail agent in that skill is not >0 then call gets queued to second define skill.
You can use the formula editor to form a condition. this just to give you insight, you can also build your own complex formula as per the business process.
2) if no answer occurs, then you have to use router requery to take back call from agent and once again queue it to some skill group. this will be achieved by configuring RNA timeout at various places.
please see below link on how to configure RONA in CVP environment.
I would assume that before queuing the call you are doing send to VRU, to actually send call to CVP and then you are queuing to specific skill group.
once you have successfully configured the RNA as per the above link, once the agent does not pick the call till max timeout, CVP will take back the call and submits requery to ICM. under the ICM call will come out of fail(X) path.
now you can handle the call from this point. increase the priority and assign it back to other skill.
this is how i do,
the requerystatus is variable, whose value will be >0 if call peripheral fails to deliver call due to some reason. i wold just check that and increase priority of the call which will put it ahead of all the calls.
hope this will help you in building your logic for such situations.
A couple comments to add, Chintan...
Be careful with "Consider If" statements in Queue to Skill Group. These are only evaluated when entering the node, not continuously during queuing.
With your RONA example, you're setting Queue Priority before sending the caller back into queue. This queue priority will not stick, the priority in the queue will override it. You should be doing the RequeryStatus check after the Queue node's checkmark.
It should also be noted that the Queue to Skill Group node will fail if none of the "Consider If" statements are met. Checking Call.RequeryStatus after the X is useful to separate out the RONA events from the true queue failures in this situation.
If I were building the change that Sathya describes, one of the simpler solutions (of many possible ways) would be using a Select node for the first skill group, with the X going to a Queue to Skill Group for the second skill. Another option would be to keep the existing Queue to Skill Group, follow it with a Dequeue node, then a second Queue to Skill Group (with only the second skill in it). The advantage of either of these two solutions is less worry over getting the Consider If statements right, and it is more obvious for the engineer coming after you what the script's purpose is.
Chintan , Jameson
Thanks for your response. But I have few silly doubt and needed your response.
1. Is it a good idea to point the right and wrong node of the first SG to the second skill group ?
2. What do you mean by Dequeue node.
3. I checked the select node , whether any formula to be written in that node.
Thanks for the explanation.
I need your advice regarding the below.
We have 3 skill groups and there was a requirement to prioritize agents within skill groups. So if there are no agents available in SG A to handle calls from CustomerA, calls should go to SG B then SG C.
I have configured the Skill Groups with Consider if statements as you can see in the attached screenshots.
I have tested the scenario and all the tests were successfully conducted.
Suddenly, we noticed that there were lots of calls that are dropping and exiting the error path of the QTSK node with RequeryStatus = 0.
Those calls are affecting the Service Level as they are counted as offered calls but they are not reflected neither in the answered nor in the abandoned.
Can you please shed some light on why there are lots of calls failing at the QTSK node.
Thanks in advance.
As I mentioned earlier in the thread...
So, the way you have things set up, you are only queueing to these skill groups if there is at least one agent available (in Ready state and not in a call or wrapup). If there are no agents in this state in any of the three skills when the call attempts to queue, the call will fail to queue to anyone and then leave out the "X".
Also, as you are only queuing to these Skills when agents are already in "Ready" state, your caller will never actually queue - they will either deliver to an agent, or the call will end.
One more thing... I would recommend changing all of your "&" to "&&". The former is the bitwise AND, the latter is the boolean AND. It is also best to remove spaces from your formulas, as ICM does not always behave well with them.
What queuing scenario are you trying to achieve? Can you explain what the behavior should be?
Thank you for replying to this thread again.
Below is what I'm trying to achieve.
We have 3 types of customers: ARPU, Data and Unclassified and 3 Skill Groups ARPU, Data and Unclassified.
- We need the ARPU customers to reach the ARPU agents first; if there are no available agents in ARPU SG, calls should be routed to Data agents. If there are no available agents in Data SG, calls should be routed to Unclassified SG. If there are no agents available in Unclassified SG, calls should be sent to Queue.
- We need the Data customers to reach the Data agents first; if there are no available agents in Data SG, calls should be routed to Unclassified agents. If there are no available agents in Unclassified SG, calls should be routed to ARPU SG. If there are no agents available in ARPU SG, calls should be sent to Queue.
- We need the Unclassified customers to reach the Unclassified agents first; if there are no available agents in Unclassified SG, calls should be routed to Data agents. If there are no available agents in Data SG, calls should be routed to ARPU SG. If there are no agents available in ARPU SG, calls should be sent to Queue.
Your help is greatly appreciated.
Thanks in advance.
I would not use "Consider If" for that scenario. The simplest solution, using the ARPU customer as an example:
The end result of this is the caller will queue to all 3 skill groups, but before queuing it will try all three skills in order. You can set priorities in each QTSG node, and that priority will only apply in regards to that skill group. This is useful if you have multiple calls in queue (one of each caller type, for example), and you want agents to answer their type of caller first.