Panduan ini menjelaskan berbagai cara yang dapat dilakukan aplikasi Google Chat untuk mengirim pesan:
- Kirim pesan teks dan kartu secara real time dengan merespons interaksi pengguna.
- Kirim pesan teks dan kartu secara asinkron dengan memanggil metode
create
pada resourceMessage
. - Memulai atau membalas rangkaian pesan.
- Mengirim dan memberi nama pesan.
Resource
Message
mewakili pesan
teks
atau
kartu
di Google Chat. Anda dapat
create
, get
, update
, atau delete
pesan di Google Chat API dengan memanggil
metode yang sesuai. Untuk mempelajari pesan teks dan kartu lebih lanjut, lihat Ringkasan pesan Google Chat.
Daripada memanggil metode create
pada resource Message
Google Chat API untuk mengirim pesan teks atau kartu secara asinkron,
aplikasi Google Chat juga dapat membuat pesan untuk merespons interaksi pengguna secara
real time. Respons terhadap interaksi pengguna tidak memerlukan autentikasi dan
mendukung jenis pesan lainnya, termasuk dialog interaktif dan pratinjau
link. Untuk mengetahui detailnya, baca
Menerima dan merespons interaksi dengan aplikasi Google Chat Anda.
Prasyarat
Node.js
- Akun Google Workspace dengan akses ke Google Chat.
- Aplikasi Chat yang dipublikasikan. Untuk mem-build aplikasi Chat, ikuti quickstart ini.
- Otorisasi dikonfigurasi untuk aplikasi Chat guna mengirim pesan asinkron. Tidak diperlukan konfigurasi otorisasi untuk mengirim pesan secara real time.
- Mengirim
pesan teks
mendukung kedua metode otorisasi berikut:
- Autentikasi pengguna
dengan cakupan otorisasi
chat.messages.create
atauchat.messages
. - Autentikasi aplikasi
dengan cakupan otorisasi
chat.bot
.
- Autentikasi pengguna
dengan cakupan otorisasi
- Pengiriman pesan kartu memerlukan autentikasi aplikasi dengan cakupan otorisasi
chat.bot
.
- Mengirim
pesan teks
mendukung kedua metode otorisasi berikut:
Python
- Python 3.6 atau yang lebih baru
- Alat pengelolaan paket pip
Library klien Google terbaru untuk Python. Untuk menginstal atau mengupdatenya, jalankan perintah berikut di antarmuka command line Anda:
pip3 install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib oauth2client
Aplikasi Chat yang dipublikasikan. Untuk membuat dan memublikasikan aplikasi Chat, lihat Mem-build aplikasi Google Chat.
Otorisasi dikonfigurasi untuk aplikasi Chat guna mengirim pesan asinkron. Tidak diperlukan konfigurasi otorisasi untuk mengirim pesan secara real time.
- Mengirim
pesan teks
mendukung kedua metode otorisasi berikut:
- Autentikasi pengguna
dengan cakupan otorisasi
chat.messages.create
atauchat.messages
. - Autentikasi aplikasi
dengan cakupan otorisasi
chat.bot
.
- Autentikasi pengguna
dengan cakupan otorisasi
- Pengiriman pesan kartu memerlukan autentikasi aplikasi dengan cakupan otorisasi
chat.bot
.
- Mengirim
pesan teks
mendukung kedua metode otorisasi berikut:
Apps Script
- Akun Google Workspace dengan akses ke Google Chat.
- Aplikasi Chat yang dipublikasikan. Untuk mem-build aplikasi Chat, ikuti quickstart ini.
Mengirim pesan teks
Bagian ini menjelaskan cara mengirim pesan teks dalam dua cara berikut:
- Mengirim pesan teks secara real time dengan merespons interaksi pengguna.
- Mengirim pesan teks dengan memanggil Google Chat API secara asinkron.
Mengirim pesan teks secara real time
Dalam contoh ini, aplikasi Chat Anda akan membuat dan mengirim pesan teks setiap kali ditambahkan ke ruang. Untuk mempelajari praktik terbaik terkait orientasi pengguna, lihat Memulai orientasi yang bermanfaat untuk pengguna dan ruang.
Untuk mengirim pesan teks saat pengguna menambahkan aplikasi Chat Anda ke suatu ruang, aplikasi Chat Anda akan merespons peristiwa interaksi ADDED_TO_SPACE
. Untuk merespons peristiwa interaksi ADDED_TO_SPACE
dengan pesan teks, gunakan kode berikut:
Node.js
/**
* 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. An onboarding message that
* introduces the app and helps people get started with it.
*/
exports.onMessage = function onMessage(req, res) {
if (req.method === 'GET' || !req.body.message) {
res.send(
'Hello! This function is meant to be used in a Google Chat space.');
}
// 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`.'
});
}
};
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. An onboarding message that
* introduces the app and helps people get started with it.
*/
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`.'
}
}
Contoh kode menampilkan pesan teks berikut:
Mengirim pesan teks secara asinkron
Bagian berikut menjelaskan cara mengirim pesan teks secara asinkron dengan autentikasi aplikasi dan autentikasi pengguna.
Untuk mengirim SMS, teruskan hal berikut dalam permintaan Anda:
- Dengan autentikasi aplikasi, tentukan cakupan otorisasi
chat.bot
. Dengan autentikasi pengguna, tentukan cakupan otorisasichat.messages.create
. - Panggil
metode
create
pada resourceMessage
.
Mengirim pesan teks dengan autentikasi aplikasi
Berikut cara mengirim pesan teks dengan autentikasi aplikasi:
Python
- Di direktori kerja, buat file dengan nama
chat_create_text_message_app.py
. Sertakan kode berikut di
chat_create_text_message_app.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( 'credentials.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={'text': 'Hello, world!'} ).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 Anda, build dan jalankan contoh:
python3 chat_create_text_message_app.py
Chat API menampilkan instance Message
yang menjelaskan pesan yang dikirim.
Mengirim pesan teks dengan autentikasi pengguna
Berikut cara mengirim SMS dengan autentikasi pengguna:
Python
- Di direktori kerja, buat file dengan nama
chat_create_text_message_user.py
. Sertakan kode berikut di
chat_create_text_message_user.py
:import os.path from google.auth.transport.requests import Request from google.oauth2.credentials import Credentials from google_auth_oauthlib.flow import InstalledAppFlow from googleapiclient.discovery import build from googleapiclient.errors import HttpError # Define your app's authorization scopes. # When modifying these scopes, delete the file token.json, if it exists. SCOPES = ["https://www.googleapis.com/auth/chat.messages.create"] def main(): ''' Authenticates with Chat API via user credentials, then creates a text message in a Chat space. ''' # Start with no credentials. creds = None # Authenticate with Google Workspace # and get user authorization. flow = InstalledAppFlow.from_client_secrets_file( 'client_secrets.json', SCOPES) creds = flow.run_local_server() # Build a service endpoint for Chat API. chat = build('chat', 'v1', credentials=creds) # Use the service endpoint to call Chat API. 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={'text': 'Hello, world!'} ).execute() # Prints details about the created membership. print(result) if __name__ == '__main__': main()
Pada kode, ganti
SPACE
dengan nama ruang, yang dapat Anda peroleh dari metodespaces.list()
di Chat API, atau dari URL ruang.Di direktori kerja Anda, build dan jalankan contoh:
python3 chat_create_text_message_user.py
Chat API menampilkan instance Message
yang menjelaskan pesan yang dikirim.
Kirim pesan kartu
Bagian ini menjelaskan cara mengirim pesan kartu dalam dua cara berikut:
- Kirim pesan kartu secara real time dengan merespons interaksi pengguna.
- Mengirim pesan kartu dengan memanggil Google Chat API secara asinkron.
Mengirim pesan kartu secara real time
Aplikasi Chat dapat membuat pesan kartu untuk merespons interaksi pengguna, seperti saat pengguna mengirim pesan ke aplikasi Chat atau menambahkan aplikasi Chat ke ruang. Untuk mempelajari cara merespons interaksi pengguna lebih lanjut, baca artikel Menerima dan merespons peristiwa interaksi aplikasi Chat.
Dalam contoh ini, pengguna mengirim pesan ke aplikasi Chat dan aplikasi Chat merespons dengan mengirim pesan kartu yang menampilkan nama dan gambar avatar pengguna:
Node.js
Python
Apps Script
Mengirim pesan kartu secara asinkron
Untuk mengirim pesan kartu, teruskan hal berikut dalam permintaan Anda:
- Dengan autentikasi aplikasi, tentukan cakupan otorisasi
chat.bot
. Anda tidak dapat mengirim pesan kartu dengan autentikasi pengguna. - Panggil
metode
create
pada resourceMessage
.
Berikut adalah contoh pesan kartu:
Berikut cara mengirim pesan kartu dengan autentikasi aplikasi:
Python
- Di direktori kerja, buat file dengan nama
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( 'credentials.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 the Chat 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 Anda, build dan jalankan contoh:
python3 chat_create_card_message.py
Memulai atau membalas rangkaian pesan pesan
Untuk memulai rangkaian pesan, kirim pesan dan biarkan
thread.name
kosong; Google Chat akan mengisinya saat membuat rangkaian pesan. Secara opsional, untuk
menyesuaikan nama thread, tentukan
kolom
thread.threadKey
.
Untuk membalas rangkaian pesan, kirim pesan yang menentukan kolom threadKey
atau name
rangkaian pesan. Jika rangkaian pesan dibuat oleh orang atau aplikasi Chat
lain, Anda harus menggunakan kolom thread.name
.
Jika tidak ditemukan rangkaian pesan yang cocok, Anda dapat menentukan
apakah pesan harus memulai rangkaian pesan baru atau gagal diposting dengan menetapkan
kolom
messageReplyOption
.
Berikut cara memulai atau membalas rangkaian pesan dengan kolom threadKey
yang ditentukan sebagai
nameOfThread
:
Python
- Di direktori kerja, buat file dengan nama
chat_create_message_thread.py
. Sertakan kode berikut di
chat_create_message_thread.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( 'credentials.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', # Whether to start a thread or reply to an existing one. # # Required when threading is enabled in a space unless starting a # thread. Ignored in other space types. Threading is enabled when # space.spaceThreadingState is THREADED_MESSAGES. # # REPLY_MESSAGE_FALLBACK_TO_NEW_THREAD replies to an existing thread # if one exists, otherwise it starts a new one. messageReplyOption='REPLY_MESSAGE_FALLBACK_TO_NEW_THREAD', # The message body. body={ # The message to create. 'text': 'Start or reply to another message in a thread!', # The thread to start or reply to. 'thread': { 'threadKey': 'nameOfThread' } } ).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 Anda, build dan jalankan contoh:
python3 chat_create_message_thread.py
Chat API menampilkan instance Message
yang menjelaskan pesan yang dikirim.
Mengirim dan memberi nama pesan
Bagian ini menjelaskan cara mengirim pesan dengan nama khusus. Anda menggunakan nama pesan untuk mendapatkan, memperbarui, atau menghapus pesan.
Menetapkan nama kustom juga memungkinkan aplikasi Chat memanggil kembali
pesan tanpa menyimpan pesan name
dari
isi respons
yang ditampilkan saat mengirim pesan.
Menetapkan nama kustom tidak menggantikan kolom name
yang dihasilkan, nama resource pesan. Sebagai gantinya, sistem akan menetapkan nama kustom sebagai kolom clientAssignedMessageId
, yang dapat Anda referensikan saat memproses operasi selanjutnya, seperti memperbarui atau menghapus pesan.
Nama kustom memiliki persyaratan berikut:
- Diawali dengan
client-
. Misalnya,client-custom-name
adalah nama kustom yang valid, tetapicustom-name
tidak. - Hanya berisi huruf kecil, angka, dan tanda hubung.
- Panjangnya tidak lebih dari 63 karakter.
- Menentukan nama kustom yang digunakan saat
mengirim
pesan akan menampilkan error, tetapi metode lain seperti
update
dandelete
berfungsi seperti yang diharapkan.
Berikut cara mengirim dan memberi nama pesan:
Python
- Di direktori kerja, buat file dengan nama
chat_create_named_message.py
. Sertakan kode berikut di
chat_create_named_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( 'credentials.json', SCOPES) # Build the URI and authenticate with the service account. chat = build('chat', 'v1', http=CREDENTIALS.authorize(Http())) # Create a Chat message with a custom name. 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', # Custom name for the message used to facilitate later operations. messageId='client-custom-name', # The message to create. body={'text': 'Hello, world!'} ).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 Anda, build dan jalankan contoh:
python3 chat_create_named_message.py
Chat API menampilkan instance Message
yang menjelaskan pesan yang dikirim.
Memecahkan masalah
Saat aplikasi atau kartu Google Chat menampilkan error, antarmuka Chat akan menampilkan pesan yang menyatakan "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 diharapkan. 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, melakukan proses debug, dan memperbaiki error, lihat Memecahkan masalah dan memperbaiki error Google Chat.
Topik terkait
- Memformat pesan.
- Mendapatkan detail tentang pesan.
- Mencantumkan pesan dalam ruang.
- Memperbarui pesan.
- Menghapus pesan.
- Mengidentifikasi pengguna dalam pesan Google Chat.
- Mengirim pesan ke Google Chat dengan webhook masuk.