Tutorial ini mendemonstrasikan penggunaan Cloud Functions untuk menerapkan Perintah Slack di Slash yang menelusuri Google Knowledge Graph API.
Tujuan
- Membuat Perintah Slash di Slack.
- Tulis dan deploy sebuah HTTP Cloud Function.
- Menelusuri Google Knowledge Graph API menggunakan Perintah Slash.
Biaya
Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:
- Cloud Functions
- Cloud Build
- Artifact Registry
- Cloud Logging
Untuk detailnya, lihat Harga Cloud 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, Artifact Registry, and Logging.
- 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, Artifact Registry, and Logging.
- 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 Cloud Function.
- Cloud Function mengirimkan permintaan dengan kueri penelusuran pengguna ke API Pustaka Pengetahuan.
- API Pustaka Pengetahuan merespons dengan hasil yang cocok.
- Cloud Function memformat respons menjadi pesan Slack.
- Cloud Function mengirim pesan kembali ke Slack.
- Pengguna akan melihat respons terformat di saluran Slack.
Anda dapat memvisualisasikan langkah-langkahnya:
Mendapatkan kredensial
Untuk men-deploy fungsi, Anda memerlukan kunci API yang disediakan Google Cloud Console dan rahasia penandatanganan Slack.
Mendapatkan kunci API Pustaka Pengetahuan
Di halaman Kredensial konsol Google Cloud, klik tombol Create credentials dan pilih API key. Ingat kunci ini, karena Anda akan menyertakannya sebagai bagian dari perintah deploy
. Kunci inilah yang memungkinkan fungsi Anda mengakses API Pustaka Pengetahuan.
Mendapatkan secret penandatanganan Slack
Anda juga memerlukan rahasia penandatanganan Slack untuk men-deploy fungsi Anda. Untuk mendapatkan rahasia penandatanganan Slack, buat Aplikasi Slack yang akan menghosting Perintah Slash di Slack. Aplikasi ini harus dikaitkan dengan tim Slack tempat Anda memiliki izin untuk menginstal integrasi.
Buka halaman Your Apps di Slack, lalu klik Create New App.
Pilih From Scratch.
Berikan nama untuk aplikasi Anda dan pilih ruang kerja Slack tempat Anda memiliki izin untuk menginstal integrasi.
Klik Create App.
Aplikasi dibuat, dan tampilan berubah ke halaman Informasi Dasar.
Di halaman Informasi Dasar, salin secret penandatanganan Slack, lalu simpan.
Simpan perubahan Anda.
Selanjutnya, Anda perlu mendapatkan kode sumber dan men-deploy fungsi Anda. Setelah men-deploy fungsi, Anda akan mengonfigurasi aplikasi Slack untuk mengintegrasikannya dengan fungsi yang di-deploy, seperti yang dijelaskan dalam Mengonfigurasi aplikasi.
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 sampel sebagai file ZIP dan mengekstraknya.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
Atau, Anda dapat mendownload sampel sebagai file ZIP dan mengekstraknya.
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
Atau, Anda dapat mendownload sampel sebagai file ZIP dan mengekstraknya.
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
Atau, Anda dapat mendownload sampel sebagai file ZIP dan mengekstraknya.
C#
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
Atau, Anda dapat mendownload sampel sebagai file ZIP dan mengekstraknya.
Ruby
git clone https://github.com/GoogleCloudPlatform/ruby-docs-samples.git
Atau, Anda dapat mendownload sampel sebagai file ZIP dan mengekstraknya.
PHP
git clone https://github.com/GoogleCloudPlatform/php-docs-samples.git
Atau, Anda dapat mendownload sampel sebagai file ZIP dan mengekstraknya.
Ubah ke direktori yang memuat kode contoh Cloud Functions:
Node.js
cd nodejs-docs-samples/functions/slack/
Python
cd python-docs-samples/functions/slack/
Go
cd golang-samples/functions/functionsv2/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 HTTP POST 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 nodejs-slack-function \ --gen2 \ --runtime=nodejs20 \ --region=REGION
\ --source=. \ --entry-point=kgSearch \
--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 python-slack-function \ --gen2 \ --runtime=python312 \ --region=REGION
\ --source=. \ --entry-point=kg_search \
--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 go-slack-function \ --gen2 \ --runtime=go121 \ --region=REGION
\ --source=. \ --entry-point=KGSearch \
--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 \ --gen2 \ --runtime=java17 \ --region=REGION
\ --source=. \ --entry-point=functions.SlackSlashCommand \ --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 \ --gen2 \ --runtime=dotnet6 \ --region=REGION
\ --source=. \ --entry-point=SlackKnowledgeGraphSearch.Function \
--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 ruby-slack-function \ --gen2 \ --runtime=ruby32 \ --region=REGION
\ --source=. \ --entry-point=kg_search \
--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 php-slack-function \ --gen2 \ --runtime=php82 \ --region=REGION
\ --source=. \ --entry-point=receiveRequest \
--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 diterapkan, Anda perlu membuat Perintah Slash di Slack yang mengirimkan kueri ke Cloud Function setiap kali perintah dipicu:
Kembali ke aplikasi Slack yang Anda buat di atas.
Pilih aplikasi, buka Slash command, lalu klik tombol Create New Command.
Masukkan
/kg
sebagai nama perintah.Di kolom URL Permintaan, masukkan URL fungsi Anda.
Anda dapat menyalin URL dari output perintah
deploy
, atau membuka halaman Ringkasan Cloud Functions di konsol Google Cloud, klik untuk membuka halaman Function Details, lalu salin URL dari sana.Masukkan deskripsi singkat, lalu klik Save.
Buka Basic Information.
Klik Install to Workspace 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 ke permintaan push (termasuk kolom response_url
) ke Pub/Subtopik yang bertindak sebagai task queue.
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
Setelah deployment fungsi selesai, ketik perintah ini ke saluran Slack Anda:
/kg giraffe
Anda akan melihat entri Grafik Pengetahuan untuk "jerapah".
Periksa log untuk melihat output dari eksekusi fungsi:
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 Cloud Function
Untuk menghapus Cloud Function yang Anda deploy dalam tutorial ini, jalankan perintah berikut:
Node.js
gcloud functions delete nodejs-slack-function --gen2 --region REGION
Python
gcloud functions delete python-slack-function --gen2 --region REGION
Go
gcloud functions delete go-slack-function --gen2 --region REGION
Java
gcloud functions delete java-slack-function --gen2 --region REGION
C#
gcloud functions delete csharp-slack-function --gen2 --region REGION
Ruby
gcloud functions delete ruby-slack-function --gen2 --region REGION
PHP
gcloud functions delete php-slack-function --gen2 --region REGION
Anda juga dapat menghapus Cloud Functions dari Konsol Google Cloud.