Esta página descreve como configurar um webhook para enviar mensagens assíncronas para um espaço do Chat usando acionadores externos. Por exemplo, é possível configurar um aplicativo de monitoramento para notificar o pessoal de plantão no Chat quando um servidor ficar inativo. Para enviar uma mensagem síncrona com um app do Chat, consulte Enviar uma mensagem.
Com esse tipo de design de arquitetura, os usuários não podem interagir com o webhook ou o aplicativo externo conectado porque a comunicação é unidirecional. Os webhooks não são conversacionais. Eles não podem responder nem receber mensagens de usuários ou eventos de interação de apps do Chat. Para responder a mensagens, crie um app do Chat em vez de um webhook.
Embora um webhook não seja tecnicamente um app do Chat (os webhooks conectam aplicativos usando solicitações HTTP padrão), esta página se refere a ele como um app do Chat para simplificação. Cada webhook funciona apenas no espaço do Chat em que está registrado. Os webhooks de entrada funcionam em mensagens diretas, mas apenas quando todos os usuários têm apps do Chat ativados. Não é possível publicar webhooks no Google Workspace Marketplace.
O diagrama a seguir mostra a arquitetura de um webhook conectado ao Chat:
No diagrama anterior, um app do Chat tem o seguinte fluxo de informações:
- A lógica do app do Chat recebe informações de serviços externos de terceiros, como um sistema de gerenciamento de projetos ou uma ferramenta de emissão de tickets.
- A lógica do app do Chat é hospedada em um sistema na nuvem ou local que pode enviar mensagens usando um URL de webhook para um espaço específico do Chat.
- Os usuários podem receber mensagens do app do Chat nesse espaço específico do Chat, mas não podem interagir com o app do Chat.
Pré-requisitos
Node.js
- Uma conta do Google Workspace Business ou Enterprise com acesso ao Google Chat. Sua organização do Google Workspace precisa permitir que os usuários adicionem e usem webhooks de entrada.
- Node.js 14 ou mais recente
- A ferramenta de gerenciamento de pacotes npm
- Um espaço do Chat do Google. Para criar um usando a API Google Chat, consulte Criar um espaço. Para criar um no Chat, acesse a documentação da Central de Ajuda.
Python
- Uma conta do Google Workspace Business ou Enterprise com acesso ao Google Chat. Sua organização do Google Workspace precisa permitir que os usuários adicionem e usem webhooks de entrada.
- Python 3.6 ou mais recente
- A ferramenta de gerenciamento de pacotes pip
A biblioteca
httplib2. Para instalar a biblioteca, execute o comando a seguir na interface de linha de comando:pip install httplib2Um espaço do Chat do Google. Para criar um usando a API Google Chat, consulte Criar um espaço. Para criar um no Chat, acesse a documentação da Central de Ajuda.
Java
- Uma conta do Google Workspace Business ou Enterprise com acesso ao Google Chat. Sua organização do Google Workspace precisa permitir que os usuários adicionem e usem webhooks de entrada.
- Java 11 ou mais recente
- A ferramenta de gerenciamento de pacotes Maven
- Um espaço do Chat do Google. Para criar um usando a API Google Chat, consulte Criar um espaço. Para criar um no Chat, acesse a documentação da Central de Ajuda.
Apps Script
- Uma conta do Google Workspace Business ou Enterprise com acesso ao Google Chat. Sua organização do Google Workspace precisa permitir que os usuários adicionem e usem webhooks de entrada.
- Crie um projeto independente do Apps Script, e ative o serviço avançado do Chat.
- Um espaço do Chat do Google. Para criar um usando a API Google Chat, consulte Criar um espaço. Para criar um no Chat, acesse a documentação da Central de Ajuda.
Criar um webhook
Para criar um webhook, registre-o no espaço do Chat em que você quer receber mensagens e, em seguida, escreva um script que envie mensagens.
Registrar o webhook de entrada
- Em um navegador, abra o Chat. Os webhooks não podem ser configurados no app Chat para dispositivos móveis.
- Acesse o espaço em que você quer adicionar um webhook.
- Ao lado do título do espaço, clique na seta expandir mais e em Apps e integrações.
Clique em Adicionar webhooks.
No campo Nome, insira
Quickstart Webhook.No campo URL do avatar, insira
https://developers.google.com/chat/images/chat-product-icon.png.Clique em Salvar.
Para copiar o URL do webhook, clique em Mais e em Copiar link.
O URL do webhook contém dois parâmetros:
key, um valor comum compartilhado entre webhooks, etokenque é um valor exclusivo que precisa ser mantido em segredo para preservar a segurança do webhook.
Escrever o script do webhook
O script de webhook de exemplo envia uma mensagem para o espaço em que o webhook está registrado enviando uma solicitação POST para o URL do webhook. A
API Chat responde com uma instância de
Message.
Selecione um idioma para aprender a criar um script de webhook:
Node.js
No diretório de trabalho, crie um arquivo chamado
index.js.Em
index.js, cole o seguinte código:Substitua o valor da variável
urlpelo URL do webhook que você copiou ao registrar o webhook.
Python
No diretório de trabalho, crie um arquivo chamado
quickstart.py.Em
quickstart.py, cole o seguinte código:Substitua o valor da variável
urlpelo URL do webhook que você copiou ao registrar o webhook.
Java
No diretório de trabalho, crie um arquivo chamado
pom.xml.Em
pom.xml, copie e cole o seguinte:No diretório de trabalho, crie a seguinte estrutura de diretório
src/main/java.No diretório
src/main/java, crie um arquivo chamadoApp.java.Em
App.java, cole o seguinte código:Substitua o valor da variável
URLpelo URL do webhook que você copiou ao registrar o webhook.
Apps Script
Em um navegador, acesse o Apps Script.
Clique em Novo projeto.
Cole o seguinte código:
Substitua o valor da variável
urlpelo URL do webhook que você copiou ao registrar o webhook.
Executar o script do webhook
Em uma CLI, execute o script:
Node.js
node index.jsPython
python3 quickstart.pyJava
mvn compile exec:java -Dexec.mainClass=AppApps Script
- Clique em Executar.
Quando você executa o código, o webhook envia uma mensagem para o espaço em que você o registrou.
Iniciar ou responder a uma conversa
Especifique
spaces.messages.thread.threadKeycomo parte do corpo da solicitação de mensagem. Dependendo se você está iniciando ou respondendo a uma conversa, use os seguintes valores parathreadKey:Se você estiver iniciando uma conversa, defina o
threadKeycomo uma string arbitrária, mas anote esse valor para postar uma resposta na conversa.Se você estiver respondendo a uma conversa, especifique o
threadKeydefinido quando a conversa foi iniciada. Por exemplo, para postar uma resposta na conversa em que a mensagem inicial usouMY-THREAD, definaMY-THREAD.
Defina o comportamento da conversa se o
threadKeyespecificado não for encontrado:Responda a uma conversa ou inicie uma nova. Adicione o parâmetro
messageReplyOption=REPLY_MESSAGE_FALLBACK_TO_NEW_THREADao URL do webhook. A transmissão desse parâmetro de URL faz com que o Chat procure uma conversa usando othreadKeyespecificado. Se uma conversa for encontrada, a mensagem será postada como uma resposta a ela. Se nenhuma for encontrada, a mensagem iniciará uma nova conversa correspondente a essethreadKey.Responda a uma conversa ou não faça nada. Adicione o parâmetro
messageReplyOption=REPLY_MESSAGE_OR_FAILao URL do webhook. A transmissão desse parâmetro de URL faz com que o Chat procure uma conversa usando othreadKeyespecificado. Se uma conversa for encontrada, a mensagem será postada como uma resposta a ela. Se nenhuma for encontrada, a mensagem não será enviada.
Para saber mais, consulte
messageReplyOption.
O exemplo de código a seguir inicia ou responde a uma conversa:
Node.js
Python
Java
Apps Script
Solucionar erros
As solicitações de webhook podem falhar por vários motivos, incluindo:
- Solicitação inválida.
- O webhook ou o espaço que hospeda o webhook é excluído.
- Problemas intermitentes, como conectividade de rede ou limites de cota.
Ao criar o webhook, você precisa processar os erros de maneira adequada:
- Registrando a falha.
- Para erros de tempo, cota ou conectividade de rede, tentando novamente a solicitação com espera exponencial.
- Não fazendo nada, o que é adequado se o envio da mensagem de webhook não for importante.
A API Google Chat retorna erros como um
google.rpc.Status,
que inclui um erro HTTP code que indica o tipo de erro encontrado: um erro do cliente (série 400) ou um erro do servidor (série 500). Para
revisar todos os mapeamentos HTTP, consulte
google.rpc.Code.
{
"code": 503,
"message": "The service is currently unavailable.",
"status": "UNAVAILABLE"
}
Para saber como interpretar códigos de status HTTP e processar erros, consulte Erros.
Limitações e considerações
- Ao criar uma mensagem
com um webhook na API Google Chat, a resposta não contém a mensagem completa.
A resposta preenche apenas os campos
nameethread.name. - Os webhooks estão sujeitos à cota por espaço para
spaces.messages.create: 1 solicitação por segundo, compartilhada entre todos os webhooks no espaço. O Chat também pode rejeitar solicitações de webhook que excedam 1 consulta por segundo no mesmo espaço. Para mais informações sobre as cotas da API Chat, consulte Limites de uso.