@botonic/plugin-flow-builder 0.24.5 → 0.24.6-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 +4 -2
- package/lib/cjs/action/index.js.map +1 -1
- package/lib/cjs/api.d.ts +2 -1
- package/lib/cjs/api.js +15 -3
- package/lib/cjs/api.js.map +1 -1
- package/lib/cjs/constants.d.ts +3 -1
- package/lib/cjs/constants.js +4 -2
- package/lib/cjs/constants.js.map +1 -1
- package/lib/cjs/content-fields/flow-text.d.ts +3 -2
- package/lib/cjs/content-fields/flow-text.js +13 -10
- package/lib/cjs/content-fields/flow-text.js.map +1 -1
- package/lib/cjs/functions/conditional-bot-variable.d.ts +8 -0
- package/lib/cjs/functions/conditional-bot-variable.js +11 -0
- package/lib/cjs/functions/conditional-bot-variable.js.map +1 -0
- package/lib/cjs/functions/conditional-country.d.ts +7 -0
- package/lib/cjs/functions/conditional-country.js +9 -0
- package/lib/cjs/functions/conditional-country.js.map +1 -0
- package/lib/cjs/functions/conditional-provider.js +1 -3
- package/lib/cjs/functions/conditional-provider.js.map +1 -1
- package/lib/cjs/functions/index.d.ts +4 -0
- package/lib/cjs/functions/index.js +4 -0
- package/lib/cjs/functions/index.js.map +1 -1
- package/lib/cjs/utils.d.ts +2 -0
- package/lib/cjs/utils.js +12 -1
- package/lib/cjs/utils.js.map +1 -1
- package/lib/esm/action/index.js +4 -2
- package/lib/esm/action/index.js.map +1 -1
- package/lib/esm/api.d.ts +2 -1
- package/lib/esm/api.js +16 -4
- package/lib/esm/api.js.map +1 -1
- package/lib/esm/constants.d.ts +3 -1
- package/lib/esm/constants.js +3 -1
- package/lib/esm/constants.js.map +1 -1
- package/lib/esm/content-fields/flow-text.d.ts +3 -2
- package/lib/esm/content-fields/flow-text.js +14 -11
- package/lib/esm/content-fields/flow-text.js.map +1 -1
- package/lib/esm/functions/conditional-bot-variable.d.ts +8 -0
- package/lib/esm/functions/conditional-bot-variable.js +7 -0
- package/lib/esm/functions/conditional-bot-variable.js.map +1 -0
- package/lib/esm/functions/conditional-country.d.ts +7 -0
- package/lib/esm/functions/conditional-country.js +5 -0
- package/lib/esm/functions/conditional-country.js.map +1 -0
- package/lib/esm/functions/conditional-provider.js +1 -3
- package/lib/esm/functions/conditional-provider.js.map +1 -1
- package/lib/esm/functions/index.d.ts +4 -0
- package/lib/esm/functions/index.js +4 -0
- package/lib/esm/functions/index.js.map +1 -1
- package/lib/esm/utils.d.ts +2 -0
- package/lib/esm/utils.js +10 -0
- package/lib/esm/utils.js.map +1 -1
- package/package.json +1 -1
- package/src/action/index.tsx +4 -2
- package/src/api.ts +21 -4
- package/src/constants.ts +3 -1
- package/src/content-fields/flow-text.tsx +15 -17
- package/src/functions/conditional-bot-variable.ts +18 -0
- package/src/functions/conditional-country.ts +14 -0
- package/src/functions/conditional-provider.ts +1 -2
- package/src/functions/index.ts +4 -0
- package/src/utils.ts +19 -0
package/lib/cjs/action/index.js
CHANGED
|
@@ -21,7 +21,8 @@ class FlowBuilderAction extends react_2.default.Component {
|
|
|
21
21
|
}
|
|
22
22
|
render() {
|
|
23
23
|
const { contents } = this.props;
|
|
24
|
-
|
|
24
|
+
const request = this.context;
|
|
25
|
+
return contents.map(content => content.toBotonic(content.id, request));
|
|
25
26
|
}
|
|
26
27
|
}
|
|
27
28
|
exports.FlowBuilderAction = FlowBuilderAction;
|
|
@@ -29,7 +30,8 @@ FlowBuilderAction.contextType = react_1.RequestContext;
|
|
|
29
30
|
class FlowBuilderMultichannelAction extends FlowBuilderAction {
|
|
30
31
|
render() {
|
|
31
32
|
const { contents } = this.props;
|
|
32
|
-
|
|
33
|
+
const request = this.context;
|
|
34
|
+
return (react_2.default.createElement(react_1.Multichannel, { text: { buttonsAsText: false } }, contents.map(content => content.toBotonic(content.id, request))));
|
|
33
35
|
}
|
|
34
36
|
}
|
|
35
37
|
exports.FlowBuilderMultichannelAction = FlowBuilderMultichannelAction;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/action/index.tsx"],"names":[],"mappings":";;;;AAAA,0CAA4E;AAC5E,0DAAyB;AAGzB,sDAA4D;AAE5D,wCAAiD;AACjD,uDAA+D;AAC/D,yCAAkD;AAMlD,MAAa,iBAAkB,SAAQ,eAAK,CAAC,SAAiC;IAG5E,MAAM,CAAC,KAAK,CAAC,WAAW,CACtB,OAAsB;QAEtB,MAAM,iBAAiB,GAAG,IAAA,8BAAoB,EAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAC/D,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAE3D,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAEzE,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,iBAAiB,CACxD,UAAU,EACV,MAAM,CACP,CAAA;QAED,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAClC,OAAO,CAAC,EAAE,CAAC,OAAO,YAAY,4BAAW,CAC3B,CAAA;QAChB,IAAI,cAAc;YAAE,MAAM,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;QAE3D,OAAO,EAAE,QAAQ,EAAE,CAAA;IACrB,CAAC;IAED,MAAM;QACJ,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;QAC/B,OAAO,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/action/index.tsx"],"names":[],"mappings":"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"}
|
package/lib/cjs/api.d.ts
CHANGED
|
@@ -22,7 +22,8 @@ export declare class FlowBuilderApi {
|
|
|
22
22
|
hasMetConfidenceThreshold(node: HtIntentNode, predictedConfidence: number): boolean;
|
|
23
23
|
getNodeByKeyword(userInput: string, locale: string): HtKeywordNode | undefined;
|
|
24
24
|
private matchKeywords;
|
|
25
|
-
private
|
|
25
|
+
private inputMatchesAnyKeyword;
|
|
26
|
+
private resolveKeywordAsRegExp;
|
|
26
27
|
getPayload(target?: HtNodeLink): string | undefined;
|
|
27
28
|
private createPayloadWithParams;
|
|
28
29
|
getResolvedLocale(locale: string): string;
|
package/lib/cjs/api.js
CHANGED
|
@@ -108,11 +108,23 @@ class FlowBuilderApi {
|
|
|
108
108
|
return undefined;
|
|
109
109
|
}
|
|
110
110
|
matchKeywords(node, input, locale) {
|
|
111
|
-
const result = node.content.keywords.find(
|
|
111
|
+
const result = node.content.keywords.find(keywords => keywords.locale === locale &&
|
|
112
|
+
this.inputMatchesAnyKeyword(input, keywords.values));
|
|
112
113
|
return Boolean(result);
|
|
113
114
|
}
|
|
114
|
-
|
|
115
|
-
return keywords.some(keyword =>
|
|
115
|
+
inputMatchesAnyKeyword(input, keywords) {
|
|
116
|
+
return keywords.some(keyword => {
|
|
117
|
+
const regExpMatchArray = keyword.match(constants_1.REG_EXP_PATTERN);
|
|
118
|
+
if (regExpMatchArray) {
|
|
119
|
+
return this.resolveKeywordAsRegExp(regExpMatchArray, input);
|
|
120
|
+
}
|
|
121
|
+
return input.includes(keyword);
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
resolveKeywordAsRegExp(regExpMatchArray, input) {
|
|
125
|
+
const [, pattern, flags] = regExpMatchArray;
|
|
126
|
+
const keywordAsRegExp = new RegExp(pattern, flags);
|
|
127
|
+
return input.match(keywordAsRegExp);
|
|
116
128
|
}
|
|
117
129
|
getPayload(target) {
|
|
118
130
|
if (!target) {
|
package/lib/cjs/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":";;;;AACA,0DAAyB;AAEzB,
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"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"}
|
package/lib/cjs/constants.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
export declare const SEPARATOR = "|";
|
|
2
2
|
export declare const SOURCE_INFO_SEPARATOR: string;
|
|
3
|
-
export declare const
|
|
3
|
+
export declare const VARIABLE_PATTERN: RegExp;
|
|
4
|
+
export declare const ACCESS_TOKEN_VARIABLE_KEY = "_access_token";
|
|
5
|
+
export declare const REG_EXP_PATTERN: RegExp;
|
package/lib/cjs/constants.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.REG_EXP_PATTERN = exports.ACCESS_TOKEN_VARIABLE_KEY = exports.VARIABLE_PATTERN = exports.SOURCE_INFO_SEPARATOR = exports.SEPARATOR = void 0;
|
|
4
4
|
exports.SEPARATOR = '|';
|
|
5
5
|
exports.SOURCE_INFO_SEPARATOR = `${exports.SEPARATOR}source_`;
|
|
6
|
-
exports.
|
|
6
|
+
exports.VARIABLE_PATTERN = /{([^}]+)}/g;
|
|
7
|
+
exports.ACCESS_TOKEN_VARIABLE_KEY = '_access_token';
|
|
8
|
+
exports.REG_EXP_PATTERN = /^\/(.*)\/([gimyus]*)$/;
|
|
7
9
|
//# sourceMappingURL=constants.js.map
|
package/lib/cjs/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,SAAS,GAAG,GAAG,CAAA;AACf,QAAA,qBAAqB,GAAG,GAAG,iBAAS,SAAS,CAAA;AAC7C,QAAA,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,SAAS,GAAG,GAAG,CAAA;AACf,QAAA,qBAAqB,GAAG,GAAG,iBAAS,SAAS,CAAA;AAC7C,QAAA,gBAAgB,GAAG,YAAY,CAAA;AAC/B,QAAA,yBAAyB,GAAG,eAAe,CAAA;AAC3C,QAAA,eAAe,GAAG,uBAAuB,CAAA"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
+
import { ActionRequest } from '@botonic/react';
|
|
2
3
|
import { FlowBuilderApi } from '../api';
|
|
3
4
|
import { ContentFieldsBase } from './content-fields-base';
|
|
4
5
|
import { FlowButton } from './flow-button';
|
|
@@ -9,6 +10,6 @@ export declare class FlowText extends ContentFieldsBase {
|
|
|
9
10
|
buttons: FlowButton[];
|
|
10
11
|
buttonStyle: HtButtonStyle;
|
|
11
12
|
static fromHubtypeCMS(cmsText: HtTextNode, locale: string, cmsApi: FlowBuilderApi): FlowText;
|
|
12
|
-
static replaceVariables(text: string,
|
|
13
|
-
toBotonic(id: string): JSX.Element;
|
|
13
|
+
static replaceVariables(text: string, request: ActionRequest): string;
|
|
14
|
+
toBotonic(id: string, request: ActionRequest): JSX.Element;
|
|
14
15
|
}
|
|
@@ -5,6 +5,7 @@ const tslib_1 = require("tslib");
|
|
|
5
5
|
const react_1 = require("@botonic/react");
|
|
6
6
|
const react_2 = tslib_1.__importDefault(require("react"));
|
|
7
7
|
const constants_1 = require("../constants");
|
|
8
|
+
const utils_1 = require("../utils");
|
|
8
9
|
const content_fields_base_1 = require("./content-fields-base");
|
|
9
10
|
const flow_button_1 = require("./flow-button");
|
|
10
11
|
const hubtype_fields_1 = require("./hubtype-fields");
|
|
@@ -20,26 +21,28 @@ class FlowText extends content_fields_base_1.ContentFieldsBase {
|
|
|
20
21
|
const newText = new FlowText(cmsText.id);
|
|
21
22
|
newText.code = cmsText.code;
|
|
22
23
|
newText.buttonStyle = cmsText.content.buttons_style || hubtype_fields_1.HtButtonStyle.BUTTON;
|
|
23
|
-
newText.text = this.
|
|
24
|
+
newText.text = this.getTextByLocale(locale, cmsText.content.text);
|
|
24
25
|
newText.buttons = cmsText.content.buttons.map(button => flow_button_1.FlowButton.fromHubtypeCMS(button, locale, cmsApi));
|
|
25
26
|
return newText;
|
|
26
27
|
}
|
|
27
|
-
static replaceVariables(text,
|
|
28
|
-
const matches = text.match(constants_1.
|
|
28
|
+
static replaceVariables(text, request) {
|
|
29
|
+
const matches = text.match(constants_1.VARIABLE_PATTERN);
|
|
29
30
|
let replacedText = text;
|
|
30
|
-
if (matches &&
|
|
31
|
+
if (matches && request) {
|
|
31
32
|
matches.forEach(match => {
|
|
32
|
-
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
const keyPath = match.slice(1, -1);
|
|
34
|
+
const botVariable = keyPath.endsWith(constants_1.ACCESS_TOKEN_VARIABLE_KEY)
|
|
35
|
+
? (0, utils_1.getValueFromKeyPath)(request, match)
|
|
36
|
+
: (0, utils_1.getValueFromKeyPath)(request, keyPath);
|
|
37
|
+
replacedText = replacedText.replace(match, botVariable !== null && botVariable !== void 0 ? botVariable : match);
|
|
36
38
|
});
|
|
37
39
|
}
|
|
38
40
|
return replacedText;
|
|
39
41
|
}
|
|
40
|
-
toBotonic(id) {
|
|
42
|
+
toBotonic(id, request) {
|
|
43
|
+
const replacedText = FlowText.replaceVariables(this.text, request);
|
|
41
44
|
return (react_2.default.createElement(react_1.Text, { key: id },
|
|
42
|
-
|
|
45
|
+
replacedText,
|
|
43
46
|
this.buttons.map((button, buttonIndex) => button.renderButton(buttonIndex, this.buttonStyle))));
|
|
44
47
|
}
|
|
45
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flow-text.js","sourceRoot":"","sources":["../../../src/content-fields/flow-text.tsx"],"names":[],"mappings":";;;;AAAA,
|
|
1
|
+
{"version":3,"file":"flow-text.js","sourceRoot":"","sources":["../../../src/content-fields/flow-text.tsx"],"names":[],"mappings":";;;;AAAA,0CAAoD;AACpD,0DAAyB;AAGzB,4CAA0E;AAC1E,oCAA8C;AAC9C,+DAAyD;AACzD,+CAA0C;AAC1C,qDAA4D;AAE5D,MAAa,QAAS,SAAQ,uCAAiB;IAA/C;;QACS,SAAI,GAAG,EAAE,CAAA;QACT,SAAI,GAAG,EAAE,CAAA;QACT,YAAO,GAAiB,EAAE,CAAA;QAC1B,gBAAW,GAAG,8BAAa,CAAC,MAAM,CAAA;IA6C3C,CAAC;IA3CC,MAAM,CAAC,cAAc,CACnB,OAAmB,EACnB,MAAc,EACd,MAAsB;QAEtB,MAAM,OAAO,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QACxC,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;QAC3B,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,IAAI,8BAAa,CAAC,MAAM,CAAA;QAC3E,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACjE,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CACrD,wBAAU,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAClD,CAAA;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,IAAY,EAAE,OAAsB;QAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,4BAAgB,CAAC,CAAA;QAE5C,IAAI,YAAY,GAAG,IAAI,CAAA;QACvB,IAAI,OAAO,IAAI,OAAO,EAAE;YACtB,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACtB,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;gBAClC,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,qCAAyB,CAAC;oBAC7D,CAAC,CAAC,IAAA,2BAAmB,EAAC,OAAO,EAAE,KAAK,CAAC;oBACrC,CAAC,CAAC,IAAA,2BAAmB,EAAC,OAAO,EAAE,OAAO,CAAC,CAAA;gBACzC,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,KAAK,CAAC,CAAA;YAClE,CAAC,CAAC,CAAA;SACH;QAED,OAAO,YAAY,CAAA;IACrB,CAAC;IAED,SAAS,CAAC,EAAU,EAAE,OAAsB;QAC1C,MAAM,YAAY,GAAG,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAClE,OAAO,CACL,8BAAC,YAAI,IAAC,GAAG,EAAE,EAAE;YACV,YAAY;YACZ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,CACxC,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CACnD,CACI,CACR,CAAA;IACH,CAAC;CACF;AAjDD,4BAiDC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ActionRequest } from '@botonic/react';
|
|
2
|
+
interface ConditionalCountryArgs {
|
|
3
|
+
request: ActionRequest;
|
|
4
|
+
results: string[];
|
|
5
|
+
keyPath: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function conditionalBotVariable({ request, results, keyPath, }: ConditionalCountryArgs): string;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.conditionalBotVariable = void 0;
|
|
4
|
+
const utils_1 = require("../utils");
|
|
5
|
+
function conditionalBotVariable({ request, results, keyPath, }) {
|
|
6
|
+
var _a;
|
|
7
|
+
const botVariable = (0, utils_1.getValueFromKeyPath)(request, keyPath);
|
|
8
|
+
return (_a = results.find(result => result === botVariable)) !== null && _a !== void 0 ? _a : 'default';
|
|
9
|
+
}
|
|
10
|
+
exports.conditionalBotVariable = conditionalBotVariable;
|
|
11
|
+
//# sourceMappingURL=conditional-bot-variable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conditional-bot-variable.js","sourceRoot":"","sources":["../../../src/functions/conditional-bot-variable.ts"],"names":[],"mappings":";;;AAEA,oCAA8C;AAQ9C,SAAgB,sBAAsB,CAAC,EACrC,OAAO,EACP,OAAO,EACP,OAAO,GACgB;;IACvB,MAAM,WAAW,GAAG,IAAA,2BAAmB,EAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IACzD,OAAO,MAAA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,KAAK,WAAW,CAAC,mCAAI,SAAS,CAAA;AACpE,CAAC;AAPD,wDAOC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.conditionalCountry = void 0;
|
|
4
|
+
function conditionalCountry({ request, results, }) {
|
|
5
|
+
const country = request.session.user.extra_data.country;
|
|
6
|
+
return results.find(result => result === country) || 'default';
|
|
7
|
+
}
|
|
8
|
+
exports.conditionalCountry = conditionalCountry;
|
|
9
|
+
//# sourceMappingURL=conditional-country.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conditional-country.js","sourceRoot":"","sources":["../../../src/functions/conditional-country.ts"],"names":[],"mappings":";;;AAOA,SAAgB,kBAAkB,CAAC,EACjC,OAAO,EACP,OAAO,GACgB;IACvB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAA;IACvD,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,KAAK,OAAO,CAAC,IAAI,SAAS,CAAA;AAChE,CAAC;AAND,gDAMC"}
|
|
@@ -3,9 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.conditionalProvider = void 0;
|
|
4
4
|
function conditionalProvider({ request, results, }) {
|
|
5
5
|
const provider = request.session.user.provider;
|
|
6
|
-
|
|
7
|
-
return provider;
|
|
8
|
-
return 'default';
|
|
6
|
+
return results.find(result => result === provider) || 'default';
|
|
9
7
|
}
|
|
10
8
|
exports.conditionalProvider = conditionalProvider;
|
|
11
9
|
//# sourceMappingURL=conditional-provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conditional-provider.js","sourceRoot":"","sources":["../../../src/functions/conditional-provider.ts"],"names":[],"mappings":";;;AAOA,SAAgB,mBAAmB,CAAC,EAClC,OAAO,EACP,OAAO,GACiB;IACxB,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAA;IAC9C,
|
|
1
|
+
{"version":3,"file":"conditional-provider.js","sourceRoot":"","sources":["../../../src/functions/conditional-provider.ts"],"names":[],"mappings":";;;AAOA,SAAgB,mBAAmB,CAAC,EAClC,OAAO,EACP,OAAO,GACiB;IACxB,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAA;IAC9C,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,KAAK,QAAQ,CAAC,IAAI,SAAS,CAAA;AACjE,CAAC;AAND,kDAMC"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
+
import { conditionalBotVariable } from './conditional-bot-variable';
|
|
2
|
+
import { conditionalCountry } from './conditional-country';
|
|
1
3
|
import { conditionalProvider } from './conditional-provider';
|
|
2
4
|
import { conditionalQueueStatus } from './conditional-queue-status';
|
|
3
5
|
export declare const DEFAULT_FUNCTIONS: {
|
|
4
6
|
'check-queue-status': typeof conditionalQueueStatus;
|
|
5
7
|
'get-channel-type': typeof conditionalProvider;
|
|
8
|
+
'check-country': typeof conditionalCountry;
|
|
9
|
+
'check-bot-variable': typeof conditionalBotVariable;
|
|
6
10
|
};
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DEFAULT_FUNCTIONS = void 0;
|
|
4
|
+
const conditional_bot_variable_1 = require("./conditional-bot-variable");
|
|
5
|
+
const conditional_country_1 = require("./conditional-country");
|
|
4
6
|
const conditional_provider_1 = require("./conditional-provider");
|
|
5
7
|
const conditional_queue_status_1 = require("./conditional-queue-status");
|
|
6
8
|
exports.DEFAULT_FUNCTIONS = {
|
|
7
9
|
// TODO: Rename api action name
|
|
8
10
|
'check-queue-status': conditional_queue_status_1.conditionalQueueStatus,
|
|
9
11
|
'get-channel-type': conditional_provider_1.conditionalProvider,
|
|
12
|
+
'check-country': conditional_country_1.conditionalCountry,
|
|
13
|
+
'check-bot-variable': conditional_bot_variable_1.conditionalBotVariable,
|
|
10
14
|
};
|
|
11
15
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/functions/index.ts"],"names":[],"mappings":";;;AAAA,iEAA4D;AAC5D,yEAAmE;AAEtD,QAAA,iBAAiB,GAAG;IAC/B,+BAA+B;IAC/B,oBAAoB,EAAE,iDAAsB;IAC5C,kBAAkB,EAAE,0CAAmB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/functions/index.ts"],"names":[],"mappings":";;;AAAA,yEAAmE;AACnE,+DAA0D;AAC1D,iEAA4D;AAC5D,yEAAmE;AAEtD,QAAA,iBAAiB,GAAG;IAC/B,+BAA+B;IAC/B,oBAAoB,EAAE,iDAAsB;IAC5C,kBAAkB,EAAE,0CAAmB;IACvC,eAAe,EAAE,wCAAkB;IACnC,oBAAoB,EAAE,iDAAsB;CAC7C,CAAA"}
|
package/lib/cjs/utils.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import { Session } from '@botonic/core';
|
|
2
|
+
import { ActionRequest } from '@botonic/react';
|
|
2
3
|
import { BotonicPluginFlowBuilderOptions } from './types';
|
|
3
4
|
export declare function resolveGetAccessToken(options: BotonicPluginFlowBuilderOptions): (session: Session) => string;
|
|
5
|
+
export declare function getValueFromKeyPath(request: ActionRequest, keyPath: string): any;
|
package/lib/cjs/utils.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.resolveGetAccessToken = void 0;
|
|
3
|
+
exports.getValueFromKeyPath = exports.resolveGetAccessToken = void 0;
|
|
4
4
|
const types_1 = require("./types");
|
|
5
5
|
function getAccessTokenFromSession(session) {
|
|
6
6
|
if (!session._access_token) {
|
|
@@ -19,4 +19,15 @@ function resolveGetAccessToken(options) {
|
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
exports.resolveGetAccessToken = resolveGetAccessToken;
|
|
22
|
+
function getValueFromKeyPath(request, keyPath) {
|
|
23
|
+
if (keyPath.startsWith('input') || keyPath.startsWith('session')) {
|
|
24
|
+
return keyPath
|
|
25
|
+
.split('.')
|
|
26
|
+
.reduce((object, key) => (object && object[key]) || undefined, request);
|
|
27
|
+
}
|
|
28
|
+
return keyPath
|
|
29
|
+
.split('.')
|
|
30
|
+
.reduce((object, key) => (object && object[key]) || undefined, request.session.user.extra_data);
|
|
31
|
+
}
|
|
32
|
+
exports.getValueFromKeyPath = getValueFromKeyPath;
|
|
22
33
|
//# sourceMappingURL=utils.js.map
|
package/lib/cjs/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;;AAGA,mCAA6E;AAE7E,SAAS,yBAAyB,CAAC,OAAgB;IACjD,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;QAC1B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;KACpD;IACD,OAAO,OAAO,CAAC,aAAa,CAAA;AAC9B,CAAC;AAED,SAAgB,qBAAqB,CACnC,OAAwC;IAExC,QAAQ,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE;QAC5B,KAAK,0BAAkB,CAAC,UAAU;YAChC,OAAO,yBAAyB,CAAA;QAClC,KAAK,0BAAkB,CAAC,WAAW;YACjC,OAAO,OAAO,CAAC,cAAc,CAAA;QAC/B;YACE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;KAChE;AACH,CAAC;AAXD,sDAWC;AAED,SAAgB,mBAAmB,CACjC,OAAsB,EACtB,OAAe;IAEf,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;QAChE,OAAO,OAAO;aACX,KAAK,CAAC,GAAG,CAAC;aACV,MAAM,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,SAAS,EAAE,OAAO,CAAC,CAAA;KAC1E;IAED,OAAO,OAAO;SACX,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CACL,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,SAAS,EACrD,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAChC,CAAA;AACL,CAAC;AAhBD,kDAgBC"}
|
package/lib/esm/action/index.js
CHANGED
|
@@ -17,14 +17,16 @@ export class FlowBuilderAction extends React.Component {
|
|
|
17
17
|
}
|
|
18
18
|
render() {
|
|
19
19
|
const { contents } = this.props;
|
|
20
|
-
|
|
20
|
+
const request = this.context;
|
|
21
|
+
return contents.map(content => content.toBotonic(content.id, request));
|
|
21
22
|
}
|
|
22
23
|
}
|
|
23
24
|
FlowBuilderAction.contextType = RequestContext;
|
|
24
25
|
export class FlowBuilderMultichannelAction extends FlowBuilderAction {
|
|
25
26
|
render() {
|
|
26
27
|
const { contents } = this.props;
|
|
27
|
-
|
|
28
|
+
const request = this.context;
|
|
29
|
+
return (React.createElement(Multichannel, { text: { buttonsAsText: false } }, contents.map(content => content.toBotonic(content.id, request))));
|
|
28
30
|
}
|
|
29
31
|
}
|
|
30
32
|
async function getTargetNode(cmsApi, request) {
|
|
@@ -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;AACjD,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAA;AAC/D,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAMlD,MAAM,OAAO,iBAAkB,SAAQ,KAAK,CAAC,SAAiC;IAG5E,MAAM,CAAC,KAAK,CAAC,WAAW,CACtB,OAAsB;QAEtB,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAC/D,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAE3D,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAEzE,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,iBAAiB,CACxD,UAAU,EACV,MAAM,CACP,CAAA;QAED,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAClC,OAAO,CAAC,EAAE,CAAC,OAAO,YAAY,WAAW,CAC3B,CAAA;QAChB,IAAI,cAAc;YAAE,MAAM,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;QAE3D,OAAO,EAAE,QAAQ,EAAE,CAAA;IACrB,CAAC;IAED,MAAM;QACJ,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;QAC/B,OAAO,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/action/index.tsx"],"names":[],"mappings":"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"}
|
package/lib/esm/api.d.ts
CHANGED
|
@@ -22,7 +22,8 @@ export declare class FlowBuilderApi {
|
|
|
22
22
|
hasMetConfidenceThreshold(node: HtIntentNode, predictedConfidence: number): boolean;
|
|
23
23
|
getNodeByKeyword(userInput: string, locale: string): HtKeywordNode | undefined;
|
|
24
24
|
private matchKeywords;
|
|
25
|
-
private
|
|
25
|
+
private inputMatchesAnyKeyword;
|
|
26
|
+
private resolveKeywordAsRegExp;
|
|
26
27
|
getPayload(target?: HtNodeLink): string | undefined;
|
|
27
28
|
private createPayloadWithParams;
|
|
28
29
|
getResolvedLocale(locale: string): string;
|
package/lib/esm/api.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import axios from 'axios';
|
|
2
|
-
import { SEPARATOR } from './constants';
|
|
2
|
+
import { REG_EXP_PATTERN, SEPARATOR } from './constants';
|
|
3
3
|
import { HtNodeWithContentType, HtNodeWithoutContentType, } from './content-fields/hubtype-fields';
|
|
4
4
|
export class FlowBuilderApi {
|
|
5
5
|
constructor() { }
|
|
@@ -104,11 +104,23 @@ export class FlowBuilderApi {
|
|
|
104
104
|
return undefined;
|
|
105
105
|
}
|
|
106
106
|
matchKeywords(node, input, locale) {
|
|
107
|
-
const result = node.content.keywords.find(
|
|
107
|
+
const result = node.content.keywords.find(keywords => keywords.locale === locale &&
|
|
108
|
+
this.inputMatchesAnyKeyword(input, keywords.values));
|
|
108
109
|
return Boolean(result);
|
|
109
110
|
}
|
|
110
|
-
|
|
111
|
-
return keywords.some(keyword =>
|
|
111
|
+
inputMatchesAnyKeyword(input, keywords) {
|
|
112
|
+
return keywords.some(keyword => {
|
|
113
|
+
const regExpMatchArray = keyword.match(REG_EXP_PATTERN);
|
|
114
|
+
if (regExpMatchArray) {
|
|
115
|
+
return this.resolveKeywordAsRegExp(regExpMatchArray, input);
|
|
116
|
+
}
|
|
117
|
+
return input.includes(keyword);
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
resolveKeywordAsRegExp(regExpMatchArray, input) {
|
|
121
|
+
const [, pattern, flags] = regExpMatchArray;
|
|
122
|
+
const keywordAsRegExp = new RegExp(pattern, flags);
|
|
123
|
+
return input.match(keywordAsRegExp);
|
|
112
124
|
}
|
|
113
125
|
getPayload(target) {
|
|
114
126
|
if (!target) {
|
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,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;
|
|
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,3 +1,5 @@
|
|
|
1
1
|
export declare const SEPARATOR = "|";
|
|
2
2
|
export declare const SOURCE_INFO_SEPARATOR: string;
|
|
3
|
-
export declare const
|
|
3
|
+
export declare const VARIABLE_PATTERN: RegExp;
|
|
4
|
+
export declare const ACCESS_TOKEN_VARIABLE_KEY = "_access_token";
|
|
5
|
+
export declare const REG_EXP_PATTERN: RegExp;
|
package/lib/esm/constants.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export const SEPARATOR = '|';
|
|
2
2
|
export const SOURCE_INFO_SEPARATOR = `${SEPARATOR}source_`;
|
|
3
|
-
export const
|
|
3
|
+
export const VARIABLE_PATTERN = /{([^}]+)}/g;
|
|
4
|
+
export const ACCESS_TOKEN_VARIABLE_KEY = '_access_token';
|
|
5
|
+
export const REG_EXP_PATTERN = /^\/(.*)\/([gimyus]*)$/;
|
|
4
6
|
//# sourceMappingURL=constants.js.map
|
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,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,SAAS,GAAG,GAAG,CAAA;AAC5B,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,SAAS,SAAS,CAAA;AAC1D,MAAM,CAAC,MAAM,gBAAgB,GAAG,YAAY,CAAA;AAC5C,MAAM,CAAC,MAAM,yBAAyB,GAAG,eAAe,CAAA;AACxD,MAAM,CAAC,MAAM,eAAe,GAAG,uBAAuB,CAAA"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
+
import { ActionRequest } from '@botonic/react';
|
|
2
3
|
import { FlowBuilderApi } from '../api';
|
|
3
4
|
import { ContentFieldsBase } from './content-fields-base';
|
|
4
5
|
import { FlowButton } from './flow-button';
|
|
@@ -9,6 +10,6 @@ export declare class FlowText extends ContentFieldsBase {
|
|
|
9
10
|
buttons: FlowButton[];
|
|
10
11
|
buttonStyle: HtButtonStyle;
|
|
11
12
|
static fromHubtypeCMS(cmsText: HtTextNode, locale: string, cmsApi: FlowBuilderApi): FlowText;
|
|
12
|
-
static replaceVariables(text: string,
|
|
13
|
-
toBotonic(id: string): JSX.Element;
|
|
13
|
+
static replaceVariables(text: string, request: ActionRequest): string;
|
|
14
|
+
toBotonic(id: string, request: ActionRequest): JSX.Element;
|
|
14
15
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Text } from '@botonic/react';
|
|
2
2
|
import React from 'react';
|
|
3
|
-
import {
|
|
3
|
+
import { ACCESS_TOKEN_VARIABLE_KEY, VARIABLE_PATTERN } from '../constants';
|
|
4
|
+
import { getValueFromKeyPath } from '../utils';
|
|
4
5
|
import { ContentFieldsBase } from './content-fields-base';
|
|
5
6
|
import { FlowButton } from './flow-button';
|
|
6
7
|
import { HtButtonStyle } from './hubtype-fields';
|
|
@@ -16,26 +17,28 @@ export class FlowText extends ContentFieldsBase {
|
|
|
16
17
|
const newText = new FlowText(cmsText.id);
|
|
17
18
|
newText.code = cmsText.code;
|
|
18
19
|
newText.buttonStyle = cmsText.content.buttons_style || HtButtonStyle.BUTTON;
|
|
19
|
-
newText.text = this.
|
|
20
|
+
newText.text = this.getTextByLocale(locale, cmsText.content.text);
|
|
20
21
|
newText.buttons = cmsText.content.buttons.map(button => FlowButton.fromHubtypeCMS(button, locale, cmsApi));
|
|
21
22
|
return newText;
|
|
22
23
|
}
|
|
23
|
-
static replaceVariables(text,
|
|
24
|
-
const matches = text.match(
|
|
24
|
+
static replaceVariables(text, request) {
|
|
25
|
+
const matches = text.match(VARIABLE_PATTERN);
|
|
25
26
|
let replacedText = text;
|
|
26
|
-
if (matches &&
|
|
27
|
+
if (matches && request) {
|
|
27
28
|
matches.forEach(match => {
|
|
28
|
-
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
const keyPath = match.slice(1, -1);
|
|
30
|
+
const botVariable = keyPath.endsWith(ACCESS_TOKEN_VARIABLE_KEY)
|
|
31
|
+
? getValueFromKeyPath(request, match)
|
|
32
|
+
: getValueFromKeyPath(request, keyPath);
|
|
33
|
+
replacedText = replacedText.replace(match, botVariable !== null && botVariable !== void 0 ? botVariable : match);
|
|
32
34
|
});
|
|
33
35
|
}
|
|
34
36
|
return replacedText;
|
|
35
37
|
}
|
|
36
|
-
toBotonic(id) {
|
|
38
|
+
toBotonic(id, request) {
|
|
39
|
+
const replacedText = FlowText.replaceVariables(this.text, request);
|
|
37
40
|
return (React.createElement(Text, { key: id },
|
|
38
|
-
|
|
41
|
+
replacedText,
|
|
39
42
|
this.buttons.map((button, buttonIndex) => button.renderButton(buttonIndex, this.buttonStyle))));
|
|
40
43
|
}
|
|
41
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flow-text.js","sourceRoot":"","sources":["../../../src/content-fields/flow-text.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"flow-text.js","sourceRoot":"","sources":["../../../src/content-fields/flow-text.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,IAAI,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAc,MAAM,kBAAkB,CAAA;AAE5D,MAAM,OAAO,QAAS,SAAQ,iBAAiB;IAA/C;;QACS,SAAI,GAAG,EAAE,CAAA;QACT,SAAI,GAAG,EAAE,CAAA;QACT,YAAO,GAAiB,EAAE,CAAA;QAC1B,gBAAW,GAAG,aAAa,CAAC,MAAM,CAAA;IA6C3C,CAAC;IA3CC,MAAM,CAAC,cAAc,CACnB,OAAmB,EACnB,MAAc,EACd,MAAsB;QAEtB,MAAM,OAAO,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QACxC,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;QAC3B,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,IAAI,aAAa,CAAC,MAAM,CAAA;QAC3E,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACjE,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CACrD,UAAU,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAClD,CAAA;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,IAAY,EAAE,OAAsB;QAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;QAE5C,IAAI,YAAY,GAAG,IAAI,CAAA;QACvB,IAAI,OAAO,IAAI,OAAO,EAAE;YACtB,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACtB,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;gBAClC,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAC;oBAC7D,CAAC,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC;oBACrC,CAAC,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;gBACzC,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,KAAK,CAAC,CAAA;YAClE,CAAC,CAAC,CAAA;SACH;QAED,OAAO,YAAY,CAAA;IACrB,CAAC;IAED,SAAS,CAAC,EAAU,EAAE,OAAsB;QAC1C,MAAM,YAAY,GAAG,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAClE,OAAO,CACL,oBAAC,IAAI,IAAC,GAAG,EAAE,EAAE;YACV,YAAY;YACZ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,CACxC,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CACnD,CACI,CACR,CAAA;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ActionRequest } from '@botonic/react';
|
|
2
|
+
interface ConditionalCountryArgs {
|
|
3
|
+
request: ActionRequest;
|
|
4
|
+
results: string[];
|
|
5
|
+
keyPath: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function conditionalBotVariable({ request, results, keyPath, }: ConditionalCountryArgs): string;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { getValueFromKeyPath } from '../utils';
|
|
2
|
+
export function conditionalBotVariable({ request, results, keyPath, }) {
|
|
3
|
+
var _a;
|
|
4
|
+
const botVariable = getValueFromKeyPath(request, keyPath);
|
|
5
|
+
return (_a = results.find(result => result === botVariable)) !== null && _a !== void 0 ? _a : 'default';
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=conditional-bot-variable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conditional-bot-variable.js","sourceRoot":"","sources":["../../../src/functions/conditional-bot-variable.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAQ9C,MAAM,UAAU,sBAAsB,CAAC,EACrC,OAAO,EACP,OAAO,EACP,OAAO,GACgB;;IACvB,MAAM,WAAW,GAAG,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IACzD,OAAO,MAAA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,KAAK,WAAW,CAAC,mCAAI,SAAS,CAAA;AACpE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conditional-country.js","sourceRoot":"","sources":["../../../src/functions/conditional-country.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,kBAAkB,CAAC,EACjC,OAAO,EACP,OAAO,GACgB;IACvB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAA;IACvD,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,KAAK,OAAO,CAAC,IAAI,SAAS,CAAA;AAChE,CAAC"}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
export function conditionalProvider({ request, results, }) {
|
|
2
2
|
const provider = request.session.user.provider;
|
|
3
|
-
|
|
4
|
-
return provider;
|
|
5
|
-
return 'default';
|
|
3
|
+
return results.find(result => result === provider) || 'default';
|
|
6
4
|
}
|
|
7
5
|
//# sourceMappingURL=conditional-provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conditional-provider.js","sourceRoot":"","sources":["../../../src/functions/conditional-provider.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,mBAAmB,CAAC,EAClC,OAAO,EACP,OAAO,GACiB;IACxB,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAA;IAC9C,
|
|
1
|
+
{"version":3,"file":"conditional-provider.js","sourceRoot":"","sources":["../../../src/functions/conditional-provider.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,mBAAmB,CAAC,EAClC,OAAO,EACP,OAAO,GACiB;IACxB,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAA;IAC9C,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,KAAK,QAAQ,CAAC,IAAI,SAAS,CAAA;AACjE,CAAC"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
+
import { conditionalBotVariable } from './conditional-bot-variable';
|
|
2
|
+
import { conditionalCountry } from './conditional-country';
|
|
1
3
|
import { conditionalProvider } from './conditional-provider';
|
|
2
4
|
import { conditionalQueueStatus } from './conditional-queue-status';
|
|
3
5
|
export declare const DEFAULT_FUNCTIONS: {
|
|
4
6
|
'check-queue-status': typeof conditionalQueueStatus;
|
|
5
7
|
'get-channel-type': typeof conditionalProvider;
|
|
8
|
+
'check-country': typeof conditionalCountry;
|
|
9
|
+
'check-bot-variable': typeof conditionalBotVariable;
|
|
6
10
|
};
|
|
@@ -1,8 +1,12 @@
|
|
|
1
|
+
import { conditionalBotVariable } from './conditional-bot-variable';
|
|
2
|
+
import { conditionalCountry } from './conditional-country';
|
|
1
3
|
import { conditionalProvider } from './conditional-provider';
|
|
2
4
|
import { conditionalQueueStatus } from './conditional-queue-status';
|
|
3
5
|
export const DEFAULT_FUNCTIONS = {
|
|
4
6
|
// TODO: Rename api action name
|
|
5
7
|
'check-queue-status': conditionalQueueStatus,
|
|
6
8
|
'get-channel-type': conditionalProvider,
|
|
9
|
+
'check-country': conditionalCountry,
|
|
10
|
+
'check-bot-variable': conditionalBotVariable,
|
|
7
11
|
};
|
|
8
12
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/functions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AAEnE,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,+BAA+B;IAC/B,oBAAoB,EAAE,sBAAsB;IAC5C,kBAAkB,EAAE,mBAAmB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/functions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AAEnE,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,+BAA+B;IAC/B,oBAAoB,EAAE,sBAAsB;IAC5C,kBAAkB,EAAE,mBAAmB;IACvC,eAAe,EAAE,kBAAkB;IACnC,oBAAoB,EAAE,sBAAsB;CAC7C,CAAA"}
|
package/lib/esm/utils.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import { Session } from '@botonic/core';
|
|
2
|
+
import { ActionRequest } from '@botonic/react';
|
|
2
3
|
import { BotonicPluginFlowBuilderOptions } from './types';
|
|
3
4
|
export declare function resolveGetAccessToken(options: BotonicPluginFlowBuilderOptions): (session: Session) => string;
|
|
5
|
+
export declare function getValueFromKeyPath(request: ActionRequest, keyPath: string): any;
|
package/lib/esm/utils.js
CHANGED
|
@@ -15,4 +15,14 @@ export function resolveGetAccessToken(options) {
|
|
|
15
15
|
throw new Error('No method defined for getting access token');
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
|
+
export function getValueFromKeyPath(request, keyPath) {
|
|
19
|
+
if (keyPath.startsWith('input') || keyPath.startsWith('session')) {
|
|
20
|
+
return keyPath
|
|
21
|
+
.split('.')
|
|
22
|
+
.reduce((object, key) => (object && object[key]) || undefined, request);
|
|
23
|
+
}
|
|
24
|
+
return keyPath
|
|
25
|
+
.split('.')
|
|
26
|
+
.reduce((object, key) => (object && object[key]) || undefined, request.session.user.extra_data);
|
|
27
|
+
}
|
|
18
28
|
//# sourceMappingURL=utils.js.map
|
package/lib/esm/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAmC,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAE7E,SAAS,yBAAyB,CAAC,OAAgB;IACjD,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;QAC1B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;KACpD;IACD,OAAO,OAAO,CAAC,aAAa,CAAA;AAC9B,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,OAAwC;IAExC,QAAQ,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE;QAC5B,KAAK,kBAAkB,CAAC,UAAU;YAChC,OAAO,yBAAyB,CAAA;QAClC,KAAK,kBAAkB,CAAC,WAAW;YACjC,OAAO,OAAO,CAAC,cAAc,CAAA;QAC/B;YACE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;KAChE;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,OAAsB,EACtB,OAAe;IAEf,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;QAChE,OAAO,OAAO;aACX,KAAK,CAAC,GAAG,CAAC;aACV,MAAM,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,SAAS,EAAE,OAAO,CAAC,CAAA;KAC1E;IAED,OAAO,OAAO;SACX,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CACL,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,SAAS,EACrD,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAChC,CAAA;AACL,CAAC"}
|
package/package.json
CHANGED
package/src/action/index.tsx
CHANGED
|
@@ -38,16 +38,18 @@ export class FlowBuilderAction extends React.Component<FlowBuilderActionProps> {
|
|
|
38
38
|
|
|
39
39
|
render(): JSX.Element | JSX.Element[] {
|
|
40
40
|
const { contents } = this.props
|
|
41
|
-
|
|
41
|
+
const request = this.context
|
|
42
|
+
return contents.map(content => content.toBotonic(content.id, request))
|
|
42
43
|
}
|
|
43
44
|
}
|
|
44
45
|
|
|
45
46
|
export class FlowBuilderMultichannelAction extends FlowBuilderAction {
|
|
46
47
|
render(): JSX.Element | JSX.Element[] {
|
|
47
48
|
const { contents } = this.props
|
|
49
|
+
const request = this.context
|
|
48
50
|
return (
|
|
49
51
|
<Multichannel text={{ buttonsAsText: false }}>
|
|
50
|
-
{contents.map(content => content.toBotonic(content.id))}
|
|
52
|
+
{contents.map(content => content.toBotonic(content.id, request))}
|
|
51
53
|
</Multichannel>
|
|
52
54
|
)
|
|
53
55
|
}
|
package/src/api.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Input, PluginPreRequest } from '@botonic/core'
|
|
2
2
|
import axios from 'axios'
|
|
3
3
|
|
|
4
|
-
import { SEPARATOR } from './constants'
|
|
4
|
+
import { REG_EXP_PATTERN, SEPARATOR } from './constants'
|
|
5
5
|
import {
|
|
6
6
|
HtBotActionNode,
|
|
7
7
|
HtFallbackNode,
|
|
@@ -169,13 +169,30 @@ export class FlowBuilderApi {
|
|
|
169
169
|
locale: string
|
|
170
170
|
): boolean {
|
|
171
171
|
const result = node.content.keywords.find(
|
|
172
|
-
|
|
172
|
+
keywords =>
|
|
173
|
+
keywords.locale === locale &&
|
|
174
|
+
this.inputMatchesAnyKeyword(input, keywords.values)
|
|
173
175
|
)
|
|
174
176
|
return Boolean(result)
|
|
175
177
|
}
|
|
176
178
|
|
|
177
|
-
private
|
|
178
|
-
return keywords.some(keyword =>
|
|
179
|
+
private inputMatchesAnyKeyword(input: string, keywords: string[]): boolean {
|
|
180
|
+
return keywords.some(keyword => {
|
|
181
|
+
const regExpMatchArray = keyword.match(REG_EXP_PATTERN)
|
|
182
|
+
if (regExpMatchArray) {
|
|
183
|
+
return this.resolveKeywordAsRegExp(regExpMatchArray, input)
|
|
184
|
+
}
|
|
185
|
+
return input.includes(keyword)
|
|
186
|
+
})
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
private resolveKeywordAsRegExp(
|
|
190
|
+
regExpMatchArray: RegExpMatchArray,
|
|
191
|
+
input: string
|
|
192
|
+
) {
|
|
193
|
+
const [, pattern, flags] = regExpMatchArray
|
|
194
|
+
const keywordAsRegExp = new RegExp(pattern, flags)
|
|
195
|
+
return input.match(keywordAsRegExp)
|
|
179
196
|
}
|
|
180
197
|
|
|
181
198
|
getPayload(target?: HtNodeLink): string | undefined {
|
package/src/constants.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
export const SEPARATOR = '|'
|
|
2
2
|
export const SOURCE_INFO_SEPARATOR = `${SEPARATOR}source_`
|
|
3
|
-
export const
|
|
3
|
+
export const VARIABLE_PATTERN = /{([^}]+)}/g
|
|
4
|
+
export const ACCESS_TOKEN_VARIABLE_KEY = '_access_token'
|
|
5
|
+
export const REG_EXP_PATTERN = /^\/(.*)\/([gimyus]*)$/
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { Text } from '@botonic/react'
|
|
1
|
+
import { ActionRequest, Text } from '@botonic/react'
|
|
2
2
|
import React from 'react'
|
|
3
3
|
|
|
4
4
|
import { FlowBuilderApi } from '../api'
|
|
5
|
-
import {
|
|
5
|
+
import { ACCESS_TOKEN_VARIABLE_KEY, VARIABLE_PATTERN } from '../constants'
|
|
6
|
+
import { getValueFromKeyPath } from '../utils'
|
|
6
7
|
import { ContentFieldsBase } from './content-fields-base'
|
|
7
8
|
import { FlowButton } from './flow-button'
|
|
8
9
|
import { HtButtonStyle, HtTextNode } from './hubtype-fields'
|
|
@@ -21,38 +22,35 @@ export class FlowText extends ContentFieldsBase {
|
|
|
21
22
|
const newText = new FlowText(cmsText.id)
|
|
22
23
|
newText.code = cmsText.code
|
|
23
24
|
newText.buttonStyle = cmsText.content.buttons_style || HtButtonStyle.BUTTON
|
|
24
|
-
newText.text = this.
|
|
25
|
-
this.getTextByLocale(locale, cmsText.content.text),
|
|
26
|
-
cmsApi.request.session.user.extra_data
|
|
27
|
-
)
|
|
25
|
+
newText.text = this.getTextByLocale(locale, cmsText.content.text)
|
|
28
26
|
newText.buttons = cmsText.content.buttons.map(button =>
|
|
29
27
|
FlowButton.fromHubtypeCMS(button, locale, cmsApi)
|
|
30
28
|
)
|
|
31
29
|
return newText
|
|
32
30
|
}
|
|
33
31
|
|
|
34
|
-
static replaceVariables(
|
|
35
|
-
text
|
|
36
|
-
extraData?: Record<string, any>
|
|
37
|
-
): string {
|
|
38
|
-
const matches = text.match(VARIABLE_REGEX)
|
|
32
|
+
static replaceVariables(text: string, request: ActionRequest): string {
|
|
33
|
+
const matches = text.match(VARIABLE_PATTERN)
|
|
39
34
|
|
|
40
35
|
let replacedText = text
|
|
41
|
-
if (matches &&
|
|
36
|
+
if (matches && request) {
|
|
42
37
|
matches.forEach(match => {
|
|
43
|
-
const
|
|
44
|
-
const
|
|
45
|
-
|
|
38
|
+
const keyPath = match.slice(1, -1)
|
|
39
|
+
const botVariable = keyPath.endsWith(ACCESS_TOKEN_VARIABLE_KEY)
|
|
40
|
+
? getValueFromKeyPath(request, match)
|
|
41
|
+
: getValueFromKeyPath(request, keyPath)
|
|
42
|
+
replacedText = replacedText.replace(match, botVariable ?? match)
|
|
46
43
|
})
|
|
47
44
|
}
|
|
48
45
|
|
|
49
46
|
return replacedText
|
|
50
47
|
}
|
|
51
48
|
|
|
52
|
-
toBotonic(id: string): JSX.Element {
|
|
49
|
+
toBotonic(id: string, request: ActionRequest): JSX.Element {
|
|
50
|
+
const replacedText = FlowText.replaceVariables(this.text, request)
|
|
53
51
|
return (
|
|
54
52
|
<Text key={id}>
|
|
55
|
-
{
|
|
53
|
+
{replacedText}
|
|
56
54
|
{this.buttons.map((button, buttonIndex) =>
|
|
57
55
|
button.renderButton(buttonIndex, this.buttonStyle)
|
|
58
56
|
)}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ActionRequest } from '@botonic/react'
|
|
2
|
+
|
|
3
|
+
import { getValueFromKeyPath } from '../utils'
|
|
4
|
+
|
|
5
|
+
interface ConditionalCountryArgs {
|
|
6
|
+
request: ActionRequest
|
|
7
|
+
results: string[]
|
|
8
|
+
keyPath: string
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export function conditionalBotVariable({
|
|
12
|
+
request,
|
|
13
|
+
results,
|
|
14
|
+
keyPath,
|
|
15
|
+
}: ConditionalCountryArgs): string {
|
|
16
|
+
const botVariable = getValueFromKeyPath(request, keyPath)
|
|
17
|
+
return results.find(result => result === botVariable) ?? 'default'
|
|
18
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ActionRequest } from '@botonic/react'
|
|
2
|
+
|
|
3
|
+
interface ConditionalCountryArgs {
|
|
4
|
+
request: ActionRequest
|
|
5
|
+
results: string[]
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export function conditionalCountry({
|
|
9
|
+
request,
|
|
10
|
+
results,
|
|
11
|
+
}: ConditionalCountryArgs): string {
|
|
12
|
+
const country = request.session.user.extra_data.country
|
|
13
|
+
return results.find(result => result === country) || 'default'
|
|
14
|
+
}
|
|
@@ -10,6 +10,5 @@ export function conditionalProvider({
|
|
|
10
10
|
results,
|
|
11
11
|
}: ConditionalProviderArgs): string {
|
|
12
12
|
const provider = request.session.user.provider
|
|
13
|
-
|
|
14
|
-
return 'default'
|
|
13
|
+
return results.find(result => result === provider) || 'default'
|
|
15
14
|
}
|
package/src/functions/index.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { conditionalBotVariable } from './conditional-bot-variable'
|
|
2
|
+
import { conditionalCountry } from './conditional-country'
|
|
1
3
|
import { conditionalProvider } from './conditional-provider'
|
|
2
4
|
import { conditionalQueueStatus } from './conditional-queue-status'
|
|
3
5
|
|
|
@@ -5,4 +7,6 @@ export const DEFAULT_FUNCTIONS = {
|
|
|
5
7
|
// TODO: Rename api action name
|
|
6
8
|
'check-queue-status': conditionalQueueStatus,
|
|
7
9
|
'get-channel-type': conditionalProvider,
|
|
10
|
+
'check-country': conditionalCountry,
|
|
11
|
+
'check-bot-variable': conditionalBotVariable,
|
|
8
12
|
}
|
package/src/utils.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Session } from '@botonic/core'
|
|
2
|
+
import { ActionRequest } from '@botonic/react'
|
|
2
3
|
|
|
3
4
|
import { BotonicPluginFlowBuilderOptions, ProcessEnvNodeEnvs } from './types'
|
|
4
5
|
|
|
@@ -21,3 +22,21 @@ export function resolveGetAccessToken(
|
|
|
21
22
|
throw new Error('No method defined for getting access token')
|
|
22
23
|
}
|
|
23
24
|
}
|
|
25
|
+
|
|
26
|
+
export function getValueFromKeyPath(
|
|
27
|
+
request: ActionRequest,
|
|
28
|
+
keyPath: string
|
|
29
|
+
): any {
|
|
30
|
+
if (keyPath.startsWith('input') || keyPath.startsWith('session')) {
|
|
31
|
+
return keyPath
|
|
32
|
+
.split('.')
|
|
33
|
+
.reduce((object, key) => (object && object[key]) || undefined, request)
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return keyPath
|
|
37
|
+
.split('.')
|
|
38
|
+
.reduce(
|
|
39
|
+
(object, key) => (object && object[key]) || undefined,
|
|
40
|
+
request.session.user.extra_data
|
|
41
|
+
)
|
|
42
|
+
}
|