@botonic/plugin-flow-builder 0.58.0-alpha.2 → 0.58.0-alpha.4

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 (257) hide show
  1. package/lib/cjs/action/contents-result.d.ts +0 -1
  2. package/lib/cjs/action/get-contents.js +0 -1
  3. package/lib/cjs/action/get-contents.js.map +1 -1
  4. package/lib/cjs/action/index.d.ts +1 -2
  5. package/lib/cjs/action/index.js +15 -11
  6. package/lib/cjs/action/index.js.map +1 -1
  7. package/lib/cjs/action/push-flow-resolver.js +1 -2
  8. package/lib/cjs/action/push-flow-resolver.js.map +1 -1
  9. package/lib/cjs/api.d.ts +0 -1
  10. package/lib/cjs/api.js +0 -3
  11. package/lib/cjs/api.js.map +1 -1
  12. package/lib/cjs/bot-context-manager.d.ts +3 -1
  13. package/lib/cjs/bot-context-manager.js +4 -2
  14. package/lib/cjs/bot-context-manager.js.map +1 -1
  15. package/lib/cjs/campaign-execution.d.ts +12 -0
  16. package/lib/cjs/campaign-execution.js +37 -0
  17. package/lib/cjs/campaign-execution.js.map +1 -0
  18. package/lib/cjs/content-fields/content-fields-base.d.ts +1 -0
  19. package/lib/cjs/content-fields/content-fields-base.js.map +1 -1
  20. package/lib/cjs/content-fields/custom-conditional/flow-custom-condition-v2.d.ts +1 -0
  21. package/lib/cjs/content-fields/custom-conditional/flow-custom-condition-v2.js +3 -0
  22. package/lib/cjs/content-fields/custom-conditional/flow-custom-condition-v2.js.map +1 -1
  23. package/lib/cjs/content-fields/flow-ai-agent-base.d.ts +1 -0
  24. package/lib/cjs/content-fields/flow-ai-agent-base.js +3 -0
  25. package/lib/cjs/content-fields/flow-ai-agent-base.js.map +1 -1
  26. package/lib/cjs/content-fields/flow-bot-action.d.ts +1 -0
  27. package/lib/cjs/content-fields/flow-bot-action.js +3 -0
  28. package/lib/cjs/content-fields/flow-bot-action.js.map +1 -1
  29. package/lib/cjs/content-fields/flow-button.d.ts +1 -0
  30. package/lib/cjs/content-fields/flow-button.js +3 -0
  31. package/lib/cjs/content-fields/flow-button.js.map +1 -1
  32. package/lib/cjs/content-fields/flow-capture-user-input.d.ts +1 -0
  33. package/lib/cjs/content-fields/flow-capture-user-input.js +3 -0
  34. package/lib/cjs/content-fields/flow-capture-user-input.js.map +1 -1
  35. package/lib/cjs/content-fields/flow-carousel.d.ts +1 -0
  36. package/lib/cjs/content-fields/flow-carousel.js +3 -0
  37. package/lib/cjs/content-fields/flow-carousel.js.map +1 -1
  38. package/lib/cjs/content-fields/flow-channel-conditional.d.ts +1 -0
  39. package/lib/cjs/content-fields/flow-channel-conditional.js +3 -0
  40. package/lib/cjs/content-fields/flow-channel-conditional.js.map +1 -1
  41. package/lib/cjs/content-fields/flow-contact-reasons-conditional.d.ts +1 -0
  42. package/lib/cjs/content-fields/flow-contact-reasons-conditional.js +3 -0
  43. package/lib/cjs/content-fields/flow-contact-reasons-conditional.js.map +1 -1
  44. package/lib/cjs/content-fields/flow-country-conditional.d.ts +1 -0
  45. package/lib/cjs/content-fields/flow-country-conditional.js +3 -0
  46. package/lib/cjs/content-fields/flow-country-conditional.js.map +1 -1
  47. package/lib/cjs/content-fields/flow-custom-conditional.d.ts +1 -0
  48. package/lib/cjs/content-fields/flow-custom-conditional.js +3 -0
  49. package/lib/cjs/content-fields/flow-custom-conditional.js.map +1 -1
  50. package/lib/cjs/content-fields/flow-do-nothing.d.ts +2 -0
  51. package/lib/cjs/content-fields/flow-do-nothing.js +19 -0
  52. package/lib/cjs/content-fields/flow-do-nothing.js.map +1 -1
  53. package/lib/cjs/content-fields/flow-element.d.ts +1 -0
  54. package/lib/cjs/content-fields/flow-element.js +3 -0
  55. package/lib/cjs/content-fields/flow-element.js.map +1 -1
  56. package/lib/cjs/content-fields/flow-go-to-flow.d.ts +1 -0
  57. package/lib/cjs/content-fields/flow-go-to-flow.js +3 -0
  58. package/lib/cjs/content-fields/flow-go-to-flow.js.map +1 -1
  59. package/lib/cjs/content-fields/flow-handoff.d.ts +2 -0
  60. package/lib/cjs/content-fields/flow-handoff.js +10 -0
  61. package/lib/cjs/content-fields/flow-handoff.js.map +1 -1
  62. package/lib/cjs/content-fields/flow-image.d.ts +1 -0
  63. package/lib/cjs/content-fields/flow-image.js +3 -0
  64. package/lib/cjs/content-fields/flow-image.js.map +1 -1
  65. package/lib/cjs/content-fields/flow-queue-status-conditional.d.ts +1 -0
  66. package/lib/cjs/content-fields/flow-queue-status-conditional.js +3 -0
  67. package/lib/cjs/content-fields/flow-queue-status-conditional.js.map +1 -1
  68. package/lib/cjs/content-fields/flow-rating.d.ts +1 -0
  69. package/lib/cjs/content-fields/flow-rating.js +3 -0
  70. package/lib/cjs/content-fields/flow-rating.js.map +1 -1
  71. package/lib/cjs/content-fields/flow-text.d.ts +1 -0
  72. package/lib/cjs/content-fields/flow-text.js +3 -0
  73. package/lib/cjs/content-fields/flow-text.js.map +1 -1
  74. package/lib/cjs/content-fields/flow-update-variables.d.ts +1 -0
  75. package/lib/cjs/content-fields/flow-update-variables.js +3 -0
  76. package/lib/cjs/content-fields/flow-update-variables.js.map +1 -1
  77. package/lib/cjs/content-fields/flow-video.d.ts +1 -0
  78. package/lib/cjs/content-fields/flow-video.js +3 -0
  79. package/lib/cjs/content-fields/flow-video.js.map +1 -1
  80. package/lib/cjs/content-fields/flow-webview.d.ts +1 -0
  81. package/lib/cjs/content-fields/flow-webview.js +3 -0
  82. package/lib/cjs/content-fields/flow-webview.js.map +1 -1
  83. package/lib/cjs/content-fields/flow-whatsapp-cta-url-button.d.ts +1 -0
  84. package/lib/cjs/content-fields/flow-whatsapp-cta-url-button.js +3 -0
  85. package/lib/cjs/content-fields/flow-whatsapp-cta-url-button.js.map +1 -1
  86. package/lib/cjs/content-fields/flow-whatsapp-request-contact-info.d.ts +1 -0
  87. package/lib/cjs/content-fields/flow-whatsapp-request-contact-info.js +3 -0
  88. package/lib/cjs/content-fields/flow-whatsapp-request-contact-info.js.map +1 -1
  89. package/lib/cjs/content-fields/flow-whatsapp-template.d.ts +1 -0
  90. package/lib/cjs/content-fields/flow-whatsapp-template.js +3 -0
  91. package/lib/cjs/content-fields/flow-whatsapp-template.js.map +1 -1
  92. package/lib/cjs/content-fields/hubtype-fields/handoff.d.ts +3 -1
  93. package/lib/cjs/content-fields/hubtype-fields/handoff.js +1 -0
  94. package/lib/cjs/content-fields/hubtype-fields/handoff.js.map +1 -1
  95. package/lib/cjs/content-fields/whatsapp-button-list/flow-whatsapp-button-list-row.d.ts +1 -0
  96. package/lib/cjs/content-fields/whatsapp-button-list/flow-whatsapp-button-list-row.js +3 -0
  97. package/lib/cjs/content-fields/whatsapp-button-list/flow-whatsapp-button-list-row.js.map +1 -1
  98. package/lib/cjs/content-fields/whatsapp-button-list/flow-whatsapp-button-list-section.d.ts +1 -0
  99. package/lib/cjs/content-fields/whatsapp-button-list/flow-whatsapp-button-list-section.js +3 -0
  100. package/lib/cjs/content-fields/whatsapp-button-list/flow-whatsapp-button-list-section.js.map +1 -1
  101. package/lib/cjs/content-fields/whatsapp-button-list/flow-whatsapp-button-list.d.ts +1 -0
  102. package/lib/cjs/content-fields/whatsapp-button-list/flow-whatsapp-button-list.js +3 -0
  103. package/lib/cjs/content-fields/whatsapp-button-list/flow-whatsapp-button-list.js.map +1 -1
  104. package/lib/cjs/index.d.ts +2 -0
  105. package/lib/cjs/index.js +3 -1
  106. package/lib/cjs/index.js.map +1 -1
  107. package/lib/cjs/services/campaigns-v2-api.d.ts +14 -0
  108. package/lib/cjs/services/campaigns-v2-api.js +30 -0
  109. package/lib/cjs/services/campaigns-v2-api.js.map +1 -0
  110. package/lib/esm/action/contents-result.d.ts +0 -1
  111. package/lib/esm/action/get-contents.js +0 -1
  112. package/lib/esm/action/get-contents.js.map +1 -1
  113. package/lib/esm/action/index.d.ts +1 -2
  114. package/lib/esm/action/index.js +15 -11
  115. package/lib/esm/action/index.js.map +1 -1
  116. package/lib/esm/action/push-flow-resolver.js +1 -2
  117. package/lib/esm/action/push-flow-resolver.js.map +1 -1
  118. package/lib/esm/api.d.ts +0 -1
  119. package/lib/esm/api.js +0 -3
  120. package/lib/esm/api.js.map +1 -1
  121. package/lib/esm/bot-context-manager.d.ts +3 -1
  122. package/lib/esm/bot-context-manager.js +4 -2
  123. package/lib/esm/bot-context-manager.js.map +1 -1
  124. package/lib/esm/campaign-execution.d.ts +12 -0
  125. package/lib/esm/campaign-execution.js +37 -0
  126. package/lib/esm/campaign-execution.js.map +1 -0
  127. package/lib/esm/content-fields/content-fields-base.d.ts +1 -0
  128. package/lib/esm/content-fields/content-fields-base.js.map +1 -1
  129. package/lib/esm/content-fields/custom-conditional/flow-custom-condition-v2.d.ts +1 -0
  130. package/lib/esm/content-fields/custom-conditional/flow-custom-condition-v2.js +3 -0
  131. package/lib/esm/content-fields/custom-conditional/flow-custom-condition-v2.js.map +1 -1
  132. package/lib/esm/content-fields/flow-ai-agent-base.d.ts +1 -0
  133. package/lib/esm/content-fields/flow-ai-agent-base.js +3 -0
  134. package/lib/esm/content-fields/flow-ai-agent-base.js.map +1 -1
  135. package/lib/esm/content-fields/flow-bot-action.d.ts +1 -0
  136. package/lib/esm/content-fields/flow-bot-action.js +3 -0
  137. package/lib/esm/content-fields/flow-bot-action.js.map +1 -1
  138. package/lib/esm/content-fields/flow-button.d.ts +1 -0
  139. package/lib/esm/content-fields/flow-button.js +3 -0
  140. package/lib/esm/content-fields/flow-button.js.map +1 -1
  141. package/lib/esm/content-fields/flow-capture-user-input.d.ts +1 -0
  142. package/lib/esm/content-fields/flow-capture-user-input.js +3 -0
  143. package/lib/esm/content-fields/flow-capture-user-input.js.map +1 -1
  144. package/lib/esm/content-fields/flow-carousel.d.ts +1 -0
  145. package/lib/esm/content-fields/flow-carousel.js +3 -0
  146. package/lib/esm/content-fields/flow-carousel.js.map +1 -1
  147. package/lib/esm/content-fields/flow-channel-conditional.d.ts +1 -0
  148. package/lib/esm/content-fields/flow-channel-conditional.js +3 -0
  149. package/lib/esm/content-fields/flow-channel-conditional.js.map +1 -1
  150. package/lib/esm/content-fields/flow-contact-reasons-conditional.d.ts +1 -0
  151. package/lib/esm/content-fields/flow-contact-reasons-conditional.js +3 -0
  152. package/lib/esm/content-fields/flow-contact-reasons-conditional.js.map +1 -1
  153. package/lib/esm/content-fields/flow-country-conditional.d.ts +1 -0
  154. package/lib/esm/content-fields/flow-country-conditional.js +3 -0
  155. package/lib/esm/content-fields/flow-country-conditional.js.map +1 -1
  156. package/lib/esm/content-fields/flow-custom-conditional.d.ts +1 -0
  157. package/lib/esm/content-fields/flow-custom-conditional.js +3 -0
  158. package/lib/esm/content-fields/flow-custom-conditional.js.map +1 -1
  159. package/lib/esm/content-fields/flow-do-nothing.d.ts +2 -0
  160. package/lib/esm/content-fields/flow-do-nothing.js +19 -0
  161. package/lib/esm/content-fields/flow-do-nothing.js.map +1 -1
  162. package/lib/esm/content-fields/flow-element.d.ts +1 -0
  163. package/lib/esm/content-fields/flow-element.js +3 -0
  164. package/lib/esm/content-fields/flow-element.js.map +1 -1
  165. package/lib/esm/content-fields/flow-go-to-flow.d.ts +1 -0
  166. package/lib/esm/content-fields/flow-go-to-flow.js +3 -0
  167. package/lib/esm/content-fields/flow-go-to-flow.js.map +1 -1
  168. package/lib/esm/content-fields/flow-handoff.d.ts +2 -0
  169. package/lib/esm/content-fields/flow-handoff.js +10 -0
  170. package/lib/esm/content-fields/flow-handoff.js.map +1 -1
  171. package/lib/esm/content-fields/flow-image.d.ts +1 -0
  172. package/lib/esm/content-fields/flow-image.js +3 -0
  173. package/lib/esm/content-fields/flow-image.js.map +1 -1
  174. package/lib/esm/content-fields/flow-queue-status-conditional.d.ts +1 -0
  175. package/lib/esm/content-fields/flow-queue-status-conditional.js +3 -0
  176. package/lib/esm/content-fields/flow-queue-status-conditional.js.map +1 -1
  177. package/lib/esm/content-fields/flow-rating.d.ts +1 -0
  178. package/lib/esm/content-fields/flow-rating.js +3 -0
  179. package/lib/esm/content-fields/flow-rating.js.map +1 -1
  180. package/lib/esm/content-fields/flow-text.d.ts +1 -0
  181. package/lib/esm/content-fields/flow-text.js +3 -0
  182. package/lib/esm/content-fields/flow-text.js.map +1 -1
  183. package/lib/esm/content-fields/flow-update-variables.d.ts +1 -0
  184. package/lib/esm/content-fields/flow-update-variables.js +3 -0
  185. package/lib/esm/content-fields/flow-update-variables.js.map +1 -1
  186. package/lib/esm/content-fields/flow-video.d.ts +1 -0
  187. package/lib/esm/content-fields/flow-video.js +3 -0
  188. package/lib/esm/content-fields/flow-video.js.map +1 -1
  189. package/lib/esm/content-fields/flow-webview.d.ts +1 -0
  190. package/lib/esm/content-fields/flow-webview.js +3 -0
  191. package/lib/esm/content-fields/flow-webview.js.map +1 -1
  192. package/lib/esm/content-fields/flow-whatsapp-cta-url-button.d.ts +1 -0
  193. package/lib/esm/content-fields/flow-whatsapp-cta-url-button.js +3 -0
  194. package/lib/esm/content-fields/flow-whatsapp-cta-url-button.js.map +1 -1
  195. package/lib/esm/content-fields/flow-whatsapp-request-contact-info.d.ts +1 -0
  196. package/lib/esm/content-fields/flow-whatsapp-request-contact-info.js +3 -0
  197. package/lib/esm/content-fields/flow-whatsapp-request-contact-info.js.map +1 -1
  198. package/lib/esm/content-fields/flow-whatsapp-template.d.ts +1 -0
  199. package/lib/esm/content-fields/flow-whatsapp-template.js +3 -0
  200. package/lib/esm/content-fields/flow-whatsapp-template.js.map +1 -1
  201. package/lib/esm/content-fields/hubtype-fields/handoff.d.ts +3 -1
  202. package/lib/esm/content-fields/hubtype-fields/handoff.js +1 -0
  203. package/lib/esm/content-fields/hubtype-fields/handoff.js.map +1 -1
  204. package/lib/esm/content-fields/whatsapp-button-list/flow-whatsapp-button-list-row.d.ts +1 -0
  205. package/lib/esm/content-fields/whatsapp-button-list/flow-whatsapp-button-list-row.js +3 -0
  206. package/lib/esm/content-fields/whatsapp-button-list/flow-whatsapp-button-list-row.js.map +1 -1
  207. package/lib/esm/content-fields/whatsapp-button-list/flow-whatsapp-button-list-section.d.ts +1 -0
  208. package/lib/esm/content-fields/whatsapp-button-list/flow-whatsapp-button-list-section.js +3 -0
  209. package/lib/esm/content-fields/whatsapp-button-list/flow-whatsapp-button-list-section.js.map +1 -1
  210. package/lib/esm/content-fields/whatsapp-button-list/flow-whatsapp-button-list.d.ts +1 -0
  211. package/lib/esm/content-fields/whatsapp-button-list/flow-whatsapp-button-list.js +3 -0
  212. package/lib/esm/content-fields/whatsapp-button-list/flow-whatsapp-button-list.js.map +1 -1
  213. package/lib/esm/index.d.ts +2 -0
  214. package/lib/esm/index.js +3 -1
  215. package/lib/esm/index.js.map +1 -1
  216. package/lib/esm/services/campaigns-v2-api.d.ts +14 -0
  217. package/lib/esm/services/campaigns-v2-api.js +30 -0
  218. package/lib/esm/services/campaigns-v2-api.js.map +1 -0
  219. package/package.json +2 -2
  220. package/src/action/contents-result.ts +0 -1
  221. package/src/action/get-contents.ts +0 -1
  222. package/src/action/index.tsx +20 -24
  223. package/src/action/push-flow-resolver.ts +0 -2
  224. package/src/api.ts +1 -10
  225. package/src/bot-context-manager.ts +4 -1
  226. package/src/campaign-execution.ts +51 -0
  227. package/src/content-fields/content-fields-base.ts +2 -0
  228. package/src/content-fields/custom-conditional/flow-custom-condition-v2.tsx +4 -0
  229. package/src/content-fields/flow-ai-agent-base.tsx +4 -0
  230. package/src/content-fields/flow-bot-action.tsx +4 -0
  231. package/src/content-fields/flow-button.tsx +4 -0
  232. package/src/content-fields/flow-capture-user-input.tsx +4 -0
  233. package/src/content-fields/flow-carousel.tsx +4 -0
  234. package/src/content-fields/flow-channel-conditional.tsx +4 -0
  235. package/src/content-fields/flow-contact-reasons-conditional.tsx +4 -0
  236. package/src/content-fields/flow-country-conditional.tsx +4 -0
  237. package/src/content-fields/flow-custom-conditional.tsx +4 -0
  238. package/src/content-fields/flow-do-nothing.tsx +24 -0
  239. package/src/content-fields/flow-element.tsx +4 -0
  240. package/src/content-fields/flow-go-to-flow.tsx +4 -0
  241. package/src/content-fields/flow-handoff.tsx +12 -0
  242. package/src/content-fields/flow-image.tsx +4 -0
  243. package/src/content-fields/flow-queue-status-conditional.tsx +4 -0
  244. package/src/content-fields/flow-rating.tsx +4 -0
  245. package/src/content-fields/flow-text.tsx +4 -0
  246. package/src/content-fields/flow-update-variables.tsx +4 -0
  247. package/src/content-fields/flow-video.tsx +4 -0
  248. package/src/content-fields/flow-webview.tsx +4 -0
  249. package/src/content-fields/flow-whatsapp-cta-url-button.tsx +4 -0
  250. package/src/content-fields/flow-whatsapp-request-contact-info.tsx +4 -0
  251. package/src/content-fields/flow-whatsapp-template.tsx +4 -0
  252. package/src/content-fields/hubtype-fields/handoff.ts +2 -0
  253. package/src/content-fields/whatsapp-button-list/flow-whatsapp-button-list-row.tsx +4 -0
  254. package/src/content-fields/whatsapp-button-list/flow-whatsapp-button-list-section.tsx +4 -0
  255. package/src/content-fields/whatsapp-button-list/flow-whatsapp-button-list.tsx +4 -0
  256. package/src/index.ts +4 -0
  257. package/src/services/campaigns-v2-api.ts +44 -0
