Escolher uma arquitetura do app Google Chat

Nesta página, descrevemos abordagens comuns de arquitetura de serviço usadas para criar apps do Google Chat. Se você tem um app que quer integrar ao Google Chat, use ou adapte sua implementação. Se você estiver criando um novo app do Chat, esta página apresenta informações semelhantes de algumas maneiras diferentes para ajudar você a escolher a arquitetura ideal para seu caso de uso:

Visão geral por recursos e funcionalidades

A tabela a seguir destaca os principais recursos e funcionalidades dos apps do Chat e o estilo de arquitetura de serviço recomendado (). Em alguns casos, é possível desenvolver outro estilo de arquitetura com esses recursos, mas ele não é tão adequado para o caso de uso quanto outros estilos ().

Recursos e funcionalidades

Serviço da Web ou HTTP

Pub/Sub

Webhooks

Apps Script

AppSheet

Dialogflow

Script

Público-alvo

Sua equipe

Sua organização

O público

Interatividade do usuário

Usar o processamento de linguagem natural

Padrões de mensagens

Enviar e receber mensagens síncronas

Enviar e receber mensagens síncronas e enviar mensagens assíncronas

Enviar apenas mensagens assíncronas

Enviar mensagens de um sistema externo para um único espaço do Chat

Acessar outros serviços e sistemas

Integre com outros serviços do Google

Comunicar-se atrás de um firewall

Inscreva-se em eventos do Google Workspace

Estilos de programação e implantação

Desenvolvimento sem código

Desenvolvimento com pouco código

Desenvolvimento em uma linguagem de programação de sua escolha

DevOps simplificado

Gerenciamento completo de DevOps e CI/CD

Estilos de arquitetura de serviço

Esta seção descreve algumas das abordagens de arquitetura mais comuns usadas para criar apps do Chat.

Serviço da Web ou HTTP

Um serviço da Web ou HTTP é a arquitetura mais comumente implantada porque oferece a maior flexibilidade para os desenvolvedores criarem apps públicos do Chat. Essa arquitetura é recomendada para os seguintes casos de uso:

  • O app do Chat é implantado para o público no Google Workspace Marketplace.
  • O app do Chat pode enviar e receber todos os padrões de mensagens, como enviar e receber mensagens síncronas, assíncronas e de um sistema externo.
  • O app do Chat é desenvolvido em qualquer linguagem de programação.
  • O app do Chat requer gerenciamento completo de DevOps e CI/CD.
  • O serviço do app do Chat é implementado em servidores na nuvem ou locais.

Neste design, você configura o Chat para integração com um serviço remoto usando HTTP, conforme mostrado no diagrama a seguir:

Arquitetura de um app de chat usando um serviço da Web em um servidor local.

No diagrama anterior, um usuário que interage com um app do Chat HTTP tem o seguinte fluxo de informações:

  1. Um usuário envia uma mensagem em um espaço do Chat para um app do Chat.
  2. Uma solicitação HTTP é enviada para um servidor da Web que é um sistema em nuvem ou local que contém a lógica do app do Chat.
  3. Opcionalmente, a lógica do app de chat pode interagir com serviços externos de terceiros, como um sistema de gerenciamento de projetos ou uma ferramenta de tíquetes.
  4. O servidor da Web envia uma resposta HTTP de volta ao serviço do app do Chat no Chat.
  5. A resposta é entregue ao usuário.
  6. Opcionalmente, o app do Chat pode chamar a API Chat para postar mensagens de forma assíncrona ou realizar outras operações.

Essa arquitetura oferece a flexibilidade de usar bibliotecas e componentes que já existem no sistema, já que esses apps do Chat podem ser projetados com diferentes linguagens de programação. Há maneiras diferentes de implementar essa arquitetura. No Google Cloud, é possível usar o Cloud Functions, o Cloud Run e o App Engine. Para começar, consulte Criar um app do Google Chat com o Cloud Functions.

Pub/Sub

