Escolher uma arquitetura do app Google Chat

Esta página descreve 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 atual. Se você estiver criando um novo app de chat, esta página apresenta informações semelhantes de várias maneiras para ajudar a escolher a arquitetura adequada ao seu caso de uso:

Visão geral por recursos

A tabela a seguir destaca os principais recursos e recursos dos apps de chat e o estilo de arquitetura de serviço recomendado (). Em alguns casos, talvez seja 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 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 por trás de um firewall

Consultar ou se inscrever em eventos do Chat

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 que os desenvolvedores criem apps de chat públicos. Essa arquitetura é recomendada para os seguintes casos de uso:

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

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

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

No diagrama anterior, um usuário que interage com um app de 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 local ou em nuvem que contém a lógica do app de 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 emissão de tíquetes.
  4. O servidor da Web envia uma resposta HTTP de volta ao serviço do app Chat.
  5. A resposta é enviada ao usuário.
  6. Opcionalmente, o app de 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 seu sistema, porque esses apps de chat podem ser criados usando diferentes linguagens de programação. Há diferentes maneiras de implementar essa arquitetura. No Google Cloud, você pode usar o Cloud Functions, o Cloud Run e o App Engine. Para começar, consulte Criar um app do Google Chat.

Pub/Sub

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

  • O app do Chat é criado atrás de um firewall.
  • O app do Chat recebe eventos sobre um espaço do Chat.
  • O app do Chat é implantado na sua organização.
  • O app de chat pode enviar e receber mensagens síncronas e assíncronas.
  • O app Chat é desenvolvido em qualquer linguagem de programação.
  • O app de chat exige um gerenciamento completo de DevOps e CI/CD.

O diagrama a seguir mostra a arquitetura de um app de 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 de 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 local que contém a lógica do app Chat, assina o tópico do Pub/Sub para receber a mensagem pelo firewall.

  4. Opcionalmente, o app de 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 do app Chat.

Webhooks

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

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

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

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

No diagrama anterior, um app de 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 emissão de tíquetes.
  2. A lógica do app 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.
  3. Os usuários podem receber mensagens do app Chat nesse espaço específico, mas não podem interagir com ele.

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

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

Apps Script

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

Essa arquitetura é recomendada para os seguintes casos de uso:

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

Essa arquitetura é útil para apps de chat que também se integram a outros serviços do Google Workspace e do Google, como as Planilhas, Apresentações, Agenda, Drive, 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, em uma mensagem direta ou em um espaço do Chat.
  2. A lógica do app de chat implementada no Apps Script, que fica no Google Cloud, recebe a mensagem.
  3. Opcionalmente, a lógica do app de chat pode ser integrada a serviços do Google Workspace, como Agenda ou Planilhas, ou outros serviços do Google, como o Google Maps ou o YouTube.
  4. A lógica do app do Chat envia uma resposta de volta para o serviço do app do Chat.
  5. A resposta é enviada ao usuário.

Para começar, consulte Criar um app de chat com o Apps Script.

AppSheet

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

Essa arquitetura é recomendada para os seguintes casos de uso:

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

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

Arquitetura de um app de chat implementado com o AppSheet.

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

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

Para começar, consulte Criar um app de chat com o AppSheet.

Dialogflow

Você pode criar um app de 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 de chat pode enviar e receber mensagens síncronas.
  • O app de chat usa o processamento de linguagem natural para responder e interagir com os usuários.

O diagrama a seguir mostra a arquitetura de um app de chat criado com o Dialogflow:

Arquitetura de um app de chat implementado com o Dialogflow.

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

  1. Um usuário envia uma mensagem no Chat para um app do Chat, 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 emissão de passagens.
  4. O agente do Dialogflow envia uma resposta de volta para o serviço do app Chat.
  5. A resposta é enviada para o espaço do Chat.

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

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 membros de um espaço, sem permitir que os usuários invoquem ou respondam diretamente ao app do Chat. Essa arquitetura é recomendada para os seguintes casos de uso:

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

