Aplikasi Google Chat untuk SAP

Dokumen ini menjelaskan arsitektur referensi untuk mem-build aplikasi Google Chat untuk SAP, dengan menggunakan ABAP SDK untuk Google Cloud edisi cloud atau lokal. Dengan aplikasi Chat, Anda dapat menghadirkan proses dan alur kerja SAP ke Google Chat, sehingga pengguna dapat menerima notifikasi seperti pelaporan alarm, pemberitahuan alur kerja, pemberitahuan sistem, dan info terbaru penyelesaian tugas dalam Google Workspace mereka.

Audiens yang dituju untuk dokumen ini mencakup developer ABAP, arsitek solusi SAP, dan arsitek cloud. Dokumen ini mengasumsikan bahwa Anda sudah memahami aplikasi Chat yang tersedia di Google Workspace.

Arsitektur

Diagram berikut menunjukkan arsitektur referensi untuk menerapkan aplikasi Chat satu arah untuk SAP yang dapat mengirim pesan ke ruang Chat dari sistem SAP ERP:

Aplikasi chat untuk SAP

Arsitektur referensi ini mencakup komponen berikut:

# Komponen Detail
1 Proses atau transaksi SAP Setiap proses atau transaksi SAP yang perlu mengirim notifikasi pengguna. Ini adalah titik awal untuk memicu komunikasi melalui Google Chat.
2 ABAP SDK untuk Google Cloud Berfungsi sebagai jembatan antara sistem SAP dan Google Cloud, yang memungkinkan komunikasi HTTPS aman dengan Google Chat API.
3 Project aplikasi Google Chat Project Google Cloud tempat Anda mengaktifkan Google Chat API dan mengonfigurasi aplikasi Chat.
4 ruang Chat

Ruang khusus dalam Google Chat tempat sistem SAP Anda dapat berkomunikasi dengan pengguna.

Aplikasi Chat berada di ruang ini, yang menyediakan streaming informasi secara real-time dari sistem SAP Anda melalui Google Chat API.

Produk yang digunakan

Arsitektur referensi ini menggunakan produk Google berikut:

  • ABAP SDK untuk Google Cloud: Membantu Anda mengembangkan aplikasi ABAP yang menghubungkan sistem SAP Anda ke layanan Google Cloud, seperti Google Chat.
  • Google Chat: Membantu Anda membuat aplikasi Chat interaktif dan kolaboratif, sehingga meningkatkan komunikasi dan produktivitas.

Kasus penggunaan

Aplikasi Chat satu arah bersifat non-interaktif dan memungkinkan Anda mengirim pesan kepada pengguna ruang Chat, tetapi pengguna tidak dapat merespons aplikasi Chat. Diagram berikut mengilustrasikan pola chat untuk aplikasi Chat satu arah:

Pola aplikasi Chat

Daftar berikut menampilkan beberapa kasus penggunaan Google Chat untuk SAP:

  • Notifikasi peristiwa alur kerja: Anda dapat mengirim pesan ke aplikasi Chat untuk berbagai langkah yang terlibat dalam proses alur kerja guna memberi tahu kumpulan pengguna tertentu yang ada di ruang Chat. Misalnya, pesanan pembelian disetujui atau ditolak oleh pengguna.

  • Notifikasi sistem: Anda dapat mengirim notifikasi ke ruang Chat yang ditujukan untuk admin sistem guna memberi tahu mereka tentang berbagai nilai minimum sistem yang tercapai. Misalnya, penggunaan ruang disk, operasi yang berjalan lama, kunci cache, atau masa berlaku lisensi.

  • Pembaruan status tugas: Anda dapat mengirim pembaruan untuk tugas kustom yang berjalan lama ke sekumpulan pengguna yang menunggu tugas tersebut selesai dan melakukan operasi pascapemrosesan.

Pertimbangan desain