Se o app do Chat for implementado por trás de um firewall, o Chat não poderá fazer chamadas HTTP para ele. Uma abordagem é usar o Pub/Sub para permitir que a implementação do app do Chat faça a assinatura em um tópico que carrega mensagens do Chat. O Pub/Sub é um serviço de mensagens assíncronas que separa os serviços que produzem mensagens dos serviços que as processam. Essa arquitetura é recomendada para os seguintes casos de uso:

  • O app do Chat é criado com a proteção de um firewall.
  • O app do Chat recebe eventos sobre um espaço do Chat.
  • O app do Chat foi implantado na sua organização.
  • O app do Chat pode enviar e receber mensagens síncronas, além de enviar mensagens assíncronas.
  • O app do Chat é desenvolvido em qualquer linguagem de programação.
  • O app do Chat requer gerenciamento completo de DevOps e CI/CD.

O diagrama a seguir mostra a arquitetura de um app do Chat criado com o Pub/Sub:

Arquitetura de um app de chat implementado com o Pub/Sub.

No diagrama anterior, um usuário que interage com um app do Chat do Pub/Sub tem o seguinte fluxo de informações:

  1. Um usuário envia uma mensagem no Chat para um app do Chat, seja em uma mensagem direta ou em um espaço do Chat, ou um evento acontece em um espaço do Chat em que o app do Chat tem uma assinatura ativa.

  2. O Chat envia a mensagem para um tópico do Pub/Sub.

  3. Um servidor de aplicativos, que é um sistema na nuvem ou no local que contém a lógica do app do Chat, assina o tópico do Pub/Sub para receber a mensagem pelo firewall.

  4. Opcionalmente, o app do Chat pode chamar a API Chat para postar mensagens de forma assíncrona ou realizar outras operações.

Para começar, consulte Usar o Pub/Sub como um endpoint para o app do Chat.

Webhooks

É possível criar um app do Chat que só envie mensagens a um espaço específico do Chat usando chamadas para um URL de webhook do Chat. Essa arquitetura é recomendada para os seguintes casos de uso:

  • O app do Chat é implantado para sua equipe.
  • O app do Chat envia mensagens de um sistema externo para um único espaço do Chat.

Com essa arquitetura, o app do Chat é limitado a um espaço específico do Chat e não permite a interação do usuário, como mostrado no diagrama a seguir:

Arquitetura de webhooks de entrada para enviar mensagens assíncronas ao Chat.

No diagrama anterior, um app do Chat tem o seguinte fluxo de informações:

  1. A lógica do app de chat recebe informações de serviços externos de terceiros, como um sistema de gerenciamento de projetos ou uma ferramenta de criação de tíquetes.
  2. A lógica do app do Chat é hospedada em um sistema em nuvem ou no local que pode enviar mensagens usando um URL de webhook para um espaço específico do Chat.
  3. Os usuários podem receber mensagens do app do Chat nesse espaço específico do Chat, mas não conseguem interagir com o app do Chat.

Esse tipo de app do Chat não pode ser compartilhado em outros espaços do Chat ou com outras equipes nem publicado no Google Workspace Marketplace. Os webhooks de entrada são recomendados para os apps do Chat reportarem alertas ou status, ou para alguns tipos de prototipagem do app do Chat.

Para começar, consulte Enviar mensagens ao Chat com webhooks.

Apps Script

É possível criar a lógica do app do Chat inteiramente em JavaScript. O Google Apps Script é uma plataforma de desenvolvimento com pouco código para apps do Chat. O Apps Script processa o fluxo de autorização e os tokens do OAuth 2.0 para a autenticação do usuário. Você pode usar o Apps Script para criar apps públicos do Chat, mas isso não é recomendado devido às cotas e limites diários.

Essa arquitetura é recomendada para os seguintes casos de uso:

  • O app do Chat é implantado para sua equipe ou organização.
  • O app do Chat pode enviar e receber todos os padrões de mensagens, como enviar e receber mensagens síncronas, assíncronas e de um sistema externo.
  • O app do Chat requer gerenciamento simplificado de DevOps.

Essa arquitetura é útil para apps do Chat que também se integram a outros serviços do Google Workspace e do Google, como Planilhas Google, Apresentações Google, Google Agenda, Google Drive, Google Maps e YouTube, conforme mostrado no diagrama a seguir:

Arquitetura de um app de chat implementado com o Apps Script.

