Google Chat-Apps für SAP

In diesem Dokument wird eine Referenzarchitektur für die Erstellung von Google Chat-Apps für SAP beschrieben. Dabei wird die lokale oder eine beliebige Cloud-Version des ABAP SDK for Google Cloud verwendet. Mit Chat-Apps können Sie Ihre SAP-Prozesse und ‑Workflows in Google Chat einbinden. So können Nutzer Benachrichtigungen wie Alarmmeldungen, Workflow-Benachrichtigungen, Systemwarnungen und Aktualisierungen zur Jobausführung in Google Workspace erhalten.

Dieses Dokument richtet sich an ABAP-Entwickler, SAP-Lösungsarchitekten und Cloud-Architekten. In diesem Dokument wird davon ausgegangen, dass Sie mit den Chat-Apps vertraut sind, die in Google Workspace verfügbar sind.

Architektur

Das folgende Diagramm zeigt eine Referenzarchitektur für die Implementierung von Einweg-Chat-Apps für SAP, mit denen Nachrichten von einem SAP-ERP-System an einen Chatbereich gesendet werden können:

Chat-Apps für SAP

Diese Referenzarchitektur umfasst die folgenden Komponenten:

# Komponente Details
1 SAP-Prozesse oder ‑Transaktionen Alle SAP-Prozesse oder -Transaktionen, für die Nutzerbenachrichtigungen gesendet werden müssen. Sie ist der Ausgangspunkt für die Kommunikation über Google Chat.
2 ABAP SDK for Google Cloud Die Lösung dient als Brücke zwischen SAP-Systemen und Google Cloud und ermöglicht eine sichere HTTPS-Kommunikation mit der Google Chat API.
3 Google Chat App-Projekt Das Google Cloud-Projekt, in dem Sie die Google Chat API aktiviert und Ihre Chat-App konfiguriert haben.
4 Chatbereich

Ein spezieller Chatroom in Google Chat, in dem Ihr SAP-System mit Nutzern kommunizieren kann.

Die Chat-Apps befinden sich in diesem Gruppenbereich und stellen über die Google Chat API einen Echtzeit-Informationsstream aus Ihren SAP-Systemen bereit.

Verwendete Produkte

In dieser Referenzarchitektur werden die folgenden Google-Produkte verwendet:

  • ABAP SDK for Google Cloud: Hilft Ihnen, ABAP-Anwendungen zu entwickeln, die Ihre SAP-Systeme mit Google Cloud-Diensten wie Google Chat verbinden.
  • Google Chat: Mit dieser Funktion können Sie interaktive und kollaborative Chat-Apps erstellen, um die Kommunikation und Produktivität zu verbessern.

Anwendungsfälle

Einweg-Chat-Apps sind nicht interaktiv. Sie können damit zwar Nachrichten an die Nutzer des Chat-Gruppenbereichs senden, diese können jedoch nicht auf die Chat-Apps antworten. Das folgende Diagramm veranschaulicht das Chatmuster für Einweg-Chat-Apps:

Muster für Chat-Apps

In der folgenden Liste sind einige Anwendungsfälle von Google Chat für SAP aufgeführt:

  • Benachrichtigung zu Workflow-Ereignissen: Sie können Nachrichten an die Chat-Apps für verschiedene Schritte im Workflow senden, um eine bestimmte Gruppe von Nutzern in einem Chatbereich zu benachrichtigen. Beispiel: Ein Nutzer genehmigt oder lehnt eine Bestellung ab.

  • Systembenachrichtigungen: Sie können Benachrichtigungen an einen Chatbereich senden, der für die Systemadministratoren bestimmt ist, um sie über das Erreichen verschiedener Systemgrenzwerte zu informieren. Dazu gehören beispielsweise die Laufwerksspeichernutzung, langlaufende Vorgänge, Cache-Sperren oder abgelaufene Lizenzen.

  • Aktualisierungen des Jobstatus: Sie können Aktualisierungen für lang andauernde benutzerdefinierte Jobs an eine Gruppe von Nutzern senden, die auf den Abschluss dieser Jobs warten und die Nachbearbeitungsvorgänge starten möchten.

Designaspekte

