Memilih arsitektur aplikasi Google Chat

Halaman ini menjelaskan pendekatan arsitektur layanan umum yang digunakan untuk membuat aplikasi Google Chat. Jika sudah memiliki aplikasi yang ingin diintegrasikan ke Google Chat, Anda dapat menggunakan atau menyesuaikan penerapan yang ada. Jika Anda membuat aplikasi Chat baru, halaman ini menyajikan informasi serupa dengan 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 serta 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

Membuat 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

Mengelola DevOps dan CI/CD secara menyeluruh

Gaya arsitektur layanan

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

Layanan web atau HTTP

Layanan web atau HTTP adalah arsitektur yang paling sering di-deploy karena memberikan fleksibilitas paling besar bagi developer untuk mem-build 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 lengkap.
  • Layanan aplikasi Chat diimplementasikan di server cloud atau on-premise.

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

Arsitektur aplikasi Chat yang menggunakan layanan web di server lokal.

Pada 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 pembuatan 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 dirancang 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 Mem-build aplikasi Google Chat.

Pub/Sub

Jika aplikasi Chat diterapkan di balik firewall, Chat tidak dapat melakukan panggilan HTTP ke firewall tersebut. Salah satu pendekatannya adalah menggunakan Pub/Sub untuk memungkinkan penerapan aplikasi Chat berlangganan 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 lengkap.

Diagram berikut menunjukkan arsitektur aplikasi Chat yang dibuat 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 dalam pesan langsung maupun di ruang Chat, atau peristiwa terjadi di ruang Chat yang langganan-nya aktif di aplikasi Chat.

  2. Chat mengirim pesan ke topik Pub/Sub.

  3. Server aplikasi, yang merupakan sistem cloud atau on-premise yang berisi logika aplikasi Chat, berlangganan ke 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.

Webhook

Anda dapat membuat aplikasi Chat yang hanya dapat mengirim pesan ke ruang Chat tertentu 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 terbatas pada 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 on-premise 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.

Jenis aplikasi Chat 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 prototyping aplikasi Chat.

Untuk memulai, lihat Mengirim pesan ke Chat dengan webhook.

Apps Script

Anda dapat membuat logika aplikasi Chat sepenuhnya dalam JavaScript. Google Apps Script adalah platform pengembangan kode rendah 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 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 Workspace dan Google lainnya, seperti Google Spreadsheet, Google Slide, Google Kalender, Google Drive, Google Maps, dan YouTube, seperti yang ditunjukkan dalam diagram berikut:

Arsitektur aplikasi Chat yang diterapkan dengan Apps Script.

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

  1. Pengguna mengirim pesan ke aplikasi Chat, baik dalam 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 Sheet, 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 Mem-build aplikasi Chat dengan Apps Script.

AppSheet

Anda dapat membuat aplikasi Chat yang dibagikan di seluruh domain tanpa kode menggunakan AppSheet. Anda dapat menyederhanakan proses pengembangan dengan menggunakan mode konfigurasi otomatis dan mengikuti template untuk mem-build 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.

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

  1. Pengguna mengirim pesan di Chat ke aplikasi Chat, baik dalam 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 Mem-build aplikasi Chat dengan AppSheet.

Dialogflow

Anda dapat membuat aplikasi Chat dengan Dialogflow, 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 dibuat dengan Dialogflow:

Arsitektur aplikasi Chat yang diterapkan dengan Dialogflow.

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

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

Untuk memulai, lihat Mem-build 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 mengizinkan 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 arsitekturnya:

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

Pada diagram sebelumnya, aplikasi Chat memiliki alur informasi berikut:

  1. Aplikasi Chat memanggil Chat API untuk mengirim pesan atau melakukan operasi lain.
  2. Chat akan menjalankan operasi yang diminta.
  3. Secara opsional, aplikasi Chat akan 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 AI lanjutan dan library atau layanan pemrosesan bahasa, berlangganan, dan merespons peristiwa, atau hal lain yang sesuai untuk sasaran tertentu.

Menangani interaksi pengguna

Aplikasi Chat dapat menerima dan merespons interaksi pengguna dengan beberapa cara. Interaksi pengguna adalah tindakan apa pun yang dilakukan pengguna untuk memanggil atau berinteraksi dengan aplikasi Chat.

Parser perintah

Aplikasi Chat yang didorong perintah memeriksa payload peristiwa interaksi aplikasi Chat, lalu mengekstrak perintah dan parameter dari konten ini. Misalnya, lihat Menyiapkan perintah garis miring untuk berinteraksi dengan pengguna Chat.

Pendekatan lainnya adalah dengan membuat token pesan, mengekstrak perintah, lalu mereferensikan kamus yang memetakan perintah ke fungsi pengendali 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 implementasi 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 Dialogflow CX Chat, 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 lainnya 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 bagaimana Anda ingin aplikasi Chat berinteraksi dengan pengguna. Bagian berikut menjelaskan pola percakapan yang dapat diterapkan aplikasi Chat Anda.

Panggilan dan respons (sinkron)

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

Arsitektur pesan sinkron.

Pada 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 kepada pengguna—misalnya, "Dr. Silva pukul 14.30".

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

Respons ganda (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 menghasilkan sejumlah pesan tambahan, seperti yang ditunjukkan dalam diagram berikut:

Arsitektur pesan asinkron.

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

  1. Pengguna mengirim pesan sinkron ke aplikasi Chat—misalnya, "Pantau traffic".
  2. Aplikasi Chat mengirimkan pesan sinkron kepada pengguna untuk mengonfirmasi permintaan—misalnya, "Pemantauan aktif".
  3. Kemudian, aplikasi Chat akan 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 nonaktif".

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

Membuat 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 resource Chat yang diubah, lalu meresponsnya dengan sesuai.

Aplikasi chat dapat menerima banyak jenis peristiwa, termasuk peristiwa tentang ruang, keanggotaan, pesan, dan reaksi. Saat aplikasi Chat menerima peristiwa dengan mengkueri Chat API atau melalui langganan aktif, aplikasi Chat dapat secara opsional menghasilkan 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 untuk peristiwa Chat

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

  1. Aplikasi Chat berlangganan ke ruang Google Chat.
  2. Ruang yang menjadi langganan aplikasi Chat akan berubah.
  3. Aplikasi Chat mengirimkan peristiwa ke suatu topik di Pub/Sub, yang berfungsi sebagai endpoint notifikasi 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 mengimplementasikan 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

Pesan satu arah dari pola 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.

Pada diagram sebelumnya, pengguna dalam ruang yang sama dengan aplikasi Chat memiliki alur informasi berikut:

  • Aplikasi Chat mengirim pesan asinkron ke pengguna dengan memanggil Chat API atau memposting ke URL webhook—misalnya, "Notifikasi antrean penuh".
  • 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

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