Cara Mengirim Pesan WhatsApp Otomatis dari Laravel

diagram workflow Laravel → HTTP Request → Whapi API → WhatsApp → penerima

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:

  • apiKey digunakan untuk autentikasi request.
  • phone berisi nomor WhatsApp tujuan.
  • message berisi 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.

Scroll to Top