@botonic/plugin-flow-builder 0.21.0-alpha.9 → 0.21.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.
Files changed (63) hide show
  1. package/lib/cjs/action.js +21 -32
  2. package/lib/cjs/action.js.map +1 -1
  3. package/lib/cjs/content-fields/content-fields-base.d.ts +2 -1
  4. package/lib/cjs/content-fields/content-fields-base.js +6 -1
  5. package/lib/cjs/content-fields/content-fields-base.js.map +1 -1
  6. package/lib/cjs/content-fields/flow-button.js +4 -2
  7. package/lib/cjs/content-fields/flow-button.js.map +1 -1
  8. package/lib/cjs/content-fields/flow-video.d.ts +8 -0
  9. package/lib/cjs/content-fields/flow-video.js +26 -0
  10. package/lib/cjs/content-fields/flow-video.js.map +1 -0
  11. package/lib/cjs/content-fields/index.d.ts +1 -0
  12. package/lib/cjs/content-fields/index.js +3 -1
  13. package/lib/cjs/content-fields/index.js.map +1 -1
  14. package/lib/cjs/content-fields/types.d.ts +2 -1
  15. package/lib/cjs/flow-builder-models.d.ts +26 -4
  16. package/lib/cjs/flow-builder-models.js +2 -0
  17. package/lib/cjs/flow-builder-models.js.map +1 -1
  18. package/lib/cjs/handoff.d.ts +2 -1
  19. package/lib/cjs/handoff.js +21 -14
  20. package/lib/cjs/handoff.js.map +1 -1
  21. package/lib/cjs/helpers.d.ts +5 -0
  22. package/lib/cjs/helpers.js +14 -0
  23. package/lib/cjs/helpers.js.map +1 -0
  24. package/lib/cjs/index.d.ts +8 -3
  25. package/lib/cjs/index.js +35 -17
  26. package/lib/cjs/index.js.map +1 -1
  27. package/lib/esm/action.js +22 -33
  28. package/lib/esm/action.js.map +1 -1
  29. package/lib/esm/content-fields/content-fields-base.d.ts +2 -1
  30. package/lib/esm/content-fields/content-fields-base.js +6 -1
  31. package/lib/esm/content-fields/content-fields-base.js.map +1 -1
  32. package/lib/esm/content-fields/flow-button.js +4 -2
  33. package/lib/esm/content-fields/flow-button.js.map +1 -1
  34. package/lib/esm/content-fields/flow-video.d.ts +8 -0
  35. package/lib/esm/content-fields/flow-video.js +21 -0
  36. package/lib/esm/content-fields/flow-video.js.map +1 -0
  37. package/lib/esm/content-fields/index.d.ts +1 -0
  38. package/lib/esm/content-fields/index.js +1 -0
  39. package/lib/esm/content-fields/index.js.map +1 -1
  40. package/lib/esm/content-fields/types.d.ts +2 -1
  41. package/lib/esm/flow-builder-models.d.ts +26 -4
  42. package/lib/esm/flow-builder-models.js +2 -0
  43. package/lib/esm/flow-builder-models.js.map +1 -1
  44. package/lib/esm/handoff.d.ts +2 -1
  45. package/lib/esm/handoff.js +21 -14
  46. package/lib/esm/handoff.js.map +1 -1
  47. package/lib/esm/helpers.d.ts +5 -0
  48. package/lib/esm/helpers.js +10 -0
  49. package/lib/esm/helpers.js.map +1 -0
  50. package/lib/esm/index.d.ts +8 -3
  51. package/lib/esm/index.js +36 -18
  52. package/lib/esm/index.js.map +1 -1
  53. package/package.json +3 -4
  54. package/src/action.tsx +25 -35
  55. package/src/content-fields/content-fields-base.ts +11 -2
  56. package/src/content-fields/flow-button.tsx +3 -1
  57. package/src/content-fields/flow-video.tsx +22 -0
  58. package/src/content-fields/index.ts +1 -0
  59. package/src/content-fields/types.ts +2 -1
  60. package/src/flow-builder-models.ts +30 -2
  61. package/src/handoff.ts +25 -16
  62. package/src/helpers.ts +18 -0
  63. package/src/index.ts +52 -21
