Arquitecturas de implementación de apps de chat

Este capítulo te ayuda a elegir la arquitectura de implementación cuando desarrollas una app de Google Chat.

Estilos de arquitectura

En esta sección, se describen algunos de los enfoques arquitectónicos más comunes que se usan para crear apps. Consulta Elige una arquitectura de servicio a fin de obtener ayuda para decidir qué enfoque es mejor para tus apps.

Arquitectura de servicios

Google Chat admite la integración con la app, pero no implementa la lógica correspondiente. Esta lógica debe implementarse en el código mediante cualquier biblioteca o servicio apropiado para la app.

Dónde crear una instancia de tu código y cómo interactúa con Google Chat, forman una arquitectura de servicio. Las más usadas se describen a continuación.

Servicio web

Una de las formas más comunes en que se implementan las apps es mediante un servicio web o cualquier otra implementación HTTP en servidores locales. En este diseño, configurarás Google Chat para que se integre con un servicio remoto a través de HTTP:

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

Esto permite que la implementación use bibliotecas y componentes existentes que ya existen en tu sistema.

Cloud Pub/Sub

Si las implementaciones de la app se encuentran detrás de un firewall, es posible que Google Chat no pueda realizar llamadas HTTP a él. Un enfoque para resolver esto es usar Google Cloud Pub/Sub, es decir, la implementación de la app se suscribe a un tema que transporta mensajes de Google Chat:

Arquitectura de una app implementada con Cloud Pub/Sub.

En esta disposición, la implementación de la app aún debe usar HTTP para enviar mensajes a Google Chat.

Apps Script

Puede crear la lógica de su aplicación completamente en Apps Script. Esto es muy útil para las apps que también se integran en los servicios de Google Workspace. Las apps como esta pueden leer y escribir datos con Hojas de cálculo de Google, Presentaciones, Calendario, Drive, etcétera.

Arquitectura de una app implementada con Apps Script.

Considera cómo se vería una implementación no implementada en Apps Script. El bot HTTP integrado con los servicios de Google Chat y Google Workspace se vería así:

Arquitectura de una app implementada con un sistema local.

Puede ser mucho más fácil, especialmente en términos de autenticación, implementar una app de este tipo mediante Apps Script, con sus servicios de Google Workspace integrados y su modelo de autenticación implícito.

webhooks entrantes

Puedes crear una app que solo inserte mensajes en un espacio de chat mediante llamadas a la API de Google Chat. Este enfoque está “codificado” para un espacio de chat específico y no permite la interacción del usuario. Además, este tipo de app no se puede compartir ni publicar.

Los webhooks entrantes son más adecuados para aplicaciones simples y únicas a fin de informar alertas o estados, o para algunos tipos de prototipado de aplicaciones.

Implementación de la lógica de la app

Google Chat no restringe la forma en que implementas la lógica de tu app. Puedes crear un analizador de comandos de sintaxis fija y sintáctica, usar bibliotecas o servicios avanzados de IA y procesamiento de lenguaje, o cualquier otro elemento adecuado para tus objetivos particulares.

Analizador de comandos

Las apps basadas en comandos examinan el contenido de los mensajes de los eventos provenientes de Google Chat y, luego, extraen comandos y parámetros de ese contenido.

Un enfoque directo es la asignación de token al mensaje, extraer el comando y, luego, hacer referencia a un diccionario que asigne comandos a las funciones del controlador para cada comando.

Procesamiento de lenguaje natural

Muchas implementaciones de aplicaciones usan procesamiento de lenguaje natural (PLN) para determinar lo que solicita el usuario. Hay muchas formas de implementar la PLN, y a Google Chat no le importa cuál usar.

Un servicio potente y popular que puedes usar en la implementación de tu app es Dialogflow, que te permite crear agentes inteligentes mediante un modelo de intents o acciones.

Elige una arquitectura de servicio

Esta sección te guiará a medida que elijas una arquitectura de servicio para tu app.

Consideraciones generales

Hay una serie de factores que debes tener en cuenta cuando eliges una arquitectura de servicio. Estos se explican en las siguientes secciones. La sección Tomar la decisión te ayuda a elegir una arquitectura basada en estos aspectos.

  • ¿A quién está dirigida la aplicación?
  • ¿A qué recursos accederá la app?
  • ¿Qué patrones de conversación implementarás?

Estos se explican en las siguientes secciones. La sección Tomar la decisión te ayuda a elegir una arquitectura basada en estos aspectos.

El público de la app

Existe una cantidad de públicos potenciales que puede tener una aplicación. Estos son algunos ejemplos:

  • Tu propia app personal
  • Solo algunas personas de tu grupo de trabajo, nadie más
  • Instálalo en toda la organización
  • Distribuir en Marketplace

Acceso a los recursos

Debes determinar los recursos a los que deberá acceder tu app, como los siguientes:

  • Recursos de Google Workspace
  • Otros sistemas y API de Google
  • Recursos externos (ajenos a Google)

Patrones de conversación

También debe considerar cómo desea que su aplicación interactúe con las personas. En los siguientes párrafos, se describen algunos patrones de conversación que podría implementar tu app.

Llamada y respuesta (síncrona)

En este patrón, la app responde a los mensajes de los usuarios uno a uno. Un mensaje de usuario para la aplicación da como resultado una respuesta de la aplicación.

Arquitectura de un mensaje síncrono

Varias respuestas (asíncronas)

Este patrón se caracteriza por la comunicación bidireccional entre los usuarios y la app, por lo que esta genera cualquier cantidad de mensajes adicionales. Por ejemplo, un usuario podría solicitar algo a una app (la app debería enviar una respuesta inicial para confirmar la solicitud) y, luego, la app envía uno o más mensajes al espacio donde se originó la solicitud.

Arquitectura de un mensaje asíncrono

Ida solo desde la app

A veces, es útil crear una app que inserte mensajes en un espacio, pero nunca reciba eventos de los usuarios. No es muy coloquial, pero puede ser útil para informes como la alarma.

Arquitectura de una app unidireccional.

Ida solo a la aplicación

Si bien es posible crear una app que solo reciba y procese mensajes sin proporcionar ninguna respuesta o mensaje a las personas que la usan, esto da como resultado una experiencia del usuario deficiente, y no recomendamos esta práctica.

Tomar la decisión

Entonces, ¿qué arquitectura de servicio debería elegir para la implementación de su aplicación? Por supuesto, si tienes una app existente que deseas integrar en Google Chat, es probable que quieras usar o adaptar tu implementación existente.

Si estás desarrollando una app nueva, en el siguiente diagrama se muestran sugerencias de arquitectura para varios casos prácticos.

Elige una arquitectura según tu caso práctico.