ashik/adn-sms

Laravel Adn SMS 服务

v1.0.0 2024-08-04 13:48 UTC

This package is auto-updated.

Last update: 2024-09-04 14:27:12 UTC


README

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

安装

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

composer require ashik/adn-sms

Laravel

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

php artisan vendor:publish --tag=adn-sms-config

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

配置

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

服务启用/禁用

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

用法

单个短信

向单个接收者发送单个短信。

use Ashik\AdnSms\Facades\AdnSms;

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

OTP短信

向单个接收者发送OTP短信。

use Ashik\AdnSms\Facades\AdnSms;

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

        return $response->json();
    }
}

批量短信

向多个接收者发送单个短信。

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

use Ashik\AdnSms\Facades\AdnSms;

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

队列短信发送(Laravel)

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

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

class SmsController
{
    public function bulk()
    {
        AdnSms::bulk(['019XXXXXXXXX', '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应用程序中创建一个可排队的工作,以执行类似操作。从您的作业中调用send()方法,并进一步处理返回的响应。

检查余额

use Ashik\AdnSms\Facades\AdnSms;

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

检查短信状态

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

use Ashik\AdnSms\Facades\AdnSms;

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

检查活动状态

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

use Ashik\AdnSms\Facades\AdnSms;

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

许可

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