×

Warning message

  • Cisco Support Forums is in Read Only mode while the site is being migrated.
  • Cisco Support Forums is in Read Only mode while the site is being migrated.

wait for an agent with best skill and loop after that.

Answered Question
Aug 31st, 2010
User Badges:

I want to solve the following situation:


I have three skills (A, B, C) with different skill levels for each agent. C is the "everything else topic" . The caller selects the toppic which is equivalent to the skills. Of course I want the call to be forwarded to the best skilled agent.


Let's assume the calles selects topic A and all Agents with Skilllevel > 5 for  A are currently talking. I want to hold the caller for 30 seconds to wait for one of these Agents. After 30 seconds I would like to forward the call to the agent with the highest skill level A.

And of course I want to avoid the caller to wait the 30 seconds if no Agent with skilllevel > 5 is on duty.


Currently I have one CSQ for each topic and I expect a skillevel > 5 for the agents serving this CSQ.

At first I put the call in the CSQ for A and play a prompt with 30 seconds MOH, if no agent becomes available I put the call in the CSQ for C and loop the caller there. But now the best agent for C get's the call.


I appreciate any hints on that.


Christian

Correct Answer by Anthony Holloway about 6 years 11 months ago

Don't queue in C unless there are at minimum X ready agents.  You can define X as 1 to start, then play with the number to see how it affects wait times and dequeues.


select resource (csq_a)

     connected

          end

     queued

          label loop

          ready_in_c = get reporting stats(csq_c, ready resources)

          if (ready_in_c >= 1)

               true

                    /* at least one person idle and ready in C

                    select resource(csq_c)

                         connected

                              end

                         queued

                              /* oops! we just missed them. */

                              /* if ready_in_c was > 1, this dequeue step will not execute */

                              /* instead, the script jumps to the select resource step for csq_c */

                              /* and tries the next agent automatically.  only when there are no */

                              /* idle and ready agents do we dequeue the caller, so that an agent */

                              /* servicing csq_a can take the call */

                              dequeue(csq_c)

               false

                    /* no one available in C */

               play prompt(you are important to us)

               call hold

               delay 30

               call unhold

               goto loop

  • 1
  • 2
  • 3
  • 4
  • 5
Overall Rating: 5 (1 ratings)
Loading.
Correct Answer
Anthony Holloway Tue, 08/31/2010 - 09:10
User Badges:
  • Purple, 4500 points or more

Don't queue in C unless there are at minimum X ready agents.  You can define X as 1 to start, then play with the number to see how it affects wait times and dequeues.


select resource (csq_a)

     connected

          end

     queued

          label loop

          ready_in_c = get reporting stats(csq_c, ready resources)

          if (ready_in_c >= 1)

               true

                    /* at least one person idle and ready in C

                    select resource(csq_c)

                         connected

                              end

                         queued

                              /* oops! we just missed them. */

                              /* if ready_in_c was > 1, this dequeue step will not execute */

                              /* instead, the script jumps to the select resource step for csq_c */

                              /* and tries the next agent automatically.  only when there are no */

                              /* idle and ready agents do we dequeue the caller, so that an agent */

                              /* servicing csq_a can take the call */

                              dequeue(csq_c)

               false

                    /* no one available in C */

               play prompt(you are important to us)

               call hold

               delay 30

               call unhold

               goto loop

christiangauer Thu, 09/02/2010 - 01:41
User Badges:

That's a very nice approach. Thank you. Solves the "first step"


Will this route the call still to the best skilled Agent for Topic A?


The agents in C might also have a skill of A, which is <5. Let's assume Agent Bob in CSQ C has a skill level of 4 for skill A, and Agent Peter in CSQ C has skill level of 1. Both agents are idle. In CSQ A there is no agent idle.

How can I make sure Bob will get the caller?

Actions

This Discussion