tookantech/chapaar

此包提供了一种灵活的方式,通过各种短信服务提供商发送和验证消息。它提供了与多个驱动程序的集成,使得使用不同的短信服务提供商变得容易,而不必局限于特定的一个。

1.8.0 2024-04-08 11:09 UTC

This package is auto-updated.

Last update: 2024-09-08 12:16:54 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

Chapaar 通过多个短信服务提供商提供灵活的消息发送和验证,易于集成,不锁定任何特定提供商。

可用驱动程序

安装

您可以通过 Composer 安装此包

composer require tookantech/chapaar

配置

您可以使用以下命令发布配置文件

php artisan vendor:publish --tag="chapaar-config"

这将在您的配置目录中创建一个 chapaar.php 配置文件,您可以在其中设置默认驱动程序并配置特定于驱动程序的设置。

这是已发布配置文件的内容

return [
    'default' => env('CHAPAAR_DRIVER', 'kavenegar'),

    'drivers' => [
        'kavenegar' => [
            'url' => 'https://api.kavenegar.com/v1/',
            'api_key' => '',
            'line_number' => ''
        ],
        'smsir' => [
            'url' => 'https://api.sms.ir/v1/',
            'api_key' => '',
            'line_number' => '',
        ],
        'ghasedak' => [
            'url'         => 'https://api.ghasedak.me/v2/',
            'api_key'     => '',
            'line_number' => '',
        ],
    ],
];

用法

使用 Chapaar Facade

如果您想在没有 Laravel 内置通知系统的情况下使用 Chapaar 包,可以直接使用 Chapaar Facade。这允许您使用不同的短信服务提供商发送和验证消息。

发送简单消息

use TookanTech\Chapaar\Facades\Chapaar;
use TookanTech\Chapaar\SmsMessage;

$message = (new SmsMessage())->driver()
    ->setFrom('12345678')
    ->setTo('0912111111')
    ->setContent('Hello, this is a test message.');

$response = Chapaar::send($message);

使用模板消息发送

use TookanTech\Chapaar\Facades\Chapaar;
use TookanTech\Chapaar\SmsMessage;

#Kavenegar
$message =(new SmsMessage())
    ->driver()
    ->setTemplate("invoice-paid")
    ->setTo('09121111111')
    ->setTokens([
        '123', // token
        '456', // token2
        '789', // token3
        '111', // token10, with 4 space
        '222', // token20, with 8 space
    ]);
    
# SmsIr
$message =(new SmsMessage())
    ->driver()
    ->setTemplate('invoice-paid')
    ->setTo('09121111111')
    ->setTokens([
        'code' => '123' // 'variable_name' => 'value'
    ]);
    
# Ghasedak
$message =(new SmsMessage())
    ->driver()
    ->setTemplate("invoice-paid")
    ->setTo('09121111111')
    ->setTokens([
        'test1', // param1
        'test2'  // param2
    ]);

$response = Chapaar::verify($message);

不使用默认驱动程序发送

use TookanTech\Chapaar\Facades\Chapaar;
use TookanTech\Chapaar\SmsMessage;
use TookanTech\Chapaar\Enums\Drivers;

$message = (new SmsMessage())
    ->driver(Drivers::SMSIR)
    ->setFrom('12345678')
    ->setTo('0912111111')
    ->setContent('Hello, this is a test message.');

$response = Chapaar::send($message);

获取最新的出站消息,它将自动获取默认驱动程序的最新发送消息

$response = Chapaar::outbox(100);

在通知中使用

请参阅 laravel notifications 了解如何在 Laravel 中使用通知。

use TookanTech\Chapaar\SmsChannel;
class InvoicePaid extends KavenegarBaseNotification
{
    public function via($notifiable): array
    {
        return [SmsChannel::class];
    }
    public function toSms($notifiable)
    {
        return (new SmsMessage)->driver()
        ->setTemplate('verify')
        ->setTokens([123],[456])
    }
}

class User extends Authenticatable
{
    use Notifiable;

    public function routeNotificationForSms($driver, $notification = null)
    {
        return $this->mobile;
    }

}

测试

composer test

变更日志

请参阅 CHANGELOG 了解最近更改的信息。

贡献

请参阅 CONTRIBUTING 了解详细信息。

安全漏洞

请参阅 我们的安全策略 了解如何报告安全漏洞。

鸣谢

许可证

MIT 许可证(MIT)。请参阅 许可证文件 了解更多信息。