Saat Anda mendesain aplikasi Chat untuk kasus penggunaan, ada beberapa faktor yang dapat memengaruhi keputusan desain Anda. Bagian ini memberikan panduan untuk membantu Anda menggunakan arsitektur referensi ini untuk mengembangkan arsitektur yang membantu Anda memenuhi persyaratan khusus untuk keamanan, privasi, kepatuhan, dan biaya.

Konfigurasi aplikasi Google Chat

  • Nama aplikasi Chat: Berikan nama yang jelas dan bermakna untuk aplikasi Chat Anda. Untuk pengalaman pengguna yang lancar, pastikan nama aplikasi Chat Anda secara akurat mencerminkan fungsinya atau layanan yang terintegrasi dengannya.

  • Zona waktu: Ruang Chat dapat dibagikan oleh anggota yang berada di berbagai zona waktu. Oleh karena itu, konfigurasi aplikasi Chat untuk mengirimkan pesan pada waktu yang nyaman bagi semua pengguna ruang sangatlah penting. Atau, untuk pemberitahuan atau notifikasi penting, Anda dapat menetapkan anggota ke ruang Chat dengan zona waktu bersama dan membuat logika untuk menentukan ruang mana yang dapat menerima pesan dari aplikasi Chat.

Keamanan, privasi, dan kepatuhan:

Untuk menjaga kerahasiaan, sangat penting untuk menerapkan kontrol ketat terhadap pembagian informasi sensitif, seperti detail kontak pelanggan, IBAN, atau data penting lainnya dalam ruang Chat. Selain itu, saat pengguna baru ditambahkan ke ruang Chat, tempat aplikasi Chat ditambahkan, Anda harus menetapkan peraturan yang jelas untuk memastikan pengelolaan aktivitas ini sesuai.

Anda juga dapat mempertimbangkan untuk menggunakan Cloud Data Loss Prevention (DLP) API untuk mengurangi sensitivitas konten pesan. Untuk informasi tentang cara melindungi data perusahaan sensitif di SAP menggunakan DLP API, lihat Perlindungan data di SAP dengan DLP API.

Untuk keamanan, pastikan admin Google Workspace mengikuti praktik terbaik yang direkomendasikan Google.

Kuota dan batas

Google Chat API adalah layanan bersama sehingga kuota dan batasan berlaku. Jika melebihi kuota, Anda akan menerima respons kode status HTTP 429: Too many requests. Untuk mengetahui informasi selengkapnya tentang kuota dan batas, lihat Batas penggunaan.

Google Chat API itu sendiri tidak memiliki biaya penggunaan, tetapi Google Chat adalah produk Google Workspace. Google Workspace, serangkaian alat produktivitas yang dipaketkan, mencakup Gmail, Dokumen, Spreadsheet, Slide, aplikasi Google Chat, dan lainnya. Struktur harganya bersifat holistik, yang berarti Anda tidak dapat memilih dan membeli setiap komponen. Untuk mengetahui informasi selengkapnya tentang harga, lihat Harga Google Workspace.

Alternatif desain

Meskipun dokumen ini berfokus pada ABAP SDK untuk Google Cloud edisi lokal atau cloud, Anda dapat memperoleh hasil yang serupa dengan menggunakan ABAP SDK untuk Google Cloud edisi SAP BTP. Anda dapat menyesuaikan resource yang disediakan untuk membuat solusi serupa dalam lingkungan SAP BTP.

Sebelum memulai

Sebelum menerapkan solusi berdasarkan arsitektur referensi ini, pastikan Anda telah menyelesaikan prasyarat berikut:

Mengonfigurasi aplikasi Google Chat

  1. Telusuri "Google Chat API" dan klik Google Chat API, lalu klik Kelola.

    Buka Chat API

  2. Klik Konfigurasi dan siapkan aplikasi Google Chat:

    1. Di App name, masukkan Quickstart SAP App.
    2. Di Avatar URL, masukkan https://developers.google.com/chat/images/quickstart-app-avatar.png.
    3. Di Deskripsi, masukkan Quickstart app for SAP.
  3. Menonaktifkan fitur interaktif.

  4. Klik Simpan.

