Kirim pesan ke Google Chat menggunakan REST API (contoh Google tidak berfungsi pada tahun 2020)
Di mana saya bahkan mulai ... (Google, mengapa Anda harus menyakiti saya seperti ini?)
Info Latar Belakang
Saya telah membuat chatbot baru menggunakan Google Apps Script , yang menerima pesan dari pengguna di Google Chat dan menanggapi secara sinkron dengan satu pesan (setiap pesan hanya dapat memiliki satu tanggapan dari chatbot).
Sekarang saya memerlukan cara untuk mengirim pesan asinkron sehingga bot dapat mengirim pesannya sendiri, atau mengirim beberapa tanggapan terpisah sekaligus.
Masalah
The Google Chat SISA API memiliki metode untuk membuat pesan asynchronous , tetapi metode ini ( spaces.messages.create
) tidak bekerja! Tidak ada contoh yang berfungsi dari metode ini mulai tahun 2020.
Berikut adalah contoh kode Google untuk membuat pesan menggunakan REST API.
Masalahnya adalah bahwa dalam contoh mereka, SCOPE
disetel ke URL yang tidak lagi keluar :
var SCOPE = 'https://www.googleapis.com/auth/chat.bot';
Jika Anda menavigasi ke URL itu, Anda akan melihat kesalahan 404 ini:
Not Found
Error 404
Selain itu, jika Anda memeriksa daftar cakupan OAuth2 yang tersedia , Anda akan melihat bahwa tidak ada cakupan yang terkait dengan Hangouts atau Chat, dan tidak disebutkan chat.bot
cakupan yang digunakan dalam kode contoh.
Apa yang sudah saya coba?
Saya telah membaca setiap pertanyaan di StackOverflow yang terkait dengan Chat API ini, ditambah setiap tutorial untuk REST API.
- Tutorial Apps Script resmi dari Google tidak berfungsi karena
chat.bot
cakupannya sudah tidak ada:- Pesan Asinkron menggunakan Apps Script
- Semua solusi StackOverflow ini menggunakan
chat.bot
cakupan tidak ada yang sama :- Kirim pesan pribadi tanpa acara
- Tanggapi secara Asinkron di Obrolan Hangout baru menggunakan API lainnya
- 404 respons server terpotong pada Apps Script Bot
- Pengguna StackOverflow ini mengatakan bahwa mereka dapat menggunakan
chat
ruang lingkup (yaitugoogleapis.com/auth/chat
), tetapi ruang lingkup itu juga tidak ada:- Kesalahan 400: invalid_scope
Kesimpulannya
Bagaimana cara mengirim pesan dari Google Apps Script ke Google Chat menggunakan REST API Google Chat ?
Tampaknya dokumentasi Google sudah usang, dan tidak ada contoh untuk API ini yang berfungsi sejak Agustus 2020. Mereka tidak menyadari bahwa REST API mereka tidak berfungsi, atau mereka menghentikan REST API tanpa memberi tahu siapa pun.
Jawaban
Menjawab:
Saya dapat mengkonfirmasi bahwa chat.bot
ruang lingkup memang ada. Untuk mengatur bot obrolan dengan REST API, Anda harus menggunakan akun layanan .
Informasi Lebih Lanjut:
Sesuai dokumentasi yang Anda tautkan di Mengembangkan bot dengan Apps Script , untuk mengirim pesan asinkron pada pemicu:
... satu-satunya cara untuk mencapai ini saat ini adalah melalui API HTTP eksternal (lihat dokumentasi ). Ini memerlukan penggunaan akun layanan Cloud (lihat dokumentasi) melalui OAuth2 untuk pustaka Apps Script .
Artinya, Anda harus menyiapkan akun layanan di GCP Console terlebih dahulu agar chat.bot
cakupannya dapat digunakan untuk pesan ini. Seluruh proses bisa sangat sulit bagi yang belum tahu, jadi saya akan memberikan langkah-langkah dari awal hingga akhir di sini.
Proses:
Membuat Akun Layanan:
- Buka Google Cloud Console dan buat Proyek GCP baru. Tekan
Select a project
di bagian atas halaman dan klikNEW PROJECT
.- Anda harus memberikan
Project name
, bidang lainnya harus diisi untuk Anda secara otomatis.
- Anda harus memberikan
- Tekan
CREATE
- pop-up baru akan muncul di kanan atas layar yang mengonfirmasi bahwa proyek baru sedang dibuat. Setelah dimuat, Anda dapat mengklikVIEW
. - Klik
☰
ikon di kiri atas, dan ikutiAPIs & Services > Credentials
item menu. - Di bagian atas halaman ini, klik
+ CREATE CREDENTIALS > Service Account
.- Berikan nama dan deskripsi pada akun layanan tersebut, dan tekan
CREATE
, diikuti olehCONTINUE
, dan terakhirDONE
.
- Berikan nama dan deskripsi pada akun layanan tersebut, dan tekan
Akun layanan Anda sekarang telah dibuat.
Membuat Kredensial Akun Layanan:
Ini akan diperlukan untuk kode yang diberikan dalam contoh dari halaman Developing bots with Apps Script .
- Setelah membuat Akun Layanan, Anda akan dialihkan kembali ke daftar Kredensial yang dapat Anda gunakan untuk Project GCP. Di bawah
Service Accounts
bagian tersebut, klik akun layanan Anda yang baru dibuat. Ini akan dipanggil[email protected]
- Klik
ADD KEY > Create new key
- Tetap
JSON
dipilih, dan tekanCREATE
.- Ini akan memulai pengunduhan file kredensial yang akan Anda perlukan untuk mengakses API sebagai akun layanan ini. JANGAN KEHILANGAN ATAU BAGIKAN FILE INI. Jika hilang, Anda perlu menghapus dan membuat kredensial baru untuk akun ini.
Mengaktifkan API Hangouts Chat:
- Kembali ke
☰ > APIs & Services
, dan pilihLibrary
. - Cari
Hangouts Chat API
dan klik satu-satunya hasil. - Klik
ENABLE
. Ini akan mengaktifkan API untuk proyek Anda.
Catatan: Jangan tutup tab ini dulu! Kami masih perlu menggunakan GCP Console nanti.
Menyiapkan Proyek Apps Script:
- Buat proyek Apps Script baru.
- Sekarang, Anda dapat menyalin + menempelkan contoh dari halaman pesan Async ke dalam proyek baru.
- Buka file kredensial yang Anda download dari GCP Console.
- Salin
private_key
nilai (yang dimulai dengan-----BEGIN PRIVATE KEY-----
dan tempelkan ke nilaiSERVICE_ACCOUNT_PRIVATE_KEY
di proyek Apps Script. - Salin juga
client_email
nilai dari file kredensial, dan tempelkan keSERVICE_ACCOUNT_EMAIL
dalam proyek Apps Script.
- Salin
Untuk menggunakan pustaka OAuth2 Skrip Google Apps seperti pada contoh, Anda perlu menambahkan pustaka ke proyek menggunakan ID skrip pustaka.
- Di UI proyek Apps Script, ikuti
Resources > Libraries...
item menu, dan salin tempel ID skrip OAuth2 ke dalamAdd a library
kotak- ID skripnya adalah
1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF
- Ini, dan pustaka lainnya dapat ditemukan di repositori GitHub OAuth2 for Apps Script
- ID skripnya adalah
- Pastikan untuk memilih versi stabil terbaru dari pustaka (pada saat penulisan, ini adalah versi 38)
- Tekan
Save
.
Selanjutnya, Anda perlu menautkan project Apps Script ke project GCP yang Anda buat sebelumnya.
- Kembali ke tab GCP Console, dan ikuti
☰ > IAM & Admin > Settings
item menu. - Salin yang
Project number
ditentukan di halaman ini. - Dalam Proyek Skrip Aplikasi Anda, ikuti
Resources > Cloud Platform project...
item menu, dan tempel nomor Proyek ke dalamEnter Project Number here
dialog. - Klik
Set Project
.
Menyiapkan Manifes Proyek: Untuk menggunakan bot obrolan di Apps Script, Anda harus menyertakan chat
kunci dalam manifes proyek.
- Di UI Apps Script, klik
View > Show manifest file
. - Setelah pasangan nilai kunci terakhir, tambahkan yang berikut ini:
"chat": {
"addToSpaceFallbackMessage": "Thank you for adding me!"
}
File manifes lengkap Anda sekarang akan terlihat seperti ini:
{
"timeZone": "Europe/Paris",
"dependencies": {
"enabledAdvancedServices": [{
"userSymbol": "Drive",
"serviceId": "drive",
"version": "v2"
}],
"libraries": [{
"userSymbol": "OAuth2",
"libraryId": "1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF",
"version": "38"
}]
},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8",
"chat": {
"addToSpaceFallbackMessage": "Thank you for adding me!"
}
}
- Simpan proyek Anda.
Langkah Terakhir:
Anda hampir selesai! Sekarang, Anda perlu menghentikan bot dari manifes, dan menyiapkan konfigurasi di GCP serta menyiapkan pemicu yang akan membuat panggilan sebenarnya.
Menerapkan bot:
- Di UI Apps Script, buka
Publish > Deploy from manifest...
dan tekanCreate
di dialog yang baru dibuka.- Catatan: Anda tidak dapat menggunakan penyebaran Head jika Anda ingin menggunakan ini untuk seluruh domain Anda, jadi penerapan baru harus dibuat.
- Beri nama dan deskripsi penyebaran, dan tekan
Save
. - Setelah ini selesai menyimpan, tekan di
Get ID
sebelah penerapan yang baru saja Anda buat, dan salinDeployment ID
.
Menyiapkan konfigurasi GCP:
- Kembali ke konsol Cloud, Anda sekarang harus menavigasi ke
☰ > APIs & Services > Dashboard
. - Di daftar API yang diaktifkan di bagian bawah halaman ini, pilih
Hangouts Chat API
. - Di menu sebelah kiri, pilih
Configuration
. - Siapkan konfigurasi bot Anda. Anda akan perlu untuk memberikan
Bot name
,Avatar URL
danDescription
. Siapkan pengaturan fungsionalitas agar berfungsi di ruangan. - Di bawah
Connection Settings
, pilihApps Script project
, dan tempel ID penerapan Anda dari bagian sebelumnya. - Berikan bot Apps Script Anda izin yang relevan, dan tekan
Save
.
The Elusive Trigger:
Satu-satunya hal yang sekarang perlu Anda lakukan adalah mengatur pemicu Anda. Ini dilakukan seperti pemicu Apps Script biasa - dari
Edit > Current project's triggers
item menu di Apps Script. Untuk menyelesaikan contoh, klik tombol + Tambahkan Pemicu di kanan bawah dan siapkan setelan pemicu sebagai berikut:Pilih fungsi mana yang akan dijalankan:
onTrigger
Pilih penerapan mana yang harus dijalankan: Kepala
Pilih sumber acara: Berdasarkan waktu
Pilih jenis pemicu berbasis waktu:
Minutes timer
Pilih interval menit:
Every minute
Dan tekan simpan.
Dan Anda Selesai! Bot yang dibuat ini sekarang akan memposting ke semua ruang yang ada dalam waktu saat ini, setiap menit.
Semoga penjelasan ini bermanfaat bagi Anda!
Referensi:
- Akun layanan | Dokumentasi Cloud IAM
- Memahami akun layanan | Dokumentasi Cloud IAM
- Mengembangkan bot dengan Apps Script | Google Chat API | Pengembang Google
- Pesan yang dimulai bot - Membuat bot baru | Google Chat API | Pengembang Google
- GitHub - gsuitedevs / apps-script-oauth2: Pustaka OAuth2 untuk Google Apps Script.
- Google Cloud Console