Разработчику приложений Google Chat может потребоваться отладка кода для тестирования изменений или устранения сложных проблем. Отладка приложений Chat может осуществляться различными способами в зависимости от архитектуры вашего приложения, его функций, способа развертывания и ваших предпочтений.
На этой странице объясняется, как отлаживать HTTP-приложение чата с помощью ngrok — унифицированной платформы для входящего трафика, которую можно использовать для тестирования локальных сред разработки. В этом руководстве вы будете тестировать изменения кода в локальной среде и устранять неполадки в удаленной среде.
Отладка из локальной среды разработки.
В этом разделе вы взаимодействуете с вашим приложением чата, которое работает в вашей локальной среде.
Рисунок 1. Отладка в локальной среде разработки.
Мастер-класс
Node.js
Python
Java
Предварительные требования
Node.js
- В вашей локальной среде должны быть установлены последние версии
nodeиnpm. В вашей локальной среде должна быть установлена последняя версия
nodemon, она используется для автоматической перезагрузки:npm install -g nodemonПриложение для HTTP-чата, настроенное для обмена сообщениями. Вы можете следовать инструкциям в разделах «Предварительные условия» , «Настройка среды» и «Публикация приложения в Google Chat» руководства по быстрому запуску . Единственное отличие заключается в том, что вам нужно установить имя приложения как
Debug App, а URL-адрес конечной точки HTTP — на любой, например,http://example.com.В локальной среде должна быть установлена интегрированная среда разработки (IDE), способная выполнять отладку. В данном руководстве для наглядности мы используем IDE
Visual Studio Codeи её стандартные функции отладки .Установите
Gitв локальной среде.Аккаунт
ngrok.
Python
- В вашей локальной среде должна быть установлена последняя версия
python3. - В локальной среде должны быть установлены последние версии
pipиvirtualenv; они используются для управления пакетами Python и виртуальными средами соответственно. - Приложение для HTTP-чата, настроенное для обмена сообщениями. Вы можете следовать инструкциям в разделах «Предварительные условия» , «Настройка среды» и «Публикация приложения в Google Chat» руководства по быстрому запуску . Единственное отличие заключается в том, что вам нужно установить имя приложения как
Debug App, а URL-адрес конечной точки HTTP — на любой, например,http://example.com. - В локальной среде должна быть установлена интегрированная среда разработки (IDE), способная выполнять отладку. В данном руководстве для наглядности мы используем IDE
Visual Studio Codeи её стандартные функции отладки . - Установите
Gitв локальной среде. - Аккаунт
ngrok. - В вашей локальной среде должна быть установлена и инициализирована последняя версия
gcloud.
Java
- В вашей локальной среде должна быть установлена последняя стабильная версия
Java SE 11's JDK. - В локальной среде должна быть установлена последняя версия
Apache Maven, она используется для управления проектами Java. - Приложение для HTTP-чата, настроенное для обмена сообщениями. Вы можете следовать инструкциям в разделах «Предварительные условия» , «Настройка среды» и «Публикация приложения в Google Chat» руководства по быстрому запуску . Единственное отличие заключается в том, что вам нужно установить имя приложения как
Debug App, а URL-адрес конечной точки HTTP — на любой, например,http://example.com. - В локальной среде должна быть установлена интегрированная среда разработки (IDE), способная выполнять отладку. В данном руководстве для наглядности мы используем IDE
Visual Studio Codeи её стандартные функции отладки . - Установите
Gitв локальной среде. - Аккаунт
ngrok. - В вашей локальной среде должна быть установлена и инициализирована последняя версия
gcloud.
Сделайте сервис localhost общедоступным.
Для доступа приложения «Чат» к локальной среде необходимо подключить её к интернету. Приложение ngrok используется для перенаправления HTTP-запросов, отправляемых на общедоступный URL-адрес, в вашу локальную среду.
- Войдите в свою учетную запись
ngrokв локальной среде браузера. - Установите приложение и настройте свой
authtokenв локальной среде. - Создайте статический домен в своей учетной записи
ngrok; в инструкциях этого руководства он обозначается какNGROK_STATIC_DOMAIN.
Настройте приложение «Чат».
Настройте приложение «Чат» таким образом, чтобы все HTTP-запросы отправлялись на ваш статический домен.
В консоли Google API откройте страницу Google Chat API:
Перейдите на вкладку «Конфигурация» .
Перейдите в раздел «Интерактивные функции» > «Настройки подключения» и установите значение текстового поля «URL конечной точки HTTP» следующим образом:
https://NGROK_STATIC_DOMAINЗамените
NGROK_STATIC_DOMAINна статический домен в вашей учетной записиngrok.Нажмите « Сохранить ».
Рисунок 2. Приложение «Чат» отправляет все свои HTTP-запросы на статический домен. Общедоступный сервис ngrok выступает в качестве моста между приложением «Чат» и кодом приложения, который выполняется локально.
Протестируйте приложение для чата
Вы можете локально развертывать, настраивать, тестировать, отлаживать и автоматически перезагружать свое приложение чата.
Node.js
Клонируйте репозиторий
googleworkspace/google-chat-samplesс GitHub в свою локальную среду; он содержит код приложения для выполнения:git clone https://github.com/googleworkspace/google-chat-samples.gitВ установленной локально среде среды разработки
Visual Studio Codeвыполните следующие действия:- В новом окне откройте папку
google-chat-samples/node/basic-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 Чат.
Нажмите новый чат» .
В диалоговом окне введите название вашего приложения для чата.
В результатах поиска найдите свое приложение «Чат», нажмите «Добавить» > «Чат» .
В поле для личных сообщений введите
Helloи нажмитеenter. Ваше приложение «Чат» не ответит, поскольку оно находится в процессе отладки.
В локальной среде
Visual Studio Codeвы увидите, что выполнение приостановлено на установленной точке останова.
Рисунок 6. Выполнение приостановлено на установленной точке останова.
Если возобновить выполнение из отладчика
Visual Studio Codeдо истечения таймаута Google Chat, приложение Chat ответитYour message : Hello.Вы можете проверить журналы HTTP-запросов и ответов через веб-интерфейс, размещенный в локальной среде приложения
ngrok.
Рисунок 7. HTTP-запрос от веб-интерфейса, размещенного на сервере приложения
ngrok.Чтобы изменить поведение приложения, замените
Your messageнаHere was your messageв строке35файлаindex.json. После сохранения файлаnodemonавтоматически перезагрузит приложение с обновленным исходным кодом, иVisual Studio Codeостанется в режиме отладки.
Рисунок 8. Приложение запущено и принимает HTTP-запросы на порту
9000после загрузки изменений в коде.На этот раз, вместо отправки второго сообщения
Helloв поле ввода, вы можете выбрать последний HTTP-запрос, зарегистрированный в веб-интерфейсе приложенияngrokв вашей локальной среде, и нажатьReplay. Как и в прошлый раз, ваше приложение чата не ответит, поскольку оно находится в процессе активной отладки.Когда вы возобновите выполнение из отладчика
Visual Studio Codeвы увидите в веб-интерфейсе приложенияngrokв вашей локальной среде, что приложение генерирует ответ с обновленной версией сообщенияHere was your message : Hello.
Python
Получите новые учетные данные пользователя для использования в качестве учетных данных по умолчанию для приложения :
gcloud config set project PROJECT_IDgcloud auth application-default loginЗамените
PROJECT_IDна идентификатор проекта Cloud приложения.Клонируйте репозиторий
googleworkspace/google-chat-samplesс GitHub в свою локальную среду; он содержит код приложения:git clone https://github.com/googleworkspace/google-chat-samples.gitВ установленной локально среде среды разработки
Visual Studio Codeвыполните следующие действия:- В новом окне откройте папку
google-chat-samples/python/avatar-app. Создайте новое виртуальное окружение для
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 Чат.
Нажмите новый чат» .
В диалоговом окне введите название вашего приложения для чата.
В результатах поиска найдите свое приложение «Чат», нажмите «Добавить» > «Чат» .
В поле для личных сообщений напишите
Hey!и нажмитеenter. Ваше приложение «Чат» не ответит, потому что оно находится в процессе отладки.
В локальной среде
Visual Studio Codeвы увидите, что выполнение приостановлено на установленной точке останова.
Рисунок 6. Выполнение приостановлено на установленной точке останова.
Если возобновить выполнение из отладчика
Visual Studio Codeдо истечения времени ожидания Google Chat, приложение Chat ответит вашим именем и изображением аватара в сообщении.Вы можете проверить журналы HTTP-запросов и ответов через веб-интерфейс, размещенный в локальной среде приложения
ngrok.
Рисунок 7. HTTP-запрос от веб-интерфейса, размещенного на сервере приложения
ngrok.Чтобы изменить поведение приложения, замените
HelloнаHeyв строке51файлаmain.pyПосле сохранения файлаVisual Studio Codeавтоматически перезагрузит приложение с обновленным исходным кодом и останется в режиме отладки.
Рисунок 8. Приложение запущено и принимает HTTP-запросы на порту
9000после загрузки изменений в коде.На этот раз, вместо отправки второго сообщения
Hey!в поле ввода, вы можете выбрать последний HTTP-запрос, зарегистрированный в веб-интерфейсе приложенияngrokв вашей локальной среде, и нажатьReplay. Как и в прошлый раз, ваше приложение чата не ответит, поскольку оно находится в процессе активной отладки.Если возобновить выполнение из отладчика
Visual Studio Codeто в веб-интерфейсе приложенияngrokв вашей локальной среде вы увидите, что приложение генерирует ответ с обновленной версией сообщения.
Java
Получите новые учетные данные пользователя для использования в качестве учетных данных по умолчанию для приложения :
gcloud config set project PROJECT_IDgcloud auth application-default loginЗамените
PROJECT_IDна идентификатор проекта Cloud приложения.Клонируйте репозиторий
googleworkspace/google-chat-samplesс GitHub в свою локальную среду; он содержит код приложения:git clone https://github.com/googleworkspace/google-chat-samples.gitВ установленной локально среде среды разработки
Visual Studio Codeвыполните следующие действия:- В новом окне откройте папку
google-chat-samples/java/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 Чат.
Нажмите новый чат» .
В диалоговом окне введите название вашего приложения для чата.
В результатах поиска найдите свое приложение «Чат», нажмите «Добавить» > «Чат» .
В поле для личных сообщений напишите
Hey!и нажмитеenter. Ваше приложение «Чат» не ответит, потому что оно находится в процессе отладки.
В локальной среде
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. Как и в прошлый раз, ваше приложение чата не ответит, поскольку оно находится в процессе активной отладки.Если возобновить выполнение из отладчика
Visual Studio Codeто в веб-интерфейсе приложенияngrokв вашей локальной среде вы увидите, что приложение генерирует ответ с обновленной версией сообщения.
Отладка из удалённой среды
В этом разделе вы взаимодействуете со своим приложением чата, которое работает в удаленной среде.
Рисунок 9. Отладка из удаленной среды.
Предварительные требования
- Создайте личное пространство для сообщений в вашем приложении «Чат». Вы можете воспользоваться разделом «Проверка вашего приложения «Чат»» в руководстве по быстрому запуску и найти свое приложение «Чат», чтобы создать такое пространство.
- Ваше приложение, работающее в удаленной среде с включенным отладчиком на заданном порту, в инструкциях данного руководства обозначается как
REMOTE_DEBUG_PORT. - Ваша локальная среда может подключаться к удаленной среде
ssh. - В локальной среде должна быть установлена интегрированная среда разработки (IDE), способная выполнять отладку. В данном руководстве для наглядности мы используем IDE
Visual Studio Codeи её стандартные функции отладки .
Объедините локальные и удаленные среды.
В локальной среде, из которой вы хотите установить соединение с отладочным клиентом, настройте 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": "DebugRemote", "hostName": "127.0.0.1", "port": LOCAL_DEBUG_PORT }] }Замените
LOCAL_DEBUG_PORTна отладочный порт в вашей локальной среде.Добавьте точку останова в исходный код вашего приложения, которая приостанавливает обработку HTTP-запросов, и начните запуск и отладку, добавив предварительно настроенную
Debug Remote.
В поле для личных сообщений вашего приложения «Чат» введите любой текст для тестирования и нажмите enter . Ваше приложение «Чат» не ответит, потому что оно находится в процессе отладки в среде разработки Visual Studio Code .
Связанные темы
- Узнайте, как включить и запросить журналы ошибок.
- Узнайте, как исправить ошибки приложения Google Chat, такие как «Приложение не отвечает», «API Google Chat доступен только пользователям Google Workspace» или «Пользователей можно исключить из рабочих пространств».
- Узнайте, как исправить ошибки в карточках, например, когда сообщения, диалоги или предварительный просмотр ссылок не отображаются или работают должным образом.