Memilih arsitektur aplikasi Google Chat

Halaman ini menjelaskan pendekatan arsitektur layanan umum yang digunakan untuk membuat aplikasi Google Chat. Jika memiliki aplikasi yang sudah ada dan ingin diintegrasikan ke Google Chat, Anda dapat menggunakan atau menyesuaikan penerapan yang sudah ada. Jika Anda sedang membangun aplikasi Chat baru, halaman ini menyajikan informasi serupa dalam beberapa cara berbeda untuk membantu Anda memilih arsitektur yang tepat untuk kasus penggunaan Anda:

Ringkasan menurut fitur dan kemampuan

Tabel berikut menyoroti fitur dan kemampuan utama aplikasi Chat dan gaya arsitektur layanan yang direkomendasikan (). Dalam beberapa kasus, gaya arsitektur lain mungkin dapat dikembangkan dengan fitur ini, tetapi tidak cocok untuk kasus penggunaan seperti gaya lainnya ().

Fitur dan kemampuan

Layanan web atau HTTP

Pub/Sub

Webhook

Apps Script

AppSheet

Dialogflow

Skrip

Penonton yang dituju

Tim Anda

Organisasi Anda

Publik

Interaktivitas pengguna

Menggunakan natural language processing

Pola pesan

Mengirim dan menerima pesan sinkron

Mengirim dan menerima pesan sinkron, serta mengirim pesan asinkron

Hanya mengirim pesan asinkron

Mengirim pesan dari sistem eksternal ke satu ruang Chat

Mengakses layanan dan sistem lain

Integrasikan dengan layanan Google yang lain

Berkomunikasi di balik firewall

Mengirim kueri atau berlangganan peristiwa Chat

Gaya coding dan deployment

Pengembangan tanpa kode

Pengembangan dengan low code

Pengembangan dalam bahasa pemrograman pilihan Anda

DevOps yang Disederhanakan

Pengelolaan DevOps dan CI/CD yang lengkap

Gaya arsitektur layanan

Bagian ini menjelaskan beberapa pendekatan arsitektur paling umum yang digunakan untuk membuat aplikasi Chat.

Layanan web atau HTTP

Layanan web atau HTTP adalah arsitektur yang paling umum di-deploy karena memberikan fleksibilitas terbesar bagi developer untuk membangun aplikasi Chat publik. Arsitektur ini direkomendasikan untuk kasus penggunaan berikut:

  • Aplikasi Chat di-deploy ke publik di Google Workspace Marketplace.
  • Aplikasi Chat dapat mengirim dan menerima semua pola pesan: mengirim dan menerima pesan sinkron, mengirim pesan asinkron, dan mengirim pesan dari sistem eksternal.
  • Aplikasi Chat dikembangkan dalam bahasa pemrograman apa pun.
  • Aplikasi Chat memerlukan pengelolaan DevOps dan CI/CD secara menyeluruh.
  • Layanan aplikasi Chat diimplementasikan di server cloud atau server lokal.

Dalam desain ini, Anda mengonfigurasi Chat untuk berintegrasi dengan layanan jarak jauh menggunakan HTTP, seperti yang ditunjukkan dalam diagram berikut:

Arsitektur aplikasi Chat yang menggunakan layanan web di server lokal.

Dalam diagram sebelumnya, pengguna yang berinteraksi dengan aplikasi Chat HTTP memiliki alur informasi berikut:

  1. Pengguna mengirim pesan di ruang Chat ke aplikasi Chat.
  2. Permintaan HTTP dikirim ke server web yang merupakan sistem cloud atau lokal yang berisi logika aplikasi Chat.
  3. Secara opsional, logika aplikasi Chat dapat berinteraksi dengan layanan pihak ketiga eksternal, seperti sistem pengelolaan project atau alat tiket.
  4. Server web mengirimkan respons HTTP kembali ke layanan aplikasi Chat di Chat.
  5. Respons dikirimkan kepada pengguna.
  6. Secara opsional, aplikasi Chat dapat memanggil Chat API untuk memposting pesan secara asinkron atau melakukan operasi lainnya.

