@segment/action-destinations 3.158.0 → 3.160.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/destinations/engage-messaging-twilio/index.js +1 -1
- package/dist/destinations/engage-messaging-twilio/index.js.map +1 -1
- package/dist/destinations/engage-messaging-twilio/sendSms/generated-types.d.ts +2 -0
- package/dist/destinations/engage-messaging-twilio/sendSms/index.js +19 -15
- package/dist/destinations/engage-messaging-twilio/sendSms/index.js.map +1 -1
- package/dist/destinations/engage-messaging-twilio/sendSms/sms-sender.d.ts +4 -21
- package/dist/destinations/engage-messaging-twilio/sendSms/sms-sender.js +59 -56
- package/dist/destinations/engage-messaging-twilio/sendSms/sms-sender.js.map +1 -1
- package/dist/destinations/engage-messaging-twilio/sendWhatsApp/index.js +4 -3
- package/dist/destinations/engage-messaging-twilio/sendWhatsApp/index.js.map +1 -1
- package/dist/destinations/engage-messaging-twilio/sendWhatsApp/whatsapp-sender.d.ts +3 -17
- package/dist/destinations/engage-messaging-twilio/sendWhatsApp/whatsapp-sender.js +33 -37
- package/dist/destinations/engage-messaging-twilio/sendWhatsApp/whatsapp-sender.js.map +1 -1
- package/dist/destinations/engage-messaging-twilio/utils/message-sender.d.ts +20 -14
- package/dist/destinations/engage-messaging-twilio/utils/message-sender.js +157 -64
- package/dist/destinations/engage-messaging-twilio/utils/message-sender.js.map +1 -1
- package/dist/destinations/index.js +1 -0
- package/dist/destinations/index.js.map +1 -1
- package/dist/destinations/vwo/generated-types.d.ts +1 -0
- package/dist/destinations/vwo/identifyUser/generated-types.d.ts +3 -3
- package/dist/destinations/vwo/identifyUser/index.js +16 -6
- package/dist/destinations/vwo/identifyUser/index.js.map +1 -1
- package/dist/destinations/vwo/index.js +6 -0
- package/dist/destinations/vwo/index.js.map +1 -1
- package/dist/destinations/vwo/pageVisit/generated-types.d.ts +4 -4
- package/dist/destinations/vwo/pageVisit/index.js +5 -5
- package/dist/destinations/vwo/pageVisit/index.js.map +1 -1
- package/dist/destinations/vwo/trackEvent/generated-types.d.ts +3 -3
- package/dist/destinations/vwo/trackEvent/index.js +4 -4
- package/dist/destinations/vwo/trackEvent/index.js.map +1 -1
- package/dist/destinations/vwo/types.d.ts +11 -4
- package/dist/destinations/vwo/utility.d.ts +2 -1
- package/dist/destinations/vwo/utility.js +77 -11
- package/dist/destinations/vwo/utility.js.map +1 -1
- package/dist/lib/engage-test-data/create-messaging-test-event.d.ts +1 -0
- package/dist/lib/engage-test-data/create-messaging-test-event.js.map +1 -1
- package/package.json +2 -2
|
@@ -79,7 +79,7 @@ const destination = {
|
|
|
79
79
|
name: 'Engage Messaging Twilio',
|
|
80
80
|
slug: 'actions-personas-messaging-twilio',
|
|
81
81
|
mode: 'cloud',
|
|
82
|
-
description: 'This is an Engage specific action to send an SMS',
|
|
82
|
+
description: 'This is an Engage specific action to send an SMS and Whatsapp messages using Twilio API',
|
|
83
83
|
authentication: {
|
|
84
84
|
scheme: 'custom',
|
|
85
85
|
fields: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/destinations/engage-messaging-twilio/index.ts"],"names":[],"mappings":";;;;;AAEA,wDAA+B;AAC/B,kEAAyC;AAEzC,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAsC,EAAE;IACnE,OAAO,KAAK,CAAC,GAAG,CAAC;SACd,IAAI,CAAC,CAAC,CAAC;SACP,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;AACzD,CAAC,CAAA;AAED,MAAM,6BAA6B,GAA+B;IAChE,EAAE,EAAE;QACF,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EAAE,gGAAgG;QAC7G,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC;KACzB;IACD,EAAE,EAAE;QACF,KAAK,EAAE,cAAc;QACrB,WAAW,EACT,0IAA0I;QAC5I,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC;KACzB;IACD,EAAE,EAAE;QACF,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,2DAA2D;QACxE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC;KACzB;IACD,EAAE,EAAE;QACF,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,uFAAuF;QACpG,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;KACrB;IACD,EAAE,EAAE;QACF,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,iCAAiC;QAC9C,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC;KAC3C;IACD,GAAG,EAAE;QACH,KAAK,EAAE,KAAK;QACZ,WAAW,EAAE,iCAAiC;QAC9C,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,OAAO;QAChB,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC;KAC7B;IACD,CAAC,EAAE;QACD,KAAK,EAAE,eAAe;QACtB,WAAW,EACT,sHAAsH;QACxH,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE;YACP,SAAS;YACT,YAAY;YACZ,QAAQ;YACR,WAAW;YACX,cAAc;YACd,WAAW;YACX,WAAW;YACX,QAAQ;YACR,OAAO;YACP,UAAU;YACV,WAAW;YACX,aAAa;YACb,cAAc;SACf;KACF;CACF,CAAA;AAED,MAAM,WAAW,GAAoC;IAGnD,IAAI,EAAE,yBAAyB;IAC/B,IAAI,EAAE,mCAAmC;IACzC,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/destinations/engage-messaging-twilio/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ export interface Payload {
|
|
|
3
3
|
toNumber?: string;
|
|
4
4
|
from: string;
|
|
5
5
|
body?: string;
|
|
6
|
+
media?: string[];
|
|
6
7
|
contentSid?: string;
|
|
7
8
|
customArgs?: {
|
|
8
9
|
[k: string]: unknown;
|
|
@@ -13,6 +14,7 @@ export interface Payload {
|
|
|
13
14
|
externalIds?: {
|
|
14
15
|
id?: string;
|
|
15
16
|
type?: string;
|
|
17
|
+
channelType?: string;
|
|
16
18
|
subscriptionStatus?: string;
|
|
17
19
|
}[];
|
|
18
20
|
traits?: {
|
|
@@ -29,6 +29,13 @@ const action = {
|
|
|
29
29
|
type: 'text',
|
|
30
30
|
required: false
|
|
31
31
|
},
|
|
32
|
+
media: {
|
|
33
|
+
label: 'Media Urls',
|
|
34
|
+
description: 'Media to attach to message',
|
|
35
|
+
type: 'string',
|
|
36
|
+
required: false,
|
|
37
|
+
multiple: true
|
|
38
|
+
},
|
|
32
39
|
contentSid: {
|
|
33
40
|
label: 'SMS content template SID',
|
|
34
41
|
description: 'Content template SID for Twilio Content API',
|
|
@@ -77,6 +84,11 @@ const action = {
|
|
|
77
84
|
description: 'The external ID contact type.',
|
|
78
85
|
type: 'string'
|
|
79
86
|
},
|
|
87
|
+
channelType: {
|
|
88
|
+
label: 'type',
|
|
89
|
+
description: 'The external ID contact channel type (SMS, WHATSAPP, etc).',
|
|
90
|
+
type: 'string'
|
|
91
|
+
},
|
|
80
92
|
subscriptionStatus: {
|
|
81
93
|
label: 'ID',
|
|
82
94
|
description: 'The subscription status for the identity.',
|
|
@@ -93,6 +105,9 @@ const action = {
|
|
|
93
105
|
type: {
|
|
94
106
|
'@path': '$.type'
|
|
95
107
|
},
|
|
108
|
+
channelType: {
|
|
109
|
+
'@path': '$.channelType'
|
|
110
|
+
},
|
|
96
111
|
subscriptionStatus: {
|
|
97
112
|
'@path': '$.isSubscribed'
|
|
98
113
|
}
|
|
@@ -124,26 +139,15 @@ const action = {
|
|
|
124
139
|
default: { '@path': '$.messageId' }
|
|
125
140
|
}
|
|
126
141
|
},
|
|
127
|
-
perform: async (request,
|
|
142
|
+
perform: async (request, data) => {
|
|
143
|
+
const { settings, payload, statsContext, logger } = data;
|
|
128
144
|
const statsClient = statsContext?.statsClient;
|
|
129
145
|
const tags = statsContext?.tags || [];
|
|
130
146
|
if (!settings.region) {
|
|
131
147
|
settings.region = 'us-west-1';
|
|
132
148
|
}
|
|
133
|
-
tags.push(`space_id:${settings.spaceId}`, `projectid:${settings.sourceId}`, `region:${settings.region}`);
|
|
134
|
-
|
|
135
|
-
userId: payload.userId,
|
|
136
|
-
subscriptionStatus: payload.externalIds?.map(eid => ({ type: eid.type, subscriptionStatus: eid.subscriptionStatus })),
|
|
137
|
-
shouldSend: payload.send,
|
|
138
|
-
contentSid: payload.contentSid,
|
|
139
|
-
sourceId: settings.sourceId,
|
|
140
|
-
spaceId: settings.spaceId,
|
|
141
|
-
twilioApiKeySID: settings.twilioApiKeySID,
|
|
142
|
-
region: settings.region,
|
|
143
|
-
messageId: payload.messageId
|
|
144
|
-
};
|
|
145
|
-
logger?.info("TE Messaging: SMS Destination Action Performing...", JSON.stringify(logDetails));
|
|
146
|
-
return new sms_sender_1.SmsMessageSender(request, payload, settings, statsClient, tags, logger, logDetails).send();
|
|
149
|
+
tags.push(`space_id:${settings.spaceId}`, `projectid:${settings.sourceId}`, `region:${settings.region}`, `channel:sms`);
|
|
150
|
+
return new sms_sender_1.SmsMessageSender(request, payload, settings, statsClient, tags, logger, data).send();
|
|
147
151
|
}
|
|
148
152
|
};
|
|
149
153
|
exports.default = action;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/engage-messaging-twilio/sendSms/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/engage-messaging-twilio/sendSms/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,26 +1,9 @@
|
|
|
1
|
-
import type { Settings } from '../generated-types';
|
|
2
1
|
import type { Payload } from './generated-types';
|
|
3
|
-
import {
|
|
4
|
-
import { MessageSender, RequestFn } from '../utils/message-sender';
|
|
2
|
+
import { MessageSender } from '../utils/message-sender';
|
|
5
3
|
export declare class SmsMessageSender extends MessageSender<Payload> {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
readonly statsClient: StatsClient | undefined;
|
|
10
|
-
readonly tags: StatsContext['tags'];
|
|
11
|
-
readonly logger: Logger | undefined;
|
|
12
|
-
readonly logDetails: {
|
|
13
|
-
[key: string]: any;
|
|
14
|
-
};
|
|
15
|
-
constructor(request: RequestFn, payload: Payload, settings: Settings, statsClient: StatsClient | undefined, tags: StatsContext['tags'], logger: Logger | undefined, logDetails?: {
|
|
16
|
-
[key: string]: any;
|
|
17
|
-
});
|
|
18
|
-
getExternalId: () => {
|
|
19
|
-
id?: string | undefined;
|
|
20
|
-
type?: string | undefined;
|
|
21
|
-
subscriptionStatus?: string | undefined;
|
|
22
|
-
} | undefined;
|
|
23
|
-
getBody: (phone: string) => Promise<URLSearchParams>;
|
|
4
|
+
getBody(phone: string): Promise<URLSearchParams>;
|
|
5
|
+
getChannelType(): string;
|
|
6
|
+
isValidExternalId(externalId: NonNullable<Payload['externalIds']>[number]): boolean;
|
|
24
7
|
private getProfileTraits;
|
|
25
8
|
private getContentTemplate;
|
|
26
9
|
private getUnparsedContent;
|
|
@@ -6,58 +6,11 @@ const actions_core_1 = require("@segment/actions-core");
|
|
|
6
6
|
const message_sender_1 = require("../utils/message-sender");
|
|
7
7
|
const Liquid = new liquidjs_1.Liquid();
|
|
8
8
|
class SmsMessageSender extends message_sender_1.MessageSender {
|
|
9
|
-
constructor(
|
|
10
|
-
super(
|
|
11
|
-
this.request = request;
|
|
12
|
-
this.payload = payload;
|
|
13
|
-
this.settings = settings;
|
|
14
|
-
this.statsClient = statsClient;
|
|
15
|
-
this.tags = tags;
|
|
16
|
-
this.logger = logger;
|
|
17
|
-
this.logDetails = logDetails;
|
|
18
|
-
this.getExternalId = () => this.payload.externalIds?.find(({ type }) => type === 'phone');
|
|
19
|
-
this.getBody = async (phone) => {
|
|
20
|
-
if (!this.payload.body && !this.payload.contentSid) {
|
|
21
|
-
this.logger?.error(`TE Messaging: Unable to process SMS, no body provided and no content sid provided - ${this.settings.spaceId}`);
|
|
22
|
-
throw new actions_core_1.PayloadValidationError('Unable to process sms, no body provided and no content sid provided');
|
|
23
|
-
}
|
|
24
|
-
let traits;
|
|
25
|
-
if (this.payload.traitEnrichment) {
|
|
26
|
-
traits = this.payload?.traits ? this.payload?.traits : {};
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
traits = await this.getProfileTraits();
|
|
30
|
-
}
|
|
31
|
-
const profile = {
|
|
32
|
-
user_id: this.payload.userId ?? undefined,
|
|
33
|
-
phone,
|
|
34
|
-
traits
|
|
35
|
-
};
|
|
36
|
-
let parsedBody;
|
|
37
|
-
let parsedMedia = [];
|
|
38
|
-
if (this.payload.contentSid) {
|
|
39
|
-
const data = await this.getContentTemplate();
|
|
40
|
-
const parsed = await this.parseContent(this.getUnparsedContent(data), profile);
|
|
41
|
-
parsedBody = parsed.body;
|
|
42
|
-
parsedMedia = parsed.media;
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
parsedBody = (await this.parseContent({ body: this.payload.body ?? '' }, profile)).body;
|
|
46
|
-
}
|
|
47
|
-
const body = new URLSearchParams({
|
|
48
|
-
Body: parsedBody,
|
|
49
|
-
From: this.payload.from,
|
|
50
|
-
To: phone,
|
|
51
|
-
ShortenUrls: 'true'
|
|
52
|
-
});
|
|
53
|
-
parsedMedia?.forEach((media) => {
|
|
54
|
-
body.append('MediaUrl', media);
|
|
55
|
-
});
|
|
56
|
-
return body;
|
|
57
|
-
};
|
|
9
|
+
constructor() {
|
|
10
|
+
super(...arguments);
|
|
58
11
|
this.getProfileTraits = async () => {
|
|
59
12
|
if (!this.payload.userId) {
|
|
60
|
-
this.
|
|
13
|
+
this.logError(`Unable to process SMS, no userId provided and no traits provided - ${this.settings.spaceId}`);
|
|
61
14
|
throw new actions_core_1.IntegrationError('Unable to process sms, no userId provided and no traits provided', 'Invalid parameters', 400);
|
|
62
15
|
}
|
|
63
16
|
try {
|
|
@@ -77,14 +30,14 @@ class SmsMessageSender extends message_sender_1.MessageSender {
|
|
|
77
30
|
}
|
|
78
31
|
catch (error) {
|
|
79
32
|
this.statsClient?.incr('actions-personas-messaging-twilio.profile_error', 1, this.tags);
|
|
80
|
-
this.
|
|
33
|
+
this.logError(`SMS profile traits request failure - ${this.settings.spaceId} - [${error}]`);
|
|
81
34
|
throw new actions_core_1.IntegrationError('Unable to get profile traits for SMS message', 'SMS trait fetch failure', 500);
|
|
82
35
|
}
|
|
83
36
|
};
|
|
84
37
|
this.getContentTemplate = async () => {
|
|
85
38
|
const twilioToken = Buffer.from(`${this.settings.twilioApiKeySID}:${this.settings.twilioApiKeySecret}`).toString('base64');
|
|
86
39
|
try {
|
|
87
|
-
this.
|
|
40
|
+
this.logInfo("Get content template from Twilio by ContentSID");
|
|
88
41
|
const response = await this.request(`https://content.twilio.com/v1/Content/${this.payload.contentSid}`, {
|
|
89
42
|
method: 'GET',
|
|
90
43
|
headers: {
|
|
@@ -97,13 +50,13 @@ class SmsMessageSender extends message_sender_1.MessageSender {
|
|
|
97
50
|
catch (error) {
|
|
98
51
|
this.tags.push('reason:get_content_template');
|
|
99
52
|
this.statsClient?.incr('actions-personas-messaging-twilio.error', 1, this.tags);
|
|
100
|
-
this.
|
|
53
|
+
this.logError(`SMS failed request to fetch content template from Twilio Content API - ${this.settings.spaceId}, ${JSON.stringify(error)})}`);
|
|
101
54
|
throw new actions_core_1.IntegrationError('Unable to fetch content template', 'Twilio Content API request failure', 500);
|
|
102
55
|
}
|
|
103
56
|
};
|
|
104
57
|
this.getUnparsedContent = (data) => {
|
|
105
58
|
if (!data.types) {
|
|
106
|
-
this.
|
|
59
|
+
this.logError(`SMS template from Twilio Content API does not contain a template type - ${this.settings.spaceId} - [${JSON.stringify(data)}]`);
|
|
107
60
|
throw new actions_core_1.IntegrationError('Unexpected response from Twilio Content API', `SMS template does not contain a template type`, 500);
|
|
108
61
|
}
|
|
109
62
|
const type = Object.keys(data.types)[0];
|
|
@@ -111,11 +64,61 @@ class SmsMessageSender extends message_sender_1.MessageSender {
|
|
|
111
64
|
return { body: data.types[type].body, media: data.types[type].media };
|
|
112
65
|
}
|
|
113
66
|
else {
|
|
114
|
-
this.
|
|
67
|
+
this.logError(`SMS unsupported content template type '${type}' - ${this.settings.spaceId}`);
|
|
115
68
|
throw new actions_core_1.IntegrationError('Unsupported content type', `Sending templates with '${type}' content type is not supported by SMS`, 400);
|
|
116
69
|
}
|
|
117
70
|
};
|
|
118
71
|
}
|
|
72
|
+
async getBody(phone) {
|
|
73
|
+
if (!this.payload.body && !this.payload.contentSid) {
|
|
74
|
+
this.logError(`Unable to process SMS, no body provided and no content sid provided - ${this.settings.spaceId}`);
|
|
75
|
+
throw new actions_core_1.PayloadValidationError('Unable to process sms, no body provided and no content sid provided');
|
|
76
|
+
}
|
|
77
|
+
let traits;
|
|
78
|
+
if (this.payload.traitEnrichment) {
|
|
79
|
+
traits = this.payload?.traits ? this.payload?.traits : {};
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
traits = await this.getProfileTraits();
|
|
83
|
+
}
|
|
84
|
+
const profile = {
|
|
85
|
+
user_id: this.payload.userId ?? undefined,
|
|
86
|
+
phone,
|
|
87
|
+
traits
|
|
88
|
+
};
|
|
89
|
+
let parsedBody;
|
|
90
|
+
let parsedMedia = [];
|
|
91
|
+
if (this.payload.contentSid) {
|
|
92
|
+
const data = await this.getContentTemplate();
|
|
93
|
+
const parsed = await this.parseContent(this.getUnparsedContent(data), profile);
|
|
94
|
+
parsedBody = parsed.body;
|
|
95
|
+
parsedMedia = parsed.media;
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
const parsed = await this.parseContent({ body: this.payload.body ?? '', media: this.payload.media ?? [] }, profile);
|
|
99
|
+
parsedBody = parsed.body;
|
|
100
|
+
parsedMedia = parsed.media;
|
|
101
|
+
}
|
|
102
|
+
const body = new URLSearchParams({
|
|
103
|
+
Body: parsedBody,
|
|
104
|
+
From: this.payload.from,
|
|
105
|
+
To: phone,
|
|
106
|
+
ShortenUrls: 'true'
|
|
107
|
+
});
|
|
108
|
+
parsedMedia?.forEach((media) => {
|
|
109
|
+
body.append('MediaUrl', media);
|
|
110
|
+
});
|
|
111
|
+
return body;
|
|
112
|
+
}
|
|
113
|
+
getChannelType() {
|
|
114
|
+
return 'sms';
|
|
115
|
+
}
|
|
116
|
+
isValidExternalId(externalId) {
|
|
117
|
+
if (externalId.type !== 'phone') {
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
return !externalId.channelType || externalId.channelType.toLowerCase() === this.getChannelType();
|
|
121
|
+
}
|
|
119
122
|
async parseContent(content, profile) {
|
|
120
123
|
try {
|
|
121
124
|
return {
|
|
@@ -124,7 +127,7 @@ class SmsMessageSender extends message_sender_1.MessageSender {
|
|
|
124
127
|
};
|
|
125
128
|
}
|
|
126
129
|
catch (error) {
|
|
127
|
-
this.
|
|
130
|
+
this.logError(`SMS templating parse failure - ${this.settings.spaceId} - [${error}]`);
|
|
128
131
|
throw new actions_core_1.IntegrationError(`Unable to parse templating in SMS`, `SMS templating parse failure`, 400);
|
|
129
132
|
}
|
|
130
133
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sms-sender.js","sourceRoot":"","sources":["../../../../src/destinations/engage-messaging-twilio/sendSms/sms-sender.ts"],"names":[],"mappings":";;;AACA,uCAA6C;
|
|
1
|
+
{"version":3,"file":"sms-sender.js","sourceRoot":"","sources":["../../../../src/destinations/engage-messaging-twilio/sendSms/sms-sender.ts"],"names":[],"mappings":"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"}
|
|
@@ -119,14 +119,15 @@ const action = {
|
|
|
119
119
|
}
|
|
120
120
|
}
|
|
121
121
|
},
|
|
122
|
-
perform: async (request,
|
|
122
|
+
perform: async (request, data) => {
|
|
123
|
+
const { settings, payload, statsContext, logger } = data;
|
|
123
124
|
const statsClient = statsContext?.statsClient;
|
|
124
125
|
const tags = statsContext?.tags || [];
|
|
125
126
|
if (!settings.region) {
|
|
126
127
|
settings.region = 'us-west-1';
|
|
127
128
|
}
|
|
128
|
-
tags.push(`space_id:${settings.spaceId}`, `projectid:${settings.sourceId}`, `region:${settings.region}`);
|
|
129
|
-
return new whatsapp_sender_1.WhatsAppMessageSender(request, payload, settings, statsClient, tags, logger).send();
|
|
129
|
+
tags.push(`space_id:${settings.spaceId}`, `projectid:${settings.sourceId}`, `region:${settings.region}`, `channel:whatsapp`);
|
|
130
|
+
return new whatsapp_sender_1.WhatsAppMessageSender(request, payload, settings, statsClient, tags, logger, data).send();
|
|
130
131
|
}
|
|
131
132
|
};
|
|
132
133
|
exports.default = action;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/engage-messaging-twilio/sendWhatsApp/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/engage-messaging-twilio/sendWhatsApp/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +1,7 @@
|
|
|
1
|
-
import type { Settings } from '../generated-types';
|
|
2
1
|
import type { Payload } from './generated-types';
|
|
3
|
-
import {
|
|
4
|
-
import { Logger, StatsClient, StatsContext } from '@segment/actions-core/src/destination-kit';
|
|
2
|
+
import { MessageSender } from '../utils/message-sender';
|
|
5
3
|
export declare class WhatsAppMessageSender extends MessageSender<Payload> {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
readonly settings: Settings;
|
|
9
|
-
readonly statsClient: StatsClient | undefined;
|
|
10
|
-
readonly tags: StatsContext['tags'];
|
|
11
|
-
readonly logger: Logger | undefined;
|
|
12
|
-
constructor(request: RequestFn, payload: Payload, settings: Settings, statsClient: StatsClient | undefined, tags: StatsContext['tags'], logger: Logger | undefined);
|
|
13
|
-
getExternalId: () => {
|
|
14
|
-
id?: string | undefined;
|
|
15
|
-
type?: string | undefined;
|
|
16
|
-
channelType?: string | undefined;
|
|
17
|
-
subscriptionStatus?: string | undefined;
|
|
18
|
-
} | undefined;
|
|
19
|
-
getBody: (phone: string) => Promise<URLSearchParams>;
|
|
4
|
+
getChannelType(): string;
|
|
5
|
+
getBody(phone: string): Promise<URLSearchParams>;
|
|
20
6
|
private getVariables;
|
|
21
7
|
}
|
|
@@ -8,42 +8,8 @@ const google_libphonenumber_1 = require("google-libphonenumber");
|
|
|
8
8
|
const phoneUtil = google_libphonenumber_1.PhoneNumberUtil.getInstance();
|
|
9
9
|
const Liquid = new liquidjs_1.Liquid();
|
|
10
10
|
class WhatsAppMessageSender extends message_sender_1.MessageSender {
|
|
11
|
-
constructor(
|
|
12
|
-
super(
|
|
13
|
-
this.request = request;
|
|
14
|
-
this.payload = payload;
|
|
15
|
-
this.settings = settings;
|
|
16
|
-
this.statsClient = statsClient;
|
|
17
|
-
this.tags = tags;
|
|
18
|
-
this.logger = logger;
|
|
19
|
-
this.getExternalId = () => this.payload.externalIds?.find(({ type, channelType }) => channelType?.toLowerCase() === 'whatsapp' && type === 'phone');
|
|
20
|
-
this.getBody = async (phone) => {
|
|
21
|
-
let parsedPhone;
|
|
22
|
-
try {
|
|
23
|
-
parsedPhone = phoneUtil.parse(phone, 'US');
|
|
24
|
-
parsedPhone = phoneUtil.format(parsedPhone, google_libphonenumber_1.PhoneNumberFormat.E164);
|
|
25
|
-
parsedPhone = `whatsapp:${parsedPhone}`;
|
|
26
|
-
}
|
|
27
|
-
catch (error) {
|
|
28
|
-
this.tags.push('type:invalid_phone_e164');
|
|
29
|
-
this.logger?.error(`TE Messaging: WhatsApp invalid phone number - ${this.settings.spaceId} - [${error}]`);
|
|
30
|
-
this.statsClient?.incr('actions-personas-messaging-twilio.error', 1, this.tags);
|
|
31
|
-
throw new actions_core_1.IntegrationError('The string supplied did not seem to be a phone number. Phone number must be able to be formatted to e164 for whatsapp.', `INVALID_PHONE`, 400);
|
|
32
|
-
}
|
|
33
|
-
if (!this.payload.contentSid) {
|
|
34
|
-
this.logger?.error(`TE Messaging: A valid WhatsApp Content SID was not provided - ${this.settings.spaceId}`);
|
|
35
|
-
throw new actions_core_1.IntegrationError('A valid whatsApp Content SID was not provided.', `INVALID_CONTENT_SID`, 400);
|
|
36
|
-
}
|
|
37
|
-
const params = {
|
|
38
|
-
ContentSid: this.payload.contentSid,
|
|
39
|
-
From: this.payload.from,
|
|
40
|
-
To: parsedPhone
|
|
41
|
-
};
|
|
42
|
-
const contentVariables = await this.getVariables();
|
|
43
|
-
if (contentVariables)
|
|
44
|
-
params['ContentVariables'] = contentVariables;
|
|
45
|
-
return new URLSearchParams(params);
|
|
46
|
-
};
|
|
11
|
+
constructor() {
|
|
12
|
+
super(...arguments);
|
|
47
13
|
this.getVariables = async () => {
|
|
48
14
|
try {
|
|
49
15
|
if (!this.payload.traitEnrichment && this.payload.contentVariables)
|
|
@@ -65,11 +31,41 @@ class WhatsAppMessageSender extends message_sender_1.MessageSender {
|
|
|
65
31
|
return JSON.stringify(mapping);
|
|
66
32
|
}
|
|
67
33
|
catch (error) {
|
|
68
|
-
this.
|
|
34
|
+
this.logError(`Failed to parse WhatsApp template with content variables - ${this.settings.spaceId} - [${error}]`);
|
|
69
35
|
throw new actions_core_1.IntegrationError(`Unable to parse templating in content variables`, `Content variables templating parse failure`, 400);
|
|
70
36
|
}
|
|
71
37
|
};
|
|
72
38
|
}
|
|
39
|
+
getChannelType() {
|
|
40
|
+
return 'whatsapp';
|
|
41
|
+
}
|
|
42
|
+
async getBody(phone) {
|
|
43
|
+
let parsedPhone;
|
|
44
|
+
try {
|
|
45
|
+
parsedPhone = phoneUtil.parse(phone, 'US');
|
|
46
|
+
parsedPhone = phoneUtil.format(parsedPhone, google_libphonenumber_1.PhoneNumberFormat.E164);
|
|
47
|
+
parsedPhone = `whatsapp:${parsedPhone}`;
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
this.tags.push('type:invalid_phone_e164');
|
|
51
|
+
this.logError(`WhatsApp invalid phone number - ${this.settings.spaceId} - [${error}]`);
|
|
52
|
+
this.statsClient?.incr('actions-personas-messaging-twilio.error', 1, this.tags);
|
|
53
|
+
throw new actions_core_1.IntegrationError('The string supplied did not seem to be a phone number. Phone number must be able to be formatted to e164 for whatsapp.', `INVALID_PHONE`, 400);
|
|
54
|
+
}
|
|
55
|
+
if (!this.payload.contentSid) {
|
|
56
|
+
this.logError(`A valid WhatsApp Content SID was not provided - ${this.settings.spaceId}`);
|
|
57
|
+
throw new actions_core_1.IntegrationError('A valid whatsApp Content SID was not provided.', `INVALID_CONTENT_SID`, 400);
|
|
58
|
+
}
|
|
59
|
+
const params = {
|
|
60
|
+
ContentSid: this.payload.contentSid,
|
|
61
|
+
From: this.payload.from,
|
|
62
|
+
To: parsedPhone
|
|
63
|
+
};
|
|
64
|
+
const contentVariables = await this.getVariables();
|
|
65
|
+
if (contentVariables)
|
|
66
|
+
params['ContentVariables'] = contentVariables;
|
|
67
|
+
return new URLSearchParams(params);
|
|
68
|
+
}
|
|
73
69
|
}
|
|
74
70
|
exports.WhatsAppMessageSender = WhatsAppMessageSender;
|
|
75
71
|
//# sourceMappingURL=whatsapp-sender.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"whatsapp-sender.js","sourceRoot":"","sources":["../../../../src/destinations/engage-messaging-twilio/sendWhatsApp/whatsapp-sender.ts"],"names":[],"mappings":";;;AACA,uCAA6C;
|
|
1
|
+
{"version":3,"file":"whatsapp-sender.js","sourceRoot":"","sources":["../../../../src/destinations/engage-messaging-twilio/sendWhatsApp/whatsapp-sender.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,29 +1,35 @@
|
|
|
1
1
|
import type { RequestOptions } from '@segment/actions-core';
|
|
2
2
|
import type { Settings } from '../generated-types';
|
|
3
|
-
import type { Payload } from '../sendSms/generated-types';
|
|
3
|
+
import type { Payload as SmsPayload } from '../sendSms/generated-types';
|
|
4
|
+
import type { Payload as WhatsappPayload } from '../sendWhatsApp/generated-types';
|
|
4
5
|
import { Logger, StatsClient, StatsContext } from '@segment/actions-core/src/destination-kit';
|
|
6
|
+
import { ExecuteInput } from '@segment/actions-core';
|
|
5
7
|
export declare type RequestFn = (url: string, options?: RequestOptions) => Promise<Response>;
|
|
6
|
-
declare
|
|
7
|
-
export declare abstract class MessageSender<SmsPayload extends MinimalPayload> {
|
|
8
|
+
export declare abstract class MessageSender<MessagePayload extends SmsPayload | WhatsappPayload> {
|
|
8
9
|
readonly request: RequestFn;
|
|
9
|
-
readonly payload:
|
|
10
|
+
readonly payload: MessagePayload;
|
|
10
11
|
readonly settings: Settings;
|
|
11
12
|
readonly statsClient: StatsClient | undefined;
|
|
12
13
|
readonly tags: StatsContext['tags'];
|
|
13
14
|
readonly logger: Logger | undefined;
|
|
14
|
-
readonly
|
|
15
|
-
|
|
16
|
-
};
|
|
15
|
+
readonly executeInput: ExecuteInput<Settings, MessagePayload>;
|
|
16
|
+
readonly logDetails: Record<string, unknown>;
|
|
17
17
|
private readonly EXTERNAL_ID_KEY;
|
|
18
18
|
private readonly DEFAULT_HOSTNAME;
|
|
19
19
|
private readonly DEFAULT_CONNECTION_OVERRIDES;
|
|
20
|
-
constructor(request: RequestFn, payload:
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
20
|
+
constructor(request: RequestFn, payload: MessagePayload, settings: Settings, statsClient: StatsClient | undefined, tags: StatsContext['tags'], logger: Logger | undefined, executeInput: ExecuteInput<Settings, MessagePayload>, logDetails?: Record<string, unknown>);
|
|
21
|
+
abstract getBody(phone: string): Promise<URLSearchParams>;
|
|
22
|
+
abstract getChannelType(): string;
|
|
23
|
+
isValidExternalId(externalId: NonNullable<MessagePayload['externalIds']>[number]): boolean;
|
|
24
|
+
redactPii(pii: string | undefined): string | undefined;
|
|
25
|
+
logInfo(...msgs: string[]): void;
|
|
26
|
+
logError(error?: any, ...msgs: string[]): void;
|
|
27
|
+
private static isPromise;
|
|
28
|
+
logWrap<R = void>(messages: string[], fn: () => R): R;
|
|
29
|
+
initLogDetails(): void;
|
|
30
|
+
send(): Promise<Response | undefined>;
|
|
31
|
+
static nonSendableStatuses: string[];
|
|
32
|
+
static sendableStatuses: string[];
|
|
26
33
|
private getSendabilityPayload;
|
|
27
34
|
private getWebhookUrlWithParams;
|
|
28
35
|
}
|
|
29
|
-
export {};
|