Elige una arquitectura de app de Google Chat

En esta página, se describen los enfoques comunes de arquitectura de servicios que se usan para crear apps de Google Chat. Si tienes una app existente que deseas integrar en Google Chat, puedes usar o adaptar tu implementación existente. Si estás compilando una nueva app de Chat, esta página presenta información similar de diferentes maneras para ayudarte a elegir la arquitectura adecuada para tu caso de uso:

Descripción general por funciones y capacidades

En la siguiente tabla, se destacan las funciones y capacidades clave de las apps de chat y el estilo de arquitectura de servicio recomendado (). En algunos casos, es posible desarrollar otro estilo de arquitectura con estas funciones, pero no es tan adecuado para el caso de uso como otros estilos ().

Características y funciones

Servicio web o HTTP

Pub/Sub

Webhooks

Apps Script

AppSheet

Dialogflow

Secuencia de comandos

Público objetivo

Tu equipo

Tu organización

El público

Interactividad del usuario

Usa el procesamiento de lenguaje natural

Patrones de mensajería

Cómo enviar y recibir mensajes síncronos

Envía y recibe mensajes síncronos y asíncronos

Cómo enviar solo mensajes asíncronos

Cómo enviar mensajes desde un sistema externo a un solo espacio de Chat

Acceder a otros servicios y sistemas

Se integran con otros servicios de Google.

Cómo comunicarse detrás de un firewall

Consulta o suscríbete a eventos de Chat

Estilos de codificación y de implementación

Desarrollo sin código

Desarrollo con poco código

Desarrollo en el lenguaje de programación que elijas

DevOps simplificado

Administración completa de DevOps y CI/CD

Estilos de arquitectura de servicios

En esta sección, se describen algunos de los enfoques arquitectónicos más comunes que se usan para crear apps de Chat.

Servicio web o HTTP

Un servicio web o HTTP es la arquitectura más implementada porque proporciona la mayor flexibilidad para que los desarrolladores compilen apps de chat públicas. Esta arquitectura se recomienda para los siguientes casos de uso:

  • La app de Chat se implementa para el público en Google Workspace Marketplace.
  • La app de Chat puede enviar y recibir todos los patrones de mensajería: enviar y recibir mensajes síncronos, enviar mensajes asíncronos y enviar mensajes desde un sistema externo.
  • La app de Chat se desarrolla en cualquier lenguaje de programación.
  • La app de Chat requiere una administración completa de DevOps y CI/CD.
  • El servicio de la app de Chat se implementa en servidores en la nube o locales.

En este diseño, configuras Chat para que se integre con un servicio remoto a través de HTTP, como se muestra en el siguiente diagrama:

Arquitectura de una app de Chat que usa un servicio web en un servidor local

En el diagrama anterior, un usuario que interactúa con una app de chat HTTP tiene el siguiente flujo de información:

  1. Un usuario envía un mensaje en un espacio de Chat a una app de Chat.
  2. Se envía una solicitud HTTP a un servidor web que es un sistema local o en la nube que contiene la lógica de la app de Chat.
  3. De manera opcional, la lógica de la app de chat puede interactuar con servicios externos de terceros, como un sistema de administración de proyectos o una herramienta de generación de tickets.
  4. El servidor web envía una respuesta HTTP al servicio de la app de Chat en Chat.
  5. La respuesta se entrega al usuario.
  6. De manera opcional, la app de Chat puede llamar a la API de Chat para publicar mensajes de manera asíncrona o realizar otras operaciones.

Esta arquitectura te brinda la flexibilidad de usar bibliotecas y componentes existentes en tu sistema, ya que estas apps de chat se pueden diseñar con diferentes lenguajes de programación. Existen diferentes formas de implementar esta arquitectura. En Google Cloud, puedes usar Cloud Functions, Cloud Run y App Engine. Para comenzar, consulta Cómo compilar una app de Google Chat.

Pub/Sub

