Genesys Cloud (formerly PureCloud)

Discussion Thread View
Expand all | Collapse all

Route a call percentage ?

  • 1.  Route a call percentage ?

    Posted 04-03-2020 04:58
    Hi,

    I was wondering if it was possible on Genesys to route a call percentage?

    To give an example:
    I have 3 separate call centers (which we will name A, B and C) which are connected to the same queue.
    How to route 20% on the A, 55% on the B and 25 on the C queue?
    
    I had thought of making from Architect a call of a random number between 1 and 100 to route the call according to this number.
    But I was wondering if there were not other more reliable and rather easy means to realize.

    Thanks in advance,
    Alexandre
    #Routing(ACD/IVR)

    ------------------------------
    Alexandre Brenne
    Niji SA
    ------------------------------


  • 2.  RE: Route a call percentage ?

    GCAP Member
    Posted 04-03-2020 07:18
    Calling a lambda function to generate a random number is how i've done this in the past. It's not very difficult. I'm not sure if there's a function built into architect or not.

    ------------------------------
    Dean Thames
    Koch Business Solutions
    ------------------------------



  • 3.  RE: Route a call percentage ?

    Posted 01-25-2021 06:31
    Good day,
    just a follow up if you managed to get this working as i need to distribute calls between 2 queue's at 80\20 % of incoming calls

    ------------------------------
    Reginald Sheraton
    ------------------------------



  • 4.  RE: Route a call percentage ?

    GCAP Member
    Posted 01-25-2021 07:01

    This is a bit of a do it yourself thing as there's no built in function to accommodate it (far as I know)

    Lately I've been using the GetCurrentDateTimeUtc expression to parse out the miliseconds value and use that as a random integer to make decisions on. Technically it's not random, but it's close.

    For example, considering a utc date time value of 2020-11-05T13:15:30Z,

    Task.RandInt == ToInt(Left(Right(ToString(GetCurrentDateTimeUtc()),3),2)) will give you an integer of 30 stored in the variable "Task.RandInt"

    You can then make a decision boolean task like so:  Task.RandInt > 20

    True = go to Queue A
    False = Go to Queue B

    Using that, the volume will even out to an 80/20 split over time.

    If your dispersion needs to be more exact, you could create a count function that updated a value in a data table to increment up by one from 0 to 10 on each inbound call. Then you can routing decisions on that value, re-setting it to 0 it after it gets to 10. 



    ------------------------------
    Dean Thames
    Koch Business Solutions
    ------------------------------



  • 5.  RE: Route a call percentage ?

    Posted 01-25-2021 07:08
    thanks will give it a try

    ------------------------------
    Reginald Sheraton
    ------------------------------



  • 6.  RE: Route a call percentage ?

    Posted 01-29-2021 01:13
    Good Day,
    just need some clarity on the below as i don't see any option to write data back into Data Table, only to get Data, do i use a Data Action?

    If your dispersion needs to be more exact, you could create a count function that updated a value in a data table to increment up by one from 0 to 10 on each inbound call. Then you can routing decisions on that value, re-setting it to 0 it after it gets to 10. 

    ------------------------------
    Reginald Sheraton
    ------------------------------



  • 7.  RE: Route a call percentage ?

    GCAP Member
    Posted 01-29-2021 07:35
    You would need to create data table first, then create a data action for the platform api to write back into that table based on an event in the call flow... in this case it'd be an n+1 equation that would take the current value in the row and add one to it. You could also have a logic block there that would check and set the value back to 0 every time it reaches 10 (or 100, or 1,000, etc....).

    Refer to the api explorer in developer tools:

    /api/v2/flows/datatables/{datatableId}/rows

    Will add the passed in row entry to the datatable with the given datatableId after verifying it against the schema. The DataTableRow should be a json-ized' stream of key -> value pairs { "Field1": "XYZZY", "Field2": false, "KEY": "27272" }

    ------------------------------
    Dean Thames
    Koch Business Solutions
    ------------------------------



  • 8.  RE: Route a call percentage ?

    GCAP Member
    Posted 01-29-2021 07:44
    Here's an example of an request body that i'm using with the above api to write to a data table i'm using to run a test of a speech recognition application. Each time a tester runs through the script, the application writes the data associated with the test to a data table. That way we can get an idea of how well that application is performing.


    {
    "key":"datetime",
    "testnumber":"34",
    "callerid":"+1xxxxxxx",
    "type":"order",
    "outcome":"success",
    "value":"ab65894"
    }

    ------------------------------
    Dean Thames
    Koch Business Solutions
    ------------------------------



  • 9.  RE: Route a call percentage ?

    Posted 01-29-2021 07:45
    Hi there,
    Thanks, managed to get this working 100% with the below

    If your dispersion needs to be more exact, you could create a count function that updated a value in a data table to increment up by one from 0 to 10 on each inbound call. Then you can routing decisions on that value, re-setting it to 0 it after it gets to 10. 

    ------------------------------
    Reginald Sheraton
    ------------------------------