aws-sns-sms-service
Version:
A simple way to send SMS text messages.
59 lines (47 loc) • 1.76 kB
JavaScript
const { SNSClient, PublishCommand } = require('@aws-sdk/client-sns');
const { defaultConfig } = require('../../configuration');
const validation = require('./validation');
const validateNotification = parameters => {
return validation.validateParameters(parameters);
}
const formRequestNotification = notification => ({
Message: notification.message,
PhoneNumber: '+' + notification.mobile,
MessageAttributes: {
'AWS.SNS.SMS.SMSType': {
'DataType': 'String',
'StringValue': 'Transactional'
}
}
});
const formRequestOptions = parameters => ({
credentials: {
accessKeyId: parameters.key_id,
secretAccessKey: parameters.access_key
},
region: defaultConfig.AWS_REGION
});
const serviceNotification = async (parameters = {}) => {
const { mobiles } = parameters;
const options = formRequestOptions({ ...parameters });
const snsClient = new SNSClient(options);
let response = [];
await Promise.all(mobiles.map(async (mobile) => {
const notification = formRequestNotification({ ...parameters, mobile });
const command = new PublishCommand(notification);
const result = await snsClient.send(command);
response.push({
mobile,
message_id: result.MessageId,
});
}));
return response;
}
const sendNotificationAmazonSNS = async (parameters = {}) => {
const { error, response } = validateNotification(parameters);
if (response === null) return { error: error.details[0], response };
return await serviceNotification(parameters);
}
module.exports = {
sendNotificationAmazonSNS,
}