短信服务阿里云的短信服务可以通过短信API实现验证码、推广短信、通知短信的发送、群发功能。这里以验证码为例,介绍一下短信的发送功能。
进入快速学习页面(https://dysms.console.aliyun.com/dysms.htm#/quickStart)
直接点击查看API Demo
你在左侧输入参数,选择不同的后端语言,它会自动帮你生成Demo代码,并且还可以去CloudShell在线调试。
参数说明
PhoneNumbers 接收短信的手机号码
SignName 签名名称,在控制台国内消息签名管理一列添加、查看
TemplateCode 模板ID,在控制台国内消息模板管理一列添加、查看
TemplateParam 模板变量对应的实际值,注意一定要是JSON格式。
签名可以设置你的网站名、公司名
模板可以选择验证码、短信通知、推广短信(升级为企业后启用),设置你的短信内容,同时支持变量替换,如我的网站的验证码短信模板内容为:
同时支持变量替换,如我的网站的验证码短信模板内容为:
1
|
您的验证码为:${code},该验证码5分钟内有效,请勿泄漏于他人。
|
TemplateParam可以设置code变量,发送你需要的内容
1 2 3 |
"TemplateParam": JSON.stringify({ "code": 2 }), |
短信发送客户端
根据API Demo的整理,我们写出自己的短信客户端代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
const Core = require('@alicloud/pop-core'); const config = require('../config'); const requestOption = { method: 'POST', }; class SmsClient { constructor() { if (!SmsClient.instance) { this.client = new Core({ accessKeyId: config.sms.accessKeyId, accessKeySecret: config.sms.accessKeySecret, endpoint: config.sms.endpoint, apiVersion: config.sms.apiVersion, }); SmsClient.instance = this.client; } } sendSms(params) { this.client.request('SendSms', params, requestOption).then((result) => { console.log(JSON.stringify(result)); }, (ex) => { console.log(ex); }) } } module.exports = new SmsClient(); |
编写单元测试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
const smsClient = require('../../common/sms-client.js'); describe('smsClient',async function() { it('sendSms', async function() { const params = { "PhoneNumbers": "手机号码", "SignName": "签名", "RegionId": "cn-hangzhou", "TemplateCode": "模板ID", "TemplateParam": JSON.stringify({ "code": 2 }), } smsClient.sendSms(params); }); }); |
执行后,手机上成功收到了短信。