16 September 2026 laravel

Tutorial Kirim Pesan Whatsapp Melalui API Resmi di Laravel

Alur Kirim Pesan Whatsapp dari Laravel

Whatsapp sering digunakan sebagai layanan mengirim pesan dari aplikasi ke user selain menggunakan email dan telegram.

Misalnya untuk marketing, service, autentikasi, dsb.

Whatsapp memiliki API resmi yang bisa digunakan untuk mengirim pesan dari nomor whatsapp yang terhubung ke nomor whatsapp lain.

API resmi ini tentu lebih murah dan lebih stabil daripada menggunakan layanan pihak ketiga.

Sebelum masuk ke tutorial, berikut beberapa hal yang harus diperhatikan untuk menghubungkan nomor whatsapp ke API.

Untuk testing, Whatsapp menyediakan nomor whatsapp testing yang dapat digunakan untuk mencoba mengirim pesan ke nomor lain.

1. Membuat Meta Developer App

Membuat Meta Developer App

Whatsapp API membutuhkan meta developer app, untuk membuatnya buka di halaman Meta Developers.

Setelah tersimpan, halaman akan diarahkan ke dashboard meta developer app.

2. Membuat Nomor Whatsapp Testing

Membuat Nomor Whatsapp Testing

Nomor whatsapp testing dapat diklaim gratis untuk mengirim pesan ke nomor whatsapp lain. Berikut caranya:

3. Membuat API Token

Whatsapp Token

Masih di bagian nomor whatsapp testing, buat API token untuk bisa menggunakan API whatsapp.

4. Menambahkan Nomor Telepon Penerima

Menambahkan Nomor Telepon Penerima

Nomor telepon penerima harus ditambahkan dan diverifikasi jika ingin mengirim pesan ke nomor tersebut melalui nomor whatsapp testing.

Jika nanti sudah menggunakan nomor whatsapp bisnis maka langkah ini tidak perlu dilakukan.

5. Menginstal Package Whatsapp API Laravel

Untuk menggunakan whatsapp API di laravel, gunakan package whatsapp-cloud-api.

Instal menggunakan composer:

composer require netflie/whatsapp-cloud-api

Buat service provider untuk package tersbut:

php artisan make:provider WhatsAppServiceProvider

Isinya seperti berikut:

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Netflie\WhatsAppCloudApi\WhatsAppCloudApi;

class WhatsAppServiceProvider extends ServiceProvider
{
    /**
     * Register services.
     */
    public function register(): void
    {
        $config = [
            'from_phone_number_id' => $this->app->make('config')->get('services.whatsapp.from_phone_number_id'),
            'access_token' => $this->app->make('config')->get('services.whatsapp.token')
        ];

        $this->app->bind(WhatsAppCloudApi::class, static fn () => new WhatsAppCloudApi($config));
    }
}

Buat konfigurasi whatsapp di file config.services.php. Tambahkan key whatsapp dengan isi berikut:

<?php

return [
	// konfigurasi lain
	'whatsapp' => [
		'from_phone_number_id' => env('WHATSAPP_FROM_PHONE_NUMBER_ID'),
		'token' => env('WHATSAPP_TOKEN'),
  	]
];

Terakhir, tambahkan whatsapp phone number id dan token yang sudah didapatkan sebelumnya ke .env seperti berikut:

WHATSAPP_FROM_PHONE_NUMBER_ID=
WHATSAPP_TOKEN=

Whatsapp API siap dipakai di langkah berikutnya.

6. Mengirim Pesan ke Nomor Whatsapp

Jenis pesan yang dapat dikirim ke nomor whatsapp melalui package WhatsAppCloudApi ada banyak, seperti:

  1. Pesan teks.
  2. Pesan template.
  3. Pesan gambar.
  4. Dsb.

Contoh Mengirim Pesan Teks

Untuk mengirim pesan teks ke nomor whatsapp, gunakan method sendTextMessage.

Contoh:

<?php

use Netflie\WhatsAppCloudApi\WhatsAppCloudApi;

WhatsAppCloudApi::sendTextMessage('628xxxxx', 'Hai bro');

Untuk menghandle error ketika mengirim pesan, gunakan try catch , ambil ResponseException bawaan package.

<?php

use Netflie\WhatsAppCloudApi\WhatsAppCloudApi;
use Netflie\WhatsAppCloudApi\Response\ResponseException;

try {
	WhatsAppCloudApi::sendTextMessage('628xxxxx', 'Hai bro');
} catch (ResponseException $e) {
	dd($e->response());
}

Contoh di dalam controller:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Netflie\WhatsAppCloudApi\WhatsAppCloudApi;
use Netflie\WhatsAppCloudApi\Response\ResponseException;

class MessageController
{
	public function sendWaMessage(Request $request)
	{
		$request->validate([
			'phone' => ['required', 'numeric', 'digits_between:13,12'],
			'message' => ['required', 'string', 'digits_between:1,255']
		]);
		
		$phone = $request->input('phone');
		$message= $request->input('message');
		
		try {
			WhatsAppCloudApi::sendTextMessage($phone, $message);
			
			return response()->json(['sent' => true, 'error' => null]);
		} catch (ResponseException $e) {
			return response()->json(['sent' => false, 'error' => $e->response()]);
		}
	}
}

Karena mengirim pesan ke nomor whatsapp membutuhkan waktu yang cukup lama, biasanya saya memasukkanya ke dalam queue job. Contoh:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Jobs\SendWhatsappText;

class MessageController
{
	public function sendWaMessage(Request $request)
	{
		$request->validate([
			'phone' => ['required', 'numeric', 'digits_between:13,12'],
			'message' => ['required', 'string', 'digits_between:1,255']
		]);
		
		$phone = $request->input('phone');
		$message= $request->input('message');
		
		SendWhatsappText::dispatch($phone, $message);
	}
}
<?php

namespace App\Jobs;

use Netflie\WhatsAppCloudApi\WhatsAppCloudApi;
use Netflie\WhatsAppCloudApi\Response\ResponseException;

class SendWhatsappText
{
	public function __construct(public string $phome, public string $message) {}
	
	public function handle()
	{
		try {
			WhatsAppCloudApi::sendTextMessage($this->phone, $this->message);
		} catch (ResponseException $e) {
			// handle error
		}
	}
}

Selanjutnya

Di artikel selanjutnya, akan dibahas cara menggunakan nomor whatsapp bisnis untuk mengirim ke nomor whatsapp lain.