Tutorial ini menunjukkan penggunaan fungsi Cloud Run untuk menerapkan Perintah Slash Slack yang menelusuri Google Knowledge Graph API.
Tujuan
- Membuat Perintah Slash di Slack.
- Tulis dan deploy fungsi HTTP Cloud Run.
- Menelusuri Google Knowledge Graph API menggunakan Perintah Slash.
Biaya
Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:
- Cloud Run functions
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Sebelum memulai
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Cloud Functions, Cloud Build, and Google Knowledge Graph Search.
- Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
gcloud init
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Cloud Functions, Cloud Build, and Google Knowledge Graph Search.
- Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
gcloud init
- Siapkan lingkungan pengembangan Anda.
Jika Anda sudah menginstal gcloud CLI, update dengan menjalankan perintah berikut:
gcloud components update
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 tersebut mengirimkan permintaan beserta kueri penelusuran pengguna ke Knowledge Graph API.
- API Pustaka Pengetahuan merespons dengan hasil yang cocok.
- Fungsi ini memformat respons menjadi pesan Slack.
- Fungsi ini mengirimkan 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 Google Cloud Console, klik tombol Buat kredensial dan 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.
C#
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
Atau, Anda dapat mendownload contoh dalam 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.
PHP
git clone https://github.com/GoogleCloudPlatform/php-docs-samples.git
Atau, Anda dapat mendownload contoh dalam file ZIP dan mengekstraknya.
Ubah ke direktori yang berisi contoh fungsi Cloud Run kode:
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/
C#
cd dotnet-docs-samples/functions/slack/SlackKnowledgeGraphSearch/
Ruby
cd ruby-docs-samples/functions/slack/
PHP
cd php-docs-samples/functions/slack_slash_command/
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 nodejs20 \
--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.
C#
gcloud functions deploy csharp-slack-function \ --entry-point SlackKnowledgeGraphSearch.Function \ --runtime dotnet6 \
--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 .NET yang didukung guna menjalankan
fungsi Anda.
Ruby
gcloud functions deploy kg_search --runtime ruby32 \
--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.
PHP
gcloud functions deploy searchKnowledgeGraph --runtime php82 \
--trigger-http \
--set-env-vars "SLACK_SECRET=YOUR_SLACK_SIGNING_SECRET
,KG_API_KEY=YOUR_KG_API_KEY
" \
--allow-unauthenticated
Gunakan tanda --runtime
untuk menentukan ID runtime
versi PHP yang didukung untuk menjalankan
fungsi Anda.
Mengonfigurasi aplikasi
Setelah fungsi di-deploy, Anda perlu membuat Perintah Garis miring 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
C#
https://YOUR_REGION-YOUR_PROJECT_ID.cloudfunctions.net/csharp-slack-function
Ruby
https://YOUR_REGION-YOUR_PROJECT_ID.cloudfunctions.net/kg_search
PHP
https://YOUR_REGION-YOUR_PROJECT_ID.cloudfunctions.net/searchKnowledgeGraph
dengan
YOUR_REGION
adalah wilayah tempat 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
C#
Ruby
PHP
Menerima webhook
Fungsi berikut dijalankan saat Anda (atau Slack) membuat permintaan POST HTTP ke endpoint fungsi:
Node.js
Python
Go
Java
C#
Ruby
PHP
Fungsi berikut mengautentikasi permintaan masuk dengan memverifikasi header X-Slack-Signature
yang disediakan oleh Slack:
Node.js
Python
Go
Java
C#
Ruby
PHP
Membuat Kueri API Pustaka Pengetahuan
Fungsi berikut mengirim permintaan dengan kueri penelusuran pengguna ke API Pustaka Pengetahuan:
Node.js
Python
Go
Java
C#
Ruby
PHP
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
C#
Ruby
PHP
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
Pembersihan
Agar tidak dikenakan biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource-nya.
Menghapus project
Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.
Untuk menghapus project:
- Di konsol Google Cloud, buka halaman Manage resource.
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Menghapus fungsi
Untuk menghapus fungsi yang Anda deploy dalam tutorial ini, jalankan perintah berikut:
Node.js
gcloud functions delete kgSearch
Python
gcloud functions delete kg_search
Go
gcloud functions delete KGSearch
Java
gcloud functions delete java-slack-function
C#
gcloud functions delete csharp-slack-function
Ruby
gcloud functions delete kg_search
PHP
gcloud functions delete searchKnowledgeGraph
Anda juga dapat menghapus fungsi Cloud Run dari Konsol Google Cloud.