1. Ringkasan

Dalam codelab ini, Anda akan mempelajari cara membuat bot Slack menggunakan toolkit Botkit dan menjalankannya di Google Cloud. Anda dapat berinteraksi dengan bot di saluran Slack aktif.
Yang akan Anda pelajari
- Cara membuat integrasi kustom bot di Slack
- Cara mengamankan secret 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 penilaian Anda terhadap pengalaman menggunakan 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 dari jarak jauh menggunakan laptop Anda, dalam tutorial ini, Anda akan menggunakan Cloud Shell, lingkungan command line yang berjalan di Cloud.
Mengaktifkan Cloud Shell
- Dari Cloud Console, klik Aktifkan Cloud Shell
.

Jika ini adalah pertama kalinya Anda memulai Cloud Shell, Anda akan melihat layar perantara yang menjelaskan apa itu Cloud Shell. Jika Anda melihat layar perantara, klik Continue.

Perlu waktu beberapa saat untuk menyediakan dan terhubung ke Cloud Shell.

Virtual machine ini dilengkapi dengan semua alat pengembangan yang diperlukan. VM 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 telah 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 API, Cloud Build API, Cloud Run API, dan Secret Manager API:
gcloud services enable \ artifactregistry.googleapis.com \ cloudbuild.googleapis.com \ run.googleapis.com \ secretmanager.googleapis.com
Perintah ini akan menampilkan pesan sukses 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 memiliki ruang kerja yang ingin digunakan untuk tutorial ini.

5. Membuat pengguna bot Slack
Pengguna bot dapat memproses pesan di Slack, memposting pesan, dan mengupload file. Dalam codelab ini, Anda akan membuat bot untuk memposting pesan ucapan sederhana.
Buat aplikasi Slack baru
- Buka halaman pengelolaan aplikasi Slack.
- Klik tombol Buat aplikasi baru di pojok kanan atas.
- Beri nama aplikasi, misalnya "Kittenbot".
- Pilih tim Slack tempat Anda ingin menginstalnya.
Membuat pengguna bot
- Buka Beranda Aplikasi di panel sisi kiri di bagian Fitur

- Tetapkan cakupan ke token bot Anda dengan mengklik Tinjau Cakupan yang Akan Ditambahkan
- Scroll ke bawah ke Cakupan Token Bot, lalu klik Tambahkan Cakupan OAuth. Pilih
chat:writeuntuk "Kirim pesan sebagai Kittenbot"

- Scroll ke atas, lalu klik tombol Install App to your Workspace.
- Tindakan ini akan menginstal aplikasi ke tim Anda, menambahkan pengguna bot yang baru saja Anda buat, 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 Signing Secret, klik Show, lalu salin secret ke papan klip Anda:

- Simpan secret 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 Anda.

- Simpan token bot dalam variabel lingkungan:
BOT_TOKEN=PASTE_THE_BOT_TOKEN
Jangan khawatir. Anda dapat kembali ke halaman konfigurasi ini dari halaman pengelolaan aplikasi jika perlu mendapatkan token ini lagi.
6. Mengamankan secret Anda
Kami ingin memastikan bahwa token bot dan rahasia penandatanganan klien Anda disimpan dengan aman. Meng-hardcode-nya dalam kode sumber kemungkinan akan membuat rahasia ini terekspos secara tidak sengaja dengan memublikasikannya ke kontrol versi atau menyematkannya dalam image Docker.
Secret Manager menyediakan metode yang aman dan praktis untuk menyimpan kunci API, sandi, sertifikat, dan data sensitif lainnya. Secret Manager menyediakan tempat terpusat dan single source of truth (SSOT) untuk mengelola, mengakses, dan mengaudit secret di seluruh Google Cloud.
Membuat secret Anda
Simpan rahasia penandatanganan klien dan token bot Anda 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 rahasia 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 untuk menjalankan bot.
Pertama, kita mengimpor 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 memungkinkan Anda mengakses secret yang Anda simpan di 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 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 fungsi mengonfigurasi SlackAdapter dengan rahasia, lalu menentukan endpoint untuk menerima pesan. Kemudian, setelah pengontrol aktif, bot akan membalas setiap pesan yang berisi "halo", "hai", atau "hei" dengan "Meong. 😺".
Lihat bagian tertentu ini di 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
Dockerfileada di direktori kode sumber, Cloud Build akan menggunakannya untuk membangun image container. - Karena tidak ada, Cloud Build memanggil Buildpack untuk menganalisis sumber dan membuat image yang siap produksi secara otomatis.
- Buildpack mendeteksi manifes
package.jsondan membangun image Node.js. - Kolom
scripts.startmenentukan cara aplikasi dimulai. - Kolom
engines.nodemenentukan versi Node.js dari image dasar container. - Pada waktu deployment, perbaikan keamanan yang diketahui akan diterapkan secara otomatis.
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. Hal ini memungkinkan Anda menggunakan bahasa atau runtime apa pun yang Anda sukai dan menyediakan konkurensi, yang berarti aplikasi Anda akan dapat menangani volume yang jauh lebih tinggi.
Mendapatkan project ID Anda
Tentukan variabel lingkungan PROJECT_ID:
PROJECT_ID=$(gcloud config get-value core/project)
Tentukan region Cloud Run Anda
Cloud Run bersifat regional, berarti infrastruktur yang menjalankan layanan Cloud Run Anda terletak di region tertentu dan dikelola oleh Google agar tersedia secara redundan di semua zona dalam region tersebut. Tentukan region yang akan Anda gunakan untuk deployment, misalnya:
REGION="us-central1"
Perbarui izin
Agar dapat mengakses secret dari Secret Manager, akun layanan Cloud Run harus 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")
Konfirmasi bahwa 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 secara otomatis menskalakan infrastruktur yang mendasarinya untuk menangani permintaan masuk.
Men-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 bernama
kittenbot. - Opsi
--sourcemenggunakan folder saat ini untuk membangun aplikasi dengan Cloud Build. Cloud Build otomatis mendeteksi keberadaan filepackage.json. - Atau, Anda dapat menentukan region default dengan perintah ini:
gcloud config set run/region $REGION - Anda juga dapat membuat Cloud Run dikelola secara default dengan perintah ini:
gcloud config set run/platform managed - Opsi
--set-env-varsmenetapkan variabel lingkungan layanan. - Opsi
--allow-unauthenticatedmembuat layanan tersedia secara publik.
Saat 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 sebentar hingga 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 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 Anda untuk digunakan di langkah berikutnya.
Layanan Anda kini aktif dan tersedia secara publik. Buka konsol Cloud Run untuk mengetahui informasi selengkapnya. 
Anda dapat melihat kapan revisi terakhir dibuat, jumlah 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 saluran Slack.
9. Mengaktifkan peristiwa Slack
Seperti yang kita lihat sebelumnya, kode kittenbot kita menentukan endpoint relatif untuk target webhook kita.
kittenbot.js
const controller = new Botkit({
webhook_uri: '/api/messages',
adapter: adapter,
});
Artinya, URL lengkap kita akan menjadi bagian dasar dari layanan Cloud Run, ditambah /api/messages.
Mengaktifkan Acara
Di halaman pengelolaan aplikasi, buka bagian Langganan Peristiwa di sidebar, lalu aktifkan Aktifkan Peristiwa. Masukkan URL layanan Anda:
PASTE_THE_SERVICE_URL/api/messages