Menyiapkan autentikasi untuk aplikasi Google Chat

Anda dapat mengautentikasi ke aplikasi Google Chat dengan dua cara: sebagai aplikasi itu sendiri atau sebagai pengguna.

Saat aplikasi Anda perlu melakukan tugas otomatis, seperti mengirim notifikasi sistem tanpa interaksi langsung pengguna, aplikasi akan menggunakan akun layanan. Jika Anda ingin aplikasi bertindak atas nama pengguna, seperti mengirim pesan sebagai orang tertentu tersebut, Anda memerlukan autentikasi pengguna. Pendekatan autentikasi ganda ini menawarkan fleksibilitas dan kontrol atas cara aplikasi Anda berinteraksi dengan Google Chat.

ABAP SDK untuk Google Cloud memungkinkan Anda menyiapkan kedua jenis autentikasi tersebut. Untuk mengetahui informasi tentang cara menyiapkan autentikasi untuk aplikasi Google Chat, lihat:

Untuk mengetahui informasi tentang metode Google Chat API dan cakupan otorisasi yang didukungnya, lihat Mengautentikasi serta mengizinkan aplikasi Chat dan permintaan API Google Chat.

Arsitektur referensi yang dijelaskan dalam dokumen ini menggunakan autentikasi sebagai aplikasi Chat dan menggunakan token akses untuk autentikasi.

Untuk menyiapkan autentikasi sebagai aplikasi Chat, lakukan langkah-langkah berikut:

  1. Di konsol Google Cloud, konfigurasi layar izin OAuth dan pilih cakupan.
  2. Di konsol Google Cloud, buat akun layanan.
  3. Opsional: Tetapkan peran ke akun layanan Anda untuk memberikan akses ke resource project Google Cloud Anda. Untuk mengetahui informasi selengkapnya, lihat Mengelola akses ke akun layanan.
  4. Dalam sistem SAP, konfigurasikan kunci klien dengan detail berikut:

    Kolom Deskripsi
    Nama Kunci Google Cloud Tentukan nama konfigurasi kunci klien. Misalnya, ABAP_SDK_CHAT.
    Nama Akun Layanan Google Cloud

    Tentukan nama akun layanan yang telah Anda beri izin untuk mengakses Google Chat API. Misalnya sap-example-svc-acct@example-project-123456..

    Cakupan Google Cloud Tentukan cakupan akses API: https://www.googleapis.com/auth/chat.bot.
    ID Project Google Cloud Tentukan ID project Google Cloud yang berisi Google Chat API yang diaktifkan.
    Nama perintah Kosongkan kolom ini.
    Class Otorisasi

    Tentukan class otorisasi, sebagaimana mestinya:

    • Untuk autentikasi menggunakan token akses: /GOOG/CL_AUTH_GOOGLE
    • Untuk autentikasi menggunakan JWT: /GOOG/CL_AUTH_JWT
    Penyimpanan Token ke Cache

    Tanda yang menentukan apakah token akses yang diambil dari Google Cloud disimpan ke cache atau tidak.

    Sebaiknya aktifkan penyimpanan token ke dalam cache setelah Anda selesai mengonfigurasi dan menguji koneksi Anda ke Google Cloud. Untuk mengetahui informasi selengkapnya tentang penyimpanan token ke dalam cache, lihat Mengaktifkan penyimpanan token ke dalam cache.

    Detik Pembaruan Token Lama waktu, dalam detik, sebelum masa berlaku token akses berakhir dan harus dimuat ulang. Nilai defaultnya adalah 3500.
    Parameter Otorisasi 1 Kosongkan kolom ini.
    Authorization Parameter 2 Kosongkan kolom ini.

Untuk mengetahui informasi tentang langkah-langkah mendetail untuk menyiapkan autentikasi, lihat Mengautentikasi menggunakan token akses atau Mengautentikasi menggunakan Token Web JSON.

