Как отлаживать обработчики намерений Java для действий в Google, используя точки останова?
Я разрабатываю свой первый Action для Google Assistant, используя IntelliJ Community и библиотеку Java/Kotlin Client для разработки кода выполнения. Есть ли способ отладки кода с использованием точек останова?
1 ответ
Поскольку код будет запускаться удаленно на сервере, вы не можете отладить локально обычным способом. Один из способов отладки - это ведение журнала, распечатка ключевых переменных и проверка их для понимания значений / потока.
Однако, если вы используете Google Cloud, вы можете посмотреть на использование снимков отладчика Stackdriver. Это не остановит выполнение, но сделает снимок состояния приложения в это время, чтобы вы могли вернуться и посмотреть, в какой строке находятся ваши переменные.
Я не сдавался и сделал это. Возможны действия по отладке при заполнении Google локально обычным способом.
Для этого я использовал: IntelliJ Community Edition и ngrok.
- Разверните и запустите / отладьте полную версию на локальном сервере AppEngine ( руководство).
- Запустите ngrok, чтобы получить общедоступный URL-адрес для доступа к вашему локальному приложению (используя командную строку "ngrok.exe http {portNumber}").
- Скопируйте и вставьте URL-адрес https в Dialogflow > Fullfilment > Webhook > URL.
- Проверьте свое действие на консоли действий.
Когда ваше заполнение получит Post Request от DialogFlow, ваше приложение остановится на точках останова, и вы сможете отлаживать обычным способом.
Единственным недостатком этого решения является то, что время ожидания Google Assistant для ответа от полного заполнения ограничено, поэтому во время отладки в какой-то момент ваше действие может перестать отображать сообщение "YourApp не отвечает прямо сейчас. Повторите попытку позже..". Однако это решение позволяет очень быстро развертывать и отлаживать, и лично я очень ценю его на этапе разработки.