Debugowanie aplikacji Google Chat

Jako deweloper aplikacji w Google Chat możesz potrzebować debugowania kodu, aby testować zmiany lub rozwiązywać złożone problemy. Debugowanie aplikacji Google Chat można przeprowadzić na wiele sposobów w zależności od architektury aplikacji, działania aplikacji, sposobu jej wdrożenia i Twoich preferencji.

Na tej stronie dowiesz się, jak debugować aplikację HTTP do obsługi czatu za pomocą ujednoliconej platformy ruchu przychodzącego ngrok, której możesz używać do testowania lokalnych środowisk programistycznych. Z tego przewodnika dowiesz się, jak testować zmiany kodu w środowisku lokalnym i rozwiązywać problemy w środowisku zdalnym.

Debuguj z lokalnego środowiska programistycznego

W tej sekcji dowiesz się, jak używać aplikacji Google Chat, która działa w Twoim środowisku lokalnym.

Debuguj z lokalnego
środowiska deweloperskiego

Rysunek 1. Debuguj w lokalnym środowisku programistycznym.

Warsztat

Node.js

Python

Java

Wymagania wstępne

Node.js

  • W środowisku lokalnym zainstalowano najnowsze wersje aplikacji node i npm.
  • W środowisku lokalnym zainstalowano najnowszą wersję aplikacji nodemon. Jest ona używana do automatycznego ponownego wczytywania:

    npm install -g nodemon
    
  • To aplikacja do obsługi czatu HTTP skonfigurowana do przesyłania wiadomości. Zapoznaj się z sekcjami Wymagania wstępne, Konfigurowanie środowiska i Publikowanie aplikacji w Google Chat w krótkim przewodniku. Jedyne różnice polegają na tym, że w polu Nazwa aplikacji musisz ustawić wartość Debug App, a w polu URL aplikacji ustawić dowolną wartość, np. http://example.com.

  • IDE skonfigurowane w środowisku lokalnym z możliwością debugowania. W celach ilustracyjnych używamy narzędzia Visual Studio Code IDE i jego domyślnych funkcji debugowania przedstawionych w tym przewodniku.

  • Git zainstalowano w środowisku lokalnym.

  • konto ngrok,

Python

Java

Udostępnij usługę lokalnego hosta publicznie

Musisz połączyć swoje lokalne środowisko z internetem, aby aplikacja Google Chat miała do niego dostęp. 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 na koncie ngrok domenę statyczną. W instrukcjach w tym przewodniku jest ona nazywana 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ę interfejsu Google Chat API

  2. Kliknij kartę Configuration (Konfiguracja).

  3. Wybierz Funkcje interaktywne > Ustawienia połączenia i ustaw wartość w polu tekstowym 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 pomost między aplikacją Google Chat a wykonywanym lokalnie kodem aplikacji.

Testowanie aplikacji Google Chat

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

Node.js

  1. Sklonujesz 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 aplikację pod kątem automatycznego ponownego ładowania 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 wyzwala 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, a potem rozpocznij uruchamianie i debugowanie z dodaną wcześniej konfiguracją Debug Watch. Aplikacja działa teraz 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 do portu używanego przez aplikację.

    terminal z działającym serwerem „ngrok”
i przekierowaniem

    Rysunek 4. Terminal z serwerem ngrok uruchomionym i przekierowującym.

  4. Na serwerze lokalnym uruchamia się też interfejs internetowy przez aplikację ngrok. Możesz monitorować wszystkie działania, otwierając go w przeglądarce.

    Interfejs internetowy hostowany przez aplikację „ngrok” nie wyświetlający żadnych żądań HTTP

    Rysunek 5. Interfejs internetowy hostowany przez aplikację ngrok nie wykazujący żadnych żądań HTTP.

  5. Przetestuj aplikację Google Chat, wysyłając ją 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ę Google Chat i kliknij Dodaj > Google Chat.

    • W pokoju czatu wpisz Hello i naciśnij enter. Aplikacja Google Chat nie odpowiada, ponieważ trwa debugowanie.

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

    Wykonanie jest wstrzymane w ustawionym
punkcie przerwania

    Rysunek 6. Wykonanie jest wstrzymane w ustawionym punkcie przerwania.

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

  8. 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.

  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 załaduje ponownie 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 jest uruchomiona 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 hostowane przez aplikację ngrok w Twoim środowisku lokalnym i kliknąć Replay. Tak jak ostatnio, aplikacja Google 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 projektu Cloud danej aplikacji.

  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 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ą 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 wyzwala 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, a potem rozpocznij uruchamianie i debugowanie z dodaną wcześniej konfiguracją Debug Watch. Aplikacja działa teraz 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 do portu używanego przez aplikację.

    terminal z działającym serwerem „ngrok”
