gr8shivam / laravel-sms-api
Laravel短信API集成包。任何提供REST API的短信供应商都可以使用。还包括Laravel通知的SMS-API通道。
Requires
- php: >=5.6.4
- guzzlehttp/guzzle: ~6.0|^7.0
- illuminate/support: ^5.0|^6.0|^7.0|^8.0|^9.0|^10.0
Requires (Dev)
- orchestra/testbench: ~3.0|^8.0
- phpunit/phpunit: ^5.3|^9.5.10
README
将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