thepublicgood/smsportal

Laravel的SMSPortal客户端

v0.0.1 2023-04-18 14:38 UTC

This package is auto-updated.

Last update: 2024-09-18 18:01:22 UTC


README

Tests

这个库提供了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.phpsmsportal.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实例并传入所需的任何选项。将此作为sendsendBulksendGroup方法的最后一个参数传递

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);
}