i przekierowaniem

    Rysunek 4. Terminal z serwerem ngrok uruchomionym i przekierowującym.

  5. Na serwerze lokalnym uruchamia się też interfejs internetowy przez aplikację ngrok. Możesz monitorować wszystkie działania, otwierając go w przeglądarce.

    Interfejs internetowy hostowany przez aplikację „ngrok” nie wyświetlający żadnych żądań HTTP

    Rysunek 5. Interfejs internetowy hostowany przez aplikację ngrok nie wykazujący żadnych żądań HTTP.

  6. Przetestuj aplikację Google Chat, wysyłając ją 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ę Google Chat i kliknij Dodaj > Google Chat.

    • W pokoju czatu wpisz Hey! i naciśnij enter. Aplikacja Google Chat nie odpowiada, ponieważ trwa debugowanie.

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

    Wykonanie jest wstrzymane w ustawionym
punkcie przerwania

    Rysunek 6. Wykonanie jest wstrzymane w ustawionym punkcie przerwania.

  8. Gdy wznowisz wykonywanie kodu za pomocą debugera Visual Studio Code, zanim Google Chat przekroczy limit czasu, aplikacja Google Chat wyśle w wiadomości Twoją nazwę i zdjęcie awatara.

  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ładowaną zmianą kodu

    Rysunek 8. Aplikacja jest uruchomiona 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 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 wykonanie za pomocą debugera skryptu Visual Studio Code, z interfejsu internetowego hostowanego przez aplikację ngrok w Twoim środowisku lokalnym zobaczysz, że ta aplikacja generuje odpowiedź ze zaktualizowaną wersją komunikatu.

Java

  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 projektu Cloud danej aplikacji.

  2. Skopiuj 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 do lokalnego uruchamiania aplikacji HelloChat na porcie 9000, dodając wtyczkę kompilacji Cloud Functions Framework function-maven-plugin 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 go teraz uruchomić 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 zostanie dołączone 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 HelloChat.java, a potem rozpocznij podłączanie i debugowanie z dodaną wcześniej konfiguracją Remote Debug Watch. Aplikacja działa teraz i nasłuchuje żądań HTTP na porcie 9000.

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

      Rysunek 3. Aplikacja jest uruchomiona 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 do portu używanego przez aplikację.

    terminal z działającym serwerem „ngrok”
i przekierowaniem

    Rysunek 4. Terminal z serwerem ngrok uruchomionym i przekierowującym.

  5. Na serwerze lokalnym uruchamia się też interfejs internetowy przez aplikację ngrok. Możesz monitorować wszystkie działania, otwierając go w przeglądarce.

    Interfejs internetowy hostowany przez aplikację „ngrok” nie wyświetlający żadnych żądań HTTP

    Rysunek 5. Interfejs internetowy hostowany przez aplikację ngrok nie wykazujący żadnych żądań HTTP.

  6. Przetestuj aplikację Google Chat, wysyłając ją 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ę Google Chat i kliknij Dodaj > Google Chat.

    • W pokoju czatu wpisz Hey! i naciśnij enter. Aplikacja Google Chat nie odpowiada, ponieważ trwa debugowanie.

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

    Wykonanie jest wstrzymane w ustawionym
punkcie przerwania

    Rysunek 6. Wykonanie jest wstrzymane w ustawionym punkcie przerwania.

  8. Gdy wznowisz wykonywanie kodu za pomocą debugera Visual Studio Code, zanim Google Chat przekroczy limit czasu, aplikacja Google Chat wyśle w wiadomości Twoją nazwę i zdjęcie awatara.

  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 HelloChat.java, ponownie uruchom proces mvnDebug i uruchom ponownie Remote Debug Watch, aby ponownie dołączyć i rozpocząć 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 wykonanie za pomocą debugera skryptu Visual Studio Code, z interfejsu internetowego hostowanego przez aplikację ngrok w Twoim środowisku lokalnym zobaczysz, że ta aplikacja generuje odpowiedź ze zaktualizowaną wersją komunikatu.

Debuguj ze środowiska zdalnego

W tej sekcji dowiesz się, jak używać aplikacji Google Chat, 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. Aby go uruchomić, przejdź do sekcji Testowanie aplikacji Google Chat w krótkim przewodniku i wyszukaj swoją 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 z Twoim środowiskiem zdalnym.
  • IDE skonfigurowane w środowisku lokalnym z możliwością debugowania. W celach ilustracyjnych używamy narzędzia Visual Studio Code IDE i jego domyślnych funkcji debugowania opisanych w tym przewodniku.

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 ś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 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, które będzie 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 żądania HTTP, i zacznij działać oraz debugować przy użyciu dodanej wcześniej konfiguracji Debug Remote.

W pokoju czatu w aplikacji Google Chat wpisz tekst, który chcesz przetestować, i naciśnij enter. Twoja aplikacja Google Chat nie odpowiada, ponieważ jest aktywnie debugowana w IDE Visual Studio Code.