Depurar apps do Google Chat

Como desenvolvedor de apps do Google Chat, talvez você precise depurar o código para testar mudanças ou solucionar problemas complexos. A depuração de apps do Chat pode ser feita de várias formas, dependendo da arquitetura do seu app, da função dele, da forma como o app é implantado e das suas preferências.

Esta página explica como depurar um app de chat HTTP usando ngrok, uma plataforma de entrada unificada que pode ser usada para testar ambientes de desenvolvimento local. Neste guia, você vai testar as mudanças no código em um ambiente local e resolver problemas em um ambiente remoto.

Depurar no ambiente de desenvolvimento local

Nesta seção, você vai interagir com o app do Chat que é executado no seu ambiente local.

Depurar do ambiente de desenvolvimento local

Figura 1. Depure em um ambiente de desenvolvimento local.

Workshop

Node.js

Python

Java

Pré-requisitos

Node.js

Python

Java

Disponibilizar o serviço localhost publicamente

Conecte seu ambiente local à Internet para que o app Chat possa acessá-lo. O aplicativo ngrok é usado para redirecionar solicitações HTTP feitas a um URL público para seu ambiente local.

  1. Em um navegador no seu ambiente local, faça login na sua conta do ngrok.
  2. Instale o aplicativo e configure o authtoken no ambiente local.
  3. Crie um domínio estático na sua conta do ngrok. Ele é referenciado como NGROK_STATIC_DOMAIN nas instruções deste guia.

Configurar o app do Chat

Configure o app Chat para enviar todas as solicitações HTTP ao seu domínio estático.

  1. No console de APIs do Google, abra a página da API Google Chat:

    Acessar a página da API Google Chat

  2. Clique na guia Configuração.

  3. Acesse Recursos interativos > Configurações de conexão > Acionadores e defina o URL do endpoint HTTP para os acionadores que você quer testar (como Mensagem) como:

    https://NGROK_STATIC_DOMAIN
    

    Substitua NGROK_STATIC_DOMAIN pelo domínio estático na sua conta do ngrok.

  4. Clique em Salvar.

O app Chat envia todas as solicitações HTTP para o domínio estático.

Figura 2. O app Chat envia todas as solicitações HTTP para o domínio estático. O serviço público ngrok atua como uma ponte entre o app Chat e o código do aplicativo que é executado localmente.

Teste o app do Chat

É possível implantar, configurar, testar, depurar e recarregar automaticamente seu app de chat localmente.

Node.js

  1. Clone o repositório googleworkspace/add-ons-samples do GitHub para seu ambiente local. Ele contém o código do aplicativo a ser executado:

    git clone https://github.com/googleworkspace/add-ons-samples.git
  2. No ambiente de desenvolvimento integrado Visual Studio Code instalado no ambiente local, faça o seguinte:

    1. Em uma nova janela, abra a pasta add-ons-samples/node/chat/avatar-app.
    2. Configure o aplicativo para depuração de recarga automática adicionando dois scripts no arquivo package.json:

      {
          ...
          "scripts": {
              ...
              "debug": "node --inspect index.js",
              "debug-watch": "nodemon --watch ./ --exec npm run debug"
          }
          ...
      }
      
    3. No diretório raiz, instale o aplicativo:

      npm install
    4. Crie e configure uma inicialização chamada Debug Watch que aciona o script debug-watch criando o arquivo .vscode/launch.json no diretório raiz:

      {
          "version": "0.2.0",
          "configurations": [{
              "type": "node",
              "request": "launch",
              "name": "Debug Watch",
              "cwd": "${workspaceRoot}",
              "runtimeExecutable": "npm",
              "runtimeArgs": ["run-script", "debug-watch"]
          }]
      }
      
    5. Adicione um ponto de interrupção que pausa o processamento da solicitação HTTP no arquivo index.js e comece a executar e depurar com a configuração Debug Watch adicionada antes. O aplicativo está em execução e detectando solicitações HTTP na porta 9000.

      O aplicativo está em execução e detectando solicitações HTTP na porta `9000`.

      Figura 3. O aplicativo está em execução e detectando solicitações HTTP na porta 9000.

  3. Inicie o aplicativo ngrok no seu ambiente local:

    ngrok http --domain=NGROK_STATIC_DOMAIN 9000

    Substitua NGROK_STATIC_DOMAIN pelo domínio estático na sua conta do ngrok. Todas as solicitações agora são redirecionadas para seu ambiente local e a porta usada pelo aplicativo.

    O terminal com o servidor "ngrok" em execução e