Veja a seguir a arquitetura apresentada pelo diagrama:

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

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

  1. O app de 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 Chat mostra 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 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 ele realiza para invocar ou interagir com um app de chat.

Parser de comando

Os apps de 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 os usuários do Chat.

Outra abordagem é tokenizar a mensagem, extrair o comando e, em seguida, referenciar um dicionário que mapeia comandos para funções de gerenciador de cada comando.

Interface do usuário baseada em diálogo

Os apps baseados em diálogos respondem a eventos de interação com o app Chat exibindo caixas de diálogo baseadas em cartões em que o usuário pode interagir com o app Chat, como preenchendo formulários ou solicitando 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 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 a NLP, e você pode escolher a que preferir.

Você pode usar a NLP na implementação do seu app de chat com o Dialogflow ES ou a integração do Dialogflow CX Chat, que permite criar agentes virtuais para conversas automatizadas e respostas dinâmicas.

Fazer solicitações ativas no Chat

Os apps de chat também podem enviar mensagens ou outras solicitações para o Chat, que não são acionadas por interações diretas do usuário no Chat. 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 diretamente no Chat.

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

Padrões de conversa

Considere como você quer que o app de chat interaja com os usuários. As seções a seguir descrevem os padrões de conversa que o app de chat pode implementar.

Chamada e resposta (síncrona)

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

Arquitetura de uma mensagem síncrona.

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

  1. Um usuário envia uma mensagem síncrona para um app de chat, por exemplo, "Qual é minha próxima reunião?".
  2. O app Chat envia uma mensagem síncrona para o usuário, por exemplo, "Dr. Silva às 14h30".

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

Várias respostas (assíncrona)

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 de chat, com o app de chat gerando qualquer número de mensagens adicionais, conforme mostrado no diagrama a seguir:

Arquitetura de uma mensagem assíncrona.

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

  1. Um usuário envia uma mensagem síncrona para um app de chat, por exemplo, "Monitorar tráfego".
  2. O app Chat envia uma mensagem síncrona ao usuário para confirmar a solicitação, por exemplo, "Monitoramento ativado".
  3. Mais tarde, o app de chat envia uma ou mais mensagens assinháticas 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 Chat, por exemplo, "Ignorar tráfego".
  5. O app 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 de chat usando um serviço da Web, o Pub/Sub, o Apps Script ou o AppSheet.

Consultar ou se inscrever em eventos (assíncrono)

Em um padrão assíncrono orientado a eventos, o app do Chat recebe eventos ao consultar a API Chat ou criar uma assinatura para um espaço ou usuário do Chat 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 de chat orientados a eventos examinam o payload do evento para receber dados sobre o recurso de chat alterado e responder de acordo.

Os apps de chat podem receber muitos tipos de eventos, incluindo eventos sobre espaços, assinaturas, mensagens e reações. Quando um app de chat recebe um evento ao consultar a API Chat ou por uma assinatura ativa, ele pode gerar opcionalmente qualquer número de respostas assíncronas, que são enviadas 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.

O diagrama a seguir mostra um exemplo de um padrão de conversa orientado a eventos:

Arquitetura de uma assinatura de eventos do Chat

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 inscreve em um espaço do Google Chat.
  2. O espaço em que o app do Chat está inscrito muda.
  3. O app Chat envia um evento para um tópico no Pub/Sub, que serve como o endpoint de notificação da assinatura. O evento contém dados sobre o que mudou no recurso.
  4. O app de chat processa a mensagem do Pub/Sub que contém o evento e, se necessário, toma medidas.

Para esse tipo de padrão de conversa, é possível implementar uma arquitetura de app de 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 do Google Chat.

Mensagem unilateral de um app de chat

Uma mensagem unidirecional de um padrão de 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 relatórios de alarme, conforme mostrado no diagrama abaixo:

Arquitetura de uma mensagem unidirecional.

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

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

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

Mensagem unilateral para um app de chat

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