Arsitektur ini memberi Anda fleksibilitas untuk menggunakan library dan komponen yang sudah ada di sistem Anda karena aplikasi Chat ini dapat didesain menggunakan bahasa pemrograman yang berbeda. Ada berbagai cara untuk menerapkan arsitektur ini. Di Google Cloud, Anda dapat menggunakan Cloud Functions, Cloud Run, dan App Engine. Untuk memulai, lihat Membangun aplikasi Google Chat.

Pub/Sub

Jika aplikasi Chat diterapkan di balik firewall, Chat tidak dapat melakukan panggilan HTTP ke aplikasi tersebut. Salah satu pendekatannya adalah menggunakan Pub/Sub untuk memungkinkan penerapan aplikasi Chat berlangganan ke topik yang membawa pesan dari Chat. Pub/Sub adalah layanan pesan asinkron yang memisahkan layanan yang menghasilkan pesan dari layanan yang memproses pesan tersebut. Arsitektur ini direkomendasikan untuk kasus penggunaan berikut:

  • Aplikasi Chat dibuat di balik firewall.
  • Aplikasi Chat menerima peristiwa tentang ruang Chat.
  • Aplikasi Chat di-deploy ke organisasi Anda.
  • Aplikasi Chat dapat mengirim dan menerima pesan sinkron, serta dapat mengirim pesan asinkron.
  • Aplikasi Chat dikembangkan dalam bahasa pemrograman apa pun.
  • Aplikasi Chat memerlukan pengelolaan DevOps dan CI/CD secara menyeluruh.

Diagram berikut menunjukkan arsitektur aplikasi Chat yang dibangun dengan Pub/Sub:

Arsitektur aplikasi Chat yang diimplementasikan dengan Pub/Sub.

Dalam diagram sebelumnya, pengguna yang berinteraksi dengan aplikasi Chat Pub/Sub memiliki alur informasi berikut:

  1. Pengguna mengirim pesan di Chat ke aplikasi Chat, baik di pesan langsung maupun di ruang Chat, atau peristiwa terjadi di ruang Chat yang aplikasi Chat-nya memiliki langganan aktif.

  2. Chat mengirim pesan ke topik Pub/Sub.

  3. Server aplikasi, yaitu sistem cloud atau lokal yang berisi logika aplikasi Chat, berlangganan topik Pub/Sub untuk menerima pesan melalui firewall.

  4. Secara opsional, aplikasi Chat dapat memanggil Chat API untuk memposting pesan secara asinkron atau melakukan operasi lainnya.

Untuk memulai, lihat Menggunakan Pub/Sub sebagai endpoint untuk aplikasi Chat Anda.

Webhook

Anda dapat membuat aplikasi Chat yang hanya dapat mengirim pesan ke ruang Chat tertentu dengan menggunakan panggilan ke URL webhook Chat. Arsitektur ini direkomendasikan untuk kasus penggunaan berikut:

  • Aplikasi Chat di-deploy ke tim Anda.
  • Aplikasi Chat mengirim pesan dari sistem eksternal ke satu ruang Chat.

Dengan arsitektur ini, aplikasi Chat dibatasi untuk ruang Chat tertentu dan tidak mengizinkan interaksi pengguna, seperti yang ditunjukkan dalam diagram berikut:

Arsitektur untuk webhook masuk guna mengirim pesan asinkron ke Chat.

Dalam diagram sebelumnya, aplikasi Chat memiliki alur informasi berikut:

  1. Logika aplikasi Chat menerima informasi dari layanan pihak ketiga eksternal, seperti sistem pengelolaan project atau alat pembuatan tiket.
  2. Logika aplikasi Chat dihosting di sistem cloud atau lokal yang dapat mengirim pesan menggunakan URL webhook ke ruang Chat tertentu.
  3. Pengguna dapat menerima pesan dari aplikasi Chat di ruang Chat tertentu tersebut, tetapi tidak dapat berinteraksi dengan aplikasi Chat.

