@botonic/plugin-flow-builder 0.42.4 → 0.43.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/lib/cjs/action/payload.js +22 -2
  2. package/lib/cjs/action/payload.js.map +1 -1
  3. package/lib/cjs/api.d.ts +2 -0
  4. package/lib/cjs/api.js +11 -1
  5. package/lib/cjs/api.js.map +1 -1
  6. package/lib/cjs/constants.d.ts +2 -1
  7. package/lib/cjs/constants.js +3 -2
  8. package/lib/cjs/constants.js.map +1 -1
  9. package/lib/cjs/content-fields/content-fields-base.d.ts +2 -0
  10. package/lib/cjs/content-fields/content-fields-base.js +21 -0
  11. package/lib/cjs/content-fields/content-fields-base.js.map +1 -1
  12. package/lib/cjs/content-fields/flow-button.js +6 -2
  13. package/lib/cjs/content-fields/flow-button.js.map +1 -1
  14. package/lib/cjs/content-fields/flow-text.d.ts +0 -2
  15. package/lib/cjs/content-fields/flow-text.js +1 -21
  16. package/lib/cjs/content-fields/flow-text.js.map +1 -1
  17. package/lib/cjs/content-fields/flow-whatsapp-template.d.ts +28 -0
  18. package/lib/cjs/content-fields/flow-whatsapp-template.js +169 -0
  19. package/lib/cjs/content-fields/flow-whatsapp-template.js.map +1 -0
  20. package/lib/cjs/content-fields/hubtype-fields/common.d.ts +6 -0
  21. package/lib/cjs/content-fields/hubtype-fields/index.d.ts +1 -0
  22. package/lib/cjs/content-fields/hubtype-fields/index.js +1 -0
  23. package/lib/cjs/content-fields/hubtype-fields/index.js.map +1 -1
  24. package/lib/cjs/content-fields/hubtype-fields/node-types.d.ts +1 -0
  25. package/lib/cjs/content-fields/hubtype-fields/node-types.js +1 -0
  26. package/lib/cjs/content-fields/hubtype-fields/node-types.js.map +1 -1
  27. package/lib/cjs/content-fields/hubtype-fields/nodes.d.ts +2 -1
  28. package/lib/cjs/content-fields/hubtype-fields/whatsapp-template.d.ts +66 -0
  29. package/lib/cjs/content-fields/hubtype-fields/whatsapp-template.js +3 -0
  30. package/lib/cjs/content-fields/hubtype-fields/whatsapp-template.js.map +1 -0
  31. package/lib/cjs/content-fields/index.d.ts +3 -2
  32. package/lib/cjs/content-fields/index.js +3 -1
  33. package/lib/cjs/content-fields/index.js.map +1 -1
  34. package/lib/cjs/flow-factory.js +2 -0
  35. package/lib/cjs/flow-factory.js.map +1 -1
  36. package/lib/esm/action/payload.js +23 -3
  37. package/lib/esm/action/payload.js.map +1 -1
  38. package/lib/esm/api.d.ts +2 -0
  39. package/lib/esm/api.js +11 -1
  40. package/lib/esm/api.js.map +1 -1
  41. package/lib/esm/constants.d.ts +2 -1
  42. package/lib/esm/constants.js +2 -1
  43. package/lib/esm/constants.js.map +1 -1
  44. package/lib/esm/content-fields/content-fields-base.d.ts +2 -0
  45. package/lib/esm/content-fields/content-fields-base.js +21 -0
  46. package/lib/esm/content-fields/content-fields-base.js.map +1 -1
  47. package/lib/esm/content-fields/flow-button.js +6 -2
  48. package/lib/esm/content-fields/flow-button.js.map +1 -1
  49. package/lib/esm/content-fields/flow-text.d.ts +0 -2
  50. package/lib/esm/content-fields/flow-text.js +2 -22
  51. package/lib/esm/content-fields/flow-text.js.map +1 -1
  52. package/lib/esm/content-fields/flow-whatsapp-template.d.ts +28 -0
  53. package/lib/esm/content-fields/flow-whatsapp-template.js +165 -0
  54. package/lib/esm/content-fields/flow-whatsapp-template.js.map +1 -0
  55. package/lib/esm/content-fields/hubtype-fields/common.d.ts +6 -0
  56. package/lib/esm/content-fields/hubtype-fields/index.d.ts +1 -0
  57. package/lib/esm/content-fields/hubtype-fields/index.js +1 -0
  58. package/lib/esm/content-fields/hubtype-fields/index.js.map +1 -1
  59. package/lib/esm/content-fields/hubtype-fields/node-types.d.ts +1 -0
  60. package/lib/esm/content-fields/hubtype-fields/node-types.js +1 -0
  61. package/lib/esm/content-fields/hubtype-fields/node-types.js.map +1 -1
  62. package/lib/esm/content-fields/hubtype-fields/nodes.d.ts +2 -1
  63. package/lib/esm/content-fields/hubtype-fields/whatsapp-template.d.ts +66 -0
  64. package/lib/esm/content-fields/hubtype-fields/whatsapp-template.js +2 -0
  65. package/lib/esm/content-fields/hubtype-fields/whatsapp-template.js.map +1 -0
  66. package/lib/esm/content-fields/index.d.ts +3 -2
  67. package/lib/esm/content-fields/index.js +2 -1
  68. package/lib/esm/content-fields/index.js.map +1 -1
  69. package/lib/esm/flow-factory.js +3 -1
  70. package/lib/esm/flow-factory.js.map +1 -1
  71. package/package.json +3 -3
  72. package/src/action/payload.ts +32 -1
  73. package/src/api.ts +14 -1
  74. package/src/constants.ts +2 -1
  75. package/src/content-fields/content-fields-base.ts +31 -0
  76. package/src/content-fields/flow-button.tsx +5 -2
  77. package/src/content-fields/flow-text.tsx +2 -28
  78. package/src/content-fields/flow-whatsapp-template.tsx +281 -0
  79. package/src/content-fields/hubtype-fields/common.ts +7 -0
  80. package/src/content-fields/hubtype-fields/index.ts +1 -0
  81. package/src/content-fields/hubtype-fields/node-types.ts +1 -0
  82. package/src/content-fields/hubtype-fields/nodes.ts +2 -0
  83. package/src/content-fields/hubtype-fields/whatsapp-template.ts +84 -0
  84. package/src/content-fields/index.ts +3 -0
  85. package/src/flow-factory.ts +4 -0
