amiriun/sms

伊朗短信,sms,kavenegar

dev-master / 5.4.x-dev 2023-07-22 11:34 UTC

This package is auto-updated.

Last update: 2024-09-22 14:09:45 UTC


README

Laravel SMS 包含 流行的伊朗 SMS 网关 库,提供了一种更简单的方式,从您想要的任何网关发送短信,或者在这些网关之间切换。

支持的短信网关

要求

  • PHP >=5.4
  • PHP SoapClient 扩展(仅适用于 payamresan 网关)

先决条件

  • Laravel >=5.2

安装

Composer 安装(适用于 Laravel 5+/Lumen 5)

composer require amiriun/sms:dev-master

将包服务提供者添加到 config/app.php

'providers' => [
	\Amiriun\SMS\SMSServiceProvider::class,
];

然后通过以下方式发布配置

php artisan vendor:publish

(现在您可以在 config/sms.php 文件中指定您的短信网关标识符并选择默认网关)

return [
     // debug , kavenegar, sms_ir, payamresan
    'default_gateway' => env('SMS_GATEWAY', 'debug'),
    ...
]

注意:如果您选择“调试”驱动作为默认驱动,则您的消息将不会发送,仅记录在 laravel.log 文件中。

如何发送短信

$data = new \Amiriun\SMS\DataContracts\SendSMSDTO();
$data->setSenderNumber('300024444'); // also this can be set as default in config/sms.php
$data->setMessage("Hello, this is a test");
$data->setTo('09123000000');

$getResponse = app('\Amiriun\SMS\Services\SMSService')->send($data);

// expected output is instance of \Amiriun\SMS\DataContracts\SentSMSOutputDTO()
//      $getResponse->messageId // get response of message id
//      $getResponse->status // get response state of provider
//      $getResponse->to // get recipient mobile number
//      $getResponse->senderNumber // get provider sender number
//      $getResponse->messageResult // get any other results from provider
//      $getResponse->connectorName // get provider name, such as: Kavenegar, MelliPayamak, etc.

在上面的示例中,您的消息将通过您在 config/sms.php 文件中选择的默认提供程序(驱动程序)发送,但您也可以手动更改提供程序,如下面的示例所示

...
...

// $driver = app(\Amiriun\SMS\Services\Drivers\PayamResanDriver::class);
// $driver = app(\Amiriun\SMS\Services\Drivers\SmsIrDriver::class);
if(config('app.debug')){
    $driver = app(\Amiriun\SMS\Services\Drivers\DebugDriver::class);
}else{
    $driver = app(\Amiriun\SMS\Services\Drivers\KavenegarDriver::class);
}
$getResponse = new \Amiriun\SMS\Services\SMSService($kavenegarDriver);
$getResponse = $getResponse->send($data);

...
...

如何接收短信

此包通过提供程序挂钩的 route uri 获取,以更新您的应用程序有关接收和发送的消息。以下列出这些路由

YOUR_SITE.COM/amiriun-sms/kavenegar/receive
YOUR_SITE.COM/amiriun-sms/kavenegar/deliver

您可以在提供程序中定义这些 URL,使用您自己的网站域名(目前仅 kavenegar 支持)

当您从提供程序接收到新消息或您有新的发送更新时,您可能想执行某些操作。在这些情况下,您可以使用 artisan 命令创建两个事件

php artisan make:event SMSWasDelivered
php artisan make:event SMSWasReceived

然后您可以在 config/sms.php 中定义该类,如下所示

	...
	
    'events' => [
        'after_receiving_sms' => \App\Events\SMSWasReceived::class,
        'after_delivering_sms' => \App\Events\SMSWasDelivered::class,
    ],
    ...
    

然后您可以在从提供程序获取新挂钩时定义您的操作

扩展

您可以通过实现 Amiriun\SMS\Contracts\StorageInterface 接口并更改 config/sms.php 中的存储类来更改日志存储

贡献

请阅读 CONTRIBUTING.md 了解我们的行为准则以及向我们提交 pull 请求的过程。

版本控制

我们使用 SemVer 进行版本控制。有关可用的版本,请参阅此存储库的 标签

作者

  • Amir Alian - 初始工作 - Amiriun

许可证

本项目受 MIT 许可证的许可 - 有关详细信息,请参阅 LICENSE.md 文件