laravel maintained by wawabot
WaWaBot Laravel
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.
- Packagist: packagist.org/packages/wawabot/laravel
- GitHub: github.com/sikuning/WaWaBot
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:
- Start sesi —
start() - Ambil QR —
qr(), tampilkan ke user (browser/API) - Scan di HP — Buka WhatsApp → Pengaturan (ikon roda gigi) → Perangkat tertaut → Tautkan perangkat → arahkan kamera ke QR
- Cek status login —
infoMe()atausession() - Kirim pesan —
send()atausendMedia()
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