@@ -0,0 +1,165 @@
1
+ import { __awaiter } from "tslib";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { isWhatsapp } from '@botonic/core';
4
+ import { Text, WhatsappTemplate, WhatsAppTemplateButtonSubType, WhatsAppTemplateComponentType, WhatsAppTemplateParameterType, } from '@botonic/react';
5
+ import { getFlowBuilderPlugin } from '../helpers';
6
+ import { trackOneContent } from '../tracking';
7
+ import { ContentFieldsBase } from './content-fields-base';
8
+ export class FlowWhatsappTemplate extends ContentFieldsBase {
9
+ constructor() {
10
+ super(...arguments);
11
+ this.variableValues = {};
12
+ }
13
+ static fromHubtypeCMS(component) {
14
+ const whatsappTemplate = new FlowWhatsappTemplate(component.id);
15
+ whatsappTemplate.code = component.code;
16
+ whatsappTemplate.htWhatsappTemplate = component.content.template;
17
+ whatsappTemplate.headerVariables = component.content.header_variables;
18
+ whatsappTemplate.variableValues = component.content.variable_values;
19
+ whatsappTemplate.buttons = component.content.buttons;
20
+ whatsappTemplate.urlVariableValues = component.content.url_variable_values;
21
+ whatsappTemplate.followUp = component.follow_up;
22
+ return whatsappTemplate;
23
+ }
24
+ getHeaderComponent(whatsappTemplate, headerVariables, locale, request) {
25
+ const headerComponent = whatsappTemplate.components.find(component => component.type === WhatsAppTemplateComponentType.HEADER);
26
+ if (headerComponent &&
27
+ headerComponent.format === WhatsAppTemplateParameterType.TEXT) {
28
+ return this.createHeaderTextComponent(headerVariables, request);
29
+ }
30
+ if (headerComponent &&
31
+ headerComponent.format === WhatsAppTemplateParameterType.IMAGE) {
32
+ return this.createHeaderImageComponent(headerVariables, locale);
33
+ }
34
+ return undefined;
35
+ }
36
+ createHeaderTextComponent(headerVariables, request) {
37
+ return {
38
+ type: WhatsAppTemplateComponentType.HEADER,
39
+ parameters: Object.values(headerVariables.text || {}).map(value => {
40
+ const valueVariable = this.replaceVariables(value, request);
41
+ return {
42
+ type: WhatsAppTemplateParameterType.TEXT,
43
+ text: valueVariable,
44
+ };
45
+ }),
46
+ };
47
+ }
48
+ createHeaderImageComponent(headerVariables, locale) {
49
+ var _a, _b;
50
+ return {
51
+ type: WhatsAppTemplateComponentType.HEADER,
52
+ parameters: [
53
+ {
54
+ type: WhatsAppTemplateParameterType.IMAGE,
55
+ image: {
56
+ link: ((_b = (_a = headerVariables.media) === null || _a === void 0 ? void 0 : _a.find(m => m.locale === locale)) === null || _b === void 0 ? void 0 : _b.file) || '',
57
+ },
58
+ },
59
+ ],
60
+ };
61
+ }
62
+ // TODO: To use named variables (contact_info_fields) we need to take it from request.session.user.contact_info, this only be able in toBotonic method
63
+ getBodyComponent(variableValues, request) {
64
+ return {
65
+ type: WhatsAppTemplateComponentType.BODY,
66
+ parameters: Object.entries(variableValues).map(([key, value]) => {
67
+ const valueVariable = this.replaceVariables(value, request);
68
+ return {
69
+ type: WhatsAppTemplateParameterType.TEXT,
70
+ parameter_name: key,
71
+ text: valueVariable,
72
+ };
73
+ }),
74
+ };
75
+ }
76
+ getButtons(whatsappTemplate, buttonNodes, urlVariableValues, request) {
77
+ const htWhatsappTemplateButtons = whatsappTemplate.components.find(component => component.type === WhatsAppTemplateComponentType.BUTTONS);
78
+ if (htWhatsappTemplateButtons) {
79
+ const buttons = htWhatsappTemplateButtons.buttons
80
+ .map((button, index) => {
81
+ var _a;
82
+ if (button.type === WhatsAppTemplateButtonSubType.URL) {
83
+ const urlParam = urlVariableValues === null || urlVariableValues === void 0 ? void 0 : urlVariableValues[String(index)];
84
+ if (!urlParam) {
85
+ return null;
86
+ }
87
+ return this.createUrlButtonComponent(index, urlParam, request);
88
+ }
89
+ if (button.type === WhatsAppTemplateButtonSubType.QUICK_REPLY) {
90
+ const payload = ((_a = buttonNodes[index].target) === null || _a === void 0 ? void 0 : _a.id) || '';
91
+ return this.createQuickReplyButtonComponent(index, payload);
92
+ }
93
+ return this.createVoiceCallButtonComponent(index);
94
+ })
95
+ .filter(button => button !== null);
96
+ return {
97
+ type: WhatsAppTemplateComponentType.BUTTONS,
98
+ buttons: buttons,
99
+ };
100
+ }
101
+ return undefined;
102
+ }
103
+ createUrlButtonComponent(index, urlParam, request) {
104
+ const variableUrlParam = this.replaceVariables(urlParam, request);
105
+ return {
106
+ type: WhatsAppTemplateComponentType.BUTTON,
107
+ sub_type: WhatsAppTemplateButtonSubType.URL,
108
+ index: index,
109
+ parameters: urlParam
110
+ ? [
111
+ {
112
+ type: WhatsAppTemplateParameterType.TEXT,
113
+ text: variableUrlParam,
114
+ },
115
+ ]
116
+ : [],
117
+ };
118
+ }
119
+ createQuickReplyButtonComponent(index, payload) {
120
+ return {
121
+ type: WhatsAppTemplateComponentType.BUTTON,
122
+ sub_type: WhatsAppTemplateButtonSubType.QUICK_REPLY,
123
+ index: index,
124
+ parameters: [
125
+ {
126
+ type: WhatsAppTemplateParameterType.PAYLOAD,
127
+ payload: payload,
128
+ },
129
+ ],
130
+ };
131
+ }
132
+ createVoiceCallButtonComponent(index) {
133
+ return {
134
+ type: WhatsAppTemplateComponentType.BUTTON,
135
+ sub_type: WhatsAppTemplateButtonSubType.VOICE_CALL,
136
+ index: index,
137
+ parameters: [],
138
+ };
139
+ }
140
+ trackFlow(request) {
141
+ return __awaiter(this, void 0, void 0, function* () {
142
+ yield trackOneContent(request, this);
143
+ });
144
+ }
145
+ toBotonic(id, request) {
146
+ const templateName = this.htWhatsappTemplate.name;
147
+ const templateLanguage = this.htWhatsappTemplate.language;
148
+ const body = this.getBodyComponent(this.variableValues, request);
149
+ const pluginFlowBuilder = getFlowBuilderPlugin(request.plugins);
150
+ const resolvedLocale = pluginFlowBuilder.cmsApi.getResolvedLocale();
151
+ const header = this.getHeaderComponent(this.htWhatsappTemplate, this.headerVariables || {}, resolvedLocale, request);
152
+ const buttons = this.getButtons(this.htWhatsappTemplate, this.buttons || [], this.urlVariableValues || {}, request);
153
+ console.log('toBotonic templateName', templateName);
154
+ console.log('toBotonic templateLanguage', templateLanguage);
155
+ console.log('toBotonic resolvedLocale', resolvedLocale);
156
+ console.log('toBotonic header', JSON.stringify(header, null, 2));
157
+ console.log('toBotonic body', JSON.stringify(body, null, 2));
158
+ console.log('toBotonic buttons', JSON.stringify(buttons, null, 2));
159
+ if (isWhatsapp(request.session)) {
160
+ return (_jsx(WhatsappTemplate, { name: templateName, language: templateLanguage, header: header, body: body, buttons: buttons }, id));
161
+ }
162
+ return (_jsxs(Text, { children: [`WhatsApp Template: ${templateName} (${templateLanguage})`, header && `${JSON.stringify(header, null, 2)}`, body && `${JSON.stringify(body, null, 2)}`, buttons && `${JSON.stringify(buttons, null, 2)}`] }, id));
163
+ }
164
+ }
165
+ //# sourceMappingURL=flow-whatsapp-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow-whatsapp-template.js","sourceRoot":"","sources":["../../../src/content-fields/flow-whatsapp-template.tsx"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@ export interface HtFlowBuilderData {
12
12
  nodes: HtNodeComponent[];