Si la app de Chat se implementa detrás de un firewall, Chat no puede realizar llamadas HTTP a ella. Un enfoque es usar Pub/Sub para permitir que la implementación de la app de Chat se suscriba a un tema que lleve mensajes de Chat. Pub/Sub es un servicio de mensajería asíncrona que separa los servicios que producen mensajes de los que los procesan. Esta arquitectura se recomienda para los siguientes casos de uso:

  • La app de Chat se compila detrás de un firewall.
  • La app de Chat recibe eventos sobre un espacio de Chat.
  • La app de Chat se implementa en tu organización.
  • La app de Chat puede enviar y recibir mensajes síncronos, así como mensajes asíncronos.
  • La app de Chat se desarrolla en cualquier lenguaje de programación.
  • La app de Chat requiere una administración completa de DevOps y CI/CD.

En el siguiente diagrama, se muestra la arquitectura de una app de chat compilada con Pub/Sub:

Arquitectura de una app de Chat implementada con Pub/Sub.

En el diagrama anterior, un usuario que interactúa con una app de chat de Pub/Sub tiene el siguiente flujo de información:

  1. Un usuario envía un mensaje en Chat a una app de Chat, ya sea en un mensaje directo o en un espacio de Chat, o bien se produce un evento en un espacio de Chat para el que la app de Chat tiene una suscripción activa.

  2. Chat envía el mensaje a un tema de Pub/Sub.

  3. Un servidor de aplicaciones, que es un sistema en las instalaciones o en la nube que contiene la lógica de la app de Chat, se suscribe al tema de Pub/Sub para recibir el mensaje a través del firewall.

  4. De manera opcional, la app de Chat puede llamar a la API de Chat para publicar mensajes de manera asíncrona o realizar otras operaciones.

Para comenzar, consulta Cómo usar Pub/Sub como extremo para tu app de Chat.

Webhooks

Puedes crear una app de Chat que solo pueda enviar mensajes a un espacio de Chat específico mediante llamadas a una URL de webhook de Chat. Esta arquitectura se recomienda para los siguientes casos de uso:

  • La app de Chat se implementa en tu equipo.
  • La app de Chat envía mensajes de un sistema externo a un solo espacio de Chat.

Con esta arquitectura, la app de Chat se limita a un espacio de Chat específico y no permite la interacción del usuario, como se muestra en el siguiente diagrama:

Arquitectura para webhooks entrantes para enviar mensajes asíncronos a Chat

En el diagrama anterior, una app de chat tiene el siguiente flujo de información:

  1. La lógica de la app de Chat recibe información de servicios externos de terceros, como un sistema de administración de proyectos o una herramienta de generación de tickets.
  2. La lógica de la app de Chat se aloja en un sistema local o en la nube que puede enviar mensajes mediante una URL de webhook a un espacio de Chat específico.
  3. Los usuarios pueden recibir mensajes de la app de Chat en ese espacio específico, pero no pueden interactuar con ella.

Este tipo de app de Chat no se puede compartir en otros espacios de Chat ni con otros equipos, y no se puede publicar en Google Workspace Marketplace. Se recomiendan los webhooks entrantes para que las apps de Chat informen alertas o estados, o para algunos tipos de prototipado de apps de Chat.

Para comenzar, consulta Cómo enviar mensajes a Chat con webhooks.

Apps Script

Puedes crear la lógica de tu app de Chat por completo en JavaScript. Google Apps Script es una plataforma de desarrollo de apps con poco código para Chat. Apps Script controla el flujo de autorización y los tokens de OAuth 2.0 para la autenticación de usuarios. Puedes usar Apps Script para compilar apps de Chat públicas, pero no se recomienda debido a las cuotas y los límites diarios.

Esta arquitectura se recomienda para los siguientes casos de uso:

  • La app de Chat se implementa en tu equipo o organización.
  • La app de Chat puede enviar y recibir todos los patrones de mensajería: enviar y recibir mensajes síncronos, enviar mensajes asíncronos y enviar mensajes desde un sistema externo.
  • La app de Chat requiere una administración de DevOps simplificada.

Esta arquitectura es útil para las apps de Chat que también se integran con otros servicios de Google Workspace y Google, como Hojas de cálculo de Google, Presentaciones de Google, Calendario de Google, Google Drive, Google Maps y YouTube, como se muestra en el siguiente diagrama:

Arquitectura de una app de Chat implementada con Apps Script.

