Debugowanie aplikacji Google Chat

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

Na tej stronie dowiesz się, jak debugować aplikację do czatu HTTP za pomocą ngroka, czyli ujednoliconej platformy wejścia, której możesz używać do testowania lokalnych środowisk deweloperskich. W tym przewodniku przetestujesz zmiany w kodzie w środowisku lokalnym i rozwiążesz problemy w środowisku zdalnym.

Debugowanie w lokalnym środowisku programistycznym

W tej sekcji możesz korzystać z aplikacji do obsługi czatu, która działa w środowisku lokalnym.

Debugowanie w lokalnym środowisku programistycznym

Rysunek 1. Debugowanie w lokalnym środowisku programistycznym.

Warsztat

Node.js

Python

Java

Wymagania wstępne

Node.js

Python

Java

Udostępnianie usługi localhost publicznie

Musisz połączyć środowisko lokalne z internetem, aby aplikacja Chat miała do niego dostęp. Aplikacja ngrok służy do przekierowywania żądań HTTP wysyłanych pod publiczny adres URL do środowiska lokalnego.

  1. W przeglądarce w środowisku lokalnym zaloguj się na konto ngrok.
  2. Zainstaluj aplikację i skonfiguruj urządzenie authtoken w środowisku lokalnym.
  3. Utwórz w swoim koncie domenę statyczną, która w instrukcjach tego przewodnika jest oznaczona jako NGROK_STATIC_DOMAIN.ngrok

Konfigurowanie aplikacji Google Chat

Skonfiguruj aplikację do obsługi czatu tak, aby wysyłała wszystkie żądania HTTP do Twojej statycznej domeny.

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

    Otwórz stronę Google Chat API

  2. Kliknij kartę Configuration (Konfiguracja).

  3. Kliknij Funkcje interaktywne > Ustawienia połączenia i ustaw wartość pola tekstowego Adres URL punktu końcowego HTTP na:

    https://NGROK_STATIC_DOMAIN
    

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

  4. Kliknij Zapisz.

Aplikacja do obsługi czatu wysyła wszystkie żądania HTTP do domeny statycznej.

Rysunek 2. Aplikacja do obsługi czatu wysyła wszystkie żądania HTTP do domeny statycznej. ngrokUsługa publiczna działa jako pomost między aplikacją do czatu a kodem aplikacji, który jest wykonywany lokalnie.

Testowanie aplikacji Google Chat

Aplikację do obsługi czatu możesz wdrażać, konfigurować, testować, debugować i automatycznie przeładowywać lokalnie.

