Thursday

19-06-2025 Vol 19

Step-by-Step Guide to Set Up and Test Your Slack App with google cloud functions

Panduan Langkah demi Langkah: Menyiapkan dan Menguji Aplikasi Slack Anda dengan Google Cloud Functions

Slack telah menjadi landasan komunikasi modern untuk tim di seluruh dunia. Dengan kemampuannya yang ekstensif, Slack menawarkan lebih dari sekadar olahpesan dasar; ini adalah platform untuk integrasi, otomatisasi, dan peningkatan produktivitas. Salah satu cara ampuh untuk memanfaatkan potensi Slack adalah dengan membuat aplikasi khusus. Aplikasi Slack memungkinkan Anda mengotomatiskan tugas, mengintegrasikan alat pihak ketiga, dan menyesuaikan pengalaman Slack agar sesuai dengan kebutuhan khusus tim Anda.

Google Cloud Functions (GCF) menyediakan lingkungan tanpa server yang ideal untuk membangun dan menerapkan aplikasi Slack. Cloud Functions memungkinkan Anda menjalankan kode sebagai respons terhadap peristiwa tanpa perlu menyediakan atau mengelola server. Ini sangat cocok untuk membangun aplikasi Slack karena memungkinkan Anda menangani peristiwa Slack (seperti perintah garis miring, interaksi pesan, dan peristiwa lain) secara efisien dan hemat biaya.

Dalam panduan komprehensif ini, kami akan memandu Anda melalui proses langkah demi langkah untuk menyiapkan dan menguji aplikasi Slack Anda menggunakan Google Cloud Functions. Kami akan membahas semua yang perlu Anda ketahui, mulai dari menyiapkan lingkungan pengembangan hingga men-deploy dan memvalidasi aplikasi Anda. Baik Anda pengembang berpengalaman atau baru memulai, panduan ini akan memberi Anda pengetahuan dan keterampilan yang diperlukan untuk membangun aplikasi Slack yang ampuh dan efektif menggunakan Google Cloud Functions.

Mengapa Menggunakan Google Cloud Functions untuk Aplikasi Slack?

Sebelum kita masuk ke detail teknis, mari kita luangkan waktu sejenak untuk memahami mengapa Google Cloud Functions merupakan pilihan yang sangat baik untuk mengembangkan aplikasi Slack:

  1. Skalabilitas: Cloud Functions secara otomatis melakukan penskalaan untuk menangani perubahan beban lalu lintas. Ini berarti aplikasi Slack Anda dapat menangani sejumlah kecil permintaan selama jam sepi dan secara otomatis ditingkatkan untuk menangani lonjakan lalu lintas selama jam sibuk.
  2. Hemat Biaya: Anda hanya membayar untuk waktu komputasi yang Anda gunakan. Jika aplikasi Slack Anda tidak sedang digunakan, Anda tidak dikenakan biaya apa pun. Ini menjadikannya solusi yang sangat hemat biaya, terutama untuk aplikasi dengan penggunaan sporadis.
  3. Tanpa Server: Cloud Functions memungkinkan Anda fokus pada penulisan kode tanpa mengkhawatirkan infrastruktur yang mendasarinya. Google mengurus penyediaan, manajemen, dan pemeliharaan server untuk Anda.
  4. Integrasi: Cloud Functions berintegrasi secara lancar dengan layanan Google Cloud lainnya, seperti Cloud Firestore, Cloud Storage, dan banyak lagi. Ini memungkinkan Anda membangun aplikasi Slack yang canggih yang memanfaatkan kemampuan penuh dari platform Google Cloud.
  5. Pengembangan Cepat: Cloud Functions menawarkan siklus pengembangan yang cepat. Anda dapat dengan cepat men-deploy dan menguji kode Anda tanpa perlu proses deployment yang rumit.

Prasyarat

