gr8shivam/laravel-sms-api

Laravel短信API集成包。任何提供REST API的短信供应商都可以使用。还包括Laravel通知的SMS-API通道。

3.0.6 2023-03-13 20:52 UTC

This package is auto-updated.

Last update: 2024-09-14 00:18:51 UTC


README

Packagist Packagist GitHub license

将SMS API集成到Laravel中

Laravel短信API集成包。任何提供REST API的短信供应商都可以使用。

星标 ⭐ 仓库以表示支持 😊

安装

安装包

使用composer安装此包

composer require gr8shivam/laravel-sms-api

添加服务提供者与外观

对于Laravel 5.5+

添加包后,服务提供者和外观将被自动发现。

对于旧版本的Laravel

将ServiceProvider添加到config/app.php中的providers数组中

Gr8Shivam\SmsApi\SmsApiServiceProvider::class,

将Facade添加到config/app.php中的aliases数组中

'SmsApi': Gr8Shivam\SmsApi\SmsApiFacade::class,

发布配置

完成后,使用以下命令将配置发布到您的配置文件夹

php artisan vendor:publish --provider="Gr8Shivam\SmsApi\SmsApiServiceProvider"

配置

配置文件发布后,打开config/sms-api.php

全局配置

country_code : 默认国家代码

default : 默认网关

网关配置

可以定义多个网关配置,如下所示:

//    Gateway Configuration
    'gateway_name' => [
        'method' => 'GET', //Choose Request Method (GET/POST) Default:GET
        'url' => 'BaseUrl', //Base URL
        'params' => [
            'send_to_param_name' => '', //Send to Parameter Name
            'msg_param_name' => '', //Message Parameter Name
            'others' => [
                'param1' => '',
                'param2' => '',
                'param3' => '',
                //More params can be added
            ],
        ],
        'headers' => [
            'header1' => '',
            'header2' => '',
            //More headers can be added
        ],
//        'json' => true, // OPTIONAL: Use if you want the params to be sent in JSON format instead of query params (accepts true/false)
//        'wrapper' => 'wrapper_name', // OPTIONAL: Use only if you want the JSON request to be wrapped (accepts string)
        'add_code' => true, //Include Country Code (true/false)
    ],

网关配置中的特殊参数

json 参数

json 参数接受true/false。当为true时,将params作为JSON负载发送。它还负责设置'Content-Type' => 'application/json'头。

jsonToArray 参数

jsonToArray 参数接受true/false。当为true时,在JSON负载中将单个手机号码封装在数组中发送。当为false时,单个手机号码以文本形式发送。仅在json参数为true时有效。

wrapper 参数

wrapper 是一个特殊参数,仅在部分网关中需要。它将JSON负载包装在以下结构中

"wrapper_name": [
    {
      "message": "Message",
      "to": [
        "Receipient1",
        "Receipient2"
      ]
    }
  ]
wrapperParams 参数

接受数组。用于添加自定义包装器参数。也可以在调用smsapi()函数时添加参数,如smsapi()->addWrapperParams(['wrapperParam1'=>'paramVal'])->sendMessage("TO", "Message")

用法

直接使用

使用smsapi()辅助函数或SmsApi外观发送消息。

TO:单个手机号码或多个以逗号分隔的手机号码

MESSAGE:要发送的消息

使用辅助函数

  • 基本用法 smsapi("TO", "Message");smsapi()->sendMessage("TO","MESSAGE");

  • 添加额外参数 smsapi("TO", "Message", ["param1" => "val"]);smsapi()->sendMessage("TO", "Message", ["param1" => "val"]);

  • 添加额外头 smsapi("TO", "Message", ["param1" => "val"], ["header1" => "val"]);smsapi()->sendMessage("TO", "Message", ["param1" => "val"], ["header1" => "val"]);

  • 使用不同网关 smsapi()->gateway('GATEWAY_NAME')->sendMessage("TO", "Message");

  • 使用不同国家代码 smsapi()->countryCode('COUNTRY_CODE')->sendMessage("TO", "Message");

  • 向多个手机发送消息 smsapi(["Mobile1","Mobile2","Mobile3"], "Message");smsapi()->sendMessage(["Mobile1","Mobile2","Mobile3"],"MESSAGE");

使用SmsApi外观

  • 基本用法 SmsApi::sendMessage("TO","MESSAGE");

  • 添加额外参数 SmsApi::sendMessage("TO", "Message", ["param1" => "val"]);

  • 添加额外头部 SmsApi::sendMessage("TO", "Message", ["param1" => "val"], ["header1" => "val"]);

  • 使用不同的网关 SmsApi::gateway('GATEWAY_NAME')->sendMessage("TO", "Message");

  • 使用不同的国家代码 SmsApi::countryCode('COUNTRY_CODE')->sendMessage("TO", "Message");

  • 向多个手机发送消息 SmsApi::sendMessage(["Mobile1","Mobile2","Mobile3"],"MESSAGE");

用于通知

设置通知的路由

将方法 routeNotificationForSmsApi() 添加到你的 Notifiable 模型中

public function routeNotificationForSmsApi() {
        return $this->phone; //Name of the field to be used as mobile
    }    

默认情况下,你的 User 模型使用 Notifiable。

设置通知

添加

use Gr8Shivam\SmsApi\Notifications\SmsApiChannel;

use Gr8Shivam\SmsApi\Notifications\SmsApiMessage;

到你的通知。

你可以使用 php artisan make:notification NOTIFICATION_NAME 创建一个新的通知

在你的通知中的 via 函数内,添加 return [SmsApiChannel::class]; 并添加一个新的函数 toSmsApi($notifiable) 以返回消息体和参数。

通知示例:

namespace App\Notifications;

use Gr8Shivam\SmsApi\Notifications\SmsApiChannel;
use Gr8Shivam\SmsApi\Notifications\SmsApiMessage;
use Illuminate\Notifications\Notification;

class ExampleNotification extends Notification
{
    public function via($notifiable)
    {
        return [SmsApiChannel::class];
    }
    
    public function toSmsApi($notifiable)
    {
        return (new SmsApiMessage)
            ->content("Hello");
    }
}

你还可以使用 ->params(["param1" => "val"]) 添加额外的参数到请求中,以及使用 ->headers(["header1" => "val"]) 添加额外的头部到请求中。

获取响应

你可以使用 ->response() 获取响应,或者使用 ->getResponseCode() 获取响应代码。例如,smsapi()->sendMessage("TO","MESSAGE")->response();

支持

请随意在问题部分发布你的问题。

致谢

Shivam Agarwal 开发

感谢 laravel-ovh-sms & softon-sms

许可

MIT