Arquitecturas de implementación de apps de chat

En este capítulo, encontrarás ayuda sobre la arquitectura de implementación que elijas para desarrollar 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 el mejor para tus apps.

Arquitectura de servicios

Google Chat admite la integración con la app, pero no implementa la lógica de la app. Esta lógica debe implementarse en tu código mediante las bibliotecas o los servicios que sean apropiados para tu app.

Dónde crear una instancia de tu código y cómo interactúa con Google Chat forman una arquitectura de servicio. A continuación, se describen las que se usan con mayor frecuencia.

Servicio web

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

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

De esta manera, la implementación puede usar las bibliotecas y los componentes existentes en tu sistema.

Cloud Pub/Sub

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

Arquitectura de una app implementada con Cloud Pub/Sub.

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

Apps Script

Puedes crear la lógica de tu app por completo en Apps Script. Esto es especialmente útil para las apps que también se integran a 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 de HTTP integrado en los servicios de Google Chat y Google Workspace se vería de la siguiente manera:

Arquitectura de una app implementada con un sistema local.

Puede ser mucho más sencillo, en especial en términos de autenticación, implementar este tipo de apps con Apps Script, con sus servicios integrados de Google Workspace 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 apps simples y únicas a fin de informar alertas o estados, o para algunos tipos de prototipado de apps.

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 simple, usar bibliotecas o servicios avanzados de IA y procesamiento de lenguaje, o bien cualquier otra opción adecuada para tus objetivos particulares.

Analizador de comandos

Las apps 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.

Un enfoque directo consiste en asignar tokens al mensaje, extraer el comando y, luego, hacer referencia a un diccionario que asigne comandos a funciones del controlador para cada comando.

Procesamiento de lenguaje natural

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

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 intent/acción.

Elige una arquitectura de servicio

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

Consideraciones generales

Hay varios factores que debes considerar cuando eliges una arquitectura de servicio. Cada uno de ellos se explica en las siguientes secciones. En la sección Tomar la decisión, podrás elegir una arquitectura basada en estos aspectos.

  • ¿A quién está dirigida la app?
  • ¿A qué recursos accederá la app?
  • ¿Qué patrones conversacionales implementarás?

Cada una de ellas se explica 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

Una aplicación puede tener una serie de públicos potenciales. Estos son algunos ejemplos:

  • Tu propia app personal
  • Solo unos pocos miembros de tu grupo de trabajo, nadie más
  • Instálalo en toda tu organización
  • Distribuirlo en Marketplace

Acceso a los recursos

Debes determinar a qué recursos deberá acceder tu app, que pueden incluir lo siguiente:

  • Recursos de Google Workspace
  • Otros sistemas y APIs de Google
  • Recursos externos (que no son de Google)

Patrones de conversación

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

Llamada y respuesta (síncronas)

En este patrón, la app responde a los mensajes de los usuarios de forma individual. Un mensaje del usuario a la app genera una respuesta de la app.

Arquitectura de un mensaje síncrono

Respuestas múltiples (asíncrono)

Este patrón se caracteriza por una comunicación bidireccional entre los usuarios y la app, que genera cualquier cantidad de mensajes adicionales. Por ejemplo, un usuario puede solicitar algo de una app (la app debe enviar una respuesta inicial para confirmar la solicitud) y, luego, 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

En ocasiones, es útil crear una app de Chat que inserte mensajes en un espacio, pero que no permita que los usuarios interactúen directamente con ella. Esto no es muy conversacional, pero puede ser útil para tareas como la generación de informes de alarmas.

Arquitectura de una app unidireccional

Ida solo a la app

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 generará una experiencia del usuario deficiente y no recomendamos esta práctica.

Toma la decisión

Entonces, ¿qué arquitectura de servicio deberías elegir para la implementación de tu app? Por supuesto, si ya tienes una app que quieres integrar en Google Chat, lo más probable es que quieras usar o adaptar tu implementación existente.

Si estás desarrollando una app nueva, en el siguiente diagrama, se muestran opciones de arquitectura sugeridas para varios casos de uso.

Elige una arquitectura basada en tu caso de uso.