Testowanie i debugowanie HTTP w dodatkach do Google Workspace

Jako deweloper dodatku do Google Workspace możesz potrzebować debugowania kodu, aby przetestować zmiany lub rozwiązać złożone problemy. Debugowanie dodatków Google Workspace można przeprowadzać na wiele różnych sposobów w zależności od architektury aplikacji, jej funkcji, sposobu wdrożenia i preferencji.

Z tej strony dowiesz się, jak debugować dodatek HTTP do Google Workspace za pomocą ngrok, czyli zintegrowanej platformy do wprowadzania danych, której możesz używać do testowania lokalnych środowisk programistycznych. W tym przewodniku przetestujesz zmiany kodu w lokalnym środowisku i rozwiążesz problemy w środowisku zdalnym.

Debugowanie w lokalnym środowisku programistycznym

W tej sekcji będziesz pracować z dodatkiem Google Workspace, który działa w środowisku lokalnym.

Debugowanie w lokalnym środowisku programistycznym

Rysunek 1. Debugowanie w lokalnym środowisku programistycznym.

Wymagania wstępne

Node.js

Python

Java

Udostępnianie usługi localhost publicznie

Aby umożliwić dodatkowi Google Workspace dostęp do środowiska lokalnego, musisz je połączyć z internetem. Aplikacja ngrok służy do przekierowywania żądań HTTP wysyłanych do publicznego adresu URL do ś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.

Tworzenie i instalowanie wdrożenia dodatku

  1. Skonfiguruj dodatek Google Workspace tak, aby wysyłał wszystkie żądania HTTP do Twojej domeny statycznej. Plik wdrożenia powinien wyglądać tak:

    {
      "oauthScopes": [
        "https://www.googleapis.com/auth/workspace.linkpreview",
        "https://www.googleapis.com/auth/workspace.linkcreate"
      ],
      "addOns": {
        "common": {
          "name": "Manage support cases",
          "logoUrl": "https://developers.google.com/workspace/add-ons/images/support-icon.png",
          "layoutProperties": {
            "primaryColor": "#dd4b39"
          }
        },
        "docs": {
          "linkPreviewTriggers": [
            {
              "runFunction": "NGROK_STATIC_DOMAIN",
              "patterns": [
                {
                  "hostPattern": "example.com",
                  "pathPrefix": "support/cases"
                },
                {
                  "hostPattern": "*.example.com",
                  "pathPrefix": "cases"
                },
                {
                  "hostPattern": "cases.example.com"
                }
              ],
              "labelText": "Support case",
              "localizedLabelText": {
                "es": "Caso de soporte"
              },
              "logoUrl": "https://developers.google.com/workspace/add-ons/images/support-icon.png"
            }
          ],
          "createActionTriggers": [
            {
              "id": "createCase",
              "labelText": "Create support case",
              "localizedLabelText": {
                "es": "Crear caso de soporte"
              },
              "runFunction": "$URL2",
              "logoUrl": "https://developers.google.com/workspace/add-ons/images/support-icon.png"
            }
          ]
        }
      }
    }
    

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

  2. Ustaw projekt Google Cloud do użycia:

    gcloud config set project PROJECT_ID
  3. Uzyskaj nowe dane logowania użytkownika, które będą używane do domyślnego uwierzytelniania aplikacji:

    gcloud auth application-default login

    Zastąp PROJECT_ID identyfikatorem projektu aplikacji w Google Cloud.

  4. Utwórz wdrożenie:

    gcloud workspace-add-ons deployments create manageSupportCases \
        --deployment-file=DEPLOYMENT_FILE_PATH

    Zastąp DEPLOYMENT_FILE_PATH ścieżką do pliku wdrożenia.

  5. Instalowanie wdrożenia:

    gcloud workspace-add-ons deployments install manageSupportCases

Dodatek Google Workspace wysyła wszystkie żądania HTTP do domeny statycznej.

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

Testowanie dodatku do Google Workspace

Możesz lokalnie wdrażać, testować, debugować i automatycznie ponownie wczytywać dodatek Google Workspace.

