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 essa implementação. Se você estiver criando um novo app do Chat, esta página apresenta informações semelhantes de algumas maneiras diferentes para ajudar 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 dos apps do Chat e o estilo de arquitetura de serviço recomendado (). Em alguns casos, outro estilo de arquitetura pode ser desenvolvido com esses recursos, mas 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 mensagem

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 na linguagem de programação de sua escolha

DevOps simplificado

Gerenciamento completo de DevOps e CI/CD

Estilos de arquitetura de serviço

Nesta seção, descrevemos 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 implantada porque oferece mais 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: enviar e receber mensagens síncronas, assíncronas e enviar mensagens 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 na nuvem ou em servidores locais.

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 do Chat usando um serviço da Web em um servidor local.

No diagrama anterior, um usuário que interage com um app HTTP Chat 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 no local que contém a lógica do app do Chat.
  3. Opcionalmente, a lógica do app do 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. Outra opção é o app do Chat chamar a API Chat para postar mensagens de forma assíncrona ou realizar outras operações.

Essa arquitetura oferece flexibilidade para usar bibliotecas e componentes que já existem no seu sistema, já que os apps do Chat podem ser projetados com diferentes linguagens de programação. Há diferentes maneiras 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 inscrição em um tópico que transmita mensagens do Chat. O Pub/Sub é um serviço de mensagens assíncrona que separa 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 e 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 do 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 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, se inscreve no tópico Pub/Sub para receber a mensagem pelo firewall.

  4. Outra opção é o app do Chat 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ó possa enviar mensagens para 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 foi 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 fica 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 para webhooks de entrada enviarem 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 do Chat recebe informações de serviços externos de terceiros, como um sistema de gerenciamento de projetos ou uma ferramenta de tíquetes.
  2. A lógica do app do Chat é hospedada em um sistema na nuvem ou no local que pode enviar mensagens usando um URL do webhook para um espaço do Chat específico.
  3. 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.

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 informarem alertas ou status ou para alguns tipos de prototipagem de apps do Chat.

Para começar, consulte Enviar mensagens para o 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 autenticação do usuário. Você pode usar o Apps Script para criar apps públicos do Chat, mas isso não é recomendado devido a 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: enviar e receber mensagens síncronas, assíncronas e enviar mensagens de um sistema externo.
  • O app do Chat requer gerenciamento de DevOps simplificado.

Essa arquitetura é útil para apps de chat que também se integram a outros Serviços do Google e do Google Workspace, como Planilhas, Apresentações, 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 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 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

É possível criar um app do Chat compartilhado no 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 e assíncronas.
  • O app do Chat requer gerenciamento de DevOps simplificado.

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 que interage 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 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. Opcionalmente, a lógica do app do Chat pode se integrar aos serviços do Google Workspace, como o Apps Script ou as 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 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 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.

Veja no diagrama a seguir 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 que interage 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 em uma mensagem direta ou em um espaço do Chat.
  2. Um agente virtual do Dialogflow, localizado no Google Cloud, recebe e processa a mensagem para produzir uma resposta.
  3. Opcionalmente, a lógica do app do Chat pode interagir com serviços externos de terceiros, como um sistema de gerenciamento de projetos ou uma ferramenta 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 usuário.

Para começar, consulte Integração do Chat do Dialogflow ES ou Integração do CX Chat do 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 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 do Chat implementado 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 forma 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 a interações do usuário de várias maneiras. Uma interação é qualquer ação realizada por um usuário para invocar ou interagir com um app do Chat.

Analisador de comandos

Os apps do Chat orientados por comando examinam o payload dos eventos de interação do 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 os comandos para as funções do gerenciador para 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 no 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 implementá-lo como preferir.

Use o PLN na implementação do app do 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.

Emitir solicitações para o Chat de forma proativa.

Os apps de 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 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 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ção

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

Chamada e resposta (síncrona)

Em um padrão síncrono de chamadas e respostas, 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 que interage 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, "Quando é minha próxima reunião?".
  2. O app do Chat envia uma mensagem síncrona para o usuário, por exemplo, "Dr. Silva às 2h30".

Para esse tipo de padrão de conversa, implemente uma arquitetura de app do Chat usando um serviço da Web, o Pub/Sub, o Apps Script, o AppSheet ou o 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, com o app do Chat gerando quantas 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 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, "Monitoring ativado".
  3. Posteriormente, o app do Chat envia uma ou mais mensagens assíncronas ao usuário chamando a API REST. Por exemplo, "Novo tráfego".
  4. O usuário envia outra mensagem síncrona ao 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, implemente 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íncrono)

Em um padrão assíncrono baseado em eventos, o app do Chat se inscreve em eventos usando a API Google Workspace Events. Os apps do Chat orientados por eventos examinam o payload dos eventos de assinatura do Chat e respondem de acordo com o tipo de evento. Quando um evento acontece em um espaço do Chat em que o app do Chat tem uma assinatura ativa, o Chat envia o evento para o app Chat. O app do Chat pode gerar 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 a 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 orientada por eventos:

Arquitetura de uma mensagem orientada por 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 inscreve 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, executa ações.

Para esse tipo de padrão de conversação, é possível implementar uma arquitetura de app do Chat usando o Pub/Sub.

Mensagem unidirecional de um app do Chat

Uma mensagem unidirecional de um padrão de app do Chat permite que um app do Chat envie mensagens assíncronas a um espaço do Chat, mas não permita que os usuários interajam diretamente com o app do Chat. Esse padrão não é conversacional ou interativo, mas pode ser útil para coisas como relatórios 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, você pode 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 para um app do Chat 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 do usuário ruim. Não é recomendável usar esse padrão.