mortezamasumi/fb-sms
Laravel/PHP package for sending SMS through the fb-sms service. It provides a straightforward, configurable API for adding SMS notifications, OTPs, and alerts to your applications, with simple setup and a clean interface designed to keep messaging integration lightweight and easy to maintain.
composer require mortezamasumi/fb-sms. v5.3.0 adds Laravel 13 support, so the same constraint line now covers Laravel 10/11/12/13 — check composer.json for the exact illuminate/* range and the minimum PHP version your app must satisfy before bumping the framework.php artisan vendor:publish --tag=fb-sms-config (confirm the tag in the README — the tag name is the one thing most likely to differ between majors). Commit the published config file so credential keys are versioned and values stay in .env..env (FB_SMS_*), reference them from config/fb-sms.php, and add them to .env.example and your deploy secrets store in the same commit.php artisan tinker to prove credentials and number formatting work before wiring it into a notification. Nothing wastes more time than debugging a notification layer on top of a broken credential.via() returning the package's SMS channel and a toSms()/toFbSms() payload method. You get queueing, ShouldQueue, and per-notifiable routing for free, and swapping providers later is a one-line change.Notifiable model to hang a notification on.ShouldQueue on the notification) with tries, backoff, and retryUntil. Gateway timeouts are normal; a synchronous HTTP call inside a web request turns a 2-second page into a 30-second one.09…, +989…, and 00989…. Normalise to the format the gateway expects in a single helper or a custom cast, and validate before enqueueing — an invalid number that fails at send time burns a retry budget for nothing.SmsService (or Notification base class) that owns normalisation, templating, and logging keeps the package behind one seam. When the provider changes — or you add a second one for failover — only that class moves.sent_sms table (recipient, template, provider message id, status, cost) written from a listener or in the service. Delivery reports and billing disputes are impossible to reconcile from application logs alone.composer update with no code changes. Verify your laravel/framework and PHP constraints resolve before bumping the framework in the same PR — if two things break at once you won't know which caused it.config/fb-sms.php locally or in deploy, php artisan config:clear (or config:cache in the deploy script). Silent "credentials missing" errors in production are almost always a stale config cache.php artisan queue:restart. Jobs serialised before the upgrade can otherwise fail on class/signature changes.Bus::batch() or Notification::send() over a large collection, throttle with RateLimited middleware or a job middleware; otherwise you'll get 429s and retries that triple your bill."^5.3" rather than "*". The v5 line is stable, but a future v6 with renamed config keys or a changed channel contract would otherwise land silently in CI.How can I help you explore Laravel packages today?