Aplikasi Chat jenis ini tidak dapat dibagikan di ruang Chat lain atau dengan tim lain, dan tidak dapat dipublikasikan ke Google Workspace Marketplace. Webhook masuk direkomendasikan untuk aplikasi Chat guna melaporkan pemberitahuan atau status, atau untuk beberapa jenis pembuatan prototipe aplikasi Chat.

Untuk memulai, lihat Mengirim pesan ke Chat dengan webhook.

Apps Script

Anda dapat membuat logika aplikasi Chat sepenuhnya di JavaScript. Google Apps Script adalah platform pengembangan yang hanya memerlukan sedikit coding untuk aplikasi Chat. Apps Script menangani alur otorisasi dan token OAuth 2.0 untuk autentikasi pengguna. Anda dapat menggunakan Apps Script untuk membuat aplikasi Chat publik, tetapi tidak direkomendasikan karena kuota dan batas harian.

Arsitektur ini direkomendasikan untuk kasus penggunaan berikut:

  • Aplikasi Chat di-deploy ke tim Anda, atau organisasi Anda.
  • Aplikasi Chat dapat mengirim dan menerima semua pola pesan: mengirim dan menerima pesan sinkron, mengirim pesan asinkron, dan mengirim pesan dari sistem eksternal.
  • Aplikasi Chat memerlukan pengelolaan DevOps yang disederhanakan.

Arsitektur ini berguna untuk aplikasi Chat yang juga terintegrasi dengan layanan Google dan Google Workspace lainnya, seperti Google Spreadsheet, Google Slide, Google Kalender, Google Drive, Google Maps, dan YouTube, seperti yang ditunjukkan dalam diagram berikut:

Arsitektur aplikasi Chat yang diimplementasikan dengan Apps Script.

Dalam diagram sebelumnya, pengguna yang berinteraksi dengan aplikasi Chat Apps Script memiliki alur informasi berikut:

  1. Pengguna mengirim pesan ke aplikasi Chat, baik di pesan langsung maupun di ruang Chat.
  2. Logika aplikasi Chat yang diterapkan di Apps Script, yang berada di Google Cloud, menerima pesan.
  3. Secara opsional, logika aplikasi Chat dapat terintegrasi dengan layanan Google Workspace, seperti Kalender atau Spreadsheet, atau Layanan Google lainnya, seperti Google Maps atau YouTube.
  4. Logika aplikasi Chat mengirim respons kembali ke layanan aplikasi Chat di Chat.
  5. Respons dikirimkan kepada pengguna.

Untuk memulai, lihat Membangun aplikasi Chat dengan Apps Script.

AppSheet

Anda dapat membuat aplikasi Chat yang dibagikan di domain tanpa kode menggunakan AppSheet. Anda dapat menyederhanakan proses pengembangan dengan menggunakan mode konfigurasi otomatis dan mengikuti template untuk membuat tindakan aplikasi Chat umum. Namun, beberapa fitur aplikasi web AppSheet tidak tersedia di aplikasi Chat.

Arsitektur ini direkomendasikan untuk kasus penggunaan berikut:

  • Aplikasi Chat di-deploy untuk Anda dan tim Anda.
  • Aplikasi Chat dapat mengirim dan menerima pesan sinkron, serta dapat mengirim pesan asinkron.
  • Aplikasi Chat memerlukan pengelolaan DevOps yang disederhanakan.

Diagram berikut menunjukkan arsitektur aplikasi Chat yang dibuat dengan AppSheet:

Arsitektur aplikasi Chat yang diimplementasikan dengan AppSheet.

Dalam diagram sebelumnya, pengguna yang berinteraksi dengan aplikasi Chat AppSheet memiliki alur informasi berikut:

  1. Pengguna mengirim pesan di Chat ke aplikasi Chat, baik di pesan langsung maupun di ruang Chat.
  2. Logika aplikasi Chat yang diterapkan di AppSheet, yang berada di Google Cloud, menerima pesan.
  3. Secara opsional, logika aplikasi Chat dapat terintegrasi dengan layanan Google Workspace, seperti Apps Script atau Google Spreadsheet.
  4. Logika aplikasi Chat mengirim respons kembali ke layanan aplikasi Chat di Chat.
  5. Respons dikirimkan kepada pengguna.

