nestjs-tencent-sms
Version:
A nestjs Tencent Sms Service
61 lines (56 loc) • 1.68 kB
text/typescript
import { Inject, Injectable } from '@nestjs/common';
import { sms } from 'tencentcloud-sdk-nodejs';
import { TencentSmsModuleOptions } from './interfaces';
import { TENCENT_SMS_MODULE_OPTIONS } from './constant';
import { pick } from 'lodash';
()
export class TencentSmsService {
private smsSdkAppId = this.options.SmsSdkAppid;
private smsTemplateID = this.options.TemplateID;
private smsTemplateSign = this.options.TemplateSign;
private _smsClient = new sms.v20190711.Client({
...pick(this.options, ['profile', 'credential']),
region: 'ap-guangzhou',
});
constructor(
(TENCENT_SMS_MODULE_OPTIONS)
private readonly options: TencentSmsModuleOptions
) {}
/**
* 获取短信资源包
* @param page
* @param page_size
*/
public async getSmsPackagesStatistics(page = 1, page_size = 10) {
return await this._smsClient
.SmsPackagesStatistics({
SmsSdkAppid: this.smsSdkAppId,
Limit: page_size,
Offset: (page - 1) * page_size,
})
.then(
(data) => data.SmsPackagesStatisticsSet,
() => []
);
}
/**
* 发送短信验证码
* @param phone 手机号
* @param code 验证码
* @param minute 过期时间
*/
public async sendSms(phone: string, code: string, minute: string) {
return await this._smsClient
.SendSms({
PhoneNumberSet: [`+86${phone}`],
TemplateID: this.smsTemplateID,
Sign: this.smsTemplateSign,
TemplateParamSet: [code, minute],
SmsSdkAppid: this.smsSdkAppId,
})
.then(
(data) => data.SendStatusSet.find(Boolean),
() => false
);
}
}