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:
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:
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:
Anda memiliki akun Google Workspace Business atau Enterprise dengan akses ke Google Chat.
Anda memiliki akun dan project Google Cloud. Setiap aplikasi Chat memerlukan project Google Cloud-nya sendiri. Artinya, Anda hanya dapat mengonfigurasi satu aplikasi Chat dalam satu project Google Cloud.
Penagihan diaktifkan untuk project Anda. Untuk informasi tentang cara mengonfirmasi bahwa penagihan diaktifkan untuk project Anda, lihat Memverifikasi status penagihan project.
ABAP SDK untuk Google Cloud edisi lokal atau cloud telah diinstal dan dikonfigurasi.
Google Chat API diaktifkan di project Google Cloud Anda.
Mengonfigurasi aplikasi Google Chat
Telusuri "Google Chat API" dan klik Google Chat API, lalu klik Kelola.
Klik Konfigurasi dan siapkan aplikasi Google Chat:
- Di App name, masukkan
Quickstart SAP App
. - Di Avatar URL, masukkan
https://developers.google.com/chat/images/quickstart-app-avatar.png
. - Di Deskripsi, masukkan
Quickstart app for SAP
.
- Di App name, masukkan
Menonaktifkan fitur interaktif.
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:
- Lakukan autentikasi sebagai aplikasi Google Chat: Lakukan autentikasi dengan menggunakan token akses atau Lakukan autentikasi dengan menggunakan Token Web JSON
- Lakukan autentikasi dan otorisasi sebagai pengguna Google Chat: Lakukan autentikasi ke Google Workspace API menggunakan kredensial klien OAuth 2.0
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:
- Di konsol Google Cloud, konfigurasi layar izin OAuth dan pilih cakupan.
- Di konsol Google Cloud, buat akun layanan.
- 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.
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 autentikasi menggunakan token akses:
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
- Buka aplikasi Google Chat atau Gmail.
- 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:
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:
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:
Langkah selanjutnya
Untuk men-deploy contoh solusi yang dijelaskan dalam panduan ini dengan upaya minimal, gunakan contoh kode yang disediakan di GitHub.
Untuk informasi tentang produk Google Workspace, lihat pertanyaan umum saat mempertimbangkan Google Workspace.
Jika Anda memerlukan bantuan untuk menyelesaikan masalah terkait ABAP SDK untuk Google Cloud, lakukan hal berikut:
- Lihat panduan pemecahan masalah ABAP SDK untuk Google Cloud.
- Ajukan pertanyaan dan diskusikan ABAP SDK untuk Google Cloud dengan komunitas di Cloud Forum.
- Kumpulkan semua informasi diagnostik yang tersedia dan hubungi Cloud Customer Care. Untuk mengetahui informasi tentang cara menghubungi Layanan Pelanggan, lihat Mendapatkan dukungan untuk SAP di Google Cloud.
Kontributor
Penulis: Satish Inamdar | SAP Application Engineer
Kontributor lainnya: Vikash Kumar | Technical Writer