hello. I would like to ask a question because there are cases where response or connection is delayed during API communication.
I'm trying to implement a monitoring function. Currently, I have created three Ouath accounts and communicate using Spring Scheduled alternately every 5 seconds.
We would like to inquire because the response time continues to exceed 5 seconds intermittently.
Using the code below, we are monitoring the overall user status, request calls, response calls, abandon calls, service levels, and waiting calls for the entire queue.
I would appreciate it if you could let me know if there is anything that needs to be corrected or a way to solve the problem.
-----JAVA CODE SDK VER 190.0.0
//0. login settings and communication client creat
ApiClient apiClient = ApiClient.Builder.standard().withConnectionTimeout(5000).withBasePath(region).build();
ApiResponse<AuthResponse> authResponse = apiClient.authorizeClientCredentials(clientIds.get(type), clientSecrets.get(type));
Configuration.setDefaultApiClient(apiClient);
//1. First API Call
UserEntityListing response = new UsersApi().getUsers(100, null, null, null, null, expand, null, null);
//2. Second API call
//2.1 Setting query
ConversationAggregationQuery queryLed = new ConversationAggregationQuery();
LocalDate today = LocalDate.now();
LocalDate tomorrow = today.minusDays(1);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String todayFormatted = today.format(formatter);
String tomorrowFormatted = tomorrow.format(formatter);
queryLed.setInterval(tomorrowFormatted + "T15:00:00.000Z/" + todayFormatted + "T15:00:00.000Z");
List<GroupByEnum> groupEnumListLed = new ArrayList<>();
groupEnumListLed.add(ConversationAggregationQuery.GroupByEnum.MEDIATYPE);
groupEnumListLed.add(ConversationAggregationQuery.GroupByEnum.ORIGINATINGDIRECTION);
groupEnumListLed.add(ConversationAggregationQuery.GroupByEnum.QUEUEID);
queryLed.setGroupBy(groupEnumListLed);
List<com.mypurecloud.sdk.v2.model.ConversationAggregationQuery.MetricsEnum> metricsEnumListLed = new ArrayList<>();
metricsEnumListLed.add(ConversationAggregationQuery.MetricsEnum.NOFFERED);
metricsEnumListLed.add(ConversationAggregationQuery.MetricsEnum.TANSWERED);
metricsEnumListLed.add(ConversationAggregationQuery.MetricsEnum.TABANDON);
queryLed.setMetrics(metricsEnumListLed);
List<ConversationAggregationView> viewListLed = new ArrayList<>();
ConversationAggregationView viewLed = new ConversationAggregationView();
viewLed.setName("tAnswered_0_20");
viewLed.setTarget(ConversationAggregationView.TargetEnum.TANSWERED);
viewLed.setFunction(ConversationAggregationView.FunctionEnum.RANGEBOUND);
AggregationRange rangeLed = new AggregationRange();
rangeLed.setGte(BigDecimal.valueOf(0));
rangeLed.setLt(BigDecimal.valueOf(20000));
viewLed.setRange(rangeLed);
viewListLed.add(viewLed);
queryLed.setViews(viewListLed);
//2.2 API Call
ConversationAggregateQueryResponse responseLed = new AnalyticsApi().postAnalyticsConversationsAggregatesQuery(queryLed);
//3. third API call
//3.1 Setting query
List<QueueObservationQueryPredicate> predicatesList = new ArrayList<>();
QueueObservationQueryPredicate predicate = new QueueObservationQueryPredicate();
predicate.setType(QueueObservationQueryPredicate.TypeEnum.DIMENSION);
predicate.setDimension(QueueObservationQueryPredicate.DimensionEnum.QUEUEID);
predicate.setValue(propQueueId1);
QueueObservationQueryPredicate predicate2 = new QueueObservationQueryPredicate();
predicate2.setType(QueueObservationQueryPredicate.TypeEnum.DIMENSION);
predicate2.setDimension(QueueObservationQueryPredicate.DimensionEnum.QUEUEID);
predicate2.setValue(propQueueId2);
QueueObservationQueryPredicate predicate3 = new QueueObservationQueryPredicate();
predicate3.setType(QueueObservationQueryPredicate.TypeEnum.DIMENSION);
predicate3.setDimension(QueueObservationQueryPredicate.DimensionEnum.QUEUEID);
predicate3.setValue(propQueueId3);
predicatesList.add(predicate);
predicatesList.add(predicate2);
predicatesList.add(predicate3);
QueueObservationQueryFilter filter = new QueueObservationQueryFilter();
filter.setType(QueueObservationQueryFilter.TypeEnum.OR);
filter.setPredicates(predicatesList);
List<MetricsEnum> metricsEnumList = new ArrayList<>();
metricsEnumList.add(QueueObservationQuery.MetricsEnum.OWAITING);
QueueObservationQuery query = new QueueObservationQuery();
query.setMetrics(metricsEnumList);
query.setFilter(filter);
//3.2 API Call
QueueObservationQueryResponse response2 = new AnalyticsApi().postAnalyticsQueuesObservationsQuery(query);