Panduan ini menjelaskan cara aplikasi Chat Google dapat mengumpulkan dan memproses informasi dari pengguna dengan membuat input formulir di antarmuka berbasis kartu.
Aplikasi Chat meminta informasi dari pengguna untuk melakukan tindakan di dalam atau di luar Chat, termasuk dengan cara berikut:
- Konfigurasi setelan. Misalnya, untuk mengizinkan pengguna menyesuaikan setelan notifikasi atau mengonfigurasi dan menambahkan aplikasi Chat ke satu atau beberapa ruang.
- Membuat atau memperbarui informasi di aplikasi Google Workspace lainnya. Misalnya, izinkan pengguna membuat acara Google Kalender.
- Mengizinkan pengguna mengakses dan memperbarui resource di aplikasi atau layanan web lain. Misalnya, aplikasi Chat dapat membantu pengguna memperbarui status tiket dukungan langsung dari ruang Chat.
Prasyarat
HTTP
Aplikasi Google Chat yang menerima dan merespons interaksi pengguna. Untuk membuatnya, selesaikan panduan memulai HTTP.
Apps Script
Aplikasi Google Chat yang menerima dan merespons interaksi pengguna. Untuk membuatnya, selesaikan panduan memulai Apps Script.
Membuat formulir menggunakan kartu
Untuk mengumpulkan informasi, aplikasi Chat mendesain formulir dan inputnya, serta menyusunnya ke dalam kartu. Untuk menampilkan kartu kepada pengguna, aplikasi Chat dapat menggunakan antarmuka Chat berikut:
- Pesan yang berisi satu atau beberapa kartu.
- Halaman beranda, yang merupakan kartu yang muncul dari tab Beranda dalam pesan langsung dengan aplikasi Chat.
- Dialog, yang merupakan kartu yang terbuka di jendela baru dari pesan dan halaman beranda.
Aplikasi Chat dapat membuat kartu menggunakan widget berikut:
Widget input formulir yang meminta informasi dari pengguna. Secara opsional, Anda dapat menambahkan validasi ke widget input formulir, untuk memastikan bahwa pengguna memasukkan dan memformat informasi dengan benar. Aplikasi Chat dapat menggunakan widget input formulir berikut:
- Input teks
(
textInput) untuk teks format bebas atau yang disarankan. - Input pilihan
(
selectionInput) adalah elemen UI yang dapat dipilih seperti kotak centang, tombol pilihan, dan menu drop-down. Widget input pilihan juga dapat mengisi dan menyarankan item dari data Google Workspace (seperti ruang Chat) atau sumber data dinamis. Untuk mengetahui detailnya, lihat bagian berikut Menambahkan menu drop-down dan Menambahkan menu multi-pilihan. - Pemilih tanggal dan waktu
(
dateTimePicker) untuk entri tanggal dan waktu.
- Input teks
(
Widget tombol sehingga pengguna dapat mengirimkan nilai yang telah mereka masukkan dalam kartu. Setelah pengguna mengklik tombol, aplikasi Chat dapat memproses informasi yang diterimanya.
Dalam contoh berikut, kartu mengumpulkan informasi kontak menggunakan input teks, pemilih tanggal dan waktu, serta input pilihan:
Untuk contoh widget interaktif lainnya yang dapat Anda gunakan untuk mengumpulkan informasi, lihat Mendesain kartu atau dialog interaktif.
Menambahkan menu drop-down
Untuk menyesuaikan item pilihan atau mengizinkan pengguna memilih satu item dari sumber data dinamis, aplikasi Chat dapat menggunakan menu drop-down, yang merupakan jenis widget SelectionInput. Misalnya, kartu berikut menampilkan
menu drop-down tempat pengguna dapat memilih secara dinamis dari daftar kontak:
Anda dapat mengisi item untuk menu drop-down dari sumber data berikut:
- Data Google Workspace, yang mencakup pengguna atau ruang Chat.
- Sumber data eksternal, seperti database relasional.
Mengisi item dari sumber data Google Workspace
Untuk mengisi item dari sumber data Google Workspace, seperti
pengguna Google Workspace, tentukan kolom platformDataSource dalam
objek
DataSourceConfig. Tidak seperti jenis input pilihan lainnya, Anda
menghilangkan
objek SelectionItem,
karena item pilihan ini bersumber secara dinamis dari
Google Workspace.
Kode berikut menampilkan menu drop-down pengguna Google Workspace:
JSON
{
"sections": [
{
"header": "Section Header",
"widgets": [
{
"selectionInput": {
"name": "contacts",
"type": "DROPDOWN",
"label": "Select contact from organization",
"dataSourceConfigs": [
{
"platformDataSource": {
"commonDataSource": "USER"
},
"minCharactersTrigger": 1
}
]
}
}
]
}
]
}
Mengisi item dari sumber data eksternal
Menu drop-down juga dapat mengisi item dari sumber data pihak ketiga atau eksternal. Untuk menggunakan sumber data eksternal, tentukan kolom
remoteDataSource
dalam objek
DataSourceConfig
yang berisi fungsi yang mengkueri dan menampilkan item dari sumber
data.
Untuk mengurangi permintaan ke sumber data eksternal, Anda dapat menyertakan
item yang disarankan yang muncul di menu drop-down sebelum pengguna mengetik di
menu. Untuk mengisi item yang disarankan dari sumber data eksternal, tentukan objek
SelectionItem
statis.
Kode berikut menunjukkan menu drop-down yang mengkueri dan mengisi item dari sumber data eksternal:
JSON
{
"sections": [
{
"header": "Section Header",
"widgets": [
{
"selectionInput": {
"name": "crm_leads",
"type": "DROPDOWN",
"label": "Select CRM Lead",
"dataSourceConfigs": [
{
"remoteDataSource": {
"function": "getCrmLeads"
},
"minCharactersTrigger": 2
}
],
"items": [
{
"text": "Suggested Lead 1",
"value": "lead-1"
}
]
}
}
]
}
]
}
Untuk contoh lengkap yang menunjukkan cara menampilkan item yang disarankan, lihat bagian Menyarankan item pilihan.
Menambahkan menu pilihan ganda
Untuk menyesuaikan item pilihan atau mengizinkan pengguna memilih item dari sumber data dinamis, aplikasi Chat dapat menggunakan menu multipilih, yang merupakan jenis widget SelectionInput. Misalnya, kartu berikut menampilkan menu pilihan ganda
tempat pengguna dapat memilih secara dinamis dari daftar kontak:
Anda dapat mengisi item untuk menu pilihan ganda dari sumber data berikut:
- Data Google Workspace, yang mencakup pengguna atau ruang Chat tempat pengguna menjadi anggota. Menu hanya mengisi item dari organisasi Google Workspace yang sama.
- Sumber data eksternal, seperti database relasional. Misalnya, Anda dapat menggunakan menu multi-pilihan untuk membantu pengguna memilih dari daftar lead penjualan dari sistem pengelolaan hubungan pelanggan (CRM).
Mengisi item dari sumber data Google Workspace
Untuk menggunakan sumber data Google Workspace, tentukan kolom
platformDataSource
di widget SelectionInput. Tidak seperti jenis input pilihan lainnya, Anda
menghilangkan
objek SelectionItem,
karena item pilihan ini bersumber secara dinamis dari
Google Workspace.
Kode berikut menampilkan menu multi-pilihan pengguna Google Workspace.
Untuk mengisi pengguna, input pilihan menetapkan commonDataSource ke USER:
JSON
{
"selectionInput": {
"name": "contacts",
"type": "MULTI_SELECT",
"label": "Selected contacts",
"multiSelectMaxSelectedItems": 5,
"multiSelectMinQueryLength": 1,
"platformDataSource": {
"commonDataSource": "USER"
}
}
}
Kode berikut menampilkan menu multipilih ruang Chat. Untuk mengisi ruang, input pilihan menentukan kolom hostAppDataSource. Menu pilihan ganda juga menetapkan
defaultToCurrentSpace ke true, yang menjadikan ruang saat ini sebagai pilihan
default dalam menu:
JSON
{
"selectionInput": {
"name": "spaces",
"type": "MULTI_SELECT",
"label": "Selected contacts",
"multiSelectMaxSelectedItems": 3,
"multiSelectMinQueryLength": 1,
"platformDataSource": {
"hostAppDataSource": {
"chatDataSource": {
"spaceDataSource": {
"defaultToCurrentSpace": true
}
}
}
}
}
}
Mengisi item dari sumber data eksternal
Menu multi-pilih juga dapat mengisi item dari sumber data pihak ketiga atau eksternal. Untuk menggunakan sumber data eksternal, tentukan kolom externalDataSource di widget SelectionInput yang berisi fungsi yang mengkueri dan menampilkan item dari sumber data.
Untuk mengurangi permintaan ke sumber data eksternal, Anda dapat menyertakan
item yang disarankan yang muncul di menu pilihan ganda sebelum pengguna mengetik di
menu. Misalnya, Anda dapat mengisi kontak yang baru-baru ini ditelusuri untuk
pengguna. Untuk mengisi item yang disarankan dari sumber data eksternal, tentukan objek
SelectionItem
statis.
Contoh kode berikut menunjukkan menu multi-pilihan yang mengkueri dan mengisi item dari sumber data eksternal:
Node.js
Ganti FUNCTION_URL dengan endpoint HTTP yang mengkueri
sumber data eksternal.
Python
Ganti FUNCTION_URL dengan endpoint HTTP yang mengkueri
sumber data eksternal.
Java
Ganti FUNCTION_URL dengan endpoint HTTP yang mengkueri
sumber data eksternal.
Apps Script
Contoh ini mengirimkan pesan kartu dengan menampilkan JSON kartu. Anda juga dapat menggunakan layanan kartu Apps Script.
Untuk contoh lengkap yang menunjukkan cara menampilkan item yang disarankan, lihat bagian Menyarankan item pilihan.
Menerima data dari widget interaktif
Setiap kali pengguna mengklik tombol,
tindakan
aplikasi Chat akan dipicu dengan informasi tentang interaksi tersebut. Dalam
commonEventObject
payload peristiwa, objek formInputs berisi nilai apa pun yang
diinput pengguna.
Anda dapat mengambil nilai dari objek
event.commonEventObject.formInputs.WIDGET_NAME, dengan
WIDGET_NAME adalah kolom name yang Anda tentukan untuk widget.
Nilai ditampilkan sebagai jenis data tertentu untuk widget.
Berikut adalah bagian dari objek peristiwa tempat pengguna memasukkan nilai untuk setiap widget:
{
"commonEventObject": { "formInputs": {
"contactName": { "stringInputs": {
"value": ["Kai 0"]
}},
"contactBirthdate": { "dateInput": {
"msSinceEpoch": 1000425600000
}},
"contactType": { "stringInputs": {
"value": ["Personal"]
}}
}}
}
Untuk menerima data, aplikasi Chat Anda menangani objek peristiwa untuk mendapatkan nilai yang dimasukkan pengguna ke dalam widget. Tabel berikut menunjukkan cara mendapatkan nilai untuk widget input formulir tertentu. Untuk setiap widget, tabel menunjukkan jenis data yang diterima widget, tempat nilai disimpan dalam objek peristiwa, dan contoh nilai.
| Widget input formulir | Jenis data input | Nilai input dari objek peristiwa | Nilai contoh |
|---|---|---|---|
textInput |
stringInputs |
event.commonEventObject.formInputs.contactName.stringInputs.value[0] |
Kai O |
selectionInput |
stringInputs |
Untuk mendapatkan nilai pertama atau satu-satunya, event.commonEventObject.formInputs.contactType.stringInputs.value[0] |
Personal |
dateTimePicker yang hanya menerima tanggal. |
dateInput |
event.commonEventObject.formInputs.contactBirthdate.dateInput.msSinceEpoch. |
1000425600000 |
Setelah menerima data, aplikasi Chat dapat melakukan salah satu tindakan berikut:
- Untuk kartu yang berisi menu pilihan ganda, isi atau sarankan item berdasarkan apa yang diketik pengguna ke dalam menu.
- Transfer data ke kartu lain, sehingga pengguna dapat meninjau informasi mereka atau melanjutkan ke bagian formulir berikutnya.
- Beri respons kepada pengguna untuk mengonfirmasi bahwa pengguna berhasil menyelesaikan formulir.
Menyarankan item pilihan
Jika kartu berisi menu pilihan ganda atau menu drop-down yang
mengisi item dari sumber data eksternal,
aplikasi Chat dapat menampilkan item yang disarankan berdasarkan apa yang
diketik pengguna ke dalam menu. Misalnya, jika pengguna mulai mengetik Atl untuk menu
yang menampilkan kota di Amerika Serikat, aplikasi
Chat Anda dapat otomatis menyarankan Atlanta sebelum pengguna
selesai mengetik. Aplikasi Chat dapat menyarankan hingga 100
item.
Untuk menyarankan dan mengisi item secara dinamis dalam input pilihan, widget SelectionInput pada kartu harus menentukan fungsi yang mengkueri sumber data eksternal. Untuk menu pilihan ganda, Anda menentukan kolom
externalDataSource. Untuk menu drop-down, Anda menentukan kolom
remoteDataSource
dalam objek
DataSourceConfig.
Anda juga dapat mengonfigurasi jumlah karakter yang diketik pengguna sebelum
menu menampilkan saran. Untuk menu pilihan ganda, tetapkan kolom multiSelectMinQueryLength. Untuk menu drop-down, tetapkan
kolom min_characters_trigger dalam DataSourceConfig.
Untuk menampilkan item yang disarankan, fungsi harus melakukan hal berikut:
- Menangani objek peristiwa, yang diterima aplikasi Chat saat pengguna mengetik di menu.
- Dari objek peristiwa, dapatkan nilai yang diketik pengguna, yang direpresentasikan dalam kolom
event.commonEventObject.parameters["autocomplete_widget_query"]. - Buat kueri sumber data menggunakan nilai input pengguna untuk mendapatkan satu atau beberapa
SelectionItemsyang akan disarankan kepada pengguna. - Tampilkan item yang disarankan dengan menampilkan tindakan
RenderActionsdengan objekmodifyCard.
Contoh kode berikut menunjukkan cara aplikasi Chat
menyarankan item secara dinamis di menu pilihan ganda pada kartu. Saat pengguna mengetik
ke dalam menu, fungsi atau endpoint yang disediakan di kolom
externalDataSource widget akan mengkueri sumber data eksternal, dan menyarankan item
yang dapat dipilih pengguna.
Node.js
Ganti FUNCTION_URL dengan endpoint HTTP yang mengkueri
sumber data eksternal.
Python
Ganti FUNCTION_URL dengan endpoint HTTP yang mengkueri
sumber data eksternal.
Java
Ganti FUNCTION_URL dengan endpoint HTTP yang mengkueri
sumber data eksternal.
Apps Script
Contoh ini mengirimkan pesan kartu dengan menampilkan JSON kartu. Anda juga dapat menggunakan layanan kartu Apps Script.
Mentransfer data ke kartu lain
Setelah pengguna mengirimkan informasi dari kartu, Anda mungkin perlu menampilkan kartu tambahan untuk melakukan salah satu hal berikut:
- Bantu pengguna menyelesaikan formulir yang lebih panjang dengan membuat bagian yang berbeda.
- Izinkan pengguna melihat pratinjau dan mengonfirmasi informasi dari kartu awal, sehingga mereka dapat meninjau jawaban sebelum mengirimkannya.
- Isi bagian formulir yang tersisa secara dinamis. Misalnya, untuk meminta pengguna membuat janji temu, aplikasi Chat dapat menampilkan kartu awal yang meminta alasan janji temu, lalu mengisi kartu lain yang menyediakan waktu yang tersedia berdasarkan jenis janji temu.
Untuk mentransfer input data dari kartu awal, Anda dapat membuat widget button
dengan
actionParameters
yang berisi name widget dan nilai yang dimasukkan pengguna, seperti yang ditunjukkan
dalam contoh berikut:
Node.js
Ganti FUNCTION_URL dengan endpoint HTTP yang menangani
klik tombol.
Python
Ganti FUNCTION_URL dengan endpoint HTTP yang menangani
klik tombol.
Java
Ganti FUNCTION_URL dengan endpoint HTTP yang menangani
klik tombol.
Apps Script
Contoh ini mengirimkan pesan kartu dengan menampilkan JSON kartu. Anda juga dapat menggunakan layanan kartu Apps Script.
Saat pengguna mengklik tombol, aplikasi Chat Anda akan menerima objek peristiwa yang dapat Anda gunakan untuk menerima data.
Merespons pengiriman formulir
Setelah menerima data dari pesan kartu atau dialog, aplikasi Chat akan merespons dengan mengonfirmasi penerimaan atau menampilkan error.
Dalam contoh berikut, aplikasi Chat mengirim pesan teks untuk mengonfirmasi bahwa aplikasi telah berhasil menerima formulir yang dikirim dari pesan kartu.
Node.js
Python
Java
Apps Script
Contoh ini mengirimkan pesan kartu dengan menampilkan JSON kartu. Anda juga dapat menggunakan layanan kartu Apps Script.
Untuk memproses dan menutup dialog, Anda menampilkan objek
RenderActions
yang menentukan apakah Anda ingin mengirim pesan konfirmasi, memperbarui
pesan atau kartu asli, atau cukup menutup dialog. Untuk mengetahui langkah-langkahnya, lihat
Menutup dialog.
Memecahkan masalah
Bagian ini memberikan langkah-langkah pemecahan masalah untuk kode error dan perilaku runtime tertentu saat berinteraksi dengan dialog di Chat.
Interaksi dialog menampilkan "Error yang belum ditetapkan saat memanggil add-on"
Saat berinteraksi dengan dialog, jika Anda melihat log error dengan pesan "Unspecified error invoking the add-on." dan kode 13, biasanya ini menunjukkan error internal atau bahwa endpoint HTTP aplikasi Chat gagal memproses permintaan atau menampilkan respons yang valid.
Untuk memecahkan masalah error ini:
- Periksa log endpoint HTTP Anda untuk menemukan error atau pengecualian yang tidak tertangani.
- Pastikan endpoint Anda merespons permintaan dalam waktu 30 detik. Jika endpoint memerlukan waktu lebih dari 30 detik untuk berjalan, Chat tidak dapat memproses respons dan interaksi akan gagal. Untuk mengetahui detailnya, lihat Batas kapasitas dan praktik terbaik.
- Pastikan endpoint Anda menampilkan respons yang valid. Untuk pengiriman dialog,
endpoint harus menampilkan
objek
RenderActionsdalam format JSON yang benar. Jika respons salah format atau tidak berisi kolom yang diperlukan, interaksi dialog mungkin gagal.
Saat aplikasi atau kartu Google Chat menampilkan error, antarmuka Chat akan menampilkan pesan yang bertuliskan "Terjadi error". atau "Tidak dapat memproses permintaan Anda". Terkadang UI Chat tidak menampilkan pesan error apa pun, tetapi aplikasi atau kartu Chat memberikan hasil yang tidak terduga; misalnya, pesan kartu mungkin tidak muncul.
Meskipun pesan error mungkin tidak ditampilkan di UI Chat, pesan error deskriptif dan data log tersedia untuk membantu Anda memperbaiki error saat logging error untuk aplikasi Chat diaktifkan. Untuk mendapatkan bantuan dalam melihat, men-debug, dan memperbaiki error, lihat Memecahkan masalah dan memperbaiki error Google Chat.
Topik terkait
- Lihat contoh Pengelola Kontak, yang merupakan aplikasi Chat yang meminta pengguna untuk melengkapi formulir kontak dari pesan kartu dan dialog.
- Membuka dialog interaktif
Aplikasi Chat yang bukan add-on: Membaca input data formulir oleh pengguna di kartu
Dokumentasi berikut berlaku untuk aplikasi Chat yang bukan add-on Google Workspace. Untuk memigrasikan aplikasi Chat yang bukan add-on, lihat Mengonversi aplikasi Google Chat menjadi add-on Google Workspace.
Membuat formulir menggunakan kartu
Untuk contoh aplikasi Chat yang bukan add-on yang menggunakan formulir kontak dengan input teks, pemilih tanggal dan waktu, serta input pilihan, lihat kode berikut:
Node.js
Python
Java
Apps Script
Menerima data dari widget interaktif
Setiap kali pengguna mengklik tombol, aplikasi Chat yang bukan add-on akan menerima peristiwa interaksi yang bergantung pada lokasi tombol:
Jika tombol berada dalam pesan atau dialog, aplikasi Chat yang bukan add-on akan menerima peristiwa interaksi
CARD_CLICKEDyang berisi informasi tentang interaksi tersebut. Payload peristiwa interaksiCARD_CLICKEDberisi objekcommon.formInputs(event.common.formInputs) dengan nilai apa pun yang dimasukkan pengguna.Anda dapat mengambil nilai dari objek
common.formInputs.WIDGET_NAME, dengan WIDGET_NAME adalah kolomnameyang Anda tentukan untuk widget. Nilai ditampilkan sebagai jenis data tertentu untuk widget (direpresentasikan sebagai objekInputs).Berikut adalah bagian dari peristiwa interaksi
CARD_CLICKEDsaat pengguna memasukkan nilai untuk setiap widget:HTTP
{ "type": "CARD_CLICKED", "common": { "formInputs": { "contactName": { "stringInputs": { "value": ["Kai 0"] }}, "contactBirthdate": { "dateInput": { "msSinceEpoch": 1000425600000 }}, "contactType": { "stringInputs": { "value": ["Personal"] }} }} }Apps Script
{ "type": "CARD_CLICKED", "common": { "formInputs": { "contactName": { "": { "stringInputs": { "value": ["Kai 0"] }}}, "contactBirthdate": { "": { "dateInput": { "msSinceEpoch": 1000425600000 }}}, "contactType": { "": { "stringInputs": { "value": ["Personal"] }}} }} }Jika tombol berada di halaman beranda, aplikasi Chat yang bukan add-on akan menerima peristiwa interaksi
SUBMIT_FORM. Payload peristiwa interaksi berisi objekcommonEventObject.formInputs(event.commonEventObject.formInputs) dengan nilai apa pun yang dimasukkan pengguna.Anda dapat mengambil nilai dari objek
commonEventObject.formInputs.WIDGET_NAME, dengan WIDGET_NAME adalah kolomnameyang Anda tentukan untuk widget. Nilai ditampilkan sebagai jenis data tertentu untuk widget (direpresentasikan sebagai objekInputs).Berikut adalah bagian dari peristiwa interaksi
SUBMIT_FORMsaat pengguna memasukkan nilai untuk setiap widget:HTTP
{ "type": "SUBMIT_FORM", "commonEventObject": { "formInputs": { "contactName": { "stringInputs": { "value": ["Kai 0"] }}, "contactBirthdate": { "dateInput": { "msSinceEpoch": 1000425600000 }}, "contactType": { "stringInputs": { "value": ["Personal"] }} }} }Apps Script
{ "type": "SUBMIT_FORM", "commonEventObject": { "formInputs": { "contactName": { "": { "stringInputs": { "value": ["Kai 0"] }}}, "contactBirthdate": { "": { "dateInput": { "msSinceEpoch": 1000425600000 }}}, "contactType": { "": { "stringInputs": { "value": ["Personal"] }}} }} }
Untuk menerima data, aplikasi Chat yang bukan add-on akan menangani peristiwa interaksi untuk mendapatkan nilai yang dimasukkan pengguna ke dalam widget. Tabel berikut menunjukkan cara mendapatkan nilai untuk widget input formulir tertentu. Untuk setiap widget, tabel menampilkan jenis data yang diterima widget, tempat nilai disimpan dalam peristiwa interaksi, dan contoh nilai.
| Widget input formulir | Jenis data input | Nilai input dari peristiwa interaksi | Nilai contoh |
|---|---|---|---|
textInput |
stringInputs |
event.common.formInputs.contactName.stringInputs.value[0] |
Kai O |
selectionInput |
stringInputs |
Untuk mendapatkan nilai pertama atau satu-satunya, event.common.formInputs.contactType.stringInputs.value[0] |
Personal |
dateTimePicker yang hanya menerima tanggal. |
dateInput |
event.common.formInputs.contactBirthdate.dateInput.msSinceEpoch. |
1000425600000 |
Mentransfer data ke kartu lain
Untuk mentransfer input data dari kartu awal di
aplikasi Chat yang bukan add-on,
buat widget button dengan
actionParameters
yang berisi name widget dan nilai yang dimasukkan pengguna, seperti yang ditunjukkan
dalam contoh berikut:
Node.js
Python
Java
Apps Script
Saat pengguna mengklik tombol, aplikasi Chat yang bukan
add-on
akan menerima peristiwa interaksi CARD_CLICKED yang dapat Anda gunakan untuk
menerima data.
Merespons pengiriman formulir
Dalam contoh berikut, aplikasi Chat yang bukan add-on mengirimkan pesan teks untuk mengonfirmasi bahwa aplikasi tersebut telah berhasil menerima formulir yang dikirim dari pesan dialog atau kartu:
Node.js
Python
Java
Apps Script
Untuk memproses dan menutup dialog di aplikasi Chat yang bukan
add-on,
tampilkan
objek ActionResponse
yang menentukan apakah Anda ingin mengirim pesan konfirmasi, memperbarui
pesan atau kartu asli, atau cukup menutup dialog. Untuk mengetahui langkah-langkahnya, lihat
Menutup dialog.