Debugowanie aplikacji Google Chat

Jako deweloper aplikacji do Google Chat możesz potrzebować debugowania kodu, aby testować zmiany lub rozwiązywać złożone problemy. Debugowanie aplikacji do obsługi czatu można przeprowadzić na wiele różnych sposobów w zależności od architektury aplikacji, jej funkcji, sposobu wdrażania i preferencji.

Na tej stronie objaśniamy, jak debugować aplikację do obsługi czatu HTTP za pomocą ngroku – ujednoliconej platformy ruchu przychodzącego, której można używać do testowania lokalnych środowisk programistycznych. W tym przewodniku testujesz zmiany w kodzie w środowisku lokalnym i rozwiązujesz problemy w środowisku zdalnym.

Debuguj z lokalnego środowiska programistycznego

W tej sekcji pracujesz z aplikacją Google Chat, która działa w Twoim środowisku lokalnym.

Debuguj z lokalnego
środowiska programistycznego

Rysunek 1. Debuguj w lokalnym środowisku programistycznym.

Warsztat

Node.js

Python

Java

Wymagania wstępne

Node.js

Python

Java

Udostępnij usługę lokalnego hosta jako publicznie

Aby aplikacja Google Chat mogła uzyskać dostęp do środowiska lokalnego, musisz połączyć je z internetem. Aplikacja ngrok służy do przekierowania żądań HTTP na publiczny adres URL do Twojego środowiska lokalnego.

  1. W przeglądarce w środowisku lokalnym zaloguj się na konto ngrok.
  2. Zainstaluj aplikację i skonfiguruj authtoken w środowisku lokalnym.
  3. Utwórz na koncie ngrok domenę statyczną. W instrukcjach tego przewodnika wspominamy o niej jako NGROK_STATIC_DOMAIN.

Konfigurowanie aplikacji Google Chat

Skonfiguruj aplikację Google Chat, aby wysyłała wszystkie żądania HTTP do Twojej domeny statycznej.

  1. W konsoli Google Cloud otwórz stronę Google Chat API:

    Otwórz stronę interfejsu Google Chat API

  2. Kliknij kartę Configuration (Konfiguracja).

  3. Wybierz Funkcje interaktywne > Ustawienia połączenia i ustaw wartość pola tekstowego URL aplikacji na:

    https://NGROK_STATIC_DOMAIN
    

    Zastąp NGROK_STATIC_DOMAIN domeną statyczną na koncie ngrok.

  4. Kliknij Zapisz.

Aplikacja Google Chat wysyła wszystkie żądania HTTP
do domeny statycznej,

Rysunek 2. Aplikacja Google Chat wysyła wszystkie żądania HTTP do domeny statycznej. Usługa publiczna ngrok działa jako most między aplikacją Google Chat a kodem aplikacji uruchamianym lokalnie.

Testowanie aplikacji Google Chat

Aplikację Google Chat możesz wdrożyć lokalnie, skonfigurować, przetestować, debugować i automatycznie załadować ponownie.

Node.js

  1. Skopiuj repozytorium googleworkspace/google-chat-samples z GitHuba do środowiska lokalnego. Zawiera ono kod aplikacji do wykonania:

    git clone https://github.com/googleworkspace/google-chat-samples.git
    
  2. W IDE Visual Studio Code zainstalowanym w środowisku lokalnym wykonaj te czynności:

    1. W nowym oknie otwórz folder google-chat-samples/node/basic-app.
    2. Skonfiguruj debugowanie automatycznego ponownego ładowania, dodając w pliku package.json 2 skrypty:

      {
          ...
          "scripts": {
              ...
              "debug": "node --inspect index.js",
              "debug-watch": "nodemon --watch ./ --exec npm run debug"
          }
          ...
      }
      
    3. Zainstaluj aplikację z katalogu głównego:

      npm install
      
    4. Utwórz i skonfiguruj uruchomienie o nazwie Debug Watch, które będzie uruchamiać skrypt debug-watch. W tym celu utwórz w katalogu głównym plik .vscode/launch.json:

      {
          "version": "0.2.0",
          "configurations": [{
              "type": "node",
              "request": "launch",
              "name": "Debug Watch",
              "cwd": "${workspaceRoot}",
              "runtimeExecutable": "npm",
              "runtimeArgs": ["run-script", "debug-watch"]
          }]
      }
      
    5. Dodaj punkt przerwania, który wstrzymuje przetwarzanie żądania HTTP w pliku index.js, i rozpocznij uruchamianie i debugowanie z użyciem konfiguracji Debug Watch dodanej wcześniej. Aplikacja jest teraz uruchomiona i nasłuchuje żądań HTTP na porcie 9000.

      Aplikacja działa i nasłuchuje żądań HTTP na porcie „9000”

      Rysunek 3. Aplikacja działa i nasłuchuje żądań HTTP na porcie 9000.

  3. Uruchom aplikację ngrok w środowisku lokalnym:

    ngrok http --domain=NGROK_STATIC_DOMAIN 9000
    

    Zastąp NGROK_STATIC_DOMAIN domeną statyczną na koncie ngrok. Wszystkie żądania są teraz przekierowywane do środowiska lokalnego i portu używanego przez aplikację.

    Terminal z serwerem „ngrok”