Sebelum kita mulai, pastikan Anda memiliki prasyarat berikut:

  1. Akun Google Cloud: Anda memerlukan akun Google Cloud dengan proyek yang diaktifkan. Jika Anda belum memilikinya, Anda dapat mendaftar untuk akun gratis.
  2. Akun Slack: Anda memerlukan ruang kerja Slack tempat Anda memiliki izin untuk membuat aplikasi.
  3. Node.js dan npm: Node.js dan npm (Node Package Manager) diperlukan untuk mengembangkan dan men-deploy Cloud Functions. Anda dapat mengunduh dan menginstal keduanya dari situs web Node.js.
  4. Google Cloud SDK (gcloud): Google Cloud SDK menyediakan alat baris perintah untuk berinteraksi dengan layanan Google Cloud. Anda dapat mengunduh dan menginstalnya dari dokumentasi Google Cloud SDK.

Langkah 1: Menyiapkan Proyek Google Cloud Anda

Pertama, kita perlu menyiapkan proyek Google Cloud kita. Jika Anda sudah memiliki proyek, Anda dapat melewati langkah ini. Jika tidak, ikuti langkah-langkah ini:

  1. Buat Proyek: Buka Google Cloud Console dan klik “Buat Proyek.”
  2. Beri Nama Proyek Anda: Masukkan nama untuk proyek Anda (misalnya, “slack-app-gcf”) dan pilih organisasi Anda (jika berlaku).
  3. Pilih Lokasi: Pilih lokasi untuk proyek Anda.
  4. Klik “Buat”: Google Cloud akan membuat proyek Anda.

Setelah proyek Anda dibuat, Anda perlu mengaktifkan Google Cloud Functions API.

  1. Aktifkan Cloud Functions API: Di Google Cloud Console, buka menu navigasi dan pilih “APIs & Services” > “Enabled APIs & Services.”
  2. Cari “Cloud Functions API”: Ketik “Cloud Functions API” di bilah pencarian.
  3. Klik “Aktifkan”: Jika API belum diaktifkan, klik tombol “Aktifkan”.

Langkah 2: Menyiapkan Lingkungan Pengembangan Anda

Selanjutnya, kita perlu menyiapkan lingkungan pengembangan kita. Ini melibatkan penginstalan Google Cloud SDK dan mengonfigurasinya untuk berinteraksi dengan proyek Google Cloud Anda.

  1. Instal Google Cloud SDK: Jika Anda belum melakukannya, unduh dan instal Google Cloud SDK dari dokumentasi Google Cloud SDK.
  2. Inisialisasi gcloud: Buka terminal atau command prompt Anda dan jalankan perintah berikut:
    gcloud init

    Perintah ini akan memandu Anda melalui proses autentikasi dan memilih proyek Google Cloud Anda.

  3. Konfigurasi gcloud: Atur proyek default untuk gcloud menggunakan perintah berikut:
    gcloud config set project YOUR_PROJECT_ID

    Ganti `YOUR_PROJECT_ID` dengan ID proyek Google Cloud Anda.

  4. Instal Firebase CLI (Opsional): Jika Anda berencana menggunakan Firebase Authentication atau layanan Firebase lainnya, Anda dapat menginstal Firebase CLI dengan menjalankan perintah berikut:
    npm install -g firebase-tools

Langkah 3: Membuat Aplikasi Slack

Sekarang, mari kita buat aplikasi Slack kita. Ikuti langkah-langkah ini:

  1. Buka Slack API: Buka halaman Aplikasi Slack dan masuk dengan akun Slack Anda.
  2. Buat Aplikasi Baru: Klik tombol “Buat Aplikasi”.
  3. Beri Nama Aplikasi Anda: Masukkan nama untuk aplikasi Anda (misalnya, “my-slack-app”) dan pilih ruang kerja Slack Anda.
  4. Klik “Buat Aplikasi”: Slack akan membuat aplikasi Anda dan mengarahkan Anda ke halaman pengaturan aplikasi.