En el diagrama anterior, un usuario que interactúa con una app de chat de Apps Script tiene el siguiente flujo de información:

  1. Un usuario envía un mensaje a una app de Chat, ya sea en un mensaje directo o en un espacio de Chat.
  2. La lógica de la app de Chat que se implementa en Apps Script, que reside en Google Cloud, recibe el mensaje.
  3. De manera opcional, la lógica de la app de Chat se puede integrar en los servicios de Google Workspace, como Calendario o Hojas de cálculo, o en otros servicios de Google, como Google Maps o YouTube.
  4. La lógica de la app de Chat envía una respuesta al servicio de la app de Chat en Chat.
  5. La respuesta se entrega al usuario.

Para comenzar, consulta Cómo compilar una app de Chat con Apps Script.

AppSheet

Puedes crear una app de Chat compartida con el dominio sin código con AppSheet. Puedes simplificar el proceso de desarrollo con el modo de configuración automática y seguir las plantillas para compilar acciones comunes de la app de Chat. Sin embargo, algunas funciones de la app web de AppSheet no están disponibles en las apps de Chat.

Esta arquitectura se recomienda para los siguientes casos de uso:

  • La app de Chat se implementa para ti y tu equipo.
  • La app de Chat puede enviar y recibir mensajes síncronos, así como mensajes asíncronos.
  • La app de Chat requiere una administración de DevOps simplificada.

En el siguiente diagrama, se muestra la arquitectura de una app de chat compilada con AppSheet:

Arquitectura de una app de chat implementada con AppSheet.

En el diagrama anterior, un usuario que interactúa con una app de chat de AppSheet tiene el siguiente flujo de información:

  1. Un usuario envía un mensaje en Chat a una app de Chat, ya sea en un mensaje directo o en un espacio de Chat.
  2. La lógica de la app de Chat que se implementa en AppSheet, que reside en Google Cloud, recibe el mensaje.
  3. De forma opcional, la lógica de la app de Chat puede integrarse con los servicios de Google Workspace, como Apps Script o Hojas de cálculo de Google.
  4. La lógica de la app de Chat envía una respuesta al servicio de la app de Chat en Chat.
  5. La respuesta se entrega al usuario.

Para comenzar, consulta Cómo compilar una app de Chat con AppSheet.

Dialogflow

Puedes crear una app de Chat con Dialogflow, una plataforma de lenguaje natural para conversaciones automatizadas y respuestas dinámicas. Esta arquitectura se recomienda para los siguientes casos de uso:

  • La app de Chat puede enviar y recibir mensajes síncronos.
  • La app de Chat usa el procesamiento de lenguaje natural para responder e interactuar con los usuarios.

En el siguiente diagrama, se muestra la arquitectura de una app de chat compilada con Dialogflow:

Arquitectura de una app de chat implementada con Dialogflow.

En el diagrama anterior, un usuario que interactúa con una app de chat de Dialogflow tiene el siguiente flujo de información:

  1. Un usuario envía un mensaje en Chat a una app de Chat, ya sea en un mensaje directo o en un espacio de Chat.
  2. Un agente virtual de Dialogflow, que reside en Google Cloud, recibe y procesa el mensaje para generar una respuesta.
  3. De forma opcional, con un webhook de Dialogflow, el agente de Dialogflow puede interactuar con servicios externos de terceros, como un sistema de administración de proyectos o una herramienta de generación de tickets.
  4. El agente de Dialogflow envía una respuesta al servicio de la app de Chat en Chat.
  5. La respuesta se entrega al espacio de Chat.

Para comenzar, consulta Cómo compilar una app de Google Chat de Dialogflow.

Aplicación o secuencia de comandos de línea de comandos

Puedes crear una aplicación de línea de comandos o una secuencia de comandos que envíe mensajes a Chat o realice otras operaciones, como crear un espacio o administrar a sus miembros, sin permitir que los usuarios invoquen o respondan directamente a la app de Chat en Chat. Esta arquitectura se recomienda para los siguientes casos de uso:

  • La app de Chat se desarrolla en cualquier lenguaje de programación.
  • La app de Chat solo puede enviar mensajes asíncronos.

En el siguiente diagrama, se muestra la arquitectura:

Arquitectura de una app de Chat implementada con una aplicación de línea de comandos o una secuencia de comandos.

