Depurar apps do Google Chat

Como desenvolvedor de apps do Google Chat, talvez você precise depurar código para testar mudanças ou resolver problemas complexos. A depuração de apps do Chat pode ser feita de várias maneiras diferentes, dependendo da arquitetura do app, do que ele faz, de como ele é implantado e das suas preferências.

Nesta página, explicamos como depurar um app de chat HTTP usando o ngrok, uma plataforma de entrada unificada que pode ser usada para testar ambientes de desenvolvimento locais. Neste guia, você testará alterações de código em um ambiente local e solucionará problemas em um ambiente remoto.

Depurar a partir do ambiente de desenvolvimento local

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

Depurar a partir do ambiente de desenvolvimento
local

Figura 1. Depurar em um ambiente de desenvolvimento local.

Workshop

Node.js

Python

Java

Pré-requisitos

Node.js

Python

Java

Disponibilizar o serviço de localhost publicamente

Você precisa conectar seu ambiente local à Internet para que o app Chat tenha acesso a ele. O aplicativo ngrok é usado para redirecionar solicitações HTTP feitas a um URL público para seu ambiente local.

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

Configurar o app do Chat

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

  1. No console do Google Cloud, 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 e defina o valor do campo de texto URL do app 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 do Chat envia todas as solicitações HTTP para o
domínio estático.

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

Teste o app do Chat

Você pode implantar, configurar, testar, depurar e recarregar automaticamente seu app do Chat.

Node.js

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

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

    1. Em uma nova janela, abra a pasta google-chat-samples/node/basic-app.
    2. Configure o aplicativo para depuração de atualização 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 pause o processamento da solicitação HTTP no arquivo index.js e comece a executar e depurar com a configuração 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.

  3. Inicie o aplicativo ngrok no 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 o ambiente local e para a porta usada pelo aplicativo.

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

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

  4. Uma interface da Web também é iniciada no seu localhost pelo aplicativo ngrok. É possível monitorar todas as atividades abrindo-a em um navegador.

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

    Figura 5. A interface da Web hospedada pelo aplicativo ngrok que não mostra solicitações HTTP.

  5. Envie uma mensagem direta para o app do Chat:

    • Abra o Google Chat.

      Acessar o Google Chat

    • Clique em Novo chat .

    • Na caixa de diálogo, digite o nome do seu app do Chat.

    • Nos resultados da pesquisa, encontre seu app do Chat e clique em Add > Chat.

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

  6. No Visual Studio Code do seu ambiente local, é possível conferir que a execução foi pausada no ponto de interrupção definido.

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

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

  7. Quando você retoma a execução do depurador de Visual Studio Code antes de o Google Chat expirar, o app do Chat responde Your message : Hello.

  8. É possível verificar os registros de solicitação e resposta HTTP na interface da Web hospedada pelo aplicativo ngrok no 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, substitua Your message pelo 35 inline Here was your message do index.json. 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, é possível selecionar a última solicitação HTTP registrada na interface da Web hospedada pelo aplicativo ngrok no ambiente local e clicar em Replay. Assim como na última vez, seu app do Chat não respondeu porque está sendo depurado ativamente.

  11. Ao retomar a execução do depurador de Visual Studio Code, você pode 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 Here was your message : Hello.

