UNPKG

3.16 kBJavaScriptView Raw
1"use strict";
2var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4 return new (P || (P = Promise))(function (resolve, reject) {
5 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7 function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8 step((generator = generator.apply(thisArg, _arguments || [])).next());
9 });
10};
11var __importDefault = (this && this.__importDefault) || function (mod) {
12 return (mod && mod.__esModule) ? mod : { "default": mod };
13};
14Object.defineProperty(exports, "__esModule", { value: true });
15exports.SmsSender = void 0;
16const twilio_1 = __importDefault(require("twilio"));
17class SmsSender {
18 constructor({ accountSid, fromNumber, logger, sid, secret }) {
19 this.accountSid = accountSid;
20 this.logger = logger || {
21 error: console.error.bind(console),
22 info: console.log.bind(console)
23 };
24 this.fromNumber = fromNumber;
25 this.sid = sid;
26 this.secret = secret;
27 this.client = twilio_1.default(this.sid, this.secret, {
28 accountSid: this.accountSid
29 });
30 }
31 sendSms({ body, recipients }) {
32 return __awaiter(this, void 0, void 0, function* () {
33 if (!body || body.length === 0) {
34 throw new Error('No body to send SMS');
35 }
36 if (!recipients || recipients.length === 0) {
37 throw new Error('No recipients to send SMS');
38 }
39 const sendSmsToNumber = (phoneNumber) => {
40 const to = phoneNumber.trim();
41 if (!to) {
42 this.logger.error('Not a valid phone number to send SMS');
43 return;
44 }
45 this.logger.info(`Trying to send SMS to number ${phoneNumber}`);
46 return this.client.messages
47 .create({
48 body,
49 to,
50 from: this.fromNumber
51 })
52 .then((message) => {
53 const { errorCode, errorMessage, status } = message;
54 if (errorCode) {
55 this.logger.error(`There was an error sending SMS to number ${phoneNumber} (${errorCode} - ${errorMessage})`);
56 }
57 else {
58 this.logger.info(`Sent SMS to number ${phoneNumber} successful (status ${status})`);
59 }
60 return message;
61 })
62 .catch((error) => {
63 this.logger.error(`Could not send SMS to number '${phoneNumber}'`, error);
64 });
65 };
66 return Promise.all(recipients.map(sendSmsToNumber));
67 });
68 }
69}
70exports.SmsSender = SmsSender;
71//# sourceMappingURL=SmsSender.js.map
\No newline at end of file