En el diagrama anterior, la app de Chat tiene el siguiente flujo de información:

  1. La app de Chat llama a la API de Chat para enviar un mensaje o realizar otra operación.
  2. Chat ejecuta la operación solicitada.
  3. De manera opcional, la app de Chat imprime una confirmación en la CLI.

Implementación de la lógica de la app de chat

Chat no limita la forma en que implementas la lógica de la app de Chat. Puedes crear un analizador de comandos con sintaxis fija, usar bibliotecas o servicios avanzados de procesamiento de lenguaje y de IA, suscribirte y responder a eventos, o cualquier otra acción adecuada para tus objetivos específicos.

Cómo controlar las interacciones del usuario

La app de chat puede recibir y responder a las interacciones del usuario de varias maneras. Una interacción del usuario es cualquier acción que realiza un usuario para invocar o interactuar con una app de Chat.

Analizador de comandos

Las apps de Chat controladas por comandos examinan la carga útil de los eventos de interacción de la app de Chat y, luego, extraen comandos y parámetros de este contenido. Por ejemplo, consulta Cómo configurar comandos de barra para interactuar con los usuarios de Chat.

Otro enfoque es tokenizar el mensaje, extraer el comando y, luego, hacer referencia a un diccionario que asigne comandos a funciones de controlador para cada comando.

Interfaz de usuario basada en diálogos

Las apps basadas en diálogos responden a los eventos de interacción de la app de Chat mostrando diálogos basados en tarjetas en los que el usuario puede interactuar con la app de Chat, como completar formularios o solicitar acciones.

Cada vez que el usuario ejecuta una acción en un diálogo, se envía un nuevo evento de interacción a la app de Chat, que puede responder actualizando el diálogo o enviando un mensaje.

Procesamiento de lenguaje natural

Muchas implementaciones de apps de chat usan el procesamiento de lenguaje natural (PLN) para determinar lo que el usuario solicita. Existen muchas maneras de implementar la NLP, y puedes elegir la que prefieras.

Puedes usar la NLP en la implementación de tu app de Chat con Dialogflow ES o la integración de Chat de Dialogflow CX, que te permite crear agentes virtuales para conversaciones automatizadas y respuestas dinámicas.

Envía solicitudes de forma proactiva a Chat

Las apps de chat también pueden enviar mensajes o solicitudes a Chat, que no se activan por interacciones directas del usuario en Chat. En cambio, estas apps de Chat se pueden activar, por ejemplo, a través de aplicaciones de terceros o con una invocación de línea de comandos de un usuario, pero los usuarios no pueden interactuar con estas apps de Chat directamente en Chat.

Las apps de Chat no interactivas usan la API de Chat para enviar mensajes o otros tipos de solicitudes a Chat.

Patrones de conversación

Debes considerar cómo deseas que tu app de Chat interactúe con los usuarios. En las siguientes secciones, se describen los patrones de conversación que podría implementar tu app de Chat.

Llamada y respuesta (síncrona)

En un patrón de llamada y respuesta síncrono, la app de chat responde a los mensajes de los usuarios de forma individual. Un mensaje que envía un usuario a la app de Chat genera una respuesta de la app de Chat, como se muestra en el siguiente diagrama:

Arquitectura de un mensaje síncrono.

En el diagrama anterior, un usuario que interactúa con una app de chat tiene el siguiente flujo de información:

  1. Un usuario envía un mensaje síncrono a una app de chat, por ejemplo, "¿Cuál es mi próxima reunión?".
  2. La app de Chat envía un mensaje síncrono al usuario, por ejemplo, "Dr. Silva a las 2:30".

Para este tipo de patrón de conversación, puedes implementar una arquitectura de app de chat con un servicio web, Pub/Sub, Apps Script, AppSheet o Dialogflow.

Varias respuestas (asíncronas)

El patrón de varias respuestas puede incluir mensajes síncronos y asíncronos. Este patrón se caracteriza por la comunicación bidireccional entre los usuarios y la app de Chat, en la que la app de Chat genera cualquier cantidad de mensajes adicionales, como se muestra en el siguiente diagrama:

Arquitectura de un mensaje asíncrono.

