xenon/laravelbdsms

This is package for sending sms to Bangladeshi mobile numbers using laravel application

V1.0.58.0 2024-04-10 07:31 UTC

README

Xenon\LaravelBDSms is a sms gateway package for sending text message to Bangladeshi mobile numbers using several gateways for Laravel Framework. You can watch installation process from youtube.

68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6973737565732f6172696639383734312f6c61726176656c6264736d73 68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f666f726b732f6172696639383734312f6c61726176656c6264736d73 68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6172696639383734312f6c61726176656c6264736d73 68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f6172696639383734312f6c61726176656c6264736d73

Installation

Step 1:

composer require xenon/laravelbdsms

Step 2:

Publish the package using command

php artisan vendor:publish --provider=Xenon\LaravelBDSms\LaravelBDSmsServiceProvider --tag="migrations"
php artisan vendor:publish --provider=Xenon\LaravelBDSms\LaravelBDSmsServiceProvider --tag="config"
php artisan migrate

Step 3:

Select Vendor From Console
installation.png

Step 4:

php artisan config:cache && php artisan migrate

Usage

Simply use the facade

Note: For sending message using facade you must have to set .env credentials and set default provider; Find .env credentials for different providers from inside config/sms.php)

use Xenon\LaravelBDSms\Facades\SMS;

SMS::shoot('017XXYYZZAA', 'helloooooooo boss!');
SMS::shoot(['017XXYYZZAA','018XXYYZZAA'], 'helloooooooo boss!'); //for Ssl Sms Gateway Only

Or, with facade alias

use LaravelBDSms, SMS;

LaravelBDSms::shoot('017XXYYZZAA', 'helloooooooo boss!');
SMS::shoot('017XXYYZZAA', 'helloooooooo boss!');

Or, if you need to change the default provider on the fly

use Xenon\LaravelBDSms\Facades\SMS;
use Xenon\LaravelBDSms\Provider\Ssl;

$response = SMS::via(Ssl::class)->shoot('017XXYYZZAA', 'helloooooooo boss!');

Or, you can send message with queue. This queue will be added in your jobs table. Message will be sent as soon as job is run.

Make sure you have jobs table and other jobs related functionalities enabled

use Xenon\LaravelBDSms\Facades\SMS;
use Xenon\LaravelBDSms\Provider\Ssl;

SMS::shootWithQueue("01XXXXXXXXX",'test sms');
SMS::via(Ssl::class)->shootWithQueue("01XXXXXXXXX",'test sms');

Log Generate

You can generate log in database for every sms api request and save in database. For doing this. Follow below points

  1. Be confirm you have completed step-2 and step-3
  2. Run command php artisan migrate. This will create lbs_log table in your database
  3. Go to your project directory and locate config/sms.php
  4. Find and make true 'sms_log' => true,

Otherwise, if you want more control, you can use the underlying sender object. This will not touch any laravel facade or service provider.

Sample Code

SSLCommerz

use Xenon\LaravelBDSms\Provider\Ssl;
use Xenon\LaravelBDSms\Sender;

$sender = Sender::getInstance();
$sender->setProvider(Ssl::class); 
$sender->setMobile('017XXYYZZAA');
//$sender->setMobile(['017XXYYZZAA','018XXYYZZAA']);
$sender->setMessage('helloooooooo boss!');
$sender->setQueue(true); //if you want to sent sms from queue
$sender->setConfig(
   [
       'api_token' => 'api token goes here',
       'sid' => 'text',
       'csms_id' => 'sender_id'
   ]
);
$status = $sender->send();

----------Demo Response Using SSL-------------
array:6 [▼
  "status" => "response"
  "response" => "{"status":"FAILED","status_code":4003,"error_message":"IP Blacklisted"}"
  "provider" => "Xenon\LaravelBDSms\Provider\Ssl"
  "send_time" => "2021-07-06 08:03:23"
  "mobile" => "017XXYYZZAA"
  "message" => "helloooooooo boss!"
]
--------------------------------------------------

MimSms

use Xenon\LaravelBDSms\Provider\MimSms;
use Xenon\LaravelBDSms\Sender;