redirecionando

    Figura 4. O terminal com o servidor ngrok em execução e redirecionamento.

  4. Uma interface da Web também é iniciada no seu host local pelo aplicativo ngrok. Para monitorar todas as atividades, abra a interface em um navegador.

    A interface da Web hospedada pelo aplicativo `ngrok` sem mostrar solicitações HTTP

    Figura 5. A interface da Web hospedada pelo aplicativo ngrok sem mostrar solicitações HTTP.

  5. Teste o app do Chat enviando uma mensagem direta:

    • Abra o Google Chat.

      Acessar o Google Chat

    • Clique em Novo chat .

    • Na caixa de diálogo, insira o nome do seu app de chat.

    • Nos resultados da pesquisa, encontre o app Chat, clique em Adicionar > Chat.

    • No espaço de mensagem direta, digite Hello e pressione enter. Seu app de chat não responde porque está sendo depurado ativamente.

  6. No Visual Studio Code do ambiente local, você pode ver que a execução está pausada no ponto de interrupção definido.

    A execução é pausada no ponto de interrupção definido.

    Figura 6. A execução é pausada no ponto de interrupção definido.

  7. Quando você retoma a execução do depurador de Visual Studio Code antes que o Google Chat atinja o tempo limite do app Chat responde à sua mensagem.

  8. É possível verificar os registros de solicitação e resposta HTTP da interface da Web hospedada pelo aplicativo ngrok no seu ambiente local.

    A solicitação HTTP da interface da Web hospedada pelo aplicativo `ngrok`

    Figura 7. A solicitação HTTP da interface da Web hospedada pelo aplicativo ngrok.

  9. Para mudar o comportamento do aplicativo, atualize o texto da resposta no arquivo index.js. Quando você salva o arquivo, o nodemon recarrega automaticamente o aplicativo com o código-fonte atualizado, e o Visual Studio Code permanece no modo de depuração.

    O aplicativo está em execução e detectando solicitações HTTP na porta
`9000` com a mudança de código
carregada.

    Figura 8. O aplicativo está em execução e detectando solicitações HTTP na porta 9000 com a mudança de código carregada.

  10. Desta vez, em vez de enviar uma segunda mensagem Hello no espaço, selecione a última solicitação HTTP registrada na interface da Web hospedada pelo aplicativo ngrok no seu ambiente local e clique em Replay. Assim como da última vez, o app Chat não responde porque está sendo depurado ativamente.

  11. Quando você retoma a execução do depurador de Visual Studio Code, é possível ver na interface da Web hospedada pelo aplicativo ngrok no ambiente local que o aplicativo gera uma resposta com a versão atualizada da mensagem.

