razikallayi / laravel-sms
A flexible SMS service for Laravel supporting multiple providers like Mithra, Twilio, Nexmo, and more
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/razikallayi/laravel-sms
Requires
- php: ^7.4|^8.0
- guzzlehttp/guzzle: ^7.0
- illuminate/notifications: ^8.0|^9.0|^10.0|^11.0
- illuminate/support: ^8.0|^9.0|^10.0|^11.0
- twilio/sdk: ^6.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- orchestra/testbench: ^6.0|^7.0|^8.0|^9.0
- phpstan/phpstan: ^1.0
- phpunit/phpunit: ^9.0|^10.0
This package is auto-updated.
Last update: 2025-12-28 15:42:40 UTC
README
A flexible SMS service for Laravel supporting multiple providers like Mithra, Twilio, Nexmo, and more. Send SMS messages easily with a unified API similar to Laravel's Mail system.
Features
- Multiple SMS Drivers: Support for Mithra, Twilio, Nexmo, Log, and Array drivers
- Easy Provider Switching: Change SMS providers by updating configuration
- Notification Channel: Send SMS through Laravel's notification system
- Queue Support: SMS messages can be queued for better performance
- Facade Support: Easy-to-use SMS facade for sending messages
- Model Traits: Add SMS functionality to your models easily
Installation
Install the package via Composer:
composer require razikallayi/laravel-sms
Publish the configuration file:
php artisan vendor:publish --tag=sms-config
Configuration
Add the following environment variables to your .env file:
# SMS Configuration SMS_DRIVER=mithra # Mithra SMS Configuration MITHRA_SMS_TOKEN=your_mithra_token_here MITHRA_SMS_SENDER=TXTLCL MITHRA_SMS_BASE_URL=http://sms.mithraitsolutions.com/httpapi # Twilio SMS Configuration TWILIO_ACCOUNT_SID=your_twilio_sid TWILIO_AUTH_TOKEN=your_twilio_token TWILIO_FROM_NUMBER=+1234567890 # Global SMS Settings SMS_FROM_NAME="Your App Name" SMS_FROM_NUMBER=+1234567890
Usage
Basic SMS Sending
use RaziKallayi\LaravelSms\Facades\SMS; use RaziKallayi\LaravelSms\Services\SMS\Messages\SmsMessage; // Simple message $message = new SmsMessage('Hello, this is a test message!'); $message->to(['1234567890']); $result = SMS::send($message); // Advanced message with options $message = (new SmsMessage('Your OTP is: 123456')) ->to(['1234567890']) ->route(config('sms.routes.trans_otp')) ->type(config('sms.message_types.text')) ->templateId('your_template_id'); $result = SMS::send($message);
Using Model Trait
Add the HasSmsNotifications trait to your models:
use RaziKallayi\LaravelSms\Traits\HasSmsNotifications; class Customer extends Model { use HasSmsNotifications; // Your model code... } // Send SMS to customer $customer = Customer::find(1); $customer->sendSms('Welcome to our service!');
Using Notifications
Create a notification that uses SMS:
use RaziKallayi\LaravelSms\Notifications\SmsChannel; use RaziKallayi\LaravelSms\Services\SMS\Messages\SmsMessage; class OrderConfirmation extends Notification { public function via($notifiable) { return [SmsChannel::class]; } public function toSms($notifiable) { return new SmsMessage("Your order has been confirmed!"); } } // Send notification $customer->notify(new OrderConfirmation());
Switching Providers
To switch SMS providers, simply update your environment variable:
# Use Mithra (default) SMS_DRIVER=mithra # Use Twilio SMS_DRIVER=twilio # Use Log for testing SMS_DRIVER=log
Available Drivers
- mithra - Mithra IT Solutions SMS service
- twilio - Twilio SMS service
- nexmo - Nexmo/Vonage SMS service
- log - Log messages to Laravel logs
- array - Store messages in memory (for testing)
SMS Routes
- Promotional (1): For promotional messages
- Transactional (2): For transactional messages
- Sender ID (3): For custom sender ID messages
- Trans OTP (4): For OTP messages
- International (9): For international messages
- Trans2 (10): Alternative transactional route
Message Types
- Text (1): Regular text messages
- Flash (2): Flash SMS messages
- Unicode (3): Unicode messages for special characters
Error Handling
All SMS drivers return standardized response arrays:
// Success response [ 'success' => true, 'message_id' => '123456789', 'recipients' => ['1234567890'], 'content' => 'Your message content' ] // Error response [ 'success' => false, 'error_code' => '103', 'error_message' => 'Invalid contact(s)', 'recipients' => ['invalid_number'] ]
Testing
For testing purposes, use the log or array drivers:
SMS_DRIVER=log # Messages will be written to logs SMS_DRIVER=array # Messages will be stored in memory
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This package is open-sourced software licensed under the MIT license.
Support
If you discover any security related issues, please email razikallayi@gmail.com instead of using the issue tracker.