Nesta página, descrevemos abordagens comuns de arquitetura de serviços usadas para criar apps do Google Chat. Se você já tem um app que quer integrar ao Google Chat, use ou adapte a implementação atual. 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 certa para seu caso de uso:
- Consulte uma tabela de visão geral.
- Confira um resumo de cada estilo de arquitetura.
- Confira um resumo da lógica do app Chat.
- Confira um resumo dos padrões de conversa do app de chat.
Visão geral por recursos e capacidades
A tabela a seguir destaca os principais recursos e funcionalidades dos apps de 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 ao 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 por trás de um firewall |
|||||||
Consultar ou se inscrever em eventos do Chat |
|||||||
Estilos de codificaçã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 arquitetônicas mais comuns usadas para criar apps do Chat.
Serviço da Web ou HTTP
Um serviço HTTP ou da Web é a arquitetura mais implantada porque oferece mais flexibilidade para os desenvolvedores criarem apps de chat públicos. Essa arquitetura é recomendada para os seguintes casos de uso:
- O app do 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 Chat exige gerenciamento completo de DevOps e CI/CD.
- O serviço do app Chat é implementado em servidores na nuvem ou locais.
Neste projeto, você configura o Chat para se integrar a um serviço remoto usando HTTP, conforme mostrado no diagrama a seguir:
No diagrama anterior, um usuário que interage com um app de chat HTTP tem o seguinte fluxo de informações:
- Um usuário envia uma mensagem em um espaço do Chat para um app do Chat.
- Uma solicitação HTTP é enviada a um servidor da Web, que é um sistema na nuvem ou local que contém a lógica do app Chat.
- Opcionalmente, a lógica do app 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.
- O servidor da Web envia uma resposta HTTP de volta ao serviço do app Chat no Chat.
- A resposta é enviada ao usuário.
- Opcionalmente, o app 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 atuais que já existem no seu sistema, porque esses apps de chat podem ser projetados 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 atrás de um firewall, ele não poderá fazer chamadas HTTP para ele. Uma abordagem é usar o Pub/Sub para permitir que a implementação do app Chat se inscreva em um tópico que carrega 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 Chat recebe eventos sobre um espaço do Chat.
- O app Chat é implantado na sua organização.
- O app Chat pode enviar e receber mensagens síncronas e enviar mensagens assíncronas.
- O app Chat é desenvolvido em qualquer linguagem de programação.
- O app Chat exige gerenciamento completo de DevOps e CI/CD.
O diagrama a seguir mostra a arquitetura de um app de chat criado com o Pub/Sub:
No diagrama anterior, um usuário interagindo com um app de chat do Pub/Sub tem o seguinte fluxo de informações:
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 para o qual o app tem uma assinatura ativa.
O Chat envia a mensagem para um tópico do Pub/Sub.
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.
Opcionalmente, o app 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 seu app do Chat.
Webhooks
Você pode criar um app do Chat que só envia 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 Chat é implantado na sua equipe.
- O app 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, conforme mostrado no diagrama a seguir:
No diagrama anterior, um app de chat tem o seguinte fluxo de informações:
- A lógica do app 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.
- 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.
- Os usuários podem receber mensagens do app Chat no espaço específico, mas não podem interagir com ele.
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 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
Você pode criar a lógica do seu app Chat totalmente em JavaScript. O Google Apps Script é uma plataforma de desenvolvimento com poucos códigos 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 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 Chat é implantado na sua equipe ou organização.
- 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 exige 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, Apresentações, Agenda, Drive, Maps e YouTube, conforme mostrado no diagrama a seguir:
No diagrama anterior, um usuário que interage com um app do Chat do Apps Script tem o seguinte fluxo de informações:
- Um usuário envia uma mensagem para um app do Chat em uma mensagem direta ou em um espaço do Chat.
- A lógica do app Chat implementada no Apps Script, que reside no Google Cloud, recebe a mensagem.
- Opcionalmente, a lógica do app Chat pode ser integrada aos serviços do Google Workspace, como Agenda ou Planilhas, ou a outros Serviços do Google, como Maps ou YouTube.
- A lógica do app Chat envia uma resposta de volta para o serviço do app Chat no Chat.
- A resposta é enviada 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 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 seguindo modelos para criar ações comuns de apps de chat. No entanto, alguns recursos do web app do AppSheet não estão disponíveis nos apps de chat.
Essa arquitetura é recomendada para os seguintes casos de uso:
- O app Chat é implantado para você e sua equipe.
- O app Chat pode enviar e receber mensagens síncronas e enviar mensagens assíncronas.
- O app Chat exige gerenciamento simplificado de DevOps.
O diagrama a seguir mostra a arquitetura de um app de chat criado com o AppSheet:
No diagrama anterior, um usuário interagindo com um app de chat do AppSheet tem o seguinte fluxo de informações:
- Um usuário envia uma mensagem no Chat para um app do Chat, em uma mensagem direta ou em um espaço do Chat.
- A lógica do app do Chat implementada no AppSheet, que fica no Google Cloud, recebe a mensagem.
- Opcionalmente, a lógica do app Chat pode ser integrada aos serviços do Google Workspace, como um Apps Script ou o Google Sheets.
- A lógica do app Chat envia uma resposta de volta para o serviço do app Chat no Chat.
- A resposta é enviada ao usuário.
Para começar, consulte Criar um app do Chat com o AppSheet.
Dialogflow
Você pode 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 Chat pode enviar e receber mensagens síncronas.
- O app 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:
No diagrama anterior, um usuário interagindo com um app de chat do Dialogflow tem o seguinte fluxo de informações:
- Um usuário envia uma mensagem no Chat para um app do Chat, em uma mensagem direta ou em um espaço do Chat.
- Um agente virtual do Dialogflow, que reside no Google Cloud, recebe e processa a mensagem para produzir uma resposta.
- Como opção, 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 tíquetes.
- O agente do Dialogflow envia uma resposta de volta para o serviço do app Chat.
- 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
Você pode 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 dele, 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 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:
No diagrama anterior, o app Chat tem o seguinte fluxo de informações:
- O app Chat chama a API Chat para enviar uma mensagem ou realizar outra operação.
- O chat executa a operação solicitada.
- Opcionalmente, o app 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. É 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 às suas metas específicas.
Processar interações do usuário
Um app de chat pode interagir com os usuários de várias maneiras. Uma interação do usuário é qualquer ação que ele realiza para invocar ou interagir com um app do Chat.
Analisador de comandos
Os apps do Chat orientados por comandos examinam a carga útil dos eventos de interação do app do Chat e extraem comandos e parâmetros desse conteúdo. Por exemplo, consulte Responder a comandos do app Google Chat.
Outra abordagem é tokenizar a mensagem, extrair o comando e referenciar um dicionário que mapeia comandos para funções de manipulador.
Interface do usuário baseada em caixa de diálogo
Os apps baseados em caixas de diálogo respondem a eventos de interação do app Chat mostrando caixas de diálogo baseadas em cards em que o usuário pode interagir com o app 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 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 PNL, e você pode escolher a que preferir.
Você pode usar o PNL na implementação do seu app de chat com o Dialogflow ES ou a integração do chat do Dialogflow CX, que permite criar agentes virtuais para conversas automatizadas e respostas dinâmicas.
Emitir solicitações de forma proativa para o 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. No entanto, 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 ao Chat.
Padrões de conversa
Considere como você quer que seu 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.
Call and response (síncrono)
Em um padrão de chamada e resposta síncrono, o app Chat responde às mensagens dos usuários de forma individual. Uma mensagem enviada por um usuário ao app Chat resulta em uma resposta do app, conforme mostrado no diagrama a seguir:
No diagrama anterior, um usuário interagindo com um app de chat tem o seguinte fluxo de informações:
- Um usuário envia uma mensagem síncrona para um app do Chat, por exemplo, "Qual é minha próxima reunião?".
- 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, 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, com o app do Chat gerando qualquer número de mensagens adicionais, conforme mostrado no diagrama a seguir:
No diagrama anterior, um usuário interagindo com um app de chat tem o seguinte fluxo de informações:
- Um usuário envia uma mensagem síncrona para um app de chat, por exemplo, "Monitorar o trânsito".
- O app Chat envia uma mensagem síncrona ao usuário para confirmar a solicitação, por exemplo, "Monitoramento ativado".
- Depois, o app Chat envia uma ou mais mensagens assíncronas para o usuário chamando a API REST. Por exemplo, "Novo trânsito".
- O usuário envia outra mensagem síncrona para o app de chat, por exemplo, "Ignorar trânsito".
- 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íncronos)
Em um padrão assíncrono orientado a eventos, o app do Chat recebe eventos consultando a API Chat ou criando uma assinatura de 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 do Chat orientados a eventos analisam o payload do evento para receber dados sobre o recurso do Chat alterado e respondem 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 qualquer número de respostas assíncronas, que são enviadas de volta ao Chat usando a API Chat.
Você pode 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 padrão de conversa orientado a eventos:
No diagrama anterior, a interação entre o Chat e o app Chat tem o seguinte fluxo de informações:
- O app do Chat assina um espaço do Google Chat.
- O espaço a que o app do Chat está inscrito muda.
- O app 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 mudou no recurso.
- O app 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 unidirecional 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 do Chat. Esse padrão não é conversacional nem interativo, mas pode ser útil para coisas como relatórios de alarmes, conforme mostrado no diagrama a seguir:
No diagrama anterior, um usuário no mesmo espaço que o app Chat tem o seguinte fluxo de informações:
- O app 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 de 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, o Apps Script, o AppSheet, um aplicativo de linha de comando ou um script.
Mensagem unidirecional para um app de 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 ele responda enquanto ainda processa a solicitação. Embora essa arquitetura seja tecnicamente possível, ela resulta em uma experiência do usuário ruim, e não recomendamos esse padrão.
Temas relacionados
- Criar um app do Google Chat
- Usar o Pub/Sub como um endpoint para seu app do Chat
- Enviar mensagens para o Chat com webhooks de entrada
- Criar um app do Chat com o Apps Script
- Enviar uma mensagem do Chat de uma automação usando o AppSheet
- Integração do chat do Dialogflow ES
- Integração do chat do Dialogflow CX.