spiderhit/smsapi

Laravel 包,提供 SMS API 集成。任何提供 REST API 的 SMS 提供商都可以使用。包含 Laravel 通知的 SMS-API 通道。

dev-master 2019-09-16 11:27 UTC

This package is auto-updated.

Last update: 2024-09-16 21:56:47 UTC


README

Packagist Packagist GitHub license

将 SMS API 集成到 Laravel 中

Laravel 包,提供 SMS API 集成。任何提供 REST API 的 SMS 提供商都可以使用。

星标 ⭐ 仓库以示支持 😊

安装

安装包

使用 composer 安装此包

composer require spiderhit/smsapi

添加服务提供者与外观

Laravel 5.5+

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

Laravel 旧版本

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

spiderhit\SmsApi\SmsApiServiceProvider::class,

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

'SmsApi': spiderhit\SmsApi\SmsApiFacade::class,

发布配置

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

php artisan vendor:publish --provider="spiderhit\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() 添加到您的可通知模型

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

默认情况下,您的用户模型使用 Notifiable。

设置通知

添加

use spiderhit\SmsApi\Notifications\SmsApiChannel;

use spiderhit\SmsApi\Notifications\SmsApiMessage;

到您的通知。

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

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

通知示例:

namespace App\Notifications;

use spiderhit\SmsApi\Notifications\SmsApiChannel;
use spiderhit\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();

支持

请在问题区域自由发布您的问题。

鸣谢

Spiderhit 开发

许可证

MIT