spiderhit / smsapi
Laravel 包,提供 SMS API 集成。任何提供 REST API 的 SMS 提供商都可以使用。包含 Laravel 通知的 SMS-API 通道。
Requires
- php: >=5.6.4
- guzzlehttp/guzzle: ~6.0
- illuminate/support: >=5.1
Requires (Dev)
- orchestra/testbench: ~3.0
- phpunit/phpunit: ^5.3
This package is auto-updated.
Last update: 2024-09-16 21:56:47 UTC
README
将 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