Package for sms notifications with editable templates (for important user-related events). This package supports sending sms via twilio.
composer require escolalms/templates-sms
php artisan db:seed --class="EscolaLms\Templates-SMS\Database\Seeders\TemplateSmsSeeder"
You can configure the connection to Twilio through keys in the .env
file:
TWILIO_SID
- twilio SID unique keyTWILIO_TOKEN
- twilio auth tokenTWILIO_FROM
- twilio phone numberTWILIO_SSL_VERIFY
- twilio ssl verify
You can also change the default driver in SMS_DRIVER
Sending an SMS using the Sms
facade
Sms::driver('twilio')->send('123456789', 'SMS message');
or
Sms::send('123456789', 'SMS message');
You can define your own driver for sending sms. The driver must implement the interface \EscolaLms\TemplatesSms\Drivers\Contracts\SmsDriver
.
interface SmsDriver
{
public function send(string $to, string $content, array $mediaUrls = [], array $params = []): bool;
}
Example custom driver:
class CustomDriver implements \EscolaLms\TemplatesSms\Drivers\Contracts\SmsDriver
{
public function send(string $to, string $content, array $mediaUrls = [], $params = []): bool
{
// Implement send() method.
}
}
Register a new driver, we would do the following:
Sms::extend('custom', function($app) {
return new CustomDriver($app);
});
Run ./vendor/bin/phpunit
to run tests. See tests folder as it's quite good staring point as documentation appendix.
This package has a facade for testing. The Sms facade's fake method allows you to easily a fake sms driver.
public function testSms() {
Sms::fake();
...
$service->sendSms($phone1);
...
Sms::assertSent($phone1);
Sms::assertNotSent($phone2);
}
public function testSms() {
Sms::fake();
...
Sms::assertSent($phone1, fn($sms) => $sms->content === 'Sms message');
}