Bergantung pada seberapa cepat Anda mengetik URL, URL tersebut mungkin mencoba memverifikasi sebelum Anda selesai. Jika gagal, klik "Coba lagi".
Berlangganan
Berlangganan semua peristiwa bot pesan.

Klik Simpan Perubahan di bagian bawah laman. Anda akan diminta untuk Menginstal Ulang Aplikasi Anda. Ikuti perintahnya dan 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 pada gilirannya akan merespons dengan ucapan sederhana.
10. Menguji bot Anda
Mengirim pesan langsung ke Kittenbot:

Tambahkan kittenbot ke channel Anda dengan memasukkan "@kittenbot", lalu klik "Undang Dia":

Sekarang semua orang di channel Anda dapat berinteraksi dengan Kittenbot.

Setiap pesan di Slack memicu peristiwa dan mengirim pesan HTTP POST ke layanan Cloud Run kami. Jika melihat log layanan Cloud Run, Anda akan melihat bahwa setiap pesan sesuai dengan entri POST di log.

Kittenbot merespons setiap pesan dengan "Meong". 😺".
11. Bonus - Memperbarui bot Anda
Bagian opsional ini memerlukan waktu beberapa menit. Anda dapat langsung membuka Pembersihan.
Rangkaian Percakapan
Kita ingin bot melakukan lebih dari sekadar mengucapkan "meong". Namun, bagaimana cara men-deploy versi baru sesuatu yang berjalan di Cloud Run?
Ubah direktori menjadi cloud-slack-bot/extra-credit:
cd ../extra-credit/
Membuka folder saat ini di Cloud Shell Editor:
cloudshell workspace .
Botkit menawarkan kemampuan untuk menangani percakapan. Dengan fitur ini, bot dapat meminta informasi lebih lanjut dan bereaksi terhadap pesan selain balasan satu kata.
Tentukan dialog
Pertama, lihat cara 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 menjawab "tidak" untuk pertanyaan tentang anak kucing, percakapan akan beralih ke pesan berlabel "no_kittens", yang merupakan akhir dari rangkaian percakapan tersebut.
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
Sekarang dialog tersedia untuk digunakan pengontrol, lihat cara memulai percakapan saat chatbot mendengar "anak kucing", "anak-anak kucing", "kucing", atau "kucing-kucing":
// ...
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 memanggil aplikasi Anda dengan memasukkan perintah ke dalam kotak pesan.
Mengaktifkan Perintah Garis Miring Slack
- Buka bagian Perintah Miring di bagian Fitur di Halaman Pengelolaan Aplikasi Anda.
- Klik Create New Command.
- Konfigurasi perintah
/catsdengan 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 Anda.
Menambahkan Perintah Slash ke Pengontrol Anda
Lihat cara menambahkan handler untuk perintah garis miring 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 /cats ditambah angka untuk mengirim perintah garis miring. Contoh: /cats 8

Bot akan merespons dengan 8 kucing, yang hanya dapat dilihat oleh Anda:

12. Pembersihan
Selamat, Anda kini memiliki bot Slack yang berjalan di Cloud Run. Saatnya membersihkan resource yang digunakan (untuk menghemat biaya dan menjadi pengguna cloud yang baik).
Menghapus project
Anda dapat menghapus seluruh project, langsung dari Cloud Shell:
gcloud projects delete $PROJECT_ID
Atau, jika Anda lebih suka menghapus berbagai resource satu per satu, lanjutkan ke bagian berikutnya.
Hapus 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 Anda
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].
Hapus secret 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].
Hapus bucket penyimpanan
Pertama, buat daftar 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 telah mengetahui cara menjalankan bot Slack di Cloud Run.
Kita baru saja mempelajari bagian awal teknologi ini. Sebaiknya Anda mempelajari lebih jauh menggunakan 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 Anda 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.