No diagrama anterior, um usuário que interage com um app do Chat do Apps Script tem o seguinte fluxo de informações:

  1. Um usuário envia uma mensagem para um app do Chat, seja em uma mensagem direta ou em um espaço do Chat.
  2. A lógica do app do Chat implementada no Apps Script, que fica no Google Cloud, recebe a mensagem.
  3. Opcionalmente, a lógica do app do Chat pode se integrar aos serviços do Google Workspace, como Agenda ou Planilhas, ou a outros Serviços do Google, como Google Maps ou YouTube.
  4. A lógica do app do Chat envia uma resposta de volta ao serviço do app do Chat no Chat.
  5. A resposta é entregue ao usuário.

Para começar, consulte Criar um app do Chat com o Apps Script.

AppSheet

Você pode criar um app do Chat compartilhado por domínio sem código usando o AppSheet. É possível simplificar o processo de desenvolvimento usando o modo de configuração automática e os modelos a seguir para criar ações comuns do app do Chat. No entanto, alguns recursos do app da Web do AppSheet não estão disponíveis nos apps do Chat.

Essa arquitetura é recomendada para os seguintes casos de uso:

  • O app do Chat é implantado para você e sua equipe.
  • O app do Chat pode enviar e receber mensagens síncronas, além de enviar mensagens assíncronas.
  • O app do Chat requer gerenciamento simplificado de DevOps.

O diagrama a seguir mostra a arquitetura de um app do Chat criado com o AppSheet:

Arquitetura de um app do Chat implementado com o AppSheet.

No diagrama anterior, um usuário interagindo com um app do Chat do AppSheet tem o seguinte fluxo de informações:

  1. Um usuário envia uma mensagem no Chat para um app do Chat, seja em uma mensagem direta ou em um espaço do Chat.
  2. A lógica do app do Chat implementada no AppSheet, que fica no Google Cloud, recebe a mensagem.
  3. A lógica do app do Chat pode se integrar aos serviços do Google Workspace, como Apps Script ou Planilhas Google.
  4. A lógica do app do Chat envia uma resposta de volta ao serviço do app do Chat no Chat.
  5. A resposta é entregue ao usuário.

Para começar, consulte Criar um app do Chat com o AppSheet.

Dialogflow

É possível criar um app do Chat com o Dialogflow, uma plataforma de linguagem natural para conversas automatizadas e respostas dinâmicas. Essa arquitetura é recomendada para os seguintes casos de uso:

  • O app do Chat pode enviar e receber mensagens síncronas.
  • O app do Chat usa o processamento de linguagem natural para responder e interagir com os usuários.

No diagrama a seguir, mostramos a arquitetura de um app do Chat criado com o Dialogflow:

Arquitetura de um app do Chat implementado com o Dialogflow.

No diagrama anterior, um usuário interagindo com um app do Dialogflow Chat tem o seguinte fluxo de informações:

  1. Um usuário envia uma mensagem no Chat para um app do Chat, seja em uma mensagem direta ou em um espaço do Chat.
  2. Um agente virtual do Dialogflow, que fica no Google Cloud, recebe e processa a mensagem para produzir uma resposta.
  3. Opcionalmente, usando um webhook do Dialogflow, o agente do Dialogflow pode interagir com serviços externos de terceiros, como um sistema de gerenciamento de projetos ou uma ferramenta de criação de tíquetes.
  4. O agente do Dialogflow envia uma resposta de volta ao serviço do app do Chat no Chat.
  5. A resposta é entregue ao espaço do Chat.

Para começar, consulte Criar um app do Dialogflow para o Google Chat.

Aplicativo ou script de linha de comando

É possível criar um aplicativo de linha de comando ou um script que envie mensagens para o Chat ou realize outras operações, como criar um espaço ou gerenciar os participantes de um espaço, sem permitir que os usuários invoquem ou respondam diretamente ao app do Chat no Chat. Essa arquitetura é recomendada para os seguintes casos de uso:

  • O app do Chat é desenvolvido em qualquer linguagem de programação.
  • O app do Chat só pode enviar mensagens assíncronas.

Veja a seguir a arquitetura apresentada pelo diagrama:

Arquitetura de um app de chat implementada com um aplicativo de linha de comando ou um script.

