Which queue is the conversation currently on

Hi. I'm putting together an application for a customer that will transfer all conversations meeting a certain criteria from a queue they use as a kind of bucket to hold them until such a time as they are ready to be process to another queue for processing. Since the "bucket" queue can have thousands of conversations in it I decided to use PostAnalyticsConversationsDetailsJobs() to get the conversations, cache them and parse attributes to determine which ones need to be transferred to the other queue in order to try and mitigate hitting any rate limits.

For the most part this works but what I am seeing is that future calls to PostAnalyticsConversationsDetailsJobs() can pick up calls that were previously in bucket queue but are not sitting in another queue. I need to have the query return only conversations that are actually in the bucket queue. My filter looks like.

  ConversationDetailQueryFilter conversationDetailQueryFilter = new ConversationDetailQueryFilter();
            ConversationDetailQueryPredicate conversationDetailQueryPredicate = new ConversationDetailQueryPredicate();
            conversationDetailQueryFilter.Type = ConversationDetailQueryFilter.TypeEnum.Or;

            conversationDetailQueryPredicate.Type = ConversationDetailQueryPredicate.TypeEnum.Dimension;
            conversationDetailQueryPredicate.Dimension = ConversationDetailQueryPredicate.DimensionEnum.Conversationend;
            conversationDetailQueryPredicate._Operator = ConversationDetailQueryPredicate.OperatorEnum.Notexists;
            conversationDetailQueryPredicate.Value = null;

            conversationDetailQueryFilter.Predicates = new List<ConversationDetailQueryPredicate>();
            conversationDetailQueryFilter.Predicates.Add(conversationDetailQueryPredicate);
            asyncConversationQuery.ConversationFilters = new List<ConversationDetailQueryFilter>();
            asyncConversationQuery.ConversationFilters.Add(conversationDetailQueryFilter);

            SegmentDetailQueryFilter segmentDetailQuery = new SegmentDetailQueryFilter();
            SegmentDetailQueryPredicate detailQueryPredicate = new SegmentDetailQueryPredicate();
            SegmentDetailQueryPredicate detailQueryPredicate2 = new SegmentDetailQueryPredicate();

            SegmentDetailQueryFilter segmentDetail = new SegmentDetailQueryFilter();
            segmentDetail.Type = SegmentDetailQueryFilter.TypeEnum.Or;
            //segmentDetail.Type = SegmentDetailQueryFilter.TypeEnum.And;
            detailQueryPredicate.Type = SegmentDetailQueryPredicate.TypeEnum.Dimension;
            detailQueryPredicate.Dimension = SegmentDetailQueryPredicate.DimensionEnum.Queueid;
            detailQueryPredicate._Operator = SegmentDetailQueryPredicate.OperatorEnum.Matches;
            detailQueryPredicate.Value = sQueueId;

            segmentDetail.Predicates = new List<SegmentDetailQueryPredicate>();
            segmentDetail.Predicates.Add(detailQueryPredicate);

I have tried a couple of other filters but still am picking up calls that were previously in the bucket queue instead of ones that are actually in the bucket queue. For example I tried the above segment filter by changing to "and" with segmentEnd notexists but no luck. Any suggestions would be appreciated.

Thank you.

Hi,

You may want to consider using POST /api/v2/analytics/conversations/details/query (PostAnalyticsConversationsDetailsQuery()) instead. This article outlines why the query endpoint is more desirable for your use case (up to date data).

This topic was automatically closed 31 days after the last reply. New replies are no longer allowed.