diereysaa / 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|^11.0
Requires (Dev)
- orchestra/testbench: ~3.0|^8.0|^9.0
- phpunit/phpunit: ^5.3|^9.5.10|^10.5
This package is auto-updated.
Last update: 2024-09-25 20:29:58 UTC
README
将短信API集成到Laravel中
Laravel短信API集成包。任何提供REST API的短信供应商都可以使用。
Star ⭐ 仓库以表示支持 😊
安装
安装包
使用composer要求此包
composer require gr8shivam/laravel-sms-api
添加服务提供者 & Facade
对于Laravel 5.5+
一旦添加了包,服务提供者和facade将自动发现。
对于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
facade发送消息。
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 facade
-
基本用法
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