macellan / netgsm
Netgsm SMS notification channel for Laravel
Installs: 2 543
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 4
Forks: 0
Open Issues: 0
Requires
- php: ^8.1
- ext-json: *
- ext-simplexml: *
- guzzlehttp/guzzle: ^7.0
- illuminate/http: ^8.0|^9.0|^10.0|^11.0
- illuminate/notifications: ^8.0|^9.0|^10.0|^11.0
- illuminate/support: ^8.0|^9.0|^10.0|^11.0
- illuminate/translation: ^8.0|^9.0|^10.0|^11.0
- spatie/array-to-xml: ^3.0
Requires (Dev)
- orchestra/testbench: ^8.0|^9.0
- phpunit/phpunit: ^10.0
README
This package makes it easy to send sms notifications using Netgsm with Laravel 8.x, 9.x, 10.x, 11.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 $smsMessage = (new SmsMessage('Netgsm test message')) ->setNumbers(['+905554443322']); Netgsm::sendSms($smsMessage); /** // return array [ 'code' => '00', // Netgsm response code 'id' => '111111', // Bulk Id ] **/ // 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.