Memilih arsitektur aplikasi Google Chat

Halaman ini menjelaskan pendekatan arsitektur layanan umum yang digunakan untuk membuat aplikasi Google Chat. Jika Anda 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 akan menyajikan informasi serupa dalam beberapa cara 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 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 kirim pesan asinkron

Mengirim pesan dari sistem eksternal ke satu ruang Chat

Mengakses layanan dan sistem lainnya

Integrasikan dengan layanan Google yang lain

Berkomunikasi di belakang {i>firewall<i}

Berlangganan acara Google Workspace

Gaya deployment dan coding

Pengembangan tanpa kode

Pengembangan dengan sedikit kode

Pengembangan dalam bahasa pemrograman pilihan Anda

DevOps yang Disederhanakan

Menyelesaikan pengelolaan DevOps dan CI/CD

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 umum di-deploy karena memberikan fleksibilitas paling besar bagi developer untuk membuat aplikasi Chat publik. Arsitektur ini direkomendasikan untuk kasus penggunaan berikut:

  • Aplikasi Chat di-deploy untuk 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 diterapkan di server cloud atau lokal.

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

Arsitektur aplikasi Chat 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 penjualan tiket.
  4. Server web mengirimkan respons HTTP kembali ke layanan aplikasi Chat di Chat.
  5. Respons akan 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 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 diterapkan di belakang firewall, Chat tidak akan 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 menggunakan 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 dibuat dengan Pub/Sub:

Arsitektur aplikasi Chat yang diimplementasikan dengan Pub/Sub.

Dalam diagram sebelumnya, pengguna yang berinteraksi dengan aplikasi Pub/Sub Chat 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 tempat aplikasi Chat memiliki langganan aktif.

  2. Chat mengirimkan pesan ke topik Pub/Sub.

  3. Server aplikasi, yang merupakan sistem cloud atau lokal yang berisi logika aplikasi Chat, berlangganan 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, baca bagian 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 mengizinkan interaksi pengguna, seperti yang ditunjukkan dalam diagram berikut:

Arsitektur untuk webhook masuk untuk 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 untuk aplikasi Chat agar 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 dengan sedikit kode 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 Google Workspace dan layanan Google lainnya, seperti Google Spreadsheet, Google Slide, Google Kalender, Google Drive, Google Maps, dan YouTube, seperti yang ditunjukkan pada 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 melalui pesan langsung maupun dalam ruang Chat.
  2. Logika aplikasi Chat yang diimplementasikan di Apps Script, yang berada di Google Cloud, menerima pesan tersebut.
  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 akan dikirimkan ke pengguna.

Untuk memulai, lihat Mem-build 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 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 melalui 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 akan dikirimkan ke 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 di-build 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 melalui 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 akan 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 melakukan operasi lain, seperti membuat ruang atau mengelola anggota ruang, tanpa mengizinkan pengguna untuk 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 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 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 canggih, 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 tindakan apa pun 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 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 hal 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 mengirim pesan atau permintaan lain 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

Anda harus mempertimbangkan bagaimana 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 satu per satu. Satu pesan ke aplikasi Chat oleh pengguna 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, "What's my next meeting?" (Apa rapat saya berikutnya?).
  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 dapat menyertakan 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 pada 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, "Memantau traffic".
  2. Aplikasi Chat mengirimkan pesan sinkron kepada pengguna untuk mengonfirmasi permintaan—misalnya, "Monitoring on".
  3. Kemudian, aplikasi Chat akan mengirimkan satu atau beberapa pesan asinkron kepada pengguna dengan memanggil REST API—misalnya, "New traffic".
  4. Pengguna mengirim pesan sinkron tambahan ke aplikasi Chat—misalnya, "Abaikan traffic".
  5. Aplikasi Chat mengirimkan 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 asinkron berdasarkan peristiwa, 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 terjadi peristiwa di ruang Chat, tempat aplikasi Chat memiliki langganan aktif, Chat akan mengirimkan peristiwa tersebut ke aplikasi Chat. Aplikasi Chat kemudian dapat secara opsional menghasilkan berapa pun respons asinkron, yang akan dikirimkan 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.

Dalam 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 berisi data tentang hal yang berubah dalam resource.
  4. Aplikasi Chat memproses pesan Pub/Sub yang berisi peristiwa, dan jika perlu, 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 mengizinkan pengguna berinteraksi langsung dengan aplikasi Chat. Pola ini bukan percakapan atau interaktif, tetapi dapat berguna untuk hal-hal seperti pelaporan alarm, seperti yang ditampilkan dalam diagram berikut:

Arsitektur pesan satu arah.

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

  • Aplikasi Chat mengirimkan pesan asinkron kepada pengguna dengan memanggil Chat API atau memposting ke URL webhook—misalnya, "Notifikasi tambahan antrean".
  • Secara opsional, aplikasi Chat akan 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 arsitektur ini dimungkinkan, hal ini menyebabkan pengalaman pengguna yang buruk dan kami sangat tidak menyarankan pola ini.