mirror of
https://github.com/cool-team-official/cool-admin-midway.git
synced 2024-11-02 06:33:42 +08:00
70 lines
1.8 KiB
TypeScript
70 lines
1.8 KiB
TypeScript
import { Config, Provide } from "@midwayjs/core";
|
|
import { CoolTxConfig } from './interface';
|
|
import * as tencentcloud from "tencentcloud-sdk-nodejs";
|
|
import { CoolCommException } from "@cool-midway/core";
|
|
|
|
/**
|
|
* 腾讯云短信
|
|
*/
|
|
@Provide()
|
|
export class SmsTx {
|
|
@Config('cool.sms.tx')
|
|
config: CoolTxConfig;
|
|
|
|
/**
|
|
* 配置
|
|
* @param config
|
|
*/
|
|
setConfig(config: CoolTxConfig) {
|
|
this.config = config;
|
|
}
|
|
|
|
/**
|
|
* 发送短信
|
|
* @param phone 手机号
|
|
* @param params 参数
|
|
* @param config signName 签名 template 模板
|
|
* @returns
|
|
*/
|
|
async send(phone: string, params: string[], config?: {
|
|
signName: string;
|
|
template: string;
|
|
}) {
|
|
const { appId, secretId, secretKey } = this.config;
|
|
if(!config) {
|
|
config = {
|
|
signName: this.config.signName,
|
|
template: this.config.template,
|
|
};
|
|
}
|
|
if(!appId || !secretId || !secretKey) {
|
|
throw new CoolCommException('请配置腾讯云短信');
|
|
}
|
|
const smsClient = tencentcloud.sms.v20210111.Client;
|
|
|
|
const client = new smsClient({
|
|
credential: {
|
|
secretId,
|
|
secretKey,
|
|
},
|
|
region: 'ap-guangzhou',
|
|
profile: {
|
|
signMethod: 'HmacSHA256',
|
|
httpProfile: {
|
|
reqMethod: 'POST',
|
|
reqTimeout: 30,
|
|
endpoint: 'sms.tencentcloudapi.com',
|
|
},
|
|
},
|
|
});
|
|
|
|
const data = {
|
|
SmsSdkAppId: appId,
|
|
SignName: config.signName,
|
|
TemplateId: config.template,
|
|
TemplateParamSet: params,
|
|
PhoneNumberSet: [`+86${phone}`],
|
|
};
|
|
return client.SendSms(data);
|
|
}
|
|
} |