działającym i przekierowującym

    Rysunek 4. Terminal z serwerem ngrok działającym i przekierowującym.

  4. Aplikacja ngrok uruchamia na serwerze lokalnym interfejs internetowy. Możesz monitorować wszystkie działania, otwierając go w przeglądarce.

    Interfejs internetowy hostowany przez aplikację „ngrok” nie pokazujący żądań HTTP

    Rysunek 5. Interfejs internetowy hostowany przez aplikację ngrok, który nie pokazuje żadnych żądań HTTP.

  5. Przetestuj swoją aplikację do obsługi czatu, wysyłając do niej wiadomość na czacie:

    • Otwórz Google Chat.

      Otwórz Google Chat

    • Kliknij Nowy czat .

    • W oknie wpisz nazwę aplikacji Google Chat.

    • W wynikach wyszukiwania znajdź aplikację do obsługi czatu i kliknij Dodaj > Google Chat.

    • W pokoju czatu wpisz Hello i naciśnij enter. Aplikacja Google Chat nie odpowiada, ponieważ jest w trakcie debugowania.

  6. W Visual Studio Code w środowisku lokalnym możesz zobaczyć, że wykonanie zostało wstrzymane w ustawionym punkcie przerwania.

    Wykonanie jest wstrzymywane w ustawionym
punkcie przerwania

    Rysunek 6. Wykonanie jest wstrzymywane w ustawionym punkcie przerwania.

  7. Gdy wznowisz wykonywanie kodu przez debugera Visual Studio Code, zanim Google Chat odpowie na żądanie Your message : Hello, zanim upłynie czas oczekiwania na odpowiedź Google Chat.

  8. Logi żądań i odpowiedzi HTTP możesz sprawdzać w interfejsie internetowym hostowanym przez aplikację ngrok w środowisku lokalnym.

    Żądanie HTTP z interfejsu internetowego hostowanego przez aplikację „ngrok”

    Rysunek 7. Żądanie HTTP z interfejsu internetowego hostowanego przez aplikację ngrok.

  9. Aby zmienić działanie aplikacji, zamień Your message na Here was your message w tekście 35 w index.json. Gdy zapiszesz plik, nodemon automatycznie ponownie wczyta aplikację ze zaktualizowanym kodem źródłowym, a Visual Studio Code pozostanie w trybie debugowania.

    Aplikacja działa i nasłuchuje żądań HTTP na porcie „9000” z załadowaną zmianą kodu

    Rysunek 8. Aplikacja działa i nasłuchuje żądań HTTP na porcie 9000 z załadowaną zmianą kodu.

  10. Tym razem zamiast wysyłać w pokoju drugą wiadomość (Hello), możesz wybrać ostatnie żądanie HTTP zarejestrowane w interfejsie internetowym hostowanym przez aplikację ngrok w środowisku lokalnym i kliknąć Replay. Tak jak ostatnio, aplikacja Google Chat nie odpowiada, ponieważ jest w trakcie debugowania.

  11. Po wznowieniu działania z debugera Visual Studio Code zobaczysz w interfejsie internetowym udostępnianym przez aplikację ngrok w środowisku lokalnym, że aplikacja generuje odpowiedź ze zaktualizowaną wersją komunikatu Here was your message : Hello.