Python

  1. Consiga novas credenciais de usuário que serão usadas no Application Default Credentials:

    gcloud config set project PROJECT_ID
    gcloud auth application-default login
    

    Substitua PROJECT_ID pelo ID do projeto do projeto do Cloud para o app.

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

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

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

      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 uma inicialização chamada 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", "hello_chat",
                  "--port", "9000",
                  "--debug"
              ]
          }]
      }
      
    5. Adicione um ponto de interrupção que pause o processamento da solicitação HTTP no arquivo main.py e comece a executar e depurar com a configuração 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 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 o ambiente local e para a porta usada pelo aplicativo.

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

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

  5. Uma interface da Web também é iniciada no seu localhost pelo aplicativo ngrok. É possível monitorar todas as atividades abrindo-a em um navegador.

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

    Figura 5. A interface da Web hospedada pelo aplicativo ngrok que não mostra solicitações HTTP.

  6. Envie uma mensagem direta para o app do Chat:

    • Abra o Google Chat.

      Acessar o Google Chat

    • Clique em Novo chat .

    • Na caixa de diálogo, digite o nome do seu app do Chat.

    • Nos resultados da pesquisa, encontre seu app do Chat e clique em Add > Chat.

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

  7. No Visual Studio Code do seu ambiente local, é possível conferir que a execução foi pausada no ponto de interrupção definido.

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

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

  8. Quando você retoma a execução do depurador de Visual Studio Code antes de o Google Chat expirar, o app do Chat responde com seu nome e imagem do avatar na mensagem.

  9. É possível verificar os registros de solicitação e resposta HTTP na interface da Web hospedada pelo aplicativo ngrok no 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 in-line 51 do 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, é possível selecionar a última solicitação HTTP registrada na interface da Web hospedada pelo aplicativo ngrok no ambiente local e clicar em Replay. Assim como na última vez, seu app do Chat não respondeu porque está sendo depurado ativamente.

  12. Ao retomar a execução do depurador de Visual Studio Code, você pode 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. Consiga novas credenciais de usuário que serão usadas no Application Default Credentials:

    gcloud config set project PROJECT_ID
    gcloud auth application-default login
    

    Substitua PROJECT_ID pelo ID do projeto do projeto do Cloud para o app.

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

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

    1. Em uma nova janela, abra a pasta google-chat-samples/java/avatar-app.
    2. Configure o projeto Maven para executar localmente o aplicativo HelloChat na porta 9000 adicionando o plug-in de build do Cloud Functions Framework 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>HelloChat</functionTarget>
              <port>9000</port>
          </configuration>
      </plugin>
      ...
      
    3. Agora é possível iniciá-la 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 uma inicialização chamada Remote Debug Watch que é anexada ao aplicativo iniciado 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 pause o processamento da solicitação HTTP no arquivo HelloChat.java e comece a anexar e depurar com a configuração Remote Debug Watch adicionada anteriormente. O aplicativo está em execução e recebendo solicitações HTTP na porta 9000.

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

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

  4. Inicie o aplicativo ngrok no 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 o ambiente local e para a porta usada pelo aplicativo.

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

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

  5. Uma interface da Web também é iniciada no seu localhost pelo aplicativo ngrok. É possível monitorar todas as atividades abrindo-a em um navegador.

    A interface da Web hospedada pelo aplicativo &quot;ngrok&quot; sem solicitações
HTTP

    Figura 5. A interface da Web hospedada pelo aplicativo ngrok que não mostra solicitações HTTP.

  6. Envie uma mensagem direta para o app do Chat:

    • Abra o Google Chat.

      Acessar o Google Chat

    • Clique em Novo chat .

    • Na caixa de diálogo, digite o nome do seu app do Chat.

    • Nos resultados da pesquisa, encontre seu app do Chat e clique em Add > Chat.

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

  7. No Visual Studio Code do seu ambiente local, é possível conferir que a execução foi pausada no ponto de interrupção definido.

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

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

  8. Quando você retoma a execução do depurador de Visual Studio Code antes de o Google Chat expirar, o app do Chat responde com seu nome e imagem do avatar na mensagem.

  9. É possível verificar os registros de solicitação e resposta HTTP na interface da Web hospedada pelo aplicativo ngrok no 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 in-line 55 do arquivo HelloChat.java, reinicie o processo mvnDebug e reinicie o Remote Debug Watch para reanexar e reiniciar a depuração.

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

  12. Ao retomar a execução do depurador de Visual Studio Code, você pode 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 do ambiente remoto

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

Depurar a partir do ambiente
remoto

Figura 9. Depurar em ambiente remoto.

Pré-requisitos

  • Um espaço de mensagens diretas com o app do Chat. Siga a seção Testar o app do Chat do Guia de início rápido e pesquise o 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.
  • O ambiente local pode ssh para o ambiente remoto.
  • Um IDE configurado no seu ambiente local que pode depurar. Usamos o ambiente de desenvolvimento integrado Visual Studio Code e os recursos de depuração padrão neste guia para fins ilustrativos.

Conecte seus ambientes locais e remotos

No ambiente local em que você quer iniciar uma conexão do 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 ambiente local.
  • REMOTE_USERNAME: o nome de usuário no ambiente remoto.
  • REMOTE_ADDRESS: o endereço do ambiente remoto.
  • REMOTE_DEBUG_PORT: a porta de depuração no 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 seu 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 é conectado à porta de depuração no 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 ambiente local.

  3. Adicione um ponto de interrupção ao código-fonte do app que pause o processamento da solicitação HTTP e comece a execução e depuração com a configuração Debug Remote adicionada anteriormente.

No espaço da mensagem direta com o app do Chat, digite o que você quiser testar e pressione enter. Seu app do Chat não responde porque está sendo ativamente depurado no ambiente de desenvolvimento integrado Visual Studio Code.