App Google Chat per SAP

Questo documento descrive un'architettura di riferimento per la creazione di app Google Chat per SAP utilizzando l'edizione on-premise o qualsiasi versione cloud di ABAP SDK for Google Cloud. Con le app di Chat, puoi integrare le tue procedure e i tuoi flussi di lavoro SAP in Google Chat, consentendo agli utenti di ricevere notifiche come report di allarmi, avvisi sui flussi di lavoro, avvisi di sistema e aggiornamenti sul completamento dei job all'interno del loro account Google Workspace.

Il pubblico di destinazione di questo documento include sviluppatori ABAP, architetti di soluzioni SAP e architetti cloud. Questo documento presuppone che tu abbia dimestichezza con le app di chat disponibili in Google Workspace.

Architettura

Il seguente diagramma mostra un'architettura di riferimento per l'implementazione di app di Chat unidirezionali per SAP che possono inviare messaggi a uno spazio di Chat da un sistema SAP ERP:

App di chat per SAP

Questa architettura di riferimento include i seguenti componenti:

# Componente Dettagli
1 Processi o transazioni SAP Qualsiasi processo o transazione SAP che deve inviare notifiche agli utenti. È il punto di partenza per attivare la comunicazione tramite Google Chat.
2 ABAP SDK for Google Cloud Agisce da ponte tra i sistemi SAP e Google Cloud, consentendo la comunicazione HTTPS sicura con l'API Google Chat.
3 Progetto dell'app Google Chat Il progetto Google Cloud in cui hai attivato l'API Google Chat e configurato l'app Chat.
4 spazio di Chat

Una stanza dedicata all'interno di Google Chat in cui il sistema SAP può comunicare con gli utenti.

Le app di Chat si trovano in questo spazio e forniscono un stream di informazioni in tempo reale dai tuoi sistemi SAP tramite l'API Google Chat.

Prodotti utilizzati

Questa architettura di riferimento utilizza i seguenti prodotti Google:

  • ABAP SDK per Google Cloud: ti aiuta a sviluppare applicazioni ABAP che connettono i tuoi sistemi SAP ai servizi Google Cloud, come Google Chat.
  • Google Chat: ti aiuta a creare app di chat interattive e collaborative, migliorando la comunicazione e la produttività.

Casi d'uso

Le app di Chat unidirezionali non sono interattive e ti consentono di inviare messaggi agli utenti dello spazio di Chat, ma questi non possono rispondere alle app di Chat. Il seguente diagramma illustra il pattern di chat per le app di Chat unidirezionali:

Pattern di app di chat

Il seguente elenco mostra alcuni casi d'uso di Google Chat per SAP:

  • Notifica di eventi di flusso di lavoro: puoi inviare messaggi alle app di Chat per diversi passaggi coinvolti nella procedura di flusso di lavoro per avvisare un insieme specifico di utenti presenti in uno spazio di Chat. Ad esempio, un ordine di acquisto viene approvato o rifiutato da un utente.

  • Avvisi di sistema: puoi inviare avvisi a uno spazio di Chat pensato per gli amministratori di sistema per informarli del raggiungimento di varie soglie di sistema. Ad esempio, utilizzo dello spazio su disco, operazioni in esecuzione prolungata, bloccati della cache o scadenza della licenza.

  • Aggiornamenti dello stato dei job: puoi inviare aggiornamenti per i job personalizzati di lunga durata a un gruppo di utenti in attesa del completamento di questi job e che eseguono operazioni di post-elaborazione.

Note sul layout

Quando progetti app di chat per i tuoi casi d'uso, esistono diversi fattori che possono influenzare le tue decisioni di progettazione. Questa sezione fornisce indicazioni per aiutarti a utilizzare questa architettura di riferimento per sviluppare architetture che ti consentano di soddisfare i tuoi requisiti specifici per sicurezza, privacy, conformità e costi.

Configurazione dell'app Google Chat

  • Nome dell'app di Chat: fornisci un nome chiaro e significativo per la tua app di Chat. Per un'esperienza utente senza interruzioni, assicurati che il nome dell'app di Chat rifletta con precisione le sue funzionalità o i servizi con cui è integrata.

  • Fusi orari: uno spazio di Chat può essere condiviso da membri appartenenti a vari fusi orari. Pertanto, è essenziale configurare le app Chat per trasmettere i messaggi in un momento opportuno per tutti gli utenti dello spazio. In alternativa, per avvisi o notifiche importanti, puoi designare membri per gli spazi di Chat con un fuso orario condiviso e creare una logica per determinare a quale spazio l'app Chat può inviare messaggi.

Sicurezza, privacy e conformità