Python

  1. Adquira novas credenciais de usuário para usar com o Application Default Credentials:

    gcloud config set project PROJECT_ID
    gcloud auth application-default login

    Substitua PROJECT_ID pelo ID do projeto do projeto na nuvem do app.

  2. Clone o repositório googleworkspace/add-ons-samples do GitHub para seu ambiente local. Ele contém o código do aplicativo:

    git clone https://github.com/googleworkspace/add-ons-samples.git
  3. No ambiente de desenvolvimento integrado Visual Studio Code instalado no ambiente local, faça o seguinte:

    1. Em uma nova janela, abra a pasta add-ons-samples/python/chat/avatar-app.
    2. Crie e ative um ambiente virtual para Python env:

      virtualenv env
      source env/bin/activate
    3. Instale todas as dependências do projeto usando pip no ambiente virtual:

      pip install -r requirements.txt
    4. Crie o arquivo .vscode/launch.json no diretório raiz e configure um lançamento chamado Debug Watch que aciona o aplicativo do módulo functions-framework na porta 9000 no modo de depuração no ambiente virtual 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. Adicione um ponto de interrupção que pausa o processamento da solicitação HTTP no arquivo main.py e comece a executar e depurar com a configuração Debug Watch adicionada antes. O aplicativo está em execução e detectando solicitações HTTP na porta 9000.

      O aplicativo está em execução e detectando solicitações HTTP na porta `9000`.

      Figura 3. O aplicativo está em execução e detectando solicitações HTTP na porta 9000.

  4. Inicie o aplicativo ngrok no seu ambiente local:

    ngrok http --domain=NGROK_STATIC_DOMAIN 9000

    Substitua NGROK_STATIC_DOMAIN pelo domínio estático na sua conta do ngrok. Todas as solicitações agora são redirecionadas para seu ambiente local e a porta usada pelo aplicativo.

    O terminal com o servidor "ngrok" em execução e
redirecionando

    Figura 4. O terminal com o servidor ngrok em execução e redirecionamento.

  5. Uma interface da Web também é iniciada no seu host local pelo aplicativo ngrok. Para monitorar todas as atividades, abra a interface em um navegador.

    A interface da Web hospedada pelo aplicativo `ngrok` sem mostrar solicitações HTTP

    Figura 5. A interface da Web hospedada pelo aplicativo ngrok sem mostrar solicitações HTTP.

  6. Teste o app do Chat enviando uma mensagem direta:

    • Abra o Google Chat.

      Acessar o Google Chat

    • Clique em Novo chat .

    • Na caixa de diálogo, insira o nome do seu app de chat.

    • Nos resultados da pesquisa, encontre o app Chat, clique em Adicionar > Chat.

    • No espaço de mensagem direta, digite Hey! e pressione enter. Seu app de chat não responde porque está sendo depurado ativamente.

  7. No Visual Studio Code do ambiente local, você pode ver que a execução está pausada no ponto de interrupção definido.

    A execução é pausada no ponto de interrupção definido.

    Figura 6. A execução é pausada no ponto de interrupção definido.

  8. Quando você retoma a execução do depurador de Visual Studio Code antes que o Google Chat atinja o tempo limite do app Chat ele responde com seu nome e foto do avatar na mensagem.

  9. É possível verificar os registros de solicitação e resposta HTTP da interface da Web hospedada pelo aplicativo ngrok no seu ambiente local.

    A solicitação HTTP da interface da Web hospedada pelo aplicativo `ngrok`

    Figura 7. A solicitação HTTP da interface da Web hospedada pelo aplicativo ngrok.

  10. Para mudar o comportamento do aplicativo, substitua Hello por Hey no arquivo main.py. Quando você salva o arquivo, o Visual Studio Code recarrega automaticamente o aplicativo com o código-fonte atualizado e permanece no modo de depuração.

    O aplicativo está em execução e detectando solicitações HTTP na porta
`9000` com a mudança de código
carregada.

    Figura 8. O aplicativo está em execução e detectando solicitações HTTP na porta 9000 com a mudança de código carregada.

  11. Desta vez, em vez de enviar uma segunda mensagem Hey! no espaço, selecione a última solicitação HTTP registrada na interface da Web hospedada pelo aplicativo ngrok no seu ambiente local e clique em Replay. Assim como da última vez, o app Chat não responde porque está sendo depurado ativamente.

  12. Quando você retoma a execução do depurador de Visual Studio Code, é possível ver na interface da Web hospedada pelo aplicativo ngrok no ambiente local que o aplicativo gera uma resposta com a versão atualizada da mensagem.