Di halaman pengaturan aplikasi, Anda perlu mengonfigurasi beberapa pengaturan penting:

  1. Basic Information: Di bagian “Basic Information,” Anda dapat mengonfigurasi nama aplikasi, deskripsi, ikon, dan warna latar belakang.
  2. Permissions: Di bagian “OAuth & Permissions,” Anda perlu menentukan cakupan (permissions) yang dibutuhkan aplikasi Anda. Cakupan ini menentukan tindakan yang dapat dilakukan aplikasi Anda di ruang kerja Slack Anda. Contoh cakupan yang umum digunakan termasuk `chat:write` (untuk mengirim pesan), `users:read` (untuk membaca informasi pengguna), dan `commands` (untuk membuat perintah garis miring).
  3. Bot User: Di bagian “Bot Users,” aktifkan “Add a bot user.” Ini akan membuat bot user untuk aplikasi Anda, yang dapat berinteraksi dengan pengguna dan saluran di ruang kerja Slack Anda.
    • Display Name: Masukkan nama tampilan untuk bot Anda (misalnya, “My Bot”).
    • Default Username: Masukkan nama pengguna untuk bot Anda (misalnya, “my_bot”).
  4. Install App to Workspace: Di bagian “OAuth & Permissions,” gulir ke bagian bawah halaman dan klik tombol “Install App to Workspace.” Ini akan mengizinkan aplikasi Anda untuk mengakses ruang kerja Slack Anda.
  5. OAuth Access Token: Setelah aplikasi diinstal, Anda akan menerima “Bot User OAuth Access Token.” Token ini digunakan untuk mengautentikasi aplikasi Anda saat berinteraksi dengan Slack API. Simpan token ini dengan aman, karena Anda akan membutuhkannya nanti.

Langkah 4: Membuat Google Cloud Function

Sekarang kita memiliki aplikasi Slack yang disiapkan, mari kita buat Google Cloud Function yang akan menangani peristiwa Slack. Kita akan menggunakan Node.js untuk membuat fungsi kita.

  1. Buat Direktori: Buat direktori baru untuk proyek Cloud Function Anda:
    mkdir slack-app-gcf
    cd slack-app-gcf
  2. Inisialisasi Proyek Node.js: Inisialisasi proyek Node.js baru dengan menjalankan perintah berikut:
    npm init -y
  3. Instal Dependencies: Instal dependencies yang diperlukan:
    npm install @slack/bolt @google-cloud/functions-framework
    • `@slack/bolt`: SDK resmi Slack untuk membangun aplikasi Slack dengan Node.js.
    • `@google-cloud/functions-framework`: Framework untuk membuat Google Cloud Functions dengan Node.js.
  4. Buat File `index.js`: Buat file bernama `index.js` di direktori proyek Anda. File ini akan berisi kode Cloud Function Anda.

Tambahkan kode berikut ke file `index.js`:

“`javascript
/**
* Responds to any HTTP request.
*
* @param {!express:Request} req HTTP request context.
* @param {!express:Response} res HTTP response context.
*/
const { App } = require(‘@slack/bolt’);
const { google } = require(‘googleapis’);

// Initializes your app with your bot token and signing secret
const app = new App({
token: process.env.SLACK_BOT_TOKEN,
signingSecret: process.env.SLACK_SIGNING_SECRET,
appToken: process.env.SLACK_APP_TOKEN, // Optional, only needed if using Socket Mode
socketMode: true, // Enable Socket Mode (Optional, but recommended for development)
});

// Listens to incoming messages that contain “hello”
app.message(‘hello’, async ({ message, say }) => {
// Say something in response to the message
await say(`Hey there <@${message.user}>!`);
});

// Example of a slash command
app.command(‘/hello’, async ({ command, ack, say }) => {
// Acknowledge command request
await ack();

await say(`Hello, <@${command.user_id}>! You ran /hello`);
});

// Example of a block action interaction
app.action(‘button_click’, async ({ body, ack, say }) => {
// Acknowledge the action
await ack();
await say(`<@${body.user.id}> clicked the button!`);
});

// Define the Cloud Function export
exports.slackApp = async (req, res) => {
// Pass request and response to the Bolt app
await app.requestListener()(req, res);
};

(async () => {
// Start your app
// Only start the app if running locally, GCF will handle startup in the cloud
if (process.env.NODE_ENV !== ‘production’) {
await app.start(process.env.PORT || 3000);
console.log(‘⚡️ Bolt app is running!’);
}
})();
“`

