Legacy Dev Forum Posts

 View Only

Sign Up

Communication times become longer intermittently

  • 1.  Communication times become longer intermittently

    Posted 06-05-2025 18:28

    broadcns2 | 2023-10-24 01:47:46 UTC | #1

    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);

    tim.smith | 2023-10-24 13:36:09 UTC | #2

    API requests can take up to 15 seconds to complete. If you're not getting timeout responses, the API is behaving normally.


    broadcns2 | 2023-10-25 06:08:53 UTC | #3

    Thanks for the reply.


    system | 2023-11-25 06:09:11 UTC | #4

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


    This post was migrated from the old Developer Forum.

    ref: 22706