Genesys CTI User Forum

Genesys CTI User Forum => Genesys CTI Technical Discussion => Topic started by: Manny on August 18, 2006, 01:40:05 PM

Title: VAG and ExpandGroup
Post by: Manny on August 18, 2006, 01:40:05 PM
Did you know that Virtual Agent Groups do not support any sort of statistics when are used to route calls?
If they do then how do you apply them?

We are using agent groups instead of skill because we have over 500 people per service. Having Skill as a target, will drastically increase the load on URS. VAGs are excellent at moving that load to Statserver where it belongs, but they are horrible at deciding on how to target agents.

Does anyone know:

1. how to apply stats to VAGs when used as a target in SelectDN? Let's say we need the agent with max time in Ready State. What do we need to declare?
2. how does Statserver decide what agent to return as a target from a VAG because it does not seem to be taking any statistics defined in SelectDN.

IMHO, ExpandGroup is a very interesting function, but it queries all agents in a particular agent group per call. With over 200 calls during rush hour per minute, it kills both our network, CPU and StatServer. 60 cpm * 500 agents = 30, 000  statserver requests. And of course it is not spread out over one minute, but comes in 500 requests at a time. I got an impression that it does not seem to be designed with scalability in mind, does it?  :-[
Title: Re: VAG and ExpandGroup
Post by: BenTaylor on August 21, 2006, 10:51:40 AM
Genesys recommend using 'statagentloading' rather than 'stat time in ready state' in sites with a large number of agents.

This stat checks ready/busy DNs - Agents with the most are highest on the list. Then it checks time in ready state, and finally (if there are 2 or more with the same time) uses a random number.
Title: Re: VAG and ExpandGroup
Post by: victor on August 22, 2006, 03:50:08 AM
[quote author=BenTaylor link=topic=1794.msg5783#msg5783 date=1156157500]
Genesys recommend using 'statagentloading' rather than 'stat time in ready state' in sites with a large number of agents.

This stat checks ready/busy DNs - Agents with the most are highest on the list. Then it checks time in ready state, and finally (if there are 2 or more with the same time) uses a random number.

[/quote]

Hi, Ben,

there is a lot of confusion of what to use with VAGs, because URS manual is inconsistent.

First, it states that  StatAgentLoading is only to be used with Agents and Places according to URS7.2 page 547: [size=8pt]"This statistic works for Agents and Places only; it is not applicable for Agent Groups." [/size]

Then, in ExpandGroup is states that StatAgentLoading can be used as is with agent groups because StatServer will propagate the values agents as well:

[size=8pt]"Because Universal Routing 7 can handle priority routing and the most  used statistic StatAgentLoading (successor of StatTimeInReadyState) is propagated on the agent level automatically, the value of the  ExpandGroup function depreciates in Universal Routing 7.x. Instead of using ExpandGroup, you can return to your original method of specifying targets; for example, target an agent/virtual group or skill expression."[/size]

So, which is it?

I ran a simple test using URS 7.2 using two agents belonging to VAG_Test (on skill English > 0 ) where operator 1 was logged in and ready for one minute and the other for 5 seconds. Placing a call to RP targetting VAG (Without Expand!) delivered the call to Operator 1. I hung up 5 seconds after receving the call, set both Operator 1 and Operatort to Not Ready for 5 seconds, and then set Operator 1 to Ready. After waiting for one minute, I then set Operator 2 to Ready.

At this point, we would have Operator 1 Ready Time 2 minutes, while Operator 2 around 15 seconds.
So, I expect call to go to Operator 1 again... no luck. It went to Operator 2...

After further testing, I have noticed that it actually alternates between Op1 and Op2. So, it seems like something is wrong.

Manny: did you manage to figure a way?






Title: Re: VAG and ExpandGroup
Post by: BenTaylor on August 22, 2006, 02:51:57 PM
I've just done the same tests as you outlined and found that it worked as expected.

Using URS 7.2

Route to a VAG with 2 agents using Max StatAgentLoading (no expand group). It always delivers to the agent with the longest wait time.  ???
Title: Re: VAG and ExpandGroup
Post by: Manny on August 23, 2006, 06:09:33 AM
I have done the same thing as Victor and I am getting agent#1 -> agent #2 -> agent #1 -> agent #2.  ???

Ben: what URS version are you using?

Title: Re: VAG and ExpandGroup
Post by: BenTaylor on August 23, 2006, 08:47:08 AM
I'm using URS 7.2.001.08


Title: Re: VAG and ExpandGroup
Post by: victor on August 23, 2006, 10:34:35 AM
Ok, I did some tests and here is the excerpts from the log where URS gets info from StatServer:

1801 and 1802 are agents

try #1:
    _M_I_00ba015e5637d003 [17:0e] virtual queue "VQ_Testk"(id=2), VQ 100d6d7b0 (1 targets): SELECT MAX by statistic StatAgentLoading(random )
    _M_I_00ba015e5637d003 [17:0b] VQ 100d6d7b0 target "VAG_Modem" (#1, 2-0 components): SELECT MAX by statistic StatAgentLoading(random)
15:36:39.799_M_I_ [10:0a] object Place_A_8001|Resources| is unblocked
15:36:39.799_M_I_ [10:0a] object 1801|Resources| is unblocked
1
    _M_I_00ba015e5637d003 [10:0c] tenant Resources Agent 1801: dn 8001(ready since 1156314896) is OK
    _M_I_00ba015e5637d003 [17:0b] component #1 1801: statvalues: 0 1156314896 13119(S) the best
    _M_I_00ba015e5637d003 [17:0b] component #2 1802: statvalues: 0 1156314957 4339(S) pass
    _M_I_00ba015e5637d003 [17:0b] VQ 100d6d7b0 target "VAG_Test": component 1801 was SELECTED
    _M_I_00ba015e5637d003 [17:0e] target VAG_Test: statvalues: 0 1156314896 13119(S) the best
    _M_I_00ba015e5637d003 [17:0e] virtual queue "VQ_Testk"(id=2), VQ 100d6d7b0: target "VAG_Test" for route was SELECTED


so, it chose 1801.

Next, after receiving a call and hanging up, I set both agents to not ready and then set 1801 to ready and wait one minute.
After one minute I set 1802 to ready too and place call to VAG_Test one more time.

What do we get:

  _M_I_00ba015e5637d004 [10:0c] tenant Resources Agent 1801: dn 8001(ready since 1156315076) is OK
    _M_I_00ba015e5637d004 [17:0b] component #1 1801: statvalues: 0 1156315076 24595(S) the best
    _M_I_00ba015e5637d004 [17:0b] component #2 1802: statvalues: 0 1156315137 20621(S) pass
    _M_I_00ba015e5637d004 [17:0b] VQ 100d6d7b0 target "VAG_Test": component 1801 was SELECTED

1801 was selected again...

In fact, even after several calls after that, 1801 was continuously selected as long as its Ready was longer than 1802:

    _M_I_00ba015e5637d006 [17:0e] virtual queue "VQ_Test"(id=5), VQ 100d6d7b0 (1 targets): SELECT MAX by statistic StatAgentLoading(random )
    _M_I_00ba015e5637d006 [17:0b] VQ 100d6d7b0 target "VAG_Test" (#1, 2-0 components): SELECT MAX by statistic StatAgentLoading(random)
15:44:26.551_M_I_ [10:0a] object Place_A_8001|Resources| is unblocked
15:44:26.551_M_I_ [10:0a] object 1801|Resources| is unblocked
15:44:26.551_M_I_ [10:0a] object 8001|Switch_S8700| is unblocked
    _M_I_00ba015e5637d006 [10:0c] tenant Resources Agent 1801: dn 8001(ready since 1156315375) is OK
    _M_I_00ba015e5637d006 [17:0b] component #1 1801: statvalues: 0 1156315375 8479(S) the best
    _M_I_00ba015e5637d006 [17:0b] component #2 1802: statvalues: 0 1156315435 203(S) pass
    _M_I_00ba015e5637d006 [17:0b] VQ 100d6d7b0 target "VAG_Test": component 1801 was SELECTED


Digging into logs, we see that StatServer returns two targets: 1801 and 1802

    _M_I_00ba015e5637d006 [17:0b] component #1 1801: statvalues: 0 1156315375 8479(S) the best
    _M_I_00ba015e5637d006 [17:0b] component #2 1802: statvalues: 0 1156315435 203(S) pass


1801  and 1802 stat values are shown and 1801 is chosen over 1802 :)

I have no clue what "0 1156315375 8479" represents, but I assume some sort of priority/capacity + ReadyTime start and total time in Ready Time plus some random number we are not aware of. Of course, this is my guess, so if someone can decode this - it will help us understand this a bit more.


This behavior is identical for TimeInReadyState and StatAgentLoading, therefore, VAG can be used without ExpandGroup and StatServer does indeed look at individual agents when deciding on the best target inside the group even when you do not expand it.

Not bad.

I used URS 7.0 with 7.0 StatServer, so any version after 7.0 should be functional.

Vic
Title: Re: VAG and ExpandGroup
Post by: joshishakti on June 29, 2016, 05:53:15 PM
0 1156315375 8479 ---- This is your answer.....


This value means 1156315375 that Agent is ready since this time, and 8479 is the random number added by URS..... If there is tie up, URS wil select one with higher random number.