Menambahkan aplikasi Google Chat ke ruang

  1. Buka aplikasi Google Chat atau Gmail.
  2. Tambahkan aplikasi Chat ke ruang Chat. Untuk mengetahui informasi tentang langkah-langkahnya, lihat Menambahkan aplikasi ke percakapan atau ruang.

Mengirim pesan dari lingkungan ABAP

Aplikasi Google Chat dan Chat menggunakan format pesan berbasis JSON, dengan setiap pesan berisi detail seperti ID pengguna, gaya, dan konten. Aplikasi chat dapat mengirim jenis pesan berikut:

  • Pesan teks: Pesan teks berisi konten teks biasa dengan pemformatan teks terbatas.
  • Pesan kartu: Pesan kartu menentukan format, konten, dan perilaku kartu yang akan ditampilkan di ruang. Misalnya, pesan kartu dapat menyertakan tombol dengan link yang membuka dialog untuk mengumpulkan informasi dari pengguna.

Untuk mengetahui informasi selengkapnya tentang pesan Google Chat, lihat ringkasan pesan Google Chat.

Untuk mengirim pesan dari sistem SAP ke ruang Chat menggunakan ABAP SDK untuk Google Cloud, Anda menggunakan metode CREATE_MESSAGES dari class /GOOG/CL_CHAT_V1.

Mengirim SMS

Contoh kode berikut mengilustrasikan cara mengirim pesan teks dari sistem SAP ke ruang 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.

Ganti kode berikut:

  • CLIENT_KEY: Kunci klien yang dikonfigurasi untuk autentikasi.
  • TEXT_MESSAGE: Pesan teks yang akan dikirim ke ruang Chat.
  • SPACE_ID: ID ID unik ruang Chat. Untuk menemukan ID ruang Chat, buka ruang Google Chat di browser web Anda. Anda dapat menemukan ID di URL, seperti yang diilustrasikan dalam screenshot berikut:

    ID ruang aplikasi Chat

Mengirim pesan kartu

Kartu memberikan cara yang menarik secara visual dan interaktif untuk menyajikan informasi, sehingga meningkatkan pengalaman pengguna secara keseluruhan. Kartu dapat menyertakan elemen seperti judul, gambar, tombol, dan lainnya, sehingga pengguna dapat berinteraksi dengan konten secara langsung dalam antarmuka chat. Misalnya, kartu alur kerja pesanan pembelian dapat menyertakan informasi berikut:

  • Nomor Pesanan Pembelian
  • Tanggal Dokumen
  • Jenis Dokumen
  • Pemasok
  • Jenis Pengiriman

Untuk pengembangan kartu dengan ABAP SDK untuk Google Cloud, gunakan antarmuka kustom ZGOOG_IF_CHAT_CARDS_V2, dari repositori GitHub. Antarmuka kustom ini berisi Jenis ABAP yang diperlukan untuk membuat kartu. Anda dapat membuat kartu seperti kartu contoh alur kerja pesanan berikut:

ID ruang aplikasi Chat

Untuk mengetahui informasi selengkapnya tentang cara mendesain pesan kartu, lihat Mem-build kartu untuk aplikasi Google Chat.

Contoh kode berikut mengilustrasikan cara mengirim pesan kartu dari sistem SAP ke ruang 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.

Ganti kode berikut:

  • CLIENT_KEY: Kunci klien yang dikonfigurasi untuk autentikasi.
  • SPACE_ID: ID ID unik ruang Chat. Untuk menemukan ID ruang Chat, buka ruang Google Chat di browser web Anda. Anda dapat menemukan ID di URL, seperti yang diilustrasikan dalam screenshot berikut:

    ID ruang aplikasi Chat

Langkah selanjutnya

Kontributor

Penulis: Satish Inamdar | SAP Application Engineer

Kontributor lainnya: Vikash Kumar | Technical Writer