1.开通阿里短信服务
2.获取AK
在这个没钱寸步难行的时代,只要你有银子,你就能获取AK。如下图
这两个参数后边调用接口会用到。此刻,请客官稳住,别慌。
3.配置签名
短信签名是个啥?
见过这玩意吧。听我说,流量日提醒 就是签名。有没有茅塞这么一顿开。
不过这玩意咋设置呢?
- 登录短信服务控制台。
- 在左侧导航栏中单击国内短信。
- 在签名管理页签右上角单击添加签名。
- 填写签名、适用场景等必选信息。
- 填写业务说明。业务说明是签名审核的参考信息之一,请详细描述签名的用途、 场景等信息,信息完善的业务说明会提高签名的审核效率。
- 单击确定。单击确定后自动提交审核。
4.撸代码
//可自助调整超时时间
System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
System.setProperty("sun.net.client.defaultReadTimeout", "10000");
//初始化acsClient,暂不支持region化
IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
IAcsClient acsClient = new DefaultAcsClient(profile);
//组装请求对象-具体描述见控制台-文档部分内容
SendSmsRequest request = new SendSmsRequest();
//必填:待发送手机号
request.setPhoneNumbers(telephone);
//必填:短信签名-可在短信控制台中找到
request.setSignName("大秦上天公司"); // TODO 修改成自己的
//必填:短信模板-可在短信控制台中找到
request.setTemplateCode("SMS_65535"); // TODO 修改成自己的
//可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
request.setTemplateParam("我司领导真的是个大混子,大秦工业的通信研究生,给哥哥说他擅长前端,哎,屁都不会,一点不吹,上林苑四路的选手");
//选填-上行短信扩展码(无特殊需求用户请忽略此字段)
//request.setSmsUpExtendCode("90997");
//可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
request.setOutId("yourOutId");
//hint 此处可能会抛出异常,注意catch
SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
if(sendSmsResponse.getCode()!= null && sendSmsResponse.getCode().equals("OK")){
log.info("短信发送成功!");
}else {
log.info("短信发送失败!");
}
这是官方给的案例稍作修改
发发牢骚
这个功能是添加在物联网平台中,终端报警时给响应管理人员发送短信通知。需要添加到一个Eclipse 开发的 SSM的项目中,木有Maven,只有jar。需要导入的jar
问题来了。
//初始化acsClient,暂不支持region化
IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
在这块,在我描述的项目情况下,报错了。坑呀
需要Gson撒。。。
还有一个插曲,我司给一家客户当枪去给国字头运营商演示,要改
//必填:短信签名-可在短信控制台中找到
request.setSignName("大秦上林苑四路办事处"); // TODO 修改成自己的名号
我屁颠屁颠的改了。结果懵逼了,终端报警了,短信呢!短信呢!短信呢!
后来经本人一步一步排查,才注意到上边的注释,是签名呀。
物联网平台加入短信提醒其实还是不错的。
今天表演结束!客观有事的仍银子砸我。