Apps de Google Chat para SAP

En este documento, se describe una arquitectura de referencia para compilar apps 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 de Chat, puedes llevar tus procesos y flujos de trabajo de SAP a Google Chat, lo que permite que los usuarios reciban notificaciones, como informes de alarmas, alertas de flujo de trabajo, alertas del sistema y actualizaciones de finalización de tareas 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 unidireccionales para SAP que pueden enviar mensajes a un espacio de chat desde un sistema ERP de SAP:

Apps de chat 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 notificaciones al usuario 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.

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.

Casos de uso

Las apps de Chat unidireccionales no son interactivas y te permiten enviar mensajes a los usuarios del espacio de Chat, pero los usuarios no pueden responder a las apps de Chat. En el siguiente diagrama, se ilustra el patrón de chat para las apps de Chat unidireccionales:

Patrón de apps de chat

En la siguiente lista, se muestran algunos casos de uso de Google Chat para SAP:

  • Notificación de eventos de flujo de trabajo: Puedes enviar mensajes a las apps de Chat para los diferentes pasos involucrados en el proceso de flujo de trabajo para alertar a un conjunto específico de usuarios presentes en un espacio de Chat. Por ejemplo, un usuario aprueba o rechaza una orden de compra.

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

Alternativa de diseño

Si bien este documento se enfoca en las ediciones locales o en la nube del SDK de ABAP para Google Cloud, puedes lograr resultados similares con la edición de SAP BTP del SDK de ABAP para Google Cloud. Puedes adaptar los recursos proporcionados para compilar soluciones similares dentro de tu entorno de SAP BTP.

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 la app de Google Chat

  1. 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. Inhabilita las funciones interactivas.

  4. 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 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 de 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. Para obtener información sobre los pasos, consulta Cómo agregar apps a conversaciones o espacios.

Envía un mensaje desde tu entorno de ABAP

Google Chat y las apps de Chat usan un formato de mensaje basado en JSON, con cada mensaje que contiene detalles como el ID del usuario, el estilo y el contenido. Las apps de chat pueden enviar los siguientes tipos de mensajes:

  • Mensajes de texto: Los mensajes de texto contienen contenido de texto sin formato con formato de texto limitado.
  • Mensajes de tarjetas: Los mensajes de tarjetas definen el formato, el contenido y el comportamiento de las tarjetas que se mostrarán en un espacio. Por ejemplo, un mensaje de tarjeta puede incluir un botón con un vínculo que abre un diálogo para recopilar información de un usuario.

Para obtener más información sobre los mensajes de Google Chat, consulta la descripción general de los mensajes 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.

Enviar un mensaje de texto

En la siguiente muestra de código, se muestra cómo enviar un mensaje de texto desde un sistema SAP a un espacio de chat:

REPORT zsend_text_message.

DATA lv_client_key TYPE /goog/keyname.
DATA ls_input      TYPE /goog/cl_chat_v1=>ty_072.
DATA lv_space_id   TYPE string.

lv_client_key = 'CLIENT_KEY'.
ls_input-text = 'TEXT_MESSAGE'.
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.

TRY.
    lo_chat->create_messages( EXPORTING iv_p_spaces_id = lv_space_id
                                        is_input       = ls_input
                              IMPORTING ev_ret_code    = DATA(return_code)
                                        ev_err_text    = DATA(error_text)
                                        es_err_resp    = DATA(err_resp) ).
  CATCH /goog/cx_sdk INTO lo_excp.
    " Handle exception here
ENDTRY.

IF /goog/cl_chat_v1=>is_success( iv_code = return_code ) = abap_true.
  " Handle success here
ELSE.
  " Handle error here
ENDIF.

Reemplaza lo siguiente:

  • CLIENT_KEY: Es la clave del cliente configurada para la autenticación.
  • TEXT_MESSAGE: Es un mensaje de texto que se enviará al espacio de Chat.
  • 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

Cómo enviar un mensaje de tarjeta

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 desde 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

Para el desarrollo de tarjetas 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:

ID del espacio de la app 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.

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

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 Card Structure

" Set the header
ls_card_v2-header = VALUE zgoog_if_chat_cards_v2=>ty_header(
                              title     = 'Purchase Order Workflow - Level 2 Approval Alert!'
                              subtitle  = 'PO Number: 8700000034'
                              image_url = 'https://developers.google.com/chat/images/quickstart-app-avatar.png' ).

" Create sections
ls_section-header = 'Purchase Order Details'.

ls_widget-decorated_text = VALUE zgoog_if_chat_cards_v2=>ty_decorated_text(
                                     icon = VALUE zgoog_if_chat_cards_v2=>ty_icon( known_icon = 'INVITE' )
                                     text = 'Document Date: 2024-10-23' ).
ls_section-widgets = VALUE #( ( ls_widget ) ).
CLEAR ls_widget.

ls_widget-decorated_text = VALUE zgoog_if_chat_cards_v2=>ty_decorated_text(
    icon = VALUE zgoog_if_chat_cards_v2=>ty_icon(
                     material_icon = VALUE zgoog_if_chat_cards_v2=>ty_material_icon( name = 'category' ) )
    text = 'Document Type: Standard PO'  ).

ls_section-widgets = VALUE #( BASE ls_section-widgets
                              ( ls_widget ) ).
CLEAR ls_widget.

ls_widget-decorated_text = VALUE zgoog_if_chat_cards_v2=>ty_decorated_text(
    icon = VALUE zgoog_if_chat_cards_v2=>ty_icon(
                     material_icon = VALUE zgoog_if_chat_cards_v2=>ty_material_icon( name = 'conveyor_belt' ) )
    text = 'Supplier: 5300000061 - Cymbal Industries'  ).

ls_section-widgets = VALUE #( BASE ls_section-widgets
                              ( ls_widget ) ).
CLEAR ls_widget.

ls_widget-decorated_text = VALUE zgoog_if_chat_cards_v2=>ty_decorated_text(
                                     icon = VALUE zgoog_if_chat_cards_v2=>ty_icon( known_icon = 'TRAIN' )
                                     text = 'Shipping Type: RAIL' ).
ls_section-widgets = VALUE #( BASE ls_section-widgets
                              ( ls_widget ) ).
CLEAR ls_widget.

ls_widget-decorated_text = VALUE zgoog_if_chat_cards_v2=>ty_decorated_text( text = 'Approved By: User-Name' ).
ls_section-widgets = VALUE #( BASE ls_section-widgets
                              ( ls_widget ) ).
CLEAR ls_widget.

ls_section-widgets = VALUE #( BASE ls_section-widgets
                              ( ls_widget ) ).

ls_card_v2-sections = VALUE #( ( ls_section ) ).

ls_card-card = REF #( ls_card_v2 ).
ls_input-cards_v2 = VALUE #( (  ls_card ) ).

TRY.
    lo_chat->create_messages( EXPORTING iv_p_spaces_id = lv_space_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 lo_excp.
    " Handle exception here
ENDTRY.

IF lo_chat->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

¿Qué sigue?

Colaboradores

Autor: Satish Inamdar | Ingeniero de aplicaciones de SAP

Otro colaborador: Vikash Kumar | Escritor técnico