如今互联网流量都在向手机App应用倾斜,但是邮件和短信营销依然是必不可少的。流量永远都是稀缺的,任何一家商业公司,你会发现他们永远都在抢夺流量。可口可乐足够知名了吧,但是依然缺少流量,因为人口在更替,下一代并不一定了解你的品牌。
短信经常用到的场景主要有以下几类,第一类是验证码,包括注册,登陆验证码等。第二类则是短信通知,例如订单发货通知,取货通知等。第三类则是推广短信,比如促销短信,优惠券短信等。
阿里云短信服务有哪些优势呢?对比下来最大的优点是价格便宜,软件类型的服务,如果掌握了先发优势,那么价格绝对是有竞争优势的,因为系统研发出来后,成本是成倍下降的。例如windows操作系统,第一份系统完成后,剩余的都是copy的工作。
目前阿里云短信计费方式采用的是短信套餐包的方式,每一条的价格大约是4分。5000条是225元,时间是24个月,50000条是2000元,时间同样是24个月,可以购买多份。
屏幕快照 2018-08-02 21.09.11.png使用阿里云短信需要开通短信服务,进入页面后,点击”免费开通“按照提示进行操作就行了。开通完成后,进入到购买页面进行购买就可以了。
购买完成之后,就是发送的步骤了。目前阿里云支持3类短信,分别是:验证码,短信通知,推广短信。其中推广短信需要企业认证才能发送,个人是无法发送的,因为监管越来越严格了。最近又增加了一项监管就是禁止发送金融类相关的短信,大家都懂的,所以大家千万要遵守这些规定,不然会面临封号的风险。
屏幕快照 2018-08-02 21.22.59.png发送方式有两种,第一种是通过“任务管理”中的发送工具,这个服务只有升级企业之后才能使用。这种方式的好处是不用写代码,直接倒入数据,就能发送,适合不会写代码的人员。收费方式稍贵,单价为5分多一条,并且是按照阶梯收费的。
WechatIMG237.png短信发送主要给大家介绍的是第二种,利用sdk发送。这里就以Java为例说明如何发送。阿里云已经帮我们又做了一层二次封装,可以直接用jdk的方法直接发送,直接引入maven的jar包即可。
在发送之前,需要创建一个AccessKey作为key。发送代码非常简单,代码如下:
//设置超时时间-可自行调整
System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
System.setProperty("sun.net.client.defaultReadTimeout", "10000");
//初始化ascClient需要的几个参数
final String product = "Dysmsapi";//短信API产品名称(短信产品名固定,无需修改)
final String domain = "dysmsapi.aliyuncs.com";//短信API产品域名(接口地址固定,无需修改)
//替换成你的AK
final String accessKeyId = "yourAccessKeyId";//你的accessKeyId,参考本文档步骤2
final String accessKeySecret = "yourAccessKeySecret";//你的accessKeySecret,参考本文档步骤2
//初始化ascClient,暂时不支持多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();
//使用post提交
request.setMethod(MethodType.POST);
//必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式;发送国际/港澳台消息时,接收号码格式为00+国际区号+号码,如“0085200000000”
request.setPhoneNumbers("1500000000");
//必填:短信签名-可在短信控制台中找到
request.setSignName("云通信");
//必填:短信模板-可在短信控制台中找到,发送国际/港澳台消息时,请使用国际/港澳台短信模版
request.setTemplateCode("SMS_1000000");
//可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
//友情提示:如果JSON中需要带换行符,请参照标准的JSON协议对换行符的要求,比如短信内容中包含\r\n的情况在JSON中需要表示成\\r\\n,否则会导致JSON在服务端解析失败
request.setTemplateParam("{\"name\":\"Tom\", \"code\":\"123\"}");
//可选-上行短信扩展码(扩展码字段控制在7位或以下,无特殊需求用户请忽略此字段)
//request.setSmsUpExtendCode("90997");
//可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
request.setOutId("yourOutId");
//请求失败这里会抛ClientException异常
SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
if(sendSmsResponse.getCode() != null && sendSmsResponse.getCode().equals("OK")) {
//请求成功
}
以上步骤就完成了整个短信发送的过程,阿里云的到达率高达99%,历经双十一的考验,3网合一的专属通道。此外阿里云后台还有可视化的数据统计功能,可以统计发送数量和失败率。
屏幕快照 2018-08-02 21.43.25.png
网友评论