Cara Integrasi WhatsApp Cloud API dengan Node.js (Tutorial Developer)

Tutorial developer untuk integrasi WhatsApp Cloud API dengan Node.js. Setup webhook, kirim pesan, dan handle media messages.

Cara Integrasi WhatsApp Cloud API dengan Node.js (Tutorial Developer)
Cara Integrasi WhatsApp Cloud API dengan Node.js (Tutorial Developer)

Node.js adalah runtime paling populer untuk membangun aplikasi server-side, dan WhatsApp Cloud API menggunakan REST endpoint yang sangat straightforward. Kombinasi keduanya memungkinkan developer membangun chatbot, notification system, atau integrasi custom dalam hitungan jam.

Artikel ini adalah tutorial hands-on untuk developer yang ingin mengintegrasikan WhatsApp Cloud API menggunakan Node.js.

Prasyarat

Pastikan kamu sudah memiliki Node.js terinstall versi 18 atau lebih tinggi, akun WhatsApp Cloud API yang aktif di Meta Developer Console, dan pemahaman dasar tentang Express.js dan async/await.

Credentials yang dibutuhkan: Access Token dari Meta Developer Console, Phone Number ID, dan WhatsApp Business Account ID.

Setup Project

Inisialisasi project Node.js baru dan install dependencies yang dibutuhkan: express untuk HTTP server, axios untuk HTTP client, dan dotenv untuk environment variables. Simpan credentials di file .env agar tidak hardcoded di source code.

Implementasi Webhook Server

Buat Express server dengan dua endpoint. GET endpoint untuk verification yang menerima request dari Meta saat registrasi webhook, memvalidasi verify_token, dan mengembalikan challenge. POST endpoint untuk menerima event yang memproses payload dari Meta setiap kali ada pesan masuk atau status update.

Di POST handler, ekstrak data dari nested payload WhatsApp. Struktur payload cukup dalam — entry kemudian changes kemudian value kemudian messages. Pastikan pengecekan null di setiap level untuk menghindari crash.

Mengirim Pesan

Text Message

Untuk mengirim pesan teks, buat POST request ke endpoint Messages API Meta. Body berisi messaging_product "whatsapp," nomor tujuan, tipe "text," dan objek text dengan body berisi isi pesan. Gunakan axios untuk membuat request dengan header Authorization berisi Bearer token.

Template Message

Untuk mengirim template yang sudah disetujui Meta, body berisi tipe "template" dengan objek template berisi nama template, language code, dan components untuk parameter dinamis.

Interactive Message (Buttons)

Untuk mengirim pesan dengan tombol, body berisi tipe "interactive" dengan objek interactive berisi type "button," body text, dan array action buttons. Setiap button memiliki type "reply," id unik, dan title yang ditampilkan.

Media Message

Untuk mengirim gambar, body berisi tipe "image" dengan objek image berisi link URL gambar dan optional caption.

Handle Media Masuk

Ketika pelanggan mengirim gambar atau dokumen, payload berisi media ID, bukan file langsung. Untuk mendapatkan file, pertama ambil media URL menggunakan GET request ke endpoint media dengan media ID. Kemudian download file dari URL yang dikembalikan menggunakan GET request kedua dengan authentication header.

Architecture untuk Production

Untuk production, tambahkan beberapa komponen. Message queue menggunakan Bull atau BullMQ dengan Redis untuk memproses pesan secara async. Database menggunakan MongoDB atau PostgreSQL untuk menyimpan conversation history. Rate limiter untuk memastikan tidak melebihi rate limit WhatsApp API. Error handling yang comprehensive dengan retry logic. Dan health check endpoint untuk monitoring.

Tips Development

Pertama, gunakan ngrok untuk development lokal. Ngrok membuat tunnel dari localhost ke URL publik sehingga kamu bisa menerima webhook tanpa deploy ke server.

Kedua, simpan conversation state. WhatsApp API stateless — setiap request independen. Jika butuh context percakapan, simpan state di database atau Redis.

Ketiga, implement graceful shutdown. Pastikan server menyelesaikan request yang sedang diproses sebelum shutdown, terutama jika menggunakan queue.

Keempat, gunakan TypeScript untuk project yang lebih besar. Type safety membantu mendeteksi error lebih awal dan membuat code lebih maintainable.

Kesimpulan

Node.js dan WhatsApp Cloud API adalah pasangan yang powerful untuk membangun integrasi WhatsApp custom. Dengan Express.js sebagai server dan axios sebagai HTTP client, fondasi integrasi bisa dibangun dalam hitungan jam.

Mulai dari yang sederhana — webhook yang menerima pesan dan echo function yang mengirim balasan. Kemudian tambahkan logic, database, dan queue secara bertahap.

Tidak punya developer tapi butuh auto-reply? Balaswa menyediakan semua ini siap pakai tanpa coding.