UNPKG

aws-sns-sms-service

Version:

A simple way to send SMS text messages.

59 lines (47 loc) 1.76 kB
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, }