@botonic/plugin-flow-builder 0.57.1-alpha.0 → 0.58.0-alpha.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/lib/cjs/action/contents-result.d.ts +5 -0
- package/lib/cjs/action/contents-result.js +3 -0
- package/lib/cjs/action/contents-result.js.map +1 -0
- package/lib/cjs/action/first-interaction.js +1 -1
- package/lib/cjs/action/first-interaction.js.map +1 -1
- package/lib/cjs/action/get-contents.d.ts +3 -2
- package/lib/cjs/action/get-contents.js +13 -6
- package/lib/cjs/action/get-contents.js.map +1 -1
- package/lib/cjs/action/index.d.ts +2 -0
- package/lib/cjs/action/index.js +16 -6
- package/lib/cjs/action/index.js.map +1 -1
- package/lib/cjs/action/payload.d.ts +2 -2
- package/lib/cjs/action/payload.js +12 -28
- package/lib/cjs/action/payload.js.map +1 -1
- package/lib/cjs/action/push-flow-resolver.d.ts +22 -0
- package/lib/cjs/action/push-flow-resolver.js +66 -0
- package/lib/cjs/action/push-flow-resolver.js.map +1 -0
- package/lib/cjs/api.d.ts +1 -1
- package/lib/cjs/api.js +7 -2
- package/lib/cjs/api.js.map +1 -1
- package/lib/cjs/content-fields/flow-do-nothing.js +1 -1
- package/lib/cjs/content-fields/flow-do-nothing.js.map +1 -1
- package/lib/esm/action/contents-result.d.ts +5 -0
- package/lib/esm/action/contents-result.js +3 -0
- package/lib/esm/action/contents-result.js.map +1 -0
- package/lib/esm/action/first-interaction.js +1 -1
- package/lib/esm/action/first-interaction.js.map +1 -1
- package/lib/esm/action/get-contents.d.ts +3 -2
- package/lib/esm/action/get-contents.js +13 -6
- package/lib/esm/action/get-contents.js.map +1 -1
- package/lib/esm/action/index.d.ts +2 -0
- package/lib/esm/action/index.js +16 -6
- package/lib/esm/action/index.js.map +1 -1
- package/lib/esm/action/payload.d.ts +2 -2
- package/lib/esm/action/payload.js +12 -28
- package/lib/esm/action/payload.js.map +1 -1
- package/lib/esm/action/push-flow-resolver.d.ts +22 -0
- package/lib/esm/action/push-flow-resolver.js +66 -0
- package/lib/esm/action/push-flow-resolver.js.map +1 -0
- package/lib/esm/api.d.ts +1 -1
- package/lib/esm/api.js +7 -2
- package/lib/esm/api.js.map +1 -1
- package/lib/esm/content-fields/flow-do-nothing.js +1 -1
- package/lib/esm/content-fields/flow-do-nothing.js.map +1 -1
- package/package.json +2 -2
- package/src/action/contents-result.ts +6 -0
- package/src/action/first-interaction.ts +7 -6
- package/src/action/get-contents.ts +17 -8
- package/src/action/index.tsx +40 -6
- package/src/action/payload.ts +16 -46
- package/src/action/push-flow-resolver.ts +101 -0
- package/src/api.ts +13 -3
- package/src/content-fields/flow-do-nothing.tsx +1 -1
package/lib/esm/action/index.js
CHANGED
|
@@ -20,9 +20,12 @@ class FlowBuilderAction extends react_2.default.Component {
|
|
|
20
20
|
return { contents: filteredContents };
|
|
21
21
|
}
|
|
22
22
|
static async botonicInit(botContext, contentID) {
|
|
23
|
-
const contents = await (0, get_contents_1.getContents)(botContext, contentID);
|
|
23
|
+
const { contents, campaignFirstMessageId } = await (0, get_contents_1.getContents)(botContext, contentID);
|
|
24
24
|
const contentsToRender = await FlowBuilderAction.prepareContentsToRender(botContext, contents);
|
|
25
|
-
return {
|
|
25
|
+
return {
|
|
26
|
+
contents: contentsToRender,
|
|
27
|
+
campaignFirstMessageId,
|
|
28
|
+
};
|
|
26
29
|
}
|
|
27
30
|
static async prepareContentsToRender(botContext, contents) {
|
|
28
31
|
for (const content of contents) {
|
|
@@ -75,20 +78,27 @@ class FlowBuilderAction extends react_2.default.Component {
|
|
|
75
78
|
};
|
|
76
79
|
}
|
|
77
80
|
render() {
|
|
78
|
-
const { contents } = this.props;
|
|
81
|
+
const { contents, campaignFirstMessageId } = this.props;
|
|
79
82
|
const botContext = this.context;
|
|
80
83
|
const { shouldSendWebchatSettings, webchatSettingsParams } = this.getWebchatSettingsParams(botContext);
|
|
81
|
-
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [shouldSendWebchatSettings && ((0, jsx_runtime_1.jsx)(react_1.WebchatSettings, { ...webchatSettingsParams })),
|
|
84
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [shouldSendWebchatSettings && ((0, jsx_runtime_1.jsx)(react_1.WebchatSettings, { ...webchatSettingsParams })), FlowBuilderAction.renderContents(contents, botContext, campaignFirstMessageId)] }));
|
|
85
|
+
}
|
|
86
|
+
static renderContents(contents, botContext, campaignFirstMessageId) {
|
|
87
|
+
const rendered = contents.map(content => content.toBotonic(botContext));
|
|
88
|
+
if (!campaignFirstMessageId) {
|
|
89
|
+
return rendered;
|
|
90
|
+
}
|
|
91
|
+
return ((0, jsx_runtime_1.jsx)(react_1.CampaignMessageAttributesProvider, { campaignId: campaignFirstMessageId, children: rendered }));
|
|
82
92
|
}
|
|
83
93
|
}
|
|
84
94
|
exports.FlowBuilderAction = FlowBuilderAction;
|
|
85
95
|
FlowBuilderAction.contextType = react_1.RequestContext;
|
|
86
96
|
class FlowBuilderMultichannelAction extends FlowBuilderAction {
|
|
87
97
|
render() {
|
|
88
|
-
const { contents } = this.props;
|
|
98
|
+
const { contents, campaignFirstMessageId } = this.props;
|
|
89
99
|
const botContext = this.context;
|
|
90
100
|
const { shouldSendWebchatSettings, webchatSettingsParams } = this.getWebchatSettingsParams(botContext);
|
|
91
|
-
return ((0, jsx_runtime_1.jsxs)(react_1.Multichannel, { text: { buttonsAsText: false }, children: [shouldSendWebchatSettings && ((0, jsx_runtime_1.jsx)(react_1.WebchatSettings, { ...webchatSettingsParams })),
|
|
101
|
+
return ((0, jsx_runtime_1.jsxs)(react_1.Multichannel, { text: { buttonsAsText: false }, children: [shouldSendWebchatSettings && ((0, jsx_runtime_1.jsx)(react_1.WebchatSettings, { ...webchatSettingsParams })), FlowBuilderAction.renderContents(contents, botContext, campaignFirstMessageId)] }));
|
|
92
102
|
}
|
|
93
103
|
}
|
|
94
104
|
exports.FlowBuilderMultichannelAction = FlowBuilderMultichannelAction;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/action/index.tsx"],"names":[],"mappings":";;;;;AAAA,wCAAiE;AACjE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/action/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { FlowBuilderContentsResult } from './contents-result';
|
|
2
2
|
import type { FlowBuilderContext } from './context';
|
|
3
|
-
export declare function getContentsByPayload(context: FlowBuilderContext): Promise<
|
|
3
|
+
export declare function getContentsByPayload(context: FlowBuilderContext): Promise<FlowBuilderContentsResult>;
|
|
@@ -5,27 +5,31 @@ const core_1 = require("@botonic/core");
|
|
|
5
5
|
const uuid_1 = require("uuid");
|
|
6
6
|
const constants_1 = require("../constants");
|
|
7
7
|
const tracking_1 = require("../tracking");
|
|
8
|
+
const push_flow_resolver_1 = require("./push-flow-resolver");
|
|
8
9
|
async function getContentsByPayload(context) {
|
|
9
10
|
const { cmsApi, flowBuilderPlugin, request, contentID } = context;
|
|
10
11
|
if (request.input.payload?.startsWith(constants_1.AGENT_RATING_PAYLOAD)) {
|
|
11
12
|
return await resolveRatingPayload(context);
|
|
12
13
|
}
|
|
13
14
|
if (request.input.payload?.startsWith(constants_1.PUSH_FLOW_PAYLOAD)) {
|
|
14
|
-
|
|
15
|
+
const pushFlow = new push_flow_resolver_1.PushFlowResolver(context);
|
|
16
|
+
return await pushFlow.getContents();
|
|
15
17
|
}
|
|
16
18
|
const id = contentID
|
|
17
19
|
? cmsApi.getNodeByContentID(contentID)?.id
|
|
18
20
|
: request.input.payload;
|
|
19
21
|
const targetNode = id ? cmsApi.getNodeById(id) : undefined;
|
|
20
22
|
if (targetNode) {
|
|
21
|
-
return
|
|
23
|
+
return {
|
|
24
|
+
contents: await flowBuilderPlugin.getContentsByNode(targetNode),
|
|
25
|
+
};
|
|
22
26
|
}
|
|
23
|
-
return [];
|
|
27
|
+
return { contents: [] };
|
|
24
28
|
}
|
|
25
29
|
async function resolveRatingPayload(context) {
|
|
26
30
|
const { cmsApi, flowBuilderPlugin, request } = context;
|
|
27
31
|
if (!request.input.payload) {
|
|
28
|
-
return [];
|
|
32
|
+
return { contents: [] };
|
|
29
33
|
}
|
|
30
34
|
const { target, text, value, possibleOptions, possibleValues } = flowBuilderPlugin.getRatingSubmittedInfo(request.input.payload);
|
|
31
35
|
if (request.session._hubtype_case_id) {
|
|
@@ -45,30 +49,10 @@ async function resolveRatingPayload(context) {
|
|
|
45
49
|
? cmsApi.getNodeById(target.id)
|
|
46
50
|
: undefined;
|
|
47
51
|
if (targetNode) {
|
|
48
|
-
return
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
}
|
|
52
|
-
async function resolvePushFlowPayload(context) {
|
|
53
|
-
const { cmsApi, flowBuilderPlugin, request } = context;
|
|
54
|
-
if (!request.input.payload) {
|
|
55
|
-
return [];
|
|
56
|
-
}
|
|
57
|
-
const parts = request.input.payload.split(constants_1.SEPARATOR);
|
|
58
|
-
const pushFlowId = parts.length > 1 ? parts[1] : '';
|
|
59
|
-
if (!pushFlowId) {
|
|
60
|
-
return [];
|
|
61
|
-
}
|
|
62
|
-
try {
|
|
63
|
-
const pushFlowNode = cmsApi.getNodeByCampaignId(pushFlowId);
|
|
64
|
-
if (!pushFlowNode) {
|
|
65
|
-
return [];
|
|
66
|
-
}
|
|
67
|
-
return await flowBuilderPlugin.getContentsByNode(pushFlowNode);
|
|
68
|
-
}
|
|
69
|
-
catch {
|
|
70
|
-
// Campaign not found - return empty to trigger fallback
|
|
71
|
-
return [];
|
|
52
|
+
return {
|
|
53
|
+
contents: await flowBuilderPlugin.getContentsByNode(targetNode),
|
|
54
|
+
};
|
|
72
55
|
}
|
|
56
|
+
return { contents: [] };
|
|
73
57
|
}
|
|
74
58
|
//# sourceMappingURL=payload.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payload.js","sourceRoot":"","sources":["../../../src/action/payload.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"payload.js","sourceRoot":"","sources":["../../../src/action/payload.ts"],"names":[],"mappings":";;AASA,oDAwBC;AAjCD,wCAAgF;AAChF,+BAAiC;AACjC,4CAAsE;AAEtE,0CAAwC;AAGxC,6DAAuD;AAEhD,KAAK,UAAU,oBAAoB,CACxC,OAA2B;IAE3B,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,OAAO,CAAA;IACjE,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,gCAAoB,CAAC,EAAE,CAAC;QAC5D,OAAO,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAA;IAC5C,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,6BAAiB,CAAC,EAAE,CAAC;QACzD,MAAM,QAAQ,GAAG,IAAI,qCAAgB,CAAC,OAAO,CAAC,CAAA;QAC9C,OAAO,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAA;IACrC,CAAC;IAED,MAAM,EAAE,GAAG,SAAS;QAClB,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,EAAE;QAC1C,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAA;IACzB,MAAM,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAE7E,IAAI,UAAU,EAAE,CAAC;QACf,OAAO;YACL,QAAQ,EAAE,MAAM,iBAAiB,CAAC,iBAAiB,CAAC,UAAU,CAAC;SAChE,CAAA;IACH,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;AACzB,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,OAA2B;IAE3B,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;IAEtD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QAC3B,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;IACzB,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,GAC5D,iBAAiB,CAAC,sBAAsB,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAEjE,IAAI,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;QACrC,MAAM,KAAK,GAAkB;YAC3B,MAAM,EAAE,kBAAW,CAAC,YAAY;YAChC,gBAAgB,EAAE,OAAO,CAAC,OAAO,CAAC,gBAAgB;YAClD,eAAe,EAAE,IAAA,SAAI,GAAE,CAAC,QAAQ,EAAE;YAClC,eAAe;YACf,cAAc;YACd,MAAM,EAAE,IAAI;YACZ,KAAK;SACN,CAAA;QAED,MAAM,IAAA,sBAAe,EAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QAC7C,MAAM,IAAA,qBAAU,EAAC,OAAO,EAAE,kBAAW,CAAC,YAAY,EAAE,KAAK,CAAC,CAAA;IAC5D,CAAC;IAED,MAAM,UAAU,GAAG,MAAM;QACvB,CAAC,CAAC,MAAM,CAAC,WAAW,CAAoB,MAAM,CAAC,EAAE,CAAC;QAClD,CAAC,CAAC,SAAS,CAAA;IAEb,IAAI,UAAU,EAAE,CAAC;QACf,OAAO;YACL,QAAQ,EAAE,MAAM,iBAAiB,CAAC,iBAAiB,CAAC,UAAU,CAAC;SAChE,CAAA;IACH,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;AACzB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { FlowBuilderContentsResult } from './contents-result';
|
|
2
|
+
import type { FlowBuilderContext } from './context';
|
|
3
|
+
export declare enum PushFlowErrorCode {
|
|
4
|
+
NoInputPayload = "NoInputPayload",
|
|
5
|
+
NoPushFlowId = "NoPushFlowId",
|
|
6
|
+
NoCampaignStartNode = "NoCampaignStartNode",
|
|
7
|
+
NoCampaignId = "NoCampaignId"
|
|
8
|
+
}
|
|
9
|
+
export declare class PushFlowError extends Error {
|
|
10
|
+
readonly code: PushFlowErrorCode;
|
|
11
|
+
constructor(code: PushFlowErrorCode, reason: string);
|
|
12
|
+
}
|
|
13
|
+
export declare class PushFlowResolver {
|
|
14
|
+
private botContext;
|
|
15
|
+
private cmsApi;
|
|
16
|
+
private flowBuilderPlugin;
|
|
17
|
+
constructor(context: FlowBuilderContext);
|
|
18
|
+
getContents(): Promise<FlowBuilderContentsResult>;
|
|
19
|
+
private getPushFlowId;
|
|
20
|
+
private getPushFlowNode;
|
|
21
|
+
private getCampaignId;
|
|
22
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PushFlowResolver = exports.PushFlowError = exports.PushFlowErrorCode = void 0;
|
|
4
|
+
const constants_1 = require("../constants");
|
|
5
|
+
var PushFlowErrorCode;
|
|
6
|
+
(function (PushFlowErrorCode) {
|
|
7
|
+
PushFlowErrorCode["NoInputPayload"] = "NoInputPayload";
|
|
8
|
+
PushFlowErrorCode["NoPushFlowId"] = "NoPushFlowId";
|
|
9
|
+
PushFlowErrorCode["NoCampaignStartNode"] = "NoCampaignStartNode";
|
|
10
|
+
PushFlowErrorCode["NoCampaignId"] = "NoCampaignId";
|
|
11
|
+
})(PushFlowErrorCode || (exports.PushFlowErrorCode = PushFlowErrorCode = {}));
|
|
12
|
+
class PushFlowError extends Error {
|
|
13
|
+
constructor(code, reason) {
|
|
14
|
+
super(`push-flow failed: ${reason}`);
|
|
15
|
+
this.code = code;
|
|
16
|
+
this.name = 'PushFlowError';
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
exports.PushFlowError = PushFlowError;
|
|
20
|
+
class PushFlowResolver {
|
|
21
|
+
constructor(context) {
|
|
22
|
+
this.botContext = context.request;
|
|
23
|
+
this.cmsApi = context.cmsApi;
|
|
24
|
+
this.flowBuilderPlugin = context.flowBuilderPlugin;
|
|
25
|
+
}
|
|
26
|
+
async getContents() {
|
|
27
|
+
const pushFlowId = this.getPushFlowId();
|
|
28
|
+
const pushFlowNode = this.getPushFlowNode(pushFlowId);
|
|
29
|
+
const campaignId = this.getCampaignId();
|
|
30
|
+
return {
|
|
31
|
+
contents: await this.flowBuilderPlugin.getContentsByNode(pushFlowNode),
|
|
32
|
+
campaignFirstMessageId: campaignId,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
getPushFlowId() {
|
|
36
|
+
const payload = this.botContext.input.payload;
|
|
37
|
+
if (!payload) {
|
|
38
|
+
throw new PushFlowError(PushFlowErrorCode.NoInputPayload, 'No payload found in input');
|
|
39
|
+
}
|
|
40
|
+
const parts = payload.split(constants_1.SEPARATOR);
|
|
41
|
+
const pushFlowId = parts.length > 1 ? parts[1] : '';
|
|
42
|
+
if (!pushFlowId) {
|
|
43
|
+
throw new PushFlowError(PushFlowErrorCode.NoPushFlowId, 'No push flow id found in input payload');
|
|
44
|
+
}
|
|
45
|
+
return pushFlowId;
|
|
46
|
+
}
|
|
47
|
+
getPushFlowNode(pushFlowId) {
|
|
48
|
+
const pushFlowNode = this.cmsApi.getNodeByCampaignId(pushFlowId);
|
|
49
|
+
if (!pushFlowNode) {
|
|
50
|
+
throw new PushFlowError(PushFlowErrorCode.NoCampaignStartNode, 'No campaign start node found');
|
|
51
|
+
}
|
|
52
|
+
return pushFlowNode;
|
|
53
|
+
}
|
|
54
|
+
getCampaignId() {
|
|
55
|
+
const campaignId = this.botContext.input.context &&
|
|
56
|
+
'campaign_id' in this.botContext.input.context
|
|
57
|
+
? this.botContext.input.context.campaign_id
|
|
58
|
+
: undefined;
|
|
59
|
+
if (!campaignId) {
|
|
60
|
+
throw new PushFlowError(PushFlowErrorCode.NoCampaignId, 'No campaign id found in input context');
|
|
61
|
+
}
|
|
62
|
+
return campaignId;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
exports.PushFlowResolver = PushFlowResolver;
|
|
66
|
+
//# sourceMappingURL=push-flow-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"push-flow-resolver.js","sourceRoot":"","sources":["../../../src/action/push-flow-resolver.ts"],"names":[],"mappings":";;;AAEA,4CAAwC;AAMxC,IAAY,iBAKX;AALD,WAAY,iBAAiB;IAC3B,sDAAiC,CAAA;IACjC,kDAA6B,CAAA;IAC7B,gEAA2C,CAAA;IAC3C,kDAA6B,CAAA;AAC/B,CAAC,EALW,iBAAiB,iCAAjB,iBAAiB,QAK5B;AAED,MAAa,aAAc,SAAQ,KAAK;IAGtC,YAAY,IAAuB,EAAE,MAAc;QACjD,KAAK,CAAC,qBAAqB,MAAM,EAAE,CAAC,CAAA;QACpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,IAAI,GAAG,eAAe,CAAA;IAC7B,CAAC;CACF;AARD,sCAQC;AAED,MAAa,gBAAgB;IAK3B,YAAY,OAA2B;QACrC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,OAAO,CAAA;QACjC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;QAC5B,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAA;IACpD,CAAC;IAED,KAAK,CAAC,WAAW;QACf,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAA;QACvC,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAA;QACrD,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAA;QAEvC,OAAO;YACL,QAAQ,EAAE,MAAM,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,YAAY,CAAC;YACtE,sBAAsB,EAAE,UAAU;SACnC,CAAA;IACH,CAAC;IAEO,aAAa;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAA;QAE7C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,aAAa,CACrB,iBAAiB,CAAC,cAAc,EAChC,2BAA2B,CAC5B,CAAA;QACH,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,qBAAS,CAAC,CAAA;QACtC,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QAEnD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,aAAa,CACrB,iBAAiB,CAAC,YAAY,EAC9B,wCAAwC,CACzC,CAAA;QACH,CAAC;QAED,OAAO,UAAU,CAAA;IACnB,CAAC;IAEO,eAAe,CAAC,UAAkB;QACxC,MAAM,YAAY,GAChB,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAoB,UAAU,CAAC,CAAA;QAEhE,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,aAAa,CACrB,iBAAiB,CAAC,mBAAmB,EACrC,8BAA8B,CAC/B,CAAA;QACH,CAAC;QAED,OAAO,YAAY,CAAA;IACrB,CAAC;IAEO,aAAa;QACnB,MAAM,UAAU,GACd,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO;YAC7B,aAAa,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO;YAC5C,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW;YAC3C,CAAC,CAAC,SAAS,CAAA;QAEf,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,aAAa,CACrB,iBAAiB,CAAC,YAAY,EAC9B,uCAAuC,CACxC,CAAA;QACH,CAAC;QAED,OAAO,UAAU,CAAA;IACnB,CAAC;CACF;AA3ED,4CA2EC"}
|
package/lib/esm/api.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ export declare class FlowBuilderApi {
|
|
|
11
11
|
private getFlow;
|
|
12
12
|
private updateSessionWithUserInfo;
|
|
13
13
|
getNodeByFlowId(id: string): HtNodeWithContent;
|
|
14
|
-
getNodeByCampaignId<T extends HtNodeComponent>(id: string): T;
|
|
14
|
+
getNodeByCampaignId<T extends HtNodeComponent>(id: string): T | undefined;
|
|
15
15
|
getNodeById<T extends HtNodeComponent>(id: string): T;
|
|
16
16
|
getRatingNodeByButtonId(id: string): HtRatingNode;
|
|
17
17
|
getRatingButtonById(ratingNode: HtRatingNode, id: string): HtRatingButton;
|
package/lib/esm/api.js
CHANGED
|
@@ -46,9 +46,14 @@ class FlowBuilderApi {
|
|
|
46
46
|
getNodeByCampaignId(id) {
|
|
47
47
|
const campaign = this.flow.campaigns.find(campaign => campaign.id === id);
|
|
48
48
|
if (!campaign) {
|
|
49
|
-
|
|
49
|
+
return undefined;
|
|
50
50
|
}
|
|
51
|
-
|
|
51
|
+
const node = this.flow.nodes.find(flowNode => flowNode.id === campaign.start_node_id);
|
|
52
|
+
if (!node) {
|
|
53
|
+
console.error(`Node with id: '${campaign.start_node_id}' not found`);
|
|
54
|
+
return undefined;
|
|
55
|
+
}
|
|
56
|
+
return node;
|
|
52
57
|
}
|
|
53
58
|
getNodeById(id) {
|
|
54
59
|
const node = this.flow.nodes.find(node => node.id === id);
|
package/lib/esm/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":";;;;AACA,0DAAyB;AAEzB,2CAKoB;AACpB,oEAiBwC;AACxC,mCAIgB;AAChB,qDAAgD;AAEhD,MAAa,cAAc;IAMzB,gBAAuB,CAAC;IAExB,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAA8B;QAChD,MAAM,MAAM,GAAG,IAAI,cAAc,EAAE,CAAA;QAEnC,MAAM,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAA;QACxB,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAA;QACtC,+HAA+H;QAC/H,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,0BAAkB,CAAC,WAAW,EAAE,CAAC;YAC5D,MAAM,MAAM,CAAC,yBAAyB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;QAC7D,CAAC;QACD,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,CAAA;QACxC,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CACtC,UAAU,EACV,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAC9B,CAAA;QACD,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAA;QACzE,OAAO,MAAM,CAAA;IACf,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,KAAa;QACjC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE;YAC7C,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE;SAC9C,CAAC,CAAA;QACF,OAAO,IAAyB,CAAA;IAClC,CAAC;IAEO,KAAK,CAAC,yBAAyB,CAAC,KAAa;QACnD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,6BAA6B,CAAA;QACpD,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YACpC,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE;SAC9C,CAAC,CAAA;QACF,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAA;QACvE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAA;IACvD,CAAC;IAED,eAAe,CAAC,EAAU;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;QAClE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,KAAK,CAAC,qBAAqB,EAAE,aAAa,CAAC,CAAA;QACnD,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAoB,OAAO,CAAC,aAAa,CAAC,CAAA;IACnE,CAAC;IAED,mBAAmB,CAA4B,EAAU;QACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;QACzE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ class FlowDoNothing extends content_fields_base_1.ContentFieldsBase {
|
|
|
8
8
|
static fromHubtypeCMS(cmsDoNothing) {
|
|
9
9
|
const newDoNothing = new FlowDoNothing(cmsDoNothing.id);
|
|
10
10
|
newDoNothing.code = cmsDoNothing.code;
|
|
11
|
-
newDoNothing.followUp =
|
|
11
|
+
newDoNothing.followUp = undefined;
|
|
12
12
|
return newDoNothing;
|
|
13
13
|
}
|
|
14
14
|
async trackFlow(botContext) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flow-do-nothing.js","sourceRoot":"","sources":["../../../src/content-fields/flow-do-nothing.tsx"],"names":[],"mappings":";;;;AAEA,0CAA6C;AAC7C,+DAAyD;AAGzD,MAAa,aAAc,SAAQ,uCAAiB;IAClD,MAAM,CAAC,cAAc,CAAC,YAA6B;QACjD,MAAM,YAAY,GAAG,IAAI,aAAa,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;QACvD,YAAY,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAA;QACrC,YAAY,CAAC,QAAQ,GAAG,
|
|
1
|
+
{"version":3,"file":"flow-do-nothing.js","sourceRoot":"","sources":["../../../src/content-fields/flow-do-nothing.tsx"],"names":[],"mappings":";;;;AAEA,0CAA6C;AAC7C,+DAAyD;AAGzD,MAAa,aAAc,SAAQ,uCAAiB;IAClD,MAAM,CAAC,cAAc,CAAC,YAA6B;QACjD,MAAM,YAAY,GAAG,IAAI,aAAa,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;QACvD,YAAY,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAA;QACrC,YAAY,CAAC,QAAQ,GAAG,SAAS,CAAA;QAEjC,OAAO,YAAY,CAAA;IACrB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,UAAsB;QACpC,MAAM,IAAA,0BAAe,EAAC,UAAU,EAAE,IAAI,CAAC,CAAA;IACzC,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,UAAsB;QACzC,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;QAC1C,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;QAChC,OAAM;IACR,CAAC;IAED,SAAS;QACP,OAAO,kDAAK,CAAA;IACd,CAAC;CACF;AAtBD,sCAsBC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@botonic/plugin-flow-builder",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.58.0-alpha.0",
|
|
4
4
|
"main": "./lib/cjs/index.js",
|
|
5
5
|
"module": "./lib/esm/index.js",
|
|
6
6
|
"description": "Use Flow Builder to show your contents",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"format": "biome format --write src/ tests/"
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@botonic/react": "
|
|
18
|
+
"@botonic/react": "0.58.0-alpha.0",
|
|
19
19
|
"axios": "^1.18.1",
|
|
20
20
|
"uuid": "^10.0.0"
|
|
21
21
|
},
|
|
@@ -89,12 +89,13 @@ async function getContentsByUserInput(
|
|
|
89
89
|
return []
|
|
90
90
|
}
|
|
91
91
|
|
|
92
|
-
const contentsByKeywordsOrIntents =
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
92
|
+
const { contents: contentsByKeywordsOrIntents } =
|
|
93
|
+
await getContentsByPayload({
|
|
94
|
+
cmsApi,
|
|
95
|
+
flowBuilderPlugin,
|
|
96
|
+
request,
|
|
97
|
+
resolvedLocale,
|
|
98
|
+
})
|
|
98
99
|
|
|
99
100
|
const hasRepeatedContent = await checkRepeatedContents(
|
|
100
101
|
flowBuilderPlugin,
|
|
@@ -5,26 +5,31 @@ import {
|
|
|
5
5
|
WhatsappInputOrigin,
|
|
6
6
|
} from '@botonic/core'
|
|
7
7
|
import { EMPTY_PAYLOAD } from '../constants'
|
|
8
|
-
import type { FlowContent } from '../content-fields'
|
|
8
|
+
// import type { FlowContent } from '../content-fields'
|
|
9
9
|
import { inputHasTextOrTranscript } from '../utils/input'
|
|
10
10
|
import { getContentsByAiAgentFromUserInput } from './ai-agent-from-user-input'
|
|
11
|
+
import type { FlowBuilderContentsResult } from './contents-result'
|
|
11
12
|
import { getFlowBuilderActionContext } from './context'
|
|
12
13
|
import { getContentsByFallback } from './fallback'
|
|
13
14
|
import { getContentsByFirstInteraction } from './first-interaction'
|
|
14
15
|
import { getContentsByPayload } from './payload'
|
|
15
16
|
|
|
17
|
+
export type { FlowBuilderContentsResult } from './contents-result'
|
|
18
|
+
|
|
16
19
|
export async function getContents(
|
|
17
20
|
botContext: BotContext,
|
|
18
21
|
contentID?: string
|
|
19
|
-
): Promise<
|
|
22
|
+
): Promise<FlowBuilderContentsResult> {
|
|
20
23
|
const context = getFlowBuilderActionContext(botContext, contentID)
|
|
21
24
|
|
|
22
25
|
if (botContext.session.is_first_interaction) {
|
|
23
|
-
return
|
|
26
|
+
return {
|
|
27
|
+
contents: await getContentsByFirstInteraction(context),
|
|
28
|
+
}
|
|
24
29
|
}
|
|
25
30
|
// TODO: Add needed logic when we can define contents for multi locale queue position message
|
|
26
31
|
if (botContext.input.type === INPUT.EVENT_QUEUE_POSITION_CHANGED) {
|
|
27
|
-
return []
|
|
32
|
+
return { contents: [] }
|
|
28
33
|
}
|
|
29
34
|
|
|
30
35
|
if (botContext.input.payload?.startsWith(EMPTY_PAYLOAD)) {
|
|
@@ -33,11 +38,13 @@ export async function getContents(
|
|
|
33
38
|
|
|
34
39
|
if (botContext.input.payload || contentID) {
|
|
35
40
|
const contentsByPayload = await getContentsByPayload(context)
|
|
36
|
-
if (contentsByPayload.length > 0) {
|
|
41
|
+
if (contentsByPayload.contents.length > 0) {
|
|
37
42
|
return contentsByPayload
|
|
38
43
|
}
|
|
39
44
|
|
|
40
|
-
return
|
|
45
|
+
return {
|
|
46
|
+
contents: await getContentsByFallback(context),
|
|
47
|
+
}
|
|
41
48
|
}
|
|
42
49
|
|
|
43
50
|
if (
|
|
@@ -46,11 +53,13 @@ export async function getContents(
|
|
|
46
53
|
) {
|
|
47
54
|
const aiAgentContents = await getContentsByAiAgentFromUserInput(context)
|
|
48
55
|
if (aiAgentContents.length > 0) {
|
|
49
|
-
return aiAgentContents
|
|
56
|
+
return { contents: aiAgentContents }
|
|
50
57
|
}
|
|
51
58
|
}
|
|
52
59
|
|
|
53
|
-
return
|
|
60
|
+
return {
|
|
61
|
+
contents: await getContentsByFallback(context),
|
|
62
|
+
}
|
|
54
63
|
}
|
|
55
64
|
|
|
56
65
|
function isContactRequested(input: Input) {
|
package/src/action/index.tsx
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type BotContext, isDev, isWebchat } from '@botonic/core'
|
|
2
2
|
import {
|
|
3
|
+
CampaignMessageAttributesProvider,
|
|
3
4
|
Multichannel,
|
|
4
5
|
RequestContext,
|
|
5
6
|
WebchatSettings,
|
|
@@ -21,6 +22,7 @@ import { getContents } from './get-contents'
|
|
|
21
22
|
|
|
22
23
|
export type FlowBuilderActionProps = {
|
|
23
24
|
contents: FlowContent[]
|
|
25
|
+
campaignFirstMessageId?: string
|
|
24
26
|
webchatSettingsParams?: WebchatSettingsProps
|
|
25
27
|
}
|
|
26
28
|
|
|
@@ -46,14 +48,20 @@ export class FlowBuilderAction extends React.Component<FlowBuilderActionProps> {
|
|
|
46
48
|
botContext: BotContext,
|
|
47
49
|
contentID?: string
|
|
48
50
|
): Promise<FlowBuilderActionProps> {
|
|
49
|
-
const contents = await getContents(
|
|
51
|
+
const { contents, campaignFirstMessageId } = await getContents(
|
|
52
|
+
botContext,
|
|
53
|
+
contentID
|
|
54
|
+
)
|
|
50
55
|
|
|
51
56
|
const contentsToRender = await FlowBuilderAction.prepareContentsToRender(
|
|
52
57
|
botContext,
|
|
53
58
|
contents
|
|
54
59
|
)
|
|
55
60
|
|
|
56
|
-
return {
|
|
61
|
+
return {
|
|
62
|
+
contents: contentsToRender,
|
|
63
|
+
campaignFirstMessageId,
|
|
64
|
+
}
|
|
57
65
|
}
|
|
58
66
|
|
|
59
67
|
static async prepareContentsToRender(
|
|
@@ -137,7 +145,7 @@ export class FlowBuilderAction extends React.Component<FlowBuilderActionProps> {
|
|
|
137
145
|
}
|
|
138
146
|
|
|
139
147
|
render(): JSX.Element | JSX.Element[] {
|
|
140
|
-
const { contents } = this.props
|
|
148
|
+
const { contents, campaignFirstMessageId } = this.props
|
|
141
149
|
const botContext = this.context as BotContext
|
|
142
150
|
const { shouldSendWebchatSettings, webchatSettingsParams } =
|
|
143
151
|
this.getWebchatSettingsParams(botContext)
|
|
@@ -147,15 +155,37 @@ export class FlowBuilderAction extends React.Component<FlowBuilderActionProps> {
|
|
|
147
155
|
{shouldSendWebchatSettings && (
|
|
148
156
|
<WebchatSettings {...webchatSettingsParams} />
|
|
149
157
|
)}
|
|
150
|
-
{
|
|
158
|
+
{FlowBuilderAction.renderContents(
|
|
159
|
+
contents,
|
|
160
|
+
botContext,
|
|
161
|
+
campaignFirstMessageId
|
|
162
|
+
)}
|
|
151
163
|
</>
|
|
152
164
|
)
|
|
153
165
|
}
|
|
166
|
+
|
|
167
|
+
protected static renderContents(
|
|
168
|
+
contents: FlowContent[],
|
|
169
|
+
botContext: BotContext,
|
|
170
|
+
campaignFirstMessageId?: string
|
|
171
|
+
): JSX.Element | JSX.Element[] {
|
|
172
|
+
const rendered = contents.map(content => content.toBotonic(botContext))
|
|
173
|
+
|
|
174
|
+
if (!campaignFirstMessageId) {
|
|
175
|
+
return rendered
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
return (
|
|
179
|
+
<CampaignMessageAttributesProvider campaignId={campaignFirstMessageId}>
|
|
180
|
+
{rendered}
|
|
181
|
+
</CampaignMessageAttributesProvider>
|
|
182
|
+
)
|
|
183
|
+
}
|
|
154
184
|
}
|
|
155
185
|
|
|
156
186
|
export class FlowBuilderMultichannelAction extends FlowBuilderAction {
|
|
157
187
|
render(): JSX.Element | JSX.Element[] {
|
|
158
|
-
const { contents } = this.props
|
|
188
|
+
const { contents, campaignFirstMessageId } = this.props
|
|
159
189
|
const botContext = this.context as BotContext
|
|
160
190
|
const { shouldSendWebchatSettings, webchatSettingsParams } =
|
|
161
191
|
this.getWebchatSettingsParams(botContext)
|
|
@@ -165,7 +195,11 @@ export class FlowBuilderMultichannelAction extends FlowBuilderAction {
|
|
|
165
195
|
{shouldSendWebchatSettings && (
|
|
166
196
|
<WebchatSettings {...webchatSettingsParams} />
|
|
167
197
|
)}
|
|
168
|
-
{
|
|
198
|
+
{FlowBuilderAction.renderContents(
|
|
199
|
+
contents,
|
|
200
|
+
botContext,
|
|
201
|
+
campaignFirstMessageId
|
|
202
|
+
)}
|
|
169
203
|
</Multichannel>
|
|
170
204
|
)
|
|
171
205
|
}
|