Python

  1. Uzyskiwanie nowych danych logowania użytkownika do wykorzystania na potrzeby domyślnych danych logowania aplikacji:

    gcloud config set project PROJECT_ID
    gcloud auth application-default login
    

    Zastąp PROJECT_ID identyfikatorem projektu projektu Cloud aplikacji.

  2. Skopiuj repozytorium googleworkspace/google-chat-samples z GitHuba do środowiska lokalnego. Zawiera ono kod aplikacji:

    git clone https://github.com/googleworkspace/google-chat-samples.git
    
  3. W IDE Visual Studio Code zainstalowanym w środowisku lokalnym wykonaj te czynności:

    1. W nowym oknie otwórz folder google-chat-samples/python/avatar-app.
    2. Utwórz nowe środowisko wirtualne dla języka Python env i aktywuj je:

      virtualenv env
      source env/bin/activate
      
    3. Zainstaluj wszystkie zależności projektu za pomocą narzędzia pip w środowisku wirtualnym:

      pip install -r requirements.txt
      
    4. Utwórz plik .vscode/launch.json w katalogu głównym i skonfiguruj uruchomienie o nazwie Debug Watch, które będzie uruchamiać aplikację z modułu functions-framework na porcie 9000 w trybie debugowania w środowisku wirtualnym env:

      {
          "version": "0.2.0",
          "configurations": [{
              "type": "python",
              "request": "launch",
              "name": "Debug Watch",
              "python": "${workspaceFolder}/env/bin/python3",
              "module": "functions_framework",
              "args": [
                  "--target", "hello_chat",
                  "--port", "9000",
                  "--debug"
              ]
          }]
      }
      
    5. Dodaj punkt przerwania, który wstrzymuje przetwarzanie żądania HTTP w pliku main.py, i rozpocznij uruchamianie i debugowanie z użyciem konfiguracji Debug Watch dodanej wcześniej. Aplikacja jest teraz uruchomiona i nasłuchuje żądań HTTP na porcie 9000.

      Aplikacja działa i nasłuchuje żądań HTTP na porcie „9000”

      Rysunek 3. Aplikacja działa i nasłuchuje żądań HTTP na porcie 9000.

  4. Uruchom aplikację ngrok w środowisku lokalnym:

    ngrok http --domain=NGROK_STATIC_DOMAIN 9000
    

    Zastąp NGROK_STATIC_DOMAIN domeną statyczną na koncie ngrok. Wszystkie żądania są teraz przekierowywane do środowiska lokalnego i portu używanego przez aplikację.

    Terminal z serwerem „ngrok”
działającym i przekierowującym

    Rysunek 4. Terminal z serwerem ngrok działającym i przekierowującym.

  5. Aplikacja ngrok uruchamia na serwerze lokalnym interfejs internetowy. Możesz monitorować wszystkie działania, otwierając go w przeglądarce.

    Interfejs internetowy hostowany przez aplikację „ngrok” nie pokazujący żądań HTTP

    Rysunek 5. Interfejs internetowy hostowany przez aplikację ngrok, który nie pokazuje żadnych żądań HTTP.

  6. Przetestuj swoją aplikację do obsługi czatu, wysyłając do niej wiadomość na czacie:

    • Otwórz Google Chat.

      Otwórz Google Chat

    • Kliknij Nowy czat .

    • W oknie wpisz nazwę aplikacji Google Chat.

    • W wynikach wyszukiwania znajdź aplikację do obsługi czatu i kliknij Dodaj > Google Chat.

    • W pokoju czatu wpisz Hey! i naciśnij enter. Aplikacja Google Chat nie odpowiada, ponieważ jest w trakcie debugowania.

  7. W Visual Studio Code w środowisku lokalnym możesz zobaczyć, że wykonanie zostało wstrzymane w ustawionym punkcie przerwania.

    Wykonanie jest wstrzymywane w ustawionym
punkcie przerwania

    Rysunek 6. Wykonanie jest wstrzymywane w ustawionym punkcie przerwania.

  8. Gdy wznowisz wykonywanie kodu z debugera aplikacji Visual Studio Code, zanim upłynie limit czasu Google Chat, aplikacja Google Chat prześle w wiadomości Twoją nazwę i zdjęcie awatara.

  9. Logi żądań i odpowiedzi HTTP możesz sprawdzać w interfejsie internetowym hostowanym przez aplikację ngrok w środowisku lokalnym.

    Żądanie HTTP z interfejsu internetowego hostowanego przez aplikację „ngrok”

    Rysunek 7. Żądanie HTTP z interfejsu internetowego hostowanego przez aplikację ngrok.

  10. Aby zmienić działanie aplikacji, zamień Hello na Hey w tekście 51 w pliku main.py. Po zapisaniu pliku Visual Studio Code automatycznie ponownie wczytuje aplikację ze zaktualizowanym kodem źródłowym i pozosta w trybie debugowania.

    Aplikacja działa i nasłuchuje żądań HTTP na porcie „9000” z załadowaną zmianą kodu

    Rysunek 8. Aplikacja działa i nasłuchuje żądań HTTP na porcie 9000 z załadowaną zmianą kodu.

  11. Tym razem zamiast wysyłać w pokoju drugą wiadomość (Hey!), możesz wybrać ostatnie żądanie HTTP zarejestrowane w interfejsie internetowym hostowanym przez aplikację ngrok w środowisku lokalnym i kliknąć Replay. Tak jak ostatnio, aplikacja Google Chat nie odpowiada, ponieważ jest obecnie debugowana.

  12. Po wznowieniu działania z debugera Visual Studio Code zobaczysz w interfejsie internetowym udostępnianym przez aplikację ngrok w środowisku lokalnym, że aplikacja generuje odpowiedź ze zaktualizowaną wersją komunikatu.

