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

Answered Question
Aug 31st, 2010

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

I have this problem too.
0 votes
Correct Answer by Anthony Holloway about 6 years 3 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

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

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