UCCX Scripting with condition check Agent availability

Unanswered Question
Apr 15th, 2009


I have uccx 7, with the following requirement and checking if this is possible:

I have 3 Skills,

Call comes to skill_1, there are no agents available in this skill

The call should wait for 30 seconds and then go to other skill group Skill_2

If Skill_2 is busy / not avaialble, call should go to Skill_3

Also, if the number of calls in queue for Skill_1 is more than 3 calls, then call in Skill_1 queue should go to Skill_2, if skill_2 busy, pass call to Skill_3

If all Skills are busy, hang up the call and announce a message to caller.

Is the above achievable on uccx scripting?


I have this problem too.
0 votes
  • 1
  • 2
  • 3
  • 4
  • 5
Overall Rating: 3 (1 ratings)
Jonathan Schulenberg Wed, 04/15/2009 - 17:07


First to correct the terminology to make sure we're all on the same page:

-Resources (agents) are assigned to skills.

-Skill(s) are assigned to CSQ(s).

-Calls are routed to CSQ(s).

Second, I'm not sure why you would terminate the call as it can remain in queue (one or all of them) until a resource becomes available.

You an queue a call in up to 25 CSQs simultaneously. Just be sure to review the Historical Reporting User Guide to understand how the single call will be reflected in various reports.

The general idea would look like this:



Select Resource (csqID1)




------Select Resource (csqID2)



------------Select Resource (csqID3)



------------------Label: QUEUED_LOOP

------------------Play Prompt




------------------Goto: QUEUED_LOOP




If you wanted to add a condition you would use the Get Reporting Statistic step to see how many callers are in queue. You would follow that with an If step and nest your secondary and tertiary Select Resource steps within the True branch of that If step.

If you wanted to just end the call you could add the Terminate and End steps instead of the play prompt/hold/delay/unhold/loop conditions.

csshenoy80 Thu, 04/16/2009 - 08:57


The above gives a nice idea to implement it, but there is time check requirement, which checks if the call is in queue for 30 secs then queue to next csq as well as if there are more than 3 calls in queue for the respective csq, the call needs to be queued to next csq.

In short, there is 30 seconds check plus to check if there are more than 3 calls in queue.

Is this possible to have both these checks in the logic node?


Jonathan Schulenberg Thu, 04/16/2009 - 12:04

Yes. You would use two Get Reporting Statistic steps to get retrieve the values. In your If step you would use 'and' logic to only return True if both are met.


If ((waitTime > 30) && (csqPosition > 3))

You'll need to review the Step Reference Guide to confirm what the values are returned in and adjust the conditions above accordingly.

csshenoy80 Thu, 05/21/2009 - 21:59

I have made the script with the above inputs, and its working fine!

Thank you.


This Discussion