Untuk memulai, lihat Membangun aplikasi Chat dengan AppSheet.

Dialogflow

Anda dapat membuat aplikasi Chat dengan Dialogflow, sebuah platform bahasa alami untuk percakapan otomatis dan respons dinamis. Arsitektur ini direkomendasikan untuk kasus penggunaan berikut:

  • Aplikasi Chat dapat mengirim dan menerima pesan sinkron.
  • Aplikasi Chat menggunakan natural language processing untuk merespons dan berinteraksi dengan pengguna.

Diagram berikut menunjukkan arsitektur aplikasi Chat yang dibangun dengan Dialogflow:

Arsitektur aplikasi Chat yang diimplementasikan dengan Dialogflow.

Dalam diagram sebelumnya, pengguna yang berinteraksi dengan aplikasi Chat Dialogflow memiliki alur informasi berikut:

  1. Pengguna mengirim pesan di Chat ke aplikasi Chat, baik di pesan langsung maupun di ruang Chat.
  2. Agen virtual Dialogflow, yang berada di Google Cloud, menerima dan memproses pesan untuk menghasilkan respons.
  3. Atau, menggunakan webhook Dialogflow, agen Dialogflow dapat berinteraksi dengan layanan pihak ketiga eksternal, seperti sistem manajemen project atau alat ticketing.
  4. Agen Dialogflow mengirimkan respons kembali ke layanan aplikasi Chat di Chat.
  5. Respons akan dikirim ke ruang Chat.

Untuk memulai, lihat Membangun aplikasi Google Chat Dialogflow.

Aplikasi atau skrip command line

Anda dapat membuat aplikasi command line atau skrip yang mengirim pesan ke Chat atau melakukan operasi lain, seperti membuat ruang atau mengelola anggota ruang, tanpa membiarkan pengguna langsung memanggil atau merespons aplikasi Chat di Chat. Arsitektur ini direkomendasikan untuk kasus penggunaan berikut:

  • Aplikasi Chat dikembangkan dalam bahasa pemrograman apa pun.
  • Aplikasi Chat hanya dapat mengirim pesan asinkron.

Diagram berikut menunjukkan arsitektur:

Arsitektur aplikasi Chat yang diimplementasikan dengan aplikasi command line atau skrip.

Dalam diagram sebelumnya, aplikasi Chat memiliki alur informasi berikut:

  1. Aplikasi Chat memanggil Chat API untuk mengirim pesan atau melakukan operasi lain.
  2. Chat menjalankan operasi yang diminta.
  3. Secara opsional, aplikasi Chat mencetak konfirmasi di CLI.

Implementasi logika aplikasi Chat

Chat tidak membatasi cara Anda menerapkan logika aplikasi Chat. Anda dapat membuat parser perintah sintaksis tetap, menggunakan layanan atau library pemrosesan bahasa dan AI tingkat lanjut, berlangganan dan merespons peristiwa, atau hal lain yang sesuai untuk tujuan tertentu Anda.

Menangani interaksi pengguna

Aplikasi chat dapat berinteraksi dengan pengguna dalam sejumlah cara. Interaksi pengguna adalah tindakan apa pun yang dilakukan pengguna untuk memanggil atau berinteraksi dengan aplikasi Chat.

Parser perintah

Aplikasi Chat yang digerakkan oleh perintah memeriksa payload peristiwa interaksi aplikasi Chat, lalu mengekstrak perintah dan parameter dari konten ini. Misalnya, lihat Menanggapi perintah aplikasi Google Chat.

Pendekatan lain adalah membuat token pesan, mengekstrak perintah, lalu mereferensikan kamus yang memetakan perintah ke fungsi handler untuk setiap perintah.

Antarmuka pengguna berbasis dialog