$sender = Sender::getInstance();
$sender->setProvider(MimSms::class);
$sender->setMobile('017XXYYZZAA');
$sender->setMessage('This is test message');
$sender->setQueue(true); //if you want to sent sms from queue
$sender->setConfig(
   [
       'api_key' => 'api_key_goes_here',
       'type' => 'text',
       'senderid' => 'approved_send_id',
   ]
);

$status = $sender->send();

Sms Send Using Custom Gateway

We have tried to added most of the gateways of Bangladesh in this package as much as possible. But still if you don't find your expected gateway in this list, then use Custom Gateway using following code snippet.

use Xenon\LaravelBDSms\Provider\CustomGateway;
use Xenon\LaravelBDSms\Sender;

$sender = Sender::getInstance();
$sender->setProvider(CustomGateway::class);
$sender->setUrl('https://your_cusom_gateway_provider_url_here')
        ->setMethod('post')
        ->setHeaders([
            'Content-Type: application/json',
            'Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
        ], false);
$sender->setMobile(true);
$sender->setMessage(true);
$sender->setQueue(false);
//use required parameters based on your sms gateway
$sender->setConfig(
    [
        'MsgType' => 'TEXT',
        'masking' => 'sample',
        'userName' => 'test_user',
        'message' => 'test message',
        'receiver' => '017xxxxxxxxxx',
    ]
);
echo $status = $sender->send();

Currently Supported Sms Gateways

Provider Credentials Required
For Sending SMS
Support Multiple Status Comment Contact
AjuraTech apikey, secretkey , callerID - Done - -
Adn api_key, type, senderid - Done - -
Alpha api_key Yes Done - -
Banglalink userID, passwd , sender - Done - -
BDBulkSMS token - Done - -
BoomCast masking , userName , password - Done - -
BulksmsBD api_key,senderid - Done - -
CustomGateway provide necessary token/api_key/others based on requirements - Done Be careful using this and test based on several scenario -
DianaHost api_key, type, senderid - Done - -
DianaSMS ApiKey, ClientId, SenderId - Done - -
Esms api_token, sender_id - Done - -
ElitBuzz api_key, type, senderid - Done not tested yet in live -
Grameenphone username, password, messagetype - Done not tested yet in live -
Infobip user, password - Done not tested yet in live -
Lpeek acode, apiKey, requestID, masking - Done - -
MDL api_key, type, senderid - Done not tested yet in live -
Metronet api_key, mask Done - -
MimSms api_key, type, senderid - Done - -
Mobireach Username,Password, From - Done - -
Muthofun sender_id Yes Done - -
NovocomBD ApiKey , ClientId , SenderId - Done - -
OnnoRokomSMS userName, userPassword, type, maskName, campaignName - Done not tested yet in live -
QuickSms api_key, senderid, type,scheduledDateTime - Done not tested yet in live -
RedmoITSms api_token, sender_id - Support closed -
SmartLabSMS user, password, sender - Done - -
SmsinBD api_token, senderid - Done -
SMS.net.bd api_key - Done -
SmsQ sender_id, client_id, api_key - Done -
SMSNet24 user_id, user_password, route_id(optional), sms_type_id(optional) - Done -
SmsNoc sender_id, bearer_token - Done -
SongBird apikey, secretkey, callerID - Done -
Sslsms api_token, sid, csms_id Yes Done - -
Tense user, password, campaign, masking - Done - -
TwentyFourSmsBD apiKey, sender_id - Done - -
Trubosms api_token, sender_id - Done - -
Viatech api_key, mask - Done - -

Stargazers

Stargazers repo roster for @arif98741/laravelbdsms

Forkers

Forkers repo roster for @arif98741/laravelbdsms

Contributors

68747470733a2f2f636f6e747269622e726f636b732f696d6167653f7265706f3d6172696639383734312f6c61726176656c6264736d73
We are continuously working in this open source library for adding more Bangladeshi sms gateway. If you feel something is missing then make a issue regarding that. If you want to contribute in this library, then you are highly welcome to do that....

For clear documentation read this blog in Medium! and also you can download several sms providers documentations as pdf from this link!

Special thanks to
tusharkhan
tusher9352