Как отлаживать обработчики намерений Java для действий в Google, используя точки останова?

Я разрабатываю свой первый Action для Google Assistant, используя IntelliJ Community и библиотеку Java/Kotlin Client для разработки кода выполнения. Есть ли способ отладки кода с использованием точек останова?

1 ответ

Решение

Поскольку код будет запускаться удаленно на сервере, вы не можете отладить локально обычным способом. Один из способов отладки - это ведение журнала, распечатка ключевых переменных и проверка их для понимания значений / потока.

Однако, если вы используете Google Cloud, вы можете посмотреть на использование снимков отладчика Stackdriver. Это не остановит выполнение, но сделает снимок состояния приложения в это время, чтобы вы могли вернуться и посмотреть, в какой строке находятся ваши переменные.

Я не сдавался и сделал это. Возможны действия по отладке при заполнении Google локально обычным способом.

Для этого я использовал: IntelliJ Community Edition и ngrok.

  1. Разверните и запустите / отладьте полную версию на локальном сервере AppEngine ( руководство).
  2. Запустите ngrok, чтобы получить общедоступный URL-адрес для доступа к вашему локальному приложению (используя командную строку "ngrok.exe http {portNumber}").
  3. Скопируйте и вставьте URL-адрес https в Dialogflow > Fullfilment > Webhook > URL.
  4. Проверьте свое действие на консоли действий.

Когда ваше заполнение получит Post Request от DialogFlow, ваше приложение остановится на точках останова, и вы сможете отлаживать обычным способом.

Единственным недостатком этого решения является то, что время ожидания Google Assistant для ответа от полного заполнения ограничено, поэтому во время отладки в какой-то момент ваше действие может перестать отображать сообщение "YourApp не отвечает прямо сейчас. Повторите попытку позже..". Однако это решение позволяет очень быстро развертывать и отлаживать, и лично я очень ценю его на этапе разработки.