记项目的一次发送短信及短信模板配置分享

本文涉及的产品
短信服务,100条 3个月
短信服务,200条 3个月
国际/港澳台短信套餐包,全球plus 100条 6个月
简介: 我们日常使用的软件或者网站,大部分都在使用短信业务,比如 注册 、 验证码功能 。还有一些特定的业务需要发送短信通知国内外用户等。有了需求就会有平台提供服务,国内有很多互联网公司都提供短信业务,比如阿里云、腾讯云、七牛。本次我们主要讲解的是阿里云提供的短信服务。

第一部分:开通短信服务

阿里云的短信服务(Short Message Service)是广大企业客户快速触达手机用户所优选使用的通信能力。调用API或用群发助手,即可发送验证码、通知和推广短信;国内验证短信秒级触达,到达率最高可达99%;国际/港澳台短信覆盖200多个国家和地区,安全稳定,广受海外企业选用。

第一步:登录阿里云官网  控制台中找到短信服务然后开通;

image.png

image.png

第二步:获取AccessKey;

将鼠标置于页面右上方的账号图标,然后单击accesskeys

image.pngimage.pngimage.png

image.pngimage.png

image.pngimage.png

注意:若开通编程访问,请及时保存AccessKey 信息,页面关闭后将无法再次获取信息。

image.png

然后给短信服务配置权限

image.png

image.pngimage.png

至此,短信开通完成;


第二部分创建签名和模板

短信签名:是短信内容的一部分,可以根据业务需求编辑短信签名。

短信模板:是短信内容的一部分,国内消息可以发送验证码、短信通知、推广短信类内容,国际/港澳台消息支持所有类型内容。

注意:不支持个人用户申请未上线业务,若产品未上线建议先 升级企业账号

image.pngimage.png

提交之后等待审核通过即可image.png添加模板注意事项:

格式:

1、限制为1~500个字(含变量)。

2、为避免与签名混淆,在模板内容任意位置均不能使用【】,在模板内容首尾不能使用[]。

3、不支持特殊符号例如# 『』「」〖〗 m² • ①★※→等。

内容:需明确表述短信发送的实际内容

1、禁止发送金融相关的所有内容。

2、地产、留学、招聘、交友、游戏等行业仅支持发送验证码。

3、不支持发送未经许可的信息,主要指邀请注册、邀请成为会员的商业性信息。

4、不支持内容中含有直接或间接访问应用内测分发平台的行为。

5、禁止发送涉及:色情、赌博、毒品、党政、法律维权、众筹等信息。

不同短信类别的变量规范和内容规范:

类别

变量规范

变量规范

验证码

1、在模板中仅支持一个变量。

2、验证码模板变量的实际内容仅支持数字或英文字母。

1、国内短信模板必须包含“验证码、注册码、校验码、动态码(动态密码)”中的任意一个;国际/港澳台短信模板必须包含“code”

2、模板必须体现和说明“使用平台、用途、失效时间”中的任意一种。

3、模板无须说明退订方式相关内容。

4、模板不支持包含与验证码无关的内容,如电话号码、链接、通知内容等。

短信通知

1、同一个变量在模板中仅可出现一次。不支持的模板示例:您家宝贝${name}已经到达${name}现场!

2、可以添加链接,但不支持设置变量链接,如:www.${site}.cn,也不支持短链接与变量直接组合的格式,如:t.cn${code}t.cn为短链接,${code}为变量。

允许设置的格式为官网链接与变量拼接,如:www.aliyun.com${code}。请注意,对于具体的url,审核专员会进行审核,审核通过才可以使用。

1、除公共规范外,另不支持在短信通知中发送营销内容。

2、模板无须说明退订方式相关内容。

推广短信

不支持变量。

1、模板结尾处必须说明退订方式,仅支持设置回复“TDTN”中的任意一种退订短信,回复其他内容无效。

2、除公共规范外,另不支持向非会员用户发送营销内容。

3、营销内容需体现在模板内,禁止发送加微信送礼品等营销内容不清晰的内容。

添加模板步骤:国内短信 --> 模板管理 --> 添加模板  -->提交审核 --> 审核通过。

image.pngimage.png

image.png

至此,签名、模板创建完成;


第三部分:数据库模板配置

申请短信模板并通过之后,会生成以SMS开头的短信模板的code如下图所示,我们需要给模板code配置到我们数据库中。

image.png

数据库表:

image.png

字段说明:

image.png

Language:可以区分是国内短信和国外短信。

exhibition_id:可以根据活动ID进行短信模板数据隔离。

out_template_code:短信模板审核通过后的code

msg_send_type:发送短信的场景。


第四部分:短信代码示例

配置类:短信签名、短信的accessKeyId、短信的accessKeySecret、短信的RegionId、短信发送域名等。

异步发送信息:

publicBooleansendAsyncMessageNew(MessageSendParamparam) {
Stringmsg=JSONObject.toJSONString(param, SerializerFeature.WriteMapNullValue,SerializerFeature.DisableCircularReferenceDetect);
returnsendMqMessage(msg, MqMessageTagConstants.TAG_SEND_NEW_MSG);
}

发送rocketMq消息,将需要发送短息的记录发送到mq,代码读取mq信息实现短信发送:

