@absolutejs/voice 0.0.22-beta.266 → 0.0.22-beta.267
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/index.js +7 -0
- package/dist/telephonyOutcome.d.ts +4 -0
- package/dist/testing/index.js +7 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -17404,6 +17404,8 @@ var evaluateVoiceTelephonyWebhookNormalizationEvidence = (input = {}) => {
|
|
|
17404
17404
|
const duplicateDecisions = decisions.filter((decision) => decision.duplicate === true);
|
|
17405
17405
|
const duplicateProviders = uniqueSorted3(duplicateDecisions.map((decision) => decision.provider ?? decision.event?.provider).filter(isTelephonyWebhookProvider));
|
|
17406
17406
|
const duplicateIdempotencyKeys = new Set(duplicateDecisions.map((decision) => decision.idempotencyKey).filter((key) => typeof key === "string" && key.length > 0)).size;
|
|
17407
|
+
const duplicateCampaignOutcomesApplied = duplicateDecisions.filter((decision) => isRecord(decision.campaignOutcome) && decision.campaignOutcome.applied === true).length;
|
|
17408
|
+
const duplicateOutcomeReasons = uniqueSorted3(duplicateDecisions.map((decision) => isRecord(decision.campaignOutcome) ? decision.campaignOutcome.reason : undefined).filter((reason) => typeof reason === "string"));
|
|
17407
17409
|
const routeResults = decisions.filter((decision) => isRecord(decision.routeResult)).length;
|
|
17408
17410
|
const missingSessionIds = decisions.filter((decision) => !decision.sessionId).length;
|
|
17409
17411
|
if (input.minDecisions !== undefined && decisions.length < input.minDecisions) {
|
|
@@ -17418,6 +17420,9 @@ var evaluateVoiceTelephonyWebhookNormalizationEvidence = (input = {}) => {
|
|
|
17418
17420
|
if (input.minDuplicateIdempotencyKeys !== undefined && duplicateIdempotencyKeys < input.minDuplicateIdempotencyKeys) {
|
|
17419
17421
|
issues.push(`Expected at least ${String(input.minDuplicateIdempotencyKeys)} duplicate telephony webhook idempotency key(s), found ${String(duplicateIdempotencyKeys)}.`);
|
|
17420
17422
|
}
|
|
17423
|
+
if (input.maxDuplicateCampaignOutcomesApplied !== undefined && duplicateCampaignOutcomesApplied > input.maxDuplicateCampaignOutcomesApplied) {
|
|
17424
|
+
issues.push(`Expected at most ${String(input.maxDuplicateCampaignOutcomesApplied)} duplicate telephony webhook campaign outcome application(s), found ${String(duplicateCampaignOutcomesApplied)}.`);
|
|
17425
|
+
}
|
|
17421
17426
|
if (input.maxMissingSessionIds !== undefined && missingSessionIds > input.maxMissingSessionIds) {
|
|
17422
17427
|
issues.push(`Expected at most ${String(input.maxMissingSessionIds)} telephony webhook decision(s) without sessionId, found ${String(missingSessionIds)}.`);
|
|
17423
17428
|
}
|
|
@@ -17441,7 +17446,9 @@ var evaluateVoiceTelephonyWebhookNormalizationEvidence = (input = {}) => {
|
|
|
17441
17446
|
applied,
|
|
17442
17447
|
decisions: decisions.length,
|
|
17443
17448
|
dispositions,
|
|
17449
|
+
duplicateCampaignOutcomesApplied,
|
|
17444
17450
|
duplicateIdempotencyKeys,
|
|
17451
|
+
duplicateOutcomeReasons,
|
|
17445
17452
|
duplicateProviders,
|
|
17446
17453
|
duplicates: duplicateDecisions.length,
|
|
17447
17454
|
issues,
|
|
@@ -75,6 +75,7 @@ export type VoiceTelephonyWebhookNormalizationEvidenceDecision = {
|
|
|
75
75
|
};
|
|
76
76
|
disposition?: VoiceCallDisposition | string;
|
|
77
77
|
duplicate?: boolean;
|
|
78
|
+
campaignOutcome?: unknown;
|
|
78
79
|
event?: VoiceTelephonyOutcomeProviderEvent;
|
|
79
80
|
idempotencyKey?: string;
|
|
80
81
|
provider?: VoiceTelephonyWebhookProvider | string;
|
|
@@ -89,6 +90,7 @@ export type VoiceTelephonyWebhookNormalizationEvidenceInput = {
|
|
|
89
90
|
minDecisions?: number;
|
|
90
91
|
minDuplicateIdempotencyKeys?: number;
|
|
91
92
|
minDuplicates?: number;
|
|
93
|
+
maxDuplicateCampaignOutcomesApplied?: number;
|
|
92
94
|
requiredActions?: VoiceTelephonyOutcomeAction[];
|
|
93
95
|
requiredDispositions?: VoiceCallDisposition[];
|
|
94
96
|
requiredDuplicateProviders?: VoiceTelephonyWebhookProvider[];
|
|
@@ -100,7 +102,9 @@ export type VoiceTelephonyWebhookNormalizationEvidenceReport = {
|
|
|
100
102
|
applied: number;
|
|
101
103
|
decisions: number;
|
|
102
104
|
dispositions: VoiceCallDisposition[];
|
|
105
|
+
duplicateCampaignOutcomesApplied: number;
|
|
103
106
|
duplicateIdempotencyKeys: number;
|
|
107
|
+
duplicateOutcomeReasons: string[];
|
|
104
108
|
duplicateProviders: VoiceTelephonyWebhookProvider[];
|
|
105
109
|
duplicates: number;
|
|
106
110
|
issues: string[];
|
package/dist/testing/index.js
CHANGED
|
@@ -8259,6 +8259,8 @@ var evaluateVoiceTelephonyWebhookNormalizationEvidence = (input = {}) => {
|
|
|
8259
8259
|
const duplicateDecisions = decisions.filter((decision) => decision.duplicate === true);
|
|
8260
8260
|
const duplicateProviders = uniqueSorted(duplicateDecisions.map((decision) => decision.provider ?? decision.event?.provider).filter(isTelephonyWebhookProvider));
|
|
8261
8261
|
const duplicateIdempotencyKeys = new Set(duplicateDecisions.map((decision) => decision.idempotencyKey).filter((key) => typeof key === "string" && key.length > 0)).size;
|
|
8262
|
+
const duplicateCampaignOutcomesApplied = duplicateDecisions.filter((decision) => isRecord(decision.campaignOutcome) && decision.campaignOutcome.applied === true).length;
|
|
8263
|
+
const duplicateOutcomeReasons = uniqueSorted(duplicateDecisions.map((decision) => isRecord(decision.campaignOutcome) ? decision.campaignOutcome.reason : undefined).filter((reason) => typeof reason === "string"));
|
|
8262
8264
|
const routeResults = decisions.filter((decision) => isRecord(decision.routeResult)).length;
|
|
8263
8265
|
const missingSessionIds = decisions.filter((decision) => !decision.sessionId).length;
|
|
8264
8266
|
if (input.minDecisions !== undefined && decisions.length < input.minDecisions) {
|
|
@@ -8273,6 +8275,9 @@ var evaluateVoiceTelephonyWebhookNormalizationEvidence = (input = {}) => {
|
|
|
8273
8275
|
if (input.minDuplicateIdempotencyKeys !== undefined && duplicateIdempotencyKeys < input.minDuplicateIdempotencyKeys) {
|
|
8274
8276
|
issues.push(`Expected at least ${String(input.minDuplicateIdempotencyKeys)} duplicate telephony webhook idempotency key(s), found ${String(duplicateIdempotencyKeys)}.`);
|
|
8275
8277
|
}
|
|
8278
|
+
if (input.maxDuplicateCampaignOutcomesApplied !== undefined && duplicateCampaignOutcomesApplied > input.maxDuplicateCampaignOutcomesApplied) {
|
|
8279
|
+
issues.push(`Expected at most ${String(input.maxDuplicateCampaignOutcomesApplied)} duplicate telephony webhook campaign outcome application(s), found ${String(duplicateCampaignOutcomesApplied)}.`);
|
|
8280
|
+
}
|
|
8276
8281
|
if (input.maxMissingSessionIds !== undefined && missingSessionIds > input.maxMissingSessionIds) {
|
|
8277
8282
|
issues.push(`Expected at most ${String(input.maxMissingSessionIds)} telephony webhook decision(s) without sessionId, found ${String(missingSessionIds)}.`);
|
|
8278
8283
|
}
|
|
@@ -8296,7 +8301,9 @@ var evaluateVoiceTelephonyWebhookNormalizationEvidence = (input = {}) => {
|
|
|
8296
8301
|
applied,
|
|
8297
8302
|
decisions: decisions.length,
|
|
8298
8303
|
dispositions,
|
|
8304
|
+
duplicateCampaignOutcomesApplied,
|
|
8299
8305
|
duplicateIdempotencyKeys,
|
|
8306
|
+
duplicateOutcomeReasons,
|
|
8300
8307
|
duplicateProviders,
|
|
8301
8308
|
duplicates: duplicateDecisions.length,
|
|
8302
8309
|
issues,
|