设为首页 加入收藏

TOP

使用阿里云的短信服务发送短信(一)
2019-09-17 19:08:05 】 浏览:85
Tags:使用 阿里 云的 短信服务 发送 短信

在给客户开发一个信息发送功能的时候,需要涉及到短信的发送,短信发送一般不同的厂商提供的接口不同,处理方式也不太一样,之前用的一个厂商的,提供了一个封装类就很容易发送短息,因此都是基于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("Version", "2017-05-25");
            keyValues.Add("RegionId", "cn-hangzhou");
            keyValues.Add("PhoneNumbers", mobile);
            keyValues.Add("SignName", SignName);
            keyValues.Add("TemplateParam", "{\"code\":\"" + code + "\"}");
            keyValues.Add("TemplateCode", templateCode);
            keyValues.Add("OutId", "123");

具体我们来贴出不用SDK的短信发送辅助类,如下代码所示。

    /// <summary>
    /// 阿里短信发送
    /// </summary>
    public class SmsHelper
    {
        private const string endpoint = "dysmsapi.aliyuncs.com";
        private const string AccessKeyId = "你的秘钥键";
        private const string AccessKeySecret = "你的秘钥值";
        private const string SignName = "广州爱奇迪";

        /// <summary>
        /// 短信验证码
        /// </summary>
        /// <param name="mobile"></param>
        /// <param name="code"></param>
        /// <returns></returns>
        public static string SendSms(string mobile, int code, string templateCode = "SMS_126645400")
        {
            string nowDate = DateTime.Now.ToUniversalTime().ToString("yyyy-MM-dd'T'HH:mm:ss'Z'");//GTM时间
            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("Signatu
首页 上一页 1 2 3 4 下一页 尾页 1/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇测试live writer 下一篇.net core 与ELK(5)安装logstash

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目