No diagrama anterior, o app do Chat tem o seguinte fluxo de informações:

  1. O app do Chat chama a API Chat para enviar uma mensagem ou realizar outra operação.
  2. O Chat executa a operação solicitada.
  3. Opcionalmente, o app do Chat imprime uma confirmação na CLI.

Implementação da lógica do app de chat

O Chat não restringe a maneira como você implementa a lógica do app do Chat. É possível criar um analisador de comandos de sintaxe fixa, usar bibliotecas ou serviços avançados de IA e processamento de linguagem, assinar e responder a eventos ou qualquer outra coisa adequada para suas metas específicas.

Processar interações do usuário

O app de chat pode receber e responder às interações do usuário de várias maneiras. Uma interação do usuário é qualquer ação que um usuário realiza para invocar ou interagir com um app do Chat.

Analisador de comando

Os apps do Chat orientados por comando examinam o payload dos eventos de interação com o app do Chat e extraem comandos e parâmetros desse conteúdo. Por exemplo, consulte Configurar comandos de barra para interagir com usuários do Chat.

Outra abordagem é tokenizar a mensagem, extrair o comando e fazer referência a um dicionário que mapeia comandos para as funções de gerenciador de cada comando.

Interface do usuário baseada em caixas de diálogo

Os apps baseados em caixas de diálogo respondem a eventos de interação com o app do Chat mostrando caixas de diálogo baseadas em cards em que o usuário pode interagir com o app do Chat, como preencher formulários ou solicitar ações.

Sempre que o usuário executa uma ação em uma caixa de diálogo, um novo evento de interação é enviado ao app do Chat, que pode responder atualizando a caixa de diálogo ou enviando uma mensagem.

Processamento de linguagem natural

Muitas implementações de apps de chat usam o processamento de linguagem natural (PLN) para determinar o que o usuário está pedindo. Há muitas maneiras de implementar o PLN, e você pode optar por implementá-lo como preferir.

É possível usar o PLN na implementação do aplicativo do Chat com o Dialogflow ES ou a integração do Dialogflow CX Chat, o que permite criar agentes virtuais para conversas automatizadas e respostas dinâmicas.

Enviar solicitações para o Chat de forma proativa

Os apps do Chat também podem enviar mensagens ou outras solicitações ao Chat, que não são acionadas por interações diretas do usuário nele. Em vez disso, esses apps do Chat podem ser acionados, por exemplo, por aplicativos de terceiros ou usando uma invocação de linha de comando de um usuário, mas os usuários não podem interagir com esses apps do Chat diretamente no Chat.

Os apps do Chat não interativos usam a API Chat para enviar mensagens ou outros tipos de solicitações para o Chat.

Padrões de conversa

Pense em como você quer que seu app do Chat interaja com os usuários. As seções a seguir descrevem os padrões de conversa que seu app do Chat pode implementar.

Chamada e resposta (síncrona)

Em um padrão síncrono de chamada e resposta, o app do Chat responde individualmente às mensagens dos usuários. Uma mensagem de um usuário para o app do Chat resulta em uma resposta do app do Chat, conforme mostrado no diagrama a seguir:

Arquitetura de uma mensagem síncrona.

No diagrama anterior, um usuário interagindo com um app do Chat tem o seguinte fluxo de informações:

  1. Um usuário envia uma mensagem síncrona para um app do Chat. Por exemplo, "Qual é minha próxima reunião?".
  2. O app do Chat envia uma mensagem síncrona ao usuário, por exemplo, "Dr. Silva às 2:30".

Para esse tipo de padrão de conversa, implemente uma arquitetura de app do Chat usando um serviço da Web, Pub/Sub, Apps Script, AppSheet ou Dialogflow.

Várias respostas (assíncronas)

O padrão de várias respostas pode incluir mensagens síncronas e assíncronas. Esse padrão é caracterizado pela comunicação bidirecional entre os usuários e o app do Chat, em que o app do Chat gera várias mensagens adicionais, conforme mostrado no diagrama a seguir:

Arquitetura de uma mensagem assíncrona.

