macellan / netgsm
Netgsm SMS notification channel for Laravel
Installs: 3 086
Dependents: 0
Suggesters: 0
Security: 0
Stars: 3
Watchers: 4
Forks: 0
Open Issues: 0
Requires
- php: ^8.1
- ext-json: *
- ext-simplexml: *
- guzzlehttp/guzzle: ^7.0
- illuminate/http: ^10.0|^11.0|^12.0
- illuminate/notifications: ^10.0|^11.0|^12.0
- illuminate/support: ^10.0|^11.0|^12.0
- illuminate/translation: ^10.0|^11.0|^12.0
- spatie/array-to-xml: ^3.2.3
Requires (Dev)
- larastan/larastan: ^2.9||^3.0
- laravel/pint: ^1.14
- orchestra/testbench: ^8.0|^9.0|^10.0
- phpunit/phpunit: ^9.6|^10.0|^11.0|^12.0
README
This package makes it easy to send sms notifications using Netgsm with Laravel 10.x, 11.x, 12.x
Contents
Installation
You can install this package via composer:
composer require macellan/netgsm
Setting up the Netgsm service
Add your Netgsm configs to your config/services.php:
// config/services.php ... 'sms' => [ 'netgsm' => [ 'username' => env('NETGSM_USERNAME', ''), 'password' => env('NETGSM_PASSWORD', ''), 'header' => env('NETGSM_HEADER', ''), 'language' => env('NETGSM_LANGUAGE', 'tr'), 'enable' => env('NETGSM_ENABLE', false), 'debug' => env('NETGSM_DEBUG', false), // Will log sending attempts and results 'sandbox_mode' => env('NETGSM_SANDBOX_MODE', false), // Will not invoke API call ], ], ...
Usage
You can use the channel in your via() method inside the notification:
use Illuminate\Notifications\Notification; use Macellan\Netgsm\DTO\Sms\BaseSmsMessage; use Macellan\Netgsm\DTO\Sms\SmsMessage; class TestNotification extends Notification { public function via($notifiable) { return ['netgsm']; } public function toNetgsm(object $notifiable): BaseSmsMessage { return new SmsMessage('Netgsm test message'); } }
For Otp Sms sending, OtpSmsMessage class can be returned.
return new OtpSmsMessage('Netgsm otp test message');
In your notifiable model, make sure to include a routeNotificationForSms() method, which returns a phone number.
public function routeNotificationForSms() { return $this->phone; }
On-Demand Notifications
Sometimes you may need to send a notification to someone who is not stored as a "user" of your application. Using the Notification::route method, you may specify ad-hoc notification routing information before sending the notification:
Notification::route('sms', '+905554443322') ->notify(new TestNotification());
Usage With Facade
use Macellan\Netgsm\Facades\Netgsm; use Macellan\Netgsm\DTO\Sms\SmsMessage; use Macellan\Netgsm\DTO\Sms\OtpSmsMessage; // Sms send - single sms $smsMessage = (new SmsMessage('Netgsm test message')) ->setNumbers(['+905554443322']); Netgsm::sendSms($smsMessage); /** // return array [ 'code' => '00', // Netgsm response code 'id' => '17377215342605050417149344', // Job id, 'description" => 'queued', ] **/ // Sms send - bulk sms with same message $smsMessage = (new SmsMessage('Netgsm test message')) ->setNumbers(['+905554443322', '+905554443333']); Netgsm::sendSms($smsMessage); // Sms send - bulk sms $smsMessage = (new SmsMessage) ->setNumbers(['+905554443322', '+905554443333']) ->setMessages(['Message 1', 'Message 2']); Netgsm::sendSms($smsMessage); // Otp Sms send $otpSmsMessage = (new OtpSmsMessage('Netgsm otp test message')) ->setNumbers(['+905554443322']); Netgsm::sendSms($otpSmsMessage); /** // return array [ 'code' => '00', // Netgsm response code 'id' => '111111', // Job id 'error' => '', // Error message ] **/
Testing
composer test
Changelog
Please see CHANGELOG for more information what has changed recently.