Java

  1. Adquira novas credenciais de usuário para usar com o Application Default Credentials:

    gcloud config set project PROJECT_ID
    gcloud auth application-default login

    Substitua PROJECT_ID pelo ID do projeto do projeto na nuvem do app.

  2. Clone o repositório googleworkspace/add-ons-samples do GitHub no seu ambiente local. Ele contém o código do aplicativo:

    git clone https://github.com/googleworkspace/add-ons-samples.git
  3. No ambiente de desenvolvimento integrado Visual Studio Code instalado no ambiente local, faça o seguinte:

    1. Em uma nova janela, abra a pasta add-ons-samples/java/chat/avatar-app.
    2. Configure o projeto Maven para executar o aplicativo App na porta 9000 localmente. Para isso, adicione o plug-in de build do Framework de funções do Google Cloud function-maven-plugin ao arquivo pom.xml:

      ...
      <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. Agora é possível iniciá-lo localmente no modo de depuração:

      mvnDebug function:run
      Preparing to execute Maven in debug mode
      Listening for transport dt_socket at address: 8000
    4. Crie o arquivo .vscode/launch.json no diretório raiz e configure um lançamento chamado Remote Debug Watch que se conecta ao aplicativo lançado anteriormente com a porta 8000:

      {
          "version": "0.2.0",
          "configurations": [{
              "type": "java",
              "request": "attach",
              "name": "Remote Debug Watch",
              "projectName": "http-function",
              "hostName": "localhost",
              "port": 8000
          }]
      }
      
    5. Adicione um ponto de interrupção que pausa o processamento da solicitação HTTP no arquivo App.java e comece a anexar e depurar com a configuração Remote Debug Watch adicionada anteriormente. O aplicativo está em execução e detectando solicitações HTTP na porta 9000.

      O aplicativo está em execução e detectando solicitações HTTP na porta `9000`.

      Figura 3: o aplicativo está em execução e detectando solicitações HTTP na porta 9000.

  4. Inicie o aplicativo ngrok no seu ambiente local:

    ngrok http --domain=NGROK_STATIC_DOMAIN 9000

    Substitua NGROK_STATIC_DOMAIN pelo domínio estático na sua conta do ngrok. Todas as solicitações agora são redirecionadas para seu ambiente local e a porta usada pelo aplicativo.

    O terminal com o servidor &quot;ngrok&quot; em execução e
redirecionando

    Figura 4. O terminal com o servidor ngrok em execução e redirecionamento.

  5. Uma interface da Web também é iniciada no seu host local pelo aplicativo ngrok. Para monitorar todas as atividades, abra a interface em um navegador.

    A interface da Web hospedada pelo aplicativo `ngrok` sem mostrar solicitações HTTP

    Figura 5. A interface da Web hospedada pelo aplicativo ngrok sem mostrar solicitações HTTP.

  6. Teste o app do Chat enviando uma mensagem direta:

    • Abra o Google Chat.

      Acessar o Google Chat

    • Clique em Novo chat .

    • Na caixa de diálogo, insira o nome do seu app de chat.

    • Nos resultados da pesquisa, encontre o app Chat, clique em Adicionar > Chat.

    • No espaço de mensagem direta, digite Hey! e pressione enter. Seu app de chat não responde porque está sendo depurado ativamente.

  7. No Visual Studio Code do ambiente local, você pode ver que a execução está pausada no ponto de interrupção definido.

    A execução é pausada no ponto de interrupção definido.

    Figura 6. A execução é pausada no ponto de interrupção definido.

  8. Quando você retoma a execução do depurador de Visual Studio Code antes que o Google Chat atinja o tempo limite do app Chat ele responde com seu nome e foto do avatar na mensagem.

  9. É possível verificar os registros de solicitação e resposta HTTP da interface da Web hospedada pelo aplicativo ngrok no seu ambiente local.

    A solicitação HTTP da interface da Web hospedada pelo aplicativo `ngrok`

    Figura 7. A solicitação HTTP da interface da Web hospedada pelo aplicativo ngrok.

  10. Para mudar o comportamento do aplicativo, substitua Hello por Hey na linha 55 do arquivo App.java, reinicie o processo mvnDebug e reinicie Remote Debug Watch para reconectar e reiniciar a depuração.

  11. Desta vez, em vez de enviar uma segunda mensagem Hey! no espaço, selecione a última solicitação HTTP registrada na interface da Web hospedada pelo aplicativo ngrok no seu ambiente local e clique em Replay. Assim como da última vez, o app Chat não responde porque está sendo depurado ativamente.

  12. Quando você retoma a execução do depurador de Visual Studio Code, é possível ver na interface da Web hospedada pelo aplicativo ngrok no ambiente local que o aplicativo gera uma resposta com a versão atualizada da mensagem.