Java

  1. Uzyskiwanie nowych danych logowania użytkownika do wykorzystania na potrzeby domyślnych danych logowania aplikacji:

    gcloud config set project PROJECT_ID
    gcloud auth application-default login
    

    Zastąp PROJECT_ID identyfikatorem projektu projektu Cloud aplikacji.

  2. Sklonuj repozytorium googleworkspace/google-chat-samples z GitHuba w środowisku lokalnym. Zawiera ono kod aplikacji:

    git clone https://github.com/googleworkspace/google-chat-samples.git
    
  3. W IDE Visual Studio Code zainstalowanym w środowisku lokalnym wykonaj te czynności:

    1. W nowym oknie otwórz folder google-chat-samples/java/avatar-app.
    2. Skonfiguruj projekt Maven tak, aby aplikacja HelloChat była uruchamiana lokalnie na porcie 9000. W tym celu dodaj wtyczkę function-maven-plugin do kompilacji Cloud Functions Framework w pliku pom.xml:

      ...
      <plugin>
          <groupId>com.google.cloud.functions</groupId>
          <artifactId>function-maven-plugin</artifactId>
          <version>0.11.0</version>
          <configuration>
              <functionTarget>HelloChat</functionTarget>
              <port>9000</port>
          </configuration>
      </plugin>
      ...
      
    3. Możesz teraz uruchomić go lokalnie w trybie debugowania:

      mvnDebug function:run
      Preparing to execute Maven in debug mode
      Listening for transport dt_socket at address: 8000
      
    4. Utwórz plik .vscode/launch.json w katalogu głównym i skonfiguruj uruchomienie o nazwie Remote Debug Watch, które będzie dołączać do aplikacji uruchomionej wcześniej przez port 8000:

      {
          "version": "0.2.0",
          "configurations": [{
              "type": "java",
              "request": "attach",
              "name": "Remote Debug Watch",
              "projectName": "http-function",
              "hostName": "localhost",
              "port": 8000
          }]
      }
      
    5. Dodaj punkt przerwania, który wstrzymuje przetwarzanie żądań HTTP w pliku HelloChat.java, i rozpocznij dołączanie i debugowanie za pomocą konfiguracji Remote Debug Watch dodanej wcześniej. Aplikacja działa teraz i nasłuchuje żądań HTTP na porcie 9000.

      Aplikacja działa i nasłuchuje żądań HTTP na porcie „9000”

      Rys. 3. Aplikacja działa i nasłuchuje żądań HTTP na porcie 9000.

  4. Uruchom aplikację ngrok w środowisku lokalnym:

    ngrok http --domain=NGROK_STATIC_DOMAIN 9000
    

    Zastąp NGROK_STATIC_DOMAIN domeną statyczną na koncie ngrok. Wszystkie żądania są teraz przekierowywane do środowiska lokalnego i portu używanego przez aplikację.

    Terminal z serwerem „ngrok”
działającym i przekierowującym

    Rysunek 4. Terminal z serwerem ngrok działającym i przekierowującym.

  5. Aplikacja ngrok uruchamia na serwerze lokalnym interfejs internetowy. Możesz monitorować wszystkie działania, otwierając go w przeglądarce.

    Interfejs internetowy hostowany przez aplikację „ngrok” nie pokazujący żądań HTTP

    Rysunek 5. Interfejs internetowy hostowany przez aplikację ngrok, który nie pokazuje żadnych żądań HTTP.

  6. Przetestuj swoją aplikację do obsługi czatu, wysyłając do niej wiadomość na czacie:

    • Otwórz Google Chat.

      Otwórz Google Chat

    • Kliknij Nowy czat .

    • W oknie wpisz nazwę aplikacji Google Chat.

    • W wynikach wyszukiwania znajdź aplikację do obsługi czatu i kliknij Dodaj > Google Chat.

    • W pokoju czatu wpisz Hey! i naciśnij enter. Aplikacja Google Chat nie odpowiada, ponieważ jest w trakcie debugowania.

  7. W Visual Studio Code w środowisku lokalnym możesz zobaczyć, że wykonanie zostało wstrzymane w ustawionym punkcie przerwania.

    Wykonanie jest wstrzymywane w ustawionym
