Dialogflow — ТАЙМ-АУТ задержки при выполнении веб-соединения

# #dialogflow-es

Вопрос:

Я столкнулся с довольно странной проблемой при выполнении Dialogflow.

Контекст:

  • Я создал простого бота Dialogflow с некоторыми намерениями. Эти намерения работают должным образом, когда я тестирую их в своей среде разработки (используя службу туннелирования ngrok для создания общедоступной https конечной точки для моего сервера webhook).
  • После этого я начал сталкиваться с проблемой на моем предпроизводственном сервере. Архитектура этого последнего сервера точно такая же, как и в разработке. Дело в том, что намерения большую часть времени работают правильно, но иногда одни и те же намерения не работают; более конкретно, бот вообще не отвечает.

Ошибка:

  • Взглянув на свою историю диалогового потока, я заметил общую ошибку между всеми «неотвеченными» сообщениями, которая заключается в следующем:

Ошибка в истории диалогового потока

Похоже, что процесс поиска DNS, который создает Dialogflow, иногда заканчивается ошибкой тайм — аута.

Я добавляю диаграмму, чтобы добавить больше контекста:

Схема связи

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

  • Код статуса ответа-200.
  • Вызов разрешается до 5 секунд (максимальный тайм-аут Dialogflow при вызовах webhook).

Все эти звонки прошли проверку.

Тот факт, что намерения иногда терпят неудачу (чаще работают, чем терпят неудачу), сводит меня с ума… Я был бы признателен за любую подсказку по этому вопросу.

Спасибо.

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

1. Привет, Мочис, не могли бы вы предоставить более подробную информацию, такую как управление версиями используемой вами библиотеки Dialogflow? Кроме того, поступают ли сообщения параллельно? ( если это так, то есть некоторые квоты, которые могут быть превышены (агент CX и ES), вы можете проверить это здесь .

2. Привет @Betjens, я не использую библиотеку Dialogflow с точки зрения кода. Я использую текущую версию Dialogflow ES. Это также не похоже на проблему с использованием моей квоты, так как я тестирую бота в одиночку, и никто не взаимодействует с ним, кроме меня. Напомним, что бот работает правильно, когда я использую туннелирование ngrok для обслуживания своего бэкенда webhook.

3. Трудно воспроизвести сценарий вашей ошибки. Кроме того, похоже, что его больше на стороне NGNIX в вашем потоке, я хотел бы узнать больше о вашей настройке NGNIX. Кроме того, см.

4. Обратите внимание, что мой NGINX не принимает никаких вызовов, когда происходит эта ошибка . В любом случае, я расскажу вам больше о своем NGINX. Я только что настроил его на прослушивание 443 ssl, настроил имя хоста и сертификат ( ключ) и включил 2 proxy_pass (/чат и /api). В связи с упомянутым вами потоком я использую docker-compose для организации развертывания, поэтому я использую имена служб для настройки proxy_pass. Кроме того, я думаю, что если бы это была ошибка NGINX, я бы увидел любой журнал NGINX, которого у меня нет.

Ответ №1:

У меня та же проблема. Все работало нормально до трех дней назад ( я ничего не менял). При использовании DialogFlow ES иногда возникает проблема. Я не знаю, что происходит.

У меня есть выполнение внутри виртуальной машины в проекте GCP

   "diagnosticInfo": {
    "webhook_latency_ms": 1226
  },
  "webhookStatus": {
    "webhookStatus": {
      "code": 4,
      "message": "Webhook call failed. Error: DEADLINE_EXCEEDED, State: URL_TIMEOUT, Reason: TIMEOUT_DNSLOOKUP."
    },
    "webhookUsed": true
  },
 

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

1. Может ли это быть проблемой со стороны Google?

2. Привет, Бруно. Действительно, это кажется проблемой со стороны Google, но я не уверен на 100%. Не могли бы вы рассказать подробнее о своем сценарии? Давайте посмотрим, сможем ли мы найти общие точки соприкосновения и решить эту проблему.

3. Привет, Мочики. У меня есть два разных проекта в GCP, оба полностью изолированы. Каждый проект состоит из виртуальной машины, развернутой в GCP, и внутри виртуальной машины есть несколько докеров для разных целей, я тоже использую docker-compose. В одном докере у меня есть сервер NodeJS, который вызывает API dialogflow, в том же докере у меня есть сервер выполнения (вызовы webhook). В прошлую пятницу все работало нормально, в обоих проектах. Я ничего не изменил, и проблема началась между пятницей и понедельником. Я полагаю, что что-то изменилось в DialogFlow или на DNS-сервере.

4. Какой DNS-провайдер вы используете для производства?

5. Я не уверен в поставщике DNS, так как я не являюсь владельцем домена. Можно было бы спросить, очень ли это актуально.

Ответ №2:

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

Возможно, вам следует сообщить об этом непосредственно в отчете о проблемах Google, и они могут оказать дополнительную помощь.

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

1. Привет, Бетдженс, я не вижу связанных выпусков за последние месяцы, но я отправлю проблему в систему отслеживания проблем, которую вы связали. Спасибо.

2. Я открыл проблему в трекере проблем Dialogflow. Скрестив пальцы. issuetracker.google.com/issues/203461124