En el diagrama anterior, un usuario que interactúa con una app de chat tiene el siguiente flujo de información:

  1. Un usuario envía un mensaje síncrono a una app de chat, por ejemplo, "Supervisa el tráfico".
  2. La app de Chat envía un mensaje síncrono al usuario para confirmar la solicitud, por ejemplo, “Supervisión activada”.
  3. Más adelante, la app de Chat envía uno o más mensajes asíncronos al usuario llamando a la API de REST, por ejemplo, "Tráfico nuevo".
  4. El usuario envía un mensaje síncrono adicional a la app de Chat, por ejemplo, "Ignorar tráfico".
  5. La app de Chat envía un mensaje síncrono al usuario para confirmar la solicitud, por ejemplo, "Supervisión desactivada".

Para este tipo de patrón de conversación, puedes implementar una arquitectura de app de chat con un servicio web, Pub/Sub, Apps Script o AppSheet.

Consulta o suscríbete a eventos (asíncrono)

En un patrón asíncrono basado en eventos, la app de Chat recibe eventos a través de una consulta a la API de Chat o la creación de una suscripción a un espacio o usuario de Chat con la API de Google Workspace Events. Los eventos representan cambios en los recursos de Chat, como cuando se publica un mensaje nuevo o cuando un usuario se une a un espacio. Las apps de Chat orientadas a eventos examinan la carga útil del evento para obtener datos sobre el recurso de Chat modificado y, luego, responden según corresponda.

Las apps de chat pueden recibir muchos tipos de eventos, incluidos los eventos sobre espacios, membresías, mensajes y reacciones. Cuando una app de Chat recibe un evento a través de una consulta a la API de Chat o mediante una suscripción activa, la app de Chat puede generar, de manera opcional, cualquier cantidad de respuestas asíncronas, que vuelve a enviar a Chat con la API de Chat.

Puedes usar este tipo de lógica para actualizar sistemas externos, como un sistema de administración de tickets, o enviar mensajes a un espacio de Chat de forma asíncrona, por ejemplo, enviando un mensaje de bienvenida cuando un usuario nuevo se une a un espacio de Chat.

En el siguiente diagrama, se muestra un ejemplo de un patrón de conversación basado en eventos:

Arquitectura de una suscripción a eventos de Chat

En el diagrama anterior, la interacción entre Chat y la app de Chat tiene el siguiente flujo de información:

  1. La app de Chat se suscribe a un espacio de Google Chat.
  2. Cambia el espacio al que se suscribió la app de Chat.
  3. La app de Chat entrega un evento a un tema en Pub/Sub, que funciona como el extremo de notificación para la suscripción. El evento contiene datos sobre lo que cambió en el recurso.
  4. La app de Chat procesa el mensaje de Pub/Sub que contiene el evento y, si es necesario, toma medidas.

Para este tipo de patrón de conversación, puedes implementar una arquitectura de app de chat con Pub/Sub, un servicio web o Apps Script.

Para obtener más información sobre cómo recibir y responder eventos, consulta Cómo trabajar con eventos de Google Chat.

Mensaje unidireccional desde una app de Chat

Un mensaje unidireccional de un patrón de app de Chat permite que una app de Chat envíe mensajes asíncronos a un espacio de Chat, pero no permite que los usuarios interactúen directamente con la app de Chat. Este patrón no es conversacional ni interactivo, pero puede ser útil para tareas como los informes de alarmas, como se muestra en el siguiente diagrama:

Arquitectura de un mensaje unidireccional.

En el diagrama anterior, un usuario en el mismo espacio que la app de Chat tiene el siguiente flujo de información:

  • La app de Chat envía un mensaje asíncrono al usuario llamando a la API de Chat o publicando en una URL de webhook, por ejemplo, "Alerta de desbordamiento de fila".
  • De forma opcional, la app de Chat envía mensajes asíncronos adicionales.

Para este tipo de patrón de conversación, puedes implementar una arquitectura de app de chat con un servicio web, un webhook, Apps Script, AppSheet, una aplicación de línea de comandos o una secuencia de comandos.

Mensaje unidireccional a una app de chat

Un mensaje unidireccional a un patrón de app de Chat permite que un usuario le envíe un mensaje a una app de Chat sin que esta responda mientras se procesa la solicitud. Si bien esta arquitectura es técnicamente posible, genera una experiencia del usuario deficiente, por lo que no recomendamos este patrón.