whatsapp gatewai

Pendahuluan

WhatsApp telah menjadi salah satu aplikasi pesan instan paling populer di dunia. Bagi banyak bisnis, WhatsApp menyediakan cara yang efektif untuk berkomunikasi dengan pelanggan. WhatsApp Gateway memungkinkan bisnis untuk mengotomatisasi dan mengelola pesan WhatsApp mereka secara efisien. Dalam artikel ini, kita akan membahas cara membangun WhatsApp Gateway menggunakan Laravel dan Node.js dengan Baileys.

Apa Itu WhatsApp Gateway?

WhatsApp Gateway adalah sebuah sistem yang memungkinkan aplikasi atau sistem lain untuk mengirim dan menerima pesan WhatsApp secara otomatis. Ini sering digunakan untuk keperluan notifikasi, layanan pelanggan otomatis, dan pemasaran.

Teknologi yang Digunakan

  1. Laravel: Sebagai framework PHP yang kuat dan fleksibel, Laravel digunakan untuk menangani backend dan logika bisnis aplikasi.
  2. Node.js: Platform runtime JavaScript yang cepat dan efisien.
  3. Baileys: Sebuah library untuk mengakses WhatsApp Web API menggunakan Node.js.

Langkah-langkah Pembangunan

1. Persiapan Lingkungan

Sebelum memulai, pastikan Anda telah menginstal Node.js dan PHP di sistem Anda. Juga, pastikan Anda memiliki Composer untuk mengelola dependensi Laravel.

2. Instalasi Laravel

  1. Buat proyek Laravel baru:
    composer create-project --prefer-dist laravel/laravel whatsapp-gateway
  2. Konfigurasikan database di file .env.

3. Implementasi Baileys

  1. Buat direktori baru untuk proyek Node.js Anda:
    mkdir whatsapp-node
    cd whatsapp-node
  2. Inisialisasi proyek Node.js:
    npm init -y
  3. Instal Baileys:
    npm install @adiwajshing/baileys

4. Implementasi Baileys

Buat file index.js di direktori proyek Node.js dan tambahkan kode berikut:

const { WAConnection, MessageType } = require('@adiwajshing/baileys');

async function connectToWhatsApp() {
    const conn = new WAConnection();

    conn.on('qr', qr => {
        console.log('Scan this QR code with your phone:', qr);
    });

    conn.on('open', () => {
        console.log('Connected to WhatsApp');
    });

    await conn.connect();
    
    return conn;
}

async function sendMessage(conn, number, message) {
    await conn.sendMessage(number, message, MessageType.text);
}

connectToWhatsApp().then(conn => {
    sendMessage(conn, '1234567890@s.whatsapp.net', 'Hello from Node.js using Baileys!');
}).catch(err => console.log("Unexpected error: " + err));

Kode ini akan menghubungkan aplikasi ke WhatsApp Web dan mengirim pesan ke nomor yang ditentukan.

5. Integrasi dengan Laravel

Untuk mengintegrasikan Laravel dengan Baileys, Anda dapat membuat endpoint di Laravel yang akan memanggil skrip Node.js. Misalnya, buat endpoint API di Laravel untuk mengirim pesan:

    1. Tambahkan route baru di routes/web.php:
      Route::post('/send-message', [WhatsAppController::class, 'sendMessage']);
    2. Buat controller WhatsAppController:
      php artisan make:controller WhatsAppController
    3. Implementasi metode sendMessage di WhatsAppController:
      <?php namespace App\Http\Controllers; 
      
      use Illuminate\Http\Request; 
      
      use Symfony\Component\Process\Process; 
      
      use Symfony\Component\Process\Exception\ProcessFailedException; 
      
      class WhatsAppController extends Controller 
      
      { public function sendMessage(Request $request) 
      
      $number = $request->input('number');
              $message = $request->input('message');
      
              $process = new Process(['node', 'path/to/your/whatsapp-node/index.js', $number, $message]);
              $process->run();
      
              if (!$process->isSuccessful()) {
                  throw new ProcessFailedException($process);
              }
      
              return response()->json(['status' => 'Message sent successfully']);
          }
      }