package/lib/cjs/action.js CHANGED
@@ -5,47 +5,36 @@ 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 handoff_1 = require("./handoff");
8
+ const helpers_1 = require("./helpers");
8
9
  class FlowBuilderAction extends react_2.default.Component {
9
10
  static async botonicInit(request) {
10
- const flowBuilderPlugin = request.plugins
11
- .hubtypeFlowBuilder;
11
+ const flowBuilderPlugin = (0, helpers_1.getFlowBuilderPlugin)(request.plugins);
12
12
  const locale = flowBuilderPlugin.getLocale(request.session);
13
- let payload = request.input.payload
14
- ? request.input.payload
15
- : await flowBuilderPlugin.getStartId();
16
- if (!request.input.payload) {
17
- const intentPayload = await flowBuilderPlugin.getPayloadByInput(request.input, locale);
18
- if (intentPayload) {
19
- payload = intentPayload;
20
- }
13
+ const payload = request.input.payload;
14
+ let targetContentId = payload;
15
+ if (!payload && request.session.is_first_interaction) {
16
+ targetContentId = await flowBuilderPlugin.getStartId();
17
+ }
18
+ if (!payload) {
19
+ const intentPayload = await flowBuilderPlugin.getPayloadByIntent(request.input, locale);
20
+ if (intentPayload)
21
+ targetContentId = intentPayload;
21
22
  const keywordPayload = await flowBuilderPlugin.getPayloadByKeyword(request.input, locale);
22
- if (keywordPayload) {
23
- payload = keywordPayload;
24
- }
23
+ if (keywordPayload)
24
+ targetContentId = keywordPayload;
25
25
  }
26
- // We use only Spanish because they are the backend examples
27
- const content = await flowBuilderPlugin.getContents(payload, locale);
28
- if (content.length === 0) {
29
- const handoffParams = {
30
- queue: 'Test',
31
- agentEmail: 'test@gmail.com',
32
- note: 'This is a note that will be attached to the case as a reminder',
33
- };
34
- await (0, handoff_1.doHandoff)(request, handoffParams.queue, handoffParams.note);
35
- const isHandoff = true;
36
- return { isHandoff };
26
+ if (!targetContentId) {
27
+ targetContentId = await flowBuilderPlugin.getFallbackId();
37
28
  }
38
- return { content };
29
+ const { contents, handoffNode } = await flowBuilderPlugin.getContents(targetContentId, locale);
30
+ if (handoffNode)
31
+ await (0, handoff_1.doHandoff)(request, locale, handoffNode);
32
+ return { contents, handoffNode };
39
33
  }
40
34
  render() {
41
35
  // @ts-ignore
42
- const { content: contents, isHandoff } = this.props;
43
- if (isHandoff) {
44
- return react_2.default.createElement(react_1.Text, null, "You are being transferred to an agent!");
45
- }
46
- else {
47
- return contents.map((content, index) => content.toBotonic(index));
48
- }
36
+ const { contents, handoffNode } = this.props;
37
+ return contents.map((content, index) => content.toBotonic(index));
49
38
  }
50
39
  }
51
40
  exports.FlowBuilderAction = FlowBuilderAction;
@@ -1 +1 @@
1
- {"version":3,"file":"action.js","sourceRoot":"","sources":["../../src/action.tsx"],"names":[],"mappings":";;;;AAAA,0CAAoE;AACpE,0DAAyB;AAGzB,uCAAqC;AAQrC,MAAa,iBAAkB,SAAQ,eAAK,CAAC,SAAiC;IAG5E,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,OAAsB;QAC7C,MAAM,iBAAiB,GAAG,OAAO,CAAC,OAAO;aACtC,kBAA8C,CAAA;QACjD,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAC3D,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,KAAK,CAAC,EAAE;YACxB,MAAM,aAAa,GAAG;gBACpB,KAAK,EAAE,MAAM;gBACb,UAAU,EAAE,gBAAgB;gBAC5B,IAAI,EAAE,gEAAgE;aACvE,CAAA;YACD,MAAM,IAAA,mBAAS,EAAC,OAAO,EAAE,aAAa,CAAC,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,CAAA;YACjE,MAAM,SAAS,GAAG,IAAI,CAAA;YACtB,OAAO,EAAE,SAAS,EAAE,CAAA;SACrB;QACD,OAAO,EAAE,OAAO,EAAE,CAAA;IACpB,CAAC;IAED,MAAM;QACJ,aAAa;QACb,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;QACnD,IAAI,SAAS,EAAE;YACb,OAAO,8BAAC,YAAI,iDAA8C,CAAA;SAC3D;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;;AAnDH,8CAoDC;AAnDQ,6BAAW,GAAG,sBAAc,CAAA"}
1
+ {"version":3,"file":"action.js","sourceRoot":"","sources":["../../src/action.tsx"],"names":[],"mappings":";;;;AAAA,0CAA8D;AAC9D,0DAAyB;AAGzB,uCAAqC;AACrC,uCAAgD;AAOhD,MAAa,iBAAkB,SAAQ,eAAK,CAAC,SAAiC;IAG5E,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,OAAsB;QAC7C,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;QAC3D,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAA;QACrC,IAAI,eAAe,GAAuB,OAAO,CAAA;QACjD,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,oBAAoB,EAAE;YACpD,eAAe,GAAG,MAAM,iBAAiB,CAAC,UAAU,EAAE,CAAA;SACvD;QACD,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAC,kBAAkB,CAC9D,OAAO,CAAC,KAAK,EACb,MAAM,CACP,CAAA;YACD,IAAI,aAAa;gBAAE,eAAe,GAAG,aAAa,CAAA;YAClD,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAAC,mBAAmB,CAChE,OAAO,CAAC,KAAK,EACb,MAAM,CACP,CAAA;YACD,IAAI,cAAc;gBAAE,eAAe,GAAG,cAAc,CAAA;SACrD;QACD,IAAI,CAAC,eAAe,EAAE;YACpB,eAAe,GAAG,MAAM,iBAAiB,CAAC,aAAa,EAAE,CAAA;SAC1D;QAED,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM,iBAAiB,CAAC,WAAW,CACnE,eAAe,EACf,MAAM,CACP,CAAA;QAED,IAAI,WAAW;YAAE,MAAM,IAAA,mBAAS,EAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,CAAA;QAE9D,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAA;IAClC,CAAC;IAED,MAAM;QACJ,aAAa;QACb,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;QAC5C,OAAO,QAAS,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;IACpE,CAAC;;AAzCH,8CA0CC;AAzCQ,6BAAW,GAAG,sBAAc,CAAA"}
@@ -1,7 +1,8 @@
1
- import { MediaFileLocale, TextLocale } from '../flow-builder-models';
1
+ import { MediaFileLocale, TextLocale, VideoLocale } from '../flow-builder-models';
2
2
  export declare abstract class ContentFieldsBase {
3
3
  private readonly id;
4
4
  constructor(id: string);
5
5
  static getTextByLocale(locale: string, text: TextLocale[]): string;
6
6
  static getImageByLocale(locale: string, image: MediaFileLocale[]): string;
7
+ static getVideoByLocale(locale: string, video: VideoLocale[]): string;
7
8
  }
@@ -12,9 +12,14 @@ class ContentFieldsBase {
12
12
  }
13
13
  static getImageByLocale(locale, image) {
14
14
  var _a;
15
- const result = image.find(t => t.locale === locale);
15
+ const result = image.find(i => i.locale === locale);
16
16
  return (_a = result === null || result === void 0 ? void 0 : result.file) !== null && _a !== void 0 ? _a : '';
17
17
  }
18
+ static getVideoByLocale(locale, video) {
19
+ var _a;
20
+ const result = video.find(v => v.locale === locale);
21
+ return (_a = result === null || result === void 0 ? void 0 : result.url) !== null && _a !== void 0 ? _a : '';
22
+ }
18
23
  }
19
24
  exports.ContentFieldsBase = ContentFieldsBase;
20
25
  //# sourceMappingURL=content-fields-base.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"content-fields-base.js","sourceRoot":"","sources":["../../../src/content-fields/content-fields-base.ts"],"names":[],"mappings":";;;AAEA,MAAsB,iBAAiB;IACrC,YAA6B,EAAU;QAAV,OAAE,GAAF,EAAE,CAAQ;IAAG,CAAC;IAE3C,MAAM,CAAC,eAAe,CAAC,MAAc,EAAE,IAAkB;;QACvD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAA;QAClD,OAAO,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,mCAAI,EAAE,CAAA;IAC9B,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,MAAc,EAAE,KAAwB;;QAC9D,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAA;QACnD,OAAO,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,mCAAI,EAAE,CAAA;IAC3B,CAAC;CACF;AAZD,8CAYC"}
1
+ {"version":3,"file":"content-fields-base.js","sourceRoot":"","sources":["../../../src/content-fields/content-fields-base.ts"],"names":[],"mappings":";;;AAMA,MAAsB,iBAAiB;IACrC,YAA6B,EAAU;QAAV,OAAE,GAAF,EAAE,CAAQ;IAAG,CAAC;IAE3C,MAAM,CAAC,eAAe,CAAC,MAAc,EAAE,IAAkB;;QACvD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAA;QAClD,OAAO,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,mCAAI,EAAE,CAAA;IAC9B,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,MAAc,EAAE,KAAwB;;QAC9D,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAA;QACnD,OAAO,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,mCAAI,EAAE,CAAA;IAC3B,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,MAAc,EAAE,KAAoB;;QAC1D,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAA;QACnD,OAAO,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,GAAG,mCAAI,EAAE,CAAA;IAC1B,CAAC;CACF;AAjBD,8CAiBC"}
@@ -12,10 +12,12 @@ class FlowButton extends content_fields_base_1.ContentFieldsBase {
12
12
  this.text = '';
13
13
  }
14
14
  static fromHubtypeCMS(component, locale) {
15
- var _a;
15
+ var _a, _b;
16
16
  const newButton = new FlowButton(component.id);
17
17
  newButton.text = FlowButton.getTextByLocale(locale, component.text);
18
- newButton.payload = (_a = component.target) === null || _a === void 0 ? void 0 : _a.id;
18
+ newButton.payload = component.target
19
+ ? component.target.id
20
+ : (_b = (_a = component.payload) === null || _a === void 0 ? void 0 : _a.find(payload => payload.locale === locale)) === null || _b === void 0 ? void 0 : _b.id;
19
21
  if (component.url) {
20
22
  const urlButton = component.url.find(url => url.locale === locale);
21
23
  if (urlButton)
@@ -1 +1 @@
1
- {"version":3,"file":"flow-button.js","sourceRoot":"","sources":["../../../src/content-fields/flow-button.tsx"],"names":[],"mappings":";;;;AAAA,0CAA8C;AAC9C,0DAAyB;AAEzB,gEAAwE;AACxE,+DAAyD;AAEzD,MAAa,UAAW,SAAQ,uCAAiB;IAAjD;;QACS,SAAI,GAAG,EAAE,CAAA;IAkClB,CAAC;IA9BC,MAAM,CAAC,cAAc,CAAC,SAAmB,EAAE,MAAc;;QACvD,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;QAC9C,SAAS,CAAC,IAAI,GAAG,UAAU,CAAC,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QACnE,SAAS,CAAC,OAAO,GAAG,MAAA,SAAS,CAAC,MAAM,0CAAE,EAAE,CAAA;QACxC,IAAI,SAAS,CAAC,GAAG,EAAE;YACjB,MAAM,SAAS,GAAI,SAAS,CAAC,GAAW,CAAC,IAAI,CAC3C,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,CAC7B,CAAA;YACD,IAAI,SAAS;gBAAE,SAAS,CAAC,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAA;SACrD;QACD,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,YAAY,CAAC,KAAa,EAAE,WAAwB;QAClD,IAAI,WAAW,KAAK,iCAAW,CAAC,WAAW,EAAE;YAC3C,OAAO,CACL,8BAAC,aAAK,IAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,IACrC,IAAI,CAAC,IAAI,CACJ,CACT,CAAA;SACF;QACD,IAAI,KAAK,GAAG,EAAE,CAAA;QACd,IAAI,IAAI,CAAC,GAAG;YAAE,KAAK,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAA;QACvC,OAAO;QACL,aAAa;QACb,8BAAC,cAAM,kBAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,IAAM,KAAK,GACjD,IAAI,CAAC,IAAI,CACH,CACV,CAAA;IACH,CAAC;CACF;AAnCD,gCAmCC"}
1
+ {"version":3,"file":"flow-button.js","sourceRoot":"","sources":["../../../src/content-fields/flow-button.tsx"],"names":[],"mappings":";;;;AAAA,0CAA8C;AAC9C,0DAAyB;AAEzB,gEAAwE;AACxE,+DAAyD;AAEzD,MAAa,UAAW,SAAQ,uCAAiB;IAAjD;;QACS,SAAI,GAAG,EAAE,CAAA;IAoClB,CAAC;IAhCC,MAAM,CAAC,cAAc,CAAC,SAAmB,EAAE,MAAc;;QACvD,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;QAC9C,SAAS,CAAC,IAAI,GAAG,UAAU,CAAC,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QACnE,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,MAAM;YAClC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YACrB,CAAC,CAAC,MAAA,MAAA,SAAS,CAAC,OAAO,0CAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,0CAAE,EAAE,CAAA;QACrE,IAAI,SAAS,CAAC,GAAG,EAAE;YACjB,MAAM,SAAS,GAAI,SAAS,CAAC,GAAW,CAAC,IAAI,CAC3C,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,CAC7B,CAAA;YACD,IAAI,SAAS;gBAAE,SAAS,CAAC,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAA;SACrD;QACD,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,YAAY,CAAC,KAAa,EAAE,WAAwB;QAClD,IAAI,WAAW,KAAK,iCAAW,CAAC,WAAW,EAAE;YAC3C,OAAO,CACL,8BAAC,aAAK,IAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,IACrC,IAAI,CAAC,IAAI,CACJ,CACT,CAAA;SACF;QACD,IAAI,KAAK,GAAG,EAAE,CAAA;QACd,IAAI,IAAI,CAAC,GAAG;YAAE,KAAK,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAA;QACvC,OAAO;QACL,aAAa;QACb,8BAAC,cAAM,kBAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,IAAM,KAAK,GACjD,IAAI,CAAC,IAAI,CACH,CACV,CAAA;IACH,CAAC;CACF;AArCD,gCAqCC"}
@@ -0,0 +1,8 @@
1
+ import { VideoNode } from '../flow-builder-models';
2
+ import { ContentFieldsBase } from './content-fields-base';
3
+ export declare class FlowVideo extends ContentFieldsBase {
4
+ src: string;
5
+ code: string;
6
+ static fromHubtypeCMS(component: VideoNode, locale: string): FlowVideo;
7
+ toBotonic(index: number): JSX.Element;
8
+ }
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FlowVideo = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const react_1 = require("@botonic/react");
6
+ const react_2 = tslib_1.__importDefault(require("react"));
7
+ const content_fields_base_1 = require("./content-fields-base");
8
+ class FlowVideo extends content_fields_base_1.ContentFieldsBase {
9
+ constructor() {
10
+ super(...arguments);
11
+ this.src = '';
12
+ this.code = '';
13
+ }
14
+ static fromHubtypeCMS(component, locale) {
15
+ const newVideo = new FlowVideo(component.id);
16
+ newVideo.code = component.code;
17
+ newVideo.src = this.getVideoByLocale(locale, component.content.video);
18
+ return newVideo;
19
+ }
20
+ toBotonic(index) {
21
+ // @ts-ignore
22
+ return react_2.default.createElement(react_1.Video, { key: index, src: this.src });
23
+ }
24
+ }
25
+ exports.FlowVideo = FlowVideo;
26
+ //# sourceMappingURL=flow-video.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow-video.js","sourceRoot":"","sources":["../../../src/content-fields/flow-video.tsx"],"names":[],"mappings":";;;;AAAA,0CAAsC;AACtC,0DAAyB;AAGzB,+DAAyD;AAEzD,MAAa,SAAU,SAAQ,uCAAiB;IAAhD;;QACS,QAAG,GAAG,EAAE,CAAA;QACR,SAAI,GAAG,EAAE,CAAA;IAalB,CAAC;IAXC,MAAM,CAAC,cAAc,CAAC,SAAoB,EAAE,MAAc;QACxD,MAAM,QAAQ,GAAG,IAAI,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;QAC5C,QAAQ,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAA;QAC9B,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACrE,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,SAAS,CAAC,KAAa;QACrB,aAAa;QACb,OAAO,8BAAC,aAAK,IAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,GAAI,CAAA;IAC7C,CAAC;CACF;AAfD,8BAeC"}
@@ -4,4 +4,5 @@ export { FlowCarousel } from './flow-carousel';
4
4
  export { FlowElement } from './flow-element';
5
5
  export { FlowImage } from './flow-image';
6
6
  export { FlowText } from './flow-text';
7
+ export { FlowVideo } from './flow-video';
7
8
  export type { FlowContent } from './types';
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FlowText = exports.FlowImage = exports.FlowElement = exports.FlowCarousel = exports.FlowButton = exports.ContentFieldsBase = void 0;
3
+ exports.FlowVideo = exports.FlowText = exports.FlowImage = exports.FlowElement = exports.FlowCarousel = exports.FlowButton = exports.ContentFieldsBase = void 0;
4
4
  var content_fields_base_1 = require("./content-fields-base");
5
5
  Object.defineProperty(exports, "ContentFieldsBase", { enumerable: true, get: function () { return content_fields_base_1.ContentFieldsBase; } });
6
6
  var flow_button_1 = require("./flow-button");
@@ -13,4 +13,6 @@ var flow_image_1 = require("./flow-image");
13
13
  Object.defineProperty(exports, "FlowImage", { enumerable: true, get: function () { return flow_image_1.FlowImage; } });
14
14
  var flow_text_1 = require("./flow-text");
15
15
  Object.defineProperty(exports, "FlowText", { enumerable: true, get: function () { return flow_text_1.FlowText; } });
16
+ var flow_video_1 = require("./flow-video");
17
+ Object.defineProperty(exports, "FlowVideo", { enumerable: true, get: function () { return flow_video_1.FlowVideo; } });
16
18
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/content-fields/index.ts"],"names":[],"mappings":";;;AAAA,6DAAyD;AAAhD,wHAAA,iBAAiB,OAAA;AAC1B,6CAA0C;AAAjC,yGAAA,UAAU,OAAA;AACnB,iDAA8C;AAArC,6GAAA,YAAY,OAAA;AACrB,+CAA4C;AAAnC,2GAAA,WAAW,OAAA;AACpB,2CAAwC;AAA/B,uGAAA,SAAS,OAAA;AAClB,yCAAsC;AAA7B,qGAAA,QAAQ,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/content-fields/index.ts"],"names":[],"mappings":";;;AAAA,6DAAyD;AAAhD,wHAAA,iBAAiB,OAAA;AAC1B,6CAA0C;AAAjC,yGAAA,UAAU,OAAA;AACnB,iDAA8C;AAArC,6GAAA,YAAY,OAAA;AACrB,+CAA4C;AAAnC,2GAAA,WAAW,OAAA;AACpB,2CAAwC;AAA/B,uGAAA,SAAS,OAAA;AAClB,yCAAsC;AAA7B,qGAAA,QAAQ,OAAA;AACjB,2CAAwC;AAA/B,uGAAA,SAAS,OAAA"}
@@ -1,4 +1,5 @@
1
1
  import { FlowCarousel } from './flow-carousel';
2
2
  import { FlowImage } from './flow-image';
3
3
  import { FlowText } from './flow-text';
4
- export type FlowContent = FlowText | FlowImage | FlowCarousel;
4
+ import { FlowVideo } from './flow-video';
5
+ export type FlowContent = FlowText | FlowImage | FlowCarousel | FlowVideo;
@@ -16,7 +16,9 @@ export declare enum NodeType {
16
16
  START_UP = "start-up",
17
17
  URL = "url",
18
18
  PAYLOAD = "payload",
19
- FUNCTION = "function"
19
+ FUNCTION = "function",
20
+ FALLBACK = "fallback",
21
+ VIDEO = "video"
20
22
  }
21
23
  export interface BaseNode {
22
24
  id: string;
@@ -57,8 +59,8 @@ export interface Button {
57
59
  text: TextLocale[];
58
60
  target?: NodeLink;
59
61
  hidden: string;
60
- url?: UrlLocale;
61
- payload?: PayloadLocale;
62
+ url?: UrlLocale[];
63
+ payload?: PayloadLocale[];
62
64
  }
63
65
  export interface TextNodeContent {
64
66
  text: TextLocale[];
@@ -171,4 +173,24 @@ export interface FunctionNode extends Node {
171
173
  type: NodeType.FUNCTION;
172
174
  content: FunctionNodeContent;
173
175
  }
174
- export type NodeComponent = TextNode | ImageNode | CarouselNode | HandoffNode | KeywordNode | IntentNode | UrlNode | StartNode | PayloadNode | FunctionNode;
176
+ export interface FallbackNodeContent {
177
+ first_message: NodeLink;
178
+ second_message: NodeLink;
179
+ }
180
+ export interface FallbackNode extends Node {
181
+ type: NodeType.FALLBACK;
182
+ content: FallbackNodeContent;
183
+ }
184
+ export interface VideoLocale {
185
+ url: string;
186
+ is_embedded?: boolean;
187
+ locale: string;
188
+ }
189
+ export interface VideoNodeContent {
190
+ video: VideoLocale[];
191
+ }
192
+ export interface VideoNode extends Node {
193
+ type: NodeType.VIDEO;
194
+ content: VideoNodeContent;
195
+ }
196
+ export type NodeComponent = TextNode | ImageNode | CarouselNode | HandoffNode | KeywordNode | IntentNode | UrlNode | StartNode | PayloadNode | FunctionNode | FallbackNode | VideoNode;
@@ -13,6 +13,8 @@ var NodeType;
13
13
  NodeType["URL"] = "url";
14
14
  NodeType["PAYLOAD"] = "payload";
15
15
  NodeType["FUNCTION"] = "function";
16
+ NodeType["FALLBACK"] = "fallback";
17
+ NodeType["VIDEO"] = "video";
16
18
  })(NodeType = exports.NodeType || (exports.NodeType = {}));
17
19
  var ButtonStyle;
18
20
  (function (ButtonStyle) {
@@ -1 +1 @@
1
- {"version":3,"file":"flow-builder-models.js","sourceRoot":"","sources":["../../src/flow-builder-models.ts"],"names":[],"mappings":";;;AASA,IAAY,QAWX;AAXD,WAAY,QAAQ;IAClB,yBAAa,CAAA;IACb,2BAAe,CAAA;IACf,iCAAqB,CAAA;IACrB,+BAAmB,CAAA;IACnB,+BAAmB,CAAA;IACnB,6BAAiB,CAAA;IACjB,iCAAqB,CAAA;IACrB,uBAAW,CAAA;IACX,+BAAmB,CAAA;IACnB,iCAAqB,CAAA;AACvB,CAAC,EAXW,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAWnB;AA6BD,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,gCAAiB,CAAA;IACjB,0CAA2B,CAAA;AAC7B,CAAC,EAHW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAGtB"}
1
+ {"version":3,"file":"flow-builder-models.js","sourceRoot":"","sources":["../../src/flow-builder-models.ts"],"names":[],"mappings":";;;AASA,IAAY,QAaX;AAbD,WAAY,QAAQ;IAClB,yBAAa,CAAA;IACb,2BAAe,CAAA;IACf,iCAAqB,CAAA;IACrB,+BAAmB,CAAA;IACnB,+BAAmB,CAAA;IACnB,6BAAiB,CAAA;IACjB,iCAAqB,CAAA;IACrB,uBAAW,CAAA;IACX,+BAAmB,CAAA;IACnB,iCAAqB,CAAA;IACrB,iCAAqB,CAAA;IACrB,2BAAe,CAAA;AACjB,CAAC,EAbW,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAanB;AA6BD,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,gCAAiB,CAAA;IACjB,0CAA2B,CAAA;AAC7B,CAAC,EAHW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAGtB"}
@@ -1,2 +1,3 @@
1
1
  import { ActionRequest } from '@botonic/react';
2
- export declare function doHandoff(request: ActionRequest, queue: string, note?: string, agentEmail?: string): Promise<void>;
2
+ import { HandoffNode } from './flow-builder-models';
3
+ export declare function doHandoff(request: ActionRequest, locale: string, handoffNode: HandoffNode): Promise<void>;
@@ -2,22 +2,29 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.doHandoff = void 0;
4
4
  const core_1 = require("@botonic/core");
5
- async function doHandoff(request, queue, note, agentEmail) {
5
+ const helpers_1 = require("./helpers");
6
+ async function doHandoff(request, locale, handoffNode) {
6
7
  var _a;
8
+ const flowBuilderPlugin = (0, helpers_1.getFlowBuilderPlugin)(request.plugins);
9
+ const handoffTargetNode = await flowBuilderPlugin.getHandoffContent((_a = handoffNode.target) === null || _a === void 0 ? void 0 : _a.id);
7
10
  // @ts-ignore
8
- const flowBuilderPlugin = request.plugins.hubtypeFlowBuilder;
9
- const handoffContent = await flowBuilderPlugin.getHandoffContent();
10
- // @ts-ignore
11
- const handOffBuilder = new core_1.HandOffBuilder(request.session);
12
- handOffBuilder.withQueue(queue);
13
- if (note) {
14
- handOffBuilder.withNote(note);
15
- }
16
- if (agentEmail) {
17
- handOffBuilder.withAgentEmail(agentEmail);
18
- }
19
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
20
- handOffBuilder.withOnFinishPayload((_a = handoffContent.target) === null || _a === void 0 ? void 0 : _a.id);
11
+ const handOffBuilder = new core_1.HandOffBuilder(request.session); // handOffBuilder.withQueue(handoffNode.content.queue)
12
+ const handoffQueues = handoffNode.content.queue;
13
+ const queueFound = handoffQueues.find(q => q.locale === locale);
14
+ if (queueFound)
15
+ handOffBuilder.withQueue(queueFound.id);
16
+ // TODO: Retrieve params from FlowBuilder
17
+ // const handoffParams = {
18
+ // agentEmail: 'test@gmail.com',
19
+ // note: 'This is a note that will be attached to the case as a reminder',
20
+ // }
21
+ // if (handoffParams.note) {
22
+ // handOffBuilder.withNote(handoffParams.note)
23
+ // }
24
+ // if (handoffParams.agentEmail) {
25
+ // handOffBuilder.withAgentEmail(handoffParams.agentEmail)
26
+ // }
27
+ handOffBuilder.withOnFinishPayload(handoffTargetNode.id);
21
28
  await handOffBuilder.handOff();
22
29
  }
23
30
  exports.doHandoff = doHandoff;
@@ -1 +1 @@
1
- {"version":3,"file":"handoff.js","sourceRoot":"","sources":["../../src/handoff.ts"],"names":[],"mappings":";;;AAAA,wCAA8C;AAGvC,KAAK,UAAU,SAAS,CAC7B,OAAsB,EACtB,KAAa,EACb,IAAa,EACb,UAAmB;;IAEnB,aAAa;IACb,MAAM,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,kBAAyB,CAAA;IACnE,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAAC,iBAAiB,EAAE,CAAA;IAElE,aAAa;IACb,MAAM,cAAc,GAAG,IAAI,qBAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAC1D,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IAE/B,IAAI,IAAI,EAAE;QACR,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;KAC9B;IAED,IAAI,UAAU,EAAE;QACd,cAAc,CAAC,cAAc,CAAC,UAAU,CAAC,CAAA;KAC1C;IACD,oEAAoE;IACpE,cAAc,CAAC,mBAAmB,CAAC,MAAA,cAAc,CAAC,MAAM,0CAAE,EAAG,CAAC,CAAA;IAC9D,MAAM,cAAc,CAAC,OAAO,EAAE,CAAA;AAChC,CAAC;AAxBD,8BAwBC"}
1
+ {"version":3,"file":"handoff.js","sourceRoot":"","sources":["../../src/handoff.ts"],"names":[],"mappings":";;;AAAA,wCAA8C;AAI9C,uCAAgD;AAEzC,KAAK,UAAU,SAAS,CAC7B,OAAsB,EACtB,MAAc,EACd,WAAwB;;IAExB,MAAM,iBAAiB,GAAG,IAAA,8BAAoB,EAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAC/D,MAAM,iBAAiB,GAAG,MAAM,iBAAiB,CAAC,iBAAiB,CACjE,MAAA,WAAW,CAAC,MAAM,0CAAE,EAAE,CACvB,CAAA;IACD,aAAa;IACb,MAAM,cAAc,GAAG,IAAI,qBAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA,CAAC,sDAAsD;IACjH,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAA;IAC/C,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAA;IAC/D,IAAI,UAAU;QAAE,cAAc,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;IACvD,yCAAyC;IACzC,0BAA0B;IAC1B,kCAAkC;IAClC,4EAA4E;IAC5E,IAAI;IAEJ,4BAA4B;IAC5B,gDAAgD;IAChD,IAAI;IAEJ,kCAAkC;IAClC,4DAA4D;IAC5D,IAAI;IAEJ,cAAc,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAA;IACxD,MAAM,cAAc,CAAC,OAAO,EAAE,CAAA;AAChC,CAAC;AA9BD,8BA8BC"}
@@ -0,0 +1,5 @@
1
+ import { Plugin } from '@botonic/core';
2
+ import BotonicPluginFlowBuilder from './index';
3
+ export declare function getFlowBuilderPlugin(plugins: {
4
+ [id: string]: Plugin;
5
+ }): BotonicPluginFlowBuilder;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getFlowBuilderPlugin = void 0;
4
+ const FLOW_BUILDER_PLUGIN_NAME = 'BotonicPluginFlowBuilder';
5
+ function getFlowBuilderPlugin(plugins) {
6
+ const flowBuilderPlugin = Object.values(plugins).find(
7
+ // @ts-ignore
8
+ plugin => plugin.name === FLOW_BUILDER_PLUGIN_NAME);
9
+ if (!flowBuilderPlugin)
10
+ throw new Error(`You must include '@botonic/plugin-flow-builder' in your plugins file.`);
11
+ return flowBuilderPlugin;
12
+ }
13
+ exports.getFlowBuilderPlugin = getFlowBuilderPlugin;
14
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":";;;AAGA,MAAM,wBAAwB,GAAG,0BAA0B,CAAA;AAE3D,SAAgB,oBAAoB,CAAC,OAEpC;IACC,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI;IACnD,aAAa;IACb,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,wBAAwB,CACvB,CAAA;IAC7B,IAAI,CAAC,iBAAiB;QACpB,MAAM,IAAI,KAAK,CACb,uEAAuE,CACxE,CAAA;IACH,OAAO,iBAAiB,CAAA;AAC1B,CAAC;AAZD,oDAYC"}
@@ -21,12 +21,17 @@ export default class BotonicPluginFlowBuilder implements Plugin {
21
21
  pre(request: PluginPreRequest): Promise<void>;
22
22
  post(_request: PluginPostRequest): Promise<void>;
23
23
  getContent(id: string): Promise<NodeComponent>;
24
- getHandoffContent(): Promise<HandoffNode>;
24
+ getHandoffContent(handoffTargetId: string | undefined): Promise<HandoffNode>;
25
25
  getFlowContent(hubtypeContent: NodeComponent, locale: string): FlowContent | undefined;
26
26
  getStartId(): Promise<string>;
27
- getContents(id: string, locale: string, prevContents?: FlowContent[]): Promise<FlowContent[]>;
28
- getPayloadByInput(input: Input, locale: string): Promise<string | undefined>;
27
+ getFallbackId(): Promise<string>;
28
+ getContents(id: string, locale: string, prevContents?: FlowContent[]): Promise<{
29
+ contents: FlowContent[];
30
+ handoffNode: HandoffNode;
31
+ }>;
32
+ getPayloadByIntent(input: Input, locale: string): Promise<string | undefined>;
29
33
  hasIntent(node: IntentNode, intent: string, locale: string): boolean;
34
+ hasMetConfidenceThreshold(node: IntentNode, predictedConfidence: number): boolean;
30
35
  getPayloadByKeyword(input: Input, locale: string): Promise<string | undefined>;
31
36
  matchKeywords(node: KeywordNode, input: string, locale: string): boolean;
32
37
  containsAnyKeywords(input: string, keywords: string[]): boolean;
package/lib/cjs/index.js CHANGED
@@ -17,10 +17,10 @@ class BotonicPluginFlowBuilder {
17
17
  this.functions = Object.assign(Object.assign({}, functions_1.DEFAULT_FUNCTIONS), customFunctions);
18
18
  }
19
19
  async readFlowContent() {
20
- const response = await axios_1.default.get(this.flowUrl, {
20
+ const { data } = await axios_1.default.get(this.flowUrl, {
21
21
  headers: { Authorization: `Bearer ${this.getAccessToken()}` },
22
22
  });
23
- return response.data;
23
+ return data;
24
24
  }
25
25
  async pre(request) {
26
26
  this.currentRequest = request;
@@ -34,9 +34,9 @@ class BotonicPluginFlowBuilder {
34
34
  throw Error(`Node with id: '${id}' not found`);
35
35
  return content;
36
36
  }
37
- async getHandoffContent() {
37
+ async getHandoffContent(handoffTargetId) {
38
38
  const flow = await this.flow;
39
- const content = flow.nodes.find(node => node.type === flow_builder_models_1.NodeType.HANDOFF);
39
+ const content = flow.nodes.find(node => node.id === handoffTargetId);
40
40
  if (!content)
41
41
  throw Error(`Handoff node not found`);
42
42
  return content;
@@ -49,6 +49,8 @@ class BotonicPluginFlowBuilder {
49
49
  return content_fields_1.FlowImage.fromHubtypeCMS(hubtypeContent, locale);
50
50
  case flow_builder_models_1.NodeType.CAROUSEL:
51
51
  return content_fields_1.FlowCarousel.fromHubtypeCMS(hubtypeContent, locale);
52
+ case flow_builder_models_1.NodeType.VIDEO:
53
+ return content_fields_1.FlowVideo.fromHubtypeCMS(hubtypeContent, locale);
52
54
  default:
53
55
  return undefined;
54
56
  }
@@ -56,14 +58,26 @@ class BotonicPluginFlowBuilder {
56
58
  async getStartId() {
57
59
  const flow = await this.flow;
58
60
  const startNode = flow.nodes.find(node => node.type === flow_builder_models_1.NodeType.START_UP);
59
- if (!startNode) {
61
+ if (!startNode)
60
62
  throw new Error('start-up id must be defined');
61
- }
62
63
  return startNode.target.id;
63
64
  }
65
+ async getFallbackId() {
66
+ const flow = await this.flow;
67
+ const fallbackNode = flow.nodes.find(node => node.type === flow_builder_models_1.NodeType.FALLBACK);
68
+ if (!fallbackNode)
69
+ throw new Error('fallback node must be defined');
70
+ const fallbackFirstMessage = fallbackNode.content.first_message;
71
+ const fallbackSecondMessage = fallbackNode.content.second_message;
72
+ if (!fallbackSecondMessage)
73
+ return fallbackFirstMessage.id;
74
+ const fallbackIds = [fallbackFirstMessage.id, fallbackSecondMessage.id];
75
+ return fallbackIds[Math.floor(Math.random() * fallbackIds.length)];
76
+ }
64
77
  async getContents(id, locale, prevContents) {
65
78
  const contents = prevContents || [];
66
79
  const hubtypeContent = await this.getContent(id);
80
+ const isHandoff = hubtypeContent.type === flow_builder_models_1.NodeType.HANDOFF;
67
81
  if (hubtypeContent.content.elements) {
68
82
  for (const i in hubtypeContent.content.elements) {
69
83
  const button = hubtypeContent.content.elements[i].button;
@@ -98,20 +112,21 @@ class BotonicPluginFlowBuilder {
98
112
  }
99
113
  // execute function
100
114
  // return this.getContents(function result_mapping target, locale, contents)
101
- return contents;
115
+ return { contents, handoffNode: isHandoff && hubtypeContent };
102
116
  }
103
- async getPayloadByInput(input, locale) {
117
+ async getPayloadByIntent(input, locale) {
104
118
  var _a;
105
119
  try {
106
120
  const flow = await this.flow;
107
121
  const intents = flow.nodes.filter(node => node.type === flow_builder_models_1.NodeType.INTENT);
108
- if (input.intent) {
109
- const matchedIntents = intents.filter(node =>
110
- //@ts-ignore
111
- this.hasIntent(node, input.intent, locale));
112
- if (matchedIntents.length > 0) {
113
- return (_a = matchedIntents[0].target) === null || _a === void 0 ? void 0 : _a.id;
114
- }
122
+ const inputIntent = input.intent;
123
+ const inputConfidence = input.confidence;
124
+ if (inputIntent) {
125
+ const matchedIntentNode = intents.find(node => inputIntent &&
126
+ this.hasIntent(node, inputIntent, locale) &&
127
+ inputConfidence &&
128
+ this.hasMetConfidenceThreshold(node, inputConfidence));
129
+ return (_a = matchedIntentNode === null || matchedIntentNode === void 0 ? void 0 : matchedIntentNode.target) === null || _a === void 0 ? void 0 : _a.id;
115
130
  }
116
131
  }
117
132
  catch (error) {
@@ -120,8 +135,11 @@ class BotonicPluginFlowBuilder {
120
135
  return undefined;
121
136
  }
122
137
  hasIntent(node, intent, locale) {
123
- const result = node.content.intents.find(i => i.locale === locale && i.values.includes(intent));
124
- return Boolean(result);
138
+ return node.content.intents.some(i => i.locale === locale && i.values.includes(intent));
139
+ }
140
+ hasMetConfidenceThreshold(node, predictedConfidence) {
141
+ const nodeConfidence = node.content.confidence / 100;
142
+ return predictedConfidence >= nodeConfidence;
125
143
  }
126
144
  async getPayloadByKeyword(input, locale) {
127
145
  var _a;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/lib/esm/action.js CHANGED
@@ -1,47 +1,36 @@
1
- import { RequestContext, Text } from '@botonic/react';
1
+ import { RequestContext } from '@botonic/react';
2
2
  import React from 'react';
3
3
  import { doHandoff } from './handoff';
4
+ import { getFlowBuilderPlugin } from './helpers';
4
5
  export class FlowBuilderAction extends React.Component {
5
6
  static async botonicInit(request) {
6
- const flowBuilderPlugin = request.plugins
7
- .hubtypeFlowBuilder;
7
+ const flowBuilderPlugin = getFlowBuilderPlugin(request.plugins);
8
8
  const locale = flowBuilderPlugin.getLocale(request.session);
9
- let payload = request.input.payload
10
- ? request.input.payload
11
- : await flowBuilderPlugin.getStartId();
12
- if (!request.input.payload) {
13
- const intentPayload = await flowBuilderPlugin.getPayloadByInput(request.input, locale);
14
- if (intentPayload) {
15
- payload = intentPayload;
16
- }
9
+ const payload = request.input.payload;
10
+ let targetContentId = payload;
11
+ if (!payload && request.session.is_first_interaction) {
12
+ targetContentId = await flowBuilderPlugin.getStartId();
13
+ }
14
+ if (!payload) {
15
+ const intentPayload = await flowBuilderPlugin.getPayloadByIntent(request.input, locale);
16
+ if (intentPayload)
17
+ targetContentId = intentPayload;
17
18
  const keywordPayload = await flowBuilderPlugin.getPayloadByKeyword(request.input, locale);
18
- if (keywordPayload) {
19
- payload = keywordPayload;
20
- }
19
+ if (keywordPayload)
20
+ targetContentId = keywordPayload;
21
21
  }
22
- // We use only Spanish because they are the backend examples
23
- const content = await flowBuilderPlugin.getContents(payload, locale);
24
- if (content.length === 0) {
25
- const handoffParams = {
26
- queue: 'Test',
27
- agentEmail: 'test@gmail.com',
28
- note: 'This is a note that will be attached to the case as a reminder',
29
- };
30
- await doHandoff(request, handoffParams.queue, handoffParams.note);
31
- const isHandoff = true;
32
- return { isHandoff };
22
+ if (!targetContentId) {
23
+ targetContentId = await flowBuilderPlugin.getFallbackId();
33
24
  }
34
- return { content };
25
+ const { contents, handoffNode } = await flowBuilderPlugin.getContents(targetContentId, locale);
26
+ if (handoffNode)
27
+ await doHandoff(request, locale, handoffNode);
28
+ return { contents, handoffNode };
35
29
  }
36
30
  render() {
37
31
  // @ts-ignore
38
- const { content: contents, isHandoff } = this.props;
39
- if (isHandoff) {
40
- return React.createElement(Text, null, "You are being transferred to an agent!");
41
- }
42
- else {
43
- return contents.map((content, index) => content.toBotonic(index));
44
- }
32
+ const { contents, handoffNode } = this.props;
33
+ return contents.map((content, index) => content.toBotonic(index));
45
34
  }
46
35
  }
47
36
  FlowBuilderAction.contextType = RequestContext;