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 czatu może odbywać się na wiele różnych sposobów w zależności od architektury aplikacji, jej funkcji, sposobu wdrożenia i Twoich preferencji.

Na tej stronie wyjaśniamy, jak debugować aplikację HTTP Chat za pomocą ngrok, czyli zintegrowanej platformy do wprowadzania danych, której możesz używać do testowania lokalnych środowisk programowania. W tym przewodniku przetestujesz zmiany kodu w lokalnym środowisku i rozwiążesz problemy w środowisku zdalnym.

Debuguj z lokalnego środowiska programistycznego

W tej sekcji będziesz korzystać z aplikacji Google Chat, która działa w środowisku lokalnym.

Debugowanie w lokalnym środowisku programistycznym

Rysunek 1. Debuguj w lokalnym środowisku programistycznym.

Warsztat

Node.js

Python

Java

Wymagania wstępne

Node.js

Python

Java

Udostępnianie usługi localhost publicznie

Aby aplikacja Google Chat mogła uzyskać dostęp do środowiska lokalnego, musisz je połączyć z internetem. Aplikacja ngrok służy do przekierowywania żądań HTTP wysyłanych 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 stałą domenę na koncie ngrok. W instrukcjach w tym przewodniku jest ona oznaczana jako NGROK_STATIC_DOMAIN.

Konfigurowanie aplikacji Google Chat

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

  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ść w polu tekstowym URL punktu końcowego HTTP na:

    https://NGROK_STATIC_DOMAIN
    

    Zastąp NGROK_STATIC_DOMAIN nazwą domeny statycznej na koncie ngrok.

  4. Kliknij Zapisz.

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

Rysunek 2. Aplikacja Chat wysyła wszystkie żądania HTTP do domeny statycznej. Usługa publiczna ngrok działa jako łącznik między aplikacją Google Chat a kodem aplikacji, który jest wykonywany lokalnie.

Testowanie aplikacji Google Chat

Możesz lokalnie wdrażać, konfigurować, testować, debugować i automatycznie ponownie wczytywać aplikację Google Chat.

Node.js

  1. Sklonuj 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 środowisku Visual Studio Code IDE zainstalowanym w środowisku lokalnym:

    1. W nowym oknie otwórz folder google-chat-samples/node/basic-app.
    2. Skonfiguruj aplikację do automatycznego wczytywania debugowania, dodając 2 skrypty do 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 z dodaną wcześniej konfiguracją Debug Watch. Aplikacja działa 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 nazwą domeny statycznej na koncie ngrok. Wszystkie żądania są teraz przekierowywane do środowiska lokalnego i do portu używanego przez aplikację.

    Terminal z uruchomionym serwerem ngrok i przekierowaniem

    Rysunek 4. Terminal z uruchomionym serwerem ngrok i przekierowaniem.

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

    Interfejs internetowy hostowany przez aplikację „ngrok” nie wysyła zapytań HTTP

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

  5. Przetestuj aplikację Czat, wysyłając do niej wiadomość:

    • Otwórz Google Chat.

      Otwórz Google Chat

    • Kliknij Nowy czat .

    • W oknie wpisz nazwę aplikacji do czatu.

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

    • W polu czatu wpisz Hello i kliknij enter. Twoja aplikacja Google Chat nie odpowiada, ponieważ jest aktywnie debugowana.

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

    Wykonanie jest wstrzymane w ustawionym
punkcie przerwania

    Rysunek 6. Wykonywanie jest wstrzymywane w ustawionym punkcie przerwania.

  7. Gdy wznowisz wykonywanie kodu za pomocą debugera Visual Studio Code, zanim Google Chat przekroczy limit czasu, aplikacja Google Chat otrzyma odpowiedź Your message : Hello.

  8. Możesz sprawdzić dzienniki żądań i odpowiedzi HTTP w interfejsie internetowym aplikacji ngrok w swoim ś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ć zachowanie aplikacji, zastąp Your message kodem Here was your message w elementach 35 w elementach index.json. Po zapisaniu pliku nodemon automatycznie ponownie wczyta 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” z załadowaną zmianą kodu

    Rysunek 8. Aplikacja działa i nasłuchuje żądań HTTP na porcie 9000 z załadowanym zmienionym kodem.

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

  11. Gdy wznowisz wykonanie przy pomocy debugera kodu Visual Studio Code, z interfejsu internetowego hostowanego przez aplikację ngrok w Twoim środowisku lokalnym zobaczysz, że generuje ona odpowiedź ze zaktualizowaną wersją komunikatu Here was your message : Hello.

Python

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

    gcloud config set project PROJECT_ID
    gcloud auth application-default login

    Zastąp PROJECT_ID identyfikatorem projektu aplikacji w Google Cloud.

  2. Sklonujesz 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 środowisku Visual Studio Code IDE zainstalowanym w środowisku lokalnym:

    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ą interfejsu 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 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, a potem rozpocznij uruchamianie i debugowanie z dodaną wcześniej konfiguracją Debug Watch. Aplikacja działa 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 nazwą domeny statycznej na koncie ngrok. Wszystkie żądania są teraz przekierowywane do środowiska lokalnego i do portu używanego przez aplikację.

    Terminal z uruchomionym serwerem ngrok i przekierowaniem

    Rysunek 4. Terminal z uruchomionym serwerem ngrok i przekierowaniem.

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

    Interfejs internetowy hostowany przez aplikację „ngrok” nie wysyła zapytań HTTP

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

  6. Przetestuj aplikację Czat, wysyłając do niej wiadomość:

    • Otwórz Google Chat.

      Otwórz Google Chat

    • Kliknij Nowy czat .

    • W oknie wpisz nazwę aplikacji do czatu.

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

    • W polu czatu wpisz Hey! i naciśnij enter. Twoja 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 miejscu ustawionego punktu przerwania.

    Wykonanie jest wstrzymane w ustawionym