punkcie przerwania

    Rysunek 6. Wykonanie jest wstrzymywane w ustawionym punkcie przerwania.

  8. Gdy wznowisz wykonywanie kodu z debugera aplikacji Visual Studio Code, zanim upłynie limit czasu Google Chat, aplikacja Google Chat prześle w wiadomości Twoją nazwę i zdjęcie awatara.

  9. Logi żądań i odpowiedzi HTTP możesz sprawdzać w interfejsie internetowym hostowanym przez aplikację ngrok w środowisku lokalnym.

    Żądanie HTTP z interfejsu internetowego hostowanego przez aplikację „ngrok”

    Rysunek 7. Żądanie HTTP z interfejsu internetowego hostowanego przez aplikację ngrok.

  10. Aby zmienić działanie aplikacji, zastąp Hello wierszem Hello w tekście 55 w pliku HelloChat.java, uruchom ponownie proces mvnDebug i uruchom ponownie Remote Debug Watch, aby ponownie podłączyć i uruchomić debugowanie.Hey

  11. Tym razem zamiast wysyłać w pokoju drugą wiadomość (Hey!), możesz wybrać ostatnie żądanie HTTP zarejestrowane w interfejsie internetowym hostowanym przez aplikację ngrok w środowisku lokalnym i kliknąć Replay. Tak jak ostatnio, aplikacja Google Chat nie odpowiada, ponieważ jest w trakcie debugowania.

  12. Po wznowieniu działania z debugera Visual Studio Code zobaczysz w interfejsie internetowym udostępnianym przez aplikację ngrok w środowisku lokalnym, że aplikacja generuje odpowiedź ze zaktualizowaną wersją komunikatu.

Debuguj ze środowiska zdalnego

W tej sekcji pracujesz z aplikacją do obsługi czatu, która działa w środowisku zdalnym.

Debuguj ze środowiska zdalnego

Rysunek 9. Debuguj ze środowiska zdalnego.

Wymagania wstępne

  • Pokój czatu z aplikacją Google Chat. Możesz skorzystać z sekcji Testowanie aplikacji do obsługi czatu w krótkim przewodniku i wyszukać swoją aplikację, aby ją uruchomić.
  • Twoja aplikacja uruchomiona w środowisku zdalnym z włączonym debugerem na danym porcie jest w instrukcjach tego przewodnika oznaczona jako REMOTE_DEBUG_PORT.
  • Środowisko lokalne może ssh do środowiska zdalnego.
  • Skonfigurowane w środowisku lokalnym IDE, które można debugować. Używamy Visual Studio Code IDE i jego domyślnych funkcji debugowania w tym przewodniku w celach poglądowych.

Połącz środowiska lokalne i zdalne

W środowisku lokalnym, w którym chcesz zainicjować połączenie z klientem debugowania, skonfiguruj tunel SSH:

ssh -L LOCAL_DEBUG_PORT:localhost:REMOTE_DEBUG_PORT REMOTE_USERNAME@REMOTE_ADDRESS

Zastąp następujące elementy:

  • LOCAL_DEBUG_PORT: port debugowania w środowisku lokalnym.
  • REMOTE_USERNAME: nazwa użytkownika w środowisku zdalnym.
  • REMOTE_ADDRESS: adres środowiska zdalnego.
  • REMOTE_DEBUG_PORT: port debugowania w środowisku zdalnym.

Port debugowania w środowisku lokalnym jest teraz połączony z portem debugowania w środowisku zdalnym.

Rozpocznij debugowanie

Z poziomu IDE Visual Studio Code zainstalowanego w środowisku lokalnym wykonaj te czynności:

  1. W nowym oknie otwórz kod źródłowy aplikacji.
  2. Utwórz plik .vscode/launch.json w katalogu głównym i skonfiguruj uruchomienie o nazwie Debug Remote podłączane do portu debugowania w środowisku lokalnym:

    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
        }]
    }
    

    Zastąp LOCAL_DEBUG_PORT portem debugowania w środowisku lokalnym.

  3. Dodaj w kodzie źródłowym aplikacji punkt przerwania, który wstrzymuje przetwarzanie żądań HTTP, i rozpocznij uruchamianie i debugowanie za pomocą dodanej wcześniej konfiguracji Debug Remote.

W pokoju czatu w aplikacji do obsługi czatu wpisz, co chcesz przetestować, i naciśnij enter. Twoja aplikacja Google Chat nie odpowiada, ponieważ jest aktywnie debugowana w IDE Visual Studio Code.