Applications Google Chat pour SAP

Ce document décrit une architecture de référence pour créer des applications Google Chat pour SAP à l'aide de l'édition sur site ou cloud du SDK ABAP pour Google Cloud. Avec les applications Chat, vous pouvez intégrer vos processus et workflows SAP à Google Chat, ce qui permet aux utilisateurs de recevoir des notifications telles que des rapports d'alarme, des alertes de workflow, des alertes système et des informations sur l'avancement des tâches dans leur compte Google Workspace.

Ce document s'adresse aux développeurs ABAP, aux architectes de solutions SAP et aux architectes cloud. Dans ce document, nous partons du principe que vous connaissez les applications Chat disponibles dans Google Workspace.

Architecture

Le schéma suivant illustre une architecture de référence pour l'implémentation d'applications Chat à sens unique pour SAP pouvant envoyer des messages à un espace Chat à partir d'un système ERP SAP:

Applications Chat pour SAP

Cette architecture de référence comprend les composants suivants:

# Composant Détails
1 Processus ou transactions SAP Tout processus ou transaction SAP devant envoyer des notifications aux utilisateurs. Il s'agit du point de départ pour déclencher la communication via Google Chat.
2 SDK ABAP pour Google Cloud Il sert de pont entre les systèmes SAP et Google Cloud, ce qui permet une communication HTTPS sécurisée avec l'API Google Chat.
3 Projet d'application Google Chat Le projet Google Cloud dans lequel vous avez activé l'API Google Chat et configuré votre application Chat.
4 salon Chat

Salon dédié dans Google Chat où votre système SAP peut communiquer avec les utilisateurs.

Les applications Chat se trouvent dans cet espace et fournissent un flux d'informations en temps réel à partir de vos systèmes SAP via l'API Google Chat.

Produits utilisés

Cette architecture de référence utilise les produits Google suivants:

  • SDK ABAP pour Google Cloud: vous aide à développer des applications ABAP qui connectent vos systèmes SAP aux services Google Cloud, tels que Google Chat.
  • Google Chat : vous aide à créer des applications Chat interactives et collaboratives, ce qui améliore la communication et la productivité.

Cas d'utilisation

Les applications Chat à sens unique ne sont pas interactives et vous permettent d'envoyer des messages aux utilisateurs de l'espace Chat, mais ces derniers ne peuvent pas répondre aux applications Chat. Le schéma suivant illustre le modèle de chat pour les applications Chat à sens unique:

Modèle des applications de chat

La liste suivante présente quelques cas d'utilisation de Google Chat pour SAP:

  • Notification d'événement de workflow: vous pouvez envoyer des messages aux applications Chat pour différentes étapes du processus de workflow afin d'alerter un ensemble spécifique d'utilisateurs présents dans un espace Chat. Par exemple, une demande d'achat est approuvée ou refusée par un utilisateur.

  • Alertes système: vous pouvez envoyer des alertes à un espace Chat destiné aux administrateurs système pour les avertir de divers seuils système atteints. Par exemple, l'utilisation de l'espace disque, les opérations de longue durée, les verrouillages de cache ou l'expiration de la licence.

  • Mises à jour de l'état des tâches: vous pouvez envoyer des mises à jour des tâches personnalisées de longue durée à un ensemble d'utilisateurs qui attendent la fin de ces tâches et qui effectuent des opérations de post-traitement.

Considérations de conception

Lorsque vous concevez des applications Chat pour vos cas d'utilisation, plusieurs facteurs peuvent influencer vos décisions de conception. Cette section fournit des conseils pour vous aider à utiliser cette architecture de référence afin de développer des architectures qui vous aident à répondre à vos exigences spécifiques en termes de sécurité, de confidentialité, de conformité et de coût.

Configuration de l'application Google Chat

  • Nom de l'application Chat: attribuez un nom clair et pertinent à votre application Chat. Pour une expérience utilisateur fluide, assurez-vous que le nom de votre application Chat reflète précisément ses fonctionnalités ou les services avec lesquels elle s'intègre.

  • Fuseaux horaires: un espace Chat peut être partagé par des membres appartenant à différents fuseaux horaires. Il est donc essentiel de configurer les applications Chat pour transmettre des messages à un moment qui convient à tous les utilisateurs de l'espace. Pour les alertes ou notifications importantes, vous pouvez également désigner des membres pour des espaces Chat avec un fuseau horaire partagé et créer une logique pour déterminer à quel espace l'application Chat peut envoyer des messages.

Sécurité, confidentialité et conformité

Pour préserver la confidentialité, il est essentiel de mettre en place des contrôles stricts sur le partage d'informations sensibles, telles que les coordonnées du client, l'IBAN ou d'autres données nécessaires dans les espaces Chat. De plus, lorsque de nouveaux utilisateurs sont ajoutés aux espaces Chat, où les applications Chat sont ajoutées, il est essentiel d'établir des règles claires pour assurer une gestion appropriée de cette activité.