Penjelasan Kode:

  • `@slack/bolt`: Kita menggunakan SDK `@slack/bolt` untuk menyederhanakan interaksi dengan Slack API.
  • `App`: Kita membuat instance baru dari kelas `App`, yang merupakan titik masuk ke aplikasi Slack kita.
  • `token`: Token Bot User OAuth Access Token Anda.
  • `signingSecret`: Signing Secret aplikasi Slack Anda, digunakan untuk memverifikasi bahwa permintaan yang masuk berasal dari Slack.
  • `appToken`: Token Aplikasi Slack Anda (hanya diperlukan untuk Socket Mode).
  • `socketMode`: Diaktifkan untuk menggunakan Socket Mode, yang memungkinkan aplikasi Anda menerima peristiwa Slack melalui koneksi WebSocket (direkomendasikan untuk pengembangan).
  • `app.message(‘hello’, …)`: Menangani pesan yang masuk yang berisi kata “hello”.
  • `app.command(‘/hello’, …)`: Menangani perintah garis miring `/hello`.
  • `app.action(‘button_click’, …)`: Menangani tindakan blok yang dipicu oleh klik tombol.
  • `exports.slackApp = async (req, res) => { … }`: Mengekspor fungsi `slackApp` sebagai titik masuk untuk Google Cloud Function.
  • `await app.requestListener()(req, res);`: Melewatkan permintaan dan respons ke aplikasi Bolt.
  • `(async () => { … })();`: Memulai aplikasi Bolt secara lokal (hanya jika tidak berjalan di Google Cloud Functions).

Buat File `.env`:

Untuk menyimpan token dan secret Anda dengan aman, buat file `.env` di direktori proyek Anda dan tambahkan baris berikut, mengganti nilai placeholder dengan nilai yang sebenarnya:

“`
SLACK_BOT_TOKEN=xoxb-YOUR_BOT_TOKEN
SLACK_SIGNING_SECRET=YOUR_SIGNING_SECRET
SLACK_APP_TOKEN=xapp-YOUR_APP_TOKEN (Optional, only needed if using Socket Mode)
“`

Perhatikan: Jangan commit file `.env` ke kontrol versi. Tambahkan ke file `.gitignore` Anda.

Langkah 5: Men-deploy Google Cloud Function

Sekarang kita memiliki kode Cloud Function kita, kita perlu men-deploy-nya ke Google Cloud.

  1. Deploy Fungsi: Jalankan perintah berikut di terminal Anda dari direktori proyek Anda:
    gcloud functions deploy slackApp \
    --runtime nodejs18 \
    --trigger-http \
    --allow-unauthenticated \
    --entry-point slackApp \
    --set-env-vars SLACK_BOT_TOKEN=$SLACK_BOT_TOKEN,SLACK_SIGNING_SECRET=$SLACK_SIGNING_SECRET,SLACK_APP_TOKEN=$SLACK_APP_TOKEN
    
    • `slackApp`: Nama fungsi yang akan dideploy.
    • `–runtime nodejs18`: Menentukan runtime Node.js 18.
    • `–trigger-http`: Menentukan bahwa fungsi dipicu oleh permintaan HTTP.
    • `–allow-unauthenticated`: Memungkinkan permintaan tidak terautentikasi ke fungsi. (Perhatikan bahwa dalam aplikasi produksi, Anda mungkin ingin menerapkan otentikasi).
    • `–entry-point slackApp`: Menentukan fungsi `slackApp` sebagai titik masuk.
    • `–set-env-vars`: Mengatur variabel lingkungan untuk fungsi. Pastikan Anda mengganti `$SLACK_BOT_TOKEN`, `$SLACK_SIGNING_SECRET`, dan `$SLACK_APP_TOKEN` dengan nilai yang sesuai dari file `.env` Anda. Cara paling aman untuk melakukannya adalah dengan menjalankan perintah ini di terminal tempat variabel lingkungan ini telah diatur (misalnya, dengan menggunakan `source .env`).

Google Cloud akan men-deploy fungsi Anda. Proses ini mungkin memakan waktu beberapa menit.

Setelah deployment selesai, Google Cloud akan menampilkan URL untuk fungsi Anda. Simpan URL ini, karena Anda akan membutuhkannya di langkah selanjutnya.

