Tutorial ini menunjukkan penggunaan fungsi Cloud Run untuk menerapkan Perintah Slack di Slash yang menelusuri Google Knowledge Graph API.
Tujuan
- Membuat Perintah Slash di Slack.
- Menulis dan men-deploy fungsi HTTP Cloud Run.
- Menelusuri Google Knowledge Graph API menggunakan Perintah Slash.
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen Google Cloudyang dapat ditagih berikut:
- Cloud Run functions
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Sebelum memulai
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions, Cloud Build, and Google Knowledge Graph Search APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions, Cloud Build, and Google Knowledge Graph Search APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
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 ini mengirimkan permintaan dengan kueri penelusuran pengguna ke API Pustaka Pengetahuan.
- API Pustaka Pengetahuan merespons dengan hasil yang cocok.
- Fungsi ini memformat respons menjadi pesan Slack.
- Fungsi ini 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 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 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/
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 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 go122 \
--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 java21 \ --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 dotnet8 \
--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 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.
PHP
gcloud functions deploy searchKnowledgeGraph --runtime php83 \
--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 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
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
sebagai region tempat fungsi 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:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the 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.