Genesys Cloud - Main

 View Only

Sign Up

  • 1.  External Contact

    Posted 6 days ago

    I'm looking for a way to load customer data so that the IVR can use it during inbound calls to identify customers with a high propensity to file complaints.

    My initial idea was to perform a daily data load via API into a Data Table. However, the Data Table limit is 5,000 records per table, and I have approximately 20,000 records. The table is not expected to grow beyond that.

    What would be the best alternative?

    1. Use a daily load distributed across 4 indexed Data Tables, allowing the IVR to search the 20,000 records?
    2. Use External Contacts. However, since this functionality is primarily designed for outbound use and indexed by ANI, while my inbound IVR lookup needs to be indexed by ClientID, I do not consider this a good option.
    3. Request an increase in the Data Table record limit to support my requirement of 20,000 records and perform the lookup against a single Data Table.
    4. Does anyone see another alternative? Have you solved a similar challenge in your projects?

    Any recommendations or lessons learned would be greatly appreciated.


    #Implementation

    ------------------------------
    Marcelo Breda
    SOLUTION ARCHITECT SR
    ------------------------------


  • 2.  RE: External Contact

    Posted 6 days ago

    What is the source of your 20,000 records? Rather than creating a duplicate of those records in a data table, can your IVR not perform a data dip into the source application? 



    ------------------------------
    Paul

    Paul Mason
    Specialist Designer - British Telecommunications PLC
    ------------------------------



  • 3.  RE: External Contact

    Posted 6 days ago

    Hello Paul,

    Thank you for the question.

    The source of the records is a database containing millions of records, indexed by a field called "Problem ID."

    The IVR needs to query the data using "Customer ID." In addition, out of those millions of records, only about 20,000 meet the propensity criteria that I need. For that reason, I believe it would be more efficient to create an internal process that extracts and transforms the source data and then loads a Data Table containing only the relevant records.

    In my view, having the IVR query the source database directly would be slower due to the size of the dataset and its indexing strategy. Furthermore, the source data resides in Azure, which would require the use of Data Actions for every lookup.

    Another important consideration is that the data is highly dynamic and is refreshed daily.

    For these reasons, my suggestion is to maintain a Data Table containing only the filtered dataset required by the IVR, updated once per day as part of a scheduled process.



    ------------------------------
    Marcelo Breda
    SOLUTION ARCHITECT SR
    ------------------------------



  • 4.  RE: External Contact

    Posted 6 days ago
    Edited by Raphael Poliesi 6 days ago
    I think the decision depends on the trade-off between performance, simplicity, and maintainability.
     
    One point that may be worth validating is the current Data Table limits. According to the latest Genesys Cloud documentation, a Data Table supports up to 10,000 rows by default, with up to 300 Data Tables per organization, and both limits can be increased by contacting Customer Care if needed.
     
    https://help.genesys.cloud/articles/work-with-data-tables/
     
    The documentation also recommends using Data Actions to query external systems when the required dataset exceeds the supported Data Table limits, retrieving only the specific record needed during the interaction.
     
    Since your filtered dataset is around 20,000 records and is refreshed only once per day, I see two possible approaches:
     
    Follow the documented recommendation and keep the source of truth in the external database, using a Data Action to retrieve only the required customer record.
    If avoiding a Data Action for every interaction is a priority, partition the dataset across multiple Data Tables using a deterministic key (for example, based on the Customer ID), allowing the IVR to perform only a single lookup.
     
    Out of curiosity, has anyone successfully requested an increase to the Data Table row limit beyond the default 10,000 rows? I'd be interested to hear about any performance or operational considerations after the increase.


  • 5.  RE: External Contact

    Posted 6 days ago

    Thanks for your reply Raphael.



    ------------------------------
    Marcelo Breda
    SOLUTION ARCHITECT SR
    ------------------------------



  • 6.  RE: External Contact

    Posted 6 days ago

    We have some large tables containing row counts greater than a Data Table can handle. We store these in DynamoDb in AWS and call them via data action each time.

    It works very well. Not sure about your process of needing to update it daily, that isn't a constraint we have, but I'm sure you could create a Lambda function or equivalent in Azure and have that automated.

    If you are set on using Data Tables then, as you recognise, you will need to work within the limit. Perhaps you could split the records into three (or more) tables, one table containing customerIds starting between 00000 - 30000, one containing 30000 - 60000 and one containing 60000 - 90000, then just lookup the appropriate table each time based on the customerId.



    ------------------------------
    James Dunn
    Telecoms Specialist
    ------------------------------



  • 7.  RE: External Contact
    Best Answer

    Posted 5 days ago
    Edited by Jason Kleitz 5 days ago

    Hi Marcelo,

    I would avoid Data Tables in this case due to the limitations on the number of records a data table can contain.
    I would suggest using External Contacts as it seems like these records that you are loading in represent your customers.  You can define custom fields for External Contacts, so you should be able to define a custom ClientID field.  By default Genesys Cloud will attempt an External Contact lookup by ANI, but you can manually search External Contacts by your ClientID.  Using External Contacts has the benefits that it will allow you to take advantage of our advanced AI and Journey features if you plan to use those in the future.
    Alternatively, you can actually use an Outbound Contact List as a pseudo-database.  You can easily load a CSV export from the customer database and once it is loaded as a Contact List you can then make Genesys Cloud Data Action calls, using the Genesys Cloud API, to search the contact list for a match on ClientID and retrieve the column values for the matching record(s).
    I hope that helps.



    ------------------------------
    Jim Crespino
    Senior Director, Developer Evangelism
    Genesys
    https://developer.genesys.com
    ------------------------------