Looking to hire Laravel developers? Try LaraJobs

laravel maintained by wawabot

Description
Laravel package untuk kirim pesan WhatsApp via WaWaBot API
Author
Last update
2026/05/21 15:20 (dev-main)
License
Downloads
7

Comments
comments powered by Disqus

WaWaBot Laravel

Latest Version on Packagist Total Downloads License

Package Laravel untuk mengirim pesan WhatsApp melalui WaWaBot API. Cukup install package ini, set api_key dan account_id, lalu panggil method untuk kirim teks, gambar, atau kelola sesi WhatsApp.

Persyaratan

  • PHP 8.1+
  • Laravel 10, 11, atau 12

Instalasi

Masuk ke folder project Laravel Anda, lalu jalankan:

composer require wawabot/laravel

Tidak perlu menambah repositories di composer.json — package sudah tersedia di Packagist.

Laravel akan otomatis mendeteksi WaWaBotServiceProvider lewat auto-discovery.

Publish config (opsional)

php artisan vendor:publish --tag=wawabot-config

File config akan tersedia di config/wawabot.php.

Set environment variables

Tambahkan ke file .env:

WAWABOT_BASE_URL=https://wa-api.knn.my.id
WAWABOT_API_KEY=api-key-dari-penyedia-layanan
WAWABOT_ACCOUNT_ID=user-1
Variabel Keterangan
WAWABOT_BASE_URL Base URL API (default: https://wa-api.knn.my.id)
WAWABOT_API_KEY API key dari penyedia layanan
WAWABOT_ACCOUNT_ID ID akun WhatsApp Anda (contoh: user-1)

Instalasi alternatif (development)

Folder lokal — untuk develop package sebelum publish:

{
  "repositories": [
    {
      "type": "path",
      "url": "../WaWaBot-Laravel",
      "options": { "symlink": true }
    }
  ],
  "require": {
    "wawabot/laravel": "@dev"
  }
}

Langsung dari GitHub — jika perlu versi dev-main sebelum rilis di Packagist:

{
  "repositories": [
    {
      "type": "vcs",
      "url": "https://github.com/sikuning/WaWaBot.git"
    }
  ],
  "require": {
    "wawabot/laravel": "dev-main"
  }
}

Alur penggunaan (pertama kali)

Sebelum bisa kirim pesan, akun WhatsApp harus ditautkan lewat QR code:

  1. Start sesistart()
  2. Ambil QRqr(), tampilkan ke user (browser/API)
  3. Scan di HP — Buka WhatsApp → Pengaturan (ikon roda gigi) → Perangkat tertautTautkan perangkat → arahkan kamera ke QR
  4. Cek status logininfoMe() atau session()
  5. Kirim pesansend() atau sendMedia()

Penggunaan

Via Facade (menggunakan config .env)

use WaWaBot\Facades\WaWaBot;

// Kirim teks
WaWaBot::send('6281234567890', 'Halo dari Laravel!');

// Kirim gambar
WaWaBot::sendMedia(
    to: '6281234567890',
    filePath: storage_path('app/public/foto.jpg'),
    caption: 'Ini caption gambar',
);

Via dependency injection

use WaWaBot\WaWaBot;

class NotificationController extends Controller
{
    public function __construct(private WaWaBot $waWaBot) {}

    public function sendWelcome(string $phone): array
    {
        return $this->waWaBot->send($phone, 'Selamat datang!');
    }
}

Instansiasi manual (multi akun / tanpa .env)

Berguna jika satu aplikasi mengelola beberapa akun WhatsApp:

use WaWaBot\WaWaBot;

$bot = new WaWaBot(
    apiKey: 'api-key-anda',
    accountId: 'user-1',
    baseUrl: 'https://wa-api.knn.my.id', // opsional, ini default-nya
);

$bot->send('6281234567890', 'Pesan dari akun user-1');

Contoh lengkap: dari pairing sampai kirim pesan

use WaWaBot\Facades\WaWaBot;
use WaWaBot\Exceptions\WaWaBotException;

try {
    // 1. Mulai sesi akun
    WaWaBot::start();

    // 2. Ambil QR (JSON — untuk ditampilkan di frontend)
    $qrData = WaWaBot::qr();
    // $qrData berisi response JSON dari API (mis. data QR base64)

    // Atau ambil sebagai HTML (untuk langsung render di browser)
    // $qrHtml = WaWaBot::qr(isHtml: true);

    // 3. Setelah user scan QR di HP, cek status login
    $info = WaWaBot::infoMe();
    $session = WaWaBot::session();

    // 4. Kirim pesan teks
    $result = WaWaBot::send('6281234567890', 'Halo, ini pesan teks!');

    // 5. Kirim gambar / media
    $mediaResult = WaWaBot::sendMedia(
        to: '6281234567890',
        filePath: public_path('images/promo.jpg'),
        caption: 'Promo bulan ini!',
    );

    // 6. (Opsional) Cek apakah nomor terdaftar di WhatsApp
    $lookup = WaWaBot::lookup('085612312311');

} catch (WaWaBotException $e) {
    // Handle error dari API
    logger()->error('WaWaBot error', [
        'message' => $e->getMessage(),
        'status' => $e->getCode(),
        'body' => $e->response?->json(),
    ]);
}

Daftar method

Method HTTP Endpoint Deskripsi
start() POST /accounts/{id}/start Memulai sesi akun
session() GET /accounts/{id}/session Status sesi akun
qr($isHtml) GET /accounts/{id}/qr Ambil QR code untuk scan
infoMe() GET /info-me Cek nomor & status login
send($to, $text) POST /accounts/{id}/send Kirim pesan teks
sendMedia($to, $path, $caption) POST /accounts/{id}/send-media Kirim gambar/file
lookup($to) GET /accounts/{id}/lookup Cek nomor WhatsApp
logout() POST /accounts/{id}/logout Logout / putus sesi

Semua request mengirim header:

x-api-key: {api_key}
accept: application/json

Parameter send()

WaWaBot::send(
    to: '6281234567890',  // nomor tujuan (format internasional disarankan)
    text: 'Isi pesan',
);

Parameter sendMedia()

WaWaBot::sendMedia(
    to: '6281234567890',
    filePath: '/path/ke/gambar.jpg',  // path file lokal yang bisa dibaca
    caption: 'Caption opsional',       // boleh null
);

Format file mengikuti dukungan API (jpeg, png, pdf, dll.).

Parameter qr()

// Response JSON (default)
$data = WaWaBot::qr();

// Response HTML mentah (untuk embed di halaman web)
$html = WaWaBot::qr(isHtml: true);

Penanganan error

Jika API mengembalikan status error (4xx/5xx), package akan melempar WaWaBot\Exceptions\WaWaBotException:

use WaWaBot\Exceptions\WaWaBotException;

try {
    WaWaBot::send('6281234567890', 'Halo');
} catch (WaWaBotException $e) {
    echo $e->getMessage();           // pesan error
    echo $e->getCode();              // HTTP status code
    $e->response?->json();           // body response lengkap
    $e->response?->body();           // raw body
}

Development & testing

Clone repository:

# SSH
git clone git@github.com:sikuning/WaWaBot.git

# atau HTTPS
git clone https://github.com/sikuning/WaWaBot.git

cd WaWaBot
composer install
./vendor/bin/phpunit

Lisensi

MIT