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
Go to to your sandbox and get your sid, token and whatsapp number like below
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:
No comments: