Tutorial Integrasi WhatsApp Business API Resmi Menggunakan Mekari Qontak

Panduan langkah demi langkah menghubungkan aplikasi backend Node.js atau Python dengan WhatsApp Cloud API resmi melalui Mekari Qontak untuk OTP, notifikasi transaksi, dan CRM.

Mengapa Harus WhatsApp Official API untuk Aplikasi Bisnis?

Bagi pengembang sistem autentikasi, checkout e-commerce, atau aplikasi fintech di Indonesia, WhatsApp adalah kanal komunikasi dengan tingkat open rate tertinggi (> 95%), mengalahkan SMS konvensional dan email.

Namun, menggunakan script automasi WhatsApp tidak resmi (seperti bot WebPuppeteer atau emulator nomor biasa) memiliki risiko pemblokiran nomor permanen oleh Meta. Menggunakan Official WhatsApp Business Platform (Cloud API) adalah satu-satunya solusi legal dan terjamin untuk lingkungan produksi.


Keuntungan Menggunakan BSP Lokal (Mekari Qontak)

Sebagai Business Solution Provider (BSP) resmi Meta di Indonesia, Mekari Qontak menyediakan layer abstraksi yang memudahkan developer:

  1. Verifikasi Centang Hijau (Official Business Badge): Bantuan proses verifikasi bisnis Meta tanpa birokrasi berbelit.
  2. REST API Terstandar: Endpoint yang jelas untuk pengiriman template message, media dokumen, tombol interaktif, dan penanganan webhook.
  3. Omnichannel Inbox & Live Agent: Integrasi otomatis antara pesan bot dan operator customer support manusia.
  4. Pembayaran Rupiah & Faktur Pajak Resmi: Pengeluaran biaya percakapan (conversation charges) dapat dibayarkan dengan mata uang Rupiah dan dapat dipertanggungjawabkan dalam laporan keuangan korporat.

Langkah 1: Persiapan Akun & Mendapatkan API Credentials

  1. Buka formulir registrasi demo dan konsultasi partner resmi melalui tautan Mekari Qontak di kebutuhan.dev.
  2. Setelah akun aktif, masuk ke Dashboard Mekari Qontak > Settings > Integration > API Credentials.
  3. Simpan parameter berikut di file .env aplikasi kamu:
  • QONTAK_BASE_URL=https://service-chat.qontak.com
  • QONTAK_TOKEN=Bearer eyJhbGciOi...
  • QONTAK_CHANNEL_ID=your_channel_integration_id

Langkah 2: Mengirim Pesan Notifikasi Template (Node.js)

WhatsApp mewajibkan pesan pembuka percakapan (outbound message) menggunakan Template yang telah disetujui Meta.

javascript
import axios from "axios";

async function sendOrderNotification({ recipientPhone, recipientName, invoiceNumber, amount }) {
  const url = `${process.env.QONTAK_BASE_URL}/api/open/v1/broadcasts/whatsapp/direct`;

  const payload = {
    to_number: recipientPhone, // Format: "628123456789"
    to_name: recipientName,
    message_template_id: "your_approved_template_uuid",
    channel_integration_id: process.env.QONTAK_CHANNEL_ID,
    language: {
      code: "id"
    },
    parameters: {
      body: [
        { key: "1", value_text: recipientName },
        { key: "2", value_text: invoiceNumber },
        { key: "3", value_text: amount }
      ]
    }
  };

  try {
    const response = await axios.post(url, payload, {
      headers: {
        Authorization: process.env.QONTAK_TOKEN,
        "Content-Type": "application/json"
      }
    });
    console.log("Notifikasi WhatsApp berhasil terkirim:", response.data);
    return response.data;
  } catch (error) {
    console.error("Gagal mengirim WhatsApp:", error.response?.data || error.message);
    throw error;
  }
}

Langkah 3: Menangani Webhook Pesan Masuk & Status Delivery

Untuk menerima balasan pesan dari pengguna atau notifikasi tanda pesan terbaca (Read Receipts), daftarkan URL endpoint webhook backend kamu di dasbor Mekari.

javascript
// Express.js Route
app.post("/webhook/qontak", (req, res) => {
  const event = req.body;

  if (event.type === "incoming_message") {
    console.log(`Pesan masuk dari ${event.sender_number}: ${event.message.text}`);
    // Teruskan ke chatbot AI atau queue pemrosesan pesanan
  } else if (event.type === "message_status") {
    console.log(`Pesan ID ${event.message_id} status berubah jadi: ${event.status}`);
  }

  // Wajib merespons HTTP 200 dengan cepat agar webhook tidak retry
  res.status(200).send({ status: "success" });
});

Ringkasan Praktik Terbaik

  • Validasi Format Nomor: Selalu sanitasi nomor tujuan dengan prefix internasional tanpa simbol plus, misalnya 62812xxxxxx.
  • Gunakan Retry Mechanism dengan Exponential Backoff: Pastikan antrean pengiriman menggunakan Redis / BullMQ untuk mengantisipasi temporary server errors.
  • Rencanakan Budget Percakapan: Hitung estimasi percakapan bulanan (Authentication, Utility, Service) sesuai standar tarif Meta.

Dapatkan jadwal demo teknis dan konsultasi arsitektur resmi melalui Mekari Qontak di kebutuhan.dev.