punkcie przerwania

    Rysunek 6. Wykonywanie jest wstrzymywane w ustawionym punkcie przerwania.

  8. Gdy wznowisz wykonywanie z debugera Visual Studio Code, zanim Google Chat przekroczy limit czasu, aplikacja Chat odpowie z Twoim imieniem i nazwiskiem oraz awatarem w wiadomości.

  9. Możesz wyświetlić logi żądań i odpowiedzi HTTP z interfejsu internetowego hostowanego 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 załaduje ponownie aplikację ze zaktualizowanym kodem źródłowym i pozostanie w trybie debugowania.

    Aplikacja działa i nasłuchuje żądań HTTP na porcie `9000` z załadowanym kodem

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

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

  12. Gdy wznowisz wykonywanie kodu w debugerze aplikacji Visual Studio Code, w interfejsie internetowym hostowanym przez aplikację ngrok w Twoim środowisku lokalnym możesz zobaczyć, że aplikacja generuje odpowiedź z aktualną wersją wiadomości.

Java

  1. Uzyskaj nowe dane logowania użytkownika, które będą używane do domyślnego uwierzytelniania aplikacji:

    gcloud config set project PROJECT_ID
    gcloud auth application-default login

    Zastąp PROJECT_ID identyfikatorem projektu aplikacji w Google Cloud.

  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. W środowisku Visual Studio Code IDE zainstalowanym w środowisku lokalnym:

    1. W nowym oknie otwórz folder google-chat-samples/java/avatar-app.
    2. Skonfiguruj projekt Maven, aby lokalnie uruchamiać aplikację App na porcie 9000, dodając w pliku pom.xml wtyczkę kompilacji function-maven-plugin z 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ć aplikację 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 łączy się z aplikacją uruchomioną wcześniej za pomocą portu 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ą wcześniej dodanej konfiguracji Remote Debug Watch. 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 nazwą domeny statycznej na koncie ngrok. Wszystkie żądania są teraz przekierowywane do środowiska lokalnego i do portu używanego przez aplikację.

    Terminal z uruchomionym serwerem ngrok i przekierowaniem

    Rysunek 4. Terminal z uruchomionym serwerem ngrok i przekierowaniem.

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

    Interfejs internetowy hostowany przez aplikację „ngrok” nie wysyła zapytań HTTP

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

  6. Przetestuj aplikację Czat, wysyłając do niej wiadomość:

    • Otwórz Google Chat.

      Otwórz Google Chat

    • Kliknij Nowy czat .

    • W oknie wpisz nazwę aplikacji do czatu.

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

    • W polu czatu wpisz Hey! i naciśnij enter. Twoja 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 miejscu ustawionego punktu przerwania.

    Wykonanie jest wstrzymane w ustawionym
punkcie przerwania

    Rysunek 6. Wykonywanie jest wstrzymywane w ustawionym punkcie przerwania.

  8. Gdy wznowisz wykonywanie z debugera Visual Studio Code, zanim Google Chat przekroczy limit czasu, aplikacja Chat odpowie z Twoim imieniem i nazwiskiem oraz awatarem w wiadomości.

  9. Możesz wyświetlić logi żądań i odpowiedzi HTTP z interfejsu internetowego hostowanego 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 elementem Hey w tekście 55 w pliku App.java, ponownie uruchom proces mvnDebug i uruchom ponownie Remote Debug Watch, aby ponownie podłączyć i ponownie przeprowadzić debugowanie.

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

  12. Gdy wznowisz wykonywanie kodu w debugerze aplikacji Visual Studio Code, w interfejsie internetowym hostowanym przez aplikację ngrok w Twoim środowisku lokalnym możesz zobaczyć, że aplikacja generuje odpowiedź z aktualną wersją wiadomości.

Debugowanie z dalnie obsługiwanego środowiska

W tej sekcji będziesz korzystać z aplikacji Google Chat, która działa w środowisku zdalnym.

Debuguj ze środowiska
zdalnego

Rysunek 9. Debugowanie z dalszego środowiska.

Wymagania wstępne

  • Pokój wiadomości bezpośrednich z aplikacją Google Chat. Aby go rozpocząć, możesz przejść do sekcji Testowanie aplikacji Google Chat w Przewodniku szybkiego startu i wyszukać aplikację Google Chat.
  • Twoja aplikacja działająca w środowisku zdalnym z włączonym debugerem na danym porcie nazywa się REMOTE_DEBUG_PORT w instrukcjach w tym przewodniku.
  • Środowisko lokalne może ssh do środowiska zdalnego.
  • IDE skonfigurowane w środowisku lokalnym, które umożliwia debugowanie. W tym przewodniku używamy Visual Studio CodeIDE i domyślnych funkcji debugowania na potrzeby ilustracji.

Połącz środowiska lokalne i zdalne

W środowisku lokalnym, z którego 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 Twoim środowisku lokalnym.
  • REMOTE_USERNAME: nazwa użytkownika w środowisku zdalnym.
  • REMOTE_ADDRESS: adres środowiska zdalnego.
  • REMOTE_DEBUG_PORT: port debugowania w zdalnym środowisku.

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

Rozpocznij debugowanie

W zainstalowanym w środowisku lokalnym środowisku IDE Visual Studio Code 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, które łączy się 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 swoim środowisku lokalnym.

  3. Dodaj w źródłowym kodzie aplikacji punkt przerwania, który wstrzymuje przetwarzanie żądania HTTP, i uruchom debugowanie z wcześniej dodaną konfiguracją Debug Remote.

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