在给客户开发一个信息发送功能的时候,需要涉及到短信的发送,短信发送一般不同的厂商提供的接口不同,处理方式也不太一样,之前用的一个厂商的,提供了一个封装类就很容易发送短息,因此都是基于HTTP协议做的一个数据发送而已,接触阿里云的短信服务器后,发现阿里云还增加了非常多的参数,其中包括一些秘钥和签名的内容。短信发送由于比较敏感原因,大多数应用场景是验证码或者一些固定的信息提醒,因此厂商都要求客户按预定的模板来发送,这样限制了短信的应用场景,只能根据业务进行消息定制了。本篇随笔主要介绍阿里云的短信服务的发送处理。
1、短信发送的处理介绍
在短信发送中,阿里云提供自己的SDK封装,以降低使用的难度,不过需要引入它提供的SDK类库;本篇随笔主要介绍基于HTTP方式进行自行的封装处理,这部分代码我从网上摘录并进行一定的调整,测试成功。
使用阿里云的短信服务,需要注册登录自己的阿里云控制台,然后进入AccessKeys的处理界面
然后系统会提示需要创建一个新的Key(如果没有的话就创建,否则使用已有的即可)
这里我们获取到AccessKey ID 和Access Key Secret两个关键信息,需要用在数据签名的里面的。
另外我们需要创建一个SignName,也就是签名,一般为我们短信提示的公司名称,如【广州爱奇迪】这样的字样。
短信是基于模板的,阿里云不能发送随意的内容,因此只能基于模板发送,如验证码或者业务消息,有点类似微信的模板消息了,因此里面可以添加变量发送的。
记得我以前写过一个关于动态变量的信息发送的文章《一个包含动态变量的短信模板设计分析》,就是介绍如何处理变量模板消息的。
阿里云默认提供了一些基础模板,如下所示。
一般我们业务可能还需要定制一些业务消息,那么需要审核通过才可以使用新增的模板消息。
短信的发送可以利用API接口进行发送,如下所示是它的API说明
如果需要采集用户的回复信息,如一些随访记录,那么需要做一个接口的处理,如下所示。
发送短信的API接口详细说明如下所示。
其实请求信息比上面列出的信息多很多,包括秘钥和数据加密信息等的处理,下面详细给出代码说明。
2、模板消息发送
有了上面的信息介绍,我们大概了解了短信消息发送的处理规则了。
实际上,发送信息的时候,我们可能需要添加很多参数信息,如下代码所示。
Dictionary<string, string> keyValues = new Dictionary<string, string>();//声明一个字典
//1.系统参数
keyValues.Add("SignatureMethod", "HMAC-SHA1");
keyValues.Add("SignatureNonce", Guid.NewGuid().ToString());
keyValues.Add("AccessKeyId", AccessKeyId);
keyValues.Add("SignatureVersion", "1.0");
keyValues.Add("Timestamp", nowDate);
keyValues.Add("Format", "Json");//可换成xml
//2.业务api参数
keyValues.Add("Action", "SendSms");
keyValues.Add(&#