@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.
- package/lib/cjs/action/contents-result.d.ts +0 -1
- package/lib/cjs/action/get-contents.js +0 -1
- package/lib/cjs/action/get-contents.js.map +1 -1
- package/lib/cjs/action/index.d.ts +1 -2
- package/lib/cjs/action/index.js +15 -11
- package/lib/cjs/action/index.js.map +1 -1
- package/lib/cjs/action/push-flow-resolver.js +1 -2
- package/lib/cjs/action/push-flow-resolver.js.map +1 -1
- package/lib/cjs/api.d.ts +0 -1
- package/lib/cjs/api.js +0 -3
- package/lib/cjs/api.js.map +1 -1
- package/lib/cjs/bot-context-manager.d.ts +3 -1
- package/lib/cjs/bot-context-manager.js +4 -2
- package/lib/cjs/bot-context-manager.js.map +1 -1
- package/lib/cjs/campaign-execution.d.ts +12 -0
- package/lib/cjs/campaign-execution.js +37 -0
- package/lib/cjs/campaign-execution.js.map +1 -0
- package/lib/cjs/content-fields/content-fields-base.d.ts +1 -0
- package/lib/cjs/content-fields/content-fields-base.js.map +1 -1
- package/lib/cjs/content-fields/custom-conditional/flow-custom-condition-v2.d.ts +1 -0
- package/lib/cjs/content-fields/custom-conditional/flow-custom-condition-v2.js +3 -0
- package/lib/cjs/content-fields/custom-conditional/flow-custom-condition-v2.js.map +1 -1
- package/lib/cjs/content-fields/flow-ai-agent-base.d.ts +1 -0
- package/lib/cjs/content-fields/flow-ai-agent-base.js +3 -0
- package/lib/cjs/content-fields/flow-ai-agent-base.js.map +1 -1
- package/lib/cjs/content-fields/flow-bot-action.d.ts +1 -0
- package/lib/cjs/content-fields/flow-bot-action.js +3 -0
- package/lib/cjs/content-fields/flow-bot-action.js.map +1 -1
- package/lib/cjs/content-fields/flow-button.d.ts +1 -0
- package/lib/cjs/content-fields/flow-button.js +3 -0
- package/lib/cjs/content-fields/flow-button.js.map +1 -1
- package/lib/cjs/content-fields/flow-capture-user-input.d.ts +1 -0
- package/lib/cjs/content-fields/flow-capture-user-input.js +3 -0
- package/lib/cjs/content-fields/flow-capture-user-input.js.map +1 -1
- package/lib/cjs/content-fields/flow-carousel.d.ts +1 -0
- package/lib/cjs/content-fields/flow-carousel.js +3 -0
- package/lib/cjs/content-fields/flow-carousel.js.map +1 -1
- package/lib/cjs/content-fields/flow-channel-conditional.d.ts +1 -0
- package/lib/cjs/content-fields/flow-channel-conditional.js +3 -0
- package/lib/cjs/content-fields/flow-channel-conditional.js.map +1 -1
- package/lib/cjs/content-fields/flow-contact-reasons-conditional.d.ts +1 -0
- package/lib/cjs/content-fields/flow-contact-reasons-conditional.js +3 -0
- package/lib/cjs/content-fields/flow-contact-reasons-conditional.js.map +1 -1
- package/lib/cjs/content-fields/flow-country-conditional.d.ts +1 -0
- package/lib/cjs/content-fields/flow-country-conditional.js +3 -0
- package/lib/cjs/content-fields/flow-country-conditional.js.map +1 -1
- package/lib/cjs/content-fields/flow-custom-conditional.d.ts +1 -0
- package/lib/cjs/content-fields/flow-custom-conditional.js +3 -0
- package/lib/cjs/content-fields/flow-custom-conditional.js.map +1 -1
- package/lib/cjs/content-fields/flow-do-nothing.d.ts +2 -0
- package/lib/cjs/content-fields/flow-do-nothing.js +19 -0
- package/lib/cjs/content-fields/flow-do-nothing.js.map +1 -1
- package/lib/cjs/content-fields/flow-element.d.ts +1 -0
- package/lib/cjs/content-fields/flow-element.js +3 -0
- package/lib/cjs/content-fields/flow-element.js.map +1 -1
- package/lib/cjs/content-fields/flow-go-to-flow.d.ts +1 -0
- package/lib/cjs/content-fields/flow-go-to-flow.js +3 -0
- package/lib/cjs/content-fields/flow-go-to-flow.js.map +1 -1
- package/lib/cjs/content-fields/flow-handoff.d.ts +2 -0
- package/lib/cjs/content-fields/flow-handoff.js +10 -0
- package/lib/cjs/content-fields/flow-handoff.js.map +1 -1
- package/lib/cjs/content-fields/flow-image.d.ts +1 -0
- package/lib/cjs/content-fields/flow-image.js +3 -0
- package/lib/cjs/content-fields/flow-image.js.map +1 -1
- package/lib/cjs/content-fields/flow-queue-status-conditional.d.ts +1 -0
- package/lib/cjs/content-fields/flow-queue-status-conditional.js +3 -0
- package/lib/cjs/content-fields/flow-queue-status-conditional.js.map +1 -1
- package/lib/cjs/content-fields/flow-rating.d.ts +1 -0
- package/lib/cjs/content-fields/flow-rating.js +3 -0
- package/lib/cjs/content-fields/flow-rating.js.map +1 -1
- package/lib/cjs/content-fields/flow-text.d.ts +1 -0
- package/lib/cjs/content-fields/flow-text.js +3 -0
- package/lib/cjs/content-fields/flow-text.js.map +1 -1
- package/lib/cjs/content-fields/flow-update-variables.d.ts +1 -0
- package/lib/cjs/content-fields/flow-update-variables.js +3 -0
- package/lib/cjs/content-fields/flow-update-variables.js.map +1 -1
- package/lib/cjs/content-fields/flow-video.d.ts +1 -0
- package/lib/cjs/content-fields/flow-video.js +3 -0
- package/lib/cjs/content-fields/flow-video.js.map +1 -1
- package/lib/cjs/content-fields/flow-webview.d.ts +1 -0
- package/lib/cjs/content-fields/flow-webview.js +3 -0
- package/lib/cjs/content-fields/flow-webview.js.map +1 -1
- package/lib/cjs/content-fields/flow-whatsapp-cta-url-button.d.ts +1 -0
- package/lib/cjs/content-fields/flow-whatsapp-cta-url-button.js +3 -0
- package/lib/cjs/content-fields/flow-whatsapp-cta-url-button.js.map +1 -1
- package/lib/cjs/content-fields/flow-whatsapp-request-contact-info.d.ts +1 -0
- package/lib/cjs/content-fields/flow-whatsapp-request-contact-info.js +3 -0
- package/lib/cjs/content-fields/flow-whatsapp-request-contact-info.js.map +1 -1
- package/lib/cjs/content-fields/flow-whatsapp-template.d.ts +1 -0
- package/lib/cjs/content-fields/flow-whatsapp-template.js +3 -0
- package/lib/cjs/content-fields/flow-whatsapp-template.js.map +1 -1
- package/lib/cjs/content-fields/hubtype-fields/handoff.d.ts +3 -1
- package/lib/cjs/content-fields/hubtype-fields/handoff.js +1 -0
- package/lib/cjs/content-fields/hubtype-fields/handoff.js.map +1 -1
- package/lib/cjs/content-fields/whatsapp-button-list/flow-whatsapp-button-list-row.d.ts +1 -0
- package/lib/cjs/content-fields/whatsapp-button-list/flow-whatsapp-button-list-row.js +3 -0
- package/lib/cjs/content-fields/whatsapp-button-list/flow-whatsapp-button-list-row.js.map +1 -1
- package/lib/cjs/content-fields/whatsapp-button-list/flow-whatsapp-button-list-section.d.ts +1 -0
- package/lib/cjs/content-fields/whatsapp-button-list/flow-whatsapp-button-list-section.js +3 -0
- package/lib/cjs/content-fields/whatsapp-button-list/flow-whatsapp-button-list-section.js.map +1 -1
- package/lib/cjs/content-fields/whatsapp-button-list/flow-whatsapp-button-list.d.ts +1 -0
- package/lib/cjs/content-fields/whatsapp-button-list/flow-whatsapp-button-list.js +3 -0
- package/lib/cjs/content-fields/whatsapp-button-list/flow-whatsapp-button-list.js.map +1 -1
- package/lib/cjs/index.d.ts +2 -0
- package/lib/cjs/index.js +3 -1
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/services/campaigns-v2-api.d.ts +14 -0
- package/lib/cjs/services/campaigns-v2-api.js +30 -0
- package/lib/cjs/services/campaigns-v2-api.js.map +1 -0
- package/lib/esm/action/contents-result.d.ts +0 -1
- package/lib/esm/action/get-contents.js +0 -1
- package/lib/esm/action/get-contents.js.map +1 -1
- package/lib/esm/action/index.d.ts +1 -2
- package/lib/esm/action/index.js +15 -11
- package/lib/esm/action/index.js.map +1 -1
- package/lib/esm/action/push-flow-resolver.js +1 -2
- package/lib/esm/action/push-flow-resolver.js.map +1 -1
- package/lib/esm/api.d.ts +0 -1
- package/lib/esm/api.js +0 -3
- package/lib/esm/api.js.map +1 -1
- package/lib/esm/bot-context-manager.d.ts +3 -1
- package/lib/esm/bot-context-manager.js +4 -2
- package/lib/esm/bot-context-manager.js.map +1 -1
- package/lib/esm/campaign-execution.d.ts +12 -0
- package/lib/esm/campaign-execution.js +37 -0
- package/lib/esm/campaign-execution.js.map +1 -0
- package/lib/esm/content-fields/content-fields-base.d.ts +1 -0
- package/lib/esm/content-fields/content-fields-base.js.map +1 -1
- package/lib/esm/content-fields/custom-conditional/flow-custom-condition-v2.d.ts +1 -0
- package/lib/esm/content-fields/custom-conditional/flow-custom-condition-v2.js +3 -0
- package/lib/esm/content-fields/custom-conditional/flow-custom-condition-v2.js.map +1 -1
- package/lib/esm/content-fields/flow-ai-agent-base.d.ts +1 -0
- package/lib/esm/content-fields/flow-ai-agent-base.js +3 -0
- package/lib/esm/content-fields/flow-ai-agent-base.js.map +1 -1
- package/lib/esm/content-fields/flow-bot-action.d.ts +1 -0
- package/lib/esm/content-fields/flow-bot-action.js +3 -0
- package/lib/esm/content-fields/flow-bot-action.js.map +1 -1
- package/lib/esm/content-fields/flow-button.d.ts +1 -0
- package/lib/esm/content-fields/flow-button.js +3 -0
- package/lib/esm/content-fields/flow-button.js.map +1 -1
- package/lib/esm/content-fields/flow-capture-user-input.d.ts +1 -0
- package/lib/esm/content-fields/flow-capture-user-input.js +3 -0
- package/lib/esm/content-fields/flow-capture-user-input.js.map +1 -1
- package/lib/esm/content-fields/flow-carousel.d.ts +1 -0
- package/lib/esm/content-fields/flow-carousel.js +3 -0
- package/lib/esm/content-fields/flow-carousel.js.map +1 -1
- package/lib/esm/content-fields/flow-channel-conditional.d.ts +1 -0
- package/lib/esm/content-fields/flow-channel-conditional.js +3 -0
- package/lib/esm/content-fields/flow-channel-conditional.js.map +1 -1
- package/lib/esm/content-fields/flow-contact-reasons-conditional.d.ts +1 -0
- package/lib/esm/content-fields/flow-contact-reasons-conditional.js +3 -0
- package/lib/esm/content-fields/flow-contact-reasons-conditional.js.map +1 -1
- package/lib/esm/content-fields/flow-country-conditional.d.ts +1 -0
- package/lib/esm/content-fields/flow-country-conditional.js +3 -0
- package/lib/esm/content-fields/flow-country-conditional.js.map +1 -1
- package/lib/esm/content-fields/flow-custom-conditional.d.ts +1 -0
- package/lib/esm/content-fields/flow-custom-conditional.js +3 -0
- package/lib/esm/content-fields/flow-custom-conditional.js.map +1 -1
- package/lib/esm/content-fields/flow-do-nothing.d.ts +2 -0
- package/lib/esm/content-fields/flow-do-nothing.js +19 -0
- package/lib/esm/content-fields/flow-do-nothing.js.map +1 -1
- package/lib/esm/content-fields/flow-element.d.ts +1 -0
- package/lib/esm/content-fields/flow-element.js +3 -0
- package/lib/esm/content-fields/flow-element.js.map +1 -1
- package/lib/esm/content-fields/flow-go-to-flow.d.ts +1 -0
- package/lib/esm/content-fields/flow-go-to-flow.js +3 -0
- package/lib/esm/content-fields/flow-go-to-flow.js.map +1 -1
- package/lib/esm/content-fields/flow-handoff.d.ts +2 -0
- package/lib/esm/content-fields/flow-handoff.js +10 -0
- package/lib/esm/content-fields/flow-handoff.js.map +1 -1
- package/lib/esm/content-fields/flow-image.d.ts +1 -0
- package/lib/esm/content-fields/flow-image.js +3 -0
- package/lib/esm/content-fields/flow-image.js.map +1 -1
- package/lib/esm/content-fields/flow-queue-status-conditional.d.ts +1 -0
- package/lib/esm/content-fields/flow-queue-status-conditional.js +3 -0
- package/lib/esm/content-fields/flow-queue-status-conditional.js.map +1 -1
- package/lib/esm/content-fields/flow-rating.d.ts +1 -0
- package/lib/esm/content-fields/flow-rating.js +3 -0
- package/lib/esm/content-fields/flow-rating.js.map +1 -1
- package/lib/esm/content-fields/flow-text.d.ts +1 -0
- package/lib/esm/content-fields/flow-text.js +3 -0
- package/lib/esm/content-fields/flow-text.js.map +1 -1
- package/lib/esm/content-fields/flow-update-variables.d.ts +1 -0
- package/lib/esm/content-fields/flow-update-variables.js +3 -0
- package/lib/esm/content-fields/flow-update-variables.js.map +1 -1
- package/lib/esm/content-fields/flow-video.d.ts +1 -0
- package/lib/esm/content-fields/flow-video.js +3 -0
- package/lib/esm/content-fields/flow-video.js.map +1 -1
- package/lib/esm/content-fields/flow-webview.d.ts +1 -0
- package/lib/esm/content-fields/flow-webview.js +3 -0
- package/lib/esm/content-fields/flow-webview.js.map +1 -1
- package/lib/esm/content-fields/flow-whatsapp-cta-url-button.d.ts +1 -0
- package/lib/esm/content-fields/flow-whatsapp-cta-url-button.js +3 -0
- package/lib/esm/content-fields/flow-whatsapp-cta-url-button.js.map +1 -1
- package/lib/esm/content-fields/flow-whatsapp-request-contact-info.d.ts +1 -0
- package/lib/esm/content-fields/flow-whatsapp-request-contact-info.js +3 -0
- package/lib/esm/content-fields/flow-whatsapp-request-contact-info.js.map +1 -1
- package/lib/esm/content-fields/flow-whatsapp-template.d.ts +1 -0
- package/lib/esm/content-fields/flow-whatsapp-template.js +3 -0
- package/lib/esm/content-fields/flow-whatsapp-template.js.map +1 -1
- package/lib/esm/content-fields/hubtype-fields/handoff.d.ts +3 -1
- package/lib/esm/content-fields/hubtype-fields/handoff.js +1 -0
- package/lib/esm/content-fields/hubtype-fields/handoff.js.map +1 -1
- package/lib/esm/content-fields/whatsapp-button-list/flow-whatsapp-button-list-row.d.ts +1 -0
- package/lib/esm/content-fields/whatsapp-button-list/flow-whatsapp-button-list-row.js +3 -0
- package/lib/esm/content-fields/whatsapp-button-list/flow-whatsapp-button-list-row.js.map +1 -1
- package/lib/esm/content-fields/whatsapp-button-list/flow-whatsapp-button-list-section.d.ts +1 -0
- package/lib/esm/content-fields/whatsapp-button-list/flow-whatsapp-button-list-section.js +3 -0
- package/lib/esm/content-fields/whatsapp-button-list/flow-whatsapp-button-list-section.js.map +1 -1
- package/lib/esm/content-fields/whatsapp-button-list/flow-whatsapp-button-list.d.ts +1 -0
- package/lib/esm/content-fields/whatsapp-button-list/flow-whatsapp-button-list.js +3 -0
- package/lib/esm/content-fields/whatsapp-button-list/flow-whatsapp-button-list.js.map +1 -1
- package/lib/esm/index.d.ts +2 -0
- package/lib/esm/index.js +3 -1
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/services/campaigns-v2-api.d.ts +14 -0
- package/lib/esm/services/campaigns-v2-api.js +30 -0
- package/lib/esm/services/campaigns-v2-api.js.map +1 -0
- package/package.json +2 -2
- package/src/action/contents-result.ts +0 -1
- package/src/action/get-contents.ts +0 -1
- package/src/action/index.tsx +20 -24
- package/src/action/push-flow-resolver.ts +0 -2
- package/src/api.ts +1 -10
- package/src/bot-context-manager.ts +4 -1
- package/src/campaign-execution.ts +51 -0
- package/src/content-fields/content-fields-base.ts +2 -0
- package/src/content-fields/custom-conditional/flow-custom-condition-v2.tsx +4 -0
- package/src/content-fields/flow-ai-agent-base.tsx +4 -0
- package/src/content-fields/flow-bot-action.tsx +4 -0
- package/src/content-fields/flow-button.tsx +4 -0
- package/src/content-fields/flow-capture-user-input.tsx +4 -0
- package/src/content-fields/flow-carousel.tsx +4 -0
- package/src/content-fields/flow-channel-conditional.tsx +4 -0
- package/src/content-fields/flow-contact-reasons-conditional.tsx +4 -0
- package/src/content-fields/flow-country-conditional.tsx +4 -0
- package/src/content-fields/flow-custom-conditional.tsx +4 -0
- package/src/content-fields/flow-do-nothing.tsx +24 -0
- package/src/content-fields/flow-element.tsx +4 -0
- package/src/content-fields/flow-go-to-flow.tsx +4 -0
- package/src/content-fields/flow-handoff.tsx +12 -0
- package/src/content-fields/flow-image.tsx +4 -0
- package/src/content-fields/flow-queue-status-conditional.tsx +4 -0
- package/src/content-fields/flow-rating.tsx +4 -0
- package/src/content-fields/flow-text.tsx +4 -0
- package/src/content-fields/flow-update-variables.tsx +4 -0
- package/src/content-fields/flow-video.tsx +4 -0
- package/src/content-fields/flow-webview.tsx +4 -0
- package/src/content-fields/flow-whatsapp-cta-url-button.tsx +4 -0
- package/src/content-fields/flow-whatsapp-request-contact-info.tsx +4 -0
- package/src/content-fields/flow-whatsapp-template.tsx +4 -0
- package/src/content-fields/hubtype-fields/handoff.ts +2 -0
- package/src/content-fields/whatsapp-button-list/flow-whatsapp-button-list-row.tsx +4 -0
- package/src/content-fields/whatsapp-button-list/flow-whatsapp-button-list-section.tsx +4 -0
- package/src/content-fields/whatsapp-button-list/flow-whatsapp-button-list.tsx +4 -0
- package/src/index.ts +4 -0
- package/src/services/campaigns-v2-api.ts +44 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flow-whatsapp-button-list.js","sourceRoot":"","sources":["../../../../src/content-fields/whatsapp-button-list/flow-whatsapp-button-list.tsx"],"names":[],"mappings":";;;;AAAA,wCAA2D;AAC3D,0CAAiE;AAGjE,6CAAgD;AAChD,gEAA0D;AAE1D,2FAAmF;AAEnF,MAAa,sBAAuB,SAAQ,uCAAiB;IAA7D;;QACS,SAAI,GAAG,EAAE,CAAA;QACT,mBAAc,GAAG,EAAE,CAAA;QACnB,aAAQ,GAAoC,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"flow-whatsapp-button-list.js","sourceRoot":"","sources":["../../../../src/content-fields/whatsapp-button-list/flow-whatsapp-button-list.tsx"],"names":[],"mappings":";;;;AAAA,wCAA2D;AAC3D,0CAAiE;AAGjE,6CAAgD;AAChD,gEAA0D;AAE1D,2FAAmF;AAEnF,MAAa,sBAAuB,SAAQ,uCAAiB;IAA7D;;QACS,SAAI,GAAG,EAAE,CAAA;QACT,mBAAc,GAAG,EAAE,CAAA;QACnB,aAAQ,GAAoC,EAAE,CAAA;IAsEvD,CAAC;IApEC,MAAM,CAAC,cAAc,CACnB,SAAmC,EACnC,MAAc,EACd,MAAsB;QAEtB,MAAM,qBAAqB,GAAG,IAAI,sBAAsB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;QACtE,qBAAqB,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAA;QAC3C,qBAAqB,CAAC,IAAI,GAAG,sBAAsB,CAAC,eAAe,CACjE,MAAM,EACN,SAAS,CAAC,OAAO,CAAC,IAAI,CACvB,CAAA;QACD,qBAAqB,CAAC,cAAc;YAClC,sBAAsB,CAAC,eAAe,CACpC,MAAM,EACN,SAAS,CAAC,OAAO,CAAC,WAAW,CAC9B,CAAA;QACH,qBAAqB,CAAC,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CACxE,iEAA6B,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CACtE,CAAA;QACD,qBAAqB,CAAC,QAAQ,GAAG,SAAS,CAAC,SAAS,CAAA;QAEpD,OAAO,qBAAqB,CAAA;IAC9B,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,UAAsB;QACpC,MAAM,IAAA,0BAAe,EAAC,UAAU,EAAE,IAAI,CAAC,CAAA;IACzC,CAAC;IAED,mBAAmB;QACjB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,UAAsB;QACzC,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;QAChC,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;QAC1C,OAAM;IACR,CAAC;IAED,SAAS,CAAC,UAAsB;QAC9B,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;QAEjE,IAAI,CAAC,IAAA,iBAAU,EAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAC9B,uBAAC,cAAM,IAAc,OAAO,EAAE,GAAG,CAAC,QAAQ,YACvC,GAAG,CAAC,KAAK,IADC,GAAG,CAAC,EAAE,CAEV,CACV,CAAC,CAAA;YAEF,OAAO,CACL,wBAAC,YAAI,eACF,YAAY,EACZ,OAAO,IACH,CACR,CAAA;QACH,CAAC;QAED,OAAO,CACL,uBAAC,0BAAkB,IAEjB,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,IAAI,CAAC,cAAc,EAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,CACpD,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,CACpC,IALI,IAAI,CAAC,EAAE,CAMZ,CACH,CAAA;IACH,CAAC;CACF;AAzED,wDAyEC"}
|
package/lib/esm/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { BotContext, Plugin, ResolvedPlugins, Session } from '@botonic/core';
|
|
2
2
|
import { FlowBuilderApi } from './api';
|
|
3
|
+
import { CampaignExecution } from './campaign-execution';
|
|
3
4
|
import type { FlowContent } from './content-fields';
|
|
4
5
|
import { type HtNodeWithContent } from './content-fields/hubtype-fields';
|
|
5
6
|
import { type AiAgentFunction, type BotonicPluginFlowBuilderOptions, type ContentFilter, FlowBuilderJSONVersion, type InShadowingConfig, type PayloadParamsBase, type RatingSubmittedInfo, type TrackEventFunction } from './types';
|
|
@@ -19,6 +20,7 @@ export default class BotonicPluginFlowBuilder implements Plugin {
|
|
|
19
20
|
apiUrl: string;
|
|
20
21
|
customRatingMessageEnabled: boolean;
|
|
21
22
|
disableAIAgentInFirstInteraction: boolean;
|
|
23
|
+
campaignExecution: CampaignExecution;
|
|
22
24
|
constructor(options: BotonicPluginFlowBuilderOptions<ResolvedPlugins, any>);
|
|
23
25
|
resolveFlowUrl(botContext: BotContext): string;
|
|
24
26
|
pre(botContext: BotContext): Promise<void>;
|
package/lib/esm/index.js
CHANGED
|
@@ -5,6 +5,7 @@ const tslib_1 = require("tslib");
|
|
|
5
5
|
const uuid_1 = require("uuid");
|
|
6
6
|
const api_1 = require("./api");
|
|
7
7
|
const bot_context_manager_1 = require("./bot-context-manager");
|
|
8
|
+
const campaign_execution_1 = require("./campaign-execution");
|
|
8
9
|
const constants_1 = require("./constants");
|
|
9
10
|
const hubtype_fields_1 = require("./content-fields/hubtype-fields");
|
|
10
11
|
const flow_factory_1 = require("./flow-factory");
|
|
@@ -52,7 +53,8 @@ class BotonicPluginFlowBuilder {
|
|
|
52
53
|
accessToken: this.getAccessToken(botContext.session),
|
|
53
54
|
botContext: this.botContext,
|
|
54
55
|
});
|
|
55
|
-
|
|
56
|
+
this.campaignExecution = new campaign_execution_1.CampaignExecution(botContext);
|
|
57
|
+
const botContextManager = new bot_context_manager_1.BotContextManager(this.campaignExecution, this.cmsApi, this.smartIntentsConfig);
|
|
56
58
|
await botContextManager.prepareInputForRoutes(botContext);
|
|
57
59
|
}
|
|
58
60
|
post(botContext) {
|
package/lib/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;AAMA,+BAAmC;AAEnC,+BAAsC;AACtC,+DAAyD;AACzD,2CAAkE;AAElE,oEAIwC;AACxC,iDAA4C;AAC5C,2CAAoE;AACpE,mCASgB;AAEhB,2DAA8D;AAE9D,2EAA2E;AAE3E,MAAqB,wBAAwB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { BotContext } from '@botonic/core';
|
|
2
|
+
export type SkipEmptyBotResponseResult = {
|
|
3
|
+
id: string;
|
|
4
|
+
status: 'skipped';
|
|
5
|
+
skip_reason: 'empty_bot_response';
|
|
6
|
+
};
|
|
7
|
+
export declare class CampaignsV2Api {
|
|
8
|
+
private hubtypeApiUrl;
|
|
9
|
+
private accessToken;
|
|
10
|
+
private botId;
|
|
11
|
+
private chatId;
|
|
12
|
+
constructor(botContext: BotContext);
|
|
13
|
+
skipEmptyBotResponse(campaignId: string): Promise<SkipEmptyBotResponseResult>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CampaignsV2Api = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const axios_1 = tslib_1.__importDefault(require("axios"));
|
|
6
|
+
const constants_1 = require("../constants");
|
|
7
|
+
const get_flow_builder_plugin_1 = require("../utils/get-flow-builder-plugin");
|
|
8
|
+
class CampaignsV2Api {
|
|
9
|
+
constructor(botContext) {
|
|
10
|
+
this.hubtypeApiUrl =
|
|
11
|
+
botContext.session._hubtype_api ||
|
|
12
|
+
botContext.settings?.HUBTYPE_API_URL ||
|
|
13
|
+
constants_1.FLOW_BUILDER_API_URL_PROD;
|
|
14
|
+
const flowBuilderPlugin = (0, get_flow_builder_plugin_1.getFlowBuilderPlugin)(botContext.plugins);
|
|
15
|
+
this.accessToken = flowBuilderPlugin.getAccessToken(botContext.session);
|
|
16
|
+
this.botId = botContext.session.bot.id;
|
|
17
|
+
this.chatId = botContext.session.user.id;
|
|
18
|
+
}
|
|
19
|
+
async skipEmptyBotResponse(campaignId) {
|
|
20
|
+
const { data } = await axios_1.default.post(`${this.hubtypeApiUrl}/external/v2/conversational_apps/${this.botId}/users/${this.chatId}/skip_campaign/`, { campaign_id: campaignId }, {
|
|
21
|
+
headers: {
|
|
22
|
+
'Content-Type': 'application/json',
|
|
23
|
+
Authorization: `Bearer ${this.accessToken}`,
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
return data;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
exports.CampaignsV2Api = CampaignsV2Api;
|
|
30
|
+
//# sourceMappingURL=campaigns-v2-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"campaigns-v2-api.js","sourceRoot":"","sources":["../../../src/services/campaigns-v2-api.ts"],"names":[],"mappings":";;;;AACA,0DAAyB;AACzB,4CAAwD;AACxD,8EAAuE;AAQvE,MAAa,cAAc;IAMzB,YAAY,UAAsB;QAChC,IAAI,CAAC,aAAa;YAChB,UAAU,CAAC,OAAO,CAAC,YAAY;gBAC/B,UAAU,CAAC,QAAQ,EAAE,eAAe;gBACpC,qCAAyB,CAAA;QAC3B,MAAM,iBAAiB,GAAG,IAAA,8CAAoB,EAAC,UAAU,CAAC,OAAO,CAAC,CAAA;QAClE,IAAI,CAAC,WAAW,GAAG,iBAAiB,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;QACvE,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAA;QACtC,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAA;IAC1C,CAAC;IAED,KAAK,CAAC,oBAAoB,CACxB,UAAkB;QAElB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,eAAK,CAAC,IAAI,CAC/B,GAAG,IAAI,CAAC,aAAa,oCAAoC,IAAI,CAAC,KAAK,UAAU,IAAI,CAAC,MAAM,iBAAiB,EACzG,EAAE,WAAW,EAAE,UAAU,EAAE,EAC3B;YACE,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,IAAI,CAAC,WAAW,EAAE;aAC5C;SACF,CACF,CAAA;QACD,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAhCD,wCAgCC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@botonic/plugin-flow-builder",
|
|
3
|
-
"version": "0.58.0-alpha.
|
|
3
|
+
"version": "0.58.0-alpha.4",
|
|
4
4
|
"main": "./lib/cjs/index.js",
|
|
5
5
|
"module": "./lib/esm/index.js",
|
|
6
6
|
"description": "Use Flow Builder to show your contents",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"format": "biome format --write src/ tests/"
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@botonic/react": "0.58.0-alpha.
|
|
18
|
+
"@botonic/react": "0.58.0-alpha.4",
|
|
19
19
|
"axios": "^1.18.1",
|
|
20
20
|
"uuid": "^10.0.0"
|
|
21
21
|
},
|
|
@@ -5,7 +5,6 @@ import {
|
|
|
5
5
|
WhatsappInputOrigin,
|
|
6
6
|
} from '@botonic/core'
|
|
7
7
|
import { EMPTY_PAYLOAD } from '../constants'
|
|
8
|
-
// import type { FlowContent } from '../content-fields'
|
|
9
8
|
import { inputHasTextOrTranscript } from '../utils/input'
|
|
10
9
|
import { getContentsByAiAgentFromUserInput } from './ai-agent-from-user-input'
|
|
11
10
|
import type { FlowBuilderContentsResult } from './contents-result'
|
package/src/action/index.tsx
CHANGED
|
@@ -22,7 +22,6 @@ import { getContents } from './get-contents'
|
|
|
22
22
|
|
|
23
23
|
export type FlowBuilderActionProps = {
|
|
24
24
|
contents: FlowContent[]
|
|
25
|
-
campaignFirstMessageId?: string
|
|
26
25
|
webchatSettingsParams?: WebchatSettingsProps
|
|
27
26
|
}
|
|
28
27
|
|
|
@@ -48,10 +47,7 @@ export class FlowBuilderAction extends React.Component<FlowBuilderActionProps> {
|
|
|
48
47
|
botContext: BotContext,
|
|
49
48
|
contentID?: string
|
|
50
49
|
): Promise<FlowBuilderActionProps> {
|
|
51
|
-
const { contents
|
|
52
|
-
botContext,
|
|
53
|
-
contentID
|
|
54
|
-
)
|
|
50
|
+
const { contents } = await getContents(botContext, contentID)
|
|
55
51
|
|
|
56
52
|
const contentsToRender = await FlowBuilderAction.prepareContentsToRender(
|
|
57
53
|
botContext,
|
|
@@ -60,7 +56,6 @@ export class FlowBuilderAction extends React.Component<FlowBuilderActionProps> {
|
|
|
60
56
|
|
|
61
57
|
return {
|
|
62
58
|
contents: contentsToRender,
|
|
63
|
-
campaignFirstMessageId,
|
|
64
59
|
}
|
|
65
60
|
}
|
|
66
61
|
|
|
@@ -68,17 +63,22 @@ export class FlowBuilderAction extends React.Component<FlowBuilderActionProps> {
|
|
|
68
63
|
botContext: BotContext,
|
|
69
64
|
contents: FlowContent[]
|
|
70
65
|
) {
|
|
66
|
+
const flowBuilderPlugin = getFlowBuilderPlugin(botContext.plugins)
|
|
67
|
+
const { campaignExecution, cmsApi } = flowBuilderPlugin
|
|
68
|
+
|
|
71
69
|
for (const content of contents) {
|
|
72
70
|
if (FlowBuilderAction.isAiAgentContent(content)) {
|
|
73
71
|
await FlowBuilderAction.processAiAgentContent(botContext, contents)
|
|
72
|
+
campaignExecution.updateHasBotResponse(content)
|
|
74
73
|
continue
|
|
75
74
|
}
|
|
76
75
|
|
|
77
76
|
await content.processContent(botContext)
|
|
78
77
|
|
|
78
|
+
campaignExecution.updateHasBotResponse(content)
|
|
79
|
+
|
|
79
80
|
if (content instanceof FlowWhatsappRequestContactInfoNode) {
|
|
80
|
-
|
|
81
|
-
flowBuilderPlugin.cmsApi.setWhatsappRequestContactId(content.id)
|
|
81
|
+
cmsApi.setWhatsappRequestContactId(content.id)
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
84
|
|
|
@@ -145,7 +145,7 @@ export class FlowBuilderAction extends React.Component<FlowBuilderActionProps> {
|
|
|
145
145
|
}
|
|
146
146
|
|
|
147
147
|
render(): JSX.Element | JSX.Element[] {
|
|
148
|
-
const { contents
|
|
148
|
+
const { contents } = this.props
|
|
149
149
|
const botContext = this.context as BotContext
|
|
150
150
|
const { shouldSendWebchatSettings, webchatSettingsParams } =
|
|
151
151
|
this.getWebchatSettingsParams(botContext)
|
|
@@ -155,28 +155,28 @@ export class FlowBuilderAction extends React.Component<FlowBuilderActionProps> {
|
|
|
155
155
|
{shouldSendWebchatSettings && (
|
|
156
156
|
<WebchatSettings {...webchatSettingsParams} />
|
|
157
157
|
)}
|
|
158
|
-
{FlowBuilderAction.renderContents(
|
|
159
|
-
contents,
|
|
160
|
-
botContext,
|
|
161
|
-
campaignFirstMessageId
|
|
162
|
-
)}
|
|
158
|
+
{FlowBuilderAction.renderContents(contents, botContext)}
|
|
163
159
|
</>
|
|
164
160
|
)
|
|
165
161
|
}
|
|
166
162
|
|
|
167
163
|
protected static renderContents(
|
|
168
164
|
contents: FlowContent[],
|
|
169
|
-
botContext: BotContext
|
|
170
|
-
campaignFirstMessageId?: string
|
|
165
|
+
botContext: BotContext
|
|
171
166
|
): JSX.Element | JSX.Element[] {
|
|
167
|
+
const flowBuilderPlugin = getFlowBuilderPlugin(botContext.plugins)
|
|
168
|
+
const { campaignExecution } = flowBuilderPlugin
|
|
169
|
+
|
|
172
170
|
const rendered = contents.map(content => content.toBotonic(botContext))
|
|
173
171
|
|
|
174
|
-
if (!
|
|
172
|
+
if (!campaignExecution.isActive() || !campaignExecution.campaignId) {
|
|
175
173
|
return rendered
|
|
176
174
|
}
|
|
177
175
|
|
|
178
176
|
return (
|
|
179
|
-
<CampaignMessageAttributesProvider
|
|
177
|
+
<CampaignMessageAttributesProvider
|
|
178
|
+
campaignId={campaignExecution.campaignId}
|
|
179
|
+
>
|
|
180
180
|
{rendered}
|
|
181
181
|
</CampaignMessageAttributesProvider>
|
|
182
182
|
)
|
|
@@ -185,7 +185,7 @@ export class FlowBuilderAction extends React.Component<FlowBuilderActionProps> {
|
|
|
185
185
|
|
|
186
186
|
export class FlowBuilderMultichannelAction extends FlowBuilderAction {
|
|
187
187
|
render(): JSX.Element | JSX.Element[] {
|
|
188
|
-
const { contents
|
|
188
|
+
const { contents } = this.props
|
|
189
189
|
const botContext = this.context as BotContext
|
|
190
190
|
const { shouldSendWebchatSettings, webchatSettingsParams } =
|
|
191
191
|
this.getWebchatSettingsParams(botContext)
|
|
@@ -195,11 +195,7 @@ export class FlowBuilderMultichannelAction extends FlowBuilderAction {
|
|
|
195
195
|
{shouldSendWebchatSettings && (
|
|
196
196
|
<WebchatSettings {...webchatSettingsParams} />
|
|
197
197
|
)}
|
|
198
|
-
{FlowBuilderAction.renderContents(
|
|
199
|
-
contents,
|
|
200
|
-
botContext,
|
|
201
|
-
campaignFirstMessageId
|
|
202
|
-
)}
|
|
198
|
+
{FlowBuilderAction.renderContents(contents, botContext)}
|
|
203
199
|
</Multichannel>
|
|
204
200
|
)
|
|
205
201
|
}
|
|
@@ -50,7 +50,6 @@ export class PushFlowResolver {
|
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
const {
|
|
53
|
-
campaign_id: campaignId,
|
|
54
53
|
campaign_flow_id: campaignFlowId,
|
|
55
54
|
campaign_follow_up_id: campaignFollowUpId,
|
|
56
55
|
} = campaignContext
|
|
@@ -71,7 +70,6 @@ export class PushFlowResolver {
|
|
|
71
70
|
contents: await this.flowBuilderPlugin.getContentsByNode(
|
|
72
71
|
followUpNode ?? campaignStartNode
|
|
73
72
|
),
|
|
74
|
-
campaignFirstMessageId: campaignId,
|
|
75
73
|
}
|
|
76
74
|
}
|
|
77
75
|
|
package/src/api.ts
CHANGED
|
@@ -1,12 +1,7 @@
|
|
|
1
1
|
import type { BotContext } from '@botonic/core'
|
|
2
2
|
import axios from 'axios'
|
|
3
3
|
|
|
4
|
-
import {
|
|
5
|
-
AI_AGENTS_FLOW_NAME,
|
|
6
|
-
PUSH_FLOW_PAYLOAD,
|
|
7
|
-
SEPARATOR,
|
|
8
|
-
UUID_REGEXP,
|
|
9
|
-
} from './constants'
|
|
4
|
+
import { AI_AGENTS_FLOW_NAME, SEPARATOR, UUID_REGEXP } from './constants'
|
|
10
5
|
import {
|
|
11
6
|
type HtBotActionNode,
|
|
12
7
|
type HtCaptureUserInputNode,
|
|
@@ -340,8 +335,4 @@ export class FlowBuilderApi {
|
|
|
340
335
|
defaultLocaleCode
|
|
341
336
|
).resolve()
|
|
342
337
|
}
|
|
343
|
-
|
|
344
|
-
isPushFlowPayload(payload?: string): boolean {
|
|
345
|
-
return payload?.startsWith(PUSH_FLOW_PAYLOAD) ?? false
|
|
346
|
-
}
|
|
347
338
|
}
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
} from '@botonic/core'
|
|
7
7
|
|
|
8
8
|
import type { FlowBuilderApi } from './api'
|
|
9
|
+
import type { CampaignExecution } from './campaign-execution'
|
|
9
10
|
import {
|
|
10
11
|
EMPTY_PAYLOAD,
|
|
11
12
|
ON_CLOSE_HANDOFF_PAYLOAD,
|
|
@@ -24,6 +25,7 @@ import { inputHasTextOrTranscript } from './utils/input'
|
|
|
24
25
|
|
|
25
26
|
export class BotContextManager {
|
|
26
27
|
constructor(
|
|
28
|
+
private readonly campaignExecution: CampaignExecution,
|
|
27
29
|
private readonly cmsApi: FlowBuilderApi,
|
|
28
30
|
private readonly smartIntentsConfig: SmartIntentsInferenceConfig
|
|
29
31
|
) {}
|
|
@@ -48,7 +50,8 @@ export class BotContextManager {
|
|
|
48
50
|
private async updateFirstInteractionOnPushFlowPayload(
|
|
49
51
|
botContext: BotContext
|
|
50
52
|
): Promise<void> {
|
|
51
|
-
|
|
53
|
+
const campaignExecution = this.campaignExecution
|
|
54
|
+
if (campaignExecution.isPushFlowPayload()) {
|
|
52
55
|
botContext.session.is_first_interaction = false
|
|
53
56
|
}
|
|
54
57
|
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import {
|
|
2
|
+
type BotContext,
|
|
3
|
+
BotonicInputContextType,
|
|
4
|
+
getInputContextOfType,
|
|
5
|
+
type PushFlowContext,
|
|
6
|
+
} from '@botonic/core'
|
|
7
|
+
|
|
8
|
+
import { PUSH_FLOW_PAYLOAD } from './constants'
|
|
9
|
+
import type { FlowContent } from './content-fields'
|
|
10
|
+
|
|
11
|
+
export class CampaignExecution {
|
|
12
|
+
public hasBotResponse = false
|
|
13
|
+
private botContext: BotContext
|
|
14
|
+
|
|
15
|
+
constructor(botContext: BotContext) {
|
|
16
|
+
this.botContext = botContext
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
isActive(): boolean {
|
|
20
|
+
if (!this.isPushFlowPayload()) {
|
|
21
|
+
return false
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
return this.getPushFlowContext() !== undefined
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
get campaignId(): string | undefined {
|
|
28
|
+
return this.getPushFlowContext()?.campaign_id
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
updateHasBotResponse(content: FlowContent): void {
|
|
32
|
+
if (!this.isActive() || this.hasBotResponse) {
|
|
33
|
+
return
|
|
34
|
+
}
|
|
35
|
+
if (content.producesBotResponse()) {
|
|
36
|
+
this.hasBotResponse = true
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
isPushFlowPayload(): boolean {
|
|
41
|
+
const payload = this.botContext.input.payload
|
|
42
|
+
return payload?.startsWith(PUSH_FLOW_PAYLOAD) ?? false
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
private getPushFlowContext(): PushFlowContext | undefined {
|
|
46
|
+
return getInputContextOfType(
|
|
47
|
+
this.botContext.input.context,
|
|
48
|
+
BotonicInputContextType.PushFlow
|
|
49
|
+
)
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -124,6 +124,10 @@ export class FlowCustomConditionalV2 extends ContentFieldsBase {
|
|
|
124
124
|
await trackEvent(botContext, action, eventArgs)
|
|
125
125
|
}
|
|
126
126
|
|
|
127
|
+
producesBotResponse(): boolean {
|
|
128
|
+
return false
|
|
129
|
+
}
|
|
130
|
+
|
|
127
131
|
async processContent(botContext: BotContext): Promise<void> {
|
|
128
132
|
await this.filterContent(botContext, this)
|
|
129
133
|
await this.trackFlow(botContext)
|
|
@@ -114,6 +114,10 @@ export abstract class FlowAiAgentBase extends ContentFieldsBase {
|
|
|
114
114
|
return
|
|
115
115
|
}
|
|
116
116
|
|
|
117
|
+
producesBotResponse(): boolean {
|
|
118
|
+
return this.jsxElements.length > 0
|
|
119
|
+
}
|
|
120
|
+
|
|
117
121
|
async processContent(
|
|
118
122
|
botContext: BotContext,
|
|
119
123
|
previousContents?: FlowContent[]
|
|
@@ -51,6 +51,10 @@ export class FlowBotAction extends ContentFieldsBase {
|
|
|
51
51
|
botContext.session._botonic_action = `${BotonicAction.Redirect}:${this.payload}`
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
+
producesBotResponse(): boolean {
|
|
55
|
+
return false
|
|
56
|
+
}
|
|
57
|
+
|
|
54
58
|
async processContent(botContext: BotContext): Promise<void> {
|
|
55
59
|
await this.filterContent(botContext, this)
|
|
56
60
|
this.doBotAction(botContext)
|
|
@@ -203,6 +203,10 @@ export class FlowCarousel extends ContentFieldsBase {
|
|
|
203
203
|
}
|
|
204
204
|
}
|
|
205
205
|
|
|
206
|
+
producesBotResponse(): boolean {
|
|
207
|
+
return true
|
|
208
|
+
}
|
|
209
|
+
|
|
206
210
|
async processContent(botContext: BotContext): Promise<void> {
|
|
207
211
|
await this.filterContent(botContext, this)
|
|
208
212
|
await this.trackFlow(botContext)
|
|
@@ -62,6 +62,10 @@ export class FlowChannelConditional extends ContentFieldsBase {
|
|
|
62
62
|
await trackEvent(botContext, action, eventArgs)
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
+
producesBotResponse(): boolean {
|
|
66
|
+
return false
|
|
67
|
+
}
|
|
68
|
+
|
|
65
69
|
async processContent(botContext: BotContext): Promise<void> {
|
|
66
70
|
await this.filterContent(botContext, this)
|
|
67
71
|
await this.trackFlow(botContext)
|
|
@@ -107,6 +107,10 @@ export class FlowContactReasonsConditional extends ContentFieldsBase {
|
|
|
107
107
|
return
|
|
108
108
|
}
|
|
109
109
|
|
|
110
|
+
producesBotResponse(): boolean {
|
|
111
|
+
return false
|
|
112
|
+
}
|
|
113
|
+
|
|
110
114
|
async processContent(botContext: BotContext): Promise<void> {
|
|
111
115
|
await this.filterContent(botContext, this)
|
|
112
116
|
await this.trackFlow(botContext)
|
|
@@ -64,6 +64,10 @@ export class FlowCountryConditional extends ContentFieldsBase {
|
|
|
64
64
|
await trackEvent(botContext, action, eventArgs)
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
+
producesBotResponse(): boolean {
|
|
68
|
+
return false
|
|
69
|
+
}
|
|
70
|
+
|
|
67
71
|
async processContent(botContext: BotContext): Promise<void> {
|
|
68
72
|
await this.filterContent(botContext, this)
|
|
69
73
|
await this.trackFlow(botContext)
|
|
@@ -115,6 +115,10 @@ export class FlowCustomConditional extends ContentFieldsBase {
|
|
|
115
115
|
)
|
|
116
116
|
}
|
|
117
117
|
|
|
118
|
+
producesBotResponse(): boolean {
|
|
119
|
+
return false
|
|
120
|
+
}
|
|
121
|
+
|
|
118
122
|
async processContent(botContext: BotContext): Promise<void> {
|
|
119
123
|
await this.filterContent(botContext, this)
|
|
120
124
|
await this.trackFlow(botContext)
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { BotContext } from '@botonic/core'
|
|
2
2
|
|
|
3
|
+
import { CampaignsV2Api } from '../services/campaigns-v2-api'
|
|
3
4
|
import { trackOneContent } from '../tracking'
|
|
5
|
+
import { getFlowBuilderPlugin } from '../utils/get-flow-builder-plugin'
|
|
4
6
|
import { ContentFieldsBase } from './content-fields-base'
|
|
5
7
|
import type { HtDoNothingNode } from './hubtype-fields'
|
|
6
8
|
|
|
@@ -13,13 +15,35 @@ export class FlowDoNothing extends ContentFieldsBase {
|
|
|
13
15
|
return newDoNothing
|
|
14
16
|
}
|
|
15
17
|
|
|
18
|
+
private async skipCampaignIfNoBotResponse(
|
|
19
|
+
botContext: BotContext
|
|
20
|
+
): Promise<void> {
|
|
21
|
+
const flowBuilderPlugin = getFlowBuilderPlugin(botContext.plugins)
|
|
22
|
+
const campaignExecution = flowBuilderPlugin.campaignExecution
|
|
23
|
+
if (!campaignExecution.isActive() || campaignExecution.hasBotResponse) {
|
|
24
|
+
return
|
|
25
|
+
}
|
|
26
|
+
const campaignId = campaignExecution.campaignId
|
|
27
|
+
if (!campaignId) {
|
|
28
|
+
return
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const campaignsV2Api = new CampaignsV2Api(botContext)
|
|
32
|
+
await campaignsV2Api.skipEmptyBotResponse(campaignId)
|
|
33
|
+
}
|
|
34
|
+
|
|
16
35
|
async trackFlow(botContext: BotContext): Promise<void> {
|
|
17
36
|
await trackOneContent(botContext, this)
|
|
18
37
|
}
|
|
19
38
|
|
|
39
|
+
producesBotResponse(): boolean {
|
|
40
|
+
return false
|
|
41
|
+
}
|
|
42
|
+
|
|
20
43
|
async processContent(botContext: BotContext): Promise<void> {
|
|
21
44
|
await this.filterContent(botContext, this)
|
|
22
45
|
await this.trackFlow(botContext)
|
|
46
|
+
await this.skipCampaignIfNoBotResponse(botContext)
|
|
23
47
|
return
|
|
24
48
|
}
|
|
25
49
|
|
|
@@ -50,6 +50,10 @@ export class FlowGoToFlow extends ContentFieldsBase {
|
|
|
50
50
|
await trackEvent(botContext, action, eventArgs)
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
+
producesBotResponse(): boolean {
|
|
54
|
+
return false
|
|
55
|
+
}
|
|
56
|
+
|
|
53
57
|
async processContent(botContext: BotContext): Promise<void> {
|
|
54
58
|
await this.filterContent(botContext, this)
|
|
55
59
|
await this.trackFlow(botContext)
|
|
@@ -27,6 +27,7 @@ export class FlowHandoff extends ContentFieldsBase {
|
|
|
27
27
|
public discardedByAgent?: HtNodeLink
|
|
28
28
|
public discardedByUser?: HtNodeLink
|
|
29
29
|
public discardedBySystem?: HtNodeLink
|
|
30
|
+
public discardedByBulk?: HtNodeLink
|
|
30
31
|
public isTestIntegration: boolean
|
|
31
32
|
|
|
32
33
|
static fromHubtypeCMS(
|
|
@@ -46,6 +47,7 @@ export class FlowHandoff extends ContentFieldsBase {
|
|
|
46
47
|
newHandoff.discardedByAgent = cmsHandoff.content.discarded_by_agent
|
|
47
48
|
newHandoff.discardedByUser = cmsHandoff.content.discarded_by_user
|
|
48
49
|
newHandoff.discardedBySystem = cmsHandoff.content.discarded_by_system
|
|
50
|
+
newHandoff.discardedByBulk = cmsHandoff.content.discarded_by_bulk
|
|
49
51
|
newHandoff.handoffAutoAssign = cmsHandoff.content.has_auto_assign
|
|
50
52
|
newHandoff.hasQueuePositionChangedNotificationsEnabled =
|
|
51
53
|
cmsHandoff.content.has_queue_position_changed_notifications_enabled
|
|
@@ -94,6 +96,12 @@ export class FlowHandoff extends ContentFieldsBase {
|
|
|
94
96
|
}
|
|
95
97
|
console.error('No discarded by system target found')
|
|
96
98
|
}
|
|
99
|
+
if (contactReasons.some(reason => reason.name === DiscardType.ByBulk)) {
|
|
100
|
+
if (this.discardedByBulk?.id) {
|
|
101
|
+
return this.discardedByBulk.id
|
|
102
|
+
}
|
|
103
|
+
console.error('No discarded by bulk target found')
|
|
104
|
+
}
|
|
97
105
|
if (this.resolvedByAgent?.id) {
|
|
98
106
|
return this.resolvedByAgent.id
|
|
99
107
|
}
|
|
@@ -142,6 +150,10 @@ export class FlowHandoff extends ContentFieldsBase {
|
|
|
142
150
|
// TODO: Not apply for this content because backend track handoff success event
|
|
143
151
|
}
|
|
144
152
|
|
|
153
|
+
producesBotResponse(): boolean {
|
|
154
|
+
return false
|
|
155
|
+
}
|
|
156
|
+
|
|
145
157
|
async processContent(botContext: BotContext): Promise<void> {
|
|
146
158
|
await this.filterContent(botContext, this)
|
|
147
159
|
await this.doHandoff(botContext)
|
|
@@ -21,6 +21,10 @@ export class FlowImage 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)
|
|
@@ -127,6 +127,10 @@ export class FlowQueueStatusConditional extends ContentFieldsBase {
|
|
|
127
127
|
await trackEvent(botContext, action, eventArgs)
|
|
128
128
|
}
|
|
129
129
|
|
|
130
|
+
producesBotResponse(): boolean {
|
|
131
|
+
return false
|
|
132
|
+
}
|
|
133
|
+
|
|
130
134
|
async processContent(botContext: BotContext): Promise<void> {
|
|
131
135
|
await this.filterContent(botContext, this)
|
|
132
136
|
await this.trackFlow(botContext)
|