Langkah 6: Mengonfigurasi Slack untuk Berinteraksi dengan Cloud Function

Sekarang kita perlu mengonfigurasi aplikasi Slack kita untuk berinteraksi dengan Google Cloud Function kita.

  1. Aktifkan Socket Mode (Direkomendasikan untuk Pengembangan): Di halaman pengaturan aplikasi Slack Anda, buka “Socket Mode” dan aktifkan opsi “Enable Socket Mode”. Socket Mode memungkinkan aplikasi Anda menerima peristiwa Slack melalui koneksi WebSocket, yang lebih sederhana dan andal daripada menggunakan Webhooks.
  2. Atur Request URL (Jika Menggunakan Webhooks): Jika Anda tidak menggunakan Socket Mode dan menggunakan Webhooks sebagai gantinya, Anda perlu mengatur Request URL untuk aplikasi Slack Anda. Di halaman pengaturan aplikasi Slack Anda, buka “Event Subscriptions” dan masukkan URL Google Cloud Function Anda di bidang “Request URL”. Slack akan memverifikasi URL dengan mengirimkan permintaan tantangan. Pastikan fungsi Anda menangani permintaan tantangan dengan benar.
  3. Subscribe to Bot Events: Di bagian “Event Subscriptions”, langgan peristiwa yang ingin Anda tangani di aplikasi Slack Anda. Misalnya, jika Anda ingin menangani pesan yang masuk, langgan peristiwa `message.channels`.
  4. Buat Perintah Garis Miring: Di halaman pengaturan aplikasi Slack Anda, buka “Slash Commands” dan buat perintah garis miring baru. Masukkan nama perintah (misalnya, `/hello`), URL permintaan (URL Google Cloud Function Anda), deskripsi, dan petunjuk penggunaan.
  5. Instal Ulang Aplikasi: Setelah Anda membuat perubahan apa pun pada konfigurasi aplikasi Slack Anda, Anda perlu menginstal ulang aplikasi ke ruang kerja Anda. Buka bagian “OAuth & Permissions” dan klik tombol “Reinstall App to Workspace”.

Langkah 7: Menguji Aplikasi Slack Anda

Sekarang saatnya menguji aplikasi Slack kita.

  1. Kirim Pesan: Kirim pesan ke bot Anda di Slack yang berisi kata “hello”. Anda seharusnya melihat bot menanggapi dengan pesan sapaan.
  2. Gunakan Perintah Garis Miring: Gunakan perintah garis miring `/hello` di Slack. Anda seharusnya melihat bot menanggapi dengan pesan.
  3. Klik Tombol: Jika Anda mengimplementasikan penanganan aksi blok, kirim pesan yang berisi blok dengan tombol. Klik tombolnya. Anda seharusnya melihat bot menanggapi dengan pesan yang menunjukkan bahwa tombol telah diklik.

Jika aplikasi Anda tidak berfungsi seperti yang diharapkan, periksa log Google Cloud Function Anda untuk mencari kesalahan. Anda dapat melihat log di Google Cloud Console dengan membuka “Cloud Functions” dan memilih fungsi Anda.

Contoh Lanjutan: Menggunakan Cloud Firestore untuk Menyimpan Data