Per mantenere la riservatezza, è fondamentale implementare controlli rigorosi sulla condivisione di informazioni sensibili, come i dati di contatto dei clienti, gli IBAN o altri dati che devono essere noti all'interno degli spazi di Chat. Inoltre, quando vengono aggiunti nuovi utenti agli spazi di Chat, dove vengono aggiunte le app di Chat, è essenziale stabilire norme chiare per garantire una gestione appropriata di questa attività.

Puoi anche prendere in considerazione l'utilizzo dell'API Cloud Data Loss Prevention (DLP) per desensibilizzare i contenuti dei messaggi. Per informazioni su come proteggere i dati aziendali sensibili in SAP utilizzando l'API DLP, consulta Protezione dei dati in SAP con l'API DLP.

Per motivi di sicurezza, assicurati che gli amministratori di Google Workspace seguano le best practice consigliate da Google.

Quote e limiti

L'API Google Chat è un servizio condiviso, pertanto sono applicabili quote e limitazioni. Se superi una quota, ricevi una risposta con codice di stato HTTP 429: Too many requests. Per ulteriori informazioni su quote e limiti, consulta Limiti di utilizzo.

L'API Google Chat non prevede costi di utilizzo, ma Google Chat è un prodotto Google Workspace. Google Workspace, una suite di strumenti di produttività abbinati, include Gmail, Documenti, Fogli, Slides, le app Google Chat e altro ancora. La sua struttura di prezzi è olistica, il che significa che non puoi selezionare e acquistare singoli componenti. Per ulteriori informazioni sui prezzi, vedi Prezzi di Google Workspace.

Design alternativo

Sebbene questo documento si concentri sulla versione on-premise o su qualsiasi versione cloud di ABAP SDK for Google Cloud, puoi ottenere risultati simili utilizzando la versione SAP BTP di ABAP SDK for Google Cloud. Puoi adattare le risorse fornite per creare soluzioni simili all'interno del tuo ambiente SAP BTP.

Prima di iniziare

Prima di implementare una soluzione basata su questa architettura di riferimento, assicurati di aver completato i seguenti prerequisiti:

Configurare l'app Google Chat

  1. Cerca "API Google Chat" e fai clic su API Google Chat, poi fai clic su Gestisci.

    Vai all'API Chat

  2. Fai clic su Configurazione e configura l'app Google Chat:

    1. In Nome dell'app, inserisci Quickstart SAP App.
    2. In URL avatar, inserisci https://developers.google.com/chat/images/quickstart-app-avatar.png.
    3. In Descrizione, inserisci Quickstart app for SAP.
  3. Disattivare le funzionalità interattive.

  4. Fai clic su Salva.

Configurare l'autenticazione per le app Google Chat

Puoi autenticarti nelle app Google Chat in due modi: come app stessa o come utente.

Quando la tua app deve eseguire attività automatiche, ad esempio l'invio di notifiche di sistema senza interazione diretta dell'utente, utilizza un account di servizio. Se vuoi che la tua app agisca per conto di un utente, ad esempio inviando un messaggio come quella persona specifica, devi disporre dell'autenticazione utente. Questo approccio di autenticazione doppia offre flessibilità e controllo sul modo in cui la tua app interagisce con Google Chat.

L'SDK ABAP per Google Cloud ti consente di configurare entrambi i tipi di autenticazione. Per informazioni su come configurare l'autenticazione per le app Google Chat, consulta:

Per informazioni sui metodi dell'API Google Chat e sugli ambiti di autorizzazione supportati, vedi Autenticare e autorizzare le app di Chat e le richieste API di Google Chat.

L'architettura di riferimento descritta in questo documento utilizza l'autenticazione come app di chat e utilizza i token di accesso per l'autenticazione.

Per configurare l'autenticazione come app di chat, svolgi i seguenti passaggi:

  1. Nella console Google Cloud, configura la schermata per il consenso OAuth e scegli gli ambiti.
  2. Nella console Google Cloud, crea un account di servizio.
  3. (Facoltativo) Assegna i ruoli all'account di servizio per concedere l'accesso alle risorse del progetto Google Cloud. Per ulteriori informazioni, vedi Gestire l'accesso agli account di servizio.
  4. Nel sistema SAP, configura una chiave client con i seguenti dettagli:

    Campo Descrizione
    Nome della chiave Google Cloud Specifica un nome per la configurazione della chiave client. Ad esempio, ABAP_SDK_CHAT.
    Nome dell'account di servizio Google Cloud

    Specifica il nome dell'account di servizio a cui hai concesso le autorizzazioni per accedere all'API Google Chat. Ad esempio, sap-example-svc-acct@example-project-123456.iam.gserviceaccount.com.

    Ambito Google Cloud Specifica l'ambito di accesso API: https://www.googleapis.com/auth/chat.bot.
    Identificatore progetto Google Cloud Specifica l'ID del progetto Google Cloud che contiene l'API Google Chat abilitata.
    Nome comando Lascia vuoto questo campo.
    Classe di autorizzazione

    Specifica la classe di autorizzazione, se opportuno:

    • Per l'autenticazione tramite token di accesso: /GOOG/CL_AUTH_GOOGLE
    • Per l'autenticazione tramite JWT: /GOOG/CL_AUTH_JWT
    Memorizzazione nella cache dei token

    Il flag che determina se memorizzare o meno nella cache i token di accesso recuperati da Google Cloud.

    Ti consigliamo di attivare la memorizzazione nella cache dei token al termine della configurazione e del test della connessione a Google Cloud. Per ulteriori informazioni sulla memorizzazione nella cache dei token, consulta Attivare la memorizzazione nella cache dei token.

    Secondi di aggiornamento token Il periodo di tempo, in secondi, prima che un token di accesso scada e debba essere aggiornato. Il valore predefinito è 3500.
    Parametro di autorizzazione 1 Lascia vuoto questo campo.
    Parametro di autorizzazione 2 Lascia vuoto questo campo.

