PHP code example of toplan / phpsms
1. Go to this page and download the library: Download toplan/phpsms library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
toplan / phpsms example snippets
composer
composer
//example:
Sms::config([
'Luosimao' => [
'apikey' => 'your api key',
'voiceApikey' => 'your voice api key',
],
'YunPian' => [
'apikey' => 'your api key',
],
'SmsBao' => [
'username' => 'your username',
'password' => 'your password'
]
]);
//example:
Sms::scheme([
//被使用概率为2/3
'Luosimao' => '20',
//被使用概率为1/3,且为备用代理器
'YunPian' => '10 backup',
//仅为备用代理器
'SmsBao' => '0 backup',
]);
use Toplan\PhpSms\Sms;
// 接收人手机号
$to = '1828****349';
// 短信模版
$templates = [
'YunTongXun' => 'your_temp_id',
'SubMail' => 'your_temp_id'
];
// 模版数据
$tempData = [
'code' => '87392',
'minutes' => '5'
];
// 短信内容
$content = '【签名】这是短信内容...';
// 只希望使用模板方式发送短信,可以不设置content(如:云通讯、Submail、Ucpaas)
Sms::make()->to($to)->template($templates)->data($tempData)->send();
// 只希望使用内容方式发送,可以不设置模板id和模板data(如:短信宝、云片、luosimao)
Sms::make()->to($to)->content($content)->send();
// 同时确保能通过模板和内容方式发送,这样做的好处是可以兼顾到各种类型服务商
Sms::make()->to($to)
->template($templates)
->data($tempData)
->content($content)
->send();
// 语音验证码
Sms::voice('02343')->to($to)->send();
// 语音验证码兼容模版语音(如阿里大鱼的文本转语音)
Sms::voice('02343')
->template('Alidayu', 'your_tts_code')
->data(['code' => '02343'])
->to($to)
->send();
//服务提供器
'providers' => [
...
Toplan\PhpSms\PhpSmsServiceProvider::class,
]
//别名
'aliases' => [
...
'PhpSms' => Toplan\PhpSms\Facades\Sms::class,
]
php artisan vendor:publish
PhpSms::make()->to($to)->content($content)->send();
Sms::scheme([
'SmsBao' => '80 backup'
'YunPian' => '100 backup'
]);
//或
Sms::scheme('SmsBao', '80 backup');
Sms::scheme('YunPian', '100 backup');
//获取所有的调度方案:
$scheme = Sms::scheme();
//获取指定代理器的调度方案:
$scheme['SmsBao'] = Sms::scheme('SmsBao');
Sms::config([
'SmsBao' => [
'username' => ...,
'password' => ...,
]
]);
//或
Sms::config('SmsBao', [
'username' => ...,
'password' => ...,
]);
//获取所有的配置:
$config = Sms::config();
//获取指定代理器的配置:
$config['SmsBao'] = Sms::config('SmsBao');
Sms::beforeSend(function($task, $index, $handlers, $prevReturn){
//获取短信数据
$smsData = $task->data;
...
//如果返回false会终止发送任务
return true;
});
Sms::beforeAgentSend(function($task, $driver, $index, $handlers, $prevReturn){
//短信数据:
$smsData = $task->data;
//当前使用的代理器名称:
$agentName = $driver->name;
//如果返回false会停止使用当前代理器
return true;
});
Sms::afterAgentSend(function($task, $agentResult, $index, $handlers, $prevReturn){
//$result为代理器的发送结果数据
$agentName = $agentResult['driver'];
...
});
Sms::afterSend(function($task, $taskResult, $index, $handlers, $prevReturn){
//$result为发送后获得的结果数组
$success = $taskResult['success'];
...
});
//自动启用队列
Sms::queue(function($sms, $data){
//define how to push to queue.
...
});
//第一个参数为true,启用队列
Sms::queue(true, function($sms, $data){
//define how to push to queue.
...
});
//第一个参数为false,暂时关闭队列
Sms::queue(false, function($sms, $data){
//define how to push to queue.
...
});
Sms::queue(true);//开启队列
Sms::queue(false);//关闭队列
$enable = Sms::queue();
//为true,表示当前启用了队列。
//为false,表示当前关闭了队列。
$sms = Sms::make();
//创建实例的同时设置短信内容:
$sms = Sms::make('【签名】这是短信内容...');
//创建实例的同时设置短信模版:
$sms = Sms::make('YunTongXun', 'your_temp_id');
//或
$sms = Sms::make([
'YunTongXun' => 'your_temp_id',
'SubMail' => 'your_temp_id',
...
]);
$sms = Sms::voice();
//创建实例的同时设置验证码
$sms = Sms::voice($code);
$sms->to('1828*******');
//兼容腾讯云
$sms->to([86, '1828*******'])
//设置指定服务商的模板id
$sms->template('YunTongXun', 'your_temp_id')
->template('SubMail', 'your_temp_id');
//一次性设置多个服务商的模板id
$sms->template([
'YunTongXun' => 'your_temp_id',
'SubMail' => 'your_temp_id',
...
]);
//单个数据
$sms->data('code', $code);
//同时设置多个数据
$sms->data([
'code' => $code,
'minutes' => $minutes
]);
$sms->content('【签名】这是短信内容...');
$sms->file('Agent1', 'agent1_file_id')
->file('Agent2', 'agent2_file_id');
//或
$sms->file([
'Agent1' => 'agent1_file_id',
'Agent2' => 'agent2_fiile_id',
]);
$sms->params('Agent1', [
'callbackUrl' => ...,
'userData' => ...,
]);
//或
$sms->params([
'Agent1' => [
'callbackUrl' => ...,
'userData' => ...,
],
'Agent2' => [
...
],
]);
[
'type' => ...,
'to' => ...,
'templates' => [...],
'data' => [...], // template data
'content' => ...,
'code' => ..., // voice code
'files' => [...], // voice files
'params' => [...],
]
$sms->agent('SmsBao');
//会遵循是否使用队列
$result = $sms->send();
//忽略是否使用队列
$result = $sms->send(true);
//example:
'Foo' => [
'key' => 'your api key',
...
]
Sms::scheme('agentName', [
'10 backup',
'agentClass' => 'My\Namespace\MyAgentClass'
]);
Sms::scheme([
'agentName' => [
'20 backup',
'sendContentSms' => function($agent, $to, $content){
// 获取配置(如果设置了的话):
$key = $agent->key;
...
// 可使用的内置方法:
$agent->curlGet($url, $params); //get
$agent->curlPost($url, $params); //post
...
// 更新发送结果:
$agent->result(Agent::SUCCESS, true);
$agent->result(Agent::INFO, 'some info');
$agent->result(Agent::CODE, 'your code');
},
'sendVoiceCode' => function($agent, $to, $code){
// 发送语音验证码,同上
}
]
]);