Menerima dan merespons interaksi pengguna

Halaman ini menjelaskan cara aplikasi Google Chat Anda dapat menerima dan merespons interaksi pengguna di Google Chat.

Untuk membangun antarmuka interaktif untuk aplikasi Chat, gunakan 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 menerima objek peristiwa dari pemicu Ditambahkan ke ruang
Gambar 1: Saat pengguna menambahkan aplikasi Chat ke ruang, pemicu Ditambahkan ke ruang akan diaktifkan dan mengirim objek peristiwa. Untuk merespons dengan pesan, aplikasi Chat menangani objek peristiwa dan menampilkan tindakan yang membuat pesan.

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 pesan langsung personal dengan aplikasi Chat.
  • Dialog, yang merupakan kartu yang terbuka di jendela baru dan biasanya meminta pengguna untuk mengirimkan informasi.
  • Pratinjau link, yang merupakan kartu yang menampilkan pratinjau informasi tentang layanan eksternal.

Prasyarat

Cara kerja interaksi pengguna

Saat pengguna berinteraksi dengan aplikasi Chat, Google Chat akan memanggil pemicu yang dikonfigurasi dan mengirimkan objek peristiwa ke endpoint atau fungsi aplikasi Chat Anda. Aplikasi Chat Anda memproses objek peristiwa dan dapat menampilkan tindakan secara sinkron dalam waktu 30 detik atau merespons secara asinkron menggunakan Chat API.

Diagram berikut menunjukkan cara aplikasi Google Chat memproses dan merespons interaksi pengguna:

Arsitektur cara aplikasi Google Chat memproses interaksi pengguna.

Pemicu

Pemicu adalah cara spesifik 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 organisasinya. Untuk mempelajari aplikasi Chat yang diinstal oleh administrator, lihat Menginstal aplikasi Marketplace di domain Anda dalam dokumentasi Bantuan Admin Google Workspace.

Aplikasi Chat mengirimkan pesan orientasi yang menjelaskan fungsinya dan cara pengguna di ruang dapat berinteraksi dengannya.
Kirim pesan

Pengguna berinteraksi dengan aplikasi Chat dalam pesan dengan salah satu cara berikut:

  • Mengirim pesan di ruang pesan langsung (DM) dengan aplikasi Chat.
  • Menyebut aplikasi Chat dengan @ di semua jenis ruang.
  • Mengirim pesan yang berisi link yang cocok dengan pola URL untuk pratinjau link.
  • Mengetik teks ke dalam menu multiselect widget selectionInput.
Aplikasi Chat merespons berdasarkan konten pesan. Misalnya, aplikasi Chat membalas dengan pesan, melampirkan kartu pratinjau link, atau menyarankan item dalam menu pilihan ganda.
Dihapus dari ruang

Pengguna menghapus aplikasi Chat dari ruang, atau administrator Google Workspace meng-uninstal aplikasi Chat untuk pengguna di organisasinya.

Pengguna tidak dapat menghapus aplikasi Chat yang diinstal oleh administrator mereka. Jika pengguna telah menginstal aplikasi Chat sebelumnya, aplikasi Chat akan tetap diinstal, 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 mengosongkan semua penyimpanan internal. Aplikasi Chat tidak dapat merespons dengan pesan ke pemicu ini 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 merespons perintah. Misalnya, aplikasi akan membalas dengan pesan atau membuka dialog.
Beranda Aplikasi

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 mengirimkan kartu halaman beranda (pushCard) atau memperbarui kartu halaman 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 pemicu membantu pengguna menemukan fungsi aplikasi Chat Anda saat mereka membuka pesan langsung personal yang kosong dengan aplikasi Anda. Anda dapat mengonfigurasi hingga tiga perintah pemicu.

