1. Ringkasan
Dalam codelab ini, Anda akan mempelajari cara membuat bot Slack menggunakan Botkit toolkit dan menjalankannya di Google Cloud. Anda akan dapat berinteraksi dengan bot di saluran Slack live.
Yang akan Anda pelajari
- Cara membuat integrasi kustom bot di Slack
- Cara mengamankan rahasia Slack Anda dengan Secret Manager
- Cara men-deploy bot Slack di Cloud Run, platform komputasi terkelola sepenuhnya yang otomatis menskalakan container stateless Anda
Yang Anda butuhkan
Bagaimana Anda akan menggunakan tutorial ini?
Bagaimana Anda menilai pengalaman Anda dengan Google Cloud?
2. Penyiapan dan persyaratan
Penyiapan lingkungan mandiri
- Login ke Google Cloud Console dan buat project baru atau gunakan kembali project yang sudah ada. Jika belum memiliki akun Gmail atau Google Workspace, Anda harus membuatnya.
- Project name adalah nama tampilan untuk peserta project ini. String ini adalah string karakter yang tidak digunakan oleh Google API. Anda dapat memperbaruinya kapan saja.
- Project ID bersifat unik di semua project Google Cloud dan tidak dapat diubah (tidak dapat diubah setelah ditetapkan). Cloud Console otomatis membuat string unik; biasanya Anda tidak mementingkan kata-katanya. Di sebagian besar codelab, Anda harus merujuk Project ID-nya (umumnya diidentifikasi sebagai
PROJECT_ID
). Jika tidak suka dengan ID yang dibuat, Anda dapat membuat ID acak lainnya. Atau, Anda dapat mencobanya sendiri, dan lihat apakah ID tersebut tersedia. ID tidak dapat diubah setelah langkah ini dan tersedia selama durasi project. - Sebagai informasi, ada nilai ketiga, Project Number, yang digunakan oleh beberapa API. Pelajari lebih lanjut ketiga nilai ini di dokumentasi.
- Selanjutnya, Anda harus mengaktifkan penagihan di Konsol Cloud untuk menggunakan resource/API Cloud. Menjalankan operasi dalam codelab ini tidak akan memakan banyak biaya, bahkan mungkin tidak sama sekali. Guna mematikan resource agar tidak menimbulkan penagihan di luar tutorial ini, Anda dapat menghapus resource yang dibuat atau menghapus project-nya. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai $300 USD.
Mulai Cloud Shell
Meskipun Google Cloud dapat dioperasikan secara jarak jauh dari laptop Anda, dalam tutorial ini Anda akan menggunakan Cloud Shell, yakni lingkungan command line yang berjalan di Cloud.
Mengaktifkan Cloud Shell
- Dari Cloud Console, klik Aktifkan Cloud Shell .
Jika ini pertama kalinya Anda memulai Cloud Shell, Anda akan melihat layar perantara yang menjelaskan apa itu Cloud Shell. Jika Anda melihat layar perantara, klik Lanjutkan.
Perlu waktu beberapa saat untuk penyediaan dan terhubung ke Cloud Shell.
Mesin virtual ini dimuat dengan semua alat pengembangan yang dibutuhkan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Sebagian besar pekerjaan Anda dalam codelab ini dapat dilakukan dengan browser.
Setelah terhubung ke Cloud Shell, Anda akan melihat bahwa Anda telah diautentikasi dan project sudah ditetapkan ke project ID Anda.
- Jalankan perintah berikut di Cloud Shell untuk mengonfirmasi bahwa Anda telah diautentikasi:
gcloud auth list
Output perintah
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
- Jalankan perintah berikut di Cloud Shell untuk mengonfirmasi bahwa perintah gcloud mengetahui project Anda:
gcloud config list project
Output perintah
[core] project = <PROJECT_ID>
Jika tidak, Anda dapat menyetelnya dengan perintah ini:
gcloud config set project <PROJECT_ID>
Output perintah
Updated property [core/project].
3. Mengaktifkan API
Dari Cloud Shell, aktifkan Artifact Registry, Cloud Build, Cloud Run, dan Secret Manager API:
gcloud services enable \ artifactregistry.googleapis.com \ cloudbuild.googleapis.com \ run.googleapis.com \ secretmanager.googleapis.com
Perintah ini akan menampilkan pesan berhasil yang mirip dengan yang berikut ini:
Operation "operations/..." finished successfully.
Sekarang, Anda siap menyiapkan dan men-deploy aplikasi...
4. Membuat ruang kerja Slack
Anda memerlukan ruang kerja Slack tempat Anda diizinkan untuk membuat integrasi kustom. Anda dapat membuat ruang kerja secara gratis jika belum memilikinya untuk digunakan dalam tutorial ini.
5. Membuat pengguna bot Slack
Pengguna bot dapat mendengarkan pesan di Slack, memposting pesan, dan mengupload file. Dalam codelab ini, Anda akan membuat bot untuk memposting pesan salam sederhana.
Membuat aplikasi Slack baru
- Buka halaman pengelolaan aplikasi Slack.
- Klik tombol Buat aplikasi baru di pojok kanan atas.
- Beri nama aplikasi, seperti "Kittenbot".
- Pilih tim Slack tempat Anda ingin menginstalnya.
Membuat pengguna bot
- Buka Beranda Aplikasi di panel sebelah kiri pada bagian Fitur
- Tetapkan cakupan ke token bot Anda dengan mengklik Tinjau Cakupan untuk Ditambahkan
- Scroll ke bawah ke Bot Token Scopes, lalu klik Add an OAuth Scope. Pilih
chat:write
untuk "Kirim pesan sebagai Kittenbot"
- Scroll ke atas, lalu klik tombol Instal Aplikasi ke Workspace Anda.
- Tindakan ini akan menginstal aplikasi ke tim Anda, menambahkan pengguna bot yang baru saja dibuat, dan membuat token bot.
- Saat diminta, klik "Izinkan" untuk mengizinkan bot melakukan chat di ruang kerja Anda.
Mengaktifkan pesan dan perintah
- Scroll ke bawah ke Tampilkan Tab dan pastikan kedua opsi diaktifkan:
Mendapatkan rahasia penandatanganan klien
- Buka Informasi Dasar di bagian Setelan.
- Scroll ke bawah ke Signed Secret, klik Show, lalu salin rahasia ke papan klip:
- Simpan rahasia dalam variabel lingkungan:
CLIENT_SIGNING_SECRET=PASTE_THE_SIGNING_SECRET
Mendapatkan token bot
- Buka OAuth & Izin di bagian Fitur.
- Klik tombol Salin untuk menyalin teks Token Akses OAuth Pengguna Bot ke papan klip.
- Simpan token bot di variabel lingkungan:
BOT_TOKEN=PASTE_THE_BOT_TOKEN
Jangan khawatir. Anda dapat kembali ke halaman konfigurasi ini dari halaman pengelolaan aplikasi jika ingin mendapatkan token tersebut lagi.
6. Amankan rahasiamu
Kami ingin memastikan token bot dan rahasia penandatanganan klien Anda disimpan dengan aman. Melakukan hard-coding terhadapnya dalam kode sumber dapat menyebabkannya secara tidak sengaja mengekspos rahasia ini ke kontrol versi atau menyematkannya dalam gambar Docker.
Secret Manager menyediakan metode yang aman dan mudah untuk menyimpan kunci API, sandi, sertifikat, dan data sensitif lainnya. Secret Manager menyediakan tempat terpusat dan satu sumber kebenaran untuk mengelola, mengakses, dan mengaudit secret di seluruh Google Cloud.
Membuat secret Anda
Simpan rahasia penandatanganan klien dan token bot dengan perintah berikut:
- Rahasia penandatanganan klien
echo -n $CLIENT_SIGNING_SECRET | gcloud secrets create client-signing-secret \ --replication-policy automatic \ --data-file -
- Token bot
echo -n $BOT_TOKEN | gcloud secrets create bot-token \ --replication-policy automatic \ --data-file -
Mengakses Secret Anda
Mari kita konfirmasi bahwa secret Anda telah dibuat dengan benar dan izin Anda berfungsi. Akses secret Anda dengan perintah berikut:
echo $(gcloud secrets versions access 1 --secret client-signing-secret) echo $(gcloud secrets versions access 1 --secret bot-token)
Anda juga dapat melihat dan mengelola secret Anda di Konsol Google Cloud.
7. Mendapatkan kode contoh
Di Cloud Shell pada command line, jalankan perintah berikut untuk meng-clone repositori GitHub:
git clone https://github.com/googlecodelabs/cloud-slack-bot.git
Ubah direktori menjadi cloud-slack-bot/start
.
cd cloud-slack-bot/start
Memahami Kode
Buka file kittenbot.js
dengan editor command line pilihan Anda (nano, vim, emacs...) atau dengan perintah berikut untuk langsung membuka folder saat ini di Cloud Shell Editor:
cloudshell workspace .
Kode kittenbot memiliki dua fungsi utama. Salah satunya adalah untuk mengambil rahasia, dan yang lainnya adalah menjalankan bot.
Pertama, kita impor dependensi:
kittenbot.js
const { Botkit } = require('botkit');
const {
SlackAdapter,
SlackEventMiddleware,
} = require('botbuilder-adapter-slack');
const { SecretManagerServiceClient } = require('@google-cloud/secret-manager');
SlackAdapter dan SlackEventMiddleware adalah paket yang memperluas Botkit dan memungkinkan bot menerjemahkan pesan ke dan dari Slack API dengan mudah. Klien Secret Manager akan mengizinkan Anda mengakses rahasia yang disimpan pada langkah sebelumnya.
Selanjutnya, kita memiliki fungsi untuk mengambil secret:
/**
* Returns the secret string from Google Cloud Secret Manager
* @param {string} name The name of the secret.
* @return {Promise<string>} The string value of the secret.
*/
async function accessSecretVersion(name) {
const client = new SecretManagerServiceClient();
const projectId = process.env.PROJECT_ID;
const [version] = await client.accessSecretVersion({
name: `projects/${projectId}/secrets/${name}/versions/1`,
});
// Extract the payload as a string.
const payload = version.payload.data.toString('utf8');
return payload;
}
Fungsi ini menampilkan nilai string rahasia yang diperlukan untuk mengautentikasi bot.
Fungsi berikutnya akan menginisialisasi bot:
/**
* Function to initialize kittenbot.
*/
async function kittenbotInit() {
const adapter = new SlackAdapter({
clientSigningSecret: await accessSecretVersion('client-signing-secret'),
botToken: await accessSecretVersion('bot-token'),
});
adapter.use(new SlackEventMiddleware());
const controller = new Botkit({
webhook_uri: '/api/messages',
adapter: adapter,
});
controller.ready(() => {
controller.hears(
['hello', 'hi', 'hey'],
['message', 'direct_message'],
async (bot, message) => {
await bot.reply(message, 'Meow. :smile_cat:');
}
);
});
}
Bagian pertama dari fungsi mengonfigurasi SlackAdapter dengan secret, lalu menentukan endpoint untuk menerima pesan. Kemudian, setelah pengontrol aktif, bot akan membalas setiap pesan yang berisi kata "halo", "halo", atau "halo" dengan "Meong. Penyesuaian."
Lihat bagian-bagian tertentu ini dalam manifes aplikasi:
package.json
{
// ...
"scripts": {
"start": "node kittenbot.js",
// ...
},
"engines": {
"node": "16"
},
// ...
}
Anda dapat men-deploy aplikasi Node.js langsung dari sumber dengan Cloud Run. Hal berikut akan terjadi di balik layar:
- Cloud Run memanggil Cloud Build untuk membangun image container (lihat Men-deploy dari kode sumber).
- Jika
Dockerfile
ada di direktori kode sumber, Cloud Build akan menggunakannya untuk membangun image container. - Karena tidak, Cloud Build memanggil Buildpacks untuk menganalisis sumber dan otomatis membuat image siap produksi.
- Buildpack mendeteksi manifes
package.json
dan mem-build image Node.js. - Kolom
scripts.start
menentukan cara aplikasi dimulai. - Kolom
engines.node
menentukan versi Node.js dari image dasar container. - Pada waktu deployment, perbaikan keamanan umum akan otomatis diterapkan.
Anda siap men-deploy aplikasi.
8. Men-deploy aplikasi
Slack Events API menggunakan webhook untuk mengirim pesan keluar tentang peristiwa. Saat mengonfigurasi Aplikasi Slack, Anda harus memberikan URL yang dapat diakses secara publik agar Slack API dapat melakukan ping.
Cloud Run adalah solusi yang baik untuk menghosting target webhook. API ini memungkinkan Anda menggunakan bahasa atau runtime apa pun yang Anda sukai dan menyediakan permintaan serentak, yang berarti aplikasi Anda akan mampu menangani volume yang jauh lebih tinggi.
Mengambil project ID
Tentukan variabel lingkungan PROJECT_ID:
PROJECT_ID=$(gcloud config get-value core/project)
Menentukan region Cloud Run
Cloud Run bersifat regional, yang berarti infrastruktur yang menjalankan layanan Cloud Run Anda terletak di region tertentu dan dikelola oleh Google agar tersedia redundan di semua zona dalam region tersebut. Tentukan region yang akan Anda gunakan untuk deployment, misalnya:
REGION="us-central1"
Memperbarui izin
Agar dapat mengakses secret dari Secret Manager, akun layanan Cloud Run perlu diberi peran roles/secretmanager.secretAccessor
.
Pertama, simpan akun layanan default ke dalam variabel lingkungan:
SERVICE_ACCOUNT=$(gcloud iam service-accounts list \ --format "value(email)" \ --filter "displayName:Compute Engine default service account")
Pastikan Anda telah menyimpan alamat email:
echo $SERVICE_ACCOUNT
Akun layanan memiliki format berikut: PROJECT_NUMBER-compute@developer.gserviceaccount.com
.
Setelah Anda memiliki alamat email, aktifkan peran untuk akun layanan:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SERVICE_ACCOUNT \ --role roles/secretmanager.secretAccessor
Men-deploy aplikasi
Layanan Cloud Run mengekspos endpoint unik dan otomatis menskalakan infrastruktur dasar untuk menangani permintaan yang masuk.
Deploy aplikasi ke Cloud Run:
gcloud run deploy kittenbot \ --source . \ --platform managed \ --region $REGION \ --set-env-vars PROJECT_ID=$PROJECT_ID \ --allow-unauthenticated
- Tindakan ini akan membuat layanan yang disebut
kittenbot
. - Opsi
--source
menggunakan folder saat ini untuk membangun aplikasi dengan Cloud Build. Cloud Build otomatis mendeteksi keberadaan filepackage.json
. - Anda juga dapat menentukan region default dengan perintah ini:
gcloud config set run/region $REGION
- Anda juga dapat menjadikan Cloud Run dikelola secara default dengan perintah ini:
gcloud config set run/platform managed
- Opsi
--set-env-vars
menetapkan variabel lingkungan layanan. - Opsi
--allow-unauthenticated
membuat layanan tersedia untuk publik.
Pertama kali, Anda akan mendapatkan perintah untuk membuat repositori Artifact Registry. Ketuk Enter untuk memvalidasi:
Deploying from source requires an Artifact Registry Docker repository to store built containers. A repository named [cloud-run-source-deploy] in region [REGION] will be created. Do you want to continue (Y/n)?
Tindakan ini akan meluncurkan upload kode sumber Anda ke repositori Artifact Registry dan build image container Anda:
Building using Dockerfile and deploying container ... * Building and deploying new service... Building Container. OK Creating Container Repository... OK Uploading sources... * Building Container... Logs are available at ...
Kemudian, tunggu beberapa saat sampai build dan deployment selesai. Jika berhasil, command line akan menampilkan URL layanan:
... OK Building and deploying new service... Done. OK Creating Container Repository... OK Uploading sources... OK Building Container... Logs are available at ... OK Creating Revision... Creating Service. OK Routing traffic... OK Setting IAM Policy... Done. Service [SERVICE]... has been deployed and is serving 100 percent of traffic. Service URL: https://SERVICE-PROJECTHASH-REGIONID.a.run.app
Anda bisa mendapatkan URL layanan dengan perintah ini:
SERVICE_URL=$( \ gcloud run services describe kittenbot \ --platform managed \ --region $REGION \ --format "value(status.url)" \ ) echo $SERVICE_URL
URL tersebut memiliki format berikut:
https://kittenbot-PROJECTHASH-REGIONID.a.run.app
URL ini akan menjadi dasar yang digunakan untuk mengaktifkan Slack Events API. Salin ke papan klip untuk digunakan pada langkah berikutnya.
Layanan Anda kini sudah aktif dan tersedia untuk publik. Buka konsol Cloud Run untuk mengetahui informasi selengkapnya.
Anda dapat melihat kapan revisi terakhir dibuat, berapa banyak traffic yang diterima, dan melihat log. Jika kita mengklik log, kita dapat melihat bahwa pengontrol Botkit aktif dan siap menerima pesan.
Sekarang mari kita mulai mengirim pesan dari channel Slack!
9. Aktifkan peristiwa Slack
Seperti yang kita lihat sebelumnya, kode kittenbot kita menentukan endpoint relatif untuk target webhook.
kittenbot.js
const controller = new Botkit({
webhook_uri: '/api/messages',
adapter: adapter,
});
Artinya, URL lengkap kami akan menjadi bagian dasar dari layanan Cloud Run, ditambah /api/messages
.
Mengaktifkan Peristiwa
Di halaman pengelolaan aplikasi, buka bagian Langganan Acara di sidebar, lalu aktifkan Aktifkan Peristiwa. Masukkan URL layanan Anda:
PASTE_THE_SERVICE_URL/api/messages
Bergantung pada seberapa cepat Anda mengetik URL, Google mungkin mencoba melakukan verifikasi sebelum Anda selesai. Jika gagal, klik "Coba lagi".
Berlangganan
Berlangganan ke semua peristiwa bot pesan.
Klik Simpan Perubahan di bagian bawah laman. Anda akan diminta untuk Menginstal Ulang Aplikasi Anda. Ikuti petunjuknya, lalu klik Izinkan.
Pada tahap ini, bot Anda sudah terintegrasi sepenuhnya! Pesan di ruang kerja akan memicu Slack untuk mengirim pesan ke layanan Cloud Run Anda, yang kemudian akan merespons dengan sapaan sederhana.
10. Uji bot Anda
Kirim pesan langsung ke Kittenbot:
Tambahkan kittenbot ke channel dengan memasukkan "@kittenbot" lalu mengklik "Undang Mereka".:
Sekarang semua orang di channel Anda bisa berinteraksi dengan Kittenbot!
Setiap pesan di Slack memicu peristiwa dan mengirim pesan POST HTTP ke layanan Cloud Run kami. Jika melihat log layanan Cloud Run, Anda akan melihat bahwa setiap pesan sesuai dengan entri POST di log.
Anak kucing merespons setiap pesan dengan "Meong. Penyesuaian."
11. Bonus - Update bot Anda
Bagian opsional ini memerlukan waktu beberapa menit. Jangan ragu untuk langsung membuka fitur Pembersihan.
Rangkaian Pesan Percakapan
Kita ingin bot melakukan lebih dari sekadar "meong". Namun, bagaimana cara men-deploy versi baru dari sesuatu yang berjalan di Cloud Run?
Ubah direktori menjadi cloud-slack-bot/extra-credit
:
cd ../extra-credit/
Buka folder saat ini di Cloud Shell Editor:
cloudshell workspace .
Botkit menawarkan kemampuan untuk menangani percakapan. Dengan demikian, bot dapat meminta lebih banyak informasi dan bereaksi terhadap pesan yang tidak hanya dibalas satu kata.
Menentukan dialog
Pertama, lihat bagaimana fungsi percakapan ditentukan di akhir file:
// ...
const maxCats = 20;
const catEmojis = [
':smile_cat:',
':smiley_cat:',
':joy_cat:',
':heart_eyes_cat:',
':smirk_cat:',
':kissing_cat:',
':scream_cat:',
':crying_cat_face:',
':pouting_cat:',
':cat:',
':cat2:',
':leopard:',
':lion_face:',
':tiger:',
':tiger2:',
];
/**
* Function to concatenate cat emojis
* @param {number} numCats Number of cat emojis.
* @return {string} The string message of cat emojis.
*/
function makeCatMessage(numCats) {
let catMessage = '';
for (let i = 0; i < numCats; i++) {
// Append a random cat from the list
catMessage += catEmojis[Math.floor(Math.random() * catEmojis.length)];
}
return catMessage;
}
/**
* Function to create the kitten conversation
* @param {Object} controller The botkit controller.
* @return {Object} The BotkitConversation object.
*/
function createKittenDialog(controller) {
const convo = new BotkitConversation('kitten-delivery', controller);
convo.ask('Does someone need a kitten delivery?', [
{
pattern: 'yes',
handler: async (response, convo, bot) => {
await convo.gotoThread('yes_kittens');
},
},
{
pattern: 'no',
handler: async (response, convo, bot) => {
await convo.gotoThread('no_kittens');
},
},
{
default: true,
handler: async (response, convo, bot) => {
await convo.gotoThread('default');
},
},
]);
convo.addQuestion(
'How many would you like?',
[
{
pattern: '^[0-9]+?',
handler: async (response, convo, bot, message) => {
const numCats = parseInt(response);
if (numCats > maxCats) {
await convo.gotoThread('too_many');
} else {
convo.setVar('full_cat_message', makeCatMessage(numCats));
await convo.gotoThread('cat_message');
}
},
},
{
default: true,
handler: async (response, convo, bot, message) => {
if (response) {
await convo.gotoThread('ask_again');
} else {
// The response '0' is interpreted as null
await convo.gotoThread('zero_kittens');
}
},
},
],
'num_kittens',
'yes_kittens'
);
// If numCats is too large, jump to start of the yes_kittens thread
convo.addMessage(
'Sorry, {{vars.num_kittens}} is too many cats. Pick a smaller number.',
'too_many'
);
convo.addAction('yes_kittens', 'too_many');
// If response is not a number, jump to start of the yes_kittens thread
convo.addMessage("Sorry I didn't understand that", 'ask_again');
convo.addAction('yes_kittens', 'ask_again');
// If numCats is 0, send a dog instead
convo.addMessage(
{
text:
'Sorry to hear you want zero kittens. ' +
'Here is a dog, instead. :dog:',
attachments: [
{
fallback: 'Chihuahua Bubbles - https://youtu.be/s84dBopsIe4',
text: '<https://youtu.be/s84dBopsIe4|' + 'Chihuahua Bubbles>!',
},
],
},
'zero_kittens'
);
// Send cat message
convo.addMessage('{{vars.full_cat_message}}', 'cat_message');
convo.addMessage('Perhaps later.', 'no_kittens');
return convo;
}
Percakapan baru ini mengarahkan rangkaian pesan berdasarkan respons. Misalnya, jika pengguna merespons "tidak" ke pertanyaan anak kucing, pesan itu akan melompat ke pesan berlabel "no_kittens", yang merupakan akhir dari rangkaian pesan percakapan.
Menambahkan dialog ke pengontrol
Setelah percakapan ditentukan, lihat cara menambahkannya ke pengontrol:
async function kittenbotInit() {
// ...
const controller = new Botkit({
webhook_uri: '/api/messages',
adapter: adapter,
});
// Add Kitten Dialog
const convo = createKittenDialog(controller);
controller.addDialog(convo);
// Controller is ready
controller.ready(() => {
// ...
});
}
Memicu dialog
Setelah dialog tersedia untuk digunakan pengontrol, lihat cara percakapan dimulai saat chatbot mendengar "kitten", "kittens", "cats", atau "cats":
// ...
controller.ready(() => {
controller.hears(
['hello', 'hi', 'hey'],
['message', 'direct_message'],
async (bot, message) => {
await bot.reply(message, 'Meow. :smile_cat:');
return;
}
);
// START: listen for cat emoji delivery
controller.hears(
['cat', 'cats', 'kitten', 'kittens'],
['message', 'direct_message'],
async (bot, message) => {
// Don't respond to self
if (message.bot_id !== message.user) {
await bot.startConversationInChannel(message.channel, message.user);
await bot.beginDialog('kitten-delivery');
return;
}
}
);
// END: listen for cat emoji delivery
// ...
});
// ...
Mengupdate aplikasi
Deploy ulang aplikasi ke Cloud Run:
gcloud run deploy kittenbot \ --source . \ --platform managed \ --region $REGION \ --set-env-vars PROJECT_ID=$PROJECT_ID \ --allow-unauthenticated
Coba
Selamat! Anda baru saja mengupdate bot Slack yang berjalan di Cloud Run ke versi baru.
Perintah Garis miring
Bagaimana jika Anda tidak ingin melakukan percakapan dengan pengguna? Bagaimana jika Anda lebih suka memicu tindakan dengan satu perintah sederhana?
Slack menawarkan fungsi ini melalui perintah garis miring, yang memungkinkan pengguna untuk memanggil aplikasi Anda dengan memasukkan perintah ke dalam kotak pesan.
Mengaktifkan Perintah Garis miring Slack
- Buka bagian Perintah Garis miring pada Fitur di Halaman Pengelolaan Aplikasi.
- Klik Create New Command.
- Konfigurasi perintah
/cats
dengan URL layanan kittenbot Anda. Jangan lupa untuk menggunakan endpoint yang sama dengan yang Anda gunakan untuk mengaktifkan Events API. Ini adalah URL Anda, ditambah'/api/messages'
.
- Ikuti perintah untuk mengupdate aplikasi dan izin.
Menambahkan Perintah Garis miring ke Pengontrol
Lihat cara pengendali untuk perintah garis miring ditambahkan di dalam fungsi controller.ready:
// ...
// Controller is ready
controller.ready(() => {
// ...
// START: slash commands
controller.on('slash_command', async (bot, message) => {
const numCats = parseInt(message.text);
const response = makeCatMessage(numCats);
bot.httpBody({ text: response });
});
// END: slash commands
});
// ...
Coba
Masukkan {i> /cats<i} plus angka untuk mengirim perintah garis miring. Misalnya: /cats 8
Bot akan merespons dengan 8 kucing, yang hanya dapat dilihat oleh Anda:
12. Pembersihan
Selamat, sekarang Anda memiliki bot Slack yang berjalan di Cloud Run. Saatnya membersihkan resource yang digunakan (untuk menghemat biaya dan menjadi cloud citizen yang baik).
Menghapus project
Anda dapat menghapus seluruh project, langsung dari Cloud Shell:
gcloud projects delete $PROJECT_ID
Atau, jika Anda memilih untuk menghapus resource yang berbeda satu per satu, lanjutkan ke bagian berikutnya.
Menghapus deployment
gcloud run services delete kittenbot --region $REGION
Output perintah
Service [kittenbot] will be deleted. Do you want to continue (Y/n)? y Deleted service [kittenbot].
Menghapus rahasia penandatanganan klien
gcloud secrets delete client-signing-secret
Output perintah
You are about to destroy the secret [client-signing-secret] and its [1] version(s). This action cannot be reversed. Do you want to continue (Y/n)? y Deleted secret [client-signing-secret].
Menghapus rahasia token bot Anda
gcloud secrets delete bot-token
Output perintah
You are about to destroy the secret [bot-token] and its [1] version(s). This action cannot be reversed. Do you want to continue (Y/n)? y Deleted secret [bot-token].
Menghapus bucket penyimpanan
Pertama, cantumkan bucket Google Cloud Storage untuk mendapatkan jalur bucket:
gsutil ls
Output perintah
gs://[REGION.]artifacts.<PROJECT_ID>.appspot.com/ gs://<PROJECT_ID>_cloudbuild/
Sekarang, hapus bucket artefak:
gsutil rm -r gs://[REGION.]artifacts.${PROJECT_ID}.appspot.com/
Output perintah
Removing gs://[REGION.]artifacts.<PROJECT_ID>.appspot.com/...
Terakhir, hapus bucket cloudbuild:
gsutil rm -r gs://${PROJECT_ID}_cloudbuild/
Output perintah
Removing gs://<PROJECT_ID>_cloudbuild/...
13. Selamat!
Sekarang Anda tahu cara menjalankan bot Slack di Cloud Run.
Kami baru saja memulai sebagian besar teknologi ini dan sebaiknya Anda mempelajari lebih lanjut dengan deployment Cloud Run Anda sendiri.
Yang telah kita bahas
- Membuat integrasi kustom bot di Slack
- Mengamankan secret Slack Anda dengan Secret Manager
- Men-deploy bot Slack di Cloud Run
Langkah Berikutnya
- Selesaikan tutorial Cloud Run lainnya
Pelajari Lebih Lanjut
- Lihat contoh integrasi Slack Google Cloud lainnya di GitHub.
- Coba sendiri fitur Google Cloud lainnya. Lihat tutorial kami.