En este documento, se describe una arquitectura de referencia para compilar apps interactivas de Google Chat para SAP con la edición local o cualquier edición en la nube del SDK de ABAP para Google Cloud. Con las apps interactivas de Chat, además de recibir notificaciones, los usuarios pueden realizar acciones en los flujos de trabajo de SAP, como aprobar o rechazar solicitudes, directamente en su cuenta de Google Workspace.
El público objetivo de este documento incluye a desarrolladores de ABAP, arquitectos de soluciones de SAP y arquitectos de nube. En este documento, se da por sentado que estás familiarizado con las apps de Chat disponibles en Google Workspace.
Arquitectura
En el siguiente diagrama, se muestra una arquitectura de referencia para implementar apps de chat interactivas para SAP:
Esta arquitectura de referencia incluye los siguientes componentes:
# | Componente | Detalles |
---|---|---|
1 | Procesos o transacciones de SAP | Cualquier proceso o transacción de SAP que necesite enviar mensajes a los usuarios. Es el punto de partida para activar la comunicación a través de Google Chat. |
2 | SDK ABAP para Google Cloud | Actúa como un puente entre los sistemas SAP y Google Cloud, lo que permite una comunicación HTTPS segura con la API de Google Chat. |
3 | Proyecto de la app de Google Chat | El proyecto de Google Cloud en el que habilitaste la API de Google Chat y configuraste tu app de Chat. |
4 | espacio de Chat | Es una sala exclusiva en Google Chat en la que tu sistema SAP puede comunicarse con los usuarios. Las apps de Chat residen en este espacio y proporcionan un flujo de información en tiempo real de tus sistemas SAP a través de la API de Google Chat. |
5 | Proyecto de Apps Script | El proyecto de Apps Script en el que implementas la lógica de tu app de Chat para recibir y procesar mensajes |
6 | Pub/Sub | El proyecto de Apps Script publica las acciones del usuario, como aprobaciones o rechazos, como mensajes en un tema de Pub/Sub. El SDK de ABAP para Google Cloud usa una suscripción a Pub/Sub para extraer estos mensajes del tema. Esto permite que tu sistema SAP procese esas acciones y active las actualizaciones necesarias de tus procesos empresariales. |
Productos usados
En esta arquitectura de referencia, se usan los siguientes productos de Google:
- SDK de ABAP para Google Cloud: Te ayuda a desarrollar aplicaciones de ABAP que conectan tus sistemas SAP a los servicios de Google Cloud, como Google Chat.
Google Chat: Te ayuda a crear apps de Chat interactivas y colaborativas, lo que mejora la comunicación y la productividad.
Apps Script: Te permite integrar y automatizar tareas en todos los productos de Google.
Pub/Sub: Te permite enviar y recibir mensajes entre aplicaciones independientes.
Casos de uso
Las apps de Chat interactivo te permiten realizar acciones en los flujos de trabajo de SAP, como aprobar o rechazar solicitudes. En el siguiente diagrama, se ilustra un patrón de chat interactivo para los flujos de trabajo de aprobación de pedidos de compra (PO) y de venta (SO):
En la siguiente lista, se muestran algunos casos de uso de las apps de chat interactivo para SAP:
Administración de eventos de flujo de trabajo: Puedes interactuar con una app de Chat para administrar tu flujo de trabajo. Por ejemplo, si una compra requiere tu atención, puedes hacer lo siguiente a través de la app de Chat:
- Cómo aprobar el pedido
- Rechazar el pedido
- Solicita más detalles
Alertas del sistema: Puedes enviar alertas a un espacio de Chat destinado a los administradores del sistema para informarles que se alcanzaron varios umbrales del sistema. Por ejemplo, el uso de espacio en el disco, las operaciones de larga duración, los bloqueos de caché o el vencimiento de la licencia.
Actualizaciones del estado de los trabajos: Puedes enviar actualizaciones de trabajos personalizados de larga duración a un conjunto de usuarios que esperan que se completen esos trabajos y que realicen operaciones de procesamiento posterior.
Consideraciones del diseño
Cuando diseñas apps de chat para tus casos de uso, hay varios factores que pueden influir en tus decisiones de diseño. En esta sección, se proporciona orientación para ayudarte a usar esta arquitectura de referencia para desarrollar arquitecturas que te ayuden a cumplir con tus requisitos específicos de seguridad, privacidad, cumplimiento y costo.
Configuración de la app de Google Chat
Nombre de la app de Chat: Proporciona un nombre claro y significativo para tu app de Chat. Para que la experiencia del usuario sea fluida, asegúrate de que el nombre de la app de Chat refleje con precisión sus funciones o los servicios con los que se integra.
Zonas horarias: Los miembros que pertenecen a varias zonas horarias pueden compartir un espacio de Chat. Por lo tanto, es fundamental configurar las apps de chat para transmitir mensajes en un momento conveniente para todos los usuarios del espacio. Como alternativa, para alertas o notificaciones importantes, puedes designar miembros a espacios de Chat con una zona horaria compartida y crear una lógica para determinar a qué espacio puede enviar mensajes la app de Chat.
Security, privacy, and compliance
Para mantener la confidencialidad, es fundamental implementar controles estrictos sobre el uso compartido de información sensible, como los detalles de contacto del cliente, el IBAN y otros datos que se deben conocer en los espacios de chat. Además, cuando se agregan usuarios nuevos a los espacios de Chat, donde se agregan las apps de Chat, es fundamental establecer reglamentaciones claras para garantizar una administración adecuada de esta actividad.
También puedes considerar usar la API de Cloud Data Loss Prevention (DLP) para desensibilizar el contenido de los mensajes. Si deseas obtener información para proteger datos empresariales sensibles en SAP con la API de DLP, consulta Protección de datos en SAP con la API de DLP.
Para mayor seguridad, asegúrate de que los administradores de Google Workspace sigan las prácticas recomendadas de Google.
Cuotas y límites
La API de Google Chat es un servicio compartido, por lo que se aplican cuotas y limitaciones. Si superas una cuota, recibirás una respuesta con el código de estado HTTP 429: Too many requests
. Para obtener más información sobre las cuotas y los límites, consulta Límites de uso.
La API de Google Chat no tiene tarifas de uso, pero Google Chat es un producto de Google Workspace. Google Workspace, un paquete de herramientas de productividad, incluye Gmail, Documentos, Hojas de cálculo, Presentaciones, las apps de Google Chat y mucho más. Su estructura de precios es integral, lo que significa que no puedes seleccionar ni comprar componentes individuales. Para obtener más información sobre los precios, consulta Precios de Google Workspace.
Opciones de configuración de la conexión
Para controlar las interacciones en Google Chat, esta arquitectura de referencia usa Apps Script como backend. El código, alojado en un proyecto de Apps Script, debe escribirse en JavaScript.
Como alternativa, puedes compilar tu app de Chat interactiva con funciones de Cloud Run o App Engine con un extremo HTTP. Para obtener información sobre cómo usar las funciones de Cloud Run para Google Chat, consulta Cómo compilar una app de Google Chat HTTP. Para compilar la lógica de la app de Chat en las funciones de Cloud Run, puedes usar las bibliotecas de Cloud y elegir entre varios lenguajes, como Node.js, Java o Python. Una vez que implementes tu función de Cloud Run, en la configuración de la app de Chat, en Configuración de la conexión, selecciona URL del extremo HTTP y proporciona la URL del activador de la función de Cloud Run.
Antes de comenzar
Antes de implementar una solución basada en esta arquitectura de referencia, asegúrate de que completaste los siguientes requisitos previos:
Tienes una cuenta de Google Workspace para empresas o negocios con acceso a Google Chat.
Tienes una cuenta y un proyecto de Google Cloud. Cada app de Chat requiere su propio proyecto de Google Cloud. Esto significa que solo puedes configurar una sola app de Chat en un proyecto de Google Cloud.
Habilitaste la facturación en tu proyecto. Para obtener información sobre cómo confirmar que tienes habilitada la facturación en un proyecto, consulta Verifica el estado de facturación de tus proyectos.
Tener instalada y configurada la edición local o cualquier edición en la nube del SDK de ABAP para Google Cloud
La API de Google Chat está habilitada en tu proyecto de Google Cloud.
Configura un proyecto de Apps Script
Para recibir y procesar mensajes, implementas la lógica de la app de Chat en un proyecto de Apps Script. Apps Script proporciona la lógica y la automatización del backend. Te permite escribir código para controlar eventos, como extraer mensajes del usuario, procesar clics en botones y activar acciones descendentes.
Para configurar un proyecto de Apps Script, sigue estos pasos:
- Ve a Apps Script.
Crea una secuencia de comandos para controlar la lógica de tu app de Chat para recibir y procesar mensajes. Para obtener información sobre cómo crear una secuencia de comandos, consulta la Guía de inicio rápido de Google Apps Script.
Por ejemplo, debes escribir código JavaScript para controlar varios tipos de funciones. En el siguiente código de muestra, se muestra cómo controlar el evento
OnCardClicked
:function onCardClick(event) { console.info(event); let message = 'Button Clicked'; // Get the function name from parameter var functionToCall = event.action.parameters[0].value; // Get the action name from parameter var actionTaken = event.action.parameters[1].value; // Call the function dynamically if (this[functionToCall]) { this[functionToCall](actionTaken); } else { // Handle invalid function name console.log('Function not found:', functionToCall); } return { "text": message }; }
Este código de muestra realiza las siguientes funciones:
- Lee el clic en el botón: Determina el botón en el que se hizo clic y la acción que el usuario desea realizar.
- Encuentra el código correcto para ejecutar: Usa la información del clic en el botón para encontrar un fragmento de código coincidente en tu app de Chat.
- Ejecuta el código: Ejecuta el código coincidente para realizar la acción que solicitó el usuario.
- Controla los errores: Si no encuentra el código coincidente, muestra un mensaje de error.
Vincula tu proyecto de Google Cloud al proyecto de Apps Script. Para obtener información sobre cómo vincular tus proyectos, consulta Vincula tu proyecto de Google Cloud.
Crea una implementación para tu secuencia de comandos. Para obtener información sobre cómo implementar tu secuencia de comandos, consulta Crea y administra implementaciones.
Anota el ID de implementación. Para obtener información sobre cómo encontrar un ID de implementación, consulta Cómo encontrar un ID de implementación.
Para obtener más información sobre cómo configurar tu proyecto de Apps Script, consulta la Guía de inicio rápido de la app de Chat de Google Apps Script.
Configura la app de Google Chat
Para configurar tu app de Google Chat, sigue estos pasos:
En la consola de Google Cloud, busca "API de Google Chat" y haz clic en API de Google Chat. Luego, haz clic en Administrar.
Haz clic en Configuración y configura la app de Google Chat:
- En Nombre de la app, ingresa
Quickstart SAP App
. - En URL del avatar, ingresa
https://developers.google.com/chat/images/quickstart-app-avatar.png
. - En Descripción, ingresa
Quickstart app for SAP
.
- En Nombre de la app, ingresa
En Configuración de conexión, selecciona Apps Script.
Ingresa el ID de implementación de la secuencia de comandos que creaste en la sección Configura un proyecto de Apps Script.
Haz clic en Guardar.
Configura la autenticación para las apps de Google Chat
Puedes autenticarte en las apps de Google Chat de dos maneras: como una app o como un usuario.
Cuando tu app necesita realizar tareas automatizadas, como enviar notificaciones del sistema sin interacción directa del usuario, usa una cuenta de servicio. Si deseas que tu app actúe en nombre de un usuario, por ejemplo, para enviar un mensaje como esa persona específica, necesitas la autenticación del usuario. Este enfoque de autenticación doble ofrece flexibilidad y control sobre cómo interactúa tu app con Google Chat.
El SDK de ABAP para Google Cloud te permite configurar ambos tipos de autenticación. Para obtener información sobre cómo configurar la autenticación para las apps de Google Chat, consulta los siguientes recursos:
- Autentícate como una app de Google Chat: Autentícate con tokens de acceso o Autentícate con tokens web JSON
- Autentícate y autoriza como usuario de Google Chat: Autenticación de las APIs de Google Workspace con credenciales de cliente de OAuth 2.0
Para obtener información sobre los métodos de la API de Google Chat y sus permisos de autorización compatibles, consulta Autentica y autoriza las solicitudes a la API de Google Chat y la app de Chat.
La arquitectura de referencia que se explica en este documento usa la autenticación como una app de Chat y usa tokens de acceso para la autenticación.
Para configurar la autenticación como una app de Chat, sigue estos pasos:
- En la consola de Google Cloud, configura la pantalla de consentimiento de OAuth y elige los permisos.
- En la consola de Google Cloud, crea una cuenta de servicio.
- Opcional: Asigna roles de IAM a tu cuenta de servicio para otorgar acceso a los recursos de tu proyecto de Google Cloud. Para obtener más información, consulta Administra el acceso a las cuentas de servicio.
En el sistema SAP, configura una clave de cliente con los siguientes detalles:
Campo Descripción Nombre de la clave de Google Cloud Especifica un nombre para la configuración de la clave de cliente. Por ejemplo, ABAP_SDK_CHAT
.Nombre de la cuenta de servicio de Google Cloud Especifica el nombre de la cuenta de servicio a la que le otorgaste permisos para acceder a la API de Google Chat. Por ejemplo,
sap-example-svc-acct@example-project-123456.iam.gserviceaccount.com
.Permiso de Google Cloud Especifica el permiso de acceso a la API: https://www.googleapis.com/auth/chat.bot
.Identificador de proyecto de Google Cloud Especifica el ID del proyecto de Google Cloud que contiene tu API de Google Chat habilitada. Nombre del comando Deja este campo en blanco. Clase de autorización Especifica la clase de autorización según corresponda:
- Para la autenticación con tokens de acceso:
/GOOG/CL_AUTH_GOOGLE
- Para la autenticación mediante JWT:
/GOOG/CL_AUTH_JWT
Almacenamiento en caché de tokens La marca que determina si los tokens de acceso recuperados de Google Cloud se almacenan en caché.
Te recomendamos que habilites el almacenamiento en caché de tokens después de que termines de configurar y probar tu conexión a Google Cloud. Para obtener más información sobre el almacenamiento en caché de tokens, consulta Habilita el almacenamiento en caché de tokens.
Segundos de actualización de los tokens La cantidad de tiempo en segundos antes de que caduque un token de acceso y se deba actualizar. El valor predeterminado es 3500
.Parámetro de autorización 1 Deja este campo en blanco. Parámetro de autorización 2 Deja este campo en blanco. - Para la autenticación con tokens de acceso:
Para obtener información sobre los pasos detallados para configurar la autenticación, consulta Autentica mediante tokens de acceso o Autentica mediante tokens web JSON.
Agrega la app de Google Chat a los espacios
- Abre tus apps de Google Chat o Gmail.
- Agrega la app de Chat a un espacio de Chat. Si necesitas información para agregar apps a un espacio de Chat, consulta Cómo agregar apps a conversaciones o espacios.
Cómo diseñar tarjetas interactivas para acciones del usuario
Las tarjetas proporcionan una forma interactiva y visualmente atractiva de presentar información, lo que mejora la experiencia general del usuario. Pueden incluir elementos como títulos, imágenes, botones y mucho más, lo que permite a los usuarios interactuar con el contenido directamente en la interfaz de Chat. Por ejemplo, una tarjeta de flujo de trabajo de orden de compra podría incluir la siguiente información:
- Número de orden de compra
- Fecha del documento
- Tipo de documento
- Proveedor
- Tipo de envío
- Vínculo para abrir la visualización de la orden de compra en la app de SAP Fiori y un botón para aprobarla
Para diseñar tarjetas interactivas con el SDK de ABAP para Google Cloud, usa la interfaz personalizada ZGOOG_IF_CHAT_CARDS_V2
del repositorio de GitHub.
Esta interfaz personalizada contiene los tipos de ABAP necesarios para crear tarjetas.
Puedes crear tarjetas como la siguiente tarjeta de ejemplo de flujo de trabajo de pedidos:
Para obtener más información sobre cómo diseñar mensajes de tarjetas, consulta Cómo compilar tarjetas para apps de Google Chat.
Para enviar mensajes de un sistema SAP a un espacio de chat con el SDK de ABAP para Google Cloud, usa el método CREATE_MESSAGES
de la clase /GOOG/CL_CHAT_V1
.
En la siguiente muestra de código, se ilustra cómo enviar un mensaje de tarjeta desde un sistema SAP a un espacio de chat:
REPORT zsend_interactive_card
DATA lv_client_key TYPE /goog/keyname.
DATA ls_input TYPE /goog/cl_chat_v1=>ty_072.
DATA lv_space_id TYPE string.
DATA ls_widget TYPE zgoog_if_chat_cards_v2=>ty_widget.
DATA ls_section TYPE zgoog_if_chat_cards_v2=>ty_sections.
DATA ls_card_v2 TYPE zgoog_if_chat_cards_v2=>ty_cards_v2.
DATA ls_card TYPE /goog/cl_chat_v1=>ty_012.
DATA ls_rb TYPE zgoog_if_chat_cards_v2=>ty_selection_item.
DATA ls_button TYPE zgoog_if_chat_cards_v2=>ty_button.
DATA ls_param TYPE zgoog_if_chat_cards_v2=>ty_action_parameters.
lv_client_key = 'CLIENT_KEY'.
lv_space_id = 'SPACE_ID'.
TRY.
DATA(lo_chat) = NEW /goog/cl_chat_v1( iv_key_name = lv_client_key ).
CATCH /goog/cx_sdk INTO DATA(lo_excp).
" Handle exception here
ENDTRY.
"Building the Cards Structure
ls_card_v2-header-title = 'Purchase Order Workflow - Level 2 Approval Alert!'.
ls_card_v2-header-subtitle = 'PO Number: 8700000034'.
ls_card_v2-header-image_url = 'https://developers.google.com/chat/images/quickstart-app-avatar.png'.
ls_section-header = 'Purchase Order Details'.
ls_widget-decorated_text-icon-known_icon = 'INVITE'.
ls_widget-decorated_text-text = 'Document Date: 2024-10-23'.
APPEND ls_widget TO ls_section-widgets.
CLEAR ls_widget.
ls_widget-decorated_text-icon-material_icon-name = 'category'.
ls_widget-decorated_text-text = 'Document Type: Standard PO'.
APPEND ls_widget TO ls_section-widgets.
CLEAR ls_widget.
ls_widget-decorated_text-icon-material_icon-name = 'conveyor_belt'.
ls_widget-decorated_text-text = 'Supplier: 5300000061 - Cymbal Industries'.
APPEND ls_widget TO ls_section-widgets.
CLEAR ls_widget.
ls_widget-decorated_text-icon-known_icon = 'TRAIN'.
ls_widget-decorated_text-text = 'Shipping Type: RAIL'.
APPEND ls_widget TO ls_section-widgets.
CLEAR ls_widget.
ls_button-text = 'Display Purchase Order'.
ls_button-color-alpha = '1'.
ls_button-color-blue = '1'.
ls_button-color-green = '0'.
ls_button-color-red = '0'.
ls_button-on_click-open_link-url = "Add url for fiori App
APPEND ls_button TO ls_widget-button_list-buttons.
CLEAR ls_button.
ls_button-text = 'Approve Purchase Order'.
ls_button-color-alpha = '1'.
ls_button-color-blue = '0.2'.
ls_button-color-green = '0.4'.
ls_button-color-red = '0'.
ls_button-on_click-action-function = 'onCardClick'.
ls_param-key = 'functionToCall'.
ls_param-value = 'sendToPubSub'. "Function name on Apps Script
APPEND ls_param TO ls_button-on_click-action-parameters.
CLEAR ls_param.
ls_param-key = 'action'.
ls_param-value = 'approved'. "Indicate approval action has taken place
APPEND ls_param TO ls_button-on_click-action-parameters.
CLEAR ls_param.
APPEND ls_button TO ls_widget-button_list-buttons.
CLEAR ls_button.
ls_button-text = 'Reject Purchase Order'.
ls_button-color-alpha = '1'.
ls_button-color-blue = '0'.
ls_button-color-green = '0'.
ls_button-color-red = '0.7'.
ls_button-on_click-action-function = 'onCardClick'.
ls_param-key = 'functionToCall'.
ls_param-value = 'sendToPubSub'. "Function name on Apps Script
APPEND ls_param TO ls_button-on_click-action-parameters.
CLEAR ls_param.
ls_param-key = 'action'.
ls_param-value = 'rejected'. "Indicate reject action has taken place
APPEND ls_param TO ls_button-on_click-action-parameters.
CLEAR ls_param.
APPEND ls_button TO ls_widget-button_list-buttons.
CLEAR ls_button.
APPEND ls_widget TO ls_section-widgets.
APPEND ls_section TO ls_card_v2-sections.
ls_card-card = REF #( ls_card_v2 ).
APPEND ls_card TO ls_input-cards_v2.
TRY.
mo_chat_client->create_messages( EXPORTING iv_p_spaces_id = CONV #( p_spc_id )
is_input = ls_input
IMPORTING es_output = DATA(ls_output)
ev_ret_code = DATA(lv_ret_code)
ev_err_text = DATA(lv_err_text)
es_err_resp = DATA(ls_err_resp) ).
CATCH /goog/cx_sdk INTO mo_excp.
"Handle exception here
ENDTRY.
IF mo_chat_client->is_error( lv_ret_code ).
"Handle error here
ELSE.
"Handle success here
ENDIF.
Reemplaza lo siguiente:
CLIENT_KEY
: Es la clave del cliente configurada para la autenticación.SPACE_ID
: Es el ID de identificador único del espacio de chat. Para encontrar el ID del espacio de Chat, abre el espacio de Google Chat en tu navegador web. Puedes encontrar el ID en la URL, como se muestra en la siguiente captura de pantalla:
Alternativa de diseño
Para tu sistema SAP S/4 HANA o ECC alojado en Google Cloud, puedes considerar la siguiente arquitectura de referencia alternativa para diseñar tus apps de chat interactivas:
Esta arquitectura de referencia se basa en las siguientes consideraciones:
- Los procesos o transacciones de SAP de origen que son responsables de enviar mensajes a los usuarios
- El SDK de ABAP para Google Cloud envía mensajes llamando al método de la API de Google Chat:
spaces.messages.create
. - La API de Google Chat envía los mensajes al espacio de Chat correspondiente.
- Los usuarios del espacio reciben notificaciones y, luego, responden para realizar una acción, como hacer clic en un botón.
- La acción del usuario invoca el proyecto de Apps Script para controlar el evento correspondiente.
- El proyecto de Apps Script invoca la API de Pub/Sub para publicar los mensajes.
- La función de Cloud Run procesa los mensajes y publica eventos con el activador de Eventarc.
- La función de Cloud Run llama al nodo de SICF a través de un conector de VPC sin servidores.
- El sistema SAP procesa el evento y activa acciones descendentes según la lógica empresarial definida.
Esta arquitectura de referencia requiere la implementación de la lógica en tres capas:
- La capa ABAP para crear un mensaje de chat, controlar el evento y los procesos empresariales posteriores
- La capa de Apps Script para controlar el evento en el espacio de Chat y publicar mensajes en un tema de Pub/Sub.
- La función de Cloud Run para recibir mensajes de la suscripción a Pub/Sub. De forma opcional, puedes dar formato a los mensajes y llamar al servicio de SICF alojado en tu sistema SAP a través del conector de VPC.
¿Qué sigue?
Para implementar la solución de ejemplo que se explica en esta guía con el mínimo esfuerzo, usa la muestra de código que se proporciona en GitHub.
Para obtener más información sobre la depuración y la solución de problemas de la app de Chat, consulta Descripción general de la solución de problemas.
Para obtener información sobre los productos de Google Workspace, consulta las preguntas frecuentes al momento de considerar Google Workspace.
Si necesitas ayuda para resolver problemas con el SDK de ABAP para Google Cloud, haz lo siguiente:
- Consulta la guía de solución de problemas del SDK de ABAP para Google Cloud.
- Haz tus preguntas y analiza el SDK de ABAP para Google Cloud con la comunidad en Cloud Forums.
- Recopila toda la información de diagnóstico disponible y comunícate con el servicio de Atención al cliente de Cloud. Si deseas obtener más información para comunicarte con el equipo de Atención al cliente, consulta Obtén asistencia para SAP en Google Cloud.
Colaboradores
Autor: Satish Inamdar | Ingeniero de aplicaciones de SAP
Otro colaborador: Vikash Kumar | Escritor técnico