Untuk menambahkan dan mengonfigurasi perintah pemicu:

  1. Di konsol Google Cloud, buka halaman Configuration Chat API:

    Buka halaman Chat API Configuration

  2. Di bagian Fitur interaktif, cari Perintah pemicu, lalu klik Tambahkan perintah.

  3. Di kolom Peringkat (1-3), masukkan angka dari 1 hingga 3 untuk menentukan urutan tampilan.

  4. Di bagian Type selection, pilih perilaku dialog:

    • Perintah teks: Mengisi kolom tulis dengan teks yang telah ditentukan 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.
  5. Konfigurasikan perintah berdasarkan pilihan jenis Anda:

    • Jika Anda memilih perintah teks:

      1. Di Judul, masukkan judul perintah yang ditampilkan di chip (maksimal 30 karakter).
      2. Di Teks perintah, masukkan teks yang diisi di kolom tulis (maksimal 60 karakter).
      3. Opsional: Tambahkan judul dan teks yang dilokalkan untuk pengguna dalam bahasa lain:
      4. Di bagian Perintah yang dilokalkan, klik Tambahkan bahasa.
      5. Di bagian Bahasa, pilih bahasa yang didukung dari menu drop-down.
      6. Di Judul yang Dilokalkan, masukkan judul yang dilokalkan (maksimal 30 karakter).
      7. Di Teks Perintah yang Dilokalkan, masukkan teks perintah yang dilokalkan (maksimum 60 karakter).
      8. Ulangi untuk menambahkan bahasa lainnya sesuai kebutuhan.
    • Jika Anda memilih Command prompt:

      1. Di Perintah garis miring/Perintah cepat, pilih perintah dari menu drop-down.
  6. 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 akan mencoba mengirim ulang 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 ulang 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.

Pada tahun 2025, aplikasi Google Chat diperluas untuk mendukung peristiwa add-on, dan ini telah menjadi default untuk aplikasi Chat baru sejak Juli 2025. Di seluruh dokumentasi Chat, peristiwa add-on adalah jenis peristiwa standar yang ditampilkan dalam panduan dan contoh kode. Dokumentasi untuk peristiwa Chat (untuk aplikasi Chat yang bukan add-on Google Workspace) dipisahkan menjadi bagian yang diciutkan (misalnya, Aplikasi Chat yang bukan add-on: Menerima dan merespons peristiwa interaksi).

Menentukan jenis peristiwa dan respons

Saat aplikasi Chat Anda menerima objek peristiwa, struktur payload dan cara Anda merespons bergantung pada apakah aplikasi Chat Anda dikonfigurasi sebagai add-on Google Workspace.

Untuk mengonfirmasi jenis objek peristiwa yang diterima aplikasi Anda dan cara aplikasi meresponsnya, periksa konfigurasi aplikasi Anda menggunakan tabel berikut:

Jenis aplikasi Menerima peristiwa add-on
(Default untuk aplikasi baru yang dibuat setelah Juli 2025)
Menerima peristiwa Chat
(Default sebelumnya, sebelum Juli 2025)
Aplikasi Apps Script
Periksa file manifes (appsscript.json)
Objek chat dikonfigurasi di dalam addOns:
{
  "addOns": {
    "chat": {}
  }
}
Objek chat dikonfigurasi di root manifes:
{
  "chat": {}
}
Aplikasi lain
Periksa halaman Konfigurasi Google Chat API
Kotak centang "Build this Chat app as a Google Workspace add-on" dicentang. Kotak centang "Build this Chat app as a Google Workspace add-on" tidak dipilih.
Tempat menemukan dokumentasi Di seluruh panduan dan contoh kode

Dokumentasi referensi peristiwa: Objek peristiwa add-on
Bagian yang diciutkan (misalnya, Aplikasi Chat yang bukan add-on: Menerima dan merespons peristiwa interaksi)

Dokumentasi referensi peristiwa: Peristiwa interaksi Chat API
Cara merespons Menampilkan tindakan, seperti DataActions atau RenderActions.
Lihat cara merespons dengan tindakan
Menampilkan resource Message.
Lihat cara merespons dengan pesan

Payload objek peristiwa