Wenn Sie Chat-Apps für Ihre Anwendungsfälle entwerfen, können mehrere Faktoren Ihre Designentscheidungen beeinflussen. Dieser Abschnitt enthält eine Anleitung zur Verwendung dieser Referenzarchitektur, um Architekturen zu entwickeln, die Ihnen helfen, Ihre spezifischen Anforderungen an Sicherheit, Datenschutz, Compliance und Kosten zu erfüllen.

Konfiguration der Google Chat App

  • Name der Chat-App: Geben Sie einen klaren und aussagekräftigen Namen für Ihre Chat-App an. Für eine reibungslose Nutzererfahrung sollte der Name der Chat-App die Funktionen oder die Dienste, mit denen sie verknüpft ist, genau widerspiegeln.

  • Zeitzonen: Ein Chatbereich kann von Mitgliedern verschiedener Zeitzonen gemeinsam genutzt werden. Daher ist es wichtig, Chat-Apps so zu konfigurieren, dass Nachrichten zu einer für alle Nutzer des Gruppenbereichs günstigen Zeit gesendet werden. Alternativ können Sie für wichtige Benachrichtigungen Mitglieder für Chatgruppenbereiche mit einer gemeinsamen Zeitzone festlegen und eine Logik erstellen, um zu bestimmen, an welchen Gruppenbereich die Chat-App Nachrichten senden kann.

Sicherheit, Datenschutz und Compliance

Um die Vertraulichkeit zu wahren, müssen strenge Kontrollen für die Weitergabe vertraulicher Informationen wie Kundenkontaktdaten, IBAN oder anderer für die Arbeit erforderlicher Daten in Chatbereichen implementiert werden. Wenn neuen Nutzern Chat-Gruppenbereiche hinzugefügt werden, in denen Chat-Apps hinzugefügt werden, müssen außerdem klare Regeln festgelegt werden, um diese Aktivitäten angemessen zu verwalten.

Sie können auch die Cloud Data Loss Prevention (DLP) API verwenden, um den Inhalt der Nachricht zu entfernen. Informationen zum Schutz sensibler Unternehmensdaten in SAP mit der DLP API finden Sie unter Datenschutz in SAP mit der DLP API.

Aus Sicherheitsgründen sollten Google Workspace-Administratoren die von Google empfohlenen Best Practices befolgen.

Kontingente und Limits

Die Google Chat API ist ein gemeinsam genutzter Dienst. Daher gelten Kontingente und Einschränkungen. Wenn Sie ein Kontingent überschreiten, erhalten Sie eine Antwort mit dem HTTP-Statuscode 429: Too many requests. Weitere Informationen zu Kontingenten und Limits finden Sie unter Nutzungslimits.

Die Google Chat API selbst ist kostenlos. Google Chat ist jedoch ein Google Workspace-Produkt. Google Workspace ist eine Suite mit Produktivitäts-Tools, zu denen unter anderem Gmail, Docs, Tabellen, Präsentationen und Google Chat gehören. Die Preisstruktur ist ganzheitlich, d. h., Sie können keine einzelnen Komponenten auswählen und kaufen. Weitere Informationen zu den Preisen finden Sie unter Google Workspace-Preise.

Designalternative

In diesem Dokument liegt der Schwerpunkt auf der lokalen oder einer beliebigen Cloud-Version des ABAP SDK for Google Cloud. Mit der SAP BTP-Version des ABAP SDK for Google Cloud können Sie jedoch ähnliche Ergebnisse erzielen. Sie können die bereitgestellten Ressourcen anpassen, um ähnliche Lösungen in Ihrer SAP BTP-Umgebung zu erstellen.

Hinweise

Bevor Sie eine Lösung auf Grundlage dieser Referenzarchitektur implementieren, müssen Sie die folgenden Voraussetzungen erfüllen:

Google Chat App konfigurieren

  1. Suchen Sie nach „Google Chat API“, klicken Sie auf Google Chat API und dann auf Verwalten.

    Chat API aufrufen

  2. Klicken Sie auf Konfiguration und richten Sie die Google Chat App ein:

    1. Geben Sie unter Anwendungsname Quickstart SAP App ein.
    2. Geben Sie unter Avatar-URL https://developers.google.com/chat/images/quickstart-app-avatar.png ein.
    3. Geben Sie unter Beschreibung Quickstart app for SAP ein.
  3. Deaktivieren Sie interaktive Funktionen.

  4. Klicken Sie auf Speichern.

Authentifizierung für Google Chat-Apps einrichten

