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 implementasi yang ada. Jika Anda mem-build aplikasi Chat baru, halaman ini menyajikan informasi serupa dalam beberapa cara berbeda untuk membantu Anda memilih arsitektur yang tepat untuk kasus penggunaan Anda:

Ringkasan berdasarkan 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 sebagus gaya arsitektur lainnya ().

Fitur dan kemampuan

Layanan web atau HTTP

Pub/Sub

Webhook

Apps Script

AppSheet

Dialogflow

Skrip

Penonton yang ditargetkan

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 kirim 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

Berlangganan acara Google Workspace

Gaya coding dan deployment

Pengembangan tanpa kode

Pengembangan dengan kode rendah

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 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 yang lengkap.
  • Layanan aplikasi Chat diimplementasikan di cloud atau server lokal.

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

Arsitektur aplikasi Chat menggunakan layanan web di server lokal.

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

  1. Pengguna mengirim pesan dalam 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 penjualan tiket.
  4. Server web mengirimkan respons HTTP kembali ke layanan aplikasi Chat di Chat.
  5. Respons dikirimkan ke 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 ada 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, baca artikel Mem-build aplikasi Google Chat dengan Cloud Functions.

Pub/Sub

Jika aplikasi Chat diimplementasikan di belakang firewall, Chat tidak dapat melakukan panggilan HTTP ke aplikasi tersebut. Salah satu pendekatannya adalah menggunakan Pub/Sub untuk mengaktifkan implementasi aplikasi Chat agar 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 yang lengkap.

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

Arsitektur aplikasi Chat yang diimplementasikan dengan Pub/Sub.

Pada 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 yang terjadi di ruang Chat dengan aplikasi Chat memiliki langganan aktif.

  2. Chat mengirim pesan ke topik Pub/Sub.

  3. Server aplikasi, yang merupakan sistem cloud atau lokal yang berisi logika aplikasi Chat, berlangganan ke topik Pub/Sub agar dapat 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 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 pada ruang Chat tertentu dan tidak memungkinkan 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 penjualan 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, 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 bagi aplikasi Chat untuk melaporkan pemberitahuan atau status, atau untuk beberapa jenis 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 memerlukan sedikit kode untuk aplikasi Chat. Apps Script menangani alur otorisasi dan token OAuth 2.0 untuk autentikasi pengguna. Anda dapat menggunakan Apps Script untuk mem-build 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 diimplementasikan 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 dalam ruang Chat.
  2. Logika aplikasi Chat yang diimplementasikan dalam Apps Script, yang berada di Google Cloud, akan 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 mengirimkan respons kembali ke layanan aplikasi Chat di Chat.
  5. Respons dikirimkan ke pengguna.

Untuk memulai, lihat Membangun aplikasi Chat dengan Apps Script.

AppSheet

Anda dapat membuat aplikasi Chat bersama domain tanpa kode menggunakan AppSheet. Anda dapat menyederhanakan proses pengembangan menggunakan mode konfigurasi otomatis dan template berikut untuk membuat tindakan aplikasi Chat yang 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.
  • 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 dibangun dengan AppSheet:

Arsitektur aplikasi Chat yang diterapkan 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 diimplementasikan di AppSheet, yang berada di Google Cloud, akan menerima pesan.
  3. Secara opsional, logika aplikasi Chat dapat diintegrasikan dengan layanan Google Workspace, seperti Apps Script atau Google Spreadsheet.
  4. Logika aplikasi Chat mengirimkan respons kembali ke layanan aplikasi Chat di Chat.
  5. Respons dikirimkan ke pengguna.

Untuk memulai, lihat Membangun 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 di-build dengan Dialogflow:

Arsitektur aplikasi Chat yang diimplementasikan dengan Dialogflow.

Pada diagram sebelumnya, pengguna yang berinteraksi dengan aplikasi Chat Dialogflow 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. Secara opsional, logika aplikasi Chat dapat berinteraksi dengan layanan pihak ketiga eksternal, seperti sistem pengelolaan project atau alat penjualan tiket.
  4. Agen Dialogflow mengirimkan respons kembali ke layanan aplikasi Chat di Chat.
  5. Respons dikirimkan ke pengguna.

Untuk memulai, lihat Integrasi Chat Dialogflow ES atau Integrasi Dialogflow CX Chat.

Aplikasi atau skrip command line

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

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

Diagram berikut menampilkan 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 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 library atau layanan pemrosesan bahasa dan AI tingkat lanjut, berlangganan dan merespons peristiwa, atau hal lain yang sesuai untuk sasaran khusus Anda.

Menangani interaksi pengguna

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

Parser perintah

Aplikasi Chat berbasis 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 membuat token pesan, mengekstrak perintah, kemudian 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 dikirim ke aplikasi Chat, yang dapat merespons dengan memperbarui dialog atau mengirim pesan.

Natural language processing

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

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

Mengajukan permintaan ke Chat secara proaktif

Aplikasi chat juga dapat mengirimkan pesan atau permintaan lainnya ke Chat, yang tidak dipicu oleh interaksi pengguna langsung 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 noninteraktif menggunakan Chat API untuk mengirim pesan atau jenis permintaan lainnya ke Chat.

Pola percakapan

Sebaiknya pertimbangkan cara aplikasi Chat Anda 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 akan merespons pesan dari pengguna secara one-to-one. Satu pesan ke aplikasi Chat oleh pengguna 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, "What's my next meeting?".
  2. Aplikasi Chat mengirim pesan sinkron kepada pengguna—misalnya, "Dr. Silva at 2: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 bisa mencakup pesan sinkron dan asinkron. Pola ini ditandai dengan komunikasi dua arah antara pengguna dan aplikasi Chat, dengan aplikasi Chat yang 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, "Memantau traffic".
  2. Aplikasi Chat mengirim pesan sinkron kepada pengguna untuk mengonfirmasi permintaan—misalnya, "Monitoring aktif".
  3. Kemudian, aplikasi Chat akan mengirimkan 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 mengirim pesan sinkron kepada pengguna untuk mengonfirmasi permintaan—misalnya, "Monitoring nonaktif".

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

Berlangganan peristiwa (asinkron)

Dalam pola berbasis peristiwa yang asinkron, aplikasi Chat berlangganan peristiwa menggunakan Google Workspace Events API. Aplikasi Chat berbasis peristiwa memeriksa payload peristiwa langganan Chat, lalu merespons sesuai dengan jenis peristiwa. Saat suatu peristiwa terjadi di ruang Chat, tempat aplikasi Chat memiliki langganan aktif, Chat akan mengirimkan peristiwa tersebut ke aplikasi Chat. Kemudian, aplikasi Chat dapat secara opsional menghasilkan sejumlah respons asinkron, yang akan dikirim kembali ke Chat menggunakan Chat API.

Anda dapat menggunakan jenis logika ini untuk mengupdate 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 pola percakapan berbasis peristiwa:

Arsitektur pesan berbasis peristiwa.

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

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

Untuk jenis pola percakapan ini, Anda dapat mengimplementasikan arsitektur aplikasi Chat menggunakan Pub/Sub.

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 bukan 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 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, "Notifikasi tambahan antrean".
  • Aplikasi Chat mengirim pesan asinkron tambahan secara opsional.

Untuk jenis pola percakapan ini, Anda dapat mengimplementasikan 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 arsitektur ini memungkinkan secara teknis, hal ini menyebabkan pengalaman pengguna yang buruk dan kami sangat tidak menyarankan pola ini.