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