Node.js

  1. Sklonuj repozytorium googleworkspace/google-chat-samples z GitHuba na środowisko lokalne. Zawiera ono kod aplikacji do wykonania:

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

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

      {
          ...
          "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 uruchamia skrypt debug-watch, tworząc plik .vscode/launch.json w katalogu głównym:

      {
          "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 za pomocą dodanej wcześniej konfiguracji Debug Watch. Aplikacja działa już 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 statyczną domeną na koncie ngrok. Wszystkie żądania są teraz przekierowywane do środowiska lokalnego i portu używanego przez aplikację.

    Terminal z uruchomionym serwerem `ngrok` i przekierowaniem

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

  4. Aplikacja ngrokuruchamia też interfejs internetowy na Twoim lokalnym hoście. Możesz monitorować wszystkie działania, otwierając go w przeglądarce.

    Interfejs internetowy hostowany przez aplikację „ngrok”, w którym nie widać żadnych żądań HTTP

    Rysunek 5. Interfejs internetowy hostowany przez aplikację ngrok, w którym nie widać żadnych żądań HTTP.

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

    • Otwórz Google Chat.

      Otwórz Google Chat

    • Kliknij Nowy czat .

    • W oknie wpisz nazwę aplikacji do obsługi czatu.

    • W wynikach wyszukiwania znajdź aplikację Chat i kliknij Dodaj > Chat.

    • W polu czatu wpisz Hello i naciśnij enter. Aplikacja do czatu nie odpowiada, ponieważ jest aktywnie debugowana.

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

    Wykonywanie zostało wstrzymane w ustawionym punkcie przerwania.

    Rysunek 6. Wykonywanie jest wstrzymane w ustawionym punkcie przerwania.

  7. Gdy wznowisz wykonywanie w debuggerze, Visual Studio Codezanim Google Chat przekroczy limit czasu aplikacji do obsługi czatuYour message : Hello, aplikacja odpowie.

  8. Dzienniki żądań i odpowiedzi HTTP możesz sprawdzić 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, zastąp Your message ciągiem Here was your message w wierszu 35 elementu index.json. Gdy zapiszesz plik, nodemon automatycznie ponownie załaduje aplikację z zaktualizowanym kodem źródłowym, a Visual Studio Code pozostanie w trybie debugowania.

    Aplikacja działa i nasłuchuje żądań HTTP na porcie `9000` ze zmianą kodu

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

  10. Tym razem zamiast wysyłać drugi komunikat Hello w pokoju możesz wybrać ostatnie żądanie HTTP zarejestrowane w interfejsie internetowym hostowanym przez aplikację ngrok w środowisku lokalnym i kliknąć Replay. Podobnie jak ostatnio aplikacja Chat nie odpowiada, ponieważ jest aktywnie debugowana.

  11. Gdy wznowisz wykonywanie w debuggerze, w interfejsie internetowym hostowanym przez aplikację ngrok w środowisku lokalnym zobaczysz, że aplikacja generuje odpowiedź ze zaktualizowaną wersją wiadomości Here was your message : Hello.Visual Studio Code

Python

  1. Uzyskaj nowe dane logowania użytkownika, aby używać ich w 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 GitHub na środowisko lokalne. Zawiera ono kod aplikacji:

    git clone https://github.com/googleworkspace/google-chat-samples.git
  3. Visual Studio Code IDE 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 Pythona env i aktywuj je:

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

      pip install -r requirements.txt
    4. Utwórz w katalogu głównym plik .vscode/launch.json i skonfiguruj uruchomienie o nazwie Debug Watch, które 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", "avatar_app",
                  "--port", "9000",
                  "--debug"
              ]
          }]
      }
      
    5. Dodaj punkt przerwania, który wstrzymuje przetwarzanie żądania HTTP w pliku main.py, i rozpocznij uruchamianie i debugowanie za pomocą dodanej wcześniej konfiguracji Debug Watch. Aplikacja działa już 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 statyczną domeną na koncie ngrok. Wszystkie żądania są teraz przekierowywane do środowiska lokalnego i portu używanego przez aplikację.

    Terminal z uruchomionym serwerem `ngrok` i przekierowaniem

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

  5. Aplikacja ngrokuruchamia też interfejs internetowy na Twoim lokalnym hoście. Możesz monitorować wszystkie działania, otwierając go w przeglądarce.

    Interfejs internetowy hostowany przez aplikację „ngrok”, w którym nie widać żadnych żądań HTTP

    Rysunek 5. Interfejs internetowy hostowany przez aplikację ngrok, w którym nie widać żadnych żądań HTTP.

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

    • Otwórz Google Chat.

      Otwórz Google Chat

    • Kliknij Nowy czat .

    • W oknie wpisz nazwę aplikacji do obsługi czatu.

    • W wynikach wyszukiwania znajdź aplikację Chat i kliknij Dodaj > Chat.

    • W polu czatu wpisz Hey! i naciśnij enter. Aplikacja do czatu nie odpowiada, ponieważ jest aktywnie debugowana.

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

    Wykonywanie zostało wstrzymane w ustawionym punkcie przerwania.

    Rysunek 6. Wykonywanie jest wstrzymane w ustawionym punkcie przerwania.

  8. Gdy wznowisz wykonywanie w debuggerze, Visual Studio Codezanim Google Chat przekroczy limit czasu aplikacji do obsługi czatuVisual Studio Codeodpowie Twoim imieniem i nazwiskiem oraz zdjęciem awatara w wiadomości.

  9. Dzienniki żądań i odpowiedzi HTTP możesz sprawdzić 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 kodem Hey w pliku main.py.51 Gdy zapiszesz plik, Visual Studio Code aplikacja automatycznie wczyta się ponownie ze zaktualizowanym kodem źródłowym i  pozostanie w trybie debugowania.

    Aplikacja działa i nasłuchuje żądań HTTP na porcie `9000` ze zmianą kodu

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

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

  12. Gdy wznowisz wykonywanie w debuggerze, w interfejsie internetowym hostowanym przez aplikację ngrok w środowisku lokalnym zobaczysz, że aplikacja generuje odpowiedź ze zaktualizowaną wersją wiadomości.Visual Studio Code