Setiap objek peristiwa add-on 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 di pesan langsung personal dengan aplikasi Chat), objek chat berisi chat.user dan chat.eventTime tanpa kolom payload gabungan. Saat pengguna mengklik tombol di kartu halaman beranda, objek peristiwa menyertakan chat.buttonClickedPayload bersama dengan commonEventObject.parameters (dan commonEventObject.formInputs jika kartu berisi input formulir).
  • Untuk interaksi ruang dan pesan (Ditambahkan ke ruang, Pesan, Dihapus dari ruang, Perintah aplikasi, atau interaksi tombol dan widget), objek chat mencakup chat.user, chat.space, chat.eventTime, dan payload interaksi yang sesuai:
    • messagePayload: Berisi space, message, dan configCompleteRedirectUri saat pengguna mengirim pesan.
    • addedToSpacePayload: Berisi space, interactionAdd, dan configCompleteRedirectUri saat aplikasi Chat ditambahkan ke ruang.
    • removedFromSpacePayload: Berisi space saat aplikasi Chat dihapus dari ruang.
    • buttonClickedPayload: Berisi space, message, isDialogEvent, dan dialogEventType saat pengguna mengklik tombol di kartu atau dialog.
    • widgetUpdatedPayload: Berisi space saat pengguna berinteraksi dengan widget, seperti mengetik ke dalam menu multipilih dengan sumber data eksternal.
    • appCommandPayload: Berisi space, message, appCommandMetadata, isDialogEvent, dialogEventType, dan configCompleteRedirectUri saat pengguna memanggil perintah aplikasi.

Untuk mempelajari objek peristiwa add-on dalam Chat dan aplikasi Google Workspace lainnya, lihat Objek peristiwa.

Mengirim 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 respons secara asinkron menggunakan Google Chat API.

Untuk merespons interaksi pengguna secara sinkron, aplikasi Chat Anda menangani objek peristiwa yang masuk dan menampilkan salah satu objek JSON berikut:

  • DataActions: Membuat atau memperbarui pesan Chat (CreateMessageAction, UpdateMessageAction) atau melampirkan pratinjau link (UpdateInlinePreviewAction) menggunakan chatDataActionMarkup.
  • 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: Meminta pengguna dengan kartu otorisasi dasar (basic_authorization_prompt) untuk login atau melakukan autentikasi 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 mengembalikan (Apps Script)
Mengirim pesan atau memperbarui pesan. DataActions (createMessageAction atau updateMessageAction) DataActionsResponse
Melihat pratinjau link dalam pesan yang dikirim pengguna Chat di ruang. DataActions (updateInlinePreviewAction) DataActionsResponse
Me-render atau memperbarui halaman beranda di tab Beranda 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 Membuat 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 mengirim pesan teks orientasi setiap kali 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:

Contoh pesan orientasi.

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, tampilkan 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.

Merespons secara asinkron menggunakan Google Chat API

Alih-alih menampilkan tindakan secara sinkron, 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 cara menggunakan metode Chat API tambahan, lihat Ringkasan Chat API.

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 orientasi yang menjelaskan fungsinya dan cara pengguna di ruang dapat berinteraksi dengannya.
Pengguna menghapus aplikasi Chat dari ruang. REMOVED_FROM_SPACE Aplikasi Chat akan menghapus semua notifikasi masuk yang dikonfigurasi untuk ruang (seperti menghapus webhook) dan mengosongkan penyimpanan internal.
Pengguna mengklik tombol pada kartu dari pesan, dialog, atau halaman beranda aplikasi Chat. CARD_CLICKED Aplikasi Chat akan memproses dan menyimpan data 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 akan memproses dan menyimpan data 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 akan berisi informasi tambahan berikut yang dapat Anda gunakan untuk memproses respons:

  • Kolom isDialogEvent ditetapkan ke true.
  • DialogEventType (REQUEST_DIALOG, SUBMIT_DIALOG, atau CANCEL_DIALOG) menjelaskan apakah interaksi memicu dialog untuk dibuka, mengirimkan informasi dari dialog, atau menutup dialog.

Mengonfigurasi aplikasi Chat yang bukan add-on untuk menerima peristiwa interaksi

  1. Di konsol Google Cloud, buka halaman Configuration Chat API:

    Buka halaman Chat API Configuration

  2. Di bagian Interactive features, hapus centang Build this Chat app as a Google Workspace add-on, dan konfigurasikan Functionality, satu endpoint Connection settings (URL endpoint HTTP, Apps Script, nama topik Cloud Pub/Sub, atau Dialogflow), Commands, Starter prompts, Link previews, dan Visibility.

  3. 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`.'
  };
}