macellan/netgsm

Laravel的Netgsm短信通知通道

v1.1.0 2024-03-12 19:15 UTC

This package is auto-updated.

Last update: 2024-09-12 21:48:39 UTC


README

Tests Latest Stable Version Total Downloads

此包使得使用Laravel 8.x, 9.x, 10.x, 11.x通过Netgsm发送短信通知变得容易

内容

安装

您可以通过composer安装此包

composer require macellan/netgsm

设置Netgsm服务

将您的Netgsm配置添加到config/services.php

// config/services.php
...
    'sms' => [
        'netgsm' => [
            'username' => env('NETGSM_USERNAME', ''),
            'password' => env('NETGSM_PASSWORD', ''),
            'header' => env('NETGSM_HEADER', ''),
            'language' => env('NETGSM_LANGUAGE', 'tr'),
            'enable' => env('NETGSM_ENABLE', false),
            'debug' => env('NETGSM_DEBUG', false), // Will log sending attempts and results
            'sandbox_mode' => env('NETGSM_SANDBOX_MODE', false), // Will not invoke API call
        ],
    ],
...

使用

您可以在通知内的via()方法中使用该通道

use Illuminate\Notifications\Notification;
use Macellan\Netgsm\DTO\Sms\BaseSmsMessage;
use Macellan\Netgsm\DTO\Sms\SmsMessage;

class TestNotification extends Notification
{
    public function via($notifiable)
    {
        return ['netgsm'];
    }

    public function toNetgsm(object $notifiable): BaseSmsMessage
    {
        return new SmsMessage('Netgsm test message');
    }
}

对于Otp短信发送,可以返回OtpSmsMessage类。

return new OtpSmsMessage('Netgsm otp test message');

在您的可通知模型中,请确保包含一个routeNotificationForSms()方法,该方法返回一个电话号码。

public function routeNotificationForSms()
{
    return $this->phone;
}

按需通知

有时您可能需要向未作为您的应用程序“用户”存储的人发送通知。使用Notification::route方法,您可以在发送通知之前指定临时的通知路由信息

Notification::route('sms', '+905554443322')  
            ->notify(new TestNotification());

使用外观

use Macellan\Netgsm\Facades\Netgsm;
use Macellan\Netgsm\DTO\Sms\SmsMessage;
use Macellan\Netgsm\DTO\Sms\OtpSmsMessage;

// Sms send
$smsMessage = (new SmsMessage('Netgsm test message'))
    ->setNumbers(['+905554443322']);
Netgsm::sendSms($smsMessage);
/**
// return array 
[
    'code' => '00', // Netgsm response code
    'id' => '111111', // Bulk Id
]
**/

// Otp Sms send
$otpSmsMessage = (new OtpSmsMessage('Netgsm otp test message'))
    ->setNumbers(['+905554443322']);
Netgsm::sendSms($otpSmsMessage);
/**
// return array 
[
    'code' => '00', // Netgsm response code
    'id' => '111111', // Job id
    'error' => '', // Error message
]
**/

测试

composer test

变更日志

有关最近更改的更多信息,请参阅CHANGELOG

致谢