privateBooleansendMqMessage(Stringmsg, Stringtag){
Messagemessage=newMessage(mqConfig.getSendMessageTopic(), tag, msg.getBytes());
try{
SendResultsendResult=producer.send(message);
if(null!=sendResult){
valueOperations.set(sendResult.getMessageId(), 1);
log.info("系统消息异步发送成功,MQ消息ID:{}", sendResult.getMessageId());
returntrue;
        }
    }catch (Exceptione){
e.printStackTrace();
    }
returnfalse;
}

发送国内短信:

publicBooleansendDomesticSms(Stringphone, StringtemplateId, Stringparams) {
if(StringUtils.isBlank(phone)){
thrownewConventionException(MSG_RECEIVER_PHONE_IS_NULL);
    }
returnsendSms(templateId, phone, params, MessageConfig.DOMESTIC_SIGN_NAME);
}

发送国外短信:

publicBooleansendAbroadSms(Stringphone, StringtemplateId, Stringparams) {
if(StringUtils.isBlank(phone)){
thrownewConventionException(MSG_RECEIVER_PHONE_IS_NULL);
    }
returnsendSms(templateId, phone, params, MessageConfig.ABROAD_SIGN_NAME);
}

调用阿里云消息平台发送短信实现:

privateBooleansendSms(StringtemplateCode, StringtoNumber, Stringparams, StringsignName){
Stringaction="SendSms";
CommonRequestrequest=getSmsCommonRequest(action);
request.putQueryParameter("PhoneNumbers", toNumber);
request.putQueryParameter("SignName", signName);
//阿里云的消息模板IDrequest.putQueryParameter("TemplateCode", templateCode);
if(StringUtils.isNotBlank(params)){
JSONObjectjsonObject=JSON.parseObject(params);
//截取参数长度 不超过20Set<String>keys=jsonObject.keySet();
if(CollectionUtils.isNotEmpty(keys)){
keys.stream().forEach(item-> {
Stringvalue=jsonObject.getString(item);
if (StringUtils.length(value) >20){
jsonObject.put(item, value.substring(0, 20));
                }
            });
params=jsonObject.toJSONString();
        }
request.putQueryParameter("TemplateParam", params);
    }else{
request.putQueryParameter("TemplateParam", "{}");
    }
log.info("发送短信, 阿里云模板ID:{}, 发送内容:{}", templateCode, params);
returnnull!=executeSmsCommonResponse(request, action);
}


第五部分:问题排查定位

我们可以创建数据库表,将发送的短信结果存入数据库表中,方便排查哪些短信发送失败;

    同时可以去阿里云控制台 --> 短信服务 --> 业务统计 --> 发送记录查询,查看短信是否发送成功;

数据库表排查:

image.png

阿里云控制台排查:

image.png

失败记录查询:

image.png

导出失败记录:

image.png


相关文章
|
4月前
【微信公众平台对接】有关【创建发票卡券模板】调用示例
【微信公众平台对接】有关【创建发票卡券模板】调用示例
84 0
|
JSON 算法 开发工具
拒绝臃肿,一个文件搞定 C# 调用阿里云短信服务发送短信
短信发送是软件开发中的一个常见功能,在国内常用于基于短信验证码的用户注册、找回密码和操作授权等场景。阿里云的短信服务在调用时需要实现一个不是那么容易的签名算法,但如果只是为了发送短信这一个功能就去引用其提供的 SDK 显得非常不经济。
1125 1
|
2月前
|
开发框架 前端开发 JavaScript
ABP框架中短信发送处理,包括阿里云短信和普通短信商的短信发送集成
ABP框架中短信发送处理,包括阿里云短信和普通短信商的短信发送集成
ABP框架中短信发送处理,包括阿里云短信和普通短信商的短信发送集成
|
1月前
|
小程序
阿里云短信签名申请流程,有图,短信接入新手教程
阿里云短信签名是短信中的标识信息,如【阿里云】,用于表明发送方身份。申请流程简便:登录阿里云短信服务控制台,选择签名管理并添加签名,填写相关信息。审核通常2小时内完成。个人用户每日限申请一个通用签名,企业用户数量不限。已通过审核的签名不可更改名称,仅能调整其他信息并重新提交审核。更多详情及FAQ
|
2月前
|
敏捷开发 jenkins 测试技术
阿里云云效产品使用合集之配置了邮箱但仍然无法接收到邮件通知,是什么导致的
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
阿里云云效产品使用合集之配置了邮箱但仍然无法接收到邮件通知,是什么导致的
|
安全 API 数据安全/隐私保护
短信服务在项目中的配置及如何实现验证码登录
短信服务在项目中的配置及如何实现验证码登录
230 0
|
JSON JavaScript 前端开发
前后端分离项目知识汇总(整合短信登录和微信扫描登录)
前后端分离项目知识汇总(整合短信登录和微信扫描登录)
192 0
|
Java 云计算
JAVA实现《阿里云发送短信验证码以及短信通知》
JAVA实现《阿里云发送短信验证码以及短信通知》
922 0
|
缓存 NoSQL Redis
整合阿里云短信进行短信发送(2) | 学习笔记
快速学习 整合阿里云短信进行短信发送(2)
229 0
整合阿里云短信进行短信发送(2) | 学习笔记
|
JSON fastjson 数据格式
整合阿里云短信进行短信发送(1) | 学习笔记
快速学习 整合阿里云短信进行短信发送(1)
378 0