Java

  1. Uzyskaj nowe dane logowania użytkownika, aby używać ich w 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 GitHub w środowisku lokalnym. Zawiera ono kod aplikacji:

    git clone https://github.com/googleworkspace/google-chat-samples.git
  3. Visual Studio Code IDE 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, aby uruchamiać aplikację App na porcie 9000 lokalnie, dodając w pliku pom.xml wtyczkę function-maven-plugin Cloud Functions Framework:

      ...
      <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>
      ...
      
    3. Teraz możesz 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 w katalogu głównym plik .vscode/launch.json i skonfiguruj uruchomienie o nazwie Remote Debug Watch, które dołącza do aplikacji uruchomionej wcześniej na porcie 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 żądania HTTP w pliku App.java, i rozpocznij dołączanie i debugowanie za pomocą dodanej wcześniej konfiguracji Remote Debug Watch. Aplikacja działa już i nasłuchuje żądań HTTP na porcie 9000.

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

      Ilustracja 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 statyczną domeną na koncie ngrok. Wszystkie żądania są teraz przekierowywane do środowiska lokalnego i portu używanego przez aplikację.

    Terminal z uruchomionym serwerem `ngrok` i przekierowaniem

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

  5. Aplikacja ngrokuruchamia też interfejs internetowy na Twoim lokalnym hoście. Możesz monitorować wszystkie działania, otwierając go w przeglądarce.

    Interfejs internetowy hostowany przez aplikację „ngrok”, w którym nie widać żadnych żądań HTTP

    Rysunek 5. Interfejs internetowy hostowany przez aplikację ngrok, w którym nie widać żadnych żądań HTTP.

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

    • Otwórz Google Chat.

      Otwórz Google Chat

    • Kliknij Nowy czat .

    • W oknie wpisz nazwę aplikacji do obsługi czatu.

    • W wynikach wyszukiwania znajdź aplikację Chat i kliknij Dodaj > Chat.

    • W polu czatu wpisz Hey! i naciśnij enter. Aplikacja do czatu nie odpowiada, ponieważ jest aktywnie debugowana.

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

    Wykonywanie zostało wstrzymane w ustawionym punkcie przerwania.

    Rysunek 6. Wykonywanie jest wstrzymane w ustawionym punkcie przerwania.

  8. Gdy wznowisz wykonywanie w debuggerze, Visual Studio Codezanim Google Chat przekroczy limit czasu aplikacji do obsługi czatuVisual Studio Codeodpowie Twoim imieniem i nazwiskiem oraz zdjęciem awatara w wiadomości.

  9. Dzienniki żądań i odpowiedzi HTTP możesz sprawdzić 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 słowem Hey w pliku 55, uruchom ponownie proces mvnDebug i ponownie uruchom Remote Debug Watch, aby ponownie podłączyć i uruchomić debugowanie.App.java

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

  12. Gdy wznowisz wykonywanie w debuggerze, w interfejsie internetowym hostowanym przez aplikację ngrok w środowisku lokalnym zobaczysz, że aplikacja generuje odpowiedź ze zaktualizowaną wersją wiadomości.Visual Studio Code

Debugowanie w środowisku zdalnym

W tej sekcji możesz korzystać z aplikacji do obsługi czatu, która działa w środowisku zdalnym.

Debugowanie ze zdalnego środowiska

Rysunek 9. Debugowanie w środowisku zdalnym.

Wymagania wstępne

  • Pokój na czacie z aplikacją do Google Chat. Możesz postępować zgodnie z instrukcjami w sekcji Testowanie aplikacji do Google Chat w przewodniku Szybki start i wyszukać aplikację do Google Chat, aby rozpocząć testowanie.
  • Aplikacja działająca w środowisku zdalnym z włączonym debugerem na danym porcie jest w instrukcjach tego przewodnika oznaczana jako REMOTE_DEBUG_PORT.
  • Środowisko lokalne może ssh ze środowiskiem zdalnym.
  • Środowisko IDE skonfigurowane w środowisku lokalnym, które umożliwia debugowanie. W tym przewodniku używamy Visual Studio Code IDE i jego domyślnych funkcji debugowania w celach ilustracyjnych.

Łączenie środowisk lokalnego i zdalnego

W środowisku lokalnym, z którego chcesz zainicjować połączenie klienta 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

Visual Studio Code IDE zainstalowanym w środowisku lokalnym wykonaj te czynności:

  1. W nowym oknie otwórz kod źródłowy aplikacji.
  2. Utwórz w katalogu głównym plik .vscode/launch.json i skonfiguruj uruchomienie o nazwie Debug Remote, które będzie się łączyć z portem 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 wstrzyma przetwarzanie żądania HTTP, a następnie uruchom i debuguj aplikację za pomocą dodanej wcześniej konfiguracji Debug Remote.

Na czacie z aplikacją Google Chat wpisz dowolny tekst, który chcesz przetestować, i naciśnij enter. Aplikacja do czatu nie odpowiada, ponieważ jest aktywnie debugowanaVisual Studio Code IDE.