Разработчикам приложений Google Chat может потребоваться отладка кода, чтобы протестировать изменения или устранить неполадки. Отладку приложений Chat можно выполнять разными способами в зависимости от архитектуры приложения, его функций, способа развертывания и ваших предпочтений.
На этой странице рассказывается, как отлаживать HTTP-приложение Chat с помощью ngrok – единой платформы для входящего трафика, которую можно использовать для тестирования локальных сред разработки. В этом руководстве вы будете тестировать изменения кода в локальной среде и устранять неполадки в удаленной среде.
Отладка в локальной среде разработки
В этом разделе вы будете взаимодействовать с приложением Chat, которое выполняется в вашей локальной среде.
Рисунок 1. Выполняйте отладку в локальной среде разработки.
Семинар
Node.js
Python
Java
Требования
Node.js
- Последние версии
nodeиnpm, установленные в вашей локальной среде. Последняя версия
nodemonустановлена в вашей локальной среде и используется для автоматического пополнения.npm install -g nodemonПриложение Chat с поддержкой HTTP, настроенное для обмена сообщениями. Вы можете следовать инструкциям из разделов Требования, Настройка среды и Публикация приложения в Google Chat руководства по быстрому началу работы. Единственное отличие заключается в том, что в поле Название приложения нужно указать
Debug App, а в поле URL конечной точки HTTP – что-нибудь вродеhttp://example.com.Интегрированная среда разработки, настроенная в локальной среде и поддерживающая отладку. В этом руководстве для иллюстрации мы используем
Visual Studio CodeIDE и ее функции отладки по умолчанию.Gitустановлен в вашей локальной среде.Аккаунт
ngrok.
Python
- Последняя версия
python3установлена в вашей локальной среде. - Последние версии
pipиvirtualenv, установленные в локальной среде, используются для управления пакетами Python и виртуальными средами соответственно. - Приложение Chat с поддержкой HTTP, настроенное для обмена сообщениями. Вы можете следовать инструкциям из разделов Требования, Настройка среды и Публикация приложения в Google Chat руководства по быстрому началу работы. Единственное отличие заключается в том, что в поле Название приложения нужно указать
Debug App, а в поле URL конечной точки HTTP – что-нибудь вродеhttp://example.com. - Интегрированная среда разработки, настроенная в локальной среде и поддерживающая отладку. В этом руководстве для иллюстрации мы используем
Visual Studio CodeIDE и ее функции отладки по умолчанию. Gitустановлен в вашей локальной среде.- Аккаунт
ngrok. - Последняя версия
gcloudустановлена и инициализирована в вашей локальной среде.
Java
- Последняя стабильная версия
Java SE 11's JDK, установленная в вашей локальной среде. - Последняя версия
Apache Mavenустановлена в вашей локальной среде и используется для управления проектами Java. - Приложение Chat с поддержкой HTTP, настроенное для обмена сообщениями. Вы можете следовать инструкциям из разделов Требования, Настройка среды и Публикация приложения в Google Chat руководства по быстрому началу работы. Единственное отличие заключается в том, что в поле Название приложения нужно указать
Debug App, а в поле URL конечной точки HTTP триггера Сообщение – что-нибудь вродеhttp://example.com. - Интегрированная среда разработки, настроенная в локальной среде и поддерживающая отладку. В этом руководстве для иллюстрации мы используем
Visual Studio CodeIDE и ее функции отладки по умолчанию. Gitустановлен в вашей локальной среде.- Аккаунт
ngrok. - Последняя версия
gcloudустановлена и инициализирована в вашей локальной среде.
Как сделать сервис localhost общедоступным
Вам нужно подключить локальную среду к интернету, чтобы приложение Chat могло получить к ней доступ. Приложение ngrok используется для перенаправления HTTP-запросов, отправленных на общедоступный URL, в вашу локальную среду.
- В браузере в локальной среде войдите в аккаунт
ngrok. - Установите приложение и настройте
authtokenв локальной среде. - Создайте статический домен в аккаунте
ngrok. В инструкциях этого руководства он упоминается какNGROK_STATIC_DOMAIN.
Как настроить приложение Chat
Настройте чат-приложение так, чтобы оно отправляло все HTTP-запросы в ваш статический домен.
Откройте страницу Google Chat API в Google API Console:
Нажмите на вкладку Конфигурация.
Выберите Интерактивные функции > Настройки подключения > Триггеры и задайте URL конечной точки HTTP для триггеров, которые вы хотите протестировать (например, Сообщение), следующим образом:
https://NGROK_STATIC_DOMAINЗамените
NGROK_STATIC_DOMAINстатическим доменом в аккаунтеngrok.Нажмите Сохранить.
Рисунок 2. Приложение Chat отправляет все свои HTTP-запросы в статический домен. Общедоступный сервис ngrok выступает в качестве связующего звена между приложением Chat и кодом приложения, который выполняется локально.
Как протестировать приложение Chat
Вы можете локально развернуть, настроить, протестировать, отладить и автоматически перезагрузить приложение Chat.
Node.js
Клонируйте репозиторий
googleworkspace/add-ons-samplesс сайта GitHub в локальную среду. В нем содержится код приложения, которое нужно выполнить:git clone https://github.com/googleworkspace/add-ons-samples.gitВ интегрированной среде разработки
Visual Studio Code, установленной в вашей локальной среде, выполните следующие действия:- В новом окне откройте папку
add-ons-samples/node/chat/avatar-app. Чтобы настроить автоматическую перезагрузку для отладки, добавьте в файл
package.jsonдва скрипта:{ ... "scripts": { ... "debug": "node --inspect index.js", "debug-watch": "nodemon --watch ./ --exec npm run debug" } ... }Установите приложение из корневого каталога:
npm installСоздайте и настройте запуск с названием
Debug Watch, который будет активировать скриптdebug-watch, создав файл.vscode/launch.jsonв корневом каталоге:{ "version": "0.2.0", "configurations": [{ "type": "node", "request": "launch", "name": "Debug Watch", "cwd": "${workspaceRoot}", "runtimeExecutable": "npm", "runtimeArgs": ["run-script", "debug-watch"] }] }Добавьте точку останова, которая приостанавливает обработку HTTP-запроса в файле
index.js, и запустите отладку с добавленной ранее конфигурациейDebug Watch. Приложение запущено и ожидает HTTP-запросы на порту9000.
Рисунок 3. Приложение запущено и ожидает HTTP-запросы на порту
9000.
- В новом окне откройте папку
Запустите приложение
ngrokв локальной среде:ngrok http --domain=NGROK_STATIC_DOMAIN 9000Замените
NGROK_STATIC_DOMAINстатическим доменом в аккаунтеngrok. Теперь все запросы перенаправляются в вашу локальную среду и на порт, используемый приложением.
Рисунок 4. Терминал с запущенным сервером
ngrok, который выполняет переадресацию.Веб-интерфейс также запускается на вашем локальном хосте приложением
ngrokи позволяет отслеживать все действия, открывая его в браузере.
Рисунок 5. Веб-интерфейс, размещенный в приложении
ngrok, не показывает HTTP-запросы.Протестируйте чат-приложение, отправив ему прямое сообщение:
Откройте Google Chat.
Нажмите Создать чат .
В диалоговом окне введите название приложения Chat.
В результатах поиска найдите приложение Chat и нажмите Добавить > Chat.
В чат-группе прямой переписки введите
Helloи нажмитеenter. Приложение Chat не отвечает, потому что в нем выполняется активная отладка.
В
Visual Studio Codeв локальной среде вы увидите, что выполнение приостановлено в точке останова, которую вы задали.
Рисунок 6. Выполнение приостановлено в точке останова.
Когда вы возобновляете выполнение из отладчика,
Visual Studio Codeдо того, как Google Chat завершит работу приложения Chat, оно отвечает на ваше сообщение.Вы можете проверить журналы HTTP-запросов и ответов в веб-интерфейсе, размещенном приложением
ngrokв вашей локальной среде.
Рисунок 7. HTTP-запрос от веб-интерфейса, размещенного в приложении
ngrok.Чтобы изменить поведение приложения, обновите текст ответа в файле
index.js. Когда вы сохраняете файл,nodemonавтоматически перезагружает приложение с обновленным исходным кодом, аVisual Studio Codeостается в режиме отладки.
Рисунок 8. Приложение запущено и ожидает HTTP-запросы на порту
9000с загруженным измененным кодом.В этот раз вместо того, чтобы отправлять второе сообщение
Helloв чат-группу, вы можете выбрать последний HTTP-запрос, зарегистрированный в веб-интерфейсе, который размещен в приложенииngrokв вашей локальной среде, и нажатьReplay. Как и в прошлый раз, приложение Chat не отвечает, потому что в нем ведется активная отладка.Когда вы возобновите выполнение из отладчика
Visual Studio Codeвы можете увидеть в веб-интерфейсе, размещенном приложениемngrokв вашей локальной среде, что приложение генерирует ответ с обновленной версией сообщения.
Python
Получите новые учетные данные пользователя для использования с Application Default Credentials:
gcloud config set project PROJECT_IDgcloud auth application-default loginЗамените
PROJECT_IDна идентификатор проекта облачного проекта приложения в Cloud.Клонируйте хранилище
googleworkspace/add-ons-samplesс сайта GitHub в локальную среду. В нем содержится код приложения:git clone https://github.com/googleworkspace/add-ons-samples.gitВ интегрированной среде разработки
Visual Studio Code, установленной в вашей локальной среде, выполните следующие действия:- В новом окне откройте папку
add-ons-samples/python/chat/avatar-app. Создайте новую виртуальную среду для Python
envи активируйте ее:virtualenv envsource env/bin/activateУстановите все зависимости проекта, используя
pipв виртуальной среде:pip install -r requirements.txtСоздайте файл
.vscode/launch.jsonв корневом каталоге и настройте запуск с именемDebug Watch, который запускает приложение из модуляfunctions-frameworkна порту9000в режиме отладки в виртуальной средеenv:{ "version": "0.2.0", "configurations": [{ "type": "python", "request": "launch", "name": "Debug Watch", "python": "${workspaceFolder}/env/bin/python3", "module": "functions_framework", "args": [ "--target", "avatar_app", "--port", "9000", "--debug" ] }] }Добавьте точку останова, которая приостанавливает обработку HTTP-запроса в файле
main.py, и запустите отладку с добавленной ранее конфигурациейDebug Watch. Приложение запущено и ожидает HTTP-запросы на порту9000.
Рисунок 3. Приложение запущено и ожидает HTTP-запросы на порту
9000.
- В новом окне откройте папку
Запустите приложение
ngrokв локальной среде:ngrok http --domain=NGROK_STATIC_DOMAIN 9000Замените
NGROK_STATIC_DOMAINстатическим доменом в аккаунтеngrok. Теперь все запросы перенаправляются в вашу локальную среду и на порт, используемый приложением.
Рисунок 4. Терминал с запущенным сервером
ngrok, который выполняет переадресацию.Веб-интерфейс также запускается на вашем локальном хосте приложением
ngrokи позволяет отслеживать все действия, открывая его в браузере.
Рисунок 5. Веб-интерфейс, размещенный в приложении
ngrok, не показывает HTTP-запросы.Протестируйте чат-приложение, отправив ему прямое сообщение:
Откройте Google Chat.
Нажмите Создать чат .
В диалоговом окне введите название приложения Chat.
В результатах поиска найдите приложение Chat и нажмите Добавить > Chat.
В чат-группе прямой переписки введите
Hey!и нажмитеenter. Приложение Chat не отвечает, поскольку в нем выполняется активная отладка.
В
Visual Studio Codeв локальной среде вы увидите, что выполнение приостановлено в точке останова, которую вы задали.
Рисунок 6. Выполнение приостановлено в точке останова.
Когда вы возобновляете выполнение из отладчика
Visual Studio Codeдо того, как Google Chat завершит работу приложения Chat, приложение отвечает, используя ваше имя и фото профиля.Вы можете проверить журналы HTTP-запросов и ответов в веб-интерфейсе, размещенном приложением
ngrokв вашей локальной среде.
Рисунок 7. HTTP-запрос от веб-интерфейса, размещенного в приложении
ngrok.Чтобы изменить поведение приложения, замените
HelloнаHeyв файлеmain.py. Когда вы сохраняете файл,Visual Studio Codeавтоматически перезагружает приложение с обновленным исходным кодом и остается в режиме отладки.
Рисунок 8. Приложение запущено и ожидает HTTP-запросы на порту
9000с загруженным измененным кодом.В этот раз вместо того, чтобы отправлять второе сообщение
Hey!в чат-группу, вы можете выбрать последний HTTP-запрос, зарегистрированный в веб-интерфейсе, который размещен в приложенииngrokв вашей локальной среде, и нажатьReplay. Как и в прошлый раз, приложение Chat не отвечает, потому что в нем ведется активная отладка.Когда вы возобновите выполнение из отладчика
Visual Studio Codeвы можете увидеть в веб-интерфейсе, размещенном приложениемngrokв вашей локальной среде, что приложение генерирует ответ с обновленной версией сообщения.
Java
Получите новые учетные данные пользователя для использования с Application Default Credentials:
gcloud config set project PROJECT_IDgcloud auth application-default loginЗамените
PROJECT_IDна идентификатор проекта облачного проекта приложения в Cloud.Клонируйте хранилище
googleworkspace/add-ons-samplesс сайта GitHub в локальной среде. В нем содержится код приложения:git clone https://github.com/googleworkspace/add-ons-samples.gitВ интегрированной среде разработки
Visual Studio Code, установленной в вашей локальной среде, выполните следующие действия:- В новом окне откройте папку
add-ons-samples/java/chat/avatar-app. Настройте проект Maven так, чтобы приложение
Appзапускалось локально на порту9000. Для этого добавьте плагин сборки Google Cloud Functions Frameworkfunction-maven-pluginв файлpom.xml:... <plugin> <groupId>com.google.cloud.functions</groupId> <artifactId>function-maven-plugin</artifactId> <version>0.11.0</version> <configuration> <functionTarget>App</functionTarget> <port>9000</port> </configuration> </plugin> ...Теперь вы можете запустить его локально в режиме отладки:
mvnDebug function:run Preparing to execute Maven in debug mode Listening for transport dt_socket at address: 8000Создайте в корневом каталоге файл
.vscode/launch.jsonи настройте запуск с именемRemote Debug Watch, который подключается к приложению, ранее запущенному с портом8000:{ "version": "0.2.0", "configurations": [{ "type": "java", "request": "attach", "name": "Remote Debug Watch", "projectName": "http-function", "hostName": "localhost", "port": 8000 }] }Добавьте точку останова, которая приостанавливает обработку HTTP-запроса в файле
App.java, и начните присоединение и отладку с помощью конфигурацииRemote Debug Watch, добавленной ранее. Приложение запущено и ожидает HTTP-запросы на порту9000.
Рисунок 3. Приложение запущено и ожидает HTTP-запросы на порту
9000.
- В новом окне откройте папку
Запустите приложение
ngrokв локальной среде:ngrok http --domain=NGROK_STATIC_DOMAIN 9000Замените
NGROK_STATIC_DOMAINстатическим доменом в аккаунтеngrok. Теперь все запросы перенаправляются в вашу локальную среду и на порт, используемый приложением.
Рисунок 4. Терминал с запущенным сервером
ngrok, который выполняет переадресацию.Веб-интерфейс также запускается на вашем локальном хосте приложением
ngrokи позволяет отслеживать все действия, открывая его в браузере.
Рисунок 5. Веб-интерфейс, размещенный в приложении
ngrok, не показывает HTTP-запросы.Протестируйте чат-приложение, отправив ему прямое сообщение:
Откройте Google Chat.
Нажмите Создать чат .
В диалоговом окне введите название приложения Chat.
В результатах поиска найдите приложение Chat и нажмите Добавить > Chat.
В чат-группе прямой переписки введите
Hey!и нажмитеenter. Приложение Chat не отвечает, поскольку в нем выполняется активная отладка.
В
Visual Studio Codeв локальной среде вы увидите, что выполнение приостановлено в точке останова, которую вы задали.
Рисунок 6. Выполнение приостановлено в точке останова.
Когда вы возобновляете выполнение из отладчика
Visual Studio Codeдо того, как Google Chat завершит работу приложения Chat, приложение отвечает, используя ваше имя и фото профиля.Вы можете проверить журналы HTTP-запросов и ответов в веб-интерфейсе, размещенном приложением
ngrokв вашей локальной среде.
Рисунок 7. HTTP-запрос от веб-интерфейса, размещенного в приложении
ngrok.Чтобы изменить поведение приложения, замените
HelloнаHeyв строке55файлаApp.java, перезапустите процессmvnDebugи снова запуститеRemote Debug Watch, чтобы подключиться и перезапустить отладку.В этот раз вместо того, чтобы отправлять второе сообщение
Hey!в чат-группу, вы можете выбрать последний HTTP-запрос, зарегистрированный в веб-интерфейсе, который размещен в приложенииngrokв вашей локальной среде, и нажатьReplay. Как и в прошлый раз, приложение Chat не отвечает, потому что в нем ведется активная отладка.Когда вы возобновите выполнение из отладчика
Visual Studio Codeвы можете увидеть в веб-интерфейсе, размещенном приложениемngrokв вашей локальной среде, что приложение генерирует ответ с обновленной версией сообщения.
Отладка в удаленной среде
В этом разделе вы будете взаимодействовать с приложением Chat, которое выполняется в удаленной среде.
Рисунок 9. Отладка в удаленной среде.
Требования
- Чат-группа с приложением Chat. Вы можете следовать инструкциям из раздела Протестируйте приложение Chat краткого руководства и найти свое приложение Chat, чтобы начать чат-группу.
- Ваше приложение, запущенное в удаленной среде с отладчиком, включенным на определенном порту, в инструкциях этого руководства обозначается как
REMOTE_DEBUG_PORT. - Ваша локальная среда может
sshс удаленной. - Интегрированная среда разработки, настроенная в локальной среде и поддерживающая отладку. В этом руководстве для иллюстрации мы используем
Visual Studio CodeIDE и ее функции отладки по умолчанию.
Как подключить локальную и удаленную среды
В локальной среде, из которой вы хотите инициировать подключение клиента отладчика, настройте SSH-туннель:
ssh -L LOCAL_DEBUG_PORT:localhost:REMOTE_DEBUG_PORT REMOTE_USERNAME@REMOTE_ADDRESSЗамените следующее:
LOCAL_DEBUG_PORT– порт отладки в вашей локальной среде.REMOTE_USERNAME– имя пользователя в удаленной среде.REMOTE_ADDRESS– адрес вашей удаленной среды.REMOTE_DEBUG_PORT– порт отладки в удаленной среде.
Порт отладки в локальной среде теперь связан с портом отладки в удаленной среде.
Начать отладку
В интегрированной среде разработки Visual Studio Code, установленной в вашей локальной среде, выполните следующие действия:
- В новом окне откройте исходный код приложения.
Создайте файл
.vscode/launch.jsonв корневом каталоге и настройте запуск с именемDebug Remote, который подключается к порту отладки в вашей локальной среде:Node.js
{ "version": "0.2.0", "configurations": [{ "type": "node", "request": "attach", "name": "Debug Remote", "address": "127.0.0.1", "port": LOCAL_DEBUG_PORT }] }Python
{ "version": "0.2.0", "configurations": [{ "type": "python", "request": "attach", "name": "Debug Remote", "connect": { "host": "127.0.0.1", "port": LOCAL_DEBUG_PORT } }] }Java
{ "version": "0.2.0", "configurations": [{ "type": "java", "request": "attach", "name": "Debug Remote", "hostName": "127.0.0.1", "port": LOCAL_DEBUG_PORT }] }Замените
LOCAL_DEBUG_PORTпортом отладки в вашей локальной среде.Добавьте в исходный код приложения точку останова, которая приостановит обработку HTTP-запроса, и запустите отладку с добавленной ранее конфигурацией
Debug Remote.
В чате с приложением Chat введите текст, который хотите проверить, и нажмите enter. Приложение Chat не отвечает, потому что в IDE Visual Studio Code выполняется отладка.
Статьи по теме
- Узнайте, как включить и запрашивать журналы ошибок.
- Узнайте, как устранить ошибки приложения Google Chat, например "Приложение не отвечает", "Google Chat API доступен только пользователям Google Workspace" или "Пользователи могут быть исключены из чат-групп".
- Подробнее о том, как устранить проблему с ошибками карточек, например если сообщения, диалоговые окна или предпросмотр ссылок не отображаются или работают неправильно…
Приложения Chat, которые не являются дополнениями: устранение неполадок с приложениями Google Chat
Следующая документация относится к приложениям Chat, которые не являются дополнениями Google Workspace. Чтобы перенести приложение Chat, которое не является дополнением, ознакомьтесь со статьей Как преобразовать приложение Chat в дополнение Google Workspace.
Чтобы отладить приложение Chat, которое не является дополнением, в локальной среде:
- На вкладке Chat API Configuration (Конфигурация) в разделе Interactive features (Интерактивные функции) > Connection settings (Настройки подключения) выберите HTTP endpoint URL (URL конечной точки HTTP) и задайте для поля HTTP endpoint URL (URL конечной точки HTTP) значение
https://<var>NGROK_STATIC_DOMAIN</var>. - Используйте образец кода для приложений Chat, которые не являются дополнениями, из репозитория GitHub
googleworkspace/google-chat-samples(google-chat-samples/node/basic-app,google-chat-samples/python/avatar-appилиgoogle-chat-samples/java/avatar-app).