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:
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:
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:
Sie haben ein Google Workspace-Konto für Unternehmen oder Organisationen mit Zugriff auf Google Chat.
Sie haben ein Google Cloud-Konto und -Projekt. Für jede Chat-App ist ein eigenes Google Cloud-Projekt erforderlich. Das bedeutet, dass Sie in einem Google Cloud-Projekt nur eine einzige Chat-App konfigurieren können.
Die Abrechnung ist für Ihr Projekt aktiviert. Informationen dazu, wie Sie prüfen, ob die Abrechnung für Ihr Projekt aktiviert ist, finden Sie unter Abrechnungsstatus Ihrer Projekte prüfen.
Die Google Chat API ist in Ihrem Google Cloud-Projekt aktiviert.
Google Chat App konfigurieren
Suchen Sie nach „Google Chat API“, klicken Sie auf Google Chat API und dann auf Verwalten.
Klicken Sie auf Konfiguration und richten Sie die Google Chat App ein:
- Geben Sie unter Anwendungsname
Quickstart SAP App
ein. - Geben Sie unter Avatar-URL
https://developers.google.com/chat/images/quickstart-app-avatar.png
ein. - Geben Sie unter Beschreibung
Quickstart app for SAP
ein.
- Geben Sie unter Anwendungsname
Deaktivieren Sie interaktive Funktionen.
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:
- Als Google Chat-App authentifizieren: Mit Zugriffstokens authentifizieren oder Mit JSON-Webtokens authentifizieren
- Als Google Chat-Nutzer authentifizieren und autorisieren: Mit OAuth 2.0-Clientanmeldedaten bei Google Workspace APIs authentifizieren
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:
- Konfigurieren Sie in der Google Cloud Console den OAuth-Zustimmungsbildschirm und wählen Sie Bereiche aus.
- Erstellen Sie in der Google Cloud Console ein Dienstkonto.
- 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.
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. - Für die Authentifizierung mit Zugriffstokens:
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
- Öffnen Sie die Google Chat App oder die Gmail App.
- 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:
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:
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:
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:
- Weitere Informationen finden Sie im Leitfaden zur Fehlerbehebung für ABAP SDK for Google Cloud.
- In den Cloud-Foren können Sie Ihre Fragen stellen und über die ABAP SDK für Google Cloud mit der Community sprechen.
- Erfassen Sie alle verfügbaren Diagnoseinformationen und wenden Sie sich an Cloud Customer Care. Weitere Informationen zur Kontaktaufnahme mit Customer Care finden Sie unter Support für SAP in Google Cloud.
Beitragende
Autor: Satish Inamdar | SAP-Anwendungsingenieur
Weiterer Mitwirkender: Vikash Kumar | Technischer Autor