@botonic/plugin-flow-builder 0.26.2-alpha.0 → 0.27.0-alpha.1
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/index.js +41 -19
- package/lib/cjs/action/index.js.map +1 -1
- package/lib/cjs/action/knowledge-bases.js +32 -7
- package/lib/cjs/action/knowledge-bases.js.map +1 -1
- package/lib/cjs/api.d.ts +2 -4
- package/lib/cjs/api.js +7 -32
- package/lib/cjs/api.js.map +1 -1
- package/lib/cjs/constants.d.ts +1 -1
- package/lib/cjs/constants.js +2 -2
- package/lib/cjs/constants.js.map +1 -1
- package/lib/cjs/content-fields/flow-handoff.js +7 -19
- package/lib/cjs/content-fields/flow-handoff.js.map +1 -1
- package/lib/cjs/content-fields/index.d.ts +1 -0
- package/lib/cjs/content-fields/index.js +3 -1
- package/lib/cjs/content-fields/index.js.map +1 -1
- package/lib/cjs/functions/conditional-queue-status.d.ts +7 -1
- package/lib/cjs/functions/conditional-queue-status.js +24 -11
- package/lib/cjs/functions/conditional-queue-status.js.map +1 -1
- package/lib/cjs/index.d.ts +6 -3
- package/lib/cjs/index.js +22 -13
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/tracking.d.ts +27 -16
- package/lib/cjs/tracking.js +45 -20
- package/lib/cjs/tracking.js.map +1 -1
- package/lib/cjs/types.d.ts +19 -2
- package/lib/cjs/types.js.map +1 -1
- package/lib/cjs/user-input/index.d.ts +2 -1
- package/lib/cjs/user-input/index.js +9 -3
- package/lib/cjs/user-input/index.js.map +1 -1
- package/lib/cjs/user-input/intent.js +12 -8
- package/lib/cjs/user-input/intent.js.map +1 -1
- package/lib/cjs/user-input/keyword.d.ts +21 -1
- package/lib/cjs/user-input/keyword.js +66 -14
- package/lib/cjs/user-input/keyword.js.map +1 -1
- package/lib/cjs/user-input/smart-intent.d.ts +18 -1
- package/lib/cjs/user-input/smart-intent.js +46 -28
- package/lib/cjs/user-input/smart-intent.js.map +1 -1
- package/lib/esm/action/index.js +42 -20
- package/lib/esm/action/index.js.map +1 -1
- package/lib/esm/action/knowledge-bases.js +33 -8
- package/lib/esm/action/knowledge-bases.js.map +1 -1
- package/lib/esm/api.d.ts +2 -4
- package/lib/esm/api.js +8 -33
- package/lib/esm/api.js.map +1 -1
- package/lib/esm/constants.d.ts +1 -1
- package/lib/esm/constants.js +1 -1
- package/lib/esm/constants.js.map +1 -1
- package/lib/esm/content-fields/flow-handoff.js +7 -19
- package/lib/esm/content-fields/flow-handoff.js.map +1 -1
- package/lib/esm/content-fields/index.d.ts +1 -0
- package/lib/esm/content-fields/index.js +1 -0
- package/lib/esm/content-fields/index.js.map +1 -1
- package/lib/esm/functions/conditional-queue-status.d.ts +7 -1
- package/lib/esm/functions/conditional-queue-status.js +22 -10
- package/lib/esm/functions/conditional-queue-status.js.map +1 -1
- package/lib/esm/index.d.ts +6 -3
- package/lib/esm/index.js +23 -14
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/tracking.d.ts +27 -16
- package/lib/esm/tracking.js +42 -19
- package/lib/esm/tracking.js.map +1 -1
- package/lib/esm/types.d.ts +19 -2
- package/lib/esm/types.js.map +1 -1
- package/lib/esm/user-input/index.d.ts +2 -1
- package/lib/esm/user-input/index.js +11 -5
- package/lib/esm/user-input/index.js.map +1 -1
- package/lib/esm/user-input/intent.js +13 -9
- package/lib/esm/user-input/intent.js.map +1 -1
- package/lib/esm/user-input/keyword.d.ts +21 -1
- package/lib/esm/user-input/keyword.js +65 -13
- package/lib/esm/user-input/keyword.js.map +1 -1
- package/lib/esm/user-input/smart-intent.d.ts +18 -1
- package/lib/esm/user-input/smart-intent.js +44 -26
- package/lib/esm/user-input/smart-intent.js.map +1 -1
- package/package.json +2 -2
- package/src/action/index.tsx +71 -25
- package/src/action/knowledge-bases.ts +44 -10
- package/src/api.ts +11 -57
- package/src/constants.ts +1 -1
- package/src/content-fields/flow-handoff.tsx +8 -28
- package/src/content-fields/index.ts +1 -0
- package/src/functions/conditional-queue-status.ts +28 -13
- package/src/index.ts +36 -19
- package/src/tracking.ts +53 -17
- package/src/types.ts +18 -2
- package/src/user-input/index.ts +13 -7
- package/src/user-input/intent.ts +17 -10
- package/src/user-input/keyword.ts +90 -15
- package/src/user-input/smart-intent.ts +57 -29
package/lib/esm/action/index.js
CHANGED
|
@@ -4,18 +4,16 @@ import { Multichannel, RequestContext } from '@botonic/react';
|
|
|
4
4
|
import React from 'react';
|
|
5
5
|
import { FlowHandoff } from '../content-fields';
|
|
6
6
|
import { getFlowBuilderPlugin } from '../helpers';
|
|
7
|
-
import {
|
|
7
|
+
import { EventAction, trackEvent, trackFlowContent } from '../tracking';
|
|
8
8
|
import { createNodeFromKnowledgeBase } from './knowledge-bases';
|
|
9
9
|
export class FlowBuilderAction extends React.Component {
|
|
10
10
|
static botonicInit(request) {
|
|
11
11
|
return __awaiter(this, void 0, void 0, function* () {
|
|
12
|
-
const
|
|
13
|
-
const locale = flowBuilderPlugin.getLocale(request.session);
|
|
14
|
-
const targetNode = yield getTargetNode(flowBuilderPlugin.cmsApi, request);
|
|
15
|
-
const contents = yield flowBuilderPlugin.getContentsByNode(targetNode, locale);
|
|
12
|
+
const contents = yield getContents(request);
|
|
16
13
|
const handoffContent = contents.find(content => content instanceof FlowHandoff);
|
|
17
|
-
if (handoffContent)
|
|
14
|
+
if (handoffContent) {
|
|
18
15
|
yield handoffContent.doHandoff(request);
|
|
16
|
+
}
|
|
19
17
|
return { contents };
|
|
20
18
|
});
|
|
21
19
|
}
|
|
@@ -33,25 +31,46 @@ export class FlowBuilderMultichannelAction extends FlowBuilderAction {
|
|
|
33
31
|
return (_jsx(Multichannel, Object.assign({ text: { buttonsAsText: false } }, { children: contents.map(content => content.toBotonic(content.id, request)) })));
|
|
34
32
|
}
|
|
35
33
|
}
|
|
36
|
-
function
|
|
34
|
+
function getContents(request) {
|
|
37
35
|
return __awaiter(this, void 0, void 0, function* () {
|
|
36
|
+
const flowBuilderPlugin = getFlowBuilderPlugin(request.plugins);
|
|
37
|
+
const cmsApi = flowBuilderPlugin.cmsApi;
|
|
38
|
+
const locale = flowBuilderPlugin.getLocale(request.session);
|
|
39
|
+
const resolvedLocale = flowBuilderPlugin.cmsApi.getResolvedLocale(locale);
|
|
40
|
+
const context = {
|
|
41
|
+
cmsApi,
|
|
42
|
+
flowBuilderPlugin,
|
|
43
|
+
request,
|
|
44
|
+
resolvedLocale,
|
|
45
|
+
};
|
|
38
46
|
if (request.session.is_first_interaction) {
|
|
39
|
-
|
|
40
|
-
yield trackEvent(request, EventName.botStart);
|
|
41
|
-
return startNode;
|
|
47
|
+
return yield flowBuilderPlugin.getStartContents(resolvedLocale);
|
|
42
48
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
49
|
+
if (request.input.payload) {
|
|
50
|
+
return yield getContentsByPayload(context);
|
|
51
|
+
}
|
|
52
|
+
return yield getContentsByFallback(context);
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
function getContentsByPayload({ cmsApi, flowBuilderPlugin, request, resolvedLocale, }) {
|
|
56
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
57
|
+
const targetNode = request.input.payload
|
|
58
|
+
? cmsApi.getNodeById(request.input.payload)
|
|
46
59
|
: undefined;
|
|
47
60
|
if (targetNode) {
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
yield trackEvent(request, EventName.botFaq, eventArgs);
|
|
52
|
-
return targetNode;
|
|
61
|
+
const contents = yield flowBuilderPlugin.getContentsByNode(targetNode, resolvedLocale);
|
|
62
|
+
yield trackFlowContent(request, contents);
|
|
63
|
+
return contents;
|
|
53
64
|
}
|
|
54
|
-
return
|
|
65
|
+
return [];
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
function getContentsByFallback({ cmsApi, flowBuilderPlugin, request, resolvedLocale, }) {
|
|
69
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
70
|
+
const fallbackNode = yield getFallbackNode(cmsApi, request);
|
|
71
|
+
const fallbackContents = yield flowBuilderPlugin.getContentsByNode(fallbackNode, resolvedLocale);
|
|
72
|
+
yield trackFlowContent(request, fallbackContents);
|
|
73
|
+
return fallbackContents;
|
|
55
74
|
});
|
|
56
75
|
}
|
|
57
76
|
function getFallbackNode(cmsApi, request) {
|
|
@@ -67,7 +86,10 @@ function getFallbackNode(cmsApi, request) {
|
|
|
67
86
|
const isFirstFallbackOption = !!request.session.user.extra_data.isFirstFallbackOption;
|
|
68
87
|
const fallbackNode = cmsApi.getFallbackNode(isFirstFallbackOption);
|
|
69
88
|
request.session.user.extra_data.isFirstFallbackOption = !isFirstFallbackOption;
|
|
70
|
-
|
|
89
|
+
trackEvent(request, EventAction.Fallback, {
|
|
90
|
+
fallbackOut: isFirstFallbackOption ? 1 : 2,
|
|
91
|
+
fallbackMessageId: request.input.message_id,
|
|
92
|
+
});
|
|
71
93
|
return fallbackNode;
|
|
72
94
|
});
|
|
73
95
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/action/index.tsx"],"names":[],"mappings":";;AAAA,OAAO,EAAiB,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC5E,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,EAAe,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/action/index.tsx"],"names":[],"mappings":";;AAAA,OAAO,EAAiB,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC5E,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,EAAe,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEjD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AACvE,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAA;AAM/D,MAAM,OAAO,iBAAkB,SAAQ,KAAK,CAAC,SAAiC;IAG5E,MAAM,CAAO,WAAW,CACtB,OAAsB;;YAEtB,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAA;YAE3C,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAClC,OAAO,CAAC,EAAE,CAAC,OAAO,YAAY,WAAW,CAC3B,CAAA;YAChB,IAAI,cAAc,EAAE;gBAClB,MAAM,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;aACxC;YAED,OAAO,EAAE,QAAQ,EAAE,CAAA;QACrB,CAAC;KAAA;IAED,MAAM;QACJ,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAC5B,OAAO,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAA;IACxE,CAAC;;AArBM,6BAAW,GAAG,cAAc,CAAA;AAwBrC,MAAM,OAAO,6BAA8B,SAAQ,iBAAiB;IAClE,MAAM;QACJ,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAC5B,OAAO,CACL,KAAC,YAAY,kBAAC,IAAI,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,gBACzC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,IACnD,CAChB,CAAA;IACH,CAAC;CACF;AAED,SAAe,WAAW,CAAC,OAAsB;;QAC/C,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAC/D,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAA;QACvC,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAC3D,MAAM,cAAc,GAAG,iBAAiB,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAA;QACzE,MAAM,OAAO,GAAG;YACd,MAAM;YACN,iBAAiB;YACjB,OAAO;YACP,cAAc;SACf,CAAA;QAED,IAAI,OAAO,CAAC,OAAO,CAAC,oBAAoB,EAAE;YACxC,OAAO,MAAM,iBAAiB,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAA;SAChE;QAED,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE;YACzB,OAAO,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAA;SAC3C;QAED,OAAO,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAA;IAC7C,CAAC;CAAA;AASD,SAAe,oBAAoB,CAAC,EAClC,MAAM,EACN,iBAAiB,EACjB,OAAO,EACP,cAAc,GACK;;QACnB,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO;YACtC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAoB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;YAC9D,CAAC,CAAC,SAAS,CAAA;QAEb,IAAI,UAAU,EAAE;YACd,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,iBAAiB,CACxD,UAAU,EACV,cAAc,CACf,CAAA;YACD,MAAM,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;YAEzC,OAAO,QAAQ,CAAA;SAChB;QAED,OAAO,EAAE,CAAA;IACX,CAAC;CAAA;AAED,SAAe,qBAAqB,CAAC,EACnC,MAAM,EACN,iBAAiB,EACjB,OAAO,EACP,cAAc,GACK;;QACnB,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC3D,MAAM,gBAAgB,GAAG,MAAM,iBAAiB,CAAC,iBAAiB,CAChE,YAAY,EACZ,cAAc,CACf,CAAA;QACD,MAAM,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAA;QAEjD,OAAO,gBAAgB,CAAA;IACzB,CAAC;CAAA;AAED,SAAe,eAAe,CAAC,MAAsB,EAAE,OAAsB;;;QAC3E,IAAI,CAAA,MAAA,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,0CAAE,qBAAqB,MAAK,SAAS,EAAE;YACxE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,mCAC1B,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,KAClC,qBAAqB,EAAE,IAAI,GAC5B,CAAA;SACF;QAED,MAAM,iBAAiB,GAAG,MAAM,2BAA2B,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC5E,IAAI,iBAAiB,EAAE;YACrB,OAAO,iBAAiB,CAAA;SACzB;QAED,MAAM,qBAAqB,GACzB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAA;QACzD,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAA;QAClE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,GAAG,CAAC,qBAAqB,CAAA;QAE9E,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,QAAQ,EAAE;YACxC,WAAW,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,iBAAiB,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU;SAC5C,CAAC,CAAA;QAEF,OAAO,YAAY,CAAA;;CACpB"}
|
|
@@ -2,7 +2,7 @@ import { __awaiter } from "tslib";
|
|
|
2
2
|
import { v4 as uuid } from 'uuid';
|
|
3
3
|
import { HtNodeWithContentType, } from '../content-fields/hubtype-fields';
|
|
4
4
|
import { getFlowBuilderPlugin } from '../helpers';
|
|
5
|
-
import {
|
|
5
|
+
import { EventAction, KnowledgebaseFailReason, trackEvent } from '../tracking';
|
|
6
6
|
export function createNodeFromKnowledgeBase(cmsApi, request) {
|
|
7
7
|
return __awaiter(this, void 0, void 0, function* () {
|
|
8
8
|
const flowBuilderPlugin = getFlowBuilderPlugin(request.plugins);
|
|
@@ -13,11 +13,9 @@ export function createNodeFromKnowledgeBase(cmsApi, request) {
|
|
|
13
13
|
(knowledgeBaseConfig === null || knowledgeBaseConfig === void 0 ? void 0 : knowledgeBaseConfig.isActive)) {
|
|
14
14
|
try {
|
|
15
15
|
const knowledgeBaseResponse = yield flowBuilderPlugin.getKnowledgeBaseResponse(request);
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
knowledge_source_ids: knowledgeBaseResponse.sources.map(source => source.knowledgeSourceId),
|
|
20
|
-
});
|
|
16
|
+
yield trackKnowledgeBase(knowledgeBaseResponse, request);
|
|
17
|
+
if (knowledgeBaseResponse.hasKnowledge &&
|
|
18
|
+
knowledgeBaseResponse.isFaithuful) {
|
|
21
19
|
const knowledgeBaseNode = {
|
|
22
20
|
type: HtNodeWithContentType.TEXT,
|
|
23
21
|
content: {
|
|
@@ -43,11 +41,38 @@ export function createNodeFromKnowledgeBase(cmsApi, request) {
|
|
|
43
41
|
}
|
|
44
42
|
}
|
|
45
43
|
catch (e) {
|
|
46
|
-
console.
|
|
47
|
-
return undefined;
|
|
44
|
+
console.error('Hubtype knowledge base api error: ', { e });
|
|
48
45
|
}
|
|
49
46
|
}
|
|
50
47
|
return undefined;
|
|
51
48
|
});
|
|
52
49
|
}
|
|
50
|
+
function trackKnowledgeBase(response, request) {
|
|
51
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
52
|
+
/* TODO:
|
|
53
|
+
In order to have all these parameters in the base knowlege response
|
|
54
|
+
it is necessary to use the new endpoint to which the knowledge sources
|
|
55
|
+
have to be indicated. For now this will not work, we need to finish
|
|
56
|
+
the knowldege base node in the flow builder frontend.
|
|
57
|
+
*/
|
|
58
|
+
const knowledgebaseInferenceId = response.inferenceId;
|
|
59
|
+
const knowledgebaseSourcesIds = response.sources.map(source => source.knowledgeSourceId);
|
|
60
|
+
const knowledgebaseChunksIds = response.sources.map(source => source.knowledgeChunkId);
|
|
61
|
+
const knowledgebaseMessageId = request.input.message_id;
|
|
62
|
+
let knowledgebaseFailReason;
|
|
63
|
+
if (!response.isFaithuful) {
|
|
64
|
+
knowledgebaseFailReason = KnowledgebaseFailReason.Hallucination;
|
|
65
|
+
}
|
|
66
|
+
if (!response.hasKnowledge) {
|
|
67
|
+
knowledgebaseFailReason = KnowledgebaseFailReason.NoKnowledge;
|
|
68
|
+
}
|
|
69
|
+
yield trackEvent(request, EventAction.Knowledgebase, {
|
|
70
|
+
knowledgebaseInferenceId,
|
|
71
|
+
knowledgebaseFailReason,
|
|
72
|
+
knowledgebaseSourcesIds,
|
|
73
|
+
knowledgebaseChunksIds,
|
|
74
|
+
knowledgebaseMessageId,
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
}
|
|
53
78
|
//# sourceMappingURL=knowledge-bases.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledge-bases.js","sourceRoot":"","sources":["../../../src/action/knowledge-bases.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,MAAM,CAAA;AAGjC,OAAO,EAEL,qBAAqB,GAEtB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"knowledge-bases.js","sourceRoot":"","sources":["../../../src/action/knowledge-bases.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/api.d.ts
CHANGED
|
@@ -22,12 +22,10 @@ export declare class FlowBuilderApi {
|
|
|
22
22
|
getSmartIntentNodes(): HtSmartIntentNode[];
|
|
23
23
|
private nodeContainsIntent;
|
|
24
24
|
hasMetConfidenceThreshold(node: HtIntentNode, predictedConfidence: number): boolean;
|
|
25
|
-
|
|
26
|
-
private matchKeywords;
|
|
27
|
-
private inputMatchesAnyKeyword;
|
|
28
|
-
private resolveKeywordAsRegExp;
|
|
25
|
+
getKeywordNodes(): HtKeywordNode[];
|
|
29
26
|
getPayload(target?: HtNodeLink): string | undefined;
|
|
30
27
|
createPayloadWithParams(botActionNode: HtBotActionNode): string;
|
|
31
28
|
private getFollowUpContentID;
|
|
29
|
+
getFlowName(flowId: string): string;
|
|
32
30
|
getResolvedLocale(locale: string): string;
|
|
33
31
|
}
|
package/lib/esm/api.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __awaiter } from "tslib";
|
|
2
2
|
import axios from 'axios';
|
|
3
|
-
import {
|
|
3
|
+
import { BOT_ACTION_PAYLOAD_PREFIX, SEPARATOR } from './constants';
|
|
4
4
|
import { HtNodeWithContentType, HtNodeWithoutContentType, } from './content-fields/hubtype-fields';
|
|
5
5
|
export class FlowBuilderApi {
|
|
6
6
|
constructor() { }
|
|
@@ -98,44 +98,15 @@ export class FlowBuilderApi {
|
|
|
98
98
|
const nodeConfidence = node.content.confidence / 100;
|
|
99
99
|
return predictedConfidence >= nodeConfidence;
|
|
100
100
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
const keywordNodes = this.flow.nodes.filter(node => node.type === HtNodeWithContentType.KEYWORD);
|
|
104
|
-
const matchedKeywordNodes = keywordNodes.filter(node => this.matchKeywords(node, userInput, locale));
|
|
105
|
-
if (matchedKeywordNodes.length > 0 && matchedKeywordNodes[0].target) {
|
|
106
|
-
return matchedKeywordNodes[0];
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
catch (error) {
|
|
110
|
-
console.error(`Error getting node by keyword '${userInput}': `, error);
|
|
111
|
-
}
|
|
112
|
-
return undefined;
|
|
113
|
-
}
|
|
114
|
-
matchKeywords(node, input, locale) {
|
|
115
|
-
const result = node.content.keywords.find(keywords => keywords.locale === locale &&
|
|
116
|
-
this.inputMatchesAnyKeyword(input, keywords.values));
|
|
117
|
-
return Boolean(result);
|
|
118
|
-
}
|
|
119
|
-
inputMatchesAnyKeyword(input, keywords) {
|
|
120
|
-
return keywords.some(keyword => {
|
|
121
|
-
const regExpMatchArray = keyword.match(REG_EXP_PATTERN);
|
|
122
|
-
if (regExpMatchArray) {
|
|
123
|
-
return this.resolveKeywordAsRegExp(regExpMatchArray, input);
|
|
124
|
-
}
|
|
125
|
-
return input.includes(keyword);
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
resolveKeywordAsRegExp(regExpMatchArray, input) {
|
|
129
|
-
const [, pattern, flags] = regExpMatchArray;
|
|
130
|
-
const keywordAsRegExp = new RegExp(pattern, flags);
|
|
131
|
-
return input.match(keywordAsRegExp);
|
|
101
|
+
getKeywordNodes() {
|
|
102
|
+
return this.flow.nodes.filter(node => node.type === HtNodeWithContentType.KEYWORD);
|
|
132
103
|
}
|
|
133
104
|
getPayload(target) {
|
|
134
105
|
if (!target) {
|
|
135
106
|
return undefined;
|
|
136
107
|
}
|
|
137
108
|
if (target.type === HtNodeWithoutContentType.BOT_ACTION) {
|
|
138
|
-
return `${
|
|
109
|
+
return `${BOT_ACTION_PAYLOAD_PREFIX}${target.id}`;
|
|
139
110
|
}
|
|
140
111
|
return target.id;
|
|
141
112
|
}
|
|
@@ -160,6 +131,10 @@ export class FlowBuilderApi {
|
|
|
160
131
|
return followUpNode === null || followUpNode === void 0 ? void 0 : followUpNode.code;
|
|
161
132
|
}
|
|
162
133
|
}
|
|
134
|
+
getFlowName(flowId) {
|
|
135
|
+
const flow = this.flow.flows.find(flow => flow.id === flowId);
|
|
136
|
+
return flow ? flow.name : '';
|
|
137
|
+
}
|
|
163
138
|
getResolvedLocale(locale) {
|
|
164
139
|
if (this.flow.locales.find(flowLocale => flowLocale === locale)) {
|
|
165
140
|
return locale;
|
package/lib/esm/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/constants.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export declare const FLOW_BUILDER_API_URL_PROD = "https://api.ent0.flowbuilder.prod.hubtype.com";
|
|
2
2
|
export declare const SEPARATOR = "|";
|
|
3
3
|
export declare const SOURCE_INFO_SEPARATOR: string;
|
|
4
|
-
export declare const
|
|
4
|
+
export declare const BOT_ACTION_PAYLOAD_PREFIX: string;
|
|
5
5
|
export declare const VARIABLE_PATTERN: RegExp;
|
|
6
6
|
export declare const ACCESS_TOKEN_VARIABLE_KEY = "_access_token";
|
|
7
7
|
export declare const REG_EXP_PATTERN: RegExp;
|
package/lib/esm/constants.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export const FLOW_BUILDER_API_URL_PROD = 'https://api.ent0.flowbuilder.prod.hubtype.com';
|
|
2
2
|
export const SEPARATOR = '|';
|
|
3
3
|
export const SOURCE_INFO_SEPARATOR = `${SEPARATOR}source_`;
|
|
4
|
-
export const
|
|
4
|
+
export const BOT_ACTION_PAYLOAD_PREFIX = `ba${SEPARATOR}`;
|
|
5
5
|
export const VARIABLE_PATTERN = /{([^}]+)}/g;
|
|
6
6
|
export const ACCESS_TOKEN_VARIABLE_KEY = '_access_token';
|
|
7
7
|
export const REG_EXP_PATTERN = /^\/(.*)\/([gimyus]*)$/;
|
package/lib/esm/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,yBAAyB,GACpC,+CAA+C,CAAA;AACjD,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,CAAA;AAC5B,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,SAAS,SAAS,CAAA;AAC1D,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,yBAAyB,GACpC,+CAA+C,CAAA;AACjD,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,CAAA;AAC5B,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,SAAS,SAAS,CAAA;AAC1D,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,SAAS,EAAE,CAAA;AACzD,MAAM,CAAC,MAAM,gBAAgB,GAAG,YAAY,CAAA;AAC5C,MAAM,CAAC,MAAM,yBAAyB,GAAG,eAAe,CAAA;AACxD,MAAM,CAAC,MAAM,eAAe,GAAG,uBAAuB,CAAA"}
|
|
@@ -2,48 +2,36 @@ import { __awaiter } from "tslib";
|
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
3
|
import { HandOffBuilder } from '@botonic/core';
|
|
4
4
|
import { WebchatSettings } from '@botonic/react';
|
|
5
|
-
import { getQueueAvailability } from '../functions/conditional-queue-status';
|
|
6
|
-
import { EventName, trackEvent } from '../tracking';
|
|
7
5
|
import { ContentFieldsBase } from './content-fields-base';
|
|
8
6
|
export class FlowHandoff extends ContentFieldsBase {
|
|
9
7
|
static fromHubtypeCMS(cmsHandoff, locale, cmsApi) {
|
|
10
8
|
const newHandoff = new FlowHandoff(cmsHandoff.id);
|
|
11
9
|
newHandoff.code = cmsHandoff.code;
|
|
12
10
|
newHandoff.queue = this.getQueueByLocale(locale, cmsHandoff.content.queue);
|
|
13
|
-
newHandoff.onFinishPayload = this.getOnFinishPayload(cmsHandoff,
|
|
11
|
+
newHandoff.onFinishPayload = this.getOnFinishPayload(cmsHandoff, cmsApi);
|
|
14
12
|
newHandoff.handoffAutoAssign = cmsHandoff.content.has_auto_assign;
|
|
15
13
|
return newHandoff;
|
|
16
14
|
}
|
|
17
|
-
static getOnFinishPayload(cmsHandoff,
|
|
18
|
-
var _a
|
|
15
|
+
static getOnFinishPayload(cmsHandoff, cmsApi) {
|
|
16
|
+
var _a;
|
|
19
17
|
if ((_a = cmsHandoff.target) === null || _a === void 0 ? void 0 : _a.id) {
|
|
20
18
|
return cmsApi.getPayload(cmsHandoff.target);
|
|
21
19
|
}
|
|
22
|
-
// OLD PAYLOAD
|
|
23
|
-
const payloadId = (_b = cmsHandoff.content.payload.find(payload => payload.locale === locale)) === null || _b === void 0 ? void 0 : _b.id;
|
|
24
|
-
if (payloadId) {
|
|
25
|
-
return cmsApi.getNodeById(payloadId).content.payload;
|
|
26
|
-
}
|
|
27
20
|
return undefined;
|
|
28
21
|
}
|
|
29
22
|
doHandoff(request) {
|
|
30
23
|
return __awaiter(this, void 0, void 0, function* () {
|
|
31
|
-
// @ts-ignore
|
|
32
24
|
const handOffBuilder = new HandOffBuilder(request.session);
|
|
33
25
|
handOffBuilder.withAutoAssignOnWaiting(this.handoffAutoAssign);
|
|
34
26
|
if (this.onFinishPayload) {
|
|
35
27
|
handOffBuilder.withOnFinishPayload(this.onFinishPayload);
|
|
36
28
|
}
|
|
37
29
|
if (this.queue) {
|
|
38
|
-
const availabilityData = yield getQueueAvailability(this.queue.id);
|
|
39
|
-
const eventArgs = {
|
|
40
|
-
queue_open: availabilityData.open,
|
|
41
|
-
queue_id: this.queue.id,
|
|
42
|
-
available_agents: availabilityData.available_agents > 0,
|
|
43
|
-
threshold_reached: availabilityData.availability_threshold_waiting_cases > 0,
|
|
44
|
-
};
|
|
45
|
-
yield trackEvent(request, EventName.handoffSuccess, eventArgs);
|
|
46
30
|
handOffBuilder.withQueue(this.queue.id);
|
|
31
|
+
handOffBuilder.withBotEvent({
|
|
32
|
+
language: request.session.user.extra_data.language,
|
|
33
|
+
country: request.session.user.extra_data.country,
|
|
34
|
+
});
|
|
47
35
|
yield handOffBuilder.handOff();
|
|
48
36
|
}
|
|
49
37
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flow-handoff.js","sourceRoot":"","sources":["../../../src/content-fields/flow-handoff.tsx"],"names":[],"mappings":";;AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAiB,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAI/D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"flow-handoff.js","sourceRoot":"","sources":["../../../src/content-fields/flow-handoff.tsx"],"names":[],"mappings":";;AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAiB,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAI/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAGzD,MAAM,OAAO,WAAY,SAAQ,iBAAiB;IAMhD,MAAM,CAAC,cAAc,CACnB,UAAyB,EACzB,MAAc,EACd,MAAsB;QAEtB,MAAM,UAAU,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;QACjD,UAAU,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAA;QACjC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAC1E,UAAU,CAAC,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;QACxE,UAAU,CAAC,iBAAiB,GAAG,UAAU,CAAC,OAAO,CAAC,eAAe,CAAA;QAEjE,OAAO,UAAU,CAAA;IACnB,CAAC;IAEO,MAAM,CAAC,kBAAkB,CAC/B,UAAyB,EACzB,MAAsB;;QAEtB,IAAI,MAAA,UAAU,CAAC,MAAM,0CAAE,EAAE,EAAE;YACzB,OAAO,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;SAC5C;QAED,OAAO,SAAS,CAAA;IAClB,CAAC;IAEK,SAAS,CAAC,OAAsB;;YACpC,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;YAC1D,cAAc,CAAC,uBAAuB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;YAE9D,IAAI,IAAI,CAAC,eAAe,EAAE;gBACxB,cAAc,CAAC,mBAAmB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;aACzD;YAED,IAAI,IAAI,CAAC,KAAK,EAAE;gBACd,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;gBACvC,cAAc,CAAC,YAAY,CAAC;oBAC1B,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ;oBAClD,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO;iBACjD,CAAC,CAAA;gBACF,MAAM,cAAc,CAAC,OAAO,EAAE,CAAA;aAC/B;QACH,CAAC;KAAA;IAED,SAAS;QACP,OAAO,KAAC,eAAe,IAAC,eAAe,EAAE,IAAI,GAAI,CAAA;IACnD,CAAC;CACF"}
|
|
@@ -10,4 +10,5 @@ export { FlowButton } from './flow-button';
|
|
|
10
10
|
export { FlowElement } from './flow-element';
|
|
11
11
|
export { FlowCarousel, FlowImage, FlowText, FlowVideo, FlowWhatsappButtonList };
|
|
12
12
|
export { FlowHandoff } from './flow-handoff';
|
|
13
|
+
export { FlowWhatsappCtaUrlButtonNode } from './flow-whatsapp-cta-url-button';
|
|
13
14
|
export type FlowContent = FlowCarousel | FlowImage | FlowText | FlowVideo | FlowWhatsappButtonList | FlowWhatsappCtaUrlButtonNode | FlowHandoff;
|
|
@@ -8,4 +8,5 @@ export { FlowButton } from './flow-button';
|
|
|
8
8
|
export { FlowElement } from './flow-element';
|
|
9
9
|
export { FlowCarousel, FlowImage, FlowText, FlowVideo, FlowWhatsappButtonList };
|
|
10
10
|
export { FlowHandoff } from './flow-handoff';
|
|
11
|
+
export { FlowWhatsappCtaUrlButtonNode } from './flow-whatsapp-cta-url-button';
|
|
11
12
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/content-fields/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE9C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAExC,OAAO,EAAE,sBAAsB,EAAE,MAAM,kDAAkD,CAAA;AAEzF,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,sBAAsB,EAAE,CAAA;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/content-fields/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE9C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAExC,OAAO,EAAE,sBAAsB,EAAE,MAAM,kDAAkD,CAAA;AAEzF,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,sBAAsB,EAAE,CAAA;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAA"}
|
|
@@ -11,7 +11,13 @@ declare enum QueueStatusResult {
|
|
|
11
11
|
OPEN_WITHOUT_AGENTS = "open-without-agents"
|
|
12
12
|
}
|
|
13
13
|
export declare function conditionalQueueStatus({ queue_id, check_available_agents, }: ConditionalQueueStatusArgs): Promise<QueueStatusResult>;
|
|
14
|
-
|
|
14
|
+
export declare class HubtypeQueuesApi {
|
|
15
|
+
queueId: string;
|
|
16
|
+
checkAvailableAgents: boolean;
|
|
17
|
+
constructor(queueId: string, checkAvailableAgents?: boolean);
|
|
18
|
+
getAvailability(): Promise<AvailabilityData>;
|
|
19
|
+
}
|
|
20
|
+
export interface AvailabilityData {
|
|
15
21
|
available: boolean;
|
|
16
22
|
waiting_cases: number;
|
|
17
23
|
availability_threshold_waiting_cases: number;
|
|
@@ -16,18 +16,30 @@ export function conditionalQueueStatus({ queue_id, check_available_agents, }) {
|
|
|
16
16
|
return data.open ? QueueStatusResult.OPEN : QueueStatusResult.CLOSED;
|
|
17
17
|
});
|
|
18
18
|
}
|
|
19
|
+
export class HubtypeQueuesApi {
|
|
20
|
+
constructor(queueId, checkAvailableAgents) {
|
|
21
|
+
this.queueId = queueId;
|
|
22
|
+
this.checkAvailableAgents = checkAvailableAgents || false;
|
|
23
|
+
}
|
|
24
|
+
getAvailability() {
|
|
25
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
26
|
+
const response = yield axios.get(`${HUBTYPE_API_URL}/public/v1/queues/${this.queueId}/availability/`,
|
|
27
|
+
// TODO: Make it configurable in the future
|
|
28
|
+
{
|
|
29
|
+
params: {
|
|
30
|
+
check_queue_schedule: true,
|
|
31
|
+
check_waiting_cases: false,
|
|
32
|
+
check_available_agents: this.checkAvailableAgents,
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
return response.data;
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
19
39
|
export function getQueueAvailability(queueId, checkAvailableAgents = false) {
|
|
20
40
|
return __awaiter(this, void 0, void 0, function* () {
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
{
|
|
24
|
-
params: {
|
|
25
|
-
check_queue_schedule: true,
|
|
26
|
-
check_waiting_cases: false,
|
|
27
|
-
check_available_agents: checkAvailableAgents,
|
|
28
|
-
},
|
|
29
|
-
});
|
|
30
|
-
return response.data;
|
|
41
|
+
const queuesApi = new HubtypeQueuesApi(queueId, checkAvailableAgents);
|
|
42
|
+
return yield queuesApi.getAvailability();
|
|
31
43
|
});
|
|
32
44
|
}
|
|
33
45
|
//# sourceMappingURL=conditional-queue-status.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conditional-queue-status.js","sourceRoot":"","sources":["../../../src/functions/conditional-queue-status.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,yBAAyB,CAAA;AAShF,IAAK,iBAIJ;AAJD,WAAK,iBAAiB;IACpB,kCAAa,CAAA;IACb,sCAAiB,CAAA;IACjB,gEAA2C,CAAA;AAC7C,CAAC,EAJI,iBAAiB,KAAjB,iBAAiB,QAIrB;AAED,MAAM,UAAgB,sBAAsB,CAAC,EAC3C,QAAQ,EACR,sBAAsB,GACK;;QAC3B,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAA;QACzE,IAAI,sBAAsB,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,gBAAgB,KAAK,CAAC,EAAE;YACtE,OAAO,iBAAiB,CAAC,mBAAmB,CAAA;SAC7C;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAA;IACtE,CAAC;CAAA;
|
|
1
|
+
{"version":3,"file":"conditional-queue-status.js","sourceRoot":"","sources":["../../../src/functions/conditional-queue-status.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,yBAAyB,CAAA;AAShF,IAAK,iBAIJ;AAJD,WAAK,iBAAiB;IACpB,kCAAa,CAAA;IACb,sCAAiB,CAAA;IACjB,gEAA2C,CAAA;AAC7C,CAAC,EAJI,iBAAiB,KAAjB,iBAAiB,QAIrB;AAED,MAAM,UAAgB,sBAAsB,CAAC,EAC3C,QAAQ,EACR,sBAAsB,GACK;;QAC3B,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAA;QACzE,IAAI,sBAAsB,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,gBAAgB,KAAK,CAAC,EAAE;YACtE,OAAO,iBAAiB,CAAC,mBAAmB,CAAA;SAC7C;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAA;IACtE,CAAC;CAAA;AAED,MAAM,OAAO,gBAAgB;IAI3B,YAAY,OAAe,EAAE,oBAA8B;QACzD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,IAAI,KAAK,CAAA;IAC3D,CAAC;IAEK,eAAe;;YACnB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAC9B,GAAG,eAAe,qBAAqB,IAAI,CAAC,OAAO,gBAAgB;YACnE,2CAA2C;YAC3C;gBACE,MAAM,EAAE;oBACN,oBAAoB,EAAE,IAAI;oBAC1B,mBAAmB,EAAE,KAAK;oBAC1B,sBAAsB,EAAE,IAAI,CAAC,oBAAoB;iBAClD;aACF,CACF,CAAA;YACD,OAAO,QAAQ,CAAC,IAAI,CAAA;QACtB,CAAC;KAAA;CACF;AAWD,MAAM,UAAgB,oBAAoB,CACxC,OAAe,EACf,oBAAoB,GAAG,KAAK;;QAE5B,MAAM,SAAS,GAAG,IAAI,gBAAgB,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAA;QACrE,OAAO,MAAM,SAAS,CAAC,eAAe,EAAE,CAAA;IAC1C,CAAC;CAAA"}
|
package/lib/esm/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { FlowBuilderApi } from './api';
|
|
|
4
4
|
import { FlowContent } from './content-fields';
|
|
5
5
|
import { HtNodeWithContent } from './content-fields/hubtype-fields';
|
|
6
6
|
import { BotonicPluginFlowBuilderOptions, KnowledgeBaseResponse, PayloadParamsBase } from './types';
|
|
7
|
+
import { SmartIntentsInferenceConfig } from './user-input/smart-intent';
|
|
7
8
|
export default class BotonicPluginFlowBuilder implements Plugin {
|
|
8
9
|
readonly options: BotonicPluginFlowBuilderOptions;
|
|
9
10
|
cmsApi: FlowBuilderApi;
|
|
@@ -13,13 +14,14 @@ export default class BotonicPluginFlowBuilder implements Plugin {
|
|
|
13
14
|
private currentRequest;
|
|
14
15
|
private getAccessToken;
|
|
15
16
|
getLocale: (session: Session) => string;
|
|
16
|
-
trackEvent?: (request: ActionRequest,
|
|
17
|
+
trackEvent?: (request: ActionRequest, eventAction: string, args?: Record<string, any>) => Promise<void>;
|
|
17
18
|
getKnowledgeBaseResponse?: (request: ActionRequest) => Promise<KnowledgeBaseResponse>;
|
|
19
|
+
smartIntentsConfig: SmartIntentsInferenceConfig;
|
|
18
20
|
constructor(options: BotonicPluginFlowBuilderOptions);
|
|
19
21
|
pre(request: PluginPreRequest): Promise<void>;
|
|
20
22
|
private updateRequestBeforeRoutes;
|
|
21
|
-
private
|
|
22
|
-
private
|
|
23
|
+
private removeSourceSufix;
|
|
24
|
+
private replacePayload;
|
|
23
25
|
getContentsByContentID(contentID: string, locale: string, prevContents?: FlowContent[]): Promise<FlowContent[]>;
|
|
24
26
|
getUUIDByContentID(contentID: string): string;
|
|
25
27
|
private getContentsById;
|
|
@@ -29,6 +31,7 @@ export default class BotonicPluginFlowBuilder implements Plugin {
|
|
|
29
31
|
private callFunction;
|
|
30
32
|
private getArgumentsByLocale;
|
|
31
33
|
getPayloadParams<T extends PayloadParamsBase>(payload: string): T;
|
|
34
|
+
getFlowName(flowId: string): string;
|
|
32
35
|
}
|
|
33
36
|
export * from './action';
|
|
34
37
|
export * from './content-fields';
|
package/lib/esm/index.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { __awaiter } from "tslib";
|
|
2
|
+
import { v4 as uuid } from 'uuid';
|
|
2
3
|
import { FlowBuilderApi } from './api';
|
|
3
|
-
import {
|
|
4
|
+
import { BOT_ACTION_PAYLOAD_PREFIX, FLOW_BUILDER_API_URL_PROD, SEPARATOR, SOURCE_INFO_SEPARATOR, } from './constants';
|
|
4
5
|
import { FlowCarousel, FlowHandoff, FlowImage, FlowText, FlowVideo, FlowWhatsappButtonList, } from './content-fields';
|
|
5
6
|
import { FlowWhatsappCtaUrlButtonNode } from './content-fields/flow-whatsapp-cta-url-button';
|
|
6
7
|
import { HtNodeWithContentType, } from './content-fields/hubtype-fields';
|
|
7
8
|
import { DEFAULT_FUNCTIONS } from './functions';
|
|
9
|
+
import { trackFlowContent } from './tracking';
|
|
8
10
|
import { FlowBuilderJSONVersion, } from './types';
|
|
9
11
|
import { getNodeByUserInput } from './user-input';
|
|
10
12
|
import { resolveGetAccessToken } from './utils';
|
|
@@ -19,6 +21,7 @@ export default class BotonicPluginFlowBuilder {
|
|
|
19
21
|
this.getAccessToken = resolveGetAccessToken(options);
|
|
20
22
|
this.trackEvent = options.trackEvent;
|
|
21
23
|
this.getKnowledgeBaseResponse = options.getKnowledgeBaseResponse;
|
|
24
|
+
this.smartIntentsConfig = Object.assign(Object.assign({}, options === null || options === void 0 ? void 0 : options.smartIntentsConfig), { useLatest: jsonVersion === FlowBuilderJSONVersion.LATEST });
|
|
22
25
|
const customFunctions = options.customFunctions || {};
|
|
23
26
|
this.functions = Object.assign(Object.assign({}, DEFAULT_FUNCTIONS), customFunctions);
|
|
24
27
|
}
|
|
@@ -37,7 +40,7 @@ export default class BotonicPluginFlowBuilder {
|
|
|
37
40
|
if (checkUserTextInput) {
|
|
38
41
|
const locale = this.getLocale(request.session);
|
|
39
42
|
const resolvedLocale = this.cmsApi.getResolvedLocale(locale);
|
|
40
|
-
const nodeByUserInput = yield getNodeByUserInput(this.cmsApi, resolvedLocale, request);
|
|
43
|
+
const nodeByUserInput = yield getNodeByUserInput(this.cmsApi, resolvedLocale, request, this.smartIntentsConfig);
|
|
41
44
|
request.input.payload = this.cmsApi.getPayload(nodeByUserInput === null || nodeByUserInput === void 0 ? void 0 : nodeByUserInput.target);
|
|
42
45
|
}
|
|
43
46
|
this.updateRequestBeforeRoutes(request);
|
|
@@ -45,20 +48,19 @@ export default class BotonicPluginFlowBuilder {
|
|
|
45
48
|
}
|
|
46
49
|
updateRequestBeforeRoutes(request) {
|
|
47
50
|
if (request.input.payload) {
|
|
48
|
-
request.input.payload = this.
|
|
49
|
-
request.input.payload
|
|
51
|
+
request.input.payload = this.removeSourceSufix(request.input.payload);
|
|
52
|
+
if (request.input.payload.startsWith(BOT_ACTION_PAYLOAD_PREFIX)) {
|
|
53
|
+
request.input.payload = this.replacePayload(request.input.payload);
|
|
54
|
+
}
|
|
50
55
|
}
|
|
51
56
|
}
|
|
52
|
-
|
|
53
|
-
return payload
|
|
57
|
+
removeSourceSufix(payload) {
|
|
58
|
+
return payload.split(SOURCE_INFO_SEPARATOR)[0];
|
|
54
59
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
return this.cmsApi.createPayloadWithParams(botActionNode);
|
|
60
|
-
}
|
|
61
|
-
return payload;
|
|
60
|
+
replacePayload(payload) {
|
|
61
|
+
const botActionId = payload.split(SEPARATOR)[1];
|
|
62
|
+
const botActionNode = this.cmsApi.getNodeById(botActionId);
|
|
63
|
+
return this.cmsApi.createPayloadWithParams(botActionNode);
|
|
62
64
|
}
|
|
63
65
|
getContentsByContentID(contentID, locale, prevContents) {
|
|
64
66
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -78,8 +80,12 @@ export default class BotonicPluginFlowBuilder {
|
|
|
78
80
|
}
|
|
79
81
|
getStartContents(locale) {
|
|
80
82
|
return __awaiter(this, void 0, void 0, function* () {
|
|
83
|
+
const resolvedLocale = this.cmsApi.getResolvedLocale(locale);
|
|
81
84
|
const startNode = this.cmsApi.getStartNode();
|
|
82
|
-
|
|
85
|
+
this.currentRequest.session.flow_thread_id = uuid();
|
|
86
|
+
const contents = yield this.getContentsByNode(startNode, resolvedLocale);
|
|
87
|
+
yield trackFlowContent(this.currentRequest, contents);
|
|
88
|
+
return contents;
|
|
83
89
|
});
|
|
84
90
|
}
|
|
85
91
|
getContentsByNode(node, locale, prevContents) {
|
|
@@ -157,6 +163,9 @@ export default class BotonicPluginFlowBuilder {
|
|
|
157
163
|
const payloadParams = JSON.parse(payload.split(SEPARATOR)[1] || '{}');
|
|
158
164
|
return payloadParams;
|
|
159
165
|
}
|
|
166
|
+
getFlowName(flowId) {
|
|
167
|
+
return this.cmsApi.getFlowName(flowId);
|
|
168
|
+
}
|
|
160
169
|
}
|
|
161
170
|
export * from './action';
|
|
162
171
|
export * from './content-fields';
|