thepublicgood / smsportal
Laravel的SMSPortal客户端
Requires
- php: ^8.1
- guzzlehttp/guzzle: ^7.4
- laravel/framework: ^9.0|^10.0
Requires (Dev)
- orchestra/testbench: ^v7.24|^8.4
- pestphp/pest: ^1.21
This package is auto-updated.
Last update: 2024-09-18 18:01:22 UTC
README
这个库提供了SMSPortal Rest API的完整实现,为Laravel提供通用客户端,可用于发送短信,并提供Laravel通知通道,可轻松将短信发送到特定实体。
通过Composer安装
composer require thepublicgood/smsportal
安装完成后,使用以下命令发布配置文件
php ./artisan vendor:publish --provider="TPG\\SMSPortal\\SMSPortalServiceProvider"
这将在一个简单的smsportal.php
文件放入您的配置目录。然而,如果您不想发布提供的配置文件,您也可以使用以下方式修改提供的services.php
配置文件:
return [ //... 'smsportal' => [ 'id' => env('SMSPORTAL_ID'), 'secret' => env('SMSPORTAL_SECRET'), ], ];
在services.php
或smsportal.php
配置文件中配置您的SMSPortal API ID和密钥。
基本用法
该库提供了一个Laravel外观,可以轻松地向一个或多个手机号码发送任意消息
SMSPortal::to('27823456789')->message('Hello, World!')->send();
您也可以通过传递一个数组将相同的信息发送到多个号码
SMSPortal::to(['27823456789', '278209876543'])->message('Hello, all of you!')->send();
高级用法
如果您需要更多控制谁收到什么,库已将SMSPortalClient
接口注册到Laravel容器中。您可以创建Message
对象并将它们传递给sendBulk
方法
use TPG\SMSPortal\Contracts\SMSPortalClient; use TPG\SMSPortal\Message; public function sms(SMSPortalClient $client) { $message1 = new Message('27823456789', 'Message number 1'); $message2 = new Message('27829876543', 'Message number 2'); $response = $client->sendBulk([$message1, $message2]); }
您也可以使用send
消息发送单个消息
$response = $client->send($message);
SMSPortal群组
如果您已在SMSPortal中通过联系人设置了群组,您可以使用sendGroup
方法向所选的群组发送单个消息
use TPG\SMSPortal\Contracts\SMSPortalClient; use TPG\SMSPortal\Message; public function sms(SMSPortalClient $client) { $response = $client->sendGroup('Hello, all of you groups!', ['group1', 'group2']); }
Laravel通知
如果您想通过Laravel通知使用SMSPortal,创建一个新的Notification
类并将smsportal
添加到via
方法返回的数组中
use TPG\SMSPortal\SMSPortalChannel; public function via($notifiable): array { return [ 'smsportal', ] }
然后在通知上定义一个toSMSPortal
方法并返回一个消息string
public function toSMSPortal($notifiable): string { 'Hello, '.$notifiable->name; }
在可通知类(例如您的User
类)上定义一个routeNotificationForSMSPortal
方法,该方法返回要发送的正确手机号码
public function routeNotificationForSmsPortal(Notification $notification): string { return $this->mobile; }
发送选项
库还提供了一种传递SMSPortal发送选项的方法。您可以创建一个新的SendOptions
实例并传入所需的任何选项。将此作为send
、sendBulk
或sendGroup
方法的最后一个参数传递
use TPG\SMSPortal\Contracts\SMSPortalClient; use TPG\SMSPortal\Message; public function sms(SMSPortalClient $client) { $options = new SendOptions( allowContentTrimming: true, shortenUrls: true, ); $response = $client->send($message, $options); }