Depurar de um ambiente remoto

Nesta seção, você vai interagir com o app do Chat que é executado em um ambiente remoto.

Depurar de um ambiente remoto

Figura 9. Depurar de um ambiente remoto.

Pré-requisitos

  • Um espaço de mensagem direta com o app do Chat. Você pode seguir a seção Testar o app do Chat do Guia de início rápido e pesquisar seu app do Chat para iniciar um.
  • O aplicativo em execução no ambiente remoto com o depurador ativado em uma determinada porta é referenciado como REMOTE_DEBUG_PORT nas instruções deste guia.
  • Seu ambiente local pode ssh para o ambiente remoto.
  • Um ambiente de desenvolvimento integrado configurado no seu ambiente local que pode depurar. Usamos a Visual Studio Code IDE e os recursos de depuração padrão neste guia para fins ilustrativos.

Conecte seus ambientes locais e remotos

No ambiente local de onde você quer iniciar uma conexão de cliente de depuração, configure um túnel SSH:

ssh -L LOCAL_DEBUG_PORT:localhost:REMOTE_DEBUG_PORT REMOTE_USERNAME@REMOTE_ADDRESS

Substitua:

  • LOCAL_DEBUG_PORT: a porta de depuração no seu ambiente local.
  • REMOTE_USERNAME: o nome de usuário no seu ambiente remoto.
  • REMOTE_ADDRESS: o endereço do seu ambiente remoto.
  • REMOTE_DEBUG_PORT: a porta de depuração no seu ambiente remoto.

A porta de depuração no ambiente local agora está vinculada à porta de depuração no ambiente remoto.

Começar a depurar

No ambiente de desenvolvimento integrado Visual Studio Code instalado no ambiente local, faça o seguinte:

  1. Em uma nova janela, abra o código-fonte do app.
  2. Crie o arquivo .vscode/launch.json no diretório raiz e configure um lançamento chamado Debug Remote que se conecta à porta de depuração no seu ambiente local:

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

    Substitua LOCAL_DEBUG_PORT pela porta de depuração no seu ambiente local.

  3. Adicione um ponto de interrupção no código-fonte do app que pausa o processamento da solicitação HTTP e comece a executar e depurar com a configuração Debug Remote adicionada anteriormente.

No espaço de mensagem direta com o app Chat, digite qualquer coisa que você queira testar e pressione enter. Seu app de chat não responde porque está sendo depurado ativamente na IDE Visual Studio Code.

Apps de chat que não são complementos: depurar apps do Google Chat

A documentação a seguir se aplica a apps do Chat que não são complementos do Google Workspace. Para migrar um app do Chat que não é um complemento, consulte Converter um app do Chat em um complemento do Google Workspace.

Para depurar um app do Chat que não é um complemento do seu ambiente local:

  • Na guia Configuração da API Chat, em Recursos interativos > Configurações de conexão, selecione URL do endpoint HTTP e defina o campo URL do endpoint HTTP diretamente como https://<var>NGROK_STATIC_DOMAIN</var>.
  • Use o exemplo de código para apps do Chat que não são complementos do repositório do GitHub googleworkspace/google-chat-samples (google-chat-samples/node/basic-app, google-chat-samples/python/avatar-app ou google-chat-samples/java/avatar-app).