Aplikasi berbasis dialog merespons Peristiwa interaksi aplikasi Chat dengan menampilkan dialog berbasis kartu tempat pengguna dapat berinteraksi dengan aplikasi Chat, seperti mengisi formulir atau meminta tindakan.

Setiap kali pengguna menjalankan tindakan dalam dialog, peristiwa interaksi baru akan dikirim ke aplikasi Chat, yang dapat merespons dengan memperbarui dialog atau mengirim pesan.

Natural language processing

Banyak penerapan aplikasi Chat menggunakan natural language processing (NLP) untuk menentukan apa yang diminta pengguna. Ada banyak cara untuk menerapkan NLP, dan Anda dapat memilih untuk menerapkan NLP sesuai keinginan Anda.

Anda dapat menggunakan NLP dalam penerapan aplikasi Chat dengan Dialogflow ES atau integrasi Chat Dialogflow CX, yang memungkinkan Anda membuat agen virtual untuk percakapan otomatis dan respons dinamis.

Mengirim permintaan ke Chat secara proaktif

Aplikasi Chat juga dapat mengirim pesan atau permintaan lain ke Chat, yang tidak dipicu oleh interaksi langsung pengguna di Chat. Sebagai gantinya, aplikasi Chat ini dapat dipicu—misalnya, oleh aplikasi pihak ketiga, atau menggunakan pemanggilan command line dari pengguna, tetapi pengguna tidak dapat berinteraksi dengan aplikasi Chat ini secara langsung di Chat.

Aplikasi Chat non-interaktif menggunakan Chat API untuk mengirim pesan atau jenis permintaan lainnya ke Chat.

Pola percakapan

Anda harus mempertimbangkan cara Anda ingin aplikasi Chat berinteraksi dengan pengguna. Bagian berikut menjelaskan pola percakapan yang mungkin diterapkan oleh aplikasi Chat Anda.

Panggilan dan respons (sinkron)

Dalam pola panggilan dan respons sinkron, aplikasi Chat merespons pesan dari pengguna secara personal. Satu pesan ke aplikasi Chat oleh pengguna akan menghasilkan satu respons dari aplikasi Chat, seperti yang ditunjukkan dalam diagram berikut:

Arsitektur pesan sinkron.

Dalam diagram sebelumnya, pengguna yang berinteraksi dengan aplikasi Chat memiliki alur informasi berikut:

  1. Pengguna mengirim pesan sinkron ke aplikasi Chat—misalnya, "Apa rapat saya berikutnya?".
  2. Aplikasi Chat mengirim pesan sinkron ke pengguna, misalnya, "Dr. Silva pukul 14.30".

Untuk jenis pola percakapan ini, Anda dapat menerapkan arsitektur aplikasi Chat menggunakan layanan web, Pub/Sub, Apps Script, AppSheet, atau Dialogflow.

Beberapa respons (asinkron)

Pola beberapa respons dapat mencakup pesan sinkron dan asinkron. Pola ini ditandai dengan komunikasi dua arah antara pengguna dan aplikasi Chat, dengan aplikasi Chat membuat sejumlah pesan tambahan, seperti yang ditunjukkan dalam diagram berikut:

Arsitektur pesan asinkron.

Dalam diagram sebelumnya, pengguna yang berinteraksi dengan aplikasi Chat memiliki alur informasi berikut:

  1. Pengguna mengirim pesan sinkron ke aplikasi Chat—misalnya, "Pantau lalu lintas".
  2. Aplikasi Chat mengirimkan pesan sinkron kepada pengguna untuk mengonfirmasi permintaan—misalnya, "Pemantauan aktif".
  3. Selanjutnya, aplikasi Chat mengirim satu atau beberapa pesan asinkron kepada pengguna dengan memanggil REST API—misalnya, "Traffic baru".
  4. Pengguna mengirim pesan sinkron tambahan ke aplikasi Chat—misalnya, "Abaikan traffic".
  5. Aplikasi Chat mengirimkan pesan sinkron kepada pengguna untuk mengonfirmasi permintaan—misalnya, "Pemantauan dinonaktifkan".

