Selain pesan teks, aplikasi Google Chat dapat membuat pesan kartu saat menggunakan autentikasi aplikasi. Kartu mendukung tata letak yang ditentukan, elemen UI interaktif seperti tombol, dan multimedia seperti gambar.
Gunakan pesan kartu untuk melakukan hal berikut:
- Menyajikan informasi mendetail
- Mengumpulkan informasi dari pengguna
- Pandu pengguna untuk melakukan langkah berikutnya
Panduan ini menjelaskan cara membuat pesan kartu secara sinkron (respons real-time ke peristiwa Google Chat, seperti menerima pesan dari pengguna atau ditambahkan ke ruang) dan secara asinkron (mengirim pesan dari aplikasi ke ruang atau pengguna tanpa perintah menggunakan Google Chat API).
Prasyarat
Untuk membuat pesan kartu dalam panduan ini, Anda memerlukan hal-hal berikut:
Node.js
- Akun Google Workspace dengan akses ke Google Chat.
- Aplikasi Chat. Untuk membuat aplikasi Chat, ikuti panduan memulai ini.
Catatan: Contoh kode Node.js dalam panduan ini ditulis untuk dijalankan sebagai Google Cloud Function.
Python
- Akun Google Workspace dengan akses ke Google Chat.
- Aplikasi Chat. Untuk membuat aplikasi Chat, ikuti panduan memulai ini.
Catatan: Contoh kode Python dalam panduan ini ditulis untuk dijalankan sebagai Google Cloud Function, menggunakan Python 3.9.
Apps Script
- Akun Google Workspace dengan akses ke Google Chat.
- Aplikasi Chat. Untuk membuat aplikasi Chat, ikuti panduan memulai ini.
Anatomi pesan kartu
Setiap kartu, baik itu dialog maupun pesan, adalah objek JSON pada resource spaces.messages
di Google Chat API.
Objek JSON kartu terdiri dari hal berikut:
- Array yang disebut
cardsV2[]
yang berisi satu atau beberapa objekCardWithId
. cardId
, yang digunakan untuk mengidentifikasi kartu dan diberi cakupan dalam pesan tertentu. (Kartu dalam pesan yang berbeda dapat memiliki ID yang sama.)Objek
card
, yang terdiri dari hal berikut:- Objek
header
yang menentukan hal-hal seperti judul, subtitel, dan gambar bergaya avatar. - Satu atau beberapa
objek
section
yang masing-masing berisi setidaknya satu widget. - Satu atau beberapa
objek
widget
. Setiap widget adalah objek gabungan yang dapat mewakili teks, gambar, tombol, dan jenis objek lainnya.
- Objek
Sebagai contoh, amati objek header
, section
, dan widget
dalam pesan kartu berikut:
Kode berikut mewakili JSON dari pesan kartu:
JSON
{
"cardsV2": [
{
"cardId": "unique-card-id",
"card": {
"header": {
"title": "Sasha",
"subtitle": "Software Engineer",
"imageUrl":
"https://developers.google.com/chat/images/quickstart-app-avatar.png",
"imageType": "CIRCLE",
"imageAltText": "Avatar for Sasha",
},
"sections": [
{
"header": "Contact Info",
"collapsible": true,
"uncollapsibleWidgetsCount": 1,
"widgets": [
{
"decoratedText": {
"startIcon": {
"knownIcon": "EMAIL",
},
"text": "sasha@example.com",
}
},
{
"decoratedText": {
"startIcon": {
"knownIcon": "PERSON",
},
"text": "<font color=\"#80e27e\">Online</font>",
},
},
{
"decoratedText": {
"startIcon": {
"knownIcon": "PHONE",
},
"text": "+1 (555) 555-1234",
}
},
{
"buttonList": {
"buttons": [
{
"text": "Share",
"onClick": {
"openLink": {
"url": "https://example.com/share",
}
}
},
{
"text": "Edit",
"onClick": {
"action": {
"function": "goToView",
"parameters": [
{
"key": "viewType",
"value": "EDIT",
}
],
}
}
},
],
}
},
],
},
],
},
}
],
}
Buat pesan kartu sinkron
Dalam contoh ini, pengguna membuat pesan di Chat untuk aplikasi Chat dan aplikasi tersebut merespons dengan mengirimkan pesan kartu sinkron sederhana yang menampilkan nama avatar dan gambar avatar:
Dalam contoh kode berikut, aplikasi Node.js dan Python dihosting di Google Cloud Functions. Contoh Apps Script dihosting di Google Apps Script.
Untuk mengetahui petunjuk lengkap yang menjelaskan cara mem-build dan men-deploy aplikasi Chat, lihat Mem-build aplikasi Chat.
Node.js
Python
Apps Script
Membuat pesan kartu asinkron dengan Chat API
Contoh ini secara asinkron membuat pesan dengan Chat API dan mengirimkannya ke ruang tempat aplikasi Chat ditambahkan:

