我们公司的售后系统需要在接收到客户的售后产品时需要给用户推送一条短信消息,告知用户他的快递我们已经收到会尽快处理客户的售后问题。
2.解决方案 2.1 使用阿里的短信平台服务参考阿里云短信平台:https://help.aliyun.com/product/44282.html?spm=5176.12226203.0.0.f17a1cbeXRbQ9i
2.2 申请短信模板参考阿里云短信凭条的短信模板说明和申请流程:https://dysms.console.aliyun.com/dysms.htm?spm=5176.2020520169.nav-right.2.2ae375bd55tlb0#/domestic/text/sign
2.2.1 无参数模板简单的理解就是用户收的短信内容不能定制。在阿里云申请模板是什么样子的那么用户收到的信息也就是什么样子的。
2.2.2 有参数模板简单的理解就是用户收到的信息是我们可以一定程度上定制。我们在阿里云平台上申请短信模板时会设置一些我们预先设置好占位符,在真正的使用模板发送短信时我们用我肯需要的字符来替换我们预先设置的占位符达到短信定制效果。
举个例就是我们经常受到一些短信验证码的信息,那么发短息的平台就是使用的有参数的短信模板来给用户发信息的。
短信签名是调用api时必填的参数。短信签名会出现在用户收到的短信的最前面,简单的理解可以认为是让用户知道是那个公司给他发送的短信。
2.4 accessKeyId和accessSecretaccessKeyId和accessSecret是我们在调用api时必填的参数。另外accessKeyId和accessSecret拥有该账号的所有权限,一定要做好保密措施。
2.5 调试 2.5.1 阿里在先调试平台阿里提供了一个在线调试工具,参考地址:https://api.aliyun.com/new?spm=a2c4g.11186623.2.13.5b0119d9PGJKeD#/?product=Dysmsapi&version=2017-05-25&api=SendSms&tab=DEMO&lang=JAVA
这里有点小问题:阿里提供的的Demo里面的对应的方法没有点进实现类里面才发现方法写错了。CommonRequest类里面的setSysXXX的时候应该是setXXX。已经提工单给到阿里。
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "Gvi5XXXXXXXbMeos", "EBsOb3m98pXXXXXXXx0DajvwSsTIJVF"); IAcsClient client = new DefaultAcsClient(profile); CommonRequest request = new CommonRequest(); request.setMethod(MethodType.POST); request.setDomain("dysmsapi.aliyuncs.com"); request.setVersion("2017-05-25"); request.setAction("SendSms"); request.putQueryParameter("RegionId", "cn-hangzhou"); request.putQueryParameter("PhoneNumbers", PhoneNumbers); request.putQueryParameter("SignName", "火火兔售后"); request.putQueryParameter("TemplateCode", "SMS_18794XXXXX"); request.putQueryParameter("TemplateParam", "{"maintenanceCosts":" + maintenanceCosts + "}"); try { CommonResponse response = client.getCommonResponse(request); } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); } 2.6 最终效果