laravel example
About Us Blog Contact Us Request a quote

How to Send WhatsApp Messages With Laravel 12

How to Send WhatsApp Messages With Laravel 12

Install Laravel 12 App

Run below this command


composer create-project laravel/laravel example-app

Create twilio account

Register with your mobile number on twilio website:www.twilio.com

twilio sigup

Go to to your sandbox and get your sid, token and whatsapp number like below

twilio dashboard

Setup mysql database and add sid, token and whatsapp number

update .env file


DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel12app //database name
DB_USERNAME=root
DB_PASSWORD=

TWILIO_SID=your_twilio_account_sid
TWILIO_AUTH_TOKEN=your_twilio_auth_token
TWILIO_WHATSAPP_NUMBER=your_twilio_whatsapp_number

create route

routes/web.php like as below code


<?php

use App\Http\Controllers\MailController;
use Illuminate\Support\Facades\Route;

Route::get('/', function () {
    return view('welcome');
});

Route::get('/whatsapp', function () {
    return view('messaging/whatsapp');
})

Route::controller(whatsappController::class)->group(function () {
    Route::post('/whatsapp', 'whatsappPage')->name('whatsappPage');
    Route::post('/whatsapp', 'sendMessage')->name('sendMessage');
    
  
});

Create controller


php artsan make:controller WhatsappController

app\Http\Controllers\WhatsappController.php like as below code


<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Twilio\Rest\Client;

class WhatsappController extends Controller
{

    public function sendMessage(Request $request)
    {
     return view('whatsapp/index');
    }

    public function sendMessage(Request $request)
    {
        $twilioSid = env('TWILIO_SID');
        $twilioToken = env('TWILIO_AUTH_TOKEN');
        $twilioWhatsAppNumber = env('TWILIO_WHATSAPP_NUMBER');
        $recipientNumber = $request->phone;
        $message = $request->message;

        try {
           $twilio = new Client($twilioSid, $twilioToken);

           $twilio->messages->create(
                "whatsapp:" . $recipientNumber,
              [
                  "from" => "whatsapp:+" . $twilioWhatsAppNumber,
                  "body" => $message,
              ]
          );

        return back()->with(['success' =>'WhatsApp message sent successfully!']);
        } catch (Exception $e) {
            return back()->with(['error' => $e->getMessage()]);
        }
    }
}


Create blade file

resource\whatsapp\index.blade.php like as below code


<!DOCTYPE html>
<html>

<head>
<title>send whatsapp message</title>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link 
href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css"
rel="stylesheet"></head>

<body>
<div class="container">

<div class="row mt-5">
<div class="col-md-8 mx-auto">

<div class="card">
<div class="card-header">
<h2>Twilio sandbox whatsapp message testing</h2>
</div>
<div class="card-body">
<form method="POST" action="{{ route('sendCustomMessage') }}">

{{ csrf_field() }}

@if ($message = Session::get('success'))
<div class="alert alert-success alert-block">
<strong>{{ $message }}</strong>
</div>
@endif
@if ($message = Session::get('error'))
<div class="alert alert-danger alert-block">
<strong>{{ $message }}</strong>
</div>
@endif

<div class="mb-3">
<label class="form-label" for="inputName">Phone:</label>
<input type="text" name="phone" id="inputName"
class="form-control @error('phone') is-invalid @enderror"
placeholder="Phone Number">

@error('phone')
<span class="text-danger">{{ $message }}</span>
 @enderror
</div>

<div class="mb-3">
<label class="form-label" for="inputName">Message:</label>
<textarea name="message" id="inputName" 
class="form-control @error('message') is-invalid @enderror"
placeholder="Enter Message"></textarea>

 @error('message')
  <span class="text-danger">{{ $message }}</span>
@enderror
 </div>

<div class="mb-3">
<button class="btn btn-success btn-submit">Send Message
</button>
</div></form></div>
</div></div></div>

</div></body></html>

Run Laravel App:

Now Run your laravel 12 app after run these below commands


php artisan serve

Go to your web browser, hit this URL http://localhost:8000/whatsapp and see your laravel app output:

laravel message output


laravel whatsapp message output


Recent Posts