Tutorial ini menunjukkan penggunaan fungsi Cloud Run untuk menerapkan Perintah Slash Slack yang menelusuri Google Knowledge Graph API.
Memvisualisasikan aliran data.
Alur data di aplikasi tutorial Slash Command di Slack melibatkan beberapa langkah:
- Pengguna menjalankan Perintah Slack
/kg <search_query>
di saluran Slack. - Slack mengirimkan payload perintah ke endpoint pemicu fungsi.
- Fungsi ini mengirimkan permintaan dengan kueri penelusuran pengguna ke Knowledge Graph API.
- API Pustaka Pengetahuan merespons dengan hasil yang cocok.
- Fungsi memformat respons menjadi pesan Slack.
- Fungsi mengirim pesan kembali ke Slack.
- Pengguna akan melihat respons terformat di saluran Slack.
Anda dapat memvisualisasikan langkah-langkahnya:
Membuat kunci API Pustaka Pengetahuan
Di halaman Kredensial konsolGoogle Cloud , klik tombol Buat kredensial, lalu pilih Kunci API. Ingat kunci ini, karena Anda akan menggunakannya untuk mengakses API Pustaka Pengetahuan di bagian berikutnya.
Menyiapkan fungsi
Clone repositori aplikasi contoh ke komputer lokal Anda:
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
Atau, Anda dapat mendownload contoh dalam file ZIP dan mengekstraknya.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
Atau, Anda dapat mendownload contoh dalam file ZIP dan mengekstraknya.
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
Atau, Anda dapat mendownload contoh dalam file ZIP dan mengekstraknya.
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
Atau, Anda dapat mendownload contoh sebagai file ZIP dan mengekstraknya.
Ruby
git clone https://github.com/GoogleCloudPlatform/ruby-docs-samples.git
Atau, Anda dapat mendownload contoh dalam file ZIP dan mengekstraknya.
Ubah ke direktori yang berisi kode contoh fungsi Cloud Run:
Node.js
cd nodejs-docs-samples/functions/slack/
Python
cd python-docs-samples/functions/slack/
Go
cd golang-samples/functions/slack/
Java
cd java-docs-samples/functions/slack/
Ruby
cd ruby-docs-samples/functions/slack/
Men-deploy fungsi
Untuk menerapkan fungsi yang dijalankan saat Anda (atau Slack) membuat permintaan POST HTTP ke endpoint fungsi, jalankan perintah berikut di direktori yang berisi kode contoh (atau file pom.xml
untuk Java):
Ganti YOUR_SLACK_SIGNING_SECRET
dengan secret penandatanganan
yang disediakan oleh Slack di halaman Informasi dasar pada konfigurasi
aplikasi Anda, dan YOUR_KG_API_KEY
dengan kunci API
Pustaka Pengetahuan yang Anda buat sebelumnya.
Node.js
gcloud functions deploy kgSearch \ --runtime nodejs22 \
--trigger-http \
--set-env-vars "SLACK_SECRET=YOUR_SLACK_SIGNING_SECRET
,KG_API_KEY=YOUR_KG_API_KEY
" \
--allow-unauthenticated
Gunakan flag --runtime
untuk menentukan ID runtime dari versi Node.js yang didukung untuk menjalankan fungsi Anda.
Python
gcloud functions deploy kg_search \ --runtime python312 \
--trigger-http \
--set-env-vars "SLACK_SECRET=YOUR_SLACK_SIGNING_SECRET
,KG_API_KEY=YOUR_KG_API_KEY
" \
--allow-unauthenticated
Gunakan flag --runtime
untuk menentukan ID runtime
versi Python yang didukung untuk menjalankan
fungsi Anda.
Go
gcloud functions deploy KGSearch \ --runtime go121 \
--trigger-http \
--set-env-vars "SLACK_SECRET=YOUR_SLACK_SIGNING_SECRET
,KG_API_KEY=YOUR_KG_API_KEY
" \
--allow-unauthenticated
Gunakan flag --runtime
untuk menentukan ID runtime versi Go yang didukung untuk menjalankan fungsi Anda.
Java
gcloud functions deploy java-slack-function \ --entry-point functions.SlackSlashCommand \ --runtime java17 \ --memory 512MB \
--trigger-http \
--set-env-vars "SLACK_SECRET=YOUR_SLACK_SIGNING_SECRET
,KG_API_KEY=YOUR_KG_API_KEY
" \
--allow-unauthenticated
Gunakan flag --runtime
untuk menentukan ID runtime
versi Java yang didukung guna menjalankan
fungsi Anda.
Ruby
gcloud functions deploy kg_search --runtime ruby33 \
--trigger-http \
--set-env-vars "SLACK_SECRET=YOUR_SLACK_SIGNING_SECRET
,KG_API_KEY=YOUR_KG_API_KEY
" \
--allow-unauthenticated
Gunakan flag --runtime
untuk menentukan ID runtime
versi Ruby yang didukung untuk menjalankan
fungsi Anda.
Mengonfigurasi aplikasi
Setelah fungsi di-deploy, Anda perlu membuat Perintah Slash di Slack yang mengirimkan kueri ke fungsi Anda setiap kali perintah dipicu:
Buat Aplikasi Slack untuk menghosting Perintah Slash di Slack. Kaitkan dengan tim Slack tempat Anda memiliki izin untuk menginstal integrasi.
Buka Perintah Slash, lalu klik tombol Buat perintah baru.
Masukkan
/kg
sebagai nama perintah.Masukkan URL untuk perintah:
Node.js
https://YOUR_REGION-YOUR_PROJECT_ID.cloudfunctions.net/kgSearch
Python
https://YOUR_REGION-YOUR_PROJECT_ID.cloudfunctions.net/kg_search
Go
https://YOUR_REGION-YOUR_PROJECT_ID.cloudfunctions.net/KGSearch
Java
https://YOUR_REGION-YOUR_PROJECT_ID.cloudfunctions.net/java-slack-function
Ruby
https://YOUR_REGION-YOUR_PROJECT_ID.cloudfunctions.net/kg_search
dengan
YOUR_REGION
sebagai region tempat fungsi Anda di-deploy danYOUR_PROJECT_ID
adalah project ID Cloud Anda.Kedua nilai akan terlihat di terminal Anda setelah fungsi selesai di-deploy.
Klik Simpan.
Buka Informasi Dasar.
Klik Instal aplikasi ke ruang kerja Anda dan ikuti petunjuk di layar guna mengaktifkan aplikasi untuk ruang kerja Anda.
Perintah Slash di Slack Anda akan segera online.
Memahami kode
Mengimpor dependensi
Aplikasi harus mengimpor beberapa dependensi untuk berkomunikasi dengan layanan Google Cloud Platform:
Node.js
Python
Go
Java
Ruby
Menerima webhook
Fungsi berikut dijalankan saat Anda (atau Slack) membuat permintaan POST HTTP ke endpoint fungsi:
Node.js
Python
Go
Java
Ruby
Fungsi berikut mengautentikasi permintaan masuk dengan memverifikasi header X-Slack-Signature
yang disediakan oleh Slack:
Node.js
Python
Go
Java
Ruby
Membuat Kueri API Pustaka Pengetahuan
Fungsi berikut mengirim permintaan dengan kueri penelusuran pengguna ke API Pustaka Pengetahuan:
Node.js
Python
Go
Java
Ruby
Memformat pesan Slack
Terakhir, fungsi berikut memformat hasil Pustaka Pengetahuan menjadi pesan Slack berformat lengkap yang akan ditampilkan kepada pengguna:
Node.js
Python
Go
Java
Ruby
Waktu tunggu Slack API
Slack API mengharapkan fungsi Anda merespons dalam waktu 3 detik setelah menerima permintaan webhook.
Perintah dalam tutorial ini biasanya memerlukan waktu kurang dari 3 detik untuk merespons. Untuk perintah yang berjalan lebih lama, sebaiknya konfigurasikan fungsi untuk permintaan push (termasuk response_url
) ke Pub/Sub topik yang bertindak
sebagai antrean tugas.
Kemudian, Anda dapat membuat fungsi kedua yang dipicu oleh Pub/Sub yang memproses tugas tersebut dan mengirimkan hasilnya kembali ke response_url
Slack.
Menggunakan perintah Slash
Ketik perintah ke saluran Slack Anda:
/kg giraffe
Perhatikan log untuk memastikan eksekusi telah selesai:
gcloud functions logs read --limit 100