Vous pouvez également envisager d'utiliser l'API Cloud Data Loss Prevention (DLP) pour désensibiliser le contenu des messages. Pour savoir comment protéger les données d'entreprise sensibles dans SAP à l'aide de l'API DLP, consultez Protection des données dans SAP avec l'API DLP.

Pour des raisons de sécurité, assurez-vous que les administrateurs Google Workspace respectent les bonnes pratiques recommandées par Google.

Quotas et limites

L'API Google Chat est un service partagé. Par conséquent, des quotas et des limites s'appliquent. Si vous dépassez un quota, vous recevez une réponse avec le code d'état HTTP 429: Too many requests. Pour en savoir plus sur les quotas et les limites, consultez la section Limites d'utilisation.

L'API Google Chat elle-même n'est pas soumise à des frais d'utilisation, mais Google Chat est un produit Google Workspace. Google Workspace, une suite d'outils de productivité groupés, comprend Gmail, Docs, Sheets, Slides, les applications Google Chat et bien plus encore. Sa structure tarifaire est globale, ce qui signifie que vous ne pouvez pas sélectionner et acheter des composants individuels. Pour en savoir plus sur les tarifs, consultez la page Tarifs Google Workspace.

Alternative de conception

Bien que ce document se concentre sur l'édition sur site ou toute édition cloud du SDK ABAP pour Google Cloud, vous pouvez obtenir des résultats similaires en utilisant l'édition SAP BTP du SDK ABAP pour Google Cloud. Vous pouvez adapter les ressources fournies pour créer des solutions similaires dans votre environnement SAP BTP.

Avant de commencer

Avant d'implémenter une solution basée sur cette architecture de référence, assurez-vous d'avoir rempli les conditions préalables suivantes:

Configurer l'application Google Chat

  1. Recherchez "API Google Chat", puis cliquez sur API Google Chat, puis sur Gérer.

    Accéder à l'API Chat

  2. Cliquez sur Configuration, puis configurez l'application Google Chat:

    1. Dans le champ Nom de l'application, saisissez Quickstart SAP App.
    2. Dans URL de l'avatar, saisissez https://developers.google.com/chat/images/quickstart-app-avatar.png.
    3. Dans Description, saisissez Quickstart app for SAP.
  3. Désactivez les fonctionnalités interactives.

  4. Cliquez sur Enregistrer.

Configurer l'authentification pour les applications Google Chat

Vous pouvez vous authentifier auprès des applications Google Chat de deux manières : en tant qu'application elle-même ou en tant qu'utilisateur.

Lorsque votre application doit effectuer des tâches automatisées, telles que l'envoi de notifications système sans interaction directe de l'utilisateur, elle utilise un compte de service. Si vous souhaitez que votre application agisse au nom d'un utilisateur, par exemple en envoyant un message en son nom, vous avez besoin d'une authentification de l'utilisateur. Cette approche d'authentification double offre de la flexibilité et un contrôle sur la manière dont votre application interagit avec Google Chat.

Le SDK ABAP pour Google Cloud vous permet de configurer les deux types d'authentification. Pour savoir comment configurer l'authentification pour les applications Google Chat, consultez les ressources suivantes:

Pour en savoir plus sur les méthodes de l'API Google Chat et les habilitations d'autorisation compatibles, consultez Authentifier et autoriser les applications Chat et les requêtes API Google Chat.

L'architecture de référence décrite dans ce document utilise l'authentification en tant qu'application Chat et des jetons d'accès pour l'authentification.

Pour configurer l'authentification en tant qu'application Chat, procédez comme suit:

  1. Dans la console Google Cloud, configurez l'écran de consentement OAuth et choisissez des habilitations.
  2. Dans la console Google Cloud, créez un compte de service.
  3. Facultatif: Attribuez des rôles à votre compte de service pour autoriser l'accès aux ressources de votre projet Google Cloud. Pour en savoir plus, consultez la page Gérer l'accès aux comptes de service.
  4. Dans le système SAP, configurez une clé client avec les informations suivantes:

    Champ Description
    Nom de la clé Google Cloud Spécifiez un nom de configuration de clé client. Par exemple, ABAP_SDK_CHAT.
    Nom du compte de service Google Cloud

    Indiquez le nom du compte de service auquel vous avez accordé l'accès à l'API Google Chat. Par exemple, sap-example-svc-acct@example-project-123456.iam.gserviceaccount.com.

    Champ d'application Google Cloud Spécifiez le niveau d'accès'API: https://www.googleapis.com/auth/chat.bot.
    Identifiant de projet Google Cloud Spécifiez l'ID du projet Google Cloud qui contient votre API Google Chat activée.
    Nom de la commande Laissez ce champ vide.
    Classe d'autorisation

    Spécifiez la classe d'autorisation, le cas échéant:

    • Pour l'authentification à l'aide de jetons d'accès: /GOOG/CL_AUTH_GOOGLE
    • Pour l'authentification à l'aide de JWT: /GOOG/CL_AUTH_JWT
    Mise en cache des jetons

    Option qui détermine si les jetons d'accès récupérés depuis Google Cloud sont mis en cache ou non.

    Nous vous recommandons d'activer la mise en cache des jetons après avoir configuré et testé votre connexion à Google Cloud. Pour en savoir plus sur la mise en cache des jetons, consultez la section Activer la mise en cache des jetons.

    Secondes avant actualisation du jeton Durée (en secondes) avant l'expiration d'un jeton d'accès et son actualisation. La valeur par défaut est 3500.
    Paramètre d'autorisation 1 Laissez ce champ vide.
    Paramètre d'autorisation 2 Laissez ce champ vide.

