API выполнения диалогового потока — первый вызов занимает гораздо больше времени, чем последующие запросы

#axios #google-cloud-functions #dialogflow-es #dialogflow-es-fulfillment

# #axios #google-cloud-функции #dialogflow-es #dialogflow-es-выполнение

Вопрос:

Я разрабатываю чат-бота Messenger, который вызывает сторонние API для получения данных. API-интерфейсы обычно возвращают данные менее чем за 2 секунды, но когда я вызываю API-интерфейсы из выполнения диалогового потока (встроенная функция), первый вызов занимает более 20 секунд, чтобы получить данные, что повлияет на тайм-аут Dialogflow 5s. Последующие запросы выполняются менее чем за 2 секунды.

Я использую axios для вызова API. Есть предложения по улучшению времени отклика?

Ниже приведена функция, вызывающая API

 function getArrearsData(agent,tenantId) {
console.log("Getting the Arrears Details");

 return axios.get(`${baseUrl}api/Integrations/Arrears?tenantId=${tenantId}`)
  .then((result) => {
    if (result.data) {
      if (result.data.responseCode == 12) {
        let arrearsData = {};
        if (result.data.arrears.length > 0) {
          let paidToDate = moment(result.data.arrears[0].paidToDate).format('DD/MM/YYYY');
          arrearsData = {
            arrearsAmount: "$"   result.data.arrears[0].arrearsAmount,
            arrearsDays: result.data.arrears[0].arrearsDays,
            paidToDate: paidToDate
          };
        } else {
          arrearsData = {
            arrearsAmount: "N/A",
            arrearsDays: "N/A",
            paidToDate: "N/A"
          };
        }
        agent.add("");
        agent.context.set({ name: 'rental_details', lifespan: 5, parameters: { arrearsDetails: arrearsData }});
        agent.setFollowupEvent('ARREARS_DETAILS_EVENT');
      } else {
        console.log("getting arrears data failed!");
        agent.add("");
        agent.add("something wrong");
        agent.setFollowupEvent('Q_AND_A_INTENT_EVENT');
      }
    } else {
      console.log("getting arrears data failed!");
      agent.add("");
      agent.add("something wrong");
      agent.setFollowupEvent('Q_AND_A_INTENT_EVENT');
    }
  });}
 

Комментарии:

1. Не могли бы вы опубликовать код, который вызывает API? Наблюдаете ли вы такое же поведение, если вызываете эти API-интерфейсы извне завершения?

2. Я бы также добавил некоторую временную метку в ваш код выполнения. Я думаю, я бы проверил, занимает ли запуск / инициирование функции выполнения много времени или это первый вызов вашего серверного сервиса, который занимает много времени. Если позже, то это может быть проблема не с Google, а с поставщиком внутренних услуг, которому вы звоните.

3. Я предлагаю внедрить ведение журнала, как сказал Колбан, чтобы сузить местоположение проблемы и любезно поделиться с нами результатами