rmdmostakim / bdsms
A flexible and extensible Laravel package for sending SMS through multiple Bangladeshi and international gateways, including Twilio, SSL Wireless, MimSMS, Infobip. Easily configurable and developer-friendly.
Requires
- php: ^8.2
- illuminate/support: ^9.0|^10.0|^11.0|^12.0
- laravel/framework: ^9.0|^10.0|^11.0|^12.0
- twilio/sdk: ^7.0
README
A brief description of what this project does and who it's for
π¦ BdSms
A flexible and extensible Laravel package for sending SMS through multiple Bangladeshi and international gateways β including Twilio, SSL Wireless, MimSMS, Infobip.
π Supported Gateway
- β Twilio
- β MimSMS
- β SslWireless
- β Infobip
π Installation
composer require rmdmostakim/bdsms
π§ Configuration
1. Publish Config File
php artisan vendor:publish --provider="RmdMostakim\BdSms\SmsServiceProvider"
This will publish config/bdsms.php.
2. Run Migration
php artisan migrate
3. Set Up .env Values
β Example for Twilio:
#twilio credentials TWILIO_ACCOUNT_SID="your-twilio-sid" TWILIO_AUTH_TOKEN="your-twilio-auth-token" TWILIO_NUMBER="your-twilio-number"
β Example for SSL Wireless:
#ssl wireless credentials SSL_WIRELESS_API_TOKEN="your_ssl_api_key" SSL_WIRELESS_SID="your_ssl_username" SSL_WIRELESS_API_URL="https://smsplus.sslwireless.com/api/v3/send-sms"
β Example for MimSMS:
#mim sms credentials MIM_SMS_API_KEY="your-mimsms-app-key" MIM_SMS_USER_NAME="your-mimsms-user-name" MIM_SMS_SENDER_NAME="your-mimsms-name" MIM_SMS_API_URL="https://api.mimsms.com/api/SmsSending/SMS"
β Example for Infobip:
#infobip credentials INFOBIP_API_KEY="your-infobip-api-key" INFOBIP_API_URL="your-infobip-api-url" INFOBIP_NUMBER="your-infobip-number"
β Usage
πΉ Using Facade (BdSms::TwilioSms()->single())
β Send single SMS using Twilio:
use RmdMostakim\BdSms\Facades\BdSms; BdSms::TwilioSms()->single('+8801XXXXXXXXX', 'Hello from Twilio!');
β Send using SSL Wireless:
BdSms::SslWireless()->single('017XXXXXXXX', 'SSL SMS test');
β Send using MimSMS (default type = 'D'):
BdSms::MimSms()->single('017XXXXXXXX', 'MimSMS message');
β Send using Infobip:
BdSms::InfobipSms()->single('017XXXXXXXX', 'Infobip test message');
β Multiple messages:
π€ Send to Multiple Recipients with a Single Message
BdSms::TwilioSms()->multiple(['017XXXXXXXX', '017YYYYYYYY'],'Hello World!');
π€ Send Personalized Messages to Multiple Recipients
BdSms::TwilioSms()->multiple( ['017XXXXXXXX', '017YYYYYYYY'], ['Hello A', 'Hello B'] );
β Check SMS Status by UUID:
$status = BdSms::check('your-sms-uuid'); if ($status?->status === 'sent') { // Delivered or accepted }
π§© Dependency Injection
You can inject SmsManager into a controller or service:
use RmdMostakim\BdSms\SmsManager; class SmsService { public function __construct(protected SmsManager $sms) {} public function notifyUser(string $phone) { $this->sms->TwilioSms()->single($phone, 'Your order has been placed!'); } }
π¦ Drivers Supported
| Method | Gateway |
|---|---|
TwilioSms() |
Twilio |
SslWireless() |
SSL Wireless |
MimSms($type) |
MimSMS |
InfobipSms() |
Infobip |
Each returns a driver instance that supports:
single(string $to, string $msg): arraymultiple(array $to, string|array $msg): array
π ΎοΈ MimSMS Transaction Type
The MimSms driver requires a transaction type which defines the category of SMS you want to send. This value is passed into the constructor as a single-character string.
β Available types:
| Type | Description |
|---|---|
T |
Transactional SMS |
P |
Promotional SMS |
D |
Dynamic Masking SMS |
Default is
'D'if not provided.
π Example usage:
BdSms::MimSms()->single('017XXXXXXXX', 'Default D type SMS'); BdSms::MimSms('P')->single('017XXXXXXXX', 'Promotional SMS');
π§ͺ Build Your Own Driver
Implement the interface:
use RmdMostakim\BdSms\Contracts\SmsInterface; class CustomSmsDriver implements SmsInterface { public function single(string $to, string $msg): array { // implement } public function multiple(array $to, string|array $msg): array { // implement } }
π License
MIT Β© RmdMostakim