Sie können sich bei Google Chat-Apps auf zwei Arten authentifizieren: als App selbst oder als Nutzer.

Wenn Ihre App automatisierte Aufgaben ausführen muss, z. B. das Senden von Systembenachrichtigungen ohne direkte Nutzerinteraktion, wird ein Dienstkonto verwendet. Wenn Ihre App im Namen eines Nutzers handeln soll, z. B. eine Nachricht als diese Person senden, ist eine Nutzerauthentifizierung erforderlich. Dieser Ansatz der doppelten Authentifizierung bietet Flexibilität und Kontrolle darüber, wie Ihre App mit Google Chat interagiert.

Mit dem ABAP SDK for Google Cloud können Sie beide Arten der Authentifizierung einrichten. Informationen zum Einrichten der Authentifizierung für Google Chat-Apps finden Sie unter:

Informationen zu Google Chat API-Methoden und ihren unterstützten Autorisierungsbereichen finden Sie unter Chat-Apps und Google Chat API-Anfragen authentifizieren und autorisieren.

In der in diesem Dokument beschriebenen Referenzarchitektur wird die Authentifizierung als Chat-App verwendet und es werden Zugriffstokens für die Authentifizierung verwendet.

So richten Sie die Authentifizierung als Chat-App ein:

  1. Konfigurieren Sie in der Google Cloud Console den OAuth-Zustimmungsbildschirm und wählen Sie Bereiche aus.
  2. Erstellen Sie in der Google Cloud Console ein Dienstkonto.
  3. Optional: Weisen Sie Ihrem Dienstkonto Rollen zu, um Zugriff auf die Ressourcen Ihres Google Cloud-Projekts zu gewähren. Weitere Informationen finden Sie unter Zugriff auf Dienstkonten verwalten.
  4. Konfigurieren Sie im SAP-System einen Clientschlüssel mit den folgenden Details:

    Feld Beschreibung
    Google Cloud-Schlüsselname Geben Sie einen Namen für die Konfiguration des Clientschlüssels an. Beispiel: ABAP_SDK_CHAT.
    Name des Google Cloud-Dienstkontos

    Geben Sie den Namen des Dienstkontos an, dem Sie Berechtigungen für den Zugriff auf die Google Chat API gewährt haben. Beispiel: sap-example-svc-acct@example-project-123456.iam.gserviceaccount.com.

    Google Cloud-Bereich Geben Sie den API-Zugriffsbereich an: https://www.googleapis.com/auth/chat.bot.
    Google Cloud-Projekt-ID Geben Sie die ID des Google Cloud-Projekts an, das Ihre aktivierte Google Chat API enthält.
    Befehlsname Lassen Sie dieses Feld leer.
    Autorisierungsklasse

    Geben Sie gegebenenfalls die Autorisierungsklasse an:

    • Für die Authentifizierung mit Zugriffstokens: /GOOG/CL_AUTH_GOOGLE
    • Für die Authentifizierung mit JWT: /GOOG/CL_AUTH_JWT
    Token-Caching

    Das Flag, das bestimmt, ob die aus Google Cloud abgerufenen Zugriffstoken im Cache gespeichert werden.

    Wir empfehlen, das Token-Caching zu aktivieren, nachdem Sie Ihre Verbindung zu Google Cloud konfiguriert und getestet haben. Weitere Informationen zum Token-Caching finden Sie unter Token-Caching aktivieren.

    Sekunden bis Tokenaktualisierung Gibt die Zeit in Sekunden an, bis ein Zugriffstoken abläuft und aktualisiert werden muss. Der Standardwert ist 3500.
    Autorisierungsparameter 1 Lassen Sie dieses Feld leer.
    Autorisierungsparameter 2 Lassen Sie dieses Feld leer.

Eine detaillierte Anleitung zum Einrichten der Authentifizierung finden Sie unter Mit Zugriffstokens authentifizieren oder Mit JSON-Webtokens authentifizieren.

Google Chat-App zu Gruppenbereichen hinzufügen

  1. Öffnen Sie die Google Chat App oder die Gmail App.
  2. Fügen Sie der Chat-App einen Chatbereich hinzu. Weitere Informationen finden Sie unter Apps in Unterhaltungen oder Gruppenbereichen hinzufügen.

Nachricht aus Ihrer ABAP-Umgebung senden