Per informazioni dettagliate sulla procedura di configurazione dell'autenticazione, consulta Eseguire l'autenticazione utilizzando i token di accesso o Eseguire l'autenticazione utilizzando i token web JSON.

Aggiungere l'app Google Chat agli spazi

  1. Apri le app Google Chat o Gmail.
  2. Aggiungi l'app Chat a uno spazio di Chat. Per informazioni sulla procedura, vedi Aggiungere app a conversazioni o spazi.

Inviare un messaggio dall'ambiente ABAP

Le app Google Chat e Chat utilizzano un formato di messaggio basato su JSON, con ogni messaggio contenente dettagli come ID utente, stile e contenuti. Le app di chat possono inviare i seguenti tipi di messaggi:

  • SMS: gli SMS contengono contenuti in testo normale con una formattazione limitata.
  • Messaggi delle schede: i messaggi delle schede definiscono il formato, i contenuti e il comportamento delle schede da visualizzare in uno spazio. Ad esempio, un messaggio della scheda può includere un pulsante con un link che apre una finestra di dialogo per raccogliere informazioni da un utente.

Per ulteriori informazioni sui messaggi di Google Chat, consulta la Panoramica dei messaggi di Google Chat.

Per inviare messaggi da un sistema SAP a uno spazio di Chat utilizzando l'SDK ABAP per Google Cloud, utilizza il metodo CREATE_MESSAGES della classe /GOOG/CL_CHAT_V1.

Invia un SMS

Il seguente esempio di codice mostra come inviare un messaggio da un sistema SAP a uno spazio di 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.

Sostituisci quanto segue:

  • CLIENT_KEY: la chiave client configurata per l'autenticazione.
  • TEXT_MESSAGE: un messaggio da inviare allo spazio di Chat.
  • SPACE_ID: l'ID identificatore univoco dello spazio di Chat. Per trovare l'ID dello spazio di Chat, apri lo spazio di Google Chat nel browser web. Puoi trovare l'ID nell'URL, come illustrato nello screenshot seguente:

    ID spazio delle app di chat

Inviare un messaggio della scheda

Le schede offrono un modo visivamente accattivante e interattivo per presentare le informazioni, migliorando l'esperienza utente complessiva. Possono includere elementi come titoli, immagini, pulsanti e altro ancora, consentendo agli utenti di interagire con i contenuti direttamente all'interno dell'interfaccia della chat. Ad esempio, una scheda del flusso di lavoro dell'ordine di acquisto potrebbe includere le seguenti informazioni:

  • Numero ordine di acquisto
  • Data del documento
  • Tipo di documento
  • Fornitore
  • Tipo di spedizione

Per lo sviluppo di schede con l'ABAP SDK per Google Cloud, utilizza l'interfaccia personalizzata ZGOOG_IF_CHAT_CARDS_V2 dal repository GitHub. Questa interfaccia personalizzata contiene i tipi ABAP necessari per creare schede. Puoi creare schede come la seguente scheda di esempio del flusso di lavoro degli ordini:

ID spazio delle app di chat

Per saperne di più sulla progettazione dei messaggi delle schede, consulta Creare schede per le app Google Chat.

Il seguente esempio di codice mostra come inviare un messaggio della scheda da un sistema SAP a uno spazio di 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.

Sostituisci quanto segue:

  • CLIENT_KEY: la chiave client configurata per l'autenticazione.
  • SPACE_ID: l'ID identificatore univoco dello spazio di Chat. Per trovare l'ID dello spazio di Chat, apri lo spazio di Google Chat nel browser web. Puoi trovare l'ID nell'URL, come illustrato nello screenshot seguente:

    ID spazio delle app di chat

Passaggi successivi

Collaboratori

Autore: Satish Inamdar | Ingegnere delle applicazioni SAP

Altro collaboratore: Vikash Kumar | Technical Writer