Python
- Di direktori kerja, buat file bernama
chat_create_card_message.py
. Sertakan kode berikut di
chat_create_card_message.py
:from httplib2 import Http from oauth2client.service_account import ServiceAccountCredentials from apiclient.discovery import build # Specify required scopes. SCOPES = ['https://www.googleapis.com/auth/chat.bot'] # Specify service account details. CREDENTIALS = ServiceAccountCredentials.from_json_keyfile_name( 'service_account.json', SCOPES) # Build the URI and authenticate with the service account. chat = build('chat', 'v1', http=CREDENTIALS.authorize(Http())) # Create a Chat message. result = chat.spaces().messages().create( # The space to create the message in. # # Replace SPACE with a space name. # Obtain the space name from the spaces resource of Chat API, # or from a space's URL. parent='spaces/SPACE', # The message to create. body= { 'cardsV2': [{ 'cardId': 'createCardMessage', 'card': { 'header': { 'title': 'A Card Message!', 'subtitle': 'Created with Chat REST API', 'imageUrl': 'https://developers.google.com/chat/images/chat-product-icon.png', 'imageType': 'CIRCLE' }, 'sections': [ { 'widgets': [ { 'buttonList': { 'buttons': [ { 'text': 'Read the docs!', 'onClick': { 'openLink': { 'url': 'https://developers.google.com/chat' } } } ] } } ] } ] } }] } ).execute() print(result)
Dalam kode, ganti
SPACE
dengan nama ruang, yang dapat Anda peroleh dari metodespaces.list()
di Chat API, atau dari URL ruang.Di direktori kerja, buat dan jalankan contoh:
python3 chat_create_card_message.py
Untuk mempelajari lebih lanjut cara menangani pesan di Chat API, lihat hal berikut:
Membuka dialog
Dialog adalah antarmuka berbasis kartu dan memiliki jendela yang dapat dibuka oleh aplikasi Chat untuk berinteraksi dengan pengguna. Untuk membantu pengguna menyelesaikan proses multi-langkah, aplikasi dapat membuka dialog berurutan. Aplikasi dapat membuka dialog sebagai respons terhadap klik tombol pada pesan kartu atau sebagai respons terhadap perintah garis miring.
Dialog berguna untuk berbagai jenis interaksi pengguna, termasuk:
- Mengumpulkan informasi dari pengguna
- Mengautentikasi pengguna dengan layanan Web
- Mengonfigurasi setelan aplikasi Chat
Dalam contoh ini, aplikasi Chat akan membuka dialog guna membantu pengguna membuat kontak baru untuk buku alamat mereka:
Untuk menerapkan dialog, lihat Membuka dialog.
Pemformatan kartu
Ada beberapa cara untuk memformat tampilan kartu.
Pemformatan teks kartu
Di dalam kartu, sebagian besar kolom teks mendukung pemformatan teks dasar menggunakan sekumpulan kecil tag HTML.
Tag yang didukung dan tujuannya ditampilkan dalam tabel berikut:
Format | Contoh | Hasil yang dirender |
---|---|---|
Tebal | "This is <b>bold</b>." |
Ini tebal. |
Miring | "This is <i>italics</i>." |
Ini miring. |
Garis bawah | "This is <u>underline</u>." |
Ini adalah garis bawah. |
Coret | "This is <s>strikethrough</s>." |
Ini |
Warna font | "This is <font color=\"#FF0000\">red font</text>." |
Ini adalah font merah. |
Hyperlink | "This is a <a href=\"https://www.google.com\">hyperlink</a>." |
Ini adalah hyperlink. |
Waktu | "This is a time format: <time>2023-02-16 15:00</time>." |
Ini adalah format waktu: . |
Baris baru | "This is the first line. <br> This is a new line. inci |
Ini baris pertama. Ini adalah baris baru. |
Perhatikan bahwa isi teks pesan dasar diuraikan menggunakan sintaksis markup lain yang dioptimalkan untuk pengguna manusia. Untuk mengetahui detailnya, lihat Membuat pesan teks.
Ikon bawaan
Widget
DecoratedText
dan
ButtonList
mendukung elemen icon
yang digunakan untuk menentukan salah satu ikon bawaan yang tersedia di Google Chat:
{ . . . "knownIcon": "TRAIN", . . . }
Tabel berikut mencantumkan ikon bawaan yang tersedia untuk pesan kartu:
pesawat | TANDAI BUKU | ||
Bisnis | CAR | ||
JAM | KONFIRMASI_NUMBER_ICON | ||
DESCRIPTION | DOLAR | ||
KEDUANYA | |||
penerbitan_penjemputan | KERJA PENERBANGAN | ||
HOTEL | HOTEL_ROOM_TYPE | ||
UNDANG | PIN_MAP | ||
LANGGANAN | BEBERAPA_ORANG | ||
ORANG | PHONE | ||
IKON RESTAURANT | SHOPPING_CART | ||
BINTANG | TOKO | ||
TIKET | PELATIHAN | ||
KAMERA_VIDEO | VIDEO_PLAY |
Ikon khusus
Widget
DecoratedText
dan
ButtonList
memungkinkan Anda menggunakan ikon bawaan, atau menentukan ikon khusus Anda sendiri. Untuk
menentukan ikon kustom, gunakan elemen iconUrl
seperti yang ditampilkan di sini:
{ . . . "iconUrl": "https://developers.google.com/chat/images/quickstart-app-avatar.png" . . . }