🇨🇳 Shenzhen,China・🕹Web developer
如果你喜欢我的项目并想支持我,点击这里 ❤️
📲 一款满足你的多种发送需求的短信发送组件
License: MIT License
🇨🇳 Shenzhen,China・🕹Web developer
如果你喜欢我的项目并想支持我,点击这里 ❤️
首先问一下,该库定位是不是可以同时使用多家服务商发送短信?
其次,再问一下,如何处理每一家服务商对应的模板ID不同的问题(如果是这家服务商需要采用模板发送短信)的?
我想,关于模板ID的处理好像有点问题吧
使用模板代码发送短信测试的时候报错:
Overtrue\EasySms\Exceptions\InvalidArgumentException with message 'Gateway "Overtrue\EasySms\Gateways\TencentGateway" not exists.'
这里面的TencentGateway 不应该是QcloundGateway嘛
\Overtrue\EasySms\Gateways\HuaxinGateway::send
'mobile' => $to,
这里手机号没有转成字符串形式
当前阿里云短信的版本为:MNS PHP SDK V1.3.5
https://help.aliyun.com/document_detail/32381.html?spm=5176.doc51929.6.685.XpRxws
请问超哥,easy-sms对阿里云的支持只到1.0呢?
如题。
阿里云的国际短信发送,直接执行可以发送成功,但是通过队列执行就会发送失败,下面是记录的错误
[2018-05-23 08:26:25] local.INFO: ***国际短信错误记录***
[2018-05-23 08:26:25] local.INFO: 手机号码:********
[2018-05-23 08:26:25] local.INFO: 国际冠码:1
[2018-05-23 08:26:25] local.INFO: 发送数据:{"code":"4114"}
[2018-05-23 08:26:25] local.INFO: {"aliyun":{"status":"failure","exception":{}}}
[2018-05-23 08:26:25] local.INFO: ====短信发送错误记录结束===
并没有任何的 Exception 内容返回,请教下这个问题怎么解决?
大神, 我想问下,如果我要自己扩展一个网关,但是我又不想写到你的包里,我该怎么操作,网关我已经写好了,继承了Gateway,但是,我不知道怎么注册它?
如果这样,我就可以在项目中引用了。
不想直接用dev-master版本。
同样内容的一条短信, 在不同平台下的模板id是不同的, 这种情况下应该怎么处理?
运行页面报错
cURL error 60: SSL certificate problem: self signed certificate in certificate chain (seehttp://curl.haxx.se/libcurl/c/libcurl-errors.html)
controller
$this->easySms->send('*****', [
'content' => '您请求的验证码为: ' . $this->phoneCodeService->phoneCode($request->input('phone_number'))
]);
easy-sms.php
return [
// HTTP 请求的超时时间(秒)
'timeout' => 5.0,
// 默认发送配置
'default' => [
// 网关调用策略,默认:顺序调用
'strategy' => \Overtrue\EasySms\Strategies\OrderStrategy::class,
// 默认可用的发送网关
'gateways' => [
'chuanglan'
],
],
// 可用的网关配置
'gateways' => [
'errorlog' => [
'file' => '/tmp/easy-sms.log',
],
'chuanglan' => [
'username' => env('CHUANGLAN_USERNAME'),
'password' => env('CHUANGLAN_PASSWORD'),
],
],
];
比如阿里云的要求➕地区码
腾讯要求 不能+地区码
如何兼容
包含 PR #75
谢谢。
用的是阿里云的短信服务,同一个手机号码,上午可以正常发送并且接受到短信。
然后到晚上发送这个手机 就会报错,别的手机号码是正常的
NoGatewayAvailableException in Messenger.php line 88:
All the gateways have failed.
\Overtrue\EasySms\Gateways\HuaxinGateway::send
'mobile' => $to, // 这里手机号没有转成字符串形式
加载了控件,输入相关配置
$config = [
// HTTP 请求的超时时间(秒)
'timeout' => 5.0,
// 默认发送配置
'default' => [
// 网关调用策略,默认:顺序调用
'strategy' => \Overtrue\EasySms\Strategies\OrderStrategy::class,
// 默认可用的发送网关
'gateways' => [
'alidayu'
],
],
// 可用的网关配置
'gateways' => [
// 'errorlog' => [
// 'file' => '',
// ],
'alidayu' => [
'app_key' => '',//阿里云账号access key
'app_secret' => '', //阿里云账号access secret
'sign_name' => '',//通过审核的一个签名
],
],
];
$easySms = new EasySms($config);
//dd($easySms);
$message = [
'template' => 'SMS_XXXXX', //通过审核的一个模板id
'data' => [
'name' => $name, //一个参数
],
];
$result = $easySms->send(13888888888, $message);
得到的返回数据是:
{"code":11,"msg":"Insufficient isv permissions","sub_code":"isv.permission-api-package-limit","sub_msg":"scope ids is 11022 11600 11863","request_id":"iv15fxmtv8z6"}
调试了很久不太好使,我尝试了阿里大鱼自带的一个demo,也是用以上的配置,该复制的复制。发送短信没有问题。
同时,注意到人家给的demo里面,有这么几个参数:
//短信API产品名
$product = "Dysmsapi";
//短信API产品域名
$domain = "dysmsapi.aliyuncs.com";
然后阿里大鱼的配置项里面的是:
const ENDPOINT_URL = 'https://eco.taobao.com/router/rest';
const ENDPOINT_METHOD = 'alibaba.aliqin.fc.sms.num.send';
还是挺想用这个插件的~但是可能是我用的方法不太对?希望有人能指导一下
I am working on it.
Client error: POST http://sms.bj.baidubce.com/bce/v2/message
resulted in a 401 Unauthorized
response
同样的配置使用另外一个包可以发送成功。
用以返回当前网关的名字。
建议把短信平台的URL也放到配置文件里。因为好多公司都用的是二级代理(比如我们公司),虽然也是创蓝的文档,但是请求的地址却不是同一个。
文档 60行 少了个逗号
83行处格式错乱
我注册submail,只有appkey appid ,project是什么呢?
当 SendCloud 使用模板无变量替换时,发送参数 vars 为字符串 "vars" => "[]"
导致 SendCloud 报错:替换变量格式错误。
可考虑过滤掉空值 或 为空情况下 formatTemplateVars
返回数组:
if (empty($vars)) {
return $formatted;
}
由于历史问题,发送不同的通知短信,使用了不同的模板,以及不一样的签名。不同的 gateway 也可能签名不同。
Could not find package overtrue/easy-sms at any version for your minimum-stability (stable). Check the package spelling or your minimum-stability
官方把阿里通信合并到阿里云-消息服务里了(MNS)。
EndPoint之类的都给换了。
所以,即使所有的配置都正确,也是会提示“未开通云通信产品的阿里云客户”。
消息服务发送短信的文档:
https://help.aliyun.com/document_detail/51929.html?spm=5176.doc27509.6.672.9NPaVl
我现在使用的阿里云,出现 All the gateways have failed. 我打印出错误信息是请求频繁了,有没有方便的方法获取这个错误信息?
{"aliyun":{"status":"failure","exception":{"raw":{"Message":"触发小时级流控Permits:5","RequestId":"A324EFD4-3162-4354-9D39-24AE4EE6871F","Code":"isv.BUSINESS_LIMIT_CONTROL"}}}}
我现在打印这个信息是 return $e->results;如果我只想获取Message 信息要怎么做 是不是所有的短信通道都可以这么获取?
我现在知道怎么去发送国际短信了 但是我现在不知道怎么去兼容。比如Qcloud 需要再data里加一个nationcode,mobile不带国家地区号,但是阿里云的在mobile里带国家地区号 ,我应该怎么兼容呢
$data = [
'content' => '【签名】您的验证码是:'.$rand,
'template' => 'SMS_133969095',
'data' => [
'code' => $rand,
' '=>'00852',
],
];
$mobile = '00000000';
我现在这样配置 Qcloud可以发送,但是阿里云就失败了
如题
https://www.253.com/api-docs-97
接口文档显示用户名和密码参数应该是account和password
我看你源码里面是un和pw
我注意到 Messenger->send() 返回的是一个数组,包含了每次不同的gateway请求的结果。
是否考虑所有gateway全部返回失败时,抛出特定异常给业务层捕获?
毕竟有重试、或者随机取的机制,不抛异常的话,业务层很难确定所有接口均调用失败的情况(不知道是哪个key)
GuzzleHttp\Exception\ClientException #400
Client error: POST https://sms.yunpian.com/v2/sms/single_send.json
resulted in a 400 Bad Request
response
现在用lumen 做接口开发 能支持吗?
Hello,你好。
云信使,sms.cn。
请问有没有什么注意事项,当我提交PR的时候?
另外,我将要添加的RongcloudGateway中,默认是发送短信功能。不过,通过在data[]中添加action扩展额外的功能,比如验证短信验证的正确性,因为这个是由融云接口提供的,不知道这样有没有违背框架库的东西?
SendCloud 服务端时间戳为 13 位 JS 时间戳,所以 SendCloud 发送时会返回:时间戳无效,与服务器时间超过60000毫秒。
SendCloud 文档提示需要通过接口获取时间戳:http://www.sendcloud.net/smsapi/timestamp/get
故可以考虑注释掉 SendcloudGateway.php 46 行 或者 补全 13 位时间戳。
easy-sms/src/Gateways/QcloudGateway.php
Line 59 in 250be87
配置阿里大于信息的时候一直找不到拿到app key 的地方,问了大于的客服才知道,阿里大于已被整合到阿里云的云通信里,新注册用户无法登陆老的阿里大于平台。
提个issue记录一下这个坑,或是请教一下作者有没有可以兼容的办法😁
RT
按照文档配置好了,就是不行,目前用的是阿里官方的sdk,想用这个扩展包,但是不知道哪里出了问题,config都正确配置了,template和data也写了,就是不行呢...
如题,修改了HasHttpRequest getBaseOptions 自己解决了,请问有什么更好的方法。
protected function getBaseOptions()
{
$options = [
'base_uri' => method_exists($this, 'getBaseUri') ? $this->getBaseUri() : '',
'timeout' => property_exists($this, 'timeout') ? $this->timeout : 5.0,
'verify' => false,
];
return $options;
}
$number = new PhoneNumber(13188888888, 00);
try {
$result = $easySms->send( $number, [
// 'content' => '您的验证码为: 6379',
'template' => 'SMS_136335001',
'data' => [
'status' => 'status-test',
'remark' => 'remark-test',
]]
);
Request for another new release.
#61 包含这次提交内容的版本。
不应该是 :
return new GatewayErrorException($e->getMessage(), $e->getCode());
应当是:
throw new GatewayErrorException($e->getMessage(), $e->getCode());
我会在稍后提交一个PR,修复它。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.