squareetlabs/laravel-smsup

Laravel 包,用于提供 SmsUp API 集成。

v1.0.2 2024-07-22 06:00 UTC

This package is auto-updated.

Last update: 2024-09-22 06:20:22 UTC


README

Quality Score Build Status Code Intelligence Latest Stable Version Total Downloads License

安装

安装包

您可以通过 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 验证手机号码

此方法返回 truefalse。此服务由 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 文档

支持

请随时在问题部分发布您的问题。

致谢

许可证

MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件