joel_hellman | 2022-03-23 12:37:12 UTC | #1
I'm doing a bulk export of recordings using the AWS S3 integration.
Identify calls that has not been transferred using the Analytics Conversation Detail API endpoints I'm trying to only export calls that doesn't contain call transfers (across queues/agents), or more specifically, that doesn't contain multiple agents talking. The reason being, we are doing transcriptions with an off-site vendor, and for several reasons (some detailed below) would like to exclude any call that has have had multiple agent (and possible multiple queue) participants.
I'm totally stumped as to how to exclude transferred calls using the Analytics Conversation Detail endpoints (i.e. query or detail).
The reason I'm "limited" to using the Analytics Conversation Detail to identify transfers is because:
- The AWS S3 integration takes a Analytics Conversation Query as its input for what will be exported.
- The paired .json exported by the S3 integration doesn't contain enough information to make it clear if the conversation has been transferred or not.
- There are no reliable API endpoints to identify important events regarding the recording (the recording metadata endpoints are not very informative), and we don't want to give the vendor direct access to our Genesys APIs if we can help it. The AWS S3 integration looked very good to deal with this use case.
What I've tried I've tried basically every variant of dimension and metric filtering, but no luck.
I had expected to be able to use a metric filter against nTransferred (and/or its cousins nConsultTransferred and nBlindTransferred), but it seems they are only present to be filtered on in a "positive lookup".
That is, i expected this analytics predicate to work:
{ "type": "metric", "metric": "nTransferred", "range": { "lte": 0 } }
but it returns 0 results. This returns results, but then only the calls that have been transferred, which is exactly what I don't need:
{ "type": "metric", "metric": "nTransferred", "range": { "lte": 1 } }
I suspect this is some internal thing, that I cannot filter on values where nTransferred lte 0, because you don't store those values in the first place.
Trying out everything I could think of, I'm stumped here.
Filtering on not transferred calls with the Analytics Conversational Detail APIs really not possible? Is such a basic thing as filtering out transferred calls - with all the advanced filters available on the Analytics Conversation Detail endpoints existing - really not possible?
Jerome.Saint-Marc | 2022-03-23 15:27:35 UTC | #2
Hello,
For information, you can use exists/notExists operators on "metrics" predicate as well.
I have not used this approach for a case like yours (on transfers) but used it for another flow. And I think it might help you retrieve conversations without transfers.
So you could use a filter predicate (conversationFilter) that only accepts conversations without nTransferred metric. Something like the following (Conversation Details Query in example):
{ "interval": "2022-03-22T23:00:00.000Z/2022-03-23T23:00:00.000Z", "order": "desc", "orderBy": "conversationStart", "paging": { "pageSize": 25, "pageNumber": 1 }, "conversationFilters": [ { "type": "or", "predicates": [ { "type": "metric", "metric": "nTransferred", "operator": "notExists", "value": null } ] } ] }
Regards,
joel_hellman | 2022-03-23 16:37:25 UTC | #3
Ah of course! You're spot on Jerome.
I tried it, it totally worked.
Many thanks.
I feel might even mention a mention in the analytics docs (now when you said it, it made perfect sense)
system | 2022-04-23 16:38:04 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: 14012