No diagrama anterior, um usuário interagindo com um app do Chat tem o seguinte fluxo de informações:

  1. Um usuário envia uma mensagem síncrona para um app do Chat. Por exemplo, "Monitorar o tráfego".
  2. O app do Chat envia uma mensagem síncrona ao usuário para confirmar a solicitação. Por exemplo, "Monitoramento ativado".
  3. Posteriormente, o app do Chat envia uma ou mais mensagens assíncronas para o usuário chamando a API REST. Por exemplo, "Novo tráfego".
  4. O usuário envia outra mensagem síncrona para o app do Chat, por exemplo, "Ignorar tráfego".
  5. O app do Chat envia uma mensagem síncrona ao usuário para confirmar a solicitação. Por exemplo, "Monitoramento desativado".

Para esse tipo de padrão de conversa, é possível implementar uma arquitetura de app do Chat usando um serviço da Web, o Pub/Sub, o Apps Script ou o AppSheet.

Inscrever-se em eventos (assíncrona)

Em um padrão assíncrono orientado a eventos, o app do Chat se inscreve em eventos usando a API Google Workspace Events. Os eventos representam mudanças nos recursos do Chat, como quando uma nova mensagem é postada ou quando um usuário entra em um espaço. Os apps do Chat orientados a eventos examinam o payload do evento para conseguir dados sobre o recurso do Chat alterado e responder de acordo.

Os apps de chat podem se inscrever em vários tipos de eventos. Quando um app do Chat tem uma assinatura ativa, o Chat envia um evento quando algo relevante ocorre em um espaço do Chat. O app do Chat pode, opcionalmente, gerar qualquer número de respostas assíncronas, que ele envia de volta ao Chat usando a API Chat.

É possível usar esse tipo de lógica para atualizar sistemas externos, como um sistema de gerenciamento de tíquetes, ou enviar mensagens para um espaço do Chat de forma assíncrona. Por exemplo, enviando uma mensagem de boas-vindas quando um novo usuário entra em um espaço do Chat.

No diagrama a seguir, mostramos o padrão de conversação orientada por eventos:

Arquitetura de uma mensagem orientada a eventos.

No diagrama anterior, a interação entre o Chat e o app do Chat tem o seguinte fluxo de informações:

  1. o app do Chat se inscrever em um espaço do Google Chat;
  2. O espaço em que o app do Chat está inscrito muda.
  3. O app do Chat envia um evento a um tópico no Pub/Sub, que serve como o endpoint de notificação da assinatura. O evento contém dados sobre o que foi alterado no recurso.
  4. O app do Chat processa a mensagem do Pub/Sub que contém o evento e, se necessário, toma as medidas necessárias.

Para esse tipo de padrão de conversa, implemente uma arquitetura de app do Chat usando o Pub/Sub, um serviço da Web ou o Apps Script.

Para saber mais sobre como receber e responder a eventos, consulte Trabalhar com eventos de eventos do Google Chat.

Mensagem unidirecional de um app do Chat

Uma mensagem unidirecional de um padrão do app do Chat permite que um app do Chat envie mensagens assíncronas para um espaço do Chat, mas não permite que os usuários interajam diretamente com o app. Esse padrão não é conversacional ou interativo, mas pode ser útil para coisas como o relatório de alarme, conforme mostrado no diagrama a seguir:

Arquitetura de uma mensagem unidirecional.

No diagrama anterior, um usuário no mesmo espaço que o app do Chat tem o seguinte fluxo de informações:

  • O app do Chat envia uma mensagem assíncrona ao usuário chamando a API Chat ou postando em um URL do webhook. Por exemplo, "Alerta de estouro da fila".
  • Opcionalmente, o app do Chat envia outras mensagens assíncronas adicionais.

Para esse tipo de padrão de conversa, é possível implementar uma arquitetura de app do Chat usando um serviço da Web, um webhook, o Apps Script, o AppSheet, um aplicativo de linha de comando ou um script.

Mensagem unidirecional para um app do Chat

Uma mensagem unidirecional para um padrão de app do Chat permite que um usuário envie uma mensagem sem que o app do Chat responda enquanto ainda processa a solicitação. Embora essa arquitetura seja tecnicamente possível, isso resulta em uma experiência ruim para o usuário, e não recomendamos esse padrão.