squareetlabs / laravel-smsup
Laravel 包,用于提供 SmsUp API 集成。
Requires
- php: >=8.2.0
- ext-json: *
- guzzlehttp/guzzle: ^6.2|^7.9.1
- illuminate/events: ~5.5|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- illuminate/http: ~5.5|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- illuminate/notifications: ~5.5|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- illuminate/routing: ~5.5|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- illuminate/support: ~5.5|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- nesbot/carbon: ^2.0|^3.7.0
This package is auto-updated.
Last update: 2024-09-22 06:20:22 UTC
README
安装
安装包
您可以通过 composer 安装此包
composer require squareetlabs/laravel-smsup
添加服务提供者 & Facade
对于 Laravel 5.5+
一旦添加了包,服务提供者和 facade 将会被自动发现。
对于旧版本的 Laravel
将 ServiceProvider 添加到 config/app.php
文件中的 providers 数组
SquareetLabs\LaravelSmsUp\SmsUpServiceProvider::class,
将 Facade 添加到 config/app.php
文件中的 aliases 数组
'SmsUp' => SquareetLabs\LaravelSmsUp\Facades\SmsUp::class,
配置
将您的 SmsUp API 密钥添加到 config/services.php
文件中
return [ ... ... 'smsUp' => [ 'key' => env('SMSUP_KEY'), 'test_mode' => env('SMSUP_TEST_MODE') // true or false ] ...
如果您想模拟提交消息,将 test_mode
设置为 true
,这对于测试和调试非常完美,它不收取任何费用。
使用方法
使用 Laravel 通知
使用 artisan 创建一个通知
php artisan make:notification someNotification
在您的通知的 public function via($notifiable)
方法中返回 [smsUp]
public function via(INotifiable $notifiable) { return ['smsUp']; }
在您的通知中添加 public function toSmsUp($notifiable)
方法,并返回 SmsUpMessage
实例
use SquareetLabs\LaravelSmsUp\SmsUpMessage; ... public function toSmsUp(INotifiable $notifiable) { $message = new SmsUpMessage(); $message->to('34xxxxxxxxx') ->from('Foo') ->text('Text of your message') ->custom('MyMsgID-12345') // Optional. ->link('http://www.google.com'); // Optional return $message; }
如果您没有指定参数 to
,请确保您的通知实体已定义 routeNotificationForSmsUp
方法
/** * Route notifications for the SmsUp channel. * * @return string */ public function routeNotificationForSmsUp(): string { return $this->phone; }
要包含 link
在消息中,您必须在您想要包含短信的文本区域中放置标签 {LINK}
示例
->text('Hi John! See our new offers only available for you: {LINK}');
使用 SmsUp Facade
发送消息
use SquareetLabs\LaravelSmsUp\SmsUpMessage; use SquareetLabs\LaravelSmsUp\Facades\SmsUp; ... $message1 = new SmsUpMessage(); $message->to('34xxxxxxxxx') ->from('Foo') ->text('Text of your message') ->custom('MyMsgID-12345') // Optional. ->link('http://www.google.com'); // Optional $message2 = new SmsUpMessage(); $message2->to('34xxxxxxxxx') ->from('Foo') ->text('Text of your message') ->custom('MyMsgID-12346') // Optional. ->link('http://www.google.com'); // Optional $messages = [ $message1->formatData(), $message2->formatData() ]; SmsUp::sendMessages($messages);
获取 SmsUp 账户余额
use SquareetLabs\LaravelSmsUp\Facades\SmsUp; ... $balance = SmsUp::getBalance();
通过 SmsUp 验证手机号码
此方法返回 true
或 false
。此服务由 SmsUp 收取费用。
use SquareetLabs\LaravelSmsUp\Facades\SmsUp; ... $verify = SmsUp::verifyPhone('34xxxxxxxxx');
可用事件
LaravelSmsUp 提供了方便的事件,这些事件提供了有关 SMS 消息所需的信息。
消息已发送
当发送一条或多条消息时触发。
示例
use SquareetLabs\LaravelSmsUp\Events\SmsUpMessageWasSent; use SquareetLabs\LaravelSmsUp\SmsUpMessage; use SquareetLabs\LaravelSmsUp\SmsUpResponse; use SquareetLabs\LaravelSmsUp\SmsUpResponseMessage; class SmsUpMessageSentListener { /** * Handle the event. * * @param SmsUpMessageWasSent $event * @return void */ public function handle(SmsUpMessageWasSent $event) { $response = $event->response; // Class SmsUpResponse $message = $event->message; // Class SmsUpMessage if ($response->getStatus() != 'ok') { $yourModel = YourModel::find($message->getCustom()); $yourModel->sms_status = $response->getStatus(); $yourModel->sms_error_id = $response->getErrorId(); $yourModel->sms_error_msg = $response->getErrorMsg(); $yourModel->save(); } else { foreach ($response->getResult() as $responseMessage) { // class SmsUpResponseMessage $yourModel = YourModel::find($responseMessage->getCustom()); $yourModel->sms_status = $responseMessage->getStatus(); $yourModel->sms_id = $responseMessage->getSmsId(); $yourModel->sms_error_id = $responseMessage->getErrorId(); $yourModel->sms_error_msg = $responseMessage->getErrorMsg(); $yourModel->save(); } } } }
在您的 EventServiceProvider
protected $listen = [ ... 'SquareetLabs\LaravelSmsUp\Events\SmsUpMessageWasSent' => [ 'App\Listeners\SmsUpMessageSentListener', ], ];
SmsUp 报告接收
当从 SmsUp 接收到已发送短信的状态报告时触发。传递给 SmsUp 的回调 URL 为:http://yourserver/yourapplication/smsup/report
。
示例
use SquareetLabs\LaravelSmsUp\Events\SmsUpReportWasReceived; use SquareetLabs\LaravelSmsUp\SmsUpReportResponse; use SquareetLabs\LaravelSmsUp\SmsUpReportResponseMessage; class SmsUpReportReceivedListener { /** * Handle the event. * * @param SmsUpReportWasReceived $event * @return void */ public function handle(SmsUpReportWasReceived $event) { $response = $event->response; // Class SmsUpReportResponse foreach ($response->getResponseMessages() as $responseMessage) { // Class SmsUpReportResponseMessage $yourModel = YourModel::find($responseMessage->getCustom()); $yourModel->sms_status = $responseMessage->getStatus(); $yourModel->sms_delivery_at = $responseMessage->getDlrDate(); $yourModel->save(); } } }
在您的 EventServiceProvider
protected $listen = [ ... 'SquareetLabs\LaravelSmsUp\Events\SmsUpReportWasReceived' => [ 'App\Listeners\SmsUpReportReceivedListener', ], ];
SmsUp API 文档
有关更多信息,请访问 SmsUp API 文档。
支持
请随时在问题部分发布您的问题。
致谢
- Alberto Rial Barreiro
- Jacobo Cantorna Cigarrán
- 软件开发 SquareetLabs
- 所有贡献者
许可证
MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件。