@@ -39,6 +39,10 @@ export class FlowRating extends ContentFieldsBase {
39
39
  await trackOneContent(botContext, this)
40
40
  }
41
41
 
42
+ producesBotResponse(): boolean {
43
+ return true
44
+ }
45
+
42
46
  async processContent(botContext: BotContext): Promise<void> {
43
47
  await this.filterContent(botContext, this)
44
48
  await this.trackFlow(botContext)
@@ -70,6 +70,10 @@ export class FlowText extends ContentFieldsBase {
70
70
  )
71
71
  }
72
72
 
73
+ producesBotResponse(): boolean {
74
+ return true
75
+ }
76
+
73
77
  async processContent(botContext: BotContext): Promise<void> {
74
78
  await this.filterContent(botContext, this)
75
79
  await this.trackFlow(botContext)
@@ -174,6 +174,10 @@ export class FlowUpdateVariables extends ContentFieldsBase {
174
174
  await trackEvent(botContext, action, eventArgs)
175
175
  }
176
176
 
177
+ producesBotResponse(): boolean {
178
+ return false
179
+ }
180
+
177
181
  async processContent(botContext: BotContext): Promise<void> {
178
182
  await this.trackFlow(botContext)
179
183
  }
@@ -21,6 +21,10 @@ export class FlowVideo extends ContentFieldsBase {
21
21
  await trackOneContent(botContext, this)
22
22
  }
23
23
 
24
+ producesBotResponse(): boolean {
25
+ return true
26
+ }
27
+
24
28
  async processContent(botContext: BotContext): Promise<void> {
25
29
  await this.filterContent(botContext, this)
26
30
  await this.trackFlow(botContext)
@@ -95,6 +95,10 @@ export class FlowWebview extends ContentFieldsBase {
95
95
  await trackEvent(botContext, action, eventArgs)
96
96
  }
97
97
 
98
+ producesBotResponse(): boolean {
99
+ return false
100
+ }
101
+
98
102
  async processContent(): Promise<void> {
99
103
  return
100
104
  }
@@ -120,6 +120,10 @@ export class FlowWhatsappCtaUrlButtonNode extends ContentFieldsBase {
120
120
  await trackOneContent(botContext, this)
121
121
  }
122
122
 
123
+ producesBotResponse(): boolean {
124
+ return true
125
+ }
126
+
123
127
  async processContent(botContext: BotContext): Promise<void> {
124
128
  await this.filterContent(botContext, this)
125
129
  await this.trackFlow(botContext)
@@ -48,6 +48,10 @@ export class FlowWhatsappRequestContactInfoNode extends ContentFieldsBase {
48
48
  await trackOneContent(botContext, this)
49
49
  }
50
50
 
51
+ producesBotResponse(): boolean {
52
+ return true
53
+ }
54
+
51
55
  async processContent(botContext: BotContext): Promise<void> {
52
56
  await this.filterContent(botContext, this)
53
57
  await this.trackFlow(botContext)
@@ -425,6 +425,10 @@ export class FlowWhatsappTemplate extends ContentFieldsBase {
425
425
  await trackOneContent(botContext, this)
426
426
  }
427
427
 
428
+ producesBotResponse(): boolean {
429
+ return true
430
+ }
431
+
428
432
  async processContent(botContext: BotContext): Promise<void> {
429
433
  await this.filterContent(botContext, this)
430
434
  await this.trackFlow(botContext)
@@ -10,6 +10,7 @@ export enum DiscardType {
10
10
  ByAgent = 'discarded',
11
11
  ByUser = 'discarded_by_user',
12
12
  BySystem = 'discarded_by_system',
13
+ ByBulk = 'discarded_by_bulk',
13
14
  }
14
15
 
15
16
  export interface HtHandoffNode extends HtBaseNode {
@@ -24,5 +25,6 @@ export interface HtHandoffNode extends HtBaseNode {
24
25
  discarded_by_agent?: HtNodeLink
25
26
  discarded_by_user?: HtNodeLink
26
27
  discarded_by_system?: HtNodeLink
28
+ discarded_by_bulk?: HtNodeLink
27
29
  }
28
30
  }
@@ -33,6 +33,10 @@ export class FlowWhatsappButtonListRow extends ContentFieldsBase {
33
33
  return
34
34
  }
35
35
 
36
+ producesBotResponse(): boolean {
37
+ return false
38
+ }
39
+
36
40
  async processContent(): Promise<void> {
37
41
  return
38
42
  }
@@ -32,6 +32,10 @@ export class FlowWhatsappButtonListSection extends ContentFieldsBase {
32
32
  return
33
33
  }
34
34
 
35
+ producesBotResponse(): boolean {
36
+ return false
37
+ }
38
+
35
39
  async processContent(): Promise<void> {
36
40
  return
37
41
  }
@@ -40,6 +40,10 @@ export class FlowWhatsappButtonList extends ContentFieldsBase {
40
40
  await trackOneContent(botContext, this)
41
41
  }
42
42
 
43
+ producesBotResponse(): boolean {
44
+ return true
45
+ }
46
+
43
47
  async processContent(botContext: BotContext): Promise<void> {
44
48
  await this.trackFlow(botContext)
45
49
  await this.filterContent(botContext, this)
package/src/index.ts CHANGED
@@ -8,6 +8,7 @@ import { v7 as uuidv7 } from 'uuid'
8
8
 
9
9
  import { FlowBuilderApi } from './api'
10
10
  import { BotContextManager } from './bot-context-manager'
11
+ import { CampaignExecution } from './campaign-execution'
11
12
  import { FLOW_BUILDER_API_URL_PROD, SEPARATOR } from './constants'
12
13
  import type { FlowContent } from './content-fields'
13
14
  import {
@@ -49,6 +50,7 @@ export default class BotonicPluginFlowBuilder implements Plugin {
49
50
  public apiUrl: string
50
51
  public customRatingMessageEnabled: boolean
51
52
  public disableAIAgentInFirstInteraction: boolean
53
+ public campaignExecution: CampaignExecution
52
54
 
53
55
  constructor(options: BotonicPluginFlowBuilderOptions<ResolvedPlugins, any>) {
54
56
  this.apiUrl = options.apiUrl || FLOW_BUILDER_API_URL_PROD
@@ -91,8 +93,10 @@ export default class BotonicPluginFlowBuilder implements Plugin {
91
93
  accessToken: this.getAccessToken(botContext.session),
92
94
  botContext: this.botContext,
93
95
  })
96
+ this.campaignExecution = new CampaignExecution(botContext)
94
97
 
95
98
  const botContextManager = new BotContextManager(
99
+ this.campaignExecution,
96
100
  this.cmsApi,
97
101
  this.smartIntentsConfig
98
102
  )
@@ -0,0 +1,44 @@
1
+ import type { BotContext } from '@botonic/core'
2
+ import axios from 'axios'
3
+ import { FLOW_BUILDER_API_URL_PROD } from '../constants'
4
+ import { getFlowBuilderPlugin } from '../utils/get-flow-builder-plugin'
5
+
6
+ export type SkipEmptyBotResponseResult = {
7
+ id: string
8
+ status: 'skipped'
9
+ skip_reason: 'empty_bot_response'
10
+ }
11
+
12
+ export class CampaignsV2Api {
13
+ private hubtypeApiUrl: string
14
+ private accessToken: string
15
+ private botId: string
16
+ private chatId: string
17
+
18
+ constructor(botContext: BotContext) {
19
+ this.hubtypeApiUrl =
20
+ botContext.session._hubtype_api ||
21
+ botContext.settings?.HUBTYPE_API_URL ||
22
+ FLOW_BUILDER_API_URL_PROD
23
+ const flowBuilderPlugin = getFlowBuilderPlugin(botContext.plugins)
24
+ this.accessToken = flowBuilderPlugin.getAccessToken(botContext.session)
25
+ this.botId = botContext.session.bot.id
26
+ this.chatId = botContext.session.user.id
27
+ }
28
+
29
+ async skipEmptyBotResponse(
30
+ campaignId: string
31
+ ): Promise<SkipEmptyBotResponseResult> {
32
+ const { data } = await axios.post<SkipEmptyBotResponseResult>(
33
+ `${this.hubtypeApiUrl}/external/v2/conversational_apps/${this.botId}/users/${this.chatId}/skip_campaign/`,
34
+ { campaign_id: campaignId },
35
+ {
36
+ headers: {
37
+ 'Content-Type': 'application/json',
38
+ Authorization: `Bearer ${this.accessToken}`,
39
+ },
40
+ }
41
+ )
42
+ return data
43
+ }
44
+ }