Enviar mensagens para o Google Chat com webhooks de entrada

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Os webhooks de entrada permitem enviar mensagens assíncronas para o Google Chat de aplicativos que não são do Chat. Por exemplo, é possível configurar um aplicativo de monitoramento para notificar a equipe de plantão no Google Chat quando um servidor estiver inativo.

Veja como enviar, atualizar ou excluir uma mensagem de forma assíncrona em um espaço do Chat com um app de chat em Criar, ler, atualizar e excluir mensagens.

Diagrama mostrando como webhooks de entrada enviam mensagens para o Google Chat

Pré-requisitos

Para executar o exemplo neste guia, você precisa do seguinte:

Python

  • Python 3.10.7 ou posterior.
  • Acesso à Internet e a um navegador da Web.
  • Uma conta do Google Workspace com acesso ao Google Chat.
  • Um espaço do Google Chat.
  • A biblioteca httplib2. Se necessário, execute o seguinte comando da interface de linha de comando (CLI) para instalar a biblioteca usando o pip:

    pip install httplib2
    

Node.js

Apps Script

Java

Criar um webhook

Para criar um webhook, registre-o no espaço do Google Chat em que você quer receber mensagens e escreva um script que envie mensagens.

Etapa 1: registrar o webhook de entrada

  1. Em um navegador da Web, abra o Google Chat.
  2. Acesse o espaço ao qual você quer adicionar um webhook.
  3. Na parte de cima, ao lado do título do espaço, clique na seta para baixo > Apps e integrações.
  4. Clique em Gerenciar webhooks.
  5. Se esse espaço já tiver outros webhooks, clique em Adicionar outro. Caso contrário, pule esta etapa.
  6. Em Nome, digite "Webhook quickstart".
  7. Em URL do avatar, insira https://developers.google.com/chat/images/chat-product-icon.png.
  8. Clique em SALVAR.
  9. Para copiar o URL completo do webhook, clique em Copiar.
  10. Clique fora da caixa para fechar a caixa de diálogo "Webhooks de entrada".

Etapa 2: gravar o script do webhook

O script de webhook de exemplo posta uma mensagem no espaço em que o webhook é registrado enviando uma solicitação create message para o URL do webhook. A API Google Chat responde com uma instância do Message.

Escolha uma linguagem abaixo para instruções específicas sobre como criar o script do webhook:

Python

  1. No diretório de trabalho, crie um arquivo chamado quickstart.py.

  2. Em quickstart.py, copie e cole o seguinte código:

    python/webhook/quickstart.py
    from json import dumps
    
    from httplib2 import Http
    
    
    def main():
        """Hangouts Chat incoming webhook quickstart."""
        url = 'https://chat.googleapis.com/v1/spaces/7D8la4AAAAE/messages?key=' \
              'AIzaSyDdI0hCZtE6vySjMm-WEfRq3CPzqKqqsHI&token=' \
              'HulDviWFMz6R5FW-GwlO4INCW1cZGDDExuWVaEbbr_g%3D'
        bot_message = {
            'text': 'Hello from a Python script!'}
        message_headers = {'Content-Type': 'application/json; charset=UTF-8'}
        http_obj = Http()
        response = http_obj.request(
            uri=url,
            method='POST',
            headers=message_headers,
            body=dumps(bot_message),
        )
        print(response)
    
    
    if __name__ == '__main__':
        main()
  3. Substitua o valor da variável url pelo URL do webhook que você copiou na Etapa 1: registre o webhook de entrada.

Node.js

  1. No diretório de trabalho, crie um arquivo chamado index.js.

  2. Em index.js, copie e cole o seguinte código:

    nó/webhook/index.js
    /**
     * Sends asynchronous message into Google Chat
     * @return{obj} response
     */
    function webhook() {
      const fetch = require('node-fetch');
      const webhookURL = 'https://chat.googleapis.com/v1/spaces/AAAAGCYeSRY/messages?key=AIzaSyDdI0hCZtE6vySjMm-WEfRq3CPzqKqqsHI&token=u9IG_MuTBXw-tnqupPrPNinY2spKFcRBDp6dSldGUAw%3D';
    
      const data = JSON.stringify({
        'text': 'Hello from a Node script!',
      });
      let resp;
      fetch(webhookURL, {
        method: 'POST',
        headers: {
          'Content-Type': 'application/json; charset=UTF-8',
        },
        body: data,
      }).then((response) => {
        resp = response;
        console.log(response);
      });
      return resp;
    }
    
  3. Substitua o valor da variável webhookURL pelo URL do webhook que você copiou na Etapa 1: registre o webhook de entrada.

Apps Script

  1. Acesse a página do Apps Script.

  2. Clique em New Project.

  3. Copie e cole o seguinte código:

    apps-script/webhook/webhook.gs
    function webhook() {
      const url = "https://chat.googleapis.com/v1/spaces/AAAAGCYeSRY/messages";
      const options = {
        "method": "post",
        "headers": {
          "Content-Type": "application/json; charset=UTF-8"
        },
        "payload": JSON.stringify({
          "text": "Hello from Apps Script!"
        })
      };
      const response = UrlFetchApp.fetch(url, options);
      Logger.log(response);
    }
  4. Substitua o valor da variável url pelo URL do webhook que você copiou na Etapa 1: registre o webhook de entrada.

