UNPKG

notification-service-sdk

Version:

A Node.js notification service SDK supporting email and SMS providers

60 lines 2.38 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.AliSmsProvider = void 0; const sms_sdk_1 = __importDefault(require("@alicloud/sms-sdk")); const interfaces_1 = require("../interfaces"); class AliSmsProvider { constructor(config) { if (!config.accessKeyId || !config.accessKeySecret || !config.signName) { throw new interfaces_1.NotificationError('Invalid Aliyun SMS configuration', 'INVALID_CONFIG'); } this.config = config; this.client = new sms_sdk_1.default({ accessKeyId: config.accessKeyId, secretAccessKey: config.accessKeySecret, }); } async send(message) { try { if (!message.phoneNumbers) { throw new interfaces_1.NotificationError('Phone numbers are required', 'MISSING_PHONE_NUMBERS'); } if (!message.templateId) { throw new interfaces_1.NotificationError('Template ID is required', 'MISSING_TEMPLATE_ID'); } // 处理电话号码格式 const phoneNumbers = Array.isArray(message.phoneNumbers) ? message.phoneNumbers.join(',') : message.phoneNumbers; const response = await this.client.sendSMS({ PhoneNumbers: phoneNumbers, SignName: this.config.signName, TemplateCode: message.templateId, TemplateParam: message.templateParams ? JSON.stringify(message.templateParams) : undefined, }); if (response.Code === 'OK') { return { success: true, messageId: response.BizId, }; } else { return { success: false, error: new interfaces_1.NotificationError(`Failed to send SMS: ${response.Message}`, response.Code), }; } } catch (error) { return { success: false, error: error instanceof Error ? error : new Error(String(error)), }; } } } exports.AliSmsProvider = AliSmsProvider; //# sourceMappingURL=aliSms.js.map