@awell-health/awell-extensions 2.1.89 → 2.1.91
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/extensions/text-em-all/actions/createSMSBroadcast/__testdata__/CreateSMSBroadcast.mock.d.ts +39 -17
- package/dist/extensions/text-em-all/actions/createSMSBroadcast/__testdata__/CreateSMSBroadcast.mock.js +40 -18
- package/dist/extensions/text-em-all/actions/createSMSBroadcast/__testdata__/CreateSMSBroadcast.mock.js.map +1 -1
- package/dist/extensions/text-em-all/actions/createSMSBroadcast/config.d.ts +39 -0
- package/dist/extensions/text-em-all/actions/createSMSBroadcast/config.js +39 -1
- package/dist/extensions/text-em-all/actions/createSMSBroadcast/config.js.map +1 -1
- package/dist/extensions/text-em-all/actions/createSMSBroadcast/createSMSBroadcast.js +69 -14
- package/dist/extensions/text-em-all/actions/createSMSBroadcast/createSMSBroadcast.js.map +1 -1
- package/dist/extensions/text-em-all/actions/index.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Mock response for successful broadcast creation.
|
|
3
|
+
*/
|
|
4
|
+
export declare const CreateSMSBroadcastSuccessMockResponse: {
|
|
2
5
|
status: number;
|
|
3
6
|
statusText: string;
|
|
4
7
|
headers: {
|
|
@@ -35,21 +38,40 @@ export declare const CreateSMSBroadcastMockResponse: {
|
|
|
35
38
|
State: null;
|
|
36
39
|
Permissions: null;
|
|
37
40
|
};
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Mock response for invalid/opted-out phone number.
|
|
45
|
+
* ErrorCode 3005 = NoValidBroadcastContacts
|
|
46
|
+
*/
|
|
47
|
+
export declare const InvalidNumberMockResponse: {
|
|
48
|
+
status: number;
|
|
49
|
+
statusText: string;
|
|
50
|
+
data: {
|
|
51
|
+
ErrorCode: number;
|
|
52
|
+
ErrorName: string;
|
|
53
|
+
ErrorType: string;
|
|
54
|
+
Message: string;
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Mock response for rate limiting (429).
|
|
59
|
+
*/
|
|
60
|
+
export declare const RateLimitMockResponse: {
|
|
61
|
+
status: number;
|
|
62
|
+
statusText: string;
|
|
63
|
+
data: {};
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Mock response for generic API error.
|
|
67
|
+
*/
|
|
68
|
+
export declare const GenericErrorMockResponse: {
|
|
69
|
+
status: number;
|
|
70
|
+
statusText: string;
|
|
71
|
+
data: {
|
|
72
|
+
ErrorCode: number;
|
|
73
|
+
ErrorName: string;
|
|
74
|
+
ErrorType: string;
|
|
75
|
+
Message: string;
|
|
54
76
|
};
|
|
55
77
|
};
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
|
|
3
|
+
exports.GenericErrorMockResponse = exports.RateLimitMockResponse = exports.InvalidNumberMockResponse = exports.CreateSMSBroadcastSuccessMockResponse = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Mock response for successful broadcast creation.
|
|
6
|
+
*/
|
|
7
|
+
exports.CreateSMSBroadcastSuccessMockResponse = {
|
|
5
8
|
status: 200,
|
|
6
9
|
statusText: 'OK',
|
|
7
10
|
headers: {
|
|
@@ -38,22 +41,41 @@ exports.CreateSMSBroadcastMockResponse = {
|
|
|
38
41
|
State: null,
|
|
39
42
|
Permissions: null,
|
|
40
43
|
},
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Mock response for invalid/opted-out phone number.
|
|
48
|
+
* ErrorCode 3005 = NoValidBroadcastContacts
|
|
49
|
+
*/
|
|
50
|
+
exports.InvalidNumberMockResponse = {
|
|
51
|
+
status: 400,
|
|
52
|
+
statusText: 'Bad Request',
|
|
53
|
+
data: {
|
|
54
|
+
ErrorCode: 3005,
|
|
55
|
+
ErrorName: 'NoValidBroadcastContacts',
|
|
56
|
+
ErrorType: 'Informational',
|
|
57
|
+
Message: 'Unable to create broadcast. None of the contacts are able to receive text messages.',
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* Mock response for rate limiting (429).
|
|
62
|
+
*/
|
|
63
|
+
exports.RateLimitMockResponse = {
|
|
64
|
+
status: 429,
|
|
65
|
+
statusText: 'Too Many Requests',
|
|
66
|
+
data: {},
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Mock response for generic API error.
|
|
70
|
+
*/
|
|
71
|
+
exports.GenericErrorMockResponse = {
|
|
72
|
+
status: 400,
|
|
73
|
+
statusText: 'Bad Request',
|
|
74
|
+
data: {
|
|
75
|
+
ErrorCode: 9999,
|
|
76
|
+
ErrorName: 'SomeOtherError',
|
|
77
|
+
ErrorType: 'Error',
|
|
78
|
+
Message: 'Something went wrong',
|
|
57
79
|
},
|
|
58
80
|
};
|
|
59
81
|
//# sourceMappingURL=CreateSMSBroadcast.mock.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateSMSBroadcast.mock.js","sourceRoot":"","sources":["../../../../../../extensions/text-em-all/actions/createSMSBroadcast/__testdata__/CreateSMSBroadcast.mock.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"CreateSMSBroadcast.mock.js","sourceRoot":"","sources":["../../../../../../extensions/text-em-all/actions/createSMSBroadcast/__testdata__/CreateSMSBroadcast.mock.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACU,QAAA,qCAAqC,GAAG;IACnD,MAAM,EAAE,GAAG;IACX,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE;QACP,QAAQ,EAAE,oDAAoD;KAC/D;IACD,IAAI,EAAE;QACJ,GAAG,EAAE,yBAAyB;QAC9B,mBAAmB,EAAE,iCAAiC;QACtD,WAAW,EAAE,QAAQ;QACrB,aAAa,EAAE,eAAe;QAC9B,aAAa,EAAE,KAAK;QACpB,eAAe,EAAE,uBAAuB;QACxC,uBAAuB,EAAE,WAAW;QACpC,WAAW,EAAE,0BAA0B;QACvC,SAAS,EAAE,0BAA0B;QACrC,aAAa,EAAE,IAAI;QACnB,YAAY,EAAE,YAAY;QAC1B,WAAW,EAAE,4CAA4C;QACzD,WAAW,EAAE,IAAI;QACjB,aAAa,EAAE,CAAC;QAChB,gBAAgB,EAAE,CAAC;QACnB,cAAc,EAAE,CAAC;QACjB,IAAI,EAAE;YACJ,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,KAAK;YACnB,SAAS,EAAE,IAAI;YACf,KAAK,EAAE,IAAI;YACX,WAAW,EAAE,IAAI;SAClB;KACF;CAC+B,CAAA;AAElC;;;GAGG;AACU,QAAA,yBAAyB,GAAG;IACvC,MAAM,EAAE,GAAG;IACX,UAAU,EAAE,aAAa;IACzB,IAAI,EAAE;QACJ,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,0BAA0B;QACrC,SAAS,EAAE,eAAe;QAC1B,OAAO,EACL,qFAAqF;KACxF;CAC+B,CAAA;AAElC;;GAEG;AACU,QAAA,qBAAqB,GAAG;IACnC,MAAM,EAAE,GAAG;IACX,UAAU,EAAE,mBAAmB;IAC/B,IAAI,EAAE,EAAE;CACwB,CAAA;AAElC;;GAEG;AACU,QAAA,wBAAwB,GAAG;IACtC,MAAM,EAAE,GAAG;IACX,UAAU,EAAE,aAAa;IACzB,IAAI,EAAE;QACJ,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,gBAAgB;QAC3B,SAAS,EAAE,OAAO;QAClB,OAAO,EAAE,sBAAsB;KAChC;CAC+B,CAAA"}
|
|
@@ -38,7 +38,27 @@ export declare const fields: {
|
|
|
38
38
|
description: string;
|
|
39
39
|
};
|
|
40
40
|
};
|
|
41
|
+
/**
|
|
42
|
+
* Result types for SMS broadcast creation.
|
|
43
|
+
* - 'sent': Broadcast created successfully, message sent to carrier
|
|
44
|
+
* - 'invalid_number': Phone number is invalid or recipient cannot receive texts (opted out, etc.)
|
|
45
|
+
* - 'failed': Other API errors
|
|
46
|
+
*/
|
|
47
|
+
export declare const DeliveryResultType: {
|
|
48
|
+
readonly SENT: "sent";
|
|
49
|
+
readonly INVALID_NUMBER: "invalid_number";
|
|
50
|
+
readonly FAILED: "failed";
|
|
51
|
+
};
|
|
52
|
+
export type DeliveryResult = (typeof DeliveryResultType)[keyof typeof DeliveryResultType];
|
|
41
53
|
export declare const dataPoints: {
|
|
54
|
+
/**
|
|
55
|
+
* Whether the SMS was sent successfully.
|
|
56
|
+
* true = message sent to carrier, false = failed (invalid number, opted out, etc.)
|
|
57
|
+
*/
|
|
58
|
+
success: {
|
|
59
|
+
key: string;
|
|
60
|
+
valueType: "boolean";
|
|
61
|
+
};
|
|
42
62
|
broadcastId: {
|
|
43
63
|
key: string;
|
|
44
64
|
valueType: "number";
|
|
@@ -59,6 +79,25 @@ export declare const dataPoints: {
|
|
|
59
79
|
key: string;
|
|
60
80
|
valueType: "string";
|
|
61
81
|
};
|
|
82
|
+
/**
|
|
83
|
+
* The result of the SMS broadcast creation.
|
|
84
|
+
* Possible values:
|
|
85
|
+
* - 'sent': Broadcast created, message sent to carrier for delivery
|
|
86
|
+
* - 'invalid_number': Phone number is invalid or recipient cannot receive texts
|
|
87
|
+
* - 'failed': Other API errors
|
|
88
|
+
*/
|
|
89
|
+
deliveryResult: {
|
|
90
|
+
key: string;
|
|
91
|
+
valueType: "string";
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* Additional details about the result.
|
|
95
|
+
* Contains the error message from Text-Em-All for failed requests.
|
|
96
|
+
*/
|
|
97
|
+
deliveryResultDetails: {
|
|
98
|
+
key: string;
|
|
99
|
+
valueType: "string";
|
|
100
|
+
};
|
|
62
101
|
};
|
|
63
102
|
export declare const FieldsSchema: z.ZodObject<{
|
|
64
103
|
broadcastName: z.ZodString;
|
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.FieldsSchema = exports.dataPoints = exports.fields = void 0;
|
|
6
|
+
exports.FieldsSchema = exports.dataPoints = exports.DeliveryResultType = exports.fields = void 0;
|
|
7
7
|
const zod_1 = require("zod");
|
|
8
8
|
const extensions_core_1 = require("@awell-health/extensions-core");
|
|
9
9
|
const libphonenumber_js_1 = require("libphonenumber-js");
|
|
@@ -47,7 +47,26 @@ exports.fields = {
|
|
|
47
47
|
description: 'The time the broadcast should start. Will default to start immediately. If provided must be a datetime as ISO 8601 string and time to send the message in UTC',
|
|
48
48
|
},
|
|
49
49
|
};
|
|
50
|
+
/**
|
|
51
|
+
* Result types for SMS broadcast creation.
|
|
52
|
+
* - 'sent': Broadcast created successfully, message sent to carrier
|
|
53
|
+
* - 'invalid_number': Phone number is invalid or recipient cannot receive texts (opted out, etc.)
|
|
54
|
+
* - 'failed': Other API errors
|
|
55
|
+
*/
|
|
56
|
+
exports.DeliveryResultType = {
|
|
57
|
+
SENT: 'sent',
|
|
58
|
+
INVALID_NUMBER: 'invalid_number',
|
|
59
|
+
FAILED: 'failed',
|
|
60
|
+
};
|
|
50
61
|
exports.dataPoints = {
|
|
62
|
+
/**
|
|
63
|
+
* Whether the SMS was sent successfully.
|
|
64
|
+
* true = message sent to carrier, false = failed (invalid number, opted out, etc.)
|
|
65
|
+
*/
|
|
66
|
+
success: {
|
|
67
|
+
key: 'success',
|
|
68
|
+
valueType: 'boolean',
|
|
69
|
+
},
|
|
51
70
|
broadcastId: {
|
|
52
71
|
key: 'broadcastId',
|
|
53
72
|
valueType: 'number',
|
|
@@ -68,6 +87,25 @@ exports.dataPoints = {
|
|
|
68
87
|
key: 'broadcastStartDate',
|
|
69
88
|
valueType: 'string',
|
|
70
89
|
},
|
|
90
|
+
/**
|
|
91
|
+
* The result of the SMS broadcast creation.
|
|
92
|
+
* Possible values:
|
|
93
|
+
* - 'sent': Broadcast created, message sent to carrier for delivery
|
|
94
|
+
* - 'invalid_number': Phone number is invalid or recipient cannot receive texts
|
|
95
|
+
* - 'failed': Other API errors
|
|
96
|
+
*/
|
|
97
|
+
deliveryResult: {
|
|
98
|
+
key: 'deliveryResult',
|
|
99
|
+
valueType: 'string',
|
|
100
|
+
},
|
|
101
|
+
/**
|
|
102
|
+
* Additional details about the result.
|
|
103
|
+
* Contains the error message from Text-Em-All for failed requests.
|
|
104
|
+
*/
|
|
105
|
+
deliveryResultDetails: {
|
|
106
|
+
key: 'deliveryResultDetails',
|
|
107
|
+
valueType: 'string',
|
|
108
|
+
},
|
|
71
109
|
};
|
|
72
110
|
exports.FieldsSchema = zod_1.z.object({
|
|
73
111
|
broadcastName: zod_1.z.string(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../../extensions/text-em-all/actions/createSMSBroadcast/config.ts"],"names":[],"mappings":";;;;;;AAAA,6BAAuB;AAEvB,mEAMsC;AACtC,yDAAoD;AACpD,mCAA8B;AAC9B,6DAAoC;AAEvB,QAAA,MAAM,GAAG;IACpB,aAAa,EAAE;QACb,EAAE,EAAE,eAAe;QACnB,KAAK,EAAE,gBAAgB;QACvB,IAAI,EAAE,2BAAS,CAAC,MAAM;QACtB,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,4BAA4B;KAC1C;IACD,WAAW,EAAE;QACX,EAAE,EAAE,aAAa;QACjB,KAAK,EAAE,cAAc;QACrB,IAAI,EAAE,2BAAS,CAAC,MAAM;QACtB,UAAU,EAAE,4BAAU,CAAC,KAAK;QAC5B,QAAQ,EAAE,IAAI;QACd,WAAW,EACT,+GAA+G;KAClH;IACD,WAAW,EAAE;QACX,EAAE,EAAE,aAAa;QACjB,KAAK,EAAE,cAAc;QACrB,IAAI,EAAE,2BAAS,CAAC,IAAI;QACpB,QAAQ,EAAE,IAAI;QACd,WAAW,EACT,4GAA4G;KAC/G;IACD,YAAY,EAAE;QACZ,EAAE,EAAE,cAAc;QAClB,KAAK,EAAE,gBAAgB;QACvB,IAAI,EAAE,2BAAS,CAAC,OAAO;QACvB,QAAQ,EAAE,KAAK;QACf,WAAW,EACT,8HAA8H;KACjI;IACD,SAAS,EAAE;QACT,EAAE,EAAE,WAAW;QACf,KAAK,EAAE,YAAY;QACnB,IAAI,EAAE,2BAAS,CAAC,IAAI;QACpB,QAAQ,EAAE,KAAK;QACf,WAAW,EACT,+JAA+J;KAClK;CACe,CAAA;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../../extensions/text-em-all/actions/createSMSBroadcast/config.ts"],"names":[],"mappings":";;;;;;AAAA,6BAAuB;AAEvB,mEAMsC;AACtC,yDAAoD;AACpD,mCAA8B;AAC9B,6DAAoC;AAEvB,QAAA,MAAM,GAAG;IACpB,aAAa,EAAE;QACb,EAAE,EAAE,eAAe;QACnB,KAAK,EAAE,gBAAgB;QACvB,IAAI,EAAE,2BAAS,CAAC,MAAM;QACtB,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,4BAA4B;KAC1C;IACD,WAAW,EAAE;QACX,EAAE,EAAE,aAAa;QACjB,KAAK,EAAE,cAAc;QACrB,IAAI,EAAE,2BAAS,CAAC,MAAM;QACtB,UAAU,EAAE,4BAAU,CAAC,KAAK;QAC5B,QAAQ,EAAE,IAAI;QACd,WAAW,EACT,+GAA+G;KAClH;IACD,WAAW,EAAE;QACX,EAAE,EAAE,aAAa;QACjB,KAAK,EAAE,cAAc;QACrB,IAAI,EAAE,2BAAS,CAAC,IAAI;QACpB,QAAQ,EAAE,IAAI;QACd,WAAW,EACT,4GAA4G;KAC/G;IACD,YAAY,EAAE;QACZ,EAAE,EAAE,cAAc;QAClB,KAAK,EAAE,gBAAgB;QACvB,IAAI,EAAE,2BAAS,CAAC,OAAO;QACvB,QAAQ,EAAE,KAAK;QACf,WAAW,EACT,8HAA8H;KACjI;IACD,SAAS,EAAE;QACT,EAAE,EAAE,WAAW;QACf,KAAK,EAAE,YAAY;QACnB,IAAI,EAAE,2BAAS,CAAC,IAAI;QACpB,QAAQ,EAAE,KAAK;QACf,WAAW,EACT,+JAA+J;KAClK;CACe,CAAA;AAElB;;;;;GAKG;AACU,QAAA,kBAAkB,GAAG;IAChC,IAAI,EAAE,MAAM;IACZ,cAAc,EAAE,gBAAgB;IAChC,MAAM,EAAE,QAAQ;CACR,CAAA;AAKG,QAAA,UAAU,GAAG;IACxB;;;OAGG;IACH,OAAO,EAAE;QACP,GAAG,EAAE,SAAS;QACd,SAAS,EAAE,SAAS;KACrB;IACD,WAAW,EAAE;QACX,GAAG,EAAE,aAAa;QAClB,SAAS,EAAE,QAAQ;KACpB;IACD,eAAe,EAAE;QACf,GAAG,EAAE,iBAAiB;QACtB,SAAS,EAAE,QAAQ;KACpB;IACD,mBAAmB,EAAE;QACnB,GAAG,EAAE,qBAAqB;QAC1B,SAAS,EAAE,QAAQ;KACpB;IACD,uBAAuB,EAAE;QACvB,GAAG,EAAE,yBAAyB;QAC9B,SAAS,EAAE,QAAQ;KACpB;IACD,kBAAkB,EAAE;QAClB,GAAG,EAAE,oBAAoB;QACzB,SAAS,EAAE,QAAQ;KACpB;IACD;;;;;;OAMG;IACH,cAAc,EAAE;QACd,GAAG,EAAE,gBAAgB;QACrB,SAAS,EAAE,QAAQ;KACpB;IACD;;;OAGG;IACH,qBAAqB,EAAE;QACrB,GAAG,EAAE,uBAAuB;QAC5B,SAAS,EAAE,QAAQ;KACpB;CAC4C,CAAA;AAElC,QAAA,YAAY,GAAG,OAAC,CAAC,MAAM,CAAC;IACnC,aAAa,EAAE,OAAC,CAAC,MAAM,EAAE;IACzB,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;QAC1C,MAAM,YAAY,GAAG,IAAA,oCAAgB,EAAC,KAAK,CAAC,CAAA;QAC5C,OAAO,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA,CAAC,uCAAuC;IAChF,CAAC,CAAC;IACF,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE;IACvB,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,SAAS,EAAE,gCAAc,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE;QACtD,IAAI,IAAA,cAAK,EAAC,IAAI,CAAC,IAAI,IAAI,KAAK,EAAE;YAAE,OAAO,SAAS,CAAA;QAChD,wCAAwC;QACxC,OAAO,IAAA,gBAAM,EAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,iBAAiB,CAAC,CAAA;IAClD,CAAC,CAAC;CACH,CAAC,CAAA"}
|
|
@@ -6,15 +6,38 @@ const extensions_core_1 = require("@awell-health/extensions-core");
|
|
|
6
6
|
const config_1 = require("./config");
|
|
7
7
|
const settings_1 = require("../../settings");
|
|
8
8
|
const lib_1 = require("../../lib");
|
|
9
|
+
/**
|
|
10
|
+
* Known Text-Em-All error codes and their meanings.
|
|
11
|
+
*/
|
|
12
|
+
const ERROR_CODES = {
|
|
13
|
+
NO_VALID_CONTACTS: 3005, // "NoValidBroadcastContacts" - invalid/opted-out number
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Determines the delivery result based on an error response.
|
|
17
|
+
*/
|
|
18
|
+
function getResultFromError(errorCode, errorName, message) {
|
|
19
|
+
// Handle known error codes
|
|
20
|
+
if (errorCode === ERROR_CODES.NO_VALID_CONTACTS || errorName === 'NoValidBroadcastContacts') {
|
|
21
|
+
return {
|
|
22
|
+
result: config_1.DeliveryResultType.INVALID_NUMBER,
|
|
23
|
+
details: message !== null && message !== void 0 ? message : 'Phone number is invalid or recipient cannot receive text messages',
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
// Default for unknown errors
|
|
27
|
+
return {
|
|
28
|
+
result: config_1.DeliveryResultType.FAILED,
|
|
29
|
+
details: message !== null && message !== void 0 ? message : 'Broadcast creation failed',
|
|
30
|
+
};
|
|
31
|
+
}
|
|
9
32
|
exports.createSMSBroadcast = {
|
|
10
33
|
key: 'createSMSBroadcast',
|
|
11
34
|
title: 'Send a new SMS broadcast',
|
|
12
|
-
description: '
|
|
35
|
+
description: 'Send a text message to a recipient. Returns the delivery result (sent, invalid_number, failed, etc.) for triage purposes.',
|
|
13
36
|
category: extensions_core_1.Category.COMMUNICATION,
|
|
14
37
|
fields: config_1.fields,
|
|
15
38
|
dataPoints: config_1.dataPoints,
|
|
16
39
|
previewable: true,
|
|
17
|
-
onEvent: async ({ payload, onComplete, onError
|
|
40
|
+
onEvent: async ({ payload, onComplete, onError }) => {
|
|
18
41
|
const { fields: { broadcastName: BroadcastName, phoneNumber, textMessage: TextMessage, textNumberID: TextNumberID, startDate: StartDate, }, settings, } = (0, extensions_core_1.validate)({
|
|
19
42
|
schema: zod_1.z.object({ fields: config_1.FieldsSchema, settings: settings_1.SettingsSchema }),
|
|
20
43
|
payload,
|
|
@@ -30,54 +53,86 @@ exports.createSMSBroadcast = {
|
|
|
30
53
|
};
|
|
31
54
|
const resp = await client.createBroadcast(request);
|
|
32
55
|
const data = resp.data;
|
|
56
|
+
// Success - broadcast created
|
|
33
57
|
if (resp.status === 200 && 'BroadcastID' in data) {
|
|
34
58
|
await onComplete({
|
|
35
59
|
events: [
|
|
36
60
|
{
|
|
37
61
|
date: new Date().toISOString(),
|
|
38
62
|
text: {
|
|
39
|
-
en: `
|
|
63
|
+
en: `SMS broadcast created successfully`,
|
|
40
64
|
},
|
|
41
65
|
},
|
|
42
66
|
],
|
|
43
67
|
data_points: {
|
|
68
|
+
success: 'true',
|
|
44
69
|
broadcastId: data.BroadcastID.toString(),
|
|
45
70
|
broadcastStatus: data.BroadcastStatus,
|
|
46
71
|
uriBroadcastDetails: data.UriBroadcastDetails,
|
|
47
72
|
broadcastStatusCategory: data.BroadcastStatusCategory,
|
|
48
73
|
broadcastStartDate: data.StartDate,
|
|
74
|
+
deliveryResult: config_1.DeliveryResultType.SENT,
|
|
75
|
+
deliveryResultDetails: 'Message sent to carrier for delivery',
|
|
49
76
|
},
|
|
50
77
|
});
|
|
78
|
+
return;
|
|
51
79
|
}
|
|
52
|
-
|
|
53
|
-
|
|
80
|
+
// Handle rate limiting (429)
|
|
81
|
+
if (resp.status === 429) {
|
|
54
82
|
await onError({
|
|
55
83
|
events: [
|
|
56
84
|
{
|
|
57
85
|
date: new Date().toISOString(),
|
|
58
|
-
text: { en:
|
|
86
|
+
text: { en: 'Rate limit exceeded. Please try again later.' },
|
|
59
87
|
error: {
|
|
60
|
-
category: '
|
|
61
|
-
message: '
|
|
88
|
+
category: 'SERVER_ERROR',
|
|
89
|
+
message: 'Rate limit exceeded (429)',
|
|
62
90
|
},
|
|
63
91
|
},
|
|
64
92
|
],
|
|
65
93
|
});
|
|
94
|
+
return;
|
|
66
95
|
}
|
|
67
|
-
|
|
68
|
-
|
|
96
|
+
// Handle API errors (400, etc.) - these are valid results, not failures
|
|
97
|
+
if ('ErrorCode' in data || 'ErrorName' in data || 'Message' in data) {
|
|
98
|
+
const errorData = data;
|
|
99
|
+
const { result, details } = getResultFromError(errorData.ErrorCode, errorData.ErrorName, errorData.Message);
|
|
100
|
+
// Return as success with the error result - this is valid triage data
|
|
101
|
+
await onComplete({
|
|
69
102
|
events: [
|
|
70
103
|
{
|
|
71
104
|
date: new Date().toISOString(),
|
|
72
|
-
text: {
|
|
73
|
-
|
|
74
|
-
category: 'SERVER_ERROR',
|
|
75
|
-
message: 'Broadcast creation failed',
|
|
105
|
+
text: {
|
|
106
|
+
en: `SMS broadcast result: ${result} - ${details}`,
|
|
76
107
|
},
|
|
77
108
|
},
|
|
78
109
|
],
|
|
110
|
+
data_points: {
|
|
111
|
+
success: 'false',
|
|
112
|
+
broadcastId: '',
|
|
113
|
+
broadcastStatus: '',
|
|
114
|
+
uriBroadcastDetails: '',
|
|
115
|
+
broadcastStatusCategory: '',
|
|
116
|
+
broadcastStartDate: '',
|
|
117
|
+
deliveryResult: result,
|
|
118
|
+
deliveryResultDetails: details,
|
|
119
|
+
},
|
|
79
120
|
});
|
|
121
|
+
return;
|
|
80
122
|
}
|
|
123
|
+
// Unknown error
|
|
124
|
+
await onError({
|
|
125
|
+
events: [
|
|
126
|
+
{
|
|
127
|
+
date: new Date().toISOString(),
|
|
128
|
+
text: { en: 'Broadcast creation failed with unknown error' },
|
|
129
|
+
error: {
|
|
130
|
+
category: 'SERVER_ERROR',
|
|
131
|
+
message: 'Broadcast creation failed',
|
|
132
|
+
},
|
|
133
|
+
},
|
|
134
|
+
],
|
|
135
|
+
});
|
|
81
136
|
},
|
|
82
137
|
};
|
|
83
138
|
//# sourceMappingURL=createSMSBroadcast.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSMSBroadcast.js","sourceRoot":"","sources":["../../../../../extensions/text-em-all/actions/createSMSBroadcast/createSMSBroadcast.ts"],"names":[],"mappings":";;;AAAA,6BAAuB;AACvB,mEAA+E;AAC/E,
|
|
1
|
+
{"version":3,"file":"createSMSBroadcast.js","sourceRoot":"","sources":["../../../../../extensions/text-em-all/actions/createSMSBroadcast/createSMSBroadcast.ts"],"names":[],"mappings":"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"}
|
|
@@ -58,5 +58,5 @@ export declare const actions: {
|
|
|
58
58
|
required: true;
|
|
59
59
|
description: string;
|
|
60
60
|
};
|
|
61
|
-
}, "broadcastId" | "broadcastStatus" | "uriBroadcastDetails" | "broadcastStatusCategory" | "broadcastStartDate">;
|
|
61
|
+
}, "success" | "broadcastId" | "broadcastStatus" | "uriBroadcastDetails" | "broadcastStatusCategory" | "broadcastStartDate" | "deliveryResult" | "deliveryResultDetails">;
|
|
62
62
|
};
|