rahulhaque/adn-sms

ADN SMS网关API包,适用于Laravel。

v1.1.2 2022-06-02 10:18 UTC

This package is auto-updated.

Last update: 2024-08-29 05:55:58 UTC


README

Latest Version on Packagist Total Downloads

ADN SMS网关API包,适用于Laravel。

安装

您可以通过composer在您的Laravel或Lumen应用程序中安装此包。

composer require rahulhaque/adn-sms

Laravel

发布配置文件config/adn-sms.php,您可以在其中调整一些默认选项。

php artisan vendor:publish --provider="RahulHaque\AdnSms\AdnSmsServiceProvider"

.env文件中定义您的ADN_SMS_KEYADN_SMS_SECRET,或者更新应用程序的config/adn-sms.php文件。

Lumen

Laravel预装了Guzzle HTTP客户端,但是Lumen没有。由于此包依赖于它来执行API调用,因此请安装guzzle。

composer require guzzlehttp/guzzle

通过在bootstrap/app.php文件中取消注释$app->withFacades();调用,在您的Lumen应用程序中启用使用Facades

bootstrap/app.php文件的Register Service Providers部分中注册服务提供程序。

$app->register(RahulHaque\AdnSms\AdnSmsServiceProvider::class);

在应用程序的.env文件中定义您的ADN_SMS_KEYADN_SMS_SECRET

或者通过将vendor/rahulhaque/adn-sms/config/adn-sms.php文件复制到Lumen应用程序的config/adn-sms.php中来发布配置。如果不存在,请创建目录。在bootstrap/app.php文件的Register Configuration Files部分中注册配置。

$app->configure('adn-sms');

配置

首先查看./config/adn-sms.php以了解所有开箱即用的选项。以下是一些重要的选项。

服务启用/禁用

您可以从配置文件中轻松关闭整个服务以及任何API调用。如果API出现故障或进行维护,则很有用。请记住,如果在配置文件中将enabled设置为false,则响应体始终为空字符串$response->body() = ""

使用

单条短信

向单个收件人发送单条短信。

use RahulHaque\AdnSms\Facades\AdnSms;

class SomeController
{
    /**
     * Make request and return response
     *
     * @return \Illuminate\Http\Client\Response
     * @throws \Throwable
     */
    public function someFunction()
    {
        $response = AdnSms::to('01XXXXXXXXX')
            ->message('Send SMS Test.')
            ->send();
        
        return $response->json();
    }
}

OTP短信

向单个收件人发送OTP短信。

use RahulHaque\AdnSms\Facades\AdnSms;

class SomeController
{
    /**
     * Make request and return response
     *
     * @return \Illuminate\Http\Client\Response
     * @throws \Throwable
     */
    public function someFunction()
    {
        $response = AdnSms::otp('01XXXXXXXXX')
            ->message('Send OTP SMS Test.')
            ->send();

        return $response->json();
    }
}

批量短信

向多个收件人发送单条短信。

批量短信发送需要campaignTitle()作为必填项。

use RahulHaque\AdnSms\Facades\AdnSms;

class SomeController
{
    /**
     * Make request and return response
     *
     * @return \Illuminate\Http\Client\Response
     * @throws \Throwable
     */
    public function someFunction()
    {
        $response = AdnSms::bulk(['01XXXXXXXXX', '02XXXXXXXXX'])
            ->campaignTitle('Bulk SMS Test')
            ->message('Send Bulk SMS Test.')
            ->send();
        
        return $response->json();
    }
}

Laravel队列短信发送

您还可以队列短信发送。您可以在queue()方法中传递一个回调函数来接收API调用的响应并进一步处理它。如果您想在队列执行后保存响应到数据库中,这非常有用。请参阅示例以获取更详细的信息。

use RahulHaque\AdnSms\Facades\AdnSms;
use Illuminate\Http\Client\Response;
use App\Models\Table;

class SomeController
{
    public function someFunction()
    {
        AdnSms::bulk(['01XXXXXXXXX', '02XXXXXXXXX'])
            ->campaignTitle('Bulk SMS Test')
            ->message('Send Bulk SMS Test.')
            ->queue(function (Response $response) {
                // Check if the response body is empty
                if ($response->body() != "") {
                    // Store the $response in the database
                    $model = new Table();
                    $model->data = $response->body();
                    $model->save();
                }
            });
    }
}

请勿忘记运行php artisan queue:work

重要:由于Lumen不支持队列可关闭,因此queue()方法在Lumen中不可用。但是,您可以在您的Lumen应用程序中创建一个可队列的任务来执行类似操作。从您的任务中调用send()方法并进一步处理返回的响应。

检查余额

use RahulHaque\AdnSms\Facades\AdnSms;

class SomeController
{
    /**
     * Make request and return response
     *
     * @return \Illuminate\Http\Client\Response
     * @throws \Throwable
     */
    public function someFunction()
    {
        $response = AdnSms::checkBalance();
        
        return $response->json();
    }
}

检查短信状态

要检查已发送短信的状态,只需使用短信UID调用checkSmsStatus()方法即可。

use RahulHaque\AdnSms\Facades\AdnSms;

class SomeController
{
    /**
     * Make request and return response
     *
     * @return \Illuminate\Http\Client\Response
     * @throws \Throwable
     */
    public function someFunction()
    {
        $response = AdnSms::checkSmsStatus('SXXXXXXXXXXXXXXXX');
        
        return $response->json();
    }
}

检查活动状态

要检查已发送短信活动的状态,只需使用活动UID调用checkCampaignStatus()方法即可。

use RahulHaque\AdnSms\Facades\AdnSms;

class SomeController
{
    /**
     * Make request and return response
     *
     * @return \Illuminate\Http\Client\Response
     * @throws \Throwable
     */
    public function someFunction()
    {
        $response = AdnSms::checkCampaignStatus('CXXXXXXXXXXXXXXXX');
        
        return $response->json();
    }
}

其他选项

您还可以通过调用key()secret()方法在运行时设置ADN SMS密钥和密钥,这将覆盖配置文件中的设置。还有一个format()方法,可以将消息格式设置为TEXT|UNICODE

测试

tests/Feature/AdnSmsTest.php中设置收件人号码并运行。

composer test

变更日志

请参阅变更日志以获取有关最近更改的更多信息。

贡献

请参阅贡献指南以获取详细信息。

安全性

如果您发现任何安全相关的问题,请通过电子邮件发送到rahulhaque07@gmail.com,而不是使用问题跟踪器。

致谢

许可证

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