Java

  1. No diretório de trabalho, crie um arquivo chamado pom.xml.

  2. Em pom.xml, copie e cole o seguinte:

    java/webhook/pom.xml.
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
    
      <groupId>com.google.hangouts.chat.webhook</groupId>
      <artifactId>java-webhook-app</artifactId>
      <version>0.1.0</version>
    
      <name>java-webhook-app</name>
      <url>https://github.com/googleworkspace/hangouts-chat-samples/tree/main/java/webhook</url>
    
      <properties>
        <maven.compiler.target>11</maven.compiler.target>
        <maven.compiler.source>11</maven.compiler.source>
      </properties>
    
      <dependencies>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.9.1</version>
        </dependency>
      </dependencies>
    
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <artifactId>maven-compiler-plugin</artifactId>
              <version>3.8.0</version>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </project>
  3. No diretório de trabalho, crie a estrutura de diretório src/main/java.

  4. No diretório src/main/java, crie um arquivo chamado App.java.

  5. Em App.java, copie e cole o seguinte código:

    java/webhook/src/main/java/com/google/hangouts/chat/webhook/App.java
    import com.google.gson.Gson;
    import java.net.http.HttpClient;
    import java.net.http.HttpRequest;
    import java.net.http.HttpResponse;
    import java.util.Map;
    import java.net.URI;
    
    public class App {
      private static final String URL = "https://chat.googleapis.com/v1/spaces/AAAAGCYeSRY/messages";
      private static final Gson gson = new Gson();
      private static final HttpClient client = HttpClient.newHttpClient();
    
      public static void main(String[] args) throws Exception {
        String message = gson.toJson(Map.of("text", "Hello from Java!"));
    
        HttpRequest request = HttpRequest.newBuilder(
            URI.create(URL))
            .header("accept", "application/json; charset=UTF-8")
            .POST(HttpRequest.BodyPublishers.ofString(message))
            .build();
    
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
    
        System.out.println(response.body());
      }
    }
  6. Substitua o valor da variável URL pelo URL do webhook que você copiou na Etapa 1: registre o webhook de entrada.

Etapa 3: executar o script do webhook

Para executar o exemplo, execute o seguinte comando no seu diretório de trabalho na CLI:

Python

  python3 quickstart.py

Node.js

  node index.js

Apps Script

  • Clique em Executar.

Java

  mvn compile exec:java -Dexec.mainClass=App

Quando você executa a amostra de código, o webhook envia uma mensagem para o espaço em que você a registrou.

Iniciar ou responder a uma conversa

Você pode iniciar uma conversa ou responder a uma mensagem adicionando o parâmetro threadKey ao URL do webhook. Cada threadKey é exclusivo para o app que o define. Se dois apps ou webhooks do Chat diferentes definirem o mesmo threadKey, duas linhas de execução diferentes serão iniciadas.

Iniciar uma conversa

Para postar a primeira mensagem de uma linha de execução com um webhook, anexe o parâmetro threadKey ao URL do webhook. Defina a threadKey como uma string arbitrária, mas lembre-se dela, porque você precisará especificá-la novamente para postar uma resposta à linha de execução.

  https://chat.googleapis.com/v1/spaces/SPACE_ID/messages?threadKey=ARBITRARY_STRING

Responder a uma conversa

Para enviar uma mensagem a uma linha de execução de mensagem existente, anexe o parâmetro threadKey ao URL do webhook, definido como o valor usado para iniciar a linha de execução. Por exemplo, o envio de uma mensagem para o seguinte URL posta uma resposta na conversa em que threadKey é MY-THREAD:

  https://chat.googleapis.com/v1/spaces/SPACE_ID/messages?threadKey=MY-THREAD

Limites e considerações

Ao configurar webhooks, considere estes limites e considerações:

  • Cada webhook só funciona no espaço do Chat em que está registrado.

  • Não é possível publicar webhooks no Google Workspace Marketplace.

  • Os webhooks não são conversacionais. Eles não podem responder ou receber mensagens de usuários ou eventos do Google Chat.

  • Se apenas unidades organizacionais (UOs) no seu domínio tiverem apps de chat ativados, os webhooks de entrada retornarão o seguinte erro:

    {
      "error": {
        "code": 403,
        "message": "The caller does not have permission",
        "status": "PERMISSION_DENIED"
      }
    }
    
  • Os webhooks de entrada funcionam em mensagens diretas, mas apenas quando todos os usuários têm os apps de chat ativados.

  • Como o recurso O ícone para gerenciar webhooks Gerenciar webhooks está disponível apenas em um navegador da Web, os webhooks precisam ser configurados no app Chat para a Web. Não é possível configurar os webhooks no app Chat para dispositivos móveis.