
Mengirim pesan WhatsApp secara otomatis dari aplikasi Laravel dapat dilakukan dengan menghubungkan aplikasi ke WhatsApp API. Pola ini memungkinkan sistem mengirim notifikasi, status transaksi, pengingat, atau pesan lainnya berdasarkan proses yang terjadi di dalam aplikasi.
Artikel ini membahas cara mengirim pesan WhatsApp otomatis dari Laravel menggunakan API Whapi, mulai dari menyiapkan API key, membuat request POST, hingga menangani respons dari API.
Yang Dibutuhkan
Sebelum membuat integrasi, siapkan:
- Aplikasi Laravel yang sudah berjalan
- Device Whapi dengan status
CONNECTED - API key Whapi
- Nomor WhatsApp tujuan
- Laravel HTTP Client
Laravel sudah menyediakan HTTP Client melalui facade Http, sehingga request ke API dapat dilakukan tanpa library HTTP tambahan.
1. Siapkan API Key dan Device WhatsApp
Request pengiriman pesan membutuhkan API key dan device yang sudah terhubung.
Pastikan device memiliki status:
CONNECTED
API key dapat diperoleh dari konfigurasi device pada Whapi.
Endpoint yang digunakan untuk mengirim pesan adalah:
POST /api/sendMessage
Dokumentasi parameter dan respons endpoint tersedia di dokumentasi Send Message Whapi.
2. Simpan Konfigurasi API di File .env
Agar API key tidak ditulis langsung di dalam source code, simpan konfigurasi pada file .env.
Tambahkan:
WHAPI_ENDPOINT=https://alamat-server-whapi
WHAPI_API_KEY=your_api_key
Nilai WHAPI_ENDPOINT disesuaikan dengan endpoint Whapi yang digunakan.
Setelah itu, konfigurasi tersebut dapat dipanggil dari aplikasi Laravel menggunakan env().
3. Membuat Request dari Laravel
Laravel HTTP Client dapat digunakan untuk mengirim request POST ke endpoint Whapi.
Contoh sederhana:
use Illuminate\Support\Facades\Http;
$response = Http::asForm()->post(
env('WHAPI_ENDPOINT') . '/api/sendMessage',
[
'apiKey' => env('WHAPI_API_KEY'),
'phone' => '6281234567890',
'message' => 'Pesan otomatis dari aplikasi Laravel.',
]
);
Pada contoh tersebut terdapat tiga parameter utama:
apiKeydigunakan untuk autentikasi request.phoneberisi nomor WhatsApp tujuan.messageberisi isi pesan yang akan dikirim.
Nomor tujuan sebaiknya menggunakan format internasional tanpa tanda +.
Contohnya:
6281234567890
4. Mengecek Respons API
Setelah request dikirim, respons dari API dapat diperiksa untuk mengetahui apakah request berhasil diproses.
Contoh:
$response = Http::asForm()->post(
env('WHAPI_ENDPOINT') . '/api/sendMessage',
[
'apiKey' => env('WHAPI_API_KEY'),
'phone' => '6281234567890',
'message' => 'Pesan otomatis dari aplikasi Laravel.',
]
);
if ($response->successful()) {
$data = $response->json();
return $data;
}
return response()->json([
'success' => false,
'status' => $response->status(),
'body' => $response->body(),
], 500);
Dengan pengecekan tersebut, aplikasi dapat membedakan antara request yang berhasil dan request yang mengalami error.
5. Membuat Fungsi Pengiriman Pesan
Jika pengiriman WhatsApp digunakan di banyak bagian aplikasi, request sebaiknya tidak ditulis berulang kali.
Buat fungsi khusus untuk mengirim pesan.
Contohnya:
use Illuminate\Support\Facades\Http;
function sendWhatsAppMessage(string $phone, string $message)
{
return Http::asForm()->post(
env('WHAPI_ENDPOINT') . '/api/sendMessage',
[
'apiKey' => env('WHAPI_API_KEY'),
'phone' => $phone,
'message' => $message,
]
);
}
Fungsi tersebut kemudian dapat dipanggil dari bagian aplikasi yang membutuhkan pengiriman pesan.
Contoh:
$response = sendWhatsAppMessage(
'6281234567890',
'Pesanan #INV-001 sudah berhasil diproses.'
);
Cara ini membuat kode lebih mudah digunakan kembali ketika aplikasi memiliki beberapa jenis notifikasi WhatsApp.
6. Mengirim Pesan Berdasarkan Event di Laravel
Pengiriman pesan WhatsApp biasanya lebih berguna jika dijalankan berdasarkan proses tertentu di aplikasi.
Misalnya ketika pembayaran berhasil:
$message = 'Pembayaran untuk pesanan #INV-001 telah diterima.';
$response = sendWhatsAppMessage(
'6281234567890',
$message
);
Pola yang sama dapat digunakan untuk berbagai kebutuhan, seperti:
- Konfirmasi pesanan
- Status pembayaran
- Pengingat pembayaran
- Notifikasi perubahan status
- Informasi pengiriman
- Pemberitahuan aktivitas akun
Dengan demikian, WhatsApp menjadi bagian dari alur otomatis aplikasi, bukan proses yang harus dikirim secara manual.
7. Menggunakan Queue untuk Pengiriman dalam Jumlah Banyak
Jika aplikasi harus mengirim banyak pesan, pengiriman sebaiknya tidak selalu dilakukan langsung dalam proses request halaman.
Laravel menyediakan Queue untuk menjalankan pekerjaan secara asynchronous.
Contohnya, proses pengiriman dapat dipindahkan ke Job:
php artisan make:job SendWhatsAppMessage
Kemudian request API ditempatkan di dalam Job tersebut.
Contoh sederhana:
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Http;
class SendWhatsAppMessage implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public function __construct(
public string $phone,
public string $message
) {}
public function handle(): void
{
Http::asForm()->post(
env('WHAPI_ENDPOINT') . '/api/sendMessage',
[
'apiKey' => env('WHAPI_API_KEY'),
'phone' => $this->phone,
'message' => $this->message,
]
);
}
}
Job kemudian dapat dipanggil dari aplikasi:
SendWhatsAppMessage::dispatch(
'6281234567890',
'Pesanan #INV-001 telah dikirim.'
);
Dengan Queue, proses utama aplikasi tidak harus menunggu seluruh proses pengiriman selesai sebelum memberikan respons kepada pengguna.
8. Menangani Error pada Request
Integrasi API sebaiknya tidak hanya menangani kondisi berhasil.
Beberapa hal yang perlu diperiksa ketika request gagal antara lain:
- API key tidak valid
- Device belum
CONNECTED - Nomor tujuan tidak sesuai
- Endpoint tidak sesuai
- Parameter request tidak lengkap
- API mengembalikan HTTP error
Contoh penanganan sederhana:
$response = Http::asForm()->post(
env('WHAPI_ENDPOINT') . '/api/sendMessage',
[
'apiKey' => env('WHAPI_API_KEY'),
'phone' => '6281234567890',
'message' => 'Pesan otomatis dari Laravel.',
]
);
if (!$response->successful()) {
logger()->error('WhatsApp API Error', [
'status' => $response->status(),
'response' => $response->body(),
]);
}
Logging membantu proses debugging ketika pengiriman gagal tanpa harus menampilkan detail error API kepada pengguna aplikasi.
9. GET atau POST untuk Mengirim Pesan?
Whapi menyediakan endpoint pengiriman pesan melalui metode GET dan POST.
Untuk integrasi aplikasi Laravel, POST dapat digunakan ketika parameter dikirim sebagai bagian dari request body. Pendekatan ini juga menghindari penempatan parameter pesan secara langsung pada URL.
Untuk implementasi yang membutuhkan kontrol lebih lanjut terhadap request, endpoint POST dapat menjadi pola yang sesuai.
Alur Integrasi Laravel dengan WhatsApp API
Secara sederhana, alurnya adalah:
Laravel
↓
Event / Controller / Job
↓
HTTP Request
↓
Whapi API
↓
Device WhatsApp
↓
Nomor Tujuan
Contohnya, ketika pembayaran berhasil:
Pembayaran berhasil
↓
Laravel mendeteksi status pembayaran
↓
Job pengiriman dijalankan
↓
Laravel mengirim POST request
↓
Whapi memproses request
↓
Pesan WhatsApp dikirim
Pola tersebut dapat dikembangkan untuk berbagai kebutuhan komunikasi otomatis yang berasal dari aplikasi Laravel.
Kesimpulan
Integrasi WhatsApp dengan Laravel dapat dilakukan dengan mengirim HTTP request ke endpoint Whapi. Implementasi dasarnya terdiri dari menyiapkan API key, memastikan device terhubung, membuat request POST, kemudian menangani respons API.
Untuk aplikasi dengan volume pengiriman yang lebih tinggi, proses pengiriman dapat dipindahkan ke Laravel Queue agar tidak membebani request utama aplikasi.
Dengan pola tersebut, berbagai proses di dalam aplikasi Laravel dapat terhubung dengan pengiriman pesan WhatsApp secara otomatis.