13
13
  flows: HtFlows[];
14
14
  webviews: HtFlowWebview[];
15
+ campaigns: HtCampaign[];
15
16
  }
16
17
  export interface HtFlows {
17
18
  id: string;
@@ -23,6 +24,11 @@ export interface HtFlowWebview {
23
24
  name: string;
24
25
  component_name: string;
25
26
  }
27
+ export interface HtCampaign {
28
+ id: string;
29
+ name: string;
30
+ start_node_id: string;
31
+ }
26
32
  export interface HtNodeLink {
27
33
  id: string;
28
34
  type: HtNodeWithContentType | HtNodeWithoutContentType;
@@ -20,3 +20,4 @@ export * from './video';
20
20
  export * from './webview';
21
21
  export * from './whatsapp-button-list';
22
22
  export * from './whatsapp-cta-url-button';
23
+ export * from './whatsapp-template';
@@ -20,4 +20,5 @@ export * from './video';
20
20
  export * from './webview';
21
21
  export * from './whatsapp-button-list';
22
22
  export * from './whatsapp-cta-url-button';
23
+ export * from './whatsapp-template';
23
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/content-fields/hubtype-fields/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,kBAAkB,CAAA;AAChC,cAAc,cAAc,CAAA;AAC5B,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,QAAQ,CAAA;AACtB,cAAc,OAAO,CAAA;AACrB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,wBAAwB,CAAA;AACtC,cAAc,2BAA2B,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/content-fields/hubtype-fields/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,kBAAkB,CAAA;AAChC,cAAc,cAAc,CAAA;AAC5B,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,QAAQ,CAAA;AACtB,cAAc,OAAO,CAAA;AACrB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,wBAAwB,CAAA;AACtC,cAAc,2BAA2B,CAAA;AACzC,cAAc,qBAAqB,CAAA"}
@@ -10,6 +10,7 @@ export declare enum HtNodeWithContentType {
10
10
  VIDEO = "video",
11
11
  WHATSAPP_BUTTON_LIST = "whatsapp-button-list",
12
12
  WHATSAPP_CTA_URL_BUTTON = "whatsapp-cta-url-button",
13
+ WHATSAPP_TEMPLATE = "whatsapp-template",
13
14
  KNOWLEDGE_BASE = "knowledge-base",
14
15
  BOT_ACTION = "bot-action",
15
16
  AI_AGENT = "ai-agent",
@@ -11,6 +11,7 @@ export var HtNodeWithContentType;
11
11
  HtNodeWithContentType["VIDEO"] = "video";
12
12
  HtNodeWithContentType["WHATSAPP_BUTTON_LIST"] = "whatsapp-button-list";
13
13
  HtNodeWithContentType["WHATSAPP_CTA_URL_BUTTON"] = "whatsapp-cta-url-button";
14
+ HtNodeWithContentType["WHATSAPP_TEMPLATE"] = "whatsapp-template";
14
15
  HtNodeWithContentType["KNOWLEDGE_BASE"] = "knowledge-base";
15
16
  HtNodeWithContentType["BOT_ACTION"] = "bot-action";
16
17
  HtNodeWithContentType["AI_AGENT"] = "ai-agent";
@@ -1 +1 @@
1
- {"version":3,"file":"node-types.js","sourceRoot":"","sources":["../../../../src/content-fields/hubtype-fields/node-types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,qBAkBX;AAlBD,WAAY,qBAAqB;IAC/B,8CAAqB,CAAA;IACrB,4CAAmB,CAAA;IACnB,wCAAe,CAAA;IACf,sCAAa,CAAA;IACb,4CAAmB,CAAA;IACnB,sDAA6B,CAAA;IAC7B,8CAAqB,CAAA;IACrB,8CAAqB,CAAA;IACrB,wCAAe,CAAA;IACf,sEAA6C,CAAA;IAC7C,4EAAmD,CAAA;IACnD,0DAAiC,CAAA;IACjC,kDAAyB,CAAA;IACzB,8CAAqB,CAAA;IACrB,0CAAiB,CAAA;IACjB,4CAAmB,CAAA;IACnB,kDAAyB,CAAA;AAC3B,CAAC,EAlBW,qBAAqB,KAArB,qBAAqB,QAkBhC;AAED,MAAM,CAAN,IAAY,wBAGX;AAHD,WAAY,wBAAwB;IAClC,uCAAW,CAAA;IACX,+CAAmB,CAAA;AACrB,CAAC,EAHW,wBAAwB,KAAxB,wBAAwB,QAGnC;AAED,MAAM,CAAN,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,kCAAiB,CAAA;IACjB,4CAA2B,CAAA;AAC7B,CAAC,EAHW,aAAa,KAAb,aAAa,QAGxB"}
1
+ {"version":3,"file":"node-types.js","sourceRoot":"","sources":["../../../../src/content-fields/hubtype-fields/node-types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,qBAmBX;AAnBD,WAAY,qBAAqB;IAC/B,8CAAqB,CAAA;IACrB,4CAAmB,CAAA;IACnB,wCAAe,CAAA;IACf,sCAAa,CAAA;IACb,4CAAmB,CAAA;IACnB,sDAA6B,CAAA;IAC7B,8CAAqB,CAAA;IACrB,8CAAqB,CAAA;IACrB,wCAAe,CAAA;IACf,sEAA6C,CAAA;IAC7C,4EAAmD,CAAA;IACnD,gEAAuC,CAAA;IACvC,0DAAiC,CAAA;IACjC,kDAAyB,CAAA;IACzB,8CAAqB,CAAA;IACrB,0CAAiB,CAAA;IACjB,4CAAmB,CAAA;IACnB,kDAAyB,CAAA;AAC3B,CAAC,EAnBW,qBAAqB,KAArB,qBAAqB,QAmBhC;AAED,MAAM,CAAN,IAAY,wBAGX;AAHD,WAAY,wBAAwB;IAClC,uCAAW,CAAA;IACX,+CAAmB,CAAA;AACrB,CAAC,EAHW,wBAAwB,KAAxB,wBAAwB,QAGnC;AAED,MAAM,CAAN,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,kCAAiB,CAAA;IACjB,4CAA2B,CAAA;AAC7B,CAAC,EAHW,aAAa,KAAb,aAAa,QAGxB"}
@@ -17,6 +17,7 @@ import { HtVideoNode } from './video';
17
17
  import { HtWebviewNode } from './webview';
18
18
  import { HtWhatsappButtonListNode } from './whatsapp-button-list';
19
19
  import { HtWhatsappCTAUrlButtonNode } from './whatsapp-cta-url-button';
20
- export type HtNodeWithContent = HtTextNode | HtImageNode | HtVideoNode | HtCarouselNode | HtHandoffNode | HtKeywordNode | HtFunctionNode | HtFallbackNode | HtWhatsappButtonListNode | HtWhatsappCTAUrlButtonNode | HtSmartIntentNode | HtKnowledgeBaseNode | HtBotActionNode | HtAiAgentNode | HtRatingNode | HtWebviewNode | HtGoToFlow;
20
+ import { HtWhatsappTemplateNode } from './whatsapp-template';
21
+ export type HtNodeWithContent = HtTextNode | HtImageNode | HtVideoNode | HtCarouselNode | HtHandoffNode | HtKeywordNode | HtFunctionNode | HtFallbackNode | HtWhatsappButtonListNode | HtWhatsappCTAUrlButtonNode | HtSmartIntentNode | HtKnowledgeBaseNode | HtBotActionNode | HtAiAgentNode | HtRatingNode | HtWebviewNode | HtGoToFlow | HtWhatsappTemplateNode;
21
22
  export type HtNodeWithoutContent = HtUrlNode | HtPayloadNode;
22
23
  export type HtNodeComponent = HtNodeWithContent | HtNodeWithoutContent;
@@ -0,0 +1,66 @@
1
+ import { WhatsAppTemplateButtonSubType, WhatsAppTemplateComponentType, WhatsAppTemplateParameterType } from '@botonic/react';
2
+ import { HtButton } from './button';
3
+ import { HtBaseNode, HtMediaFileLocale } from './common';
4
+ import { HtNodeWithContentType } from './node-types';
5
+ type HtWhatsAppTemplateButton = {
6
+ type: WhatsAppTemplateButtonSubType.URL;
7
+ text: string;
8
+ url?: string;
9
+ index: number;
10
+ } | {
11
+ type: WhatsAppTemplateButtonSubType.QUICK_REPLY;
12
+ text: string;
13
+ id: string;
14
+ index: number;
15
+ } | {
16
+ type: WhatsAppTemplateButtonSubType.PHONE_NUMBER;
17
+ text: string;
18
+ phone_number: string;
19
+ index: number;
20
+ };
21
+ export interface HtWhatsAppTemplateHeaderComponent {
22
+ type: WhatsAppTemplateComponentType.HEADER;
23
+ format: WhatsAppTemplateParameterType.TEXT | WhatsAppTemplateParameterType.IMAGE;
24
+ text?: string;
25
+ image?: {
26
+ link: string;
27
+ };
28
+ }
29
+ export interface HtWhatsAppTemplateBodyComponent {
30
+ type: WhatsAppTemplateComponentType.BODY;
31
+ text: string;
32
+ }
33
+ export interface HtWhatsAppTemplateFooterComponent {
34
+ type: WhatsAppTemplateComponentType.FOOTER;
35
+ text: string;
36
+ }
37
+ export interface HtWhatsAppTemplateButtonsComponent {
38
+ type: WhatsAppTemplateComponentType.BUTTONS;
39
+ buttons: HtWhatsAppTemplateButton[];
40
+ }
41
+ export type HtWhatsAppTemplateComponent = HtWhatsAppTemplateHeaderComponent | HtWhatsAppTemplateBodyComponent | HtWhatsAppTemplateFooterComponent | HtWhatsAppTemplateButtonsComponent;
42
+ export interface HtWhatsAppTemplate {
43
+ id: string;
44
+ name: string;
45
+ language: string;
46
+ status: string;
47
+ category: string;
48
+ components: HtWhatsAppTemplateComponent[];
49
+ namespace: string;
50
+ parameter_format: string;
51
+ }
52
+ export interface HtWhatsappTemplateNode extends HtBaseNode {
53
+ type: HtNodeWithContentType.WHATSAPP_TEMPLATE;
54
+ content: {
55
+ template: HtWhatsAppTemplate;
56
+ header_variables?: {
57
+ type: WhatsAppTemplateParameterType;
58
+ text?: Record<string, string>;
59
+ media?: HtMediaFileLocale[];
60
+ };
61
+ variable_values: Record<string, string>;
62
+ buttons: HtButton[];
63
+ url_variable_values?: Record<string, string>;
64
+ };
65
+ }
66
+ export {};
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=whatsapp-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whatsapp-template.js","sourceRoot":"","sources":["../../../../src/content-fields/hubtype-fields/whatsapp-template.ts"],"names":[],"mappings":""}
@@ -13,10 +13,11 @@ import { FlowRating } from './flow-rating';
13
13
  import { FlowText } from './flow-text';
14
14
  import { FlowVideo } from './flow-video';
15
15
  import { FlowWhatsappCtaUrlButtonNode } from './flow-whatsapp-cta-url-button';
16
+ import { FlowWhatsappTemplate } from './flow-whatsapp-template';
16
17
  import { FlowWhatsappButtonList } from './whatsapp-button-list/flow-whatsapp-button-list';
17
18
  export { ContentFieldsBase } from './content-fields-base';
18
19
  export { FlowButton } from './flow-button';
19
20
  export { FlowElement } from './flow-element';
20
- export { FlowAiAgent, FlowBotAction, FlowCarousel, FlowChannelConditional, FlowCountryConditional, FlowCustomConditional, FlowGoToFlow, FlowHandoff, FlowImage, FlowKnowledgeBase, FlowQueueStatusConditional, FlowRating, FlowText, FlowVideo, FlowWhatsappButtonList, FlowWhatsappCtaUrlButtonNode, };
21
- export type FlowContent = FlowCarousel | FlowImage | FlowText | FlowVideo | FlowWhatsappButtonList | FlowWhatsappCtaUrlButtonNode | FlowHandoff | FlowKnowledgeBase | FlowBotAction | FlowAiAgent | FlowRating | FlowCountryConditional | FlowChannelConditional | FlowQueueStatusConditional | FlowCustomConditional | FlowGoToFlow;
21
+ export { FlowAiAgent, FlowBotAction, FlowCarousel, FlowChannelConditional, FlowCountryConditional, FlowCustomConditional, FlowGoToFlow, FlowHandoff, FlowImage, FlowKnowledgeBase, FlowQueueStatusConditional, FlowRating, FlowText, FlowVideo, FlowWhatsappButtonList, FlowWhatsappCtaUrlButtonNode, FlowWhatsappTemplate, };
22
+ export type FlowContent = FlowCarousel | FlowImage | FlowText | FlowVideo | FlowWhatsappButtonList | FlowWhatsappCtaUrlButtonNode | FlowWhatsappTemplate | FlowHandoff | FlowKnowledgeBase | FlowBotAction | FlowAiAgent | FlowRating | FlowCountryConditional | FlowChannelConditional | FlowQueueStatusConditional | FlowCustomConditional | FlowGoToFlow;
22
23
  export { DISABLED_MEMORY_LENGTH };
@@ -13,10 +13,11 @@ import { FlowRating } from './flow-rating';
13
13
  import { FlowText } from './flow-text';
14
14
  import { FlowVideo } from './flow-video';
15
15
  import { FlowWhatsappCtaUrlButtonNode } from './flow-whatsapp-cta-url-button';
16
+ import { FlowWhatsappTemplate } from './flow-whatsapp-template';
16
17
  import { FlowWhatsappButtonList } from './whatsapp-button-list/flow-whatsapp-button-list';
17
18
  export { ContentFieldsBase } from './content-fields-base';
18
19
  export { FlowButton } from './flow-button';
19
20
  export { FlowElement } from './flow-element';
20
- export { FlowAiAgent, FlowBotAction, FlowCarousel, FlowChannelConditional, FlowCountryConditional, FlowCustomConditional, FlowGoToFlow, FlowHandoff, FlowImage, FlowKnowledgeBase, FlowQueueStatusConditional, FlowRating, FlowText, FlowVideo, FlowWhatsappButtonList, FlowWhatsappCtaUrlButtonNode, };
21
+ export { FlowAiAgent, FlowBotAction, FlowCarousel, FlowChannelConditional, FlowCountryConditional, FlowCustomConditional, FlowGoToFlow, FlowHandoff, FlowImage, FlowKnowledgeBase, FlowQueueStatusConditional, FlowRating, FlowText, FlowVideo, FlowWhatsappButtonList, FlowWhatsappCtaUrlButtonNode, FlowWhatsappTemplate, };
21
22
  export { DISABLED_MEMORY_LENGTH };
22
23
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/content-fields/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EACL,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAA;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAA;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,kDAAkD,CAAA;AAEzF,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EACL,WAAW,EACX,aAAa,EACb,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,YAAY,EACZ,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,0BAA0B,EAC1B,UAAU,EACV,QAAQ,EACR,SAAS,EACT,sBAAsB,EACtB,4BAA4B,GAC7B,CAAA;AAoBD,OAAO,EAAE,sBAAsB,EAAE,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/content-fields/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EACL,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAA;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAA;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,kDAAkD,CAAA;AAEzF,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EACL,WAAW,EACX,aAAa,EACb,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,YAAY,EACZ,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,0BAA0B,EAC1B,UAAU,EACV,QAAQ,EACR,SAAS,EACT,sBAAsB,EACtB,4BAA4B,EAC5B,oBAAoB,GACrB,CAAA;AAqBD,OAAO,EAAE,sBAAsB,EAAE,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import { __awaiter } from "tslib";
2
- import { FlowAiAgent, FlowBotAction, FlowCarousel, FlowChannelConditional, FlowCountryConditional, FlowCustomConditional, FlowGoToFlow, FlowHandoff, FlowImage, FlowKnowledgeBase, FlowQueueStatusConditional, FlowRating, FlowText, FlowVideo, FlowWhatsappButtonList, FlowWhatsappCtaUrlButtonNode, } from './content-fields';
2
+ import { FlowAiAgent, FlowBotAction, FlowCarousel, FlowChannelConditional, FlowCountryConditional, FlowCustomConditional, FlowGoToFlow, FlowHandoff, FlowImage, FlowKnowledgeBase, FlowQueueStatusConditional, FlowRating, FlowText, FlowVideo, FlowWhatsappButtonList, FlowWhatsappCtaUrlButtonNode, FlowWhatsappTemplate, } from './content-fields';
3
3
  import { HtNodeWithContentType, } from './content-fields/hubtype-fields';
4
4
  export class FlowFactory {
5
5
  constructor(request, cmsApi, locale) {
@@ -36,6 +36,8 @@ export class FlowFactory {
36
36
  return this.resolveFlowFunctionContent(hubtypeContent);
37
37
  case HtNodeWithContentType.GO_TO_FLOW:
38
38
  return FlowGoToFlow.fromHubtypeCMS(hubtypeContent, this.cmsApi);
39
+ case HtNodeWithContentType.WHATSAPP_TEMPLATE:
40
+ return FlowWhatsappTemplate.fromHubtypeCMS(hubtypeContent);
39
41
  default:
40
42
  return undefined;
41
43
  }
@@ -1 +1 @@
1
- {"version":3,"file":"flow-factory.js","sourceRoot":"","sources":["../../src/flow-factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"flow-factory.js","sourceRoot":"","sources":["../../src/flow-factory.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@botonic/plugin-flow-builder",
3
- "version": "0.42.4",
3
+ "version": "0.43.0-alpha.0",
4
4
  "main": "./lib/cjs/index.js",
5
5
  "module": "./lib/esm/index.js",
6
6
  "description": "Use Flow Builder to show your contents",
@@ -14,7 +14,7 @@
14
14
  "lint_core": "../../node_modules/.bin/eslint_d --cache --quiet 'src/**/*.ts*'"
15
15
  },
16
16
  "dependencies": {
17
- "@botonic/react": "^0.42.0",
17
+ "@botonic/react": "0.43.0-alpha.0",
18
18
  "axios": "^1.12.2",
19
19
  "uuid": "^10.0.0"
20
20
  },
@@ -50,4 +50,4 @@
50
50
  "devDependencies": {
51
51
  "@types/uuid": "^10.0.0"
52
52
  }
53
- }
53
+ }
@@ -1,7 +1,11 @@
1
1
  import { EventAction, EventFeedback, storeCaseRating } from '@botonic/core'
2
2
  import { v7 as uuid } from 'uuid'
3
3
 
4
- import { AGENT_RATING_PAYLOAD } from '../constants'
4
+ import {
5
+ AGENT_RATING_PAYLOAD,
6
+ PUSH_FLOW_PAYLOAD,
7
+ SEPARATOR,
8
+ } from '../constants'
5
9
  import { FlowContent } from '../content-fields'
6
10
  import { HtNodeWithContent } from '../content-fields/hubtype-fields'
7
11
  import { trackEvent } from '../tracking'
@@ -14,6 +18,9 @@ export async function getContentsByPayload(
14
18
  if (request.input.payload?.startsWith(AGENT_RATING_PAYLOAD)) {
15
19
  return await resolveRatingPayload(context)
16
20
  }
21
+ if (request.input.payload?.startsWith(PUSH_FLOW_PAYLOAD)) {
22
+ return await resolvePushFlowPayload(context)
23
+ }
17
24
 
18
25
  const id = contentID
19
26
  ? cmsApi.getNodeByContentID(contentID)?.id
@@ -64,3 +71,27 @@ async function resolveRatingPayload(
64
71
 
65
72
  return []
66
73
  }
74
+
75
+ async function resolvePushFlowPayload(
76
+ context: FlowBuilderContext
77
+ ): Promise<FlowContent[]> {
78
+ const { cmsApi, flowBuilderPlugin, request } = context
79
+
80
+ if (!request.input.payload) {
81
+ return []
82
+ }
83
+
84
+ const pushFlowId = request.input.payload.split(SEPARATOR)[1] || ''
85
+
86
+ if (!pushFlowId) {
87
+ return []
88
+ }
89
+
90
+ const pushFlowNode = cmsApi.getNodeByCampaignId<HtNodeWithContent>(pushFlowId)
91
+
92
+ if (!pushFlowNode) {
93
+ return []
94
+ }
95
+
96
+ return await flowBuilderPlugin.getContentsByNode(pushFlowNode)
97
+ }
package/src/api.ts CHANGED
@@ -73,6 +73,12 @@ export class FlowBuilderApi {
73
73
  return this.getNodeById<HtNodeWithContent>(subFlow.start_node_id)
74
74
  }
75
75
 
76
+ getNodeByCampaignId<T extends HtNodeComponent>(id: string): T {
77
+ const campaign = this.flow.campaigns.find(campaign => campaign.id === id)
78
+ if (!campaign) throw Error(`Campaign with id: '${id}' not found`)
79
+ return this.getNodeById<T>(campaign.start_node_id)
80
+ }
81
+
76
82
  getNodeById<T extends HtNodeComponent>(id: string): T {
77
83
  const node = this.flow.nodes.find(node => node.id === id)
78
84
  if (!node) console.error(`Node with id: '${id}' not found`)
@@ -215,7 +221,14 @@ export class FlowBuilderApi {
215
221
 
216
222
  getFlowName(flowId: string): string {
217
223
  const flow = this.flow.flows.find(flow => flow.id === flowId)
218
- return flow ? flow.name : ''
224
+ return flow ? flow.name : this.getCampaignFlowName(flowId)
225
+ }
226
+
227
+ getCampaignFlowName(campaignId: string): string {
228
+ const campaign = this.flow.campaigns.find(
229
+ campaign => campaign.id === campaignId
230
+ )
231
+ return campaign ? campaign.name : ''
219
232
  }
220
233
 
221
234
  getStartNodeKnowledgeBaseFlow(): HtNodeWithContent | undefined {
package/src/constants.ts CHANGED
@@ -3,7 +3,7 @@ export const FLOW_BUILDER_API_URL_PROD =
3
3
  export const SEPARATOR = '|'
4
4
  export const SOURCE_INFO_SEPARATOR = `${SEPARATOR}source_`
5
5
  export const EMPTY_PAYLOAD = 'fb-empty-payload'
6
- export const VARIABLE_PATTERN = /{([^}]+)}/g
6
+ export const VARIABLE_PATTERN_GLOBAL = /{([^}]+)}/g
7
7
  export const ACCESS_TOKEN_VARIABLE_KEY = '_access_token'
8
8
  export const REG_EXP_PATTERN = /^\/(.*)\/([gimyus]*)$/
9
9
  export const UUID_REGEXP =
@@ -11,6 +11,7 @@ export const UUID_REGEXP =
11
11
 
12
12
  /* ********** PAYLOADS ********** */
13
13
  export const AGENT_RATING_PAYLOAD = 'agent-rating'
14
+ export const PUSH_FLOW_PAYLOAD = 'push-flow'
14
15
 
15
16
  /* ********** FLOW NAMES ********** */
16
17
  export const MAIN_FLOW_NAME = 'Main'
@@ -1,5 +1,10 @@
1
1
  import { ActionRequest } from '@botonic/react'
2
2
 
3
+ import {
4
+ ACCESS_TOKEN_VARIABLE_KEY,
5
+ VARIABLE_PATTERN_GLOBAL,
6
+ } from '../constants'
7
+ import { getValueFromKeyPath } from '../utils'
3
8
  import {
4
9
  HtMediaFileLocale,
5
10
  HtNodeLink,
@@ -37,4 +42,30 @@ export abstract class ContentFieldsBase {
37
42
  ): HtQueueLocale | undefined {
38
43
  return queues.find(queue => queue.locale === locale)
39
44
  }
45
+
46
+ replaceVariables(text: string, request: ActionRequest): string {
47
+ const matches = text.match(VARIABLE_PATTERN_GLOBAL)
48
+
49
+ let replacedText = text
50
+ if (matches && request) {
51
+ matches.forEach(match => {
52
+ const keyPath = match.slice(1, -1)
53
+ const botVariable = keyPath.endsWith(ACCESS_TOKEN_VARIABLE_KEY)
54
+ ? match
55
+ : getValueFromKeyPath(request, keyPath)
56
+ // TODO In local if change variable and render multiple times the value is always the last update
57
+ replacedText = replacedText.replace(
58
+ match,
59
+ this.isValidType(botVariable) ? botVariable : match
60
+ )
61
+ })
62
+ }
63
+
64
+ return replacedText
65
+ }
66
+
67
+ private isValidType(botVariable: any): boolean {
68
+ const validTypes = ['boolean', 'string', 'number']
69
+ return validTypes.includes(typeof botVariable)
70
+ }
40
71
  }
@@ -92,8 +92,11 @@ export class FlowButton extends ContentFieldsBase {
92
92
  }): FlowButton {
93
93
  const newButton = new FlowButton(button.id)
94
94
  newButton.text = button.text
95
- newButton.payload = button.payload
96
- newButton.url = button.url
95
+ if (button.url) {
96
+ newButton.url = button.url
97
+ } else {
98
+ newButton.payload = button.payload
99
+ }
97
100
  return newButton
98
101
  }
99
102
 
@@ -7,7 +7,7 @@ import {
7
7
  ACCESS_TOKEN_VARIABLE_KEY,
8
8
  EMPTY_PAYLOAD,
9
9
  SOURCE_INFO_SEPARATOR,
10
- VARIABLE_PATTERN,
10
+ VARIABLE_PATTERN_GLOBAL,
11
11
  } from '../constants'
12
12
  import { trackOneContent } from '../tracking'
13
13
  import { getValueFromKeyPath } from '../utils'
@@ -37,32 +37,6 @@ export class FlowText extends ContentFieldsBase {
37
37
  return newText
38
38
  }
39
39
 
40
- static replaceVariables(text: string, request: ActionRequest): string {
41
- const matches = text.match(VARIABLE_PATTERN)
42
-
43
- let replacedText = text
44
- if (matches && request) {
45
- matches.forEach(match => {
46
- const keyPath = match.slice(1, -1)
47
- const botVariable = keyPath.endsWith(ACCESS_TOKEN_VARIABLE_KEY)
48
- ? match
49
- : getValueFromKeyPath(request, keyPath)
50
- // TODO In local if change variable and render multiple times the value is always the last update
51
- replacedText = replacedText.replace(
52
- match,
53
- this.isValidType(botVariable) ? botVariable : match
54
- )
55
- })
56
- }
57
-
58
- return replacedText
59
- }
60
-
61
- private static isValidType(botVariable: any): boolean {
62
- const validTypes = ['boolean', 'string', 'number']
63
- return validTypes.includes(typeof botVariable)
64
- }
65
-
66
40
  async trackFlow(request: ActionRequest): Promise<void> {
67
41
  await trackOneContent(request, this)
68
42
  for (const button of this.buttons) {
@@ -97,7 +71,7 @@ export class FlowText extends ContentFieldsBase {
97
71
  }
98
72
 
99
73
  toBotonic(id: string, request: ActionRequest): JSX.Element {
100
- const replacedText = FlowText.replaceVariables(this.text, request)
74
+ const replacedText = this.replaceVariables(this.text, request)
101
75
  return (
102
76
  <Text key={id}>
103
77
  {replacedText}