Node.js

  1. W środowisku Visual Studio Code IDE zainstalowanym w środowisku lokalnym:

    1. W nowym oknie otwórz folder add-ons-samples/node/3p-resources.
    2. Skonfiguruj aplikację do uruchamiania lokalnego i automatycznego ponownego ładowania, dodając w pliku package.json 1 zależność i 2 skrypty:

      {
          ...
          "dependencies": {
            ...
            "@google-cloud/functions-framework": "^3.3.0"
          },
          "scripts": {
              ...
              "start": "npx functions-framework --target=createLinkPreview --port=9000",
              "debug-watch": "nodemon --watch ./ --exec npm start"
          }
          ...
      }
      
    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.

  2. 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 Twojego lokalnego środowiska i portu używanego przez aplikację.

    Terminal z uruchomionym serwerem ngrok i przekierowaniem

    Rysunek 4. Terminal z uruchomionym serwerem ngrok i przekierowaniem.

  3. 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 nie wyświetla żądań HTTP.

  4. Przetestuj dodatek Google Workspace, wyświetlając podgląd adresu URL przypadku w nowym dokumencie Google za pomocą konta testowego:

    • Utwórz nowy dokument Google.

      Utwórz nowy dokument Google

    • Wpisz ten link i kliknij enter:

      https://example.com/support/case/?name=Name1&description=Description1&priority=P1
      
    • Kliknij link.

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

    Wykonywanie zostało wstrzymane w punkcie przerwania, który został ustawiony

    Rysunek 6. Wykonywanie jest wstrzymywane w ustawionym punkcie przerwania.

  6. Gdy wznowisz wykonywanie kodu w debugerze Visual Studio Codeprzed przekroczeniem limitu czasu przez dodatki Google Workspace, dodatek Google Workspace wyświetli podgląd linku w Google Docs z pamięci podręcznej.

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

  8. Aby zmienić zachowanie aplikacji, zastąp Case wartością Case: w bloku kodu 51 w pliku index.js. Gdy zapiszesz plik, 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ładowanym kodem

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

  9. Tym razem zamiast kliknąć link i poczekać kilka sekund w nowym dokumencie Google, możesz wybrać ostatnie żądanie HTTP zapisane w interfejsie internetowym hostowanym przez aplikację ngrok w środowisku lokalnym i kliknąć Replay. Podobnie jak poprzednio, wtyczka Google Workspace nie odpowiada, ponieważ jest aktywnie debugowana.

  10. 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 aktualizowaną wersją karty podglądu.

Python

  1. W środowisku Visual Studio Code IDE zainstalowanym w środowisku lokalnym:

    1. W nowym oknie otwórz folder add-ons-samples/python/3p-resources/create_link_preview.
    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ą 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 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", "create_link_preview",
                  "--port", "9000",
                  "--debug"
              ]
          }]
      }
      
    5. Dodaj punkt przerwania, który wstrzymuje przetwarzanie żądania HTTP w pliku main.py, 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.

  2. 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 Twojego lokalnego środowiska i portu używanego przez aplikację.

    Terminal z uruchomionym serwerem ngrok i przekierowaniem

    Rysunek 4. Terminal z uruchomionym serwerem ngrok i przekierowaniem.

  3. 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 nie wyświetla żądań HTTP.

  4. Przetestuj dodatek Google Workspace, wyświetlając podgląd adresu URL przypadku w nowym dokumencie Google za pomocą konta testowego:

    • Utwórz nowy dokument Google.

      Utwórz nowy dokument Google

    • Wpisz ten link i kliknij enter:

      https://example.com/support/case/?name=Name1&description=Description1&priority=P1
      
    • Kliknij link.

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

    Wykonywanie zostało wstrzymane w punkcie przerwania, który został ustawiony

    Rysunek 6. Wykonywanie jest wstrzymywane w ustawionym punkcie przerwania.

  6. Gdy wznowisz wykonywanie kodu w debugerze Visual Studio Codeprzed przekroczeniem limitu czasu przez dodatki Google Workspace, dodatek Google Workspace wyświetli podgląd linku w Google Docs z pamięci podręcznej.

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

  8. Aby zmienić zachowanie aplikacji, zastąp Case wartością Case: w pliku 56 w pliku main.py. Po zapisaniu pliku Visual Studio Codeaplikacja automatycznie ponownie wczyta aplikację z 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 działa i nasłuchuje żądań HTTP na porcie 9000 z załadowanym zmienionym kodem.

  9. Tym razem zamiast kliknąć link i poczekać kilka sekund w nowym dokumencie Google, możesz wybrać ostatnie żądanie HTTP zapisane w interfejsie internetowym hostowanym przez aplikację ngrok w środowisku lokalnym i kliknąć Replay. Podobnie jak poprzednio, wtyczka Google Workspace nie odpowiada, ponieważ jest aktywnie debugowana.

  10. 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 aktualizowaną wersją karty podglądu.

