@vicacha-devs/strapi-plugin-broadcasts 0.0.0-stage → 0.1.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/LICENSE +21 -0
- package/README.md +15 -2
- package/dist/admin/BroadcastsHomePage-CM_N_spo.mjs +1210 -0
- package/dist/admin/BroadcastsHomePage-DQueM7nj.js +1228 -0
- package/dist/admin/SettingsPage-TawvAAiv.js +1187 -0
- package/dist/admin/SettingsPage-ikcb0cfh.mjs +1169 -0
- package/dist/admin/ar-vwekVqfp.js +232 -0
- package/dist/admin/ar-wZTCd3Za.mjs +232 -0
- package/dist/admin/de-IZicxuvv.mjs +232 -0
- package/dist/admin/de-Qa2SQQfY.js +232 -0
- package/dist/admin/en-B-HnZo8U.mjs +232 -0
- package/dist/admin/en-D1byrK0s.js +232 -0
- package/dist/admin/es-Co7PmAj8.mjs +232 -0
- package/dist/admin/es-Dgylqagv.js +232 -0
- package/dist/admin/fr-B9zZn3z1.mjs +232 -0
- package/dist/admin/fr-C7-MIWnw.js +232 -0
- package/dist/admin/index-CApLw9Uu.mjs +1036 -0
- package/dist/admin/index-Dw6J7U1v.js +1053 -0
- package/dist/admin/index.js +6 -0
- package/dist/admin/index.mjs +6 -0
- package/dist/admin/it-DJU9iBqT.mjs +232 -0
- package/dist/admin/it-D_mulZtx.js +232 -0
- package/dist/admin/pt-B9swwjPu.js +232 -0
- package/dist/admin/pt-Dr8u5we0.mjs +232 -0
- package/dist/admin/ru-B0NNiMNA.js +232 -0
- package/dist/admin/ru-Bd4cEKDV.mjs +232 -0
- package/dist/admin/selectOptions-BlvNrhvc.mjs +150 -0
- package/dist/admin/selectOptions-DuHQ0KK3.js +149 -0
- package/dist/admin/src/components/AutomationAndLogsTabs.d.ts +16 -0
- package/dist/admin/src/components/BridgesSandboxTab.d.ts +8 -0
- package/dist/admin/src/components/CampaignComposerForm.d.ts +26 -0
- package/dist/admin/src/components/CampaignsTableSection.d.ts +27 -0
- package/dist/admin/src/components/DeliveryLedgerSection.d.ts +17 -0
- package/dist/admin/src/components/Initializer.d.ts +6 -0
- package/dist/admin/src/components/OrganizationEmailTab.d.ts +10 -0
- package/dist/admin/src/components/PluginIcon.d.ts +3 -0
- package/dist/admin/src/components/WhatsAppTransportTab.d.ts +11 -0
- package/dist/admin/src/index.d.ts +24 -0
- package/dist/admin/src/pages/BroadcastsHomePage.d.ts +2 -0
- package/dist/admin/src/pages/SettingsPage.d.ts +3 -0
- package/dist/admin/src/permissions.d.ts +30 -0
- package/dist/admin/src/pluginId.d.ts +2 -0
- package/dist/admin/src/translations/cmLabels.d.ts +1 -0
- package/dist/admin/src/translations/cmLabelsExtra.d.ts +1 -0
- package/dist/admin/src/translations/cmPlaceholders.d.ts +1 -0
- package/dist/admin/src/translations/cmPlaceholdersExtra.d.ts +1 -0
- package/dist/admin/src/utils/extractApiError.d.ts +1 -0
- package/dist/admin/src/utils/selectOptions.d.ts +21 -0
- package/dist/admin/tr-Cc-ItZUP.js +232 -0
- package/dist/admin/tr-DlyHa2Vk.mjs +232 -0
- package/dist/admin/zh-CLzJ7x3y.mjs +232 -0
- package/dist/admin/zh-CaqwZk-p.js +232 -0
- package/dist/server/index.js +3399 -0
- package/dist/server/index.mjs +3399 -0
- package/dist/server/src/bootstrap.d.ts +5 -0
- package/dist/server/src/config/index.d.ts +5 -0
- package/dist/server/src/content-types/automation-rule/index.d.ts +90 -0
- package/dist/server/src/content-types/automation-rule/schema.json.d.ts +90 -0
- package/dist/server/src/content-types/campaign/index.d.ts +118 -0
- package/dist/server/src/content-types/campaign/schema.json.d.ts +118 -0
- package/dist/server/src/content-types/delivery-log/index.d.ts +71 -0
- package/dist/server/src/content-types/delivery-log/schema.json.d.ts +71 -0
- package/dist/server/src/content-types/index.d.ts +279 -0
- package/dist/server/src/controllers/broadcastController.d.ts +32 -0
- package/dist/server/src/controllers/index.d.ts +22 -0
- package/dist/server/src/destroy.d.ts +5 -0
- package/dist/server/src/eventHubRegistry.d.ts +5 -0
- package/dist/server/src/index.d.ts +463 -0
- package/dist/server/src/register.d.ts +5 -0
- package/dist/server/src/routes/admin.d.ts +17 -0
- package/dist/server/src/routes/content-api.d.ts +13 -0
- package/dist/server/src/routes/index.d.ts +31 -0
- package/dist/server/src/services/automationService.d.ts +33 -0
- package/dist/server/src/services/campaignChannelDispatch.d.ts +20 -0
- package/dist/server/src/services/campaignHelpers.d.ts +20 -0
- package/dist/server/src/services/campaignLifecycle.d.ts +23 -0
- package/dist/server/src/services/campaignService.d.ts +54 -0
- package/dist/server/src/services/deliveryLedger.d.ts +18 -0
- package/dist/server/src/services/emailDesignerBridge.d.ts +30 -0
- package/dist/server/src/services/idempotency.d.ts +5 -0
- package/dist/server/src/services/index.d.ts +119 -0
- package/dist/server/src/services/settings.d.ts +12 -0
- package/dist/server/src/services/transportService.d.ts +70 -0
- package/dist/shared/index.d.ts +1 -0
- package/dist/shared/index.js +825 -0
- package/dist/shared/index.mjs +823 -0
- package/package.json +109 -3
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { Core } from '@strapi/strapi';
|
|
2
|
+
import { BroadcastSettings, CampaignRecord, CampaignStats, ChannelDispatchResult, SubscriberRecipient } from '../../../shared';
|
|
3
|
+
import { TransportServiceContract } from './campaignChannelDispatch';
|
|
4
|
+
import { RawDispatchOptions } from './campaignLifecycle';
|
|
5
|
+
declare const createCampaignService: ({ strapi }: {
|
|
6
|
+
strapi: Core.Strapi;
|
|
7
|
+
}) => {
|
|
8
|
+
getSettingsService(): {
|
|
9
|
+
getSettings(): Promise<BroadcastSettings>;
|
|
10
|
+
};
|
|
11
|
+
getTransportService(): TransportServiceContract;
|
|
12
|
+
listCampaigns(params?: {
|
|
13
|
+
status?: string;
|
|
14
|
+
topic?: string;
|
|
15
|
+
}): Promise<CampaignRecord[]>;
|
|
16
|
+
listPublicArchive(params?: {
|
|
17
|
+
topic?: string;
|
|
18
|
+
limit?: number;
|
|
19
|
+
}): Promise<{
|
|
20
|
+
slug: string;
|
|
21
|
+
title: string;
|
|
22
|
+
topic: string;
|
|
23
|
+
subject: string;
|
|
24
|
+
bodyText: string;
|
|
25
|
+
ctaLabel: string | undefined;
|
|
26
|
+
ctaUrl: string | undefined;
|
|
27
|
+
sentAt: string | undefined;
|
|
28
|
+
secondaryDateLabel: string | undefined;
|
|
29
|
+
translations: Record<string, import('../../../shared').CampaignTranslation> | undefined;
|
|
30
|
+
}[]>;
|
|
31
|
+
getCampaignBySlug(slug: string): Promise<CampaignRecord | null>;
|
|
32
|
+
findCampaignByDocIdOrSlug(documentIdOrSlug: string): Promise<CampaignRecord | null>;
|
|
33
|
+
createCampaign(input: Partial<CampaignRecord>): Promise<CampaignRecord>;
|
|
34
|
+
updateCampaign(documentIdOrSlug: string, input: Partial<CampaignRecord>): Promise<CampaignRecord>;
|
|
35
|
+
createFromStarterTemplate(templateId: string): Promise<CampaignRecord>;
|
|
36
|
+
seedStarterCampaigns(): Promise<number>;
|
|
37
|
+
resolveRecipientsForTopic(topic: string): Promise<SubscriberRecipient[]>;
|
|
38
|
+
selectCampaignRecipients(campaign: CampaignRecord, settings: BroadcastSettings, options: RawDispatchOptions): Promise<{
|
|
39
|
+
isTestDispatch: boolean;
|
|
40
|
+
testTelegramChatId?: string;
|
|
41
|
+
recipients: SubscriberRecipient[];
|
|
42
|
+
}>;
|
|
43
|
+
finalizeDispatchedCampaign(campaign: CampaignRecord, secondaryDate: CampaignRecord["secondaryDate"], secondaryDateLabel: string, stats: CampaignStats): Promise<CampaignRecord>;
|
|
44
|
+
dispatchCampaign(documentIdOrSlug: string, options?: {
|
|
45
|
+
customRecipients?: SubscriberRecipient[];
|
|
46
|
+
testRecipientEmail?: string;
|
|
47
|
+
testRecipientPhone?: string;
|
|
48
|
+
testTelegramChatId?: string;
|
|
49
|
+
}): Promise<{
|
|
50
|
+
campaign: CampaignRecord;
|
|
51
|
+
results: ChannelDispatchResult[];
|
|
52
|
+
}>;
|
|
53
|
+
};
|
|
54
|
+
export default createCampaignService;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Core } from '@strapi/strapi';
|
|
2
|
+
import { BroadcastChannel, BroadcastSettings, ChannelDispatchResult, DeliveryLogRecord } from '../../../shared';
|
|
3
|
+
import { EmailSendPayload } from './transportService';
|
|
4
|
+
export declare function buildSafeListUnsubscribeHeader(rawUnsubscribeUrl?: string): Record<string, string>;
|
|
5
|
+
export declare function hasAlreadyDeliveredInDb(strapi: Core.Strapi, idempotencyKey: string): Promise<boolean>;
|
|
6
|
+
export declare function upsertDeliveryLogInDb(strapi: Core.Strapi, entry: Omit<DeliveryLogRecord, "documentId" | "sentAt">, secrets?: Array<string | undefined>): Promise<DeliveryLogRecord>;
|
|
7
|
+
export declare function listDeliveryLogsFromDb(strapi: Core.Strapi, params?: {
|
|
8
|
+
campaignSlug?: string;
|
|
9
|
+
channel?: BroadcastChannel;
|
|
10
|
+
limit?: number;
|
|
11
|
+
}): Promise<DeliveryLogRecord[]>;
|
|
12
|
+
export declare function extractSecretList(settings?: BroadcastSettings): Array<string | undefined>;
|
|
13
|
+
export declare function sanitizeDispatchResult(result: ChannelDispatchResult, secrets: Array<string | undefined>): ChannelDispatchResult;
|
|
14
|
+
export declare function sendLiveEmailViaProviders(strapi: Core.Strapi, payload: EmailSendPayload, settings: BroadcastSettings, effectiveTemplateRef: string): Promise<{
|
|
15
|
+
driver: string;
|
|
16
|
+
status: "sent" | "simulated";
|
|
17
|
+
externalMessageId: string;
|
|
18
|
+
}>;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Core } from '@strapi/strapi';
|
|
2
|
+
import { EmailDesignerTemplateSummary } from '../../../shared';
|
|
3
|
+
export declare const EMAIL_DESIGNER_TEMPLATE_UID = "plugin::email-designer-5.email-designer-template";
|
|
4
|
+
export interface EmailDesignerTemplateRow {
|
|
5
|
+
id?: number;
|
|
6
|
+
documentId?: string;
|
|
7
|
+
templateReferenceId?: number;
|
|
8
|
+
name?: string;
|
|
9
|
+
subject?: string;
|
|
10
|
+
bodyHtml?: string;
|
|
11
|
+
bodyText?: string;
|
|
12
|
+
tags?: string[];
|
|
13
|
+
updatedAt?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare function fetchRawEmailDesignerTemplates(strapi: Core.Strapi): Promise<EmailDesignerTemplateRow[]>;
|
|
16
|
+
export declare function listEmailDesignerTemplatesFromDb(strapi: Core.Strapi): Promise<EmailDesignerTemplateSummary[]>;
|
|
17
|
+
export declare function resolveEmailDesignerTemplateFromDb(strapi: Core.Strapi, templateRef: string, locale?: string): Promise<EmailDesignerTemplateRow | null>;
|
|
18
|
+
export declare function trySendEmailViaDesigner5(params: {
|
|
19
|
+
strapi: Core.Strapi;
|
|
20
|
+
effectiveTemplateRef: string;
|
|
21
|
+
locale: string;
|
|
22
|
+
recipientEmail: string;
|
|
23
|
+
fromAddress: string;
|
|
24
|
+
replyToAddress: string;
|
|
25
|
+
subject: string;
|
|
26
|
+
text: string;
|
|
27
|
+
headers: Record<string, string>;
|
|
28
|
+
templateVars: Record<string, string | number | undefined>;
|
|
29
|
+
interpolate: (tpl: string, vars: Record<string, string | number | undefined>) => string;
|
|
30
|
+
}): Promise<string | null>;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function computeIdempotencyKey(campaignSlug: string, channel: string, recipient: string, options?: {
|
|
2
|
+
isTest?: boolean;
|
|
3
|
+
}): string;
|
|
4
|
+
export declare function generateUniqueSlugSuffix(): string;
|
|
5
|
+
export declare function redactSecretsFromMessage(rawMessage: string, secrets?: Array<string | undefined>): string;
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
settings: ({ strapi }: {
|
|
3
|
+
strapi: import("@strapi/strapi").Core.Strapi;
|
|
4
|
+
}) => {
|
|
5
|
+
getPluginStore(): import("@strapi/strapi").Core.PluginStore;
|
|
6
|
+
getConfigDefaults(): import('../../../shared').BroadcastSettings;
|
|
7
|
+
getSettings(): Promise<import('../../../shared').BroadcastSettings>;
|
|
8
|
+
getPublicSafeSettings(): Promise<import('../../../shared').BroadcastSettings>;
|
|
9
|
+
updateSettings(rawPartial: Partial<import('../../../shared').BroadcastSettings>): Promise<import('../../../shared').BroadcastSettings>;
|
|
10
|
+
};
|
|
11
|
+
transportService: ({ strapi }: {
|
|
12
|
+
strapi: import("@strapi/strapi").Core.Strapi;
|
|
13
|
+
}) => {
|
|
14
|
+
getSettingsService(): {
|
|
15
|
+
getSettings(): Promise<import('../../../shared').BroadcastSettings>;
|
|
16
|
+
};
|
|
17
|
+
fetchRawEmailDesignerTemplates(): Promise<import('./emailDesignerBridge').EmailDesignerTemplateRow[]>;
|
|
18
|
+
listEmailDesignerTemplates(): Promise<import('../../../shared').EmailDesignerTemplateSummary[]>;
|
|
19
|
+
resolveEmailDesignerTemplate(templateRef: string, locale?: string): Promise<import('./emailDesignerBridge').EmailDesignerTemplateRow | null>;
|
|
20
|
+
hasAlreadyDelivered(idempotencyKey: string): Promise<boolean>;
|
|
21
|
+
recordDeliveryLog(entry: Omit<import('../../../shared').DeliveryLogRecord, "documentId" | "sentAt">, secrets?: Array<string | undefined>): Promise<import('../../../shared').DeliveryLogRecord>;
|
|
22
|
+
listDeliveryLogs(params?: {
|
|
23
|
+
campaignSlug?: string;
|
|
24
|
+
channel?: import('../../../shared').BroadcastChannel;
|
|
25
|
+
limit?: number;
|
|
26
|
+
}): Promise<import('../../../shared').DeliveryLogRecord[]>;
|
|
27
|
+
persistResult(campaignSlug: string, secondaryDateLabel: string | undefined, result: import('../../../shared').ChannelDispatchResult, settings?: import('../../../shared').BroadcastSettings): Promise<import('../../../shared').ChannelDispatchResult>;
|
|
28
|
+
logOutcome(p: {
|
|
29
|
+
campaignSlug: string;
|
|
30
|
+
locale: string;
|
|
31
|
+
secondaryDateLabel?: string;
|
|
32
|
+
}, channel: import('../../../shared').BroadcastChannel, driver: string, recipientMasked: string, status: import('../../../shared').ChannelDispatchResult["status"], idempotencyKey: string, extra?: Partial<import('../../../shared').ChannelDispatchResult>, settings?: import('../../../shared').BroadcastSettings): Promise<import('../../../shared').ChannelDispatchResult>;
|
|
33
|
+
simulateDryRunEmail(payload: import('./transportService').EmailSendPayload, effectiveTemplateRef: string, recipientMasked: string, idempotencyKey: string, settings: import('../../../shared').BroadcastSettings): Promise<import('../../../shared').ChannelDispatchResult>;
|
|
34
|
+
executeLiveEmailSend(payload: import('./transportService').EmailSendPayload, settings: import('../../../shared').BroadcastSettings, effectiveTemplateRef: string, recipientMasked: string, idempotencyKey: string): Promise<import('../../../shared').ChannelDispatchResult>;
|
|
35
|
+
sendEmailBroadcast(payload: import('./transportService').EmailSendPayload): Promise<import('../../../shared').ChannelDispatchResult>;
|
|
36
|
+
sendTelegramBroadcast(payload: import('./transportService').TelegramSendPayload): Promise<import('../../../shared').ChannelDispatchResult>;
|
|
37
|
+
sendWhatsAppBroadcast(payload: import('./transportService').WhatsAppSendPayload): Promise<import('../../../shared').ChannelDispatchResult>;
|
|
38
|
+
};
|
|
39
|
+
campaignService: ({ strapi }: {
|
|
40
|
+
strapi: import("@strapi/strapi").Core.Strapi;
|
|
41
|
+
}) => {
|
|
42
|
+
getSettingsService(): {
|
|
43
|
+
getSettings(): Promise<import('../../../shared').BroadcastSettings>;
|
|
44
|
+
};
|
|
45
|
+
getTransportService(): import('./campaignChannelDispatch').TransportServiceContract;
|
|
46
|
+
listCampaigns(params?: {
|
|
47
|
+
status?: string;
|
|
48
|
+
topic?: string;
|
|
49
|
+
}): Promise<import('../../../shared').CampaignRecord[]>;
|
|
50
|
+
listPublicArchive(params?: {
|
|
51
|
+
topic?: string;
|
|
52
|
+
limit?: number;
|
|
53
|
+
}): Promise<{
|
|
54
|
+
slug: string;
|
|
55
|
+
title: string;
|
|
56
|
+
topic: string;
|
|
57
|
+
subject: string;
|
|
58
|
+
bodyText: string;
|
|
59
|
+
ctaLabel: string | undefined;
|
|
60
|
+
ctaUrl: string | undefined;
|
|
61
|
+
sentAt: string | undefined;
|
|
62
|
+
secondaryDateLabel: string | undefined;
|
|
63
|
+
translations: Record<string, import('../../../shared').CampaignTranslation> | undefined;
|
|
64
|
+
}[]>;
|
|
65
|
+
getCampaignBySlug(slug: string): Promise<import('../../../shared').CampaignRecord | null>;
|
|
66
|
+
findCampaignByDocIdOrSlug(documentIdOrSlug: string): Promise<import('../../../shared').CampaignRecord | null>;
|
|
67
|
+
createCampaign(input: Partial<import('../../../shared').CampaignRecord>): Promise<import('../../../shared').CampaignRecord>;
|
|
68
|
+
updateCampaign(documentIdOrSlug: string, input: Partial<import('../../../shared').CampaignRecord>): Promise<import('../../../shared').CampaignRecord>;
|
|
69
|
+
createFromStarterTemplate(templateId: string): Promise<import('../../../shared').CampaignRecord>;
|
|
70
|
+
seedStarterCampaigns(): Promise<number>;
|
|
71
|
+
resolveRecipientsForTopic(topic: string): Promise<import('../../../shared').SubscriberRecipient[]>;
|
|
72
|
+
selectCampaignRecipients(campaign: import('../../../shared').CampaignRecord, settings: import('../../../shared').BroadcastSettings, options: import('./campaignLifecycle').RawDispatchOptions): Promise<{
|
|
73
|
+
isTestDispatch: boolean;
|
|
74
|
+
testTelegramChatId?: string;
|
|
75
|
+
recipients: import('../../../shared').SubscriberRecipient[];
|
|
76
|
+
}>;
|
|
77
|
+
finalizeDispatchedCampaign(campaign: import('../../../shared').CampaignRecord, secondaryDate: import('../../../shared').CampaignRecord["secondaryDate"], secondaryDateLabel: string, stats: import('../../../shared').CampaignStats): Promise<import('../../../shared').CampaignRecord>;
|
|
78
|
+
dispatchCampaign(documentIdOrSlug: string, options?: {
|
|
79
|
+
customRecipients?: import('../../../shared').SubscriberRecipient[];
|
|
80
|
+
testRecipientEmail?: string;
|
|
81
|
+
testRecipientPhone?: string;
|
|
82
|
+
testTelegramChatId?: string;
|
|
83
|
+
}): Promise<{
|
|
84
|
+
campaign: import('../../../shared').CampaignRecord;
|
|
85
|
+
results: import('../../../shared').ChannelDispatchResult[];
|
|
86
|
+
}>;
|
|
87
|
+
};
|
|
88
|
+
automationService: ({ strapi }: {
|
|
89
|
+
strapi: import("@strapi/strapi").Core.Strapi;
|
|
90
|
+
}) => {
|
|
91
|
+
getSettingsService(): {
|
|
92
|
+
getSettings(): Promise<import('../../../shared').BroadcastSettings>;
|
|
93
|
+
};
|
|
94
|
+
getCampaignService(): {
|
|
95
|
+
createCampaign(input: Partial<import('../../../shared').CampaignRecord>): Promise<import('../../../shared').CampaignRecord>;
|
|
96
|
+
dispatchCampaign(documentIdOrSlug: string): Promise<{
|
|
97
|
+
campaign: import('../../../shared').CampaignRecord;
|
|
98
|
+
results: import('../../../shared').ChannelDispatchResult[];
|
|
99
|
+
}>;
|
|
100
|
+
};
|
|
101
|
+
listRules(): Promise<import('../../../shared').AutomationRuleRecord[]>;
|
|
102
|
+
getRuleBySlug(slug: string): Promise<import('../../../shared').AutomationRuleRecord | null>;
|
|
103
|
+
findRuleByDocIdOrSlug(documentIdOrSlug: string): Promise<import('../../../shared').AutomationRuleRecord | null>;
|
|
104
|
+
createRule(input: Partial<import('../../../shared').AutomationRuleRecord>): Promise<import('../../../shared').AutomationRuleRecord>;
|
|
105
|
+
updateRule(documentIdOrSlug: string, input: Partial<import('../../../shared').AutomationRuleRecord>): Promise<import('../../../shared').AutomationRuleRecord>;
|
|
106
|
+
seedStarterRules(): Promise<number>;
|
|
107
|
+
executeSingleTriggerRule(rule: import('../../../shared').AutomationRuleRecord, vars: Record<string, string | number | undefined>): Promise<{
|
|
108
|
+
ruleSlug: string;
|
|
109
|
+
campaignSlug: string;
|
|
110
|
+
results: import('../../../shared').ChannelDispatchResult[];
|
|
111
|
+
}>;
|
|
112
|
+
handleEventTrigger(eventName: string, payload?: Record<string, unknown>): Promise<Array<{
|
|
113
|
+
ruleSlug: string;
|
|
114
|
+
campaignSlug: string;
|
|
115
|
+
results: import('../../../shared').ChannelDispatchResult[];
|
|
116
|
+
}>>;
|
|
117
|
+
};
|
|
118
|
+
};
|
|
119
|
+
export default _default;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Core } from '@strapi/strapi';
|
|
2
|
+
import { BroadcastSettings } from '../../../shared';
|
|
3
|
+
declare const createSettingsService: ({ strapi }: {
|
|
4
|
+
strapi: Core.Strapi;
|
|
5
|
+
}) => {
|
|
6
|
+
getPluginStore(): Core.PluginStore;
|
|
7
|
+
getConfigDefaults(): BroadcastSettings;
|
|
8
|
+
getSettings(): Promise<BroadcastSettings>;
|
|
9
|
+
getPublicSafeSettings(): Promise<BroadcastSettings>;
|
|
10
|
+
updateSettings(rawPartial: Partial<BroadcastSettings>): Promise<BroadcastSettings>;
|
|
11
|
+
};
|
|
12
|
+
export default createSettingsService;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Core } from '@strapi/strapi';
|
|
2
|
+
import { BroadcastChannel, BroadcastSettings, ChannelDispatchResult, DeliveryLogRecord, EmailDesignerTemplateSummary } from '../../../shared';
|
|
3
|
+
import { EMAIL_DESIGNER_TEMPLATE_UID, EmailDesignerTemplateRow } from './emailDesignerBridge';
|
|
4
|
+
export { EMAIL_DESIGNER_TEMPLATE_UID, type EmailDesignerTemplateRow };
|
|
5
|
+
export interface EmailSendPayload {
|
|
6
|
+
campaignSlug: string;
|
|
7
|
+
recipientEmail: string;
|
|
8
|
+
locale: string;
|
|
9
|
+
subject: string;
|
|
10
|
+
text: string;
|
|
11
|
+
html?: string;
|
|
12
|
+
ctaLabel?: string;
|
|
13
|
+
ctaUrl?: string;
|
|
14
|
+
unsubscribeUrl?: string;
|
|
15
|
+
emailTemplateRef?: string;
|
|
16
|
+
secondaryDateLabel?: string;
|
|
17
|
+
templateData?: Record<string, string | number | undefined>;
|
|
18
|
+
isTestDispatch?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export interface TelegramSendPayload {
|
|
21
|
+
campaignSlug: string;
|
|
22
|
+
chatId: string;
|
|
23
|
+
threadId?: number;
|
|
24
|
+
locale: string;
|
|
25
|
+
subject: string;
|
|
26
|
+
htmlBody: string;
|
|
27
|
+
ctaLabel?: string;
|
|
28
|
+
ctaUrl?: string;
|
|
29
|
+
secondaryDateLabel?: string;
|
|
30
|
+
isTestDispatch?: boolean;
|
|
31
|
+
}
|
|
32
|
+
export interface WhatsAppSendPayload {
|
|
33
|
+
campaignSlug: string;
|
|
34
|
+
recipientPhone: string;
|
|
35
|
+
locale: string;
|
|
36
|
+
textBody: string;
|
|
37
|
+
templateName?: string;
|
|
38
|
+
ctaUrl?: string;
|
|
39
|
+
secondaryDateLabel?: string;
|
|
40
|
+
isTestDispatch?: boolean;
|
|
41
|
+
}
|
|
42
|
+
declare const createTransportService: ({ strapi }: {
|
|
43
|
+
strapi: Core.Strapi;
|
|
44
|
+
}) => {
|
|
45
|
+
getSettingsService(): {
|
|
46
|
+
getSettings(): Promise<BroadcastSettings>;
|
|
47
|
+
};
|
|
48
|
+
fetchRawEmailDesignerTemplates(): Promise<EmailDesignerTemplateRow[]>;
|
|
49
|
+
listEmailDesignerTemplates(): Promise<EmailDesignerTemplateSummary[]>;
|
|
50
|
+
resolveEmailDesignerTemplate(templateRef: string, locale?: string): Promise<EmailDesignerTemplateRow | null>;
|
|
51
|
+
hasAlreadyDelivered(idempotencyKey: string): Promise<boolean>;
|
|
52
|
+
recordDeliveryLog(entry: Omit<DeliveryLogRecord, "documentId" | "sentAt">, secrets?: Array<string | undefined>): Promise<DeliveryLogRecord>;
|
|
53
|
+
listDeliveryLogs(params?: {
|
|
54
|
+
campaignSlug?: string;
|
|
55
|
+
channel?: BroadcastChannel;
|
|
56
|
+
limit?: number;
|
|
57
|
+
}): Promise<DeliveryLogRecord[]>;
|
|
58
|
+
persistResult(campaignSlug: string, secondaryDateLabel: string | undefined, result: ChannelDispatchResult, settings?: BroadcastSettings): Promise<ChannelDispatchResult>;
|
|
59
|
+
logOutcome(p: {
|
|
60
|
+
campaignSlug: string;
|
|
61
|
+
locale: string;
|
|
62
|
+
secondaryDateLabel?: string;
|
|
63
|
+
}, channel: BroadcastChannel, driver: string, recipientMasked: string, status: ChannelDispatchResult["status"], idempotencyKey: string, extra?: Partial<ChannelDispatchResult>, settings?: BroadcastSettings): Promise<ChannelDispatchResult>;
|
|
64
|
+
simulateDryRunEmail(payload: EmailSendPayload, effectiveTemplateRef: string, recipientMasked: string, idempotencyKey: string, settings: BroadcastSettings): Promise<ChannelDispatchResult>;
|
|
65
|
+
executeLiveEmailSend(payload: EmailSendPayload, settings: BroadcastSettings, effectiveTemplateRef: string, recipientMasked: string, idempotencyKey: string): Promise<ChannelDispatchResult>;
|
|
66
|
+
sendEmailBroadcast(payload: EmailSendPayload): Promise<ChannelDispatchResult>;
|
|
67
|
+
sendTelegramBroadcast(payload: TelegramSendPayload): Promise<ChannelDispatchResult>;
|
|
68
|
+
sendWhatsAppBroadcast(payload: WhatsAppSendPayload): Promise<ChannelDispatchResult>;
|
|
69
|
+
};
|
|
70
|
+
export default createTransportService;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '../../shared/index.js';
|