Untuk jenis pola percakapan ini, Anda dapat menerapkan arsitektur aplikasi Chat menggunakan layanan web, Pub/Sub, Apps Script, atau AppSheet.

Mengirim kueri atau berlangganan peristiwa (asinkron)

Dalam pola berbasis peristiwa asinkron, aplikasi Chat menerima peristiwa dengan membuat kueri Chat API atau membuat langganan ke ruang atau pengguna Chat menggunakan Google Workspace Events API. Peristiwa mewakili perubahan pada resource Chat, seperti saat pesan baru diposting atau saat pengguna bergabung ke ruang. Aplikasi Chat berbasis peristiwa memeriksa payload peristiwa untuk mendapatkan data tentang perubahan resource Chat, lalu meresponsnya dengan tepat.

Aplikasi Chat dapat menerima banyak jenis peristiwa, termasuk peristiwa tentang ruang, keanggotaan, pesan, dan reaksi. Saat menerima peristiwa dengan mengkueri Chat API atau melalui langganan aktif, aplikasi Chat dapat secara opsional membuat sejumlah respons asinkron, yang dikirim kembali ke Chat menggunakan Chat API.

Anda dapat menggunakan jenis logika ini untuk memperbarui sistem eksternal, seperti sistem pengelolaan tiket, atau mengirim pesan ke ruang Chat secara asinkron—misalnya, dengan mengirim pesan selamat datang saat pengguna baru bergabung ke ruang Chat.

Diagram berikut menunjukkan contoh pola percakapan berbasis peristiwa:

Arsitektur langganan ke peristiwa Chat

Dalam diagram sebelumnya, interaksi antara Chat dan aplikasi Chat memiliki alur informasi berikut:

  1. Aplikasi Chat berlangganan ke ruang Google Chat.
  2. Ruang tempat aplikasi Chat berlangganan berubah.
  3. Aplikasi Chat mengirimkan peristiwa ke topik di Pub/Sub, yang berfungsi sebagai notification endpoint untuk langganan. Peristiwa ini berisi data tentang hal-hal yang berubah di resource.
  4. Aplikasi Chat memproses pesan Pub/Sub yang berisi peristiwa tersebut, dan jika perlu, akan mengambil tindakan.

Untuk jenis pola percakapan ini, Anda dapat menerapkan arsitektur Aplikasi chat menggunakan Pub/Sub, layanan web, atau Apps Script.

Untuk mempelajari lebih lanjut cara menerima dan merespons peristiwa, lihat artikel Bekerja dengan peristiwa dari peristiwa Google Chat.

Pesan satu arah dari aplikasi Chat

Pola pesan satu arah dari aplikasi Chat memungkinkan aplikasi Chat mengirim pesan asinkron ke ruang Chat, tetapi tidak memungkinkan pengguna berinteraksi langsung dengan aplikasi Chat. Pola ini tidak bersifat percakapan atau interaktif, tetapi dapat berguna untuk hal-hal seperti pelaporan alarm, seperti yang ditunjukkan dalam diagram berikut:

Arsitektur pesan satu arah.

Dalam diagram sebelumnya, pengguna di ruang yang sama dengan aplikasi Chat memiliki alur informasi berikut:

  • Aplikasi Chat mengirim pesan asinkron kepada pengguna dengan memanggil Chat API atau memposting ke URL webhook—misalnya, "Peringatan overflow antrean".
  • Secara opsional, aplikasi Chat mengirimkan pesan asinkron tambahan.

Untuk jenis pola percakapan ini, Anda dapat menerapkan arsitektur aplikasi Chat menggunakan layanan web, webhook, Apps Script, AppSheet, aplikasi command line, atau skrip.

Pesan satu arah ke aplikasi Chat

Pola pesan satu arah ke aplikasi Chat memungkinkan pengguna mengirim pesan ke aplikasi Chat tanpa aplikasi Chat merespons saat masih memproses permintaan. Meskipun arsitektur ini secara teknis memungkinkan, hal ini akan menghasilkan pengalaman pengguna yang buruk dan kami sangat tidak menyarankan pola ini.