@botonic/plugin-flow-builder 0.21.0-alpha.3 → 0.21.0-alpha.5
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.d.ts +0 -1
- package/lib/cjs/action.js +10 -8
- package/lib/cjs/action.js.map +1 -1
- package/lib/cjs/functions/conditional-queue-status.d.ts +2 -2
- package/lib/cjs/functions/conditional-queue-status.js +2 -2
- package/lib/cjs/functions/conditional-queue-status.js.map +1 -1
- package/lib/cjs/hubtype-models.d.ts +10 -2
- package/lib/cjs/hubtype-models.js +1 -1
- package/lib/cjs/hubtype-models.js.map +1 -1
- package/lib/cjs/index.d.ts +4 -1
- package/lib/cjs/index.js +9 -0
- package/lib/cjs/index.js.map +1 -1
- package/lib/esm/action.d.ts +0 -1
- package/lib/esm/action.js +10 -7
- package/lib/esm/action.js.map +1 -1
- package/lib/esm/functions/conditional-queue-status.d.ts +2 -2
- package/lib/esm/functions/conditional-queue-status.js +2 -2
- package/lib/esm/functions/conditional-queue-status.js.map +1 -1
- package/lib/esm/hubtype-models.d.ts +10 -2
- package/lib/esm/hubtype-models.js +1 -1
- package/lib/esm/hubtype-models.js.map +1 -1
- package/lib/esm/index.d.ts +4 -1
- package/lib/esm/index.js +10 -1
- package/lib/esm/index.js.map +1 -1
- package/package.json +1 -1
- package/src/action.tsx +13 -8
- package/src/functions/conditional-queue-status.ts +2 -2
- package/src/hubtype-models.ts +12 -2
- package/src/index.ts +20 -0
package/lib/cjs/action.d.ts
CHANGED
|
@@ -2,7 +2,6 @@ import { ActionRequest } from '@botonic/react';
|
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { FlowContent } from './content-fields/content-base';
|
|
4
4
|
import { HtHandoffNode } from './hubtype-models';
|
|
5
|
-
export declare const START = "08c7df06-0c7c-4f06-b8c1-4157582efeb2";
|
|
6
5
|
declare type FlowBuilderActionProps = {
|
|
7
6
|
content?: FlowContent[];
|
|
8
7
|
handoffMsg?: HtHandoffNode;
|
package/lib/cjs/action.js
CHANGED
|
@@ -1,28 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.START = void 0;
|
|
4
3
|
const tslib_1 = require("tslib");
|
|
5
4
|
const react_1 = require("@botonic/react");
|
|
6
5
|
const react_2 = tslib_1.__importDefault(require("react"));
|
|
7
6
|
const handoff_1 = require("./handoff");
|
|
8
|
-
// TODO: remove this from here and use the new "start" attribute in the flow
|
|
9
|
-
exports.START = '08c7df06-0c7c-4f06-b8c1-4157582efeb2';
|
|
10
7
|
class FlowBuilderAction extends react_2.default.Component {
|
|
11
8
|
static async botonicInit(request) {
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
console.log(request);
|
|
10
|
+
const flowBuilderPlugin = request.plugins
|
|
11
|
+
.flowBuilder;
|
|
12
|
+
const locale = flowBuilderPlugin.getLocale(request.session);
|
|
13
|
+
let payload = request.input.payload
|
|
14
|
+
? request.input.payload
|
|
15
|
+
: await flowBuilderPlugin.getStartId();
|
|
14
16
|
if (!request.input.payload) {
|
|
15
|
-
const intentPayload = await flowBuilderPlugin.getPayloadByInput(request.input,
|
|
17
|
+
const intentPayload = await flowBuilderPlugin.getPayloadByInput(request.input, locale);
|
|
16
18
|
if (intentPayload) {
|
|
17
19
|
payload = intentPayload;
|
|
18
20
|
}
|
|
19
|
-
const keywordPayload = await flowBuilderPlugin.getPayloadByKeyword(request.input,
|
|
21
|
+
const keywordPayload = await flowBuilderPlugin.getPayloadByKeyword(request.input, locale);
|
|
20
22
|
if (keywordPayload) {
|
|
21
23
|
payload = keywordPayload;
|
|
22
24
|
}
|
|
23
25
|
}
|
|
24
26
|
// We use only Spanish because they are the backend examples
|
|
25
|
-
const content = await flowBuilderPlugin.getContents(payload,
|
|
27
|
+
const content = await flowBuilderPlugin.getContents(payload, locale);
|
|
26
28
|
if (content.length == 0) {
|
|
27
29
|
const handoffMsg = await handoff_1.doHandoff(request);
|
|
28
30
|
return { handoffMsg };
|
package/lib/cjs/action.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.js","sourceRoot":"","sources":["../../src/action.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"action.js","sourceRoot":"","sources":["../../src/action.tsx"],"names":[],"mappings":";;;AAAA,0CAAoE;AACpE,0DAAyB;AAGzB,uCAAqC;AASrC,MAAqB,iBAAkB,SAAQ,eAAK,CAAC,SAAiC;IAGpF,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,OAAsB;QAC7C,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QACpB,MAAM,iBAAiB,GAAG,OAAO,CAAC,OAAO;aACtC,WAAuC,CAAA;QAE1C,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAE3D,IAAI,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO;YACjC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO;YACvB,CAAC,CAAC,MAAM,iBAAiB,CAAC,UAAU,EAAE,CAAA;QAExC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE;YAC1B,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAC,iBAAiB,CAC7D,OAAO,CAAC,KAAK,EACb,MAAM,CACP,CAAA;YACD,IAAI,aAAa,EAAE;gBACjB,OAAO,GAAG,aAAa,CAAA;aACxB;YACD,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAAC,mBAAmB,CAChE,OAAO,CAAC,KAAK,EACb,MAAM,CACP,CAAA;YACD,IAAI,cAAc,EAAE;gBAClB,OAAO,GAAG,cAAc,CAAA;aACzB;SACF;QACD,4DAA4D;QAC5D,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QAEpE,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;YACvB,MAAM,UAAU,GAAG,MAAM,mBAAS,CAAC,OAAO,CAAC,CAAA;YAC3C,OAAO,EAAE,UAAU,EAAE,CAAA;SACtB;QACD,OAAO,EAAE,OAAO,EAAE,CAAA;IACpB,CAAC;IAED,MAAM;QACJ,aAAa;QACb,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;QACpD,IAAI,UAAU,EAAE;YACd,aAAa;YACb,OAAO,8BAAC,YAAI,QAAE,UAAU,CAAQ,CAAA;SACjC;aAAM;YACL,OAAO,QAAS,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;SACnE;IACH,CAAC;;AAjDH,oCAkDC;AAjDQ,6BAAW,GAAG,sBAAc,CAAA"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export declare function conditionalQueueStatus({
|
|
2
|
-
|
|
1
|
+
export declare function conditionalQueueStatus({ queue_id }: {
|
|
2
|
+
queue_id: any;
|
|
3
3
|
}): Promise<string>;
|
|
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.conditionalQueueStatus = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const axios_1 = tslib_1.__importDefault(require("axios"));
|
|
6
|
-
async function conditionalQueueStatus({
|
|
7
|
-
const response = await axios_1.default.get(`https://api.hubtype.com/v1/queues/${
|
|
6
|
+
async function conditionalQueueStatus({ queue_id }) {
|
|
7
|
+
const response = await axios_1.default.get(`https://api.hubtype.com/v1/queues/${queue_id}/availability/`);
|
|
8
8
|
const isAvailable = response.data.available;
|
|
9
9
|
return isAvailable ? 'open' : 'closed';
|
|
10
10
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conditional-queue-status.js","sourceRoot":"","sources":["../../../src/functions/conditional-queue-status.ts"],"names":[],"mappings":";;;;AAAA,0DAAyB;AAElB,KAAK,UAAU,sBAAsB,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"conditional-queue-status.js","sourceRoot":"","sources":["../../../src/functions/conditional-queue-status.ts"],"names":[],"mappings":";;;;AAAA,0DAAyB;AAElB,KAAK,UAAU,sBAAsB,CAAC,EAAE,QAAQ,EAAE;IACvD,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAC9B,qCAAqC,QAAQ,gBAAgB,CAC9D,CAAA;IACD,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAA;IAC3C,OAAO,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAA;AACxC,CAAC;AAND,wDAMC"}
|
|
@@ -25,7 +25,7 @@ export declare enum MediaContentType {
|
|
|
25
25
|
ASSET = "asset"
|
|
26
26
|
}
|
|
27
27
|
export declare enum StartFieldsType {
|
|
28
|
-
|
|
28
|
+
START_UP = "start-up"
|
|
29
29
|
}
|
|
30
30
|
export declare enum InputContentType {
|
|
31
31
|
INPUT = "user-input"
|
|
@@ -55,8 +55,16 @@ export interface HtNodeLink {
|
|
|
55
55
|
id: string;
|
|
56
56
|
type: NodeContentType;
|
|
57
57
|
}
|
|
58
|
-
export interface
|
|
58
|
+
export interface HtStartReference {
|
|
59
59
|
id: string;
|
|
60
|
+
type: NodeContentType;
|
|
61
|
+
target: HtNodeLink;
|
|
62
|
+
}
|
|
63
|
+
export interface HtBase {
|
|
64
|
+
id: string;
|
|
65
|
+
type: NodeContentType | StartFieldsType;
|
|
66
|
+
}
|
|
67
|
+
export interface HtBaseNode extends HtBase {
|
|
60
68
|
code: string;
|
|
61
69
|
meta: {
|
|
62
70
|
x: number;
|
|
@@ -35,7 +35,7 @@ var MediaContentType;
|
|
|
35
35
|
})(MediaContentType = exports.MediaContentType || (exports.MediaContentType = {}));
|
|
36
36
|
var StartFieldsType;
|
|
37
37
|
(function (StartFieldsType) {
|
|
38
|
-
StartFieldsType["
|
|
38
|
+
StartFieldsType["START_UP"] = "start-up";
|
|
39
39
|
})(StartFieldsType = exports.StartFieldsType || (exports.StartFieldsType = {}));
|
|
40
40
|
var InputContentType;
|
|
41
41
|
(function (InputContentType) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hubtype-models.js","sourceRoot":"","sources":["../../src/hubtype-models.ts"],"names":[],"mappings":";;;AAAA,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,gCAAiB,CAAA;IACjB,0CAA2B,CAAA;AAC7B,CAAC,EAHW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAGtB;AAED,IAAY,kBAQX;AARD,WAAY,kBAAkB;IAC5B,2CAAqB,CAAA;IACrB,qCAAe,CAAA;IACf,mCAAa,CAAA;IACb,yCAAmB,CAAA;IACnB,yCAAmB,CAAA;IACnB,2CAAqB,CAAA;IACrB,uCAAiB,CAAA;AACnB,CAAC,EARW,kBAAkB,GAAlB,0BAAkB,KAAlB,0BAAkB,QAQ7B;AAED,iCAAiC;AACjC,IAAY,qBAKX;AALD,WAAY,qBAAqB;IAC/B,0CAAiB,CAAA;IACjB,4CAAmB,CAAA;IACnB,wCAAe,CAAA;IACf,oCAAW,CAAA;AACb,CAAC,EALW,qBAAqB,GAArB,6BAAqB,KAArB,6BAAqB,QAKhC;AAED,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,mCAAiB,CAAA;IACjB,qCAAmB,CAAA;AACrB,CAAC,EAHW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAGzB;AAED,IAAY,gBAEX;AAFD,WAAY,gBAAgB;IAC1B,mCAAe,CAAA;AACjB,CAAC,EAFW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAE3B;AAED,IAAY,eAEX;AAFD,WAAY,eAAe;IACzB,
|
|
1
|
+
{"version":3,"file":"hubtype-models.js","sourceRoot":"","sources":["../../src/hubtype-models.ts"],"names":[],"mappings":";;;AAAA,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,gCAAiB,CAAA;IACjB,0CAA2B,CAAA;AAC7B,CAAC,EAHW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAGtB;AAED,IAAY,kBAQX;AARD,WAAY,kBAAkB;IAC5B,2CAAqB,CAAA;IACrB,qCAAe,CAAA;IACf,mCAAa,CAAA;IACb,yCAAmB,CAAA;IACnB,yCAAmB,CAAA;IACnB,2CAAqB,CAAA;IACrB,uCAAiB,CAAA;AACnB,CAAC,EARW,kBAAkB,GAAlB,0BAAkB,KAAlB,0BAAkB,QAQ7B;AAED,iCAAiC;AACjC,IAAY,qBAKX;AALD,WAAY,qBAAqB;IAC/B,0CAAiB,CAAA;IACjB,4CAAmB,CAAA;IACnB,wCAAe,CAAA;IACf,oCAAW,CAAA;AACb,CAAC,EALW,qBAAqB,GAArB,6BAAqB,KAArB,6BAAqB,QAKhC;AAED,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,mCAAiB,CAAA;IACjB,qCAAmB,CAAA;AACrB,CAAC,EAHW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAGzB;AAED,IAAY,gBAEX;AAFD,WAAY,gBAAgB;IAC1B,mCAAe,CAAA;AACjB,CAAC,EAFW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAE3B;AAED,IAAY,eAEX;AAFD,WAAY,eAAe;IACzB,wCAAqB,CAAA;AACvB,CAAC,EAFW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAE1B;AAED,IAAY,gBAEX;AAFD,WAAY,gBAAgB;IAC1B,wCAAoB,CAAA;AACtB,CAAC,EAFW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAE3B;AAED,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,gCAAmB,CAAA;IACnB,kCAAqB,CAAA;AACvB,CAAC,EAHW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAGpB;AAEY,QAAA,eAAe,mCACvB,kBAAkB,GAClB,gBAAgB,EACpB"}
|
package/lib/cjs/index.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { Input, Plugin, PluginPostRequest, PluginPreRequest } from '@botonic/core';
|
|
1
|
+
import { Input, Plugin, PluginPostRequest, PluginPreRequest, Session } from '@botonic/core';
|
|
2
2
|
import { FlowContent } from './content-fields/content-base';
|
|
3
3
|
import { HtFlowBuilderData, HtFunctionNode, HtHandoffNode, HtIntentNode, HtKeywordNode, HtNodeComponent } from './hubtype-models';
|
|
4
4
|
declare type BotonicPluginFlowBuilderOptions = {
|
|
5
5
|
flowUrl: string;
|
|
6
6
|
flow: any;
|
|
7
7
|
customFunctions: Record<any, any>;
|
|
8
|
+
getLocale: (session: Session) => string;
|
|
8
9
|
};
|
|
9
10
|
export default class BotonicPluginFlowBuilder implements Plugin {
|
|
10
11
|
readonly options: BotonicPluginFlowBuilderOptions;
|
|
@@ -12,6 +13,7 @@ export default class BotonicPluginFlowBuilder implements Plugin {
|
|
|
12
13
|
private flow;
|
|
13
14
|
private functions;
|
|
14
15
|
private currentRequest;
|
|
16
|
+
getLocale: (session: Session) => string;
|
|
15
17
|
constructor(options: BotonicPluginFlowBuilderOptions);
|
|
16
18
|
readFlowContent(): Promise<HtFlowBuilderData>;
|
|
17
19
|
pre(request: PluginPreRequest): Promise<void>;
|
|
@@ -19,6 +21,7 @@ export default class BotonicPluginFlowBuilder implements Plugin {
|
|
|
19
21
|
getContent(id: string): Promise<HtNodeComponent>;
|
|
20
22
|
getHandoffContent(): Promise<HtHandoffNode>;
|
|
21
23
|
getFlowContent(hubtypeContent: HtNodeComponent, locale: string): FlowContent | undefined;
|
|
24
|
+
getStartId(): Promise<string>;
|
|
22
25
|
getContents(id: string, locale: string, prevContents?: FlowContent[]): Promise<FlowContent[]>;
|
|
23
26
|
getPayloadByInput(input: Input, locale: string): Promise<string | undefined>;
|
|
24
27
|
hasIntent(node: HtIntentNode, intent: string, locale: string): boolean;
|
package/lib/cjs/index.js
CHANGED
|
@@ -14,6 +14,7 @@ class BotonicPluginFlowBuilder {
|
|
|
14
14
|
this.flow = options.flow || this.readFlowContent();
|
|
15
15
|
const customFunctions = options.customFunctions || {};
|
|
16
16
|
this.functions = Object.assign(Object.assign({}, functions_1.DEFAULT_FUNCTIONS), customFunctions);
|
|
17
|
+
this.getLocale = options.getLocale;
|
|
17
18
|
}
|
|
18
19
|
async readFlowContent() {
|
|
19
20
|
const response = await axios_1.default.get(this.flowUrl);
|
|
@@ -52,6 +53,14 @@ class BotonicPluginFlowBuilder {
|
|
|
52
53
|
return undefined;
|
|
53
54
|
}
|
|
54
55
|
}
|
|
56
|
+
async getStartId() {
|
|
57
|
+
const flow = await this.flow;
|
|
58
|
+
const startNode = flow.nodes.find((node) => (node === null || node === void 0 ? void 0 : node.type) === hubtype_models_1.StartFieldsType.START_UP);
|
|
59
|
+
if (!startNode) {
|
|
60
|
+
throw new Error('start-up id must be defined');
|
|
61
|
+
}
|
|
62
|
+
return startNode.target.id;
|
|
63
|
+
}
|
|
55
64
|
async getContents(id, locale, prevContents) {
|
|
56
65
|
const contents = prevContents || [];
|
|
57
66
|
const hubtypeContent = await this.getContent(id);
|
package/lib/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/action.d.ts
CHANGED
|
@@ -2,7 +2,6 @@ import { ActionRequest } from '@botonic/react';
|
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { FlowContent } from './content-fields/content-base';
|
|
4
4
|
import { HtHandoffNode } from './hubtype-models';
|
|
5
|
-
export declare const START = "08c7df06-0c7c-4f06-b8c1-4157582efeb2";
|
|
6
5
|
declare type FlowBuilderActionProps = {
|
|
7
6
|
content?: FlowContent[];
|
|
8
7
|
handoffMsg?: HtHandoffNode;
|
package/lib/esm/action.js
CHANGED
|
@@ -1,24 +1,27 @@
|
|
|
1
1
|
import { RequestContext, Text } from '@botonic/react';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { doHandoff } from './handoff';
|
|
4
|
-
// TODO: remove this from here and use the new "start" attribute in the flow
|
|
5
|
-
export const START = '08c7df06-0c7c-4f06-b8c1-4157582efeb2';
|
|
6
4
|
export default class FlowBuilderAction extends React.Component {
|
|
7
5
|
static async botonicInit(request) {
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
console.log(request);
|
|
7
|
+
const flowBuilderPlugin = request.plugins
|
|
8
|
+
.flowBuilder;
|
|
9
|
+
const locale = flowBuilderPlugin.getLocale(request.session);
|
|
10
|
+
let payload = request.input.payload
|
|
11
|
+
? request.input.payload
|
|
12
|
+
: await flowBuilderPlugin.getStartId();
|
|
10
13
|
if (!request.input.payload) {
|
|
11
|
-
const intentPayload = await flowBuilderPlugin.getPayloadByInput(request.input,
|
|
14
|
+
const intentPayload = await flowBuilderPlugin.getPayloadByInput(request.input, locale);
|
|
12
15
|
if (intentPayload) {
|
|
13
16
|
payload = intentPayload;
|
|
14
17
|
}
|
|
15
|
-
const keywordPayload = await flowBuilderPlugin.getPayloadByKeyword(request.input,
|
|
18
|
+
const keywordPayload = await flowBuilderPlugin.getPayloadByKeyword(request.input, locale);
|
|
16
19
|
if (keywordPayload) {
|
|
17
20
|
payload = keywordPayload;
|
|
18
21
|
}
|
|
19
22
|
}
|
|
20
23
|
// We use only Spanish because they are the backend examples
|
|
21
|
-
const content = await flowBuilderPlugin.getContents(payload,
|
|
24
|
+
const content = await flowBuilderPlugin.getContents(payload, locale);
|
|
22
25
|
if (content.length == 0) {
|
|
23
26
|
const handoffMsg = await doHandoff(request);
|
|
24
27
|
return { handoffMsg };
|
package/lib/esm/action.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.js","sourceRoot":"","sources":["../../src/action.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,cAAc,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AACpE,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"action.js","sourceRoot":"","sources":["../../src/action.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,cAAc,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AACpE,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AASrC,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,KAAK,CAAC,SAAiC;IAGpF,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,OAAsB;QAC7C,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QACpB,MAAM,iBAAiB,GAAG,OAAO,CAAC,OAAO;aACtC,WAAuC,CAAA;QAE1C,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAE3D,IAAI,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO;YACjC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO;YACvB,CAAC,CAAC,MAAM,iBAAiB,CAAC,UAAU,EAAE,CAAA;QAExC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE;YAC1B,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAC,iBAAiB,CAC7D,OAAO,CAAC,KAAK,EACb,MAAM,CACP,CAAA;YACD,IAAI,aAAa,EAAE;gBACjB,OAAO,GAAG,aAAa,CAAA;aACxB;YACD,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAAC,mBAAmB,CAChE,OAAO,CAAC,KAAK,EACb,MAAM,CACP,CAAA;YACD,IAAI,cAAc,EAAE;gBAClB,OAAO,GAAG,cAAc,CAAA;aACzB;SACF;QACD,4DAA4D;QAC5D,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QAEpE,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;YACvB,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,CAAA;YAC3C,OAAO,EAAE,UAAU,EAAE,CAAA;SACtB;QACD,OAAO,EAAE,OAAO,EAAE,CAAA;IACpB,CAAC;IAED,MAAM;QACJ,aAAa;QACb,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;QACpD,IAAI,UAAU,EAAE;YACd,aAAa;YACb,OAAO,oBAAC,IAAI,QAAE,UAAU,CAAQ,CAAA;SACjC;aAAM;YACL,OAAO,QAAS,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;SACnE;IACH,CAAC;;AAhDM,6BAAW,GAAG,cAAc,CAAA"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export declare function conditionalQueueStatus({
|
|
2
|
-
|
|
1
|
+
export declare function conditionalQueueStatus({ queue_id }: {
|
|
2
|
+
queue_id: any;
|
|
3
3
|
}): Promise<string>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import axios from 'axios';
|
|
2
|
-
export async function conditionalQueueStatus({
|
|
3
|
-
const response = await axios.get(`https://api.hubtype.com/v1/queues/${
|
|
2
|
+
export async function conditionalQueueStatus({ queue_id }) {
|
|
3
|
+
const response = await axios.get(`https://api.hubtype.com/v1/queues/${queue_id}/availability/`);
|
|
4
4
|
const isAvailable = response.data.available;
|
|
5
5
|
return isAvailable ? 'open' : 'closed';
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conditional-queue-status.js","sourceRoot":"","sources":["../../../src/functions/conditional-queue-status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"conditional-queue-status.js","sourceRoot":"","sources":["../../../src/functions/conditional-queue-status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,EAAE,QAAQ,EAAE;IACvD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAC9B,qCAAqC,QAAQ,gBAAgB,CAC9D,CAAA;IACD,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAA;IAC3C,OAAO,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAA;AACxC,CAAC"}
|
|
@@ -25,7 +25,7 @@ export declare enum MediaContentType {
|
|
|
25
25
|
ASSET = "asset"
|
|
26
26
|
}
|
|
27
27
|
export declare enum StartFieldsType {
|
|
28
|
-
|
|
28
|
+
START_UP = "start-up"
|
|
29
29
|
}
|
|
30
30
|
export declare enum InputContentType {
|
|
31
31
|
INPUT = "user-input"
|
|
@@ -55,8 +55,16 @@ export interface HtNodeLink {
|
|
|
55
55
|
id: string;
|
|
56
56
|
type: NodeContentType;
|
|
57
57
|
}
|
|
58
|
-
export interface
|
|
58
|
+
export interface HtStartReference {
|
|
59
59
|
id: string;
|
|
60
|
+
type: NodeContentType;
|
|
61
|
+
target: HtNodeLink;
|
|
62
|
+
}
|
|
63
|
+
export interface HtBase {
|
|
64
|
+
id: string;
|
|
65
|
+
type: NodeContentType | StartFieldsType;
|
|
66
|
+
}
|
|
67
|
+
export interface HtBaseNode extends HtBase {
|
|
60
68
|
code: string;
|
|
61
69
|
meta: {
|
|
62
70
|
x: number;
|
|
@@ -32,7 +32,7 @@ export var MediaContentType;
|
|
|
32
32
|
})(MediaContentType || (MediaContentType = {}));
|
|
33
33
|
export var StartFieldsType;
|
|
34
34
|
(function (StartFieldsType) {
|
|
35
|
-
StartFieldsType["
|
|
35
|
+
StartFieldsType["START_UP"] = "start-up";
|
|
36
36
|
})(StartFieldsType || (StartFieldsType = {}));
|
|
37
37
|
export var InputContentType;
|
|
38
38
|
(function (InputContentType) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hubtype-models.js","sourceRoot":"","sources":["../../src/hubtype-models.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,gCAAiB,CAAA;IACjB,0CAA2B,CAAA;AAC7B,CAAC,EAHW,WAAW,KAAX,WAAW,QAGtB;AAED,MAAM,CAAN,IAAY,kBAQX;AARD,WAAY,kBAAkB;IAC5B,2CAAqB,CAAA;IACrB,qCAAe,CAAA;IACf,mCAAa,CAAA;IACb,yCAAmB,CAAA;IACnB,yCAAmB,CAAA;IACnB,2CAAqB,CAAA;IACrB,uCAAiB,CAAA;AACnB,CAAC,EARW,kBAAkB,KAAlB,kBAAkB,QAQ7B;AAED,iCAAiC;AACjC,MAAM,CAAN,IAAY,qBAKX;AALD,WAAY,qBAAqB;IAC/B,0CAAiB,CAAA;IACjB,4CAAmB,CAAA;IACnB,wCAAe,CAAA;IACf,oCAAW,CAAA;AACb,CAAC,EALW,qBAAqB,KAArB,qBAAqB,QAKhC;AAED,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,mCAAiB,CAAA;IACjB,qCAAmB,CAAA;AACrB,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AAED,MAAM,CAAN,IAAY,gBAEX;AAFD,WAAY,gBAAgB;IAC1B,mCAAe,CAAA;AACjB,CAAC,EAFW,gBAAgB,KAAhB,gBAAgB,QAE3B;AAED,MAAM,CAAN,IAAY,eAEX;AAFD,WAAY,eAAe;IACzB,
|
|
1
|
+
{"version":3,"file":"hubtype-models.js","sourceRoot":"","sources":["../../src/hubtype-models.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,gCAAiB,CAAA;IACjB,0CAA2B,CAAA;AAC7B,CAAC,EAHW,WAAW,KAAX,WAAW,QAGtB;AAED,MAAM,CAAN,IAAY,kBAQX;AARD,WAAY,kBAAkB;IAC5B,2CAAqB,CAAA;IACrB,qCAAe,CAAA;IACf,mCAAa,CAAA;IACb,yCAAmB,CAAA;IACnB,yCAAmB,CAAA;IACnB,2CAAqB,CAAA;IACrB,uCAAiB,CAAA;AACnB,CAAC,EARW,kBAAkB,KAAlB,kBAAkB,QAQ7B;AAED,iCAAiC;AACjC,MAAM,CAAN,IAAY,qBAKX;AALD,WAAY,qBAAqB;IAC/B,0CAAiB,CAAA;IACjB,4CAAmB,CAAA;IACnB,wCAAe,CAAA;IACf,oCAAW,CAAA;AACb,CAAC,EALW,qBAAqB,KAArB,qBAAqB,QAKhC;AAED,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,mCAAiB,CAAA;IACjB,qCAAmB,CAAA;AACrB,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AAED,MAAM,CAAN,IAAY,gBAEX;AAFD,WAAY,gBAAgB;IAC1B,mCAAe,CAAA;AACjB,CAAC,EAFW,gBAAgB,KAAhB,gBAAgB,QAE3B;AAED,MAAM,CAAN,IAAY,eAEX;AAFD,WAAY,eAAe;IACzB,wCAAqB,CAAA;AACvB,CAAC,EAFW,eAAe,KAAf,eAAe,QAE1B;AAED,MAAM,CAAN,IAAY,gBAEX;AAFD,WAAY,gBAAgB;IAC1B,wCAAoB,CAAA;AACtB,CAAC,EAFW,gBAAgB,KAAhB,gBAAgB,QAE3B;AAED,MAAM,CAAN,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,gCAAmB,CAAA;IACnB,kCAAqB,CAAA;AACvB,CAAC,EAHW,SAAS,KAAT,SAAS,QAGpB;AAED,MAAM,CAAC,MAAM,eAAe,mCACvB,kBAAkB,GAClB,gBAAgB,CACpB,CAAA"}
|
package/lib/esm/index.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { Input, Plugin, PluginPostRequest, PluginPreRequest } from '@botonic/core';
|
|
1
|
+
import { Input, Plugin, PluginPostRequest, PluginPreRequest, Session } from '@botonic/core';
|
|
2
2
|
import { FlowContent } from './content-fields/content-base';
|
|
3
3
|
import { HtFlowBuilderData, HtFunctionNode, HtHandoffNode, HtIntentNode, HtKeywordNode, HtNodeComponent } from './hubtype-models';
|
|
4
4
|
declare type BotonicPluginFlowBuilderOptions = {
|
|
5
5
|
flowUrl: string;
|
|
6
6
|
flow: any;
|
|
7
7
|
customFunctions: Record<any, any>;
|
|
8
|
+
getLocale: (session: Session) => string;
|
|
8
9
|
};
|
|
9
10
|
export default class BotonicPluginFlowBuilder implements Plugin {
|
|
10
11
|
readonly options: BotonicPluginFlowBuilderOptions;
|
|
@@ -12,6 +13,7 @@ export default class BotonicPluginFlowBuilder implements Plugin {
|
|
|
12
13
|
private flow;
|
|
13
14
|
private functions;
|
|
14
15
|
private currentRequest;
|
|
16
|
+
getLocale: (session: Session) => string;
|
|
15
17
|
constructor(options: BotonicPluginFlowBuilderOptions);
|
|
16
18
|
readFlowContent(): Promise<HtFlowBuilderData>;
|
|
17
19
|
pre(request: PluginPreRequest): Promise<void>;
|
|
@@ -19,6 +21,7 @@ export default class BotonicPluginFlowBuilder implements Plugin {
|
|
|
19
21
|
getContent(id: string): Promise<HtNodeComponent>;
|
|
20
22
|
getHandoffContent(): Promise<HtHandoffNode>;
|
|
21
23
|
getFlowContent(hubtypeContent: HtNodeComponent, locale: string): FlowContent | undefined;
|
|
24
|
+
getStartId(): Promise<string>;
|
|
22
25
|
getContents(id: string, locale: string, prevContents?: FlowContent[]): Promise<FlowContent[]>;
|
|
23
26
|
getPayloadByInput(input: Input, locale: string): Promise<string | undefined>;
|
|
24
27
|
hasIntent(node: HtIntentNode, intent: string, locale: string): boolean;
|
package/lib/esm/index.js
CHANGED
|
@@ -3,7 +3,7 @@ import { FlowCarousel } from './content-fields/carousel';
|
|
|
3
3
|
import { FlowImage } from './content-fields/image';
|
|
4
4
|
import { FlowText } from './content-fields/text';
|
|
5
5
|
import { DEFAULT_FUNCTIONS } from './functions';
|
|
6
|
-
import { MessageContentType, } from './hubtype-models';
|
|
6
|
+
import { MessageContentType, StartFieldsType, } from './hubtype-models';
|
|
7
7
|
export default class BotonicPluginFlowBuilder {
|
|
8
8
|
constructor(options) {
|
|
9
9
|
this.options = options;
|
|
@@ -11,6 +11,7 @@ export default class BotonicPluginFlowBuilder {
|
|
|
11
11
|
this.flow = options.flow || this.readFlowContent();
|
|
12
12
|
const customFunctions = options.customFunctions || {};
|
|
13
13
|
this.functions = Object.assign(Object.assign({}, DEFAULT_FUNCTIONS), customFunctions);
|
|
14
|
+
this.getLocale = options.getLocale;
|
|
14
15
|
}
|
|
15
16
|
async readFlowContent() {
|
|
16
17
|
const response = await axios.get(this.flowUrl);
|
|
@@ -49,6 +50,14 @@ export default class BotonicPluginFlowBuilder {
|
|
|
49
50
|
return undefined;
|
|
50
51
|
}
|
|
51
52
|
}
|
|
53
|
+
async getStartId() {
|
|
54
|
+
const flow = await this.flow;
|
|
55
|
+
const startNode = flow.nodes.find((node) => (node === null || node === void 0 ? void 0 : node.type) === StartFieldsType.START_UP);
|
|
56
|
+
if (!startNode) {
|
|
57
|
+
throw new Error('start-up id must be defined');
|
|
58
|
+
}
|
|
59
|
+
return startNode.target.id;
|
|
60
|
+
}
|
|
52
61
|
async getContents(id, locale, prevContents) {
|
|
53
62
|
const contents = prevContents || [];
|
|
54
63
|
const hubtypeContent = await this.getContent(id);
|
package/lib/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/action.tsx
CHANGED
|
@@ -4,9 +4,7 @@ import React from 'react'
|
|
|
4
4
|
import { FlowContent } from './content-fields/content-base'
|
|
5
5
|
import { doHandoff } from './handoff'
|
|
6
6
|
import { HtHandoffNode } from './hubtype-models'
|
|
7
|
-
|
|
8
|
-
// TODO: remove this from here and use the new "start" attribute in the flow
|
|
9
|
-
export const START = '08c7df06-0c7c-4f06-b8c1-4157582efeb2'
|
|
7
|
+
import BotonicPluginFlowBuilder from './index'
|
|
10
8
|
|
|
11
9
|
type FlowBuilderActionProps = {
|
|
12
10
|
content?: FlowContent[]
|
|
@@ -17,27 +15,34 @@ export default class FlowBuilderAction extends React.Component<FlowBuilderAction
|
|
|
17
15
|
static contextType = RequestContext
|
|
18
16
|
|
|
19
17
|
static async botonicInit(request: ActionRequest): Promise<any> {
|
|
20
|
-
|
|
18
|
+
console.log(request)
|
|
19
|
+
const flowBuilderPlugin = request.plugins
|
|
20
|
+
.flowBuilder as BotonicPluginFlowBuilder
|
|
21
|
+
|
|
22
|
+
const locale = flowBuilderPlugin.getLocale(request.session)
|
|
23
|
+
|
|
24
|
+
let payload = request.input.payload
|
|
25
|
+
? request.input.payload
|
|
26
|
+
: await flowBuilderPlugin.getStartId()
|
|
21
27
|
|
|
22
|
-
let payload = request.input.payload ? request.input.payload : START
|
|
23
28
|
if (!request.input.payload) {
|
|
24
29
|
const intentPayload = await flowBuilderPlugin.getPayloadByInput(
|
|
25
30
|
request.input,
|
|
26
|
-
|
|
31
|
+
locale
|
|
27
32
|
)
|
|
28
33
|
if (intentPayload) {
|
|
29
34
|
payload = intentPayload
|
|
30
35
|
}
|
|
31
36
|
const keywordPayload = await flowBuilderPlugin.getPayloadByKeyword(
|
|
32
37
|
request.input,
|
|
33
|
-
|
|
38
|
+
locale
|
|
34
39
|
)
|
|
35
40
|
if (keywordPayload) {
|
|
36
41
|
payload = keywordPayload
|
|
37
42
|
}
|
|
38
43
|
}
|
|
39
44
|
// We use only Spanish because they are the backend examples
|
|
40
|
-
const content = await flowBuilderPlugin.getContents(payload,
|
|
45
|
+
const content = await flowBuilderPlugin.getContents(payload, locale)
|
|
41
46
|
|
|
42
47
|
if (content.length == 0) {
|
|
43
48
|
const handoffMsg = await doHandoff(request)
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import axios from 'axios'
|
|
2
2
|
|
|
3
|
-
export async function conditionalQueueStatus({
|
|
3
|
+
export async function conditionalQueueStatus({ queue_id }): Promise<string> {
|
|
4
4
|
const response = await axios.get(
|
|
5
|
-
`https://api.hubtype.com/v1/queues/${
|
|
5
|
+
`https://api.hubtype.com/v1/queues/${queue_id}/availability/`
|
|
6
6
|
)
|
|
7
7
|
const isAvailable = response.data.available
|
|
8
8
|
return isAvailable ? 'open' : 'closed'
|
package/src/hubtype-models.ts
CHANGED
|
@@ -31,7 +31,7 @@ export enum MediaContentType {
|
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
export enum StartFieldsType {
|
|
34
|
-
|
|
34
|
+
START_UP = 'start-up',
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
export enum InputContentType {
|
|
@@ -62,8 +62,18 @@ export interface HtNodeLink {
|
|
|
62
62
|
type: NodeContentType
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
-
export interface
|
|
65
|
+
export interface HtStartReference {
|
|
66
66
|
id: string
|
|
67
|
+
type: NodeContentType
|
|
68
|
+
target: HtNodeLink
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export interface HtBase {
|
|
72
|
+
id: string
|
|
73
|
+
type: NodeContentType | StartFieldsType
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export interface HtBaseNode extends HtBase {
|
|
67
77
|
code: string
|
|
68
78
|
meta: {
|
|
69
79
|
x: number
|
package/src/index.ts
CHANGED
|
@@ -3,6 +3,7 @@ import {
|
|
|
3
3
|
Plugin,
|
|
4
4
|
PluginPostRequest,
|
|
5
5
|
PluginPreRequest,
|
|
6
|
+
Session,
|
|
6
7
|
} from '@botonic/core'
|
|
7
8
|
import axios from 'axios'
|
|
8
9
|
|
|
@@ -12,6 +13,7 @@ import { FlowImage } from './content-fields/image'
|
|
|
12
13
|
import { FlowText } from './content-fields/text'
|
|
13
14
|
import { DEFAULT_FUNCTIONS } from './functions'
|
|
14
15
|
import {
|
|
16
|
+
HtBase,
|
|
15
17
|
HtBaseNode,
|
|
16
18
|
HtFlowBuilderData,
|
|
17
19
|
HtFunctionNode,
|
|
@@ -19,13 +21,16 @@ import {
|
|
|
19
21
|
HtIntentNode,
|
|
20
22
|
HtKeywordNode,
|
|
21
23
|
HtNodeComponent,
|
|
24
|
+
HtStartReference,
|
|
22
25
|
MessageContentType,
|
|
26
|
+
StartFieldsType,
|
|
23
27
|
} from './hubtype-models'
|
|
24
28
|
|
|
25
29
|
type BotonicPluginFlowBuilderOptions = {
|
|
26
30
|
flowUrl: string
|
|
27
31
|
flow: any
|
|
28
32
|
customFunctions: Record<any, any>
|
|
33
|
+
getLocale: (session: Session) => string
|
|
29
34
|
}
|
|
30
35
|
|
|
31
36
|
export default class BotonicPluginFlowBuilder implements Plugin {
|
|
@@ -33,12 +38,14 @@ export default class BotonicPluginFlowBuilder implements Plugin {
|
|
|
33
38
|
private flow: Promise<HtFlowBuilderData>
|
|
34
39
|
private functions: Record<any, any>
|
|
35
40
|
private currentRequest: PluginPreRequest
|
|
41
|
+
public getLocale: (session: Session) => string
|
|
36
42
|
|
|
37
43
|
constructor(readonly options: BotonicPluginFlowBuilderOptions) {
|
|
38
44
|
this.flowUrl = options.flowUrl
|
|
39
45
|
this.flow = options.flow || this.readFlowContent()
|
|
40
46
|
const customFunctions = options.customFunctions || {}
|
|
41
47
|
this.functions = { ...DEFAULT_FUNCTIONS, ...customFunctions }
|
|
48
|
+
this.getLocale = options.getLocale
|
|
42
49
|
}
|
|
43
50
|
|
|
44
51
|
async readFlowContent() {
|
|
@@ -87,6 +94,19 @@ export default class BotonicPluginFlowBuilder implements Plugin {
|
|
|
87
94
|
}
|
|
88
95
|
}
|
|
89
96
|
|
|
97
|
+
async getStartId(): Promise<string> {
|
|
98
|
+
const flow = await this.flow
|
|
99
|
+
const startNode = flow.nodes.find(
|
|
100
|
+
(node: HtBase) => node?.type === StartFieldsType.START_UP
|
|
101
|
+
)
|
|
102
|
+
|
|
103
|
+
if (!startNode) {
|
|
104
|
+
throw new Error('start-up id must be defined')
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
return (startNode as HtStartReference).target.id
|
|
108
|
+
}
|
|
109
|
+
|
|
90
110
|
async getContents(
|
|
91
111
|
id: string,
|
|
92
112
|
locale: string,
|