UNPKG

nestjs-tencent-sms

Version:
61 lines (56 loc) 1.68 kB
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'; @Injectable() 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( @Inject(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 ); } }