En esta página, se describen los enfoques comunes de la arquitectura de servicios que se usan para crear apps de Google Chat. Si ya tienes una app que deseas integrar en Google Chat, puedes usar o adaptar tu implementación existente. Si estás compilando una nueva app de Chat, en esta página se presentará información similar de diferentes maneras para ayudarte a elegir la arquitectura adecuada para tu caso de uso:
- Consulta una tabla de descripción general.
- Consulta un resumen de cada diseño arquitectónico.
- Consulta un resumen de la lógica de la app de Chat.
- Consulta un resumen de los patrones conversacionales de la app de Chat.
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 características, 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 |
Script |
---|---|---|---|---|---|---|---|
Público objetivo |
|||||||
Tu equipo |
|||||||
Tu organización |
|||||||
El público |
|||||||
Interactividad del usuario |
|||||||
Usa procesamiento de lenguaje natural |
|||||||
Patrones de mensajes |
|||||||
Envía y recibe mensajes síncronos |
|||||||
Envía y recibe mensajes síncronos, y envía mensajes asíncronos |
|||||||
Envía solo mensajes asíncronos |
|||||||
Envía mensajes de un sistema externo a un solo espacio de Chat |
|||||||
Acceder a otros servicios y sistemas |
|||||||
Permiten la integración con otros servicios de Google |
|||||||
Cómo comunicarse detrás de un firewall |
|||||||
Suscríbete a eventos de Google Workspace |
|||||||
Estilos de implementación y programación |
|||||||
Desarrollo sin código |
|||||||
Desarrollo con poco código |
|||||||
Desarrollo en el lenguaje de programación que elijas |
|||||||
DevOps simplificados |
|||||||
Administración completa de DevOps y CI/CD |
Estilos de arquitectura de servicio
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 de HTTP es la arquitectura que se implementa con mayor frecuencia porque proporciona la mayor flexibilidad a los desarrolladores para compilar 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 locales o en la nube.
En este diseño, debes configurar Chat para que se integre a un servicio remoto mediante HTTP, como se muestra en el siguiente diagrama:
En el diagrama anterior, un usuario que interactúa con una app de Chat HTTP tiene el siguiente flujo de información:
- Un usuario envía un mensaje en un espacio de Chat a una app de Chat.
- 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.
- 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 tickets.
- El servidor web envía una respuesta HTTP al servicio de la app de Chat en Chat.
- La respuesta se entrega al usuario.
- De manera opcional, la app de Chat puede llamar a la API de Chat para publicar mensajes de forma asíncrona o realizar otras operaciones.
Esta arquitectura te brinda la flexibilidad de usar las bibliotecas y los 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 Compila una app de Google Chat con Cloud Functions.
Pub/Sub
Si la app de Chat se implementa detrás de un firewall, Chat no puede realizarle llamadas HTTP. Un enfoque es usar Pub/Sub para permitir que la implementación de la app de Chat se suscriba a un tema que contenga mensajes de Chat. Pub/Sub es un servicio de mensajería asíncrona que separa los servicios que producen mensajes de aquellos que los procesan. Esta arquitectura se recomienda para los siguientes casos de uso:
- La app de Chat está integrada detrás de un firewall.
- La app de Chat recibe eventos sobre un espacio de Chat.
- Se implementó la app de Chat 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:
En el diagrama anterior, un usuario que interactúa con una app de Chat de Pub/Sub tiene el siguiente flujo de información:
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 un evento ocurre en un espacio de Chat para el que la app de Chat tiene una suscripción activa.
Chat envía el mensaje a un tema de Pub/Sub.
Un servidor de aplicaciones, que es un sistema local 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.
De manera opcional, la app de Chat puede llamar a la API de Chat para publicar mensajes de forma asíncrona o realizar otras operaciones.
Para comenzar, consulta Usa 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:
- Se implementó la app de Chat en tu equipo.
- La app de Chat envía mensajes desde 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:
En el diagrama anterior, una app de Chat tiene el siguiente flujo de información:
- 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 tickets.
- 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.
- Los usuarios pueden recibir mensajes de la app de Chat en ese espacio de Chat específico, pero no pueden interactuar con la app de Chat.
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 Envía 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 con poco código para apps de Chat. Apps Script maneja el flujo de autorización y los tokens de OAuth 2.0 para la autenticación de usuarios. Puedes usar Apps Script a fin de compilar apps de Chat públicas, pero no se recomienda debido a las cuotas y 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 en 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:
En el diagrama anterior, un usuario que interactúa con una app de Chat de Apps Script tiene el siguiente flujo de información:
- Un usuario envía un mensaje a una app de Chat, ya sea en un mensaje directo o en un espacio de Chat.
- La lógica de la app de Chat que se implementa en Apps Script, que se encuentra en Google Cloud, recibe el mensaje.
- 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 bien otros servicios de Google, como Google Maps o YouTube.
- La lógica de la app de Chat envía una respuesta al servicio de la app de Chat en Chat.
- 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 de dominio compartido sin código mediante AppSheet. Puedes simplificar el proceso de desarrollo con el modo de configuración automática y las plantillas siguientes para compilar acciones comunes de la app de Chat. Sin embargo, algunas funciones de la aplicación 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:
En el diagrama anterior, un usuario que interactúa con una app de Chat de AppSheet tiene el siguiente flujo de información:
- 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.
- La lógica de la app de Chat que se implementa en AppSheet, que reside en Google Cloud, recibe el mensaje.
- De manera opcional, la lógica de la app de Chat se puede integrar en los servicios de Google Workspace, como Hojas de cálculo de Google o Apps Script.
- La lógica de la app de Chat envía una respuesta al servicio de la app de Chat en Chat.
- La respuesta se entrega al usuario.
Para comenzar, consulta Compila una app de chat con AppSheet.
Dialogflow
Puedes crear una app de chat con Dialogflow, una plataforma de lenguaje natural para conversaciones automáticas 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:
En el diagrama anterior, un usuario que interactúa con una app de Chat de Dialogflow tiene el siguiente flujo de información:
- 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.
- Un agente virtual de Dialogflow, que reside en Google Cloud, recibe y procesa el mensaje para producir una respuesta.
- 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 tickets.
- El agente de Dialogflow envía una respuesta al servicio de la app de Chat en Chat.
- La respuesta se entrega al usuario.
Para comenzar, consulta Integración de chat de Dialogflow ES o Integración de chat de Dialogflow CX.
Aplicación de la línea de comandos o secuencia 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 los miembros de un espacio, sin permitir que los usuarios invoquen o respondan directamente a la app de Chat en Chat. Se recomienda esta arquitectura 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:
En el diagrama anterior, la app de Chat tiene el siguiente flujo de información:
- La app de Chat llama a la API de Chat para enviar un mensaje o realizar otra operación.
- Chat ejecuta la operación solicitada.
- 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 restringe la forma en que implementas la lógica de la app de Chat. Puedes crear un analizador de comandos de sintaxis fija, usar bibliotecas o servicios avanzados de IA y procesamiento de lenguaje, suscribirte a eventos y responder a ellos, o cualquier otra opción adecuada para tus objetivos particulares.
Cómo controlar las interacciones del usuario
La app de Chat puede recibir y responder interacciones del usuario de varias maneras. Una interacción del usuario es cualquier acción que un usuario realiza para invocar una app de Chat o interactuar con ella.
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 los comandos y parámetros de este contenido. Por ejemplo, consulta Configura comandos de barra para interactuar con usuarios de Chat.
Otro enfoque es asignar tokens al mensaje, extraer el comando y, luego, hacer referencia a un diccionario que asigne comandos a funciones del controlador para cada comando.
Interfaz de usuario basada en diálogos
Las apps basadas en diálogos responden a los eventos de interacción con la app de Chat con 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 formas de implementar el PLN, pero puedes elegir hacerlo como prefieras.
Puedes usar el PLN 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 automáticas y respuestas dinámicas.
Emitir solicitudes a Chat de forma proactiva
Las apps de Chat también pueden enviar mensajes y otras solicitudes a Chat, que no se activan mediante interacciones directas de los usuarios en Chat. En su lugar, estas apps de Chat se pueden activar, por ejemplo, mediante aplicaciones de terceros o mediante la invocación de la línea de comandos de un usuario, pero los usuarios no pueden interactuar con estas apps de Chat directamente en Chat.
Las apps no interactivas de Chat usan la API de Chat para enviar mensajes y otros tipos de solicitudes a Chat.
Patrones de conversación
Debes considerar cómo quieres que tu app de Chat interactúe con los usuarios. En las siguientes secciones, se describen los patrones de conversación que tu app de Chat puede implementar.
Llamada y respuesta (síncronas)
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 enviado por un usuario a la app de Chat genera una respuesta de la app de Chat, como se muestra en el siguiente diagrama:
En el diagrama anterior, un usuario que interactúa con una app de Chat tiene el siguiente flujo de información:
- Un usuario envía un mensaje síncrono a una app de Chat, por ejemplo, “¿Cuál es mi próxima reunión?”.
- 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 mediante un servicio web, Pub/Sub, Apps Script, AppSheet o Dialogflow.
Respuestas múltiples (asíncrono)
El patrón de respuestas múltiples puede incluir mensajes síncronos y asíncronos. Este patrón se caracteriza por una comunicación bidireccional entre los usuarios y la app de Chat, y esta genera cualquier cantidad de mensajes adicionales, como se muestra en el siguiente diagrama:
En el diagrama anterior, un usuario que interactúa con una app de Chat tiene el siguiente flujo de información:
- Un usuario envía un mensaje síncrono a una app de Chat, por ejemplo, “Supervisar el tráfico”.
- La app de Chat envía un mensaje síncrono al usuario para confirmar la solicitud, por ejemplo, “Supervisión activada”.
- Luego, la app de Chat envía uno o más mensajes asíncronos al usuario mediante una llamada a la API de REST, por ejemplo, “Tráfico nuevo”.
- El usuario envía un mensaje síncrono adicional a la app de Chat, por ejemplo, "Ignorar tráfico".
- 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 mediante un servicio web, Pub/Sub, Apps Script o AppSheet.
Suscribirse a eventos (asíncrono)
En un patrón asíncrono controlado por eventos, la app de Chat se suscribe a los eventos mediante la API de Eventos de Google Workspace. Las apps de chat controladas por eventos examinan la carga útil de los eventos de suscripción de Chat y, luego, responden en función del tipo de evento. Cuando se produce un evento en un espacio de Chat, para el que la app de Chat tiene una suscripción activa, Chat envía el evento a esa app. Esta app puede generar, de manera opcional, la cantidad de respuestas asíncronas que desees, y las envía a Chat mediante 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, con un mensaje de bienvenida cuando un usuario nuevo se une a un espacio de Chat.
En el siguiente diagrama, se muestra el patrón conversacional controlado por eventos:
En el diagrama anterior, la interacción entre Chat y la app de Chat tiene el siguiente flujo de información:
- La app de Chat se suscribe a un espacio de Google Chat.
- Cambia el espacio al que está suscrita la app de Chat.
- La app de Chat entrega un evento a un tema en Pub/Sub, que sirve como extremo de notificación para la suscripción. El evento contiene datos sobre lo que cambió en el recurso.
- 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 mediante Pub/Sub.
Mensaje unidireccional desde una app de Chat
Un mensaje unidireccional de un patrón de la 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 ella. 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:
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 mediante una llamada a la API de Chat o una publicación en una URL de webhook, por ejemplo, “Alerta de desbordamiento de cola”.
- De manera 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 mediante 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 dirigido a un patrón de app de Chat permite que un usuario 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, esto genera una mala experiencia del usuario, y no recomendamos este patrón.
Temas relacionados
- Compila una app de Google Chat con Cloud Functions
- Usa Pub/Sub como extremo para tu app de Chat
- Envía mensajes a Chat con webhooks entrantes
- Compila una app de Chat con Apps Script
- Envía un mensaje de Chat desde una automatización con AppSheet
- Integración de chat con Dialogflow ES
- Integración de chat con Dialogflow CX.