Pour en savoir plus sur la configuration de l'authentification, consultez S'authentifier à l'aide de jetons d'accès ou S'authentifier à l'aide de jetons Web JSON.

Ajouter l'application Google Chat aux espaces

  1. Ouvrez vos applications Google Chat ou Gmail.
  2. Ajoutez l'application Chat à un espace Chat. Pour en savoir plus, consultez Ajouter des applications à des conversations ou des espaces.

Envoyer un message depuis votre environnement ABAP

Google Chat et les applications Chat utilisent un format de message basé sur JSON, chaque message contenant des informations telles que l'ID utilisateur, le style et le contenu. Les applications Chat peuvent envoyer les types de messages suivants:

  • Messages texte: les messages texte contiennent du texte brut avec une mise en forme limitée.
  • Messages de carte: les messages de carte définissent le format, le contenu et le comportement des cartes à afficher dans un espace. Par exemple, un message de carte peut inclure un bouton avec un lien qui ouvre une boîte de dialogue pour collecter des informations auprès d'un utilisateur.

Pour en savoir plus sur les messages Google Chat, consultez la présentation des messages Google Chat.

Pour envoyer des messages depuis un système SAP vers un espace Chat à l'aide du SDK ABAP pour Google Cloud, vous devez utiliser la méthode CREATE_MESSAGES de la classe /GOOG/CL_CHAT_V1.

Envoyer un SMS

L'exemple de code suivant montre comment envoyer un message texte à partir d'un système SAP vers un espace 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.

Remplacez les éléments suivants :

  • CLIENT_KEY: clé client configurée pour l'authentification.
  • TEXT_MESSAGE: message texte à envoyer à l'espace Chat.
  • SPACE_ID: identifiant unique de l'espace Chat. Pour trouver l'ID de l'espace Chat, ouvrez l'espace Google Chat dans votre navigateur Web. Vous pouvez trouver l'ID dans l'URL, comme illustré dans la capture d'écran suivante:

    ID de l'espace des applications Chat

Envoyer un message avec une carte

Les fiches constituent un moyen visuel et interactif de présenter des informations, ce qui améliore l'expérience utilisateur globale. Ils peuvent inclure des éléments tels que des titres, des images, des boutons, etc., ce qui permet aux utilisateurs d'interagir avec le contenu directement dans l'interface de chat. Par exemple, une fiche de workflow de bon de commande peut inclure les informations suivantes:

  • Numéro du bon de commande
  • Date du document
  • Type de document
  • Fournisseur
  • Type de livraison

Pour le développement de cartes avec le SDK ABAP pour Google Cloud, utilisez l'interface personnalisée ZGOOG_IF_CHAT_CARDS_V2, disponible dans le dépôt GitHub. Cette interface personnalisée contient les types ABAP requis pour créer des fiches. Vous pouvez créer des fiches comme l'exemple de workflow de commande suivant:

ID de l'espace des applications Chat

Pour en savoir plus sur la conception de messages de carte, consultez la section Créer des fiches pour les applications Google Chat.

L'exemple de code suivant montre comment envoyer un message de carte à partir d'un système SAP vers un espace 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.

Remplacez les éléments suivants :

  • CLIENT_KEY: clé client configurée pour l'authentification.
  • SPACE_ID: identifiant unique de l'espace Chat. Pour trouver l'ID de l'espace Chat, ouvrez l'espace Google Chat dans votre navigateur Web. Vous pouvez trouver l'ID dans l'URL, comme illustré dans la capture d'écran suivante:

    ID de l'espace des applications Chat

Étape suivante

  • Pour déployer l'exemple de solution expliqué dans ce guide avec un minimum d'efforts, utilisez l'exemple de code fourni sur GitHub.

  • Pour en savoir plus sur les produits Google Workspace, consultez les questions courantes sur Google Workspace.

  • Procédez comme suit si vous avez besoin d'aide pour résoudre les problèmes liés au SDK ABAP pour Google Cloud:

Contributeurs

Auteur : Satish Inamdar | Ingénieur d'applications SAP

Autre contributeur : Vikash Kumar | Rédacteur technique