Apps interactivas de Google Chat para SAP

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:

Apps de chat interactivo 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):

Aprobación del flujo de trabajo de las apps de chat interactivo

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:

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:

  1. Ve a Apps Script.
  2. 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.
  3. 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.

  4. 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.

  5. 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:

  1. En la consola de Google Cloud, busca "API de Google Chat" y haz clic en API de Google Chat. Luego, haz clic en Administrar.

    Ir a la API de Chat

  2. Haz clic en Configuración y configura la app de Google Chat:

    1. En Nombre de la app, ingresa Quickstart SAP App.
    2. En URL del avatar, ingresa https://developers.google.com/chat/images/quickstart-app-avatar.png.
    3. En Descripción, ingresa Quickstart app for SAP.
  3. En Configuración de conexión, selecciona Apps Script.

  4. Ingresa el ID de implementación de la secuencia de comandos que creaste en la sección Configura un proyecto de Apps Script.

  5. 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:

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:

  1. En la consola de Google Cloud, configura la pantalla de consentimiento de OAuth y elige los permisos.
  2. En la consola de Google Cloud, crea una cuenta de servicio.
  3. 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.
  4. 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 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

  1. Abre tus apps de Google Chat o Gmail.
  2. 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:

Tarjeta de apps de chat

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:

    ID del espacio de la app de chat

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:

Opción de diseño alternativa para apps de chat interactivo para SAP

Esta arquitectura de referencia se basa en las siguientes consideraciones:

  1. Los procesos o transacciones de SAP de origen que son responsables de enviar mensajes a los usuarios
  2. El SDK de ABAP para Google Cloud envía mensajes llamando al método de la API de Google Chat: spaces.messages.create.
  3. La API de Google Chat envía los mensajes al espacio de Chat correspondiente.
  4. Los usuarios del espacio reciben notificaciones y, luego, responden para realizar una acción, como hacer clic en un botón.
  5. La acción del usuario invoca el proyecto de Apps Script para controlar el evento correspondiente.
  6. El proyecto de Apps Script invoca la API de Pub/Sub para publicar los mensajes.
  7. La función de Cloud Run procesa los mensajes y publica eventos con el activador de Eventarc.
  8. La función de Cloud Run llama al nodo de SICF a través de un conector de VPC sin servidores.
  9. 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?

Colaboradores

Autor: Satish Inamdar | Ingeniero de aplicaciones de SAP

Otro colaborador: Vikash Kumar | Escritor técnico