" /> Percentage Based Routing IRD/URS - Genesys CTI User Forum

Author Topic: Percentage Based Routing IRD/URS  (Read 3830 times)

Offline PFCCWA

  • Hero Member
  • *****
  • Posts: 655
  • Karma: -7
Percentage Based Routing IRD/URS
« on: March 19, 2019, 04:15:23 PM »
Advertisement
Hello,

I am developing a routing strategy to apply a percentage rule using a Transaction List.
In summary this the flow:
Router perform crm db check on caller and extract id (var_id ie NEW).
Router checks transaction list (customer_id) and section=var_id extracting value ie 60,20,20.
Router assigns each value to an integer ie var_site_a=60, var_site_b=20, var_site_c=20.

i want to use values to route the call as a percentage across 3 route points or ACD queues ie
60% to ACD Queue 1000
20% to ACD Queue 2000
20% to ACD Queue 3000

If i use a percentage function block i can define a acd queue but have to specify an integer for percentage (as opposed to using the values obtained from the transaction list) whereas i want to do something like this:
var_site_a (%) to ACD Queue 1000
var_site_b (%) to ACD Queue 2000
var_site_c (%) to ACD Queue 3000

Is there a way to do this?
We are using URS/IRD 8.1

thanks

Offline hsujdik

  • Hero Member
  • *****
  • Posts: 541
  • Karma: 30
Re: Percentage Based Routing IRD/URS
« Reply #1 on: March 19, 2019, 04:17:13 PM »
I usually use the random function for that

Offline René

  • Administrator
  • Hero Member
  • *****
  • Posts: 1832
  • Karma: 62
Re: Percentage Based Routing IRD/URS
« Reply #2 on: March 19, 2019, 06:43:47 PM »
Hi,

It is possible to specify weight of each target dynamically if SelectDN function is used, e.g. Weight[60]1000@SwitchName.Q,Weight[20]2000@SwitchName.Q,Weight[20]3000@SwitchName.Q

R.

Offline PFCCWA

  • Hero Member
  • *****
  • Posts: 655
  • Karma: -7
Re: Percentage Based Routing IRD/URS
« Reply #3 on: March 26, 2019, 07:46:13 PM »
Hello,
I have tried the weight in SelectDN but URS is not choosing the target based on the weight.  It always selects the 'Site A' target.
I may be missing something but have changed values to '100' for 'Site B' target but is still never selected.
URS logs show the 'Site B' as 'Passed' but is never selected.
see my function block expression:

Var_Routing=
[b]SelectDN['','','',StatSelectMax,'Weight[Var_SITEA_Pct]1000_SITEA@StatServer_R.Q','Weight[Var_SITEB_Pct]2000_SITEB@StatServer_R.Q'][/b]

I think it is using the 'StatSelectMax' to override the weighting but could be wrong.  If I try to remove this it does not accept the expression.
A function block following this is set to RouteCall[Var_Routing].
The Var_* are integer types and are assigned the correct values based on option from the transaction list.

edit* If I replace the variables within the [] with numerical characters ie 100 for site b, and 0 for site a it does work.  For some reason it is not accepting the variables- which is an integer type.

thanks,
« Last Edit: March 27, 2019, 10:29:13 AM by PFCCWA »

Offline terry

  • Sr. Member
  • ****
  • Posts: 328
  • Karma: 35
Re: Percentage Based Routing IRD/URS
« Reply #4 on: March 27, 2019, 06:25:45 PM »
When variables are "hidden" deep inside strings constants - there is very few places when URS parses those constants to find possible variables inside - probably it makes such searching only in skill expressions.
Doesn't work for targets specifications (weight, type of target, etc) values need to be used directly.

If 0 for site A and 100 for site B doesn't work - difficult to say anything without logs.

 

Offline PFCCWA

  • Hero Member
  • *****
  • Posts: 655
  • Karma: -7
Re: Percentage Based Routing IRD/URS
« Reply #5 on: March 27, 2019, 10:58:12 PM »
[quote author=hsujdik link=topic=11290.msg51419#msg51419 date=1553012233]
I usually use the random function for that
[/quote]


Please can I ask how this would work?
The 'Rand' function will produce a value based on a integer between 1 and the interval period which I understand.
Do I then use another function to pick the highest output value and routecall to it?

my thoughts are:
var_site_a=rand(var_site_a_pct) = 46
var_site_b=rand(var_site_b_pct) = 13
var_site_b=rand(var_site_c_pct) = 26

a function block to select the largest value [b][u](how do i do this?)[/u][/b]

RouteCall function block to (biggest value from previous block)ACD queue.

thanks

Offline hsujdik

  • Hero Member
  • *****
  • Posts: 541
  • Karma: 30
Re: Percentage Based Routing IRD/URS
« Reply #6 on: March 27, 2019, 11:56:11 PM »
[quote author=PFCCWA link=topic=11290.msg51472#msg51472 date=1553727492]
[quote author=hsujdik link=topic=11290.msg51419#msg51419 date=1553012233]
I usually use the random function for that
[/quote]


Please can I ask how this would work?
The 'Rand' function will produce a value based on a integer between 1 and the interval period which I understand.
Do I then use another function to pick the highest output value and routecall to it?

my thoughts are:
var_site_a=rand(var_site_a_pct) = 46
var_site_b=rand(var_site_b_pct) = 13
var_site_b=rand(var_site_c_pct) = 26

a function block to select the largest value [b][u](how do i do this?)[/u][/b]

RouteCall function block to (biggest value from previous block)ACD queue.

thanks

[/quote]

I sum them up. Like:

D = rand(A + B + C)
If D <= A then “target A”
Else D = D - A
If D <= B then “target B”
Else “target C”

Of course this works better using a KVList and making a loop out of it testing the values

Offline vmc

  • Full Member
  • ***
  • Posts: 112
  • Karma: 0
Re: Percentage Based Routing IRD/URS
« Reply #7 on: March 20, 2020, 11:26:56 PM »
[quote author=hsujdik link=topic=11290.msg51473#msg51473 date=1553730971]
[quote author=PFCCWA link=topic=11290.msg51472#msg51472 date=1553727492]
[quote author=hsujdik link=topic=11290.msg51419#msg51419 date=1553012233]
I usually use the random function for that
[/quote]


Please can I ask how this would work?
The 'Rand' function will produce a value based on a integer between 1 and the interval period which I understand.
Do I then use another function to pick the highest output value and routecall to it?

my thoughts are:
var_site_a=rand(var_site_a_pct) = 46
var_site_b=rand(var_site_b_pct) = 13
var_site_b=rand(var_site_c_pct) = 26

a function block to select the largest value [b][u](how do i do this?)[/u][/b]

RouteCall function block to (biggest value from previous block)ACD queue.

thanks

[/quote]

I sum them up. Like:

D = rand(A + B + C)
If D <= A then “target A”
Else D = D - A
If D <= B then “target B”
Else “target C”

Of course this works better using a KVList and making a loop out of it testing the values
[/quote]

I know it's been a while  but are you able to add in a screenshot of how this looks using  KVList?

Also just thinking, if I do this using just a target A and target B and have 50% set for both, wouldn't this logic ALWAYS send to target A?

Offline vmc

  • Full Member
  • ***
  • Posts: 112
  • Karma: 0
Re: Percentage Based Routing IRD/URS
« Reply #8 on: March 21, 2020, 10:13:42 PM »
Actually think I"m following it now, ignore that last post :P