We are trying to get the data shown on the Performance->Queues screen and the Performance->Agents screen using Platform API but many of the requested metrics are not being returned(even when we see some data in those Metrics on these screens)
In order to get the Performance->Queues screen data we are using the API observation method: "/api/v2/analytics/queues/observations/query" but when we get the response back most of the metrics don't come back, and the ones that comes back are mostly null or 0s.
Code used to get the Queues data:
// Get all Queues
var queueApi = new RoutingApi();
QueueEntityListing allQueues = queueApi.GetQueues();
//Set Objects to call Queue Observation Method
var analyticsApi = new AnalyticsApi();
List<AnalyticsQueryPredicate> predicates = new List<AnalyticsQueryPredicate>();
List<AnalyticsQueryClause> clauses = new List<AnalyticsQueryClause>();
AnalyticsQueryFilter xx = new AnalyticsQueryFilter(AnalyticsQueryFilter.TypeEnum.Or);
ObservationQuery body = new ObservationQuery(xx);
List<QueueCR> gridQueues = new List<QueueCR>();
foreach (Queue q in allQueues.Entities)
{
AnalyticsQueryPredicate predicate = new AnalyticsQueryPredicate();
predicate.Dimension = AnalyticsQueryPredicate.DimensionEnum.Queueid;
predicate.Value = q.Id;
predicates.Add(predicate);
QueueCR queueCr = new QueueCR();
queueCr.queueId = q.Id;
queueCr.name = q.Name;
gridQueues.Add(queueCr);
}
body.Filter.Clauses = clauses;
body.Filter.Predicates = predicates;
List<ObservationQuery.MetricsEnum> list = new List<ObservationQuery.MetricsEnum>();
list.Add(ObservationQuery.MetricsEnum.Oservicelevel);
list.Add(ObservationQuery.MetricsEnum.Tabandon);
list.Add(ObservationQuery.MetricsEnum.Owaiting);
list.Add(ObservationQuery.MetricsEnum.Ointeracting);
list.Add(ObservationQuery.MetricsEnum.Oactiveusers);
list.Add(ObservationQuery.MetricsEnum.Ttalk);
list.Add(ObservationQuery.MetricsEnum.Tacw);
list.Add(ObservationQuery.MetricsEnum.Theld);
body.Metrics = list;
QualifierMappingObservationQueryResponse res = analyticsApi.PostQueuesObservationsQuery(body);
In order to get the Performance->Agents screen data we are using the API aggregation method: "/api/v2/analytics/users/aggregates/query" but when we get the response back most of the metrics don't come back, and the ones that comes back are mostly null or 0s.
Code used to get the Agents data:
On this one, I'm passing a interval parameter, I tested with intervals that have active users making calls but I got the same results.
List<AnalyticsQueryPredicate> userPredicates = new List<AnalyticsQueryPredicate>();
List<AnalyticsQueryClause> userClauses = new List<AnalyticsQueryClause>();
foreach (User q in allUsers.Entities)
{
AnalyticsQueryPredicate userPredicate = new AnalyticsQueryPredicate();
userPredicate.Dimension = AnalyticsQueryPredicate.DimensionEnum.Userid;
userPredicate.Value = q.Id;
userPredicates.Add(userPredicate);
UserCR userCr = new UserCR();
userCr.userId = q.Id;
userCr.name = q.Name;
gridUsers.Add(userCr);
}
AnalyticsQueryFilter userFilter = new AnalyticsQueryFilter(AnalyticsQueryFilter.TypeEnum.Or);
AggregationQuery userBody = new AggregationQuery();
userBody.Interval = "2017-01-21T16:00:00.000Z/2017-01-21T16:30:00.000Z";
List<AggregationQuery.GroupByEnum> alist = new List<AggregationQuery.GroupByEnum>();
alist.Add(AggregationQuery.GroupByEnum.Userid);
userBody.GroupBy = alist;
userBody.Filter = userFilter;
userBody.Filter.Clauses = userClauses;
userBody.Filter.Predicates = userPredicates;
List<AggregationQuery.MetricsEnum> ulist = new List<AggregationQuery.MetricsEnum>();
ulist.Add(AggregationQuery.MetricsEnum.Ntransferred);
ulist.Add(AggregationQuery.MetricsEnum.Tacw);
ulist.Add(AggregationQuery.MetricsEnum.Tagentroutingstatus);
ulist.Add(AggregationQuery.MetricsEnum.Tanswered);
ulist.Add(AggregationQuery.MetricsEnum.Thandle);
ulist.Add(AggregationQuery.MetricsEnum.Ttalk);
ulist.Add(AggregationQuery.MetricsEnum.Torganizationpresence);
ulist.Add(AggregationQuery.MetricsEnum.Theld);
ulist.Add(AggregationQuery.MetricsEnum.Tsystempresence);
userBody.Metrics = ulist;
PresenceQueryResponse userRes = analyticsApi.PostUsersAggregatesQuery(userBody);
Please notice how we request several metrics in both Queue and Users but we don't get of these metrics back(a few only and I'm not sure about the accuracy of its value).
Thanks.