Google Chat und die Chat-Apps verwenden ein JSON-basiertes Nachrichtenformat. Jede Nachricht enthält Details wie Nutzer-ID, Stil und Inhalt. Chat-Apps können die folgenden Arten von Nachrichten senden:

  • SMS: SMS enthalten Nur-Text-Inhalte mit begrenzter Textformatierung.
  • Kartennachrichten: Mit Kartennachrichten werden das Format, der Inhalt und das Verhalten von Karten definiert, die in einem Gruppenbereich angezeigt werden sollen. Eine Kartennachricht kann beispielsweise eine Schaltfläche mit einem Link enthalten, über den ein Dialogfeld geöffnet wird, um Informationen von einem Nutzer zu erfassen.

Weitere Informationen zu Google Chat-Nachrichten finden Sie unter Google Chat-Nachrichten.

Wenn Sie mit dem ABAP SDK for Google Cloud Nachrichten von einem SAP-System an einen Chatbereich senden möchten, verwenden Sie die Methode CREATE_MESSAGES der Klasse /GOOG/CL_CHAT_V1.

SMS senden

Das folgende Codebeispiel zeigt, wie Sie eine SMS von einem SAP-System an einen Chatbereich senden:

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.

Ersetzen Sie Folgendes:

  • CLIENT_KEY: Der für die Authentifizierung konfigurierte Clientschlüssel.
  • TEXT_MESSAGE: Eine Textnachricht, die an den Chatbereich gesendet werden soll.
  • SPACE_ID: Die eindeutige ID des Chatbereichs. Wenn Sie die ID des Google Chat-Bereichs ermitteln möchten, öffnen Sie den Google Chat-Bereich in Ihrem Webbrowser. Sie finden die ID in der URL, wie im folgenden Screenshot dargestellt:

    ID des Chat-Bereichs

Karte mit Nachricht senden

Karten sind eine visuell ansprechende und interaktive Möglichkeit, Informationen zu präsentieren und so die Nutzerfreundlichkeit insgesamt zu verbessern. Sie können Elemente wie Titel, Bilder und Schaltflächen enthalten, damit Nutzer direkt über die Chatoberfläche mit den Inhalten interagieren können. Eine Karte für den Workflow einer Bestellung kann beispielsweise die folgenden Informationen enthalten:

  • Auftragsnummer
  • Datum des Dokuments
  • Dokumenttyp
  • Lieferunternehmen
  • Versandart

Verwenden Sie für die Kartenentwicklung mit dem ABAP SDK for Google Cloud die benutzerdefinierte Benutzeroberfläche ZGOOG_IF_CHAT_CARDS_V2 aus dem GitHub-Repository. Diese benutzerdefinierte Schnittstelle enthält die ABAP-Typen, die zum Erstellen von Karten erforderlich sind. Sie können Karten wie die folgende Beispielkarte für den Bestellvorgang erstellen:

ID des Chat-Bereichs

Weitere Informationen zum Entwerfen von Kartennachrichten finden Sie unter Karten für Google Chat-Apps erstellen.

Im folgenden Codebeispiel wird gezeigt, wie eine Kartennachricht von einem SAP-System an einen Chatbereich gesendet wird:

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.

Ersetzen Sie Folgendes:

  • CLIENT_KEY: Der für die Authentifizierung konfigurierte Clientschlüssel.
  • SPACE_ID: Die eindeutige ID des Chatbereichs. Wenn Sie die ID des Google Chat-Bereichs ermitteln möchten, öffnen Sie den Google Chat-Bereich in Ihrem Webbrowser. Sie finden die ID in der URL, wie im folgenden Screenshot dargestellt:

    ID des Chat-Bereichs

Nächste Schritte

  • Wenn Sie die in dieser Anleitung beschriebene Beispiellösung mit minimalem Aufwand bereitstellen möchten, verwenden Sie das Codebeispiel auf GitHub.

  • Informationen zu Google Workspace-Produkten finden Sie unter Häufige Fragen zu Google Workspace.

  • Wenn Sie Hilfe bei der Behebung von Problemen mit dem ABAP SDK for Google Cloud benötigen, gehen Sie so vor:

Beitragende

Autor: Satish Inamdar | SAP-Anwendungsingenieur

Weiterer Mitwirkender: Vikash Kumar | Technischer Autor