腾讯云短信+使用node发送短信(3种方法API、SDK)、封装工具、搭建web服务、写接口、调用接口发送短信、时效性判断(上)
普歌-腾讯云短信+三种实现发送短信的方法前提准备:腾讯云账号新用户领取200条免费短信腾讯云短信SMS登录账号进入短信的控制台进行创建 签名和正文模板,根据提示进行创建不会理解签名和正文模板的签名和正文模板这是我的正文模板:您的验证码为:{1},该验证码{2}分钟内有效,请勿泄漏于他人!有了签名和正文模板后,需要准备这些参数(这是在有了前面两个东西之后)应用SDKAppID:那个14开头的( SK
文前推荐一下👉前端必备工具推荐网站(图床、API和ChatAI、智能AI简历、AI思维导图神器等实用工具):
站点入口:http://luckycola.com.cn/
图床:https://luckycola.com.cn/public/dist/#/imghub
多种API:https://luckycola.com.cn/public/dist/#/
ChatAI:https://luckycola.com.cn/public/dist/#/chatAi
AI思维导图神器:https://luckycola.com.cn/public/dist/#/aiQStore/aiMindPage
腾讯云短信+三种实现发送短信的方法
前提准备:
这是我的正文模板: 您的验证码为:{1},该验证码{2}分钟内有效,请勿泄漏于他人!
- 有了签名和正文模板后,需要准备这些参数(这是在有了前面两个东西之后)
- 应用SDKAppID:那个14开头的( SKDApp相关参数)
- 应用SDKAppKey:( SKDApp相关参数)
- 短信模板id:6位那个( 正文模板查看详情)
- 签名内容:( 签名查看详情)
- SecretId(密钥id):( 密钥相关查看)
- SecretKey(密钥key):( 密钥相关查看)
以上为前提准备,没有准备好先去准备
第一种,使用api接口发送短信
- 这一种是最基本的调用接口的方式,就不具体附代码了,下面放上访问接口的基本参数
- 接口请求域名: sms.tencentcloudapi.com
- 请求方式:post
- 请求参数(以下我标注红色是一些必选项或可能要传递的参数):
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:SendSms。 |
Version | 是 | String | 公共参数,本接口取值:2019-07-11。 |
Region | 否 | String | 公共参数,本接口不需要传递此参数。 |
PhoneNumberSet.N | 是 | Array of String | 下发手机号码,采用 e.164 标准,格式为+[国家或地区码][手机号],单次请求最多支持200个手机号且要求全为境内手机号或全为境外手机号。例如:+8613711112222, 其中前面有一个+号 ,86为国家码,13711112222为手机号。 |
TemplateID | 是 | String | 模板 ID,必须填写已审核通过的模板 ID。模板ID可登录 短信控制台 查看,若向境外手机号发送短信,仅支持使用国际/港澳台短信模板。 |
SmsSdkAppid | 是 | String | 短信SdkAppid在 短信控制台 添加应用后生成的实际SdkAppid,示例如1400006666。 |
Sign | 否 | String | 短信签名内容,使用 UTF-8 编码,必须填写已审核通过的签名,签名信息可登录 短信控制台 查看。注:国内短信为必填参数。 |
TemplateParamSet.N | 否 | Array of String | 模板参数,若无模板参数,则设置为空。 |
ExtendCode | 否 | String | 短信码号扩展号,默认未开通,如需开通请联系 sms helper。 |
SessionContext | 否 | String | 用户的 session 内容,可以携带用户侧 ID 等上下文信息,server 会原样返回。 |
SenderId | 否 | String | 国内短信无senderid,无需填写该项;若需开通国际/港澳台短信senderid,请联系smshelper。 |
请求示例
https://sms.tencentcloudapi.com/?Action=SendSms
&PhoneNumberSet.0=+8618511122233
&PhoneNumberSet.1=+8618511122266
&TemplateID=1234
&Sign=腾讯云
&TemplateParamSet.0=12345
&SmsSdkAppid=1400006666
&SessionContext=test
&<公共请求参数>
- 响应(输出)参数:
参数名称 | 类型 | 描述 |
---|---|---|
SendStatusSet | Array of SendStatus | 短信发送状态。 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
成功响应示例
{
"Response": {
"SendStatusSet": [
{
"SerialNo": "5000:1045710669157053657849499619",
"PhoneNumber": "+8618511122233",
"Fee": 1,
"SessionContext": "test",
"Code": "Ok",
"Message": "send success",
"IsoCode": "CN"
},
{
"SerialNo": "5000:104571066915705365784949619",
"PhoneNumber": "+8618511122266",
"Fee": 1,
"SessionContext": "test",
"Code": "Ok",
"Message": "send success",
"IsoCode": "CN"
}
],
"RequestId": "a0aabda6-cf91-4f3e-a81f-9198114a2279"
}
}
第二种,使用Node SDK 2.0发送
下面是我总结的四步骤:
- 第一步下载模块 npm install qcloudsms_js
- 第二步 引入模块,给相应的参数{SDK的appid、appkey(实例化QcloudSms)、手机号、签名内容}
- 第三步生成六位验证码
- 第四步调用sendWithParam发送短信
放上代码
/*
* @fileName: sendNote
* @author: LG
* @date: 2020/12/7 8:21
* @description:测试发送短信
* @update: 2020/12/7 8:21
*/
/**
* 腾讯云短信 Node.js SDK 2.0
* 最近更新时间2020-09-23 17:15:17
* 1. qcloudsms_js采用npm进行安装,要使用qcloudsms功能,只需要执行:
* npm install qcloudsms_js
*/
//引入qcloudsms_js模块
const QcloudSms = require('qcloudsms_js');
//短信应用SDK appid (number类型)
var appid = 14xxxxxxx;
//短信应用SDK appkey (字符串类型)
var appkey = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
//实例化QcloudSms
var qcloudsms = QcloudSms(appid, appkey);
//需要发送短信的手机号
var phoneNumbers = ['',''];
//短信模板的id (number类型)
var templateId = xxxxxx;
//签名 (字符串)
var smsSign = 'xxx';
// 设置请求回调处理, 这里只是演示,用户需要自定义相应处理回调
function callback(err, res, resData) {
if (err) {
console.log("err: ", err);
} else {
console.log("request data: ", res.req);
console.log("response data: ", resData);
}
}
//生成n位验证码
function RndNum(n) {
var rnd = "";
for (var i = 0; i < n; i++)
rnd += Math.floor(Math.random() * 10);
return rnd;
}
//六位验证码
var VerificationCode = RndNum(6);
var ssender = qcloudsms.SmsSingleSender();
//短信模板的参数
var params = [VerificationCode, "2"];
/**
* 参数详情
* 第一个nationCode(字符串):国家拨号代码,例如中国为86,美国为1
* 第二个phoneNumber(字符串):电话号码
* 第三个tempId(数字型):模板编号ID
* 第四个params(数组):模板中的参数的数组
* 第五个sign(字符串):签名内容
* 第六个extend(字符串):扩展字段,默认为空
* 第七个ext(字符串):内容将按原样由服务器返回
* 第八个callback(函数):回调函数,发送成功/失败后触发的函数
*/
ssender.sendWithParam("86", phoneNumbers[0], templateId, params, smsSign, "", "", callback);
// 签名参数未提供或者为空时,会使用默认签名发送短信
最后执行node xxxx运行
如果调用成功会响应一个OK,失败的话会给你提示哪里有错
第二种Node SDK3.0发送短信
-
Node SDK2.0和Node SDK3.0的区别:
- Node SDK 3.0 通过tencentcloud-sdk-nodejs模块实现:新版 SDK 实现了统一化,具有各个语言版本的 SDK 使用方法相同,接口调用方式相同,错误码相同以及返回包格式相同等优点。
- 本质上没什么区别,用哪个都行,SDK2.0也在维护中
-
已准备依赖环境:NODEJS 7.10.1 及以上版本。
-
我总结的发送短信的必要步骤:
- 第一步 下载模块 tencentcloud-sdk-nodejs
- 第二步 导入对应产品模块client models
- 第三步 配置client配置(密钥id、密钥key、可选配置),实例化sms的client对象
- 第四步生成六位验证码
- 第五步 请求参数(手机号、模板参数、模板id、appid、签名内容)
- 第六步 调用client.SendSms发送短信
- 官方文档和github使用地址
- 下面是代码:
/*
* @fileName: sendNote2
* @author: LG
* @date: 2020/12/7 13:41
* @description:sendNote2
* @update: 2020/12/7 13:41
*/
/**
* SDK 3.0是云 API 3.0平台的配套工具,您可以通过 SDK 使用所有 短信 API。新版 SDK 实现了统一化,具有各个语言版本的 SDK 使用方法相同,接口调用方式相同,错误码相同以及返回包格式相同等优点。
*/
// Depends on tencentcloud-sdk-nodejs version 4.0.3 or higher
const tencentcloud = require("tencentcloud-sdk-nodejs");
//导入对应产品模块的client models
const SmsClient = tencentcloud.sms.v20190711.Client;
/* SDK 会自动指定域名,通常无需指定域名,但访问金融区的服务时必须手动指定域名
* 例如 SMS 的上海金融区域名为 sms.ap-shanghai-fsi.tencentcloudapi.com *
* 第二个参数是地域信息,可以直接填写字符串 ap-guangzhou,或者引用预设的常量 */
const clientConfig = {
//腾讯云认证信息
credential: {
secretId: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
secretKey: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
},
//产品地域
region: "",
//可选配置实例
profile: {
httpProfile: {
endpoint: "sms.tencentcloudapi.com",
},
},
};
//实例化要请求产品的client对象
//实例化 SMS 的 client 对象
const client = new SmsClient(clientConfig);
//生成n位验证码
function RndNum(n) {
var rnd = "";
for (var i = 0; i < n; i++) rnd += Math.floor(Math.random() * 10);
return rnd;
}
//五位验证码
var VerificationCode = RndNum(6);
/**
* 参数说明
* !! SmsSdkAppid 短信应用 ID:在 [短信控制台] 添加应用后生成的实际 SDKAppID,例如1400006666
* !! Sign 短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名,可登录 [短信控制台] 查看签名信息
* ExtendCode 短信码号扩展号: 默认未开通,如需开通请联系 [sms helper]
* SenderId 国际/港澳台短信 senderid: 国内短信填空,默认未开通,如需开通请联系 [sms helper]
* SessionContext 用户的 session 内容: 可以携带用户侧 ID 等上下文信息,server 会原样返回
* PhoneNumberSet 下发手机号码,采用 e.164 标准,+[国家或地区码][手机号] 最多不要超过200个手机号
* TemplateID 模板 ID: 必须填写已审核通过的模板 ID,可登录 [短信控制台] 查看模板 ID
* TemplateParamSet 模板参数: 若无模板参数,则设置为空
*/
const params = {
PhoneNumberSet: ["+86xxxxxxxxxx"],
TemplateParamSet: [VerificationCode, "5"],
TemplateID: "xxxxxx",
SmsSdkAppid: "14xxxxxxxxxxx",
Sign: "xxxxxxx",
};
// 通过 client 对象调用想要访问的接口,需要传入请求对象以及响应回调函数
client.SendSms(params).then(
(data) => {
console.log(data);
},
(err) => {
console.error("error", err);
}
);
最后执行node xxxx运行
如果调用成功会响应一个OK,失败的话会给你提示哪里有错。
到这里结束了,基本发送短信的方法已经详解,下篇说封装短信工具,搭建web服务,写接口,时效性,调用接口发送
收藏、点赞呗
更多推荐:wantLG的《普歌-腾讯云短信+使用node发送短信(3种方法API、SDK)、封装工具、搭建web服务、写接口、调用接口发送短信、时效性判断(下)》
- 作者:wantLG
- 本文源自:wantLG的《普歌-腾讯云短信+使用node发送短信(3种方法API、SDK)、封装工具、搭建web服务、写接口、调用接口发送短信、时效性判断(上)》
- 本文版权归作者和CSDN共有,欢迎转载,且在文章页面明显位置给出原文链接,未经作者同意必须保留此段声明,否则保留追究法律责任的权利。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)