Halaman ini menjelaskan cara aplikasi Google Chat Anda dapat menerima dan merespons interaksi pengguna di Google Chat.
Untuk membuat antarmuka interaktif bagi aplikasi Chat, Anda menggunakan komponen berikut:
- Pemicu: Cara pengguna Google Chat dapat memanggil aplikasi Chat, seperti menambahkannya ke ruang atau mengirim pesan ke aplikasi tersebut.
- Objek peristiwa: Data yang diterima aplikasi Chat dari pemicu atau interaksi UI.
- Tindakan: Cara aplikasi Chat dapat merespons interaksi, seperti mengirim pesan atau menampilkan antarmuka pengguna berbasis kartu.
Aplikasi chat dapat membuat dan menampilkan antarmuka dengan cara berikut:
- Pesan yang dapat berisi teks, kartu statis atau interaktif, dan tombol aksesori.
- Halaman beranda (Beranda Aplikasi) yang muncul di tab Beranda pada pesan langsung 1:1 dengan aplikasi Chat.
- Dialog, yaitu kartu yang terbuka di jendela baru dan biasanya meminta pengguna untuk mengirimkan informasi.
- Pratinjau link, yaitu kartu yang menampilkan pratinjau informasi tentang layanan eksternal.
Prasyarat
- Akun Google Workspace Business atau Enterprise dengan akses ke Google Chat.
- Buat project Google Cloud.
- Konfigurasi layar izin OAuth.
- Aktifkan dan konfigurasi Google Chat API.
Cara kerja interaksi pengguna
Saat pengguna berinteraksi dengan aplikasi Chat, Google Chat akan memanggil pemicu yang dikonfigurasi dan mengirim objek peristiwa ke endpoint atau fungsi aplikasi Chat Anda. Aplikasi Chat Anda memproses objek peristiwa dan dapat menampilkan tindakan secara serentak dalam waktu 30 detik atau merespons secara asinkron menggunakan Chat API.
Diagram berikut menunjukkan cara aplikasi Google Chat memproses dan merespons interaksi pengguna:
Pemicu
Pemicu adalah cara khusus pengguna memanggil aplikasi Chat menggunakan UI Chat, seperti menggunakan @sebutan atau perintah aplikasi.
Tabel berikut menunjukkan pemicu Chat, deskripsi, dan cara aplikasi Chat biasanya merespons:
| Pemicu | Deskripsi | Respons umum |
|---|---|---|
| Ditambahkan ke ruang |
Pengguna menambahkan aplikasi Chat ke ruang, atau administrator Google Workspace menginstal aplikasi Chat di ruang pesan langsung untuk pengguna di organisasi mereka. Untuk mempelajari aplikasi Chat yang diinstal oleh administrator, lihat Menginstal aplikasi Marketplace di domain Anda dalam dokumentasi Bantuan Admin Google Workspace. |
Aplikasi Chat mengirim pesan aktivasi yang menjelaskan fungsi aplikasi dan cara pengguna dalam ruang berinteraksi dengannya. |
| Kirim pesan |
Pengguna berinteraksi dengan aplikasi Chat dalam pesan dengan salah satu cara berikut:
|
Aplikasi Chat merespons berdasarkan konten pesan. Misalnya, aplikasi Chat membalas dengan pesan, melampirkan kartu pratinjau link, atau menyarankan item dalam menu multi-pilihan. |
| Dihapus dari ruang |
Pengguna menghapus aplikasi Chat dari ruang, atau administrator Google Workspace meng-uninstal aplikasi Chat untuk pengguna di organisasi mereka. Pengguna tidak dapat menghapus aplikasi Chat yang diinstal oleh administrator mereka. Jika pengguna sebelumnya telah menginstal aplikasi Chat, aplikasi Chat akan tetap terinstal, terlepas dari apakah administrator Google Workspace mencoba meng-uninstalnya atau tidak. |
Aplikasi Chat menghapus semua notifikasi masuk yang dikonfigurasi untuk ruang (seperti menghapus webhook) dan menghapus semua penyimpanan internal. Aplikasi chat tidak dapat merespons pemicu ini dengan pesan karena aplikasi tersebut bukan lagi anggota ruang. |
| Perintah aplikasi |
Pengguna memanggil perintah aplikasi Chat (seperti perintah garis miring, perintah cepat, atau tindakan pesan). |
Aplikasi Chat akan merespons perintah tersebut. Misalnya, aplikasi membalas dengan pesan atau membuka dialog. |
| App Home |
Pengguna membuka tab Beranda di ruang pesan langsung (DM) personal dengan aplikasi Chat, atau berinteraksi dengan widget di kartu halaman beranda. |
Aplikasi Chat menampilkan objek
RenderActions yang mendorong kartu beranda
(pushCard) atau memperbarui kartu beranda yang ditampilkan
(updateCard).
|
Anda mengonfigurasi endpoint atau fungsi callback untuk pemicu ini di Konsol Google Cloud pada halaman Configuration Chat API. Untuk mengetahui petunjuk langkah demi langkah, lihat Mengonfigurasi Google Chat API.
Mengonfigurasi perintah pemicu
Perintah awal membantu pengguna menemukan fungsi aplikasi Chat Anda saat mereka membuka pesan langsung personal yang kosong dengan aplikasi Anda. Anda dapat mengonfigurasi hingga tiga perintah awal.
Untuk menambahkan dan mengonfigurasi perintah pemicu:
Di konsol Google Cloud, buka halaman Configuration Chat API:
Di bagian Fitur interaktif, cari Perintah awal, lalu klik Tambahkan perintah.
Di kolom Peringkat (1-3), masukkan angka dari
1hingga3untuk menentukan urutan tampilan.Di bagian Pemilihan jenis, pilih cara kerja perintah:
- Perintah teks: Mengisi kolom tulis dengan teks yang telah ditentukan sebelumnya saat pengguna mengklik chip perintah.
- Command prompt: Menjalankan perintah garis miring atau perintah cepat yang terdaftar saat diklik. Perintah yang memerlukan argumen tambahan tidak dapat dipilih.
Konfigurasi perintah berdasarkan pilihan jenis Anda:
Jika Anda memilih Perintah teks:
- Di Judul, masukkan judul perintah yang ditampilkan di chip (hingga 30 karakter).
- Di Teks perintah, masukkan teks yang diisi di kolom penulisan (hingga 60 karakter).
- Opsional: Tambahkan judul dan teks yang dilokalkan untuk pengguna dalam bahasa lain:
- Di bagian Perintah yang dilokalkan, klik Tambahkan bahasa.
- Di Bahasa, pilih bahasa yang didukung dari menu drop-down.
- Di Localized Title, masukkan judul yang dilokalkan (hingga 30 karakter).
- Di Localized Prompt text, masukkan teks perintah yang dilokalkan (hingga 60 karakter).
- Ulangi untuk menambahkan lebih banyak bahasa sesuai kebutuhan.
Jika Anda memilih Command prompt:
- Di Perintah garis miring / Perintah cepat, pilih perintah dari menu drop-down.
Klik Selesai, lalu klik Simpan di bagian bawah halaman.
Menangani percobaan ulang panggilan HTTP ke layanan Anda
Jika permintaan HTTPS ke layanan Anda gagal (seperti waktu tunggu habis, kegagalan jaringan sementara, atau kode status HTTPS non-2xx), Google Chat mungkin mencoba lagi pengiriman beberapa kali dalam beberapa menit (tetapi hal ini tidak dijamin). Akibatnya, aplikasi Chat mungkin menerima peristiwa yang sama beberapa kali dalam situasi tertentu. Jika permintaan berhasil diselesaikan, tetapi menampilkan payload respons yang tidak valid, Google Chat tidak akan mencoba lagi permintaan tersebut.
Objek peristiwa
Aplikasi Chat menerima objek peristiwa saat pemicu Chat berjalan, atau saat pengguna Chat berinteraksi dengan UI dari aplikasi Chat (seperti mengklik tombol atau mengirimkan dialog). Objek peristiwa memungkinkan Anda menggunakan data interaksi untuk merespons atau memperbarui UI.
Payload objek peristiwa
Setiap objek peristiwa Chat menyertakan
commonEventObject
dengan detail host dan platform (hostApp: "CHAT", clientPlatform,
userLocale, userTimezone, parameters, dan formInputs) serta objek
chat
yang berisi konteks khusus Chat:
- Untuk pemicu Beranda Aplikasi (saat pengguna membuka tab Beranda dalam pesan langsung personal dengan aplikasi Chat), objek
chatberisichat.userdanchat.eventTimetanpa kolom gabunganpayload. Saat pengguna mengklik tombol di kartu halaman beranda, objek peristiwa akan menyertakanchat.buttonClickedPayloadbersama dengancommonEventObject.parameters(dancommonEventObject.formInputsjika kartu berisi input formulir). - Untuk interaksi ruang dan pesan (Ditambahkan ke ruang, Pesan, Dikeluarkan dari ruang, Perintah aplikasi, atau interaksi tombol dan widget), objek
chatmencakupchat.user,chat.space,chat.eventTime, dan payload interaksi yang sesuai:messagePayload: Berisispace,message, danconfigCompleteRedirectUrisaat pengguna mengirim pesan.addedToSpacePayload: Berisispace,interactionAdd, danconfigCompleteRedirectUrisaat aplikasi Chat ditambahkan ke ruang.removedFromSpacePayload: Berisispacesaat aplikasi Chat dihapus dari ruang.buttonClickedPayload: Berisispace,message,isDialogEvent, dandialogEventTypesaat pengguna mengklik tombol pada kartu atau dialog.widgetUpdatedPayload: Berisispacesaat pengguna berinteraksi dengan widget, seperti mengetik ke dalam menu multiselect dengan sumber data eksternal.appCommandPayload: Berisispace,message,appCommandMetadata,isDialogEvent,dialogEventType, danconfigCompleteRedirectUrisaat pengguna memanggil perintah aplikasi.
Untuk mempelajari objek peristiwa add-on dalam Chat dan aplikasi Google Workspace lainnya, lihat Objek peristiwa.
Memberikan respons
Bagian ini menjelaskan cara aplikasi Chat menggunakan tindakan untuk merespons interaksi pengguna secara sinkron.
Untuk merespons dengan tindakan, aplikasi Chat harus merespons dalam waktu 30 detik, dan respons harus berlaku untuk ruang tempat interaksi terjadi. Respons sinkron ini tidak memerlukan autentikasi. Jika aplikasi Chat Anda memerlukan waktu lebih dari 30 detik atau perlu bertindak di luar ruang, siapkan autentikasi dan berikan respons secara asinkron menggunakan Google Chat API.
Untuk merespons interaksi pengguna secara sinkron, aplikasi Chat Anda menangani objek peristiwa masuk dan menampilkan salah satu objek JSON berikut:
DataActions: Membuat atau memperbarui Pesan chat (CreateMessageAction,UpdateMessageAction) atau melampirkan pratinjau link (UpdateInlinePreviewAction) menggunakanchatDataActionMarkup.RenderActions: Membuat, memperbarui, atau menutup halaman beranda atau dialog (pushCard,updateCard,endNavigation: "CLOSE_DIALOG"), atau memberikan saran input dinamis untuk menu multi-pilihan (modifyCard).AuthorizationError: Mendorong pengguna dengan kartu otorisasi dasar (basic_authorization_prompt) untuk login atau mengautentikasi ke layanan eksternal.
Tabel berikut menunjukkan cara aplikasi Chat dapat merespons dengan
tindakan. Aplikasi Chat dapat menampilkan objek JSON secara langsung atau membuat respons menggunakan
AddOnResponseService
dan CardService
Apps Script.
| Respons aplikasi chat | Tindakan yang diperlukan untuk ditampilkan (JSON) | Tindakan yang diperlukan untuk menampilkan (Apps Script) |
|---|---|---|
| Mengirim pesan atau memperbarui pesan. | DataActions (createMessageAction atau updateMessageAction) |
DataActionsResponse |
| Pratinjau link dalam pesan yang dikirim pengguna Chat di ruang. | DataActions (updateInlinePreviewAction) |
DataActionsResponse |
| Merender atau memperbarui halaman beranda di tab Beranda dalam pesan langsung. | RenderActions (pushCard atau updateCard) |
ActionResponse |
| Membuka, memperbarui, atau menutup dialog. | RenderActions (pushCard, updateCard, atau endNavigation: "CLOSE_DIALOG") |
ActionResponse |
| Untuk mengumpulkan informasi dari kartu atau dialog, sarankan item pilihan berdasarkan apa yang diketik pengguna ke dalam menu pilihan ganda. | RenderActions (modifyCard) |
ActionResponse |
| Minta konfigurasi atau otorisasi untuk layanan eksternal. | AuthorizationError (basic_authorization_prompt) |
AuthorizationException |
Balas dengan pesan
Aplikasi chat dapat merespons dengan pesan ke salah satu pemicu atau interaksi berikut:
- Pemicu pesan, seperti saat pengguna @menyebut atau mengirim pesan langsung ke aplikasi Chat.
- Pemicu Ditambahkan ke ruang, seperti saat pengguna menginstal aplikasi Chat dari Google Workspace Marketplace atau menambahkannya ke ruang.
- Pemicu perintah aplikasi, seperti saat pengguna memanggil perintah garis miring atau perintah cepat.
- Klik tombol dari kartu dalam pesan atau dialog. Misalnya, saat pengguna memasukkan informasi dan mengklik kirim.
Aplikasi chat dapat menyertakan salah satu hal berikut dalam pesan:
- Teks yang berisi hyperlink, @sebutan, dan emoji. Lihat Memformat pesan.
- Satu atau beberapa kartu, yang dapat muncul dalam pesan atau terbuka di jendela baru sebagai dialog. Lihat Membangun kartu untuk aplikasi Google Chat.
- Satu atau beberapa widget aksesori, yang merupakan tombol yang muncul setelah teks atau kartu dalam pesan.
Untuk membalas dengan pesan, tampilkan DataActions dengan objek
CreateMessageAction:
{
"hostAppDataAction": {
"chatDataAction": {
"createMessageAction": {
"message": <var>MESSAGE</var>
}
}
}
}
Ganti MESSAGE dengan resource
Message
dari Chat API.
Dalam contoh berikut, aplikasi Chat membuat dan mengirimkan
pesan teks aktivasi setiap kali aplikasi ditambahkan ke ruang dengan merespons pemicu
Ditambahkan ke ruang dengan DataActions:
Node.js
/**
* Sends an onboarding message when the Chat app is added to a space.
*
* @param {Object} req The request object from Google Chat.
* @param {Object} res The response object from the Chat app.
*/
exports.cymbalApp = function cymbalApp(req, res) {
const chatEvent = req.body.chat;
// Send an onboarding message when added to a Chat space
if (chatEvent.addedToSpacePayload) {
res.json({ hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
text: 'Hi, Cymbal at your service. I help you manage your calendar ' +
'from Google Chat. Take a look at your schedule today by typing ' +
'`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. ' +
'To learn what else I can do, type `/help`.'
}}}}});
}
};
Python
from flask import Flask, request, json
app = Flask(__name__)
@app.route('/', methods=['POST'])
def cymbal_app():
"""Sends an onboarding message when the Chat app is added to a space.
Returns:
Mapping[str, Any]: The response object from the Chat app.
"""
chat_event = request.get_json()["chat"]
if "addedToSpacePayload" in chat_event:
return json.jsonify({ "hostAppDataAction": { "chatDataAction": {
"createMessageAction": { "message": {
"text": 'Hi, Cymbal at your service. I help you manage your calendar ' +
'from Google Chat. Take a look at your schedule today by typing ' +
'`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. ' +
'To learn what else I can do, type `/help`.'
}}
}}})
Java
@SpringBootApplication
@RestController
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
/*
* Sends an onboarding message when the Chat app is added to a space.
*
* @return The response object from the Chat app.
*/
@PostMapping("/")
@ResponseBody
public GenericJson onEvent(@RequestBody JsonNode event) throws Exception {
JsonNode chatEvent = event.at("/chat");
if (!chatEvent.at("/addedToSpacePayload").isEmpty()) {
return new GenericJson() { {
put("hostAppDataAction", new GenericJson() { {
put("chatDataAction", new GenericJson() { {
put("createMessageAction", new GenericJson() { {
put("message", new Message().setText(
"Hi, Cymbal at your service. I help you manage your calendar " +
"from Google Chat. Take a look at your schedule today by typing " +
"`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. " +
"To learn what else I can do, type `/help`."
));
} });
} });
} });
} };
}
return new GenericJson();
}
}
Apps Script
/**
* Sends an onboarding message when the Chat app is added to a space.
*
* @param {Object} event The event object from Google Chat.
* @return {Object} Response from the Chat app.
*/
function onAddedToSpace(event) {
return { hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
text: 'Hi, Cymbal at your service. I help you manage your calendar ' +
'from Google Chat. Take a look at your schedule today by typing ' +
'`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. ' +
'To learn what else I can do, type `/help`.'
}}}}};
}
Contoh kode menampilkan pesan teks berikut:
Memperbarui pesan
Aplikasi chat juga dapat memperbarui pesan yang dikirimnya. Misalnya, aplikasi Chat dapat memperbarui pesan setelah pengguna mengirimkan dialog atau mengklik tombol pada kartu dalam pesan.
Untuk memperbarui pesan aplikasi Chat sebagai respons terhadap interaksi, kembalikan DataActions dengan UpdateMessageAction:
{
"hostAppDataAction": {
"chatDataAction": {
"updateMessageAction": {
"message": <var>MESSAGE</var>
}
}
}
}
Ganti MESSAGE dengan resource
Message
dari Chat API.
Aplikasi Chat juga dapat memperbarui pesan yang dikirim oleh pengguna untuk melampirkan kartu pratinjau link menggunakan updateInlinePreviewAction. Untuk mengetahui detailnya, lihat
Link pratinjau.
Memberikan respons secara asinkron menggunakan Google Chat API
Daripada menampilkan tindakan secara serentak, aplikasi Chat mungkin perlu memanggil Google Chat API untuk merespons interaksi atau mengirim pesan proaktif. Misalnya, aplikasi Chat harus memanggil Google Chat API untuk melakukan salah satu hal berikut:
- Merespons interaksi setelah 30 detik (seperti setelah menyelesaikan tugas yang berjalan lama).
- Mengirim pesan sesuai jadwal, atau mengirim notifikasi tentang perubahan pada resource eksternal.
- Melakukan tugas di luar ruang tempat interaksi terjadi.
- Melakukan tugas di Chat yang tidak tersedia sebagai tindakan sinkron, seperti mencantumkan ruang atau menambahkan anggota ke ruang.
- Melakukan tugas atas nama pengguna Chat (yang memerlukan autentikasi pengguna).
Saat merespons interaksi setelah 30 detik, untuk menghindari pesan error yang ditampilkan kepada pengguna yang menyatakan bahwa aplikasi Chat Anda tidak merespons, Anda harus mengonfirmasi penerimaan objek peristiwa dalam waktu 30 detik dengan menampilkan respons kosong:
Node.js
async function onEvent(req, res) {
// Trigger asynchronous job that will respond using the Google Chat API.
...
// Respond with an empty response to the Google Chat platform.
return res.send({});
};
Python
def on_event(event) -> dict:
# Trigger asynchronous job that will respond using the Google Chat API.
...
// Respond with an empty response to the Google Chat platform.
return {}
Java
public String onEvent(JsonNode event) {
// Trigger asynchronous job that will respond using the Google Chat API.
...
// Respond with an empty response to the Google Chat platform.
return "{}";
}
Apps Script
function onEvent(event) {
// Trigger asynchronous job that will respond using the Google Chat API.
...
// Respond with an empty response to the Google Chat platform.
return null;
}
Untuk mengirim pesan menggunakan Chat API, siapkan autentikasi dan panggil
metode spaces.messages.create. Untuk mengetahui langkah-langkahnya, lihat
Mengirim pesan. Untuk panduan tentang penggunaan
metode Chat API tambahan, lihat
Ringkasan Chat API.
Topik terkait
- Mengonfigurasi Google Chat API
- Mengirim pesan
- Menanggapi perintah
- Membuka dialog interaktif
- Membaca input data formulir yang dimasukkan oleh pengguna pada kartu
- Link pratinjau
- Membangun halaman beranda untuk aplikasi Chat
- Memverifikasi permintaan dari Chat
- Menguji fitur interaktif untuk aplikasi Google Chat
Aplikasi Chat yang bukan add-on: Menerima dan merespons interaksi pengguna
Aplikasi Chat yang bukan add-on Google Workspace menerima
peristiwa interaksi Chat API (Event)
bukan
objek peristiwa add-on Google Workspace (EventObject),
dan merespons dengan menampilkan resource
Message
bukan tindakan.
Untuk mengupgrade aplikasi Chat yang bukan add-on ke framework add-on Google Workspace, lihat Mengonversi aplikasi Google Chat menjadi add-on Google Workspace.
Jenis peristiwa interaksi
Untuk setiap jenis interaksi pengguna, Google Chat mengirimkan
aplikasi Chat yang bukan add-on
objek Event yang jenisnya diwakili oleh kolom
eventType:
| Interaksi pengguna | eventType |
Respons umum dari aplikasi Chat yang bukan add-on |
|---|---|---|
| Pengguna mengirim pesan ke aplikasi Chat. Misalnya, @menyebut aplikasi Chat atau menggunakan perintah garis miring. | MESSAGE |
Aplikasi Chat merespons berdasarkan konten pesan. Misalnya, aplikasi Chat membalas
perintah garis miring /about dengan pesan yang menjelaskan tugas
yang dapat dilakukan aplikasi Chat. |
| Pengguna menambahkan aplikasi Chat ke ruang. | ADDED_TO_SPACE |
Aplikasi Chat mengirim pesan aktivasi yang menjelaskan fungsi aplikasi dan cara pengguna di ruang berinteraksi dengannya. |
| Pengguna menghapus aplikasi Chat dari ruang. | REMOVED_FROM_SPACE |
Aplikasi Chat menghapus semua notifikasi masuk yang dikonfigurasi untuk ruang (seperti menghapus webhook) dan menghapus semua penyimpanan internal. |
| Pengguna mengklik tombol pada kartu dari pesan, dialog, atau halaman beranda aplikasi Chat. | CARD_CLICKED |
Aplikasi Chat memproses dan menyimpan data apa pun yang dikirimkan pengguna, atau menampilkan kartu lain. |
| Pengguna membuka halaman beranda aplikasi Chat dengan mengklik tab Beranda dalam pesan 1:1. | APP_HOME |
Aplikasi Chat menampilkan kartu statis atau interaktif dari halaman beranda. |
| Pengguna mengirimkan formulir dari halaman beranda aplikasi Chat. | SUBMIT_FORM |
Aplikasi Chat memproses dan menyimpan data apa pun yang dikirimkan pengguna, atau menampilkan kartu lain. |
| Pengguna memanggil perintah menggunakan perintah cepat. | APP_COMMAND |
Aplikasi Chat merespons berdasarkan perintah yang dipanggil. Misalnya, aplikasi Chat membalas perintah Tentang dengan pesan yang menjelaskan tugas yang dapat dilakukan aplikasi Chat. |
Untuk melihat semua peristiwa interaksi yang didukung dan contoh payload JSON, lihat
Jenis peristiwa interaksi aplikasi Chat
dan
dokumentasi referensi EventType.
Peristiwa interaksi dari dialog
Jika aplikasi Chat Anda yang bukan add-on membuka dialog, peristiwa interaksi berisi informasi tambahan berikut yang dapat Anda gunakan untuk memproses respons:
- Kolom
isDialogEventditetapkan ketrue. DialogEventType(REQUEST_DIALOG,SUBMIT_DIALOG, atauCANCEL_DIALOG) menjelaskan apakah interaksi memicu dialog untuk terbuka, mengirimkan informasi dari dialog, atau menutup dialog.
Mengonfigurasi aplikasi Chat yang bukan add-on untuk menerima peristiwa interaksi
Di konsol Google Cloud, buka halaman Configuration Chat API:
Di bagian Fitur interaktif, hapus Bangun aplikasi Chat ini sebagai add-on Google Workspace, lalu konfigurasi Fungsi, satu endpoint Setelan koneksi (URL endpoint HTTP, Apps Script, nama topik Cloud Pub/Sub, atau Dialogflow), Perintah, Perintah pemicu, Pratinjau link, dan Visibilitas.
Klik Simpan.
Membalas dengan pesan di aplikasi Chat yang bukan add-on
Untuk merespons secara sinkron di aplikasi Chat yang bukan add-on, tampilkan objek
Message
secara langsung. Contoh berikut merespons peristiwa interaksi ADDED_TO_SPACE
dengan pesan teks:
Node.js
/**
* Sends an onboarding message when the Chat app is added to a space.
*
* @param {Object} req The event object from Chat API.
* @param {Object} res The response object from the Chat app.
*/
exports.cymbalApp = function cymbalApp(req, res) {
// Send an onboarding message when added to a Chat space
if (req.body.type === 'ADDED_TO_SPACE') {
res.json({
'text': 'Hi, Cymbal at your service. I help you manage your calendar ' +
'from Google Chat. Take a look at your schedule today by typing ' +
'`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. To ' +
'learn what else I can do, type `/help`.'
});
}
};
Python
from flask import Flask, request, json
app = Flask(__name__)
@app.route('/', methods=['POST'])
def cymbal_app():
"""Sends an onboarding message when the Chat app is added to a space.
Returns:
Mapping[str, Any]: The response object from the Chat app.
"""
event = request.get_json()
if event['type'] == 'ADDED_TO_SPACE':
return json.jsonify({
'text': 'Hi, Cymbal at your service. I help you manage your calendar ' +
'from Google Chat. Take a look at your schedule today by typing ' +
'`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. To ' +
'learn what else I can do, type `/help`.'
})
return json.jsonify({})
Java
@SpringBootApplication
@RestController
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
/*
* Sends an onboarding message when the Chat app is added to a space.
*
* @return The response object from the Chat app.
*/
@PostMapping("/")
@ResponseBody
public Message onEvent(@RequestBody JsonNode event) {
switch (event.get("type").asText()) {
case "ADDED_TO_SPACE":
return new Message().setText(
"Hi, Cymbal at your service. I help you manage your calendar " +
"from Google Chat. Take a look at your schedule today by typing " +
"`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. " +
"To learn what else I can do, type `/help`.");
default:
return new Message();
}
}
}
Apps Script
/**
* Sends an onboarding message when the Chat app is added to a space.
*
* @param {Object} event The event object from Chat API.
* @return {Object} Response from the Chat app.
*/
function onAddToSpace(event) {
return {
'text': 'Hi, Cymbal at your service. I help you manage your calendar ' +
'from Google Chat. Take a look at your schedule today by typing ' +
'`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. To learn ' +
'what else I can do, type `/help`.'
};
}