Java

  1. W środowisku Visual Studio Code IDE zainstalowanym w środowisku lokalnym:

    1. W nowym oknie otwórz folder add-ons-samples/java/3p-resources.
    2. Skonfiguruj projekt Maven, aby lokalnie uruchamiać aplikację CreateLinkPreview na porcie 9000, dodając w pliku pom.xml wtyczkę kompilacji Cloud Functions Framework function-maven-plugin:

      ...
      <plugin>
          <groupId>com.google.cloud.functions</groupId>
          <artifactId>function-maven-plugin</artifactId>
          <version>0.11.0</version>
          <configuration>
              <functionTarget>CreateLinkPreview</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 CreateLinkPreview.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.

  2. 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 Twojego lokalnego środowiska i portu używanego przez aplikację.

    Terminal z uruchomionym serwerem ngrok i przekierowaniem

    Rysunek 4. Terminal z uruchomionym serwerem ngrok i przekierowaniem.

  3. 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 nie wyświetla żądań HTTP.

  4. Przetestuj dodatek Google Workspace, wyświetlając podgląd adresu URL przypadku w nowym dokumencie Google za pomocą konta testowego:

    • Utwórz nowy dokument Google.

      Utwórz nowy dokument Google

    • Wpisz ten link i kliknij enter:

      https://example.com/support/case/?name=Name1&description=Description1&priority=P1
      
    • Kliknij link.

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

    Wykonywanie zostało wstrzymane w punkcie przerwania, który został ustawiony

    Rysunek 6. Wykonywanie jest wstrzymywane w ustawionym punkcie przerwania.

  6. Gdy wznowisz wykonywanie kodu w debugerze Visual Studio Codeprzed przekroczeniem limitu czasu przez dodatki Google Workspace, dodatek Google Workspace wyświetli podgląd linku w Google Docs z pamięci podręcznej.

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

  8. Aby zmienić zachowanie aplikacji, zastąp Case wartością Case: w inline78 pliku CreateLinkPreview.java, ponownie uruchom proces mvnDebug i ponownie uruchom Remote Debug Watch, aby ponownie załączyć i rozpocząć debugowanie.

  9. Tym razem zamiast kliknąć link i poczekać kilka sekund w nowym dokumencie Google, możesz wybrać ostatnie żądanie HTTP zapisane w interfejsie internetowym hostowanym przez aplikację ngrok w środowisku lokalnym i kliknąć Replay. Podobnie jak poprzednio, wtyczka Google Workspace nie odpowiada, ponieważ jest aktywnie debugowana.

  10. Gdy wznowisz wykonywanie kodu w debugerze aplikacji Visual Studio Code, w interfejsie internetowym hostowanym przez aplikację ngrok w Twoim środowisku lokalnym zobaczysz, że aplikacja generuje odpowiedź z aktualizowaną wersją karty podglądu.

Debugowanie z dalnie obsługiwanego środowiska

W tej sekcji będziesz wchodzić w interakcję z dodatkiem Google Workspace, który działa w środowisku zdalnym.

Debugowanie z dalszego środowiska

Rysunek 9. Debugowanie z dalszego środowiska.

Wymagania wstępne

  • Dodatek do Google Workspace został wdrożony i zainstalowany.
  • Aplikacja działająca w Twoim środowisku zdalnym z włączonym debugerem na danym porcie. W instrukcjach w tym przewodniku jest ona oznaczana jako REMOTE_DEBUG_PORT.
  • Ś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.

Łączenie środowisk lokalnych i zdalnych

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 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 dodaną wcześniej konfiguracją Debug Remote.

interakcji z zainstalowanym dodatkiem do Google Workspace; Dodatek Google Workspace nie odpowiada, ponieważ jest aktywnie debugowany w IDE Visual Studio Code.

Dowiedz się, jak tworzyć zapytania do logów błędów.