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:
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:
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:
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.
La facturación está habilitada 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 la app de Google Chat
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
Inhabilita las funciones interactivas.
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 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 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 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. 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:
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:
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:
¿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 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