Legacy Dev Forum Posts

 View Only

Sign Up

AnalyticsQueryPredicate for Queue Conversations

  • 1.  AnalyticsQueryPredicate for Queue Conversations

    Posted 06-05-2025 18:05

    andygunther | 2017-06-13 20:54:40 UTC | #1

    Does anyone have an example of how to search for conversations for a specific queue?

    I am using this query and keep getting no results when I know there are conversations in my interval.

    ConversationQuery body = new ConversationQuery(); body.Interval = interval; List<AnalyticsQueryFilter> lQuery = new List<AnalyticsQueryFilter>(); List<AnalyticsQueryClause> lQueryClause = new List<AnalyticsQueryClause>(); List<AnalyticsQueryPredicate> lQueryPredicate = new List<AnalyticsQueryPredicate>(); lQueryClause.Add(new AnalyticsQueryClause(AnalyticsQueryClause.TypeEnum.Or, lQueryPredicate)); lQueryPredicate.Add(new AnalyticsQueryPredicate(AnalyticsQueryPredicate.TypeEnum.Property, null, AnalyticsQueryPredicate.PropertyTypeEnum.String, "queueId", null, AnalyticsQueryPredicate.OperatorEnum.Matches, sQueueId, null)); lQuery.Add(new AnalyticsQueryFilter(AnalyticsQueryFilter.TypeEnum.Or, lQueryClause, lQueryPredicate));

    I'm assuming my predicate is wrong - but I'm having a hard time finding docs that explain how to do this.

    Any advice is appreciated.

    Thanks!


    tim.smith | 2017-06-13 21:32:07 UTC | #2

    Here's a query that will give you all conversations where the queue participated:

    {
     "interval": "2017-06-08T06:00:00.000Z/2017-06-14T06:00:00.000Z",
     "order": "asc",
     "orderBy": "conversationStart",
     "paging": {
      "pageSize": 25,
      "pageNumber": 1
     },
     "segmentFilters": [
      {
       "type": "or",
       "predicates": [
        {
         "type": "dimension",
         "dimension": "queueId",
         "operator": "matches",
         "value": "636f60d4-04d9-4715-9350-7125b9b553db"
        }
       ]
      }
     ]
    }

    If you need guidance translating that into the .NET SDK, let me know.


    andygunther | 2017-06-13 21:39:12 UTC | #3

    I must be doing something wrong... I'm getting "Dimension queueId is not valid in context CONVERSATION" back.

    List<AnalyticsQueryFilter> lQuery = new List<AnalyticsQueryFilter>(); List<AnalyticsQueryClause> lQueryClause = new List<AnalyticsQueryClause>(); List<AnalyticsQueryPredicate> lQueryPredicate = new List<AnalyticsQueryPredicate>(); lQueryClause.Add(new AnalyticsQueryClause(AnalyticsQueryClause.TypeEnum.Or, lQueryPredicate)); lQueryPredicate.Add(new AnalyticsQueryPredicate(AnalyticsQueryPredicate.TypeEnum.Dimension, AnalyticsQueryPredicate.DimensionEnum.Queueid, null, null, null, AnalyticsQueryPredicate.OperatorEnum.Matches, sQueueId, null)); lQuery.Add(new AnalyticsQueryFilter(AnalyticsQueryFilter.TypeEnum.Or, lQueryClause, lQueryPredicate));


    tim.smith | 2017-06-13 21:44:32 UTC | #4

    There must be a few more lines of your code that are missing. I don't see you adding the AnalyticsQueryFilter (lQuery) to the body. Make sure you're adding it via ConversationQuery.SegmentFilters.add(...). If you're adding it to ConversationQuery.ConversationFilters, I would expect that error message as filtering on queue is not valid at the conversation level (queues, users, and all participants exist at the segment level).


    andygunther | 2017-06-13 21:50:46 UTC | #5

    Ah, that was it. Wrong filter. All set, thanks!!


    system | 2017-08-28 19:35:04 UTC | #6


    This post was migrated from the old Developer Forum.

    ref: 1405