Salah satu keuntungan menggunakan Google Cloud Functions adalah integrasinya yang mulus dengan layanan Google Cloud lainnya. Mari kita lihat contoh bagaimana Anda dapat menggunakan Cloud Firestore untuk menyimpan data dari aplikasi Slack Anda.

  1. Aktifkan Cloud Firestore API: Jika Anda belum melakukannya, aktifkan Cloud Firestore API di proyek Google Cloud Anda. Buka Google Cloud Console, buka menu navigasi, dan pilih “APIs & Services” > “Enabled APIs & Services.” Cari “Cloud Firestore API” dan klik “Aktifkan.”
  2. Instal Firebase Admin SDK: Instal Firebase Admin SDK sebagai dependensi proyek Anda:
    npm install firebase-admin
  3. Inisialisasi Firebase Admin SDK: Di file `index.js` Anda, inisialisasi Firebase Admin SDK:

    “`javascript
    const admin = require(‘firebase-admin’);

    admin.initializeApp();

    const db = admin.firestore();
    “`

  4. Simpan Data ke Cloud Firestore: Modifikasi kode Cloud Function Anda untuk menyimpan data ke Cloud Firestore. Misalnya, Anda dapat menyimpan setiap pesan yang diterima oleh bot Anda ke koleksi Firestore.

    “`javascript
    app.message(async ({ message, say }) => {
    // Save the message to Firestore
    const docRef = db.collection(‘messages’).doc(message.ts);
    await docRef.set({
    user: message.user,
    text: message.text,
    channel: message.channel,
    timestamp: message.ts,
    });

    await say(`Hey there <@${message.user}>! I’ve saved your message.`);
    });
    “`

  5. Deploy Fungsi: Deploy ulang Cloud Function Anda menggunakan perintah yang sama yang digunakan sebelumnya.
  6. Uji Aplikasi: Kirim pesan ke bot Anda di Slack. Periksa Cloud Firestore Console untuk melihat apakah pesan tersebut telah disimpan ke koleksi `messages`.

Keamanan dan Pertimbangan Lainnya

Saat membangun aplikasi Slack dengan Google Cloud Functions, penting untuk mempertimbangkan keamanan dan praktik terbaik lainnya:

  1. Verifikasi Tanda Tangan: Selalu verifikasi tanda tangan yang disertakan dalam permintaan Slack untuk memastikan bahwa permintaan tersebut benar-benar berasal dari Slack dan belum dirusak. SDK `@slack/bolt` secara otomatis menangani verifikasi tanda tangan untuk Anda.
  2. Gunakan Variabel Lingkungan: Simpan token, secret, dan konfigurasi sensitif lainnya sebagai variabel lingkungan, bukan menyimpannya langsung di kode Anda. Ini membantu melindungi informasi sensitif dari terpapar ke kontrol versi.
  3. Terapkan Kontrol Akses: Jika aplikasi Anda mengakses data sensitif, terapkan kontrol akses untuk membatasi siapa yang dapat mengakses data tersebut.
  4. Pantau dan Log: Pantau log Google Cloud Function Anda secara teratur untuk mencari kesalahan dan masalah keamanan.
  5. Gunakan HTTPS: Pastikan semua komunikasi antara aplikasi Slack dan Google Cloud Function Anda terjadi melalui HTTPS untuk melindungi data dari intersepsi.
  6. Pertimbangkan Batas Tingkat: Slack memberlakukan batas tingkat pada permintaan API. Pastikan aplikasi Anda menangani batas tingkat dengan baik dengan menerapkan logika coba lagi eksponensial.
  7. Uji Secara Menyeluruh: Uji aplikasi Slack Anda secara menyeluruh sebelum men-deploy-nya ke lingkungan produksi. Ini membantu mengidentifikasi dan memperbaiki kesalahan atau masalah keamanan apa pun.

Kesimpulan

Dalam panduan komprehensif ini, kami telah memandu Anda melalui proses langkah demi langkah untuk menyiapkan dan menguji aplikasi Slack Anda menggunakan Google Cloud Functions. Kami telah membahas segala sesuatu mulai dari menyiapkan lingkungan pengembangan hingga men-deploy dan memvalidasi aplikasi Anda. Dengan mengikuti langkah-langkah ini, Anda dapat membangun aplikasi Slack yang ampuh dan efektif yang mengotomatiskan tugas, mengintegrasikan alat pihak ketiga, dan menyesuaikan pengalaman Slack agar sesuai dengan kebutuhan khusus tim Anda.

Google Cloud Functions menyediakan lingkungan tanpa server yang ideal untuk membangun dan menerapkan aplikasi Slack. Dengan skalabilitas, efektivitas biaya, dan integrasinya dengan layanan Google Cloud lainnya, Cloud Functions menjadikannya pilihan yang sangat baik untuk membangun aplikasi Slack modern.

Semoga berhasil membangun aplikasi Slack yang inovatif!

“`

omcoding

Leave a Reply

Your email address will not be published. Required fields are marked *