Luigi | 2018-10-08 13:55:18 UTC | #1
Hello everyone.
We are simulating a scenario where we have an outbound campaign. At the end of the day, given the contact list, we want to search for the contacts that meet particular conditions (e.g., whose maximum number of call attempts is reached), in order to do some business logic. Some of the contacts may never have been called, so we could not discover them by invoking the Analytics APIs.
Currently, we are using the Outbound APIs to export the current state of the contact list in a CSV file. Given the rows, we are able to scan the records of each contact and to filter them accordingly. This approach works good when the contact list is small (e.g., with a few dozen contacts). Conversely, its performance is poor when the contact list has many billions of contacts (e.g., 500K). In our tests, the bottleneck is the export and the download of the CSV.
We are then looking for a way to get such subset of contacts without dealing with the CSV. We have seen from the developer tools that the contact lists filters could do this job in-place. Unfortunately, it seems that PureCloud does not allow to use them as we want (it can only be used by the campaign to evaluate the contacts to dial). According to our knowledge, we can only get the number of contacts that pass the filter, and a preview of at most 5 random contacts (with a proper POST request to /api/v2/outbound/contactlistfilters/preview). We would like to get all of them, instead.
Can you give us some tips to address this problem?
Greetings, Luigi
crespino | 2018-10-08 18:55:53 UTC | #2
Do you have to have the entire calling list returned to you for analysis?
If not, then there is a report that can be run called the "Outbound Campaign: Detailed Attempt History" that you could potentially run to get details about each dial attempt. You could schedule that report to be run at a specific time of day and then you could download the report when it is available.
Luigi | 2018-10-09 07:48:09 UTC | #3
Hi crespino. Thanks for your reply.
The detailed attempt history does not seem to be the solution. It is still based on the calls belonging to the campaign, and this is not what we need.
In our problem, we basically have to keep track of the customers that will never be called in future executions of the campaign. Some of them could be detected by analyzing the outgoing calls (e.g., if I know that a given customer has to be called at most x times, and I see x outgoing calls to her, I can deduce that she has reached an end state). So, the detailed attempt history, or a POST request to the /api/v2/analytics/conversations/details/query API with an outboundCampaignId query predicate, are two sound approaches in this case.
However, some other customers may have reached a different end state that is not detectable by this strategy (e.g., if the contact expiration date is before today), since the system does not make any attempt to call them. We have the expiration date as a column of the contact list, so we can discover these contacts if we export the CSV of the contact list. But, as I wrote in the first post, we experienced very large and variable system and network latencies in exporting and downloading the contact list when it is in the order of billions of records.
Do you have other suggestions for us?
Thank you again, Luigi
system | 2018-11-09 07:48:09 UTC | #4
This topic was automatically closed 31 days after the last reply. New replies are no longer allowed.
This post was migrated from the old Developer Forum.
ref: 3699