@botonic/plugin-flow-builder 0.56.0-alpha.0 → 0.57.0-rslib-esm.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.
- package/lib/esm/action/ai-agent-from-user-input.d.ts +2 -2
- package/lib/esm/action/ai-agent-from-user-input.js +9 -6
- package/lib/esm/action/ai-agent-from-user-input.js.map +1 -1
- package/lib/esm/action/context.d.ts +2 -2
- package/lib/esm/action/context.js +9 -6
- package/lib/esm/action/context.js.map +1 -1
- package/lib/esm/action/fallback.d.ts +2 -2
- package/lib/esm/action/fallback.js +16 -11
- package/lib/esm/action/fallback.js.map +1 -1
- package/lib/esm/action/first-interaction.d.ts +2 -2
- package/lib/esm/action/first-interaction.js +39 -27
- package/lib/esm/action/first-interaction.js.map +1 -1
- package/lib/esm/action/get-contents.d.ts +1 -1
- package/lib/esm/action/get-contents.js +37 -20
- package/lib/esm/action/get-contents.js.map +1 -1
- package/lib/esm/action/index.d.ts +1 -1
- package/lib/esm/action/index.js +68 -32
- package/lib/esm/action/index.js.map +1 -1
- package/lib/esm/action/payload.d.ts +2 -2
- package/lib/esm/action/payload.js +27 -23
- package/lib/esm/action/payload.js.map +1 -1
- package/lib/esm/api.d.ts +2 -2
- package/lib/esm/api.js +55 -44
- package/lib/esm/api.js.map +1 -1
- package/lib/esm/constants.js +16 -18
- package/lib/esm/constants.js.map +1 -1
- package/lib/esm/content-fields/content-fields-base.d.ts +2 -2
- package/lib/esm/content-fields/content-fields-base.js +33 -29
- package/lib/esm/content-fields/content-fields-base.js.map +1 -1
- package/lib/esm/content-fields/custom-conditional/custom-conditional-v2-evaluators.d.ts +1 -1
- package/lib/esm/content-fields/custom-conditional/custom-conditional-v2-evaluators.js +35 -33
- package/lib/esm/content-fields/custom-conditional/custom-conditional-v2-evaluators.js.map +1 -1
- package/lib/esm/content-fields/custom-conditional/custom-conditional-v2-resolver.d.ts +1 -1
- package/lib/esm/content-fields/custom-conditional/custom-conditional-v2-resolver.js +15 -15
- package/lib/esm/content-fields/custom-conditional/custom-conditional-v2-resolver.js.map +1 -1
- package/lib/esm/content-fields/custom-conditional/flow-custom-condition-v2.d.ts +2 -2
- package/lib/esm/content-fields/custom-conditional/flow-custom-condition-v2.js +50 -35
- 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 +4 -4
- package/lib/esm/content-fields/flow-ai-agent-base.js +50 -47
- package/lib/esm/content-fields/flow-ai-agent-base.js.map +1 -1
- package/lib/esm/content-fields/flow-ai-agent-router.d.ts +5 -5
- package/lib/esm/content-fields/flow-ai-agent-router.js +57 -46
- package/lib/esm/content-fields/flow-ai-agent-router.js.map +1 -1
- package/lib/esm/content-fields/flow-ai-agent.d.ts +4 -4
- package/lib/esm/content-fields/flow-ai-agent.js +33 -22
- package/lib/esm/content-fields/flow-ai-agent.js.map +1 -1
- package/lib/esm/content-fields/flow-bot-action.d.ts +3 -3
- package/lib/esm/content-fields/flow-bot-action.js +23 -15
- package/lib/esm/content-fields/flow-bot-action.js.map +1 -1
- package/lib/esm/content-fields/flow-button.d.ts +5 -5
- package/lib/esm/content-fields/flow-button.js +48 -29
- package/lib/esm/content-fields/flow-button.js.map +1 -1
- package/lib/esm/content-fields/flow-capture-user-input.d.ts +2 -2
- package/lib/esm/content-fields/flow-capture-user-input.js +24 -23
- package/lib/esm/content-fields/flow-capture-user-input.js.map +1 -1
- package/lib/esm/content-fields/flow-carousel.d.ts +4 -4
- package/lib/esm/content-fields/flow-carousel.js +99 -58
- package/lib/esm/content-fields/flow-carousel.js.map +1 -1
- package/lib/esm/content-fields/flow-channel-conditional.d.ts +3 -3
- package/lib/esm/content-fields/flow-channel-conditional.js +26 -22
- package/lib/esm/content-fields/flow-channel-conditional.js.map +1 -1
- package/lib/esm/content-fields/flow-country-conditional.d.ts +3 -3
- package/lib/esm/content-fields/flow-country-conditional.js +26 -21
- package/lib/esm/content-fields/flow-country-conditional.js.map +1 -1
- package/lib/esm/content-fields/flow-custom-conditional.d.ts +3 -3
- package/lib/esm/content-fields/flow-custom-conditional.js +31 -33
- package/lib/esm/content-fields/flow-custom-conditional.js.map +1 -1
- package/lib/esm/content-fields/flow-element.d.ts +4 -4
- package/lib/esm/content-fields/flow-element.js +37 -20
- package/lib/esm/content-fields/flow-element.js.map +1 -1
- package/lib/esm/content-fields/flow-go-to-flow.d.ts +3 -3
- package/lib/esm/content-fields/flow-go-to-flow.js +25 -20
- package/lib/esm/content-fields/flow-go-to-flow.js.map +1 -1
- package/lib/esm/content-fields/flow-handoff.d.ts +3 -3
- package/lib/esm/content-fields/flow-handoff.js +30 -19
- package/lib/esm/content-fields/flow-handoff.js.map +1 -1
- package/lib/esm/content-fields/flow-image.d.ts +2 -2
- package/lib/esm/content-fields/flow-image.js +24 -15
- package/lib/esm/content-fields/flow-image.js.map +1 -1
- package/lib/esm/content-fields/flow-queue-status-conditional.d.ts +3 -3
- package/lib/esm/content-fields/flow-queue-status-conditional.js +45 -40
- package/lib/esm/content-fields/flow-queue-status-conditional.js.map +1 -1
- package/lib/esm/content-fields/flow-rating.d.ts +3 -3
- package/lib/esm/content-fields/flow-rating.js +62 -40
- package/lib/esm/content-fields/flow-rating.js.map +1 -1
- package/lib/esm/content-fields/flow-text.d.ts +4 -4
- package/lib/esm/content-fields/flow-text.js +51 -29
- package/lib/esm/content-fields/flow-text.js.map +1 -1
- package/lib/esm/content-fields/flow-video.d.ts +2 -2
- package/lib/esm/content-fields/flow-video.js +24 -15
- package/lib/esm/content-fields/flow-video.js.map +1 -1
- package/lib/esm/content-fields/flow-webview.d.ts +2 -2
- package/lib/esm/content-fields/flow-webview.js +31 -28
- package/lib/esm/content-fields/flow-webview.js.map +1 -1
- package/lib/esm/content-fields/flow-whatsapp-cta-url-button.d.ts +3 -3
- package/lib/esm/content-fields/flow-whatsapp-cta-url-button.js +91 -52
- 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 +3 -4
- package/lib/esm/content-fields/flow-whatsapp-request-contact-info.js +32 -26
- package/lib/esm/content-fields/flow-whatsapp-request-contact-info.js.map +1 -1
- package/lib/esm/content-fields/flow-whatsapp-template.d.ts +2 -2
- package/lib/esm/content-fields/flow-whatsapp-template.js +119 -102
- package/lib/esm/content-fields/flow-whatsapp-template.js.map +1 -1
- package/lib/esm/content-fields/hubtype-fields/ai-agent-router.d.ts +3 -3
- package/lib/esm/content-fields/hubtype-fields/ai-agent-router.js +3 -2
- package/lib/esm/content-fields/hubtype-fields/ai-agent-router.js.map +1 -1
- package/lib/esm/content-fields/hubtype-fields/ai-agent.d.ts +2 -2
- package/lib/esm/content-fields/hubtype-fields/ai-agent.js +3 -2
- package/lib/esm/content-fields/hubtype-fields/ai-agent.js.map +1 -1
- package/lib/esm/content-fields/hubtype-fields/bot-action.d.ts +2 -2
- package/lib/esm/content-fields/hubtype-fields/bot-action.js +3 -2
- package/lib/esm/content-fields/hubtype-fields/bot-action.js.map +1 -1
- package/lib/esm/content-fields/hubtype-fields/button.d.ts +1 -1
- package/lib/esm/content-fields/hubtype-fields/button.js +3 -2
- package/lib/esm/content-fields/hubtype-fields/button.js.map +1 -1
- package/lib/esm/content-fields/hubtype-fields/capture-user-input.d.ts +2 -2
- package/lib/esm/content-fields/hubtype-fields/capture-user-input.js +6 -6
- package/lib/esm/content-fields/hubtype-fields/capture-user-input.js.map +1 -1
- package/lib/esm/content-fields/hubtype-fields/carousel.d.ts +3 -3
- package/lib/esm/content-fields/hubtype-fields/carousel.js +3 -2
- package/lib/esm/content-fields/hubtype-fields/carousel.js.map +1 -1
- package/lib/esm/content-fields/hubtype-fields/channel-conditional.d.ts +3 -3
- package/lib/esm/content-fields/hubtype-fields/channel-conditional.js +3 -2
- package/lib/esm/content-fields/hubtype-fields/channel-conditional.js.map +1 -1
- package/lib/esm/content-fields/hubtype-fields/common.d.ts +2 -2
- package/lib/esm/content-fields/hubtype-fields/common.js +3 -2
- package/lib/esm/content-fields/hubtype-fields/common.js.map +1 -1
- package/lib/esm/content-fields/hubtype-fields/country-conditional.d.ts +3 -3
- package/lib/esm/content-fields/hubtype-fields/country-conditional.js +3 -2
- package/lib/esm/content-fields/hubtype-fields/country-conditional.js.map +1 -1
- package/lib/esm/content-fields/hubtype-fields/custom-conditional-v2.d.ts +2 -2
- package/lib/esm/content-fields/hubtype-fields/custom-conditional-v2.js +15 -15
- package/lib/esm/content-fields/hubtype-fields/custom-conditional-v2.js.map +1 -1
- package/lib/esm/content-fields/hubtype-fields/custom-conditional.d.ts +3 -3
- package/lib/esm/content-fields/hubtype-fields/custom-conditional.js +3 -2
- package/lib/esm/content-fields/hubtype-fields/custom-conditional.js.map +1 -1
- package/lib/esm/content-fields/hubtype-fields/fallback.d.ts +2 -2
- package/lib/esm/content-fields/hubtype-fields/fallback.js +3 -2
- package/lib/esm/content-fields/hubtype-fields/fallback.js.map +1 -1
- package/lib/esm/content-fields/hubtype-fields/function.d.ts +2 -2
- package/lib/esm/content-fields/hubtype-fields/function.js +6 -6
- package/lib/esm/content-fields/hubtype-fields/function.js.map +1 -1
- package/lib/esm/content-fields/hubtype-fields/go-to-flow.d.ts +2 -2
- package/lib/esm/content-fields/hubtype-fields/go-to-flow.js +3 -2
- package/lib/esm/content-fields/hubtype-fields/go-to-flow.js.map +1 -1
- package/lib/esm/content-fields/hubtype-fields/handoff.d.ts +2 -2
- package/lib/esm/content-fields/hubtype-fields/handoff.js +3 -2
- package/lib/esm/content-fields/hubtype-fields/handoff.js.map +1 -1
- package/lib/esm/content-fields/hubtype-fields/image.d.ts +2 -2
- package/lib/esm/content-fields/hubtype-fields/image.js +3 -2
- package/lib/esm/content-fields/hubtype-fields/image.js.map +1 -1
- package/lib/esm/content-fields/hubtype-fields/index.d.ts +27 -27
- package/lib/esm/content-fields/hubtype-fields/index.js +56 -30
- package/lib/esm/content-fields/hubtype-fields/index.js.map +1 -1
- package/lib/esm/content-fields/hubtype-fields/keyword.d.ts +2 -2
- package/lib/esm/content-fields/hubtype-fields/keyword.js +3 -2
- package/lib/esm/content-fields/hubtype-fields/keyword.js.map +1 -1
- package/lib/esm/content-fields/hubtype-fields/node-types.js +12 -12
- package/lib/esm/content-fields/hubtype-fields/node-types.js.map +1 -1
- package/lib/esm/content-fields/hubtype-fields/nodes.d.ts +23 -23
- package/lib/esm/content-fields/hubtype-fields/nodes.js +3 -2
- package/lib/esm/content-fields/hubtype-fields/nodes.js.map +1 -1
- package/lib/esm/content-fields/hubtype-fields/payload.d.ts +1 -1
- package/lib/esm/content-fields/hubtype-fields/payload.js +3 -2
- package/lib/esm/content-fields/hubtype-fields/payload.js.map +1 -1
- package/lib/esm/content-fields/hubtype-fields/queue-status-conditional.d.ts +3 -3
- package/lib/esm/content-fields/hubtype-fields/queue-status-conditional.js +3 -2
- package/lib/esm/content-fields/hubtype-fields/queue-status-conditional.js.map +1 -1
- package/lib/esm/content-fields/hubtype-fields/rating.d.ts +2 -2
- package/lib/esm/content-fields/hubtype-fields/rating.js +6 -6
- package/lib/esm/content-fields/hubtype-fields/rating.js.map +1 -1
- package/lib/esm/content-fields/hubtype-fields/smart-intent.d.ts +2 -2
- package/lib/esm/content-fields/hubtype-fields/smart-intent.js +3 -2
- package/lib/esm/content-fields/hubtype-fields/smart-intent.js.map +1 -1
- package/lib/esm/content-fields/hubtype-fields/text.d.ts +3 -3
- package/lib/esm/content-fields/hubtype-fields/text.js +3 -2
- package/lib/esm/content-fields/hubtype-fields/text.js.map +1 -1
- package/lib/esm/content-fields/hubtype-fields/url.d.ts +1 -1
- package/lib/esm/content-fields/hubtype-fields/url.js +3 -2
- package/lib/esm/content-fields/hubtype-fields/url.js.map +1 -1
- package/lib/esm/content-fields/hubtype-fields/video.d.ts +2 -2
- package/lib/esm/content-fields/hubtype-fields/video.js +3 -2
- package/lib/esm/content-fields/hubtype-fields/video.js.map +1 -1
- package/lib/esm/content-fields/hubtype-fields/webview.d.ts +2 -2
- package/lib/esm/content-fields/hubtype-fields/webview.js +3 -2
- package/lib/esm/content-fields/hubtype-fields/webview.js.map +1 -1
- package/lib/esm/content-fields/hubtype-fields/whatsapp-button-list.d.ts +2 -2
- package/lib/esm/content-fields/hubtype-fields/whatsapp-button-list.js +3 -2
- package/lib/esm/content-fields/hubtype-fields/whatsapp-button-list.js.map +1 -1
- package/lib/esm/content-fields/hubtype-fields/whatsapp-cta-url-button.d.ts +3 -3
- package/lib/esm/content-fields/hubtype-fields/whatsapp-cta-url-button.js +3 -2
- package/lib/esm/content-fields/hubtype-fields/whatsapp-cta-url-button.js.map +1 -1
- package/lib/esm/content-fields/hubtype-fields/whatsapp-request-contact-info.d.ts +2 -2
- package/lib/esm/content-fields/hubtype-fields/whatsapp-request-contact-info.js +3 -2
- package/lib/esm/content-fields/hubtype-fields/whatsapp-request-contact-info.js.map +1 -1
- package/lib/esm/content-fields/hubtype-fields/whatsapp-template.d.ts +3 -3
- package/lib/esm/content-fields/hubtype-fields/whatsapp-template.js +6 -6
- package/lib/esm/content-fields/hubtype-fields/whatsapp-template.js.map +1 -1
- package/lib/esm/content-fields/index.d.ts +23 -23
- package/lib/esm/content-fields/index.js +72 -51
- package/lib/esm/content-fields/index.js.map +1 -1
- package/lib/esm/content-fields/whatsapp-button-list/flow-whatsapp-button-list-row.d.ts +3 -3
- package/lib/esm/content-fields/whatsapp-button-list/flow-whatsapp-button-list-row.js +16 -14
- 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 +4 -4
- package/lib/esm/content-fields/whatsapp-button-list/flow-whatsapp-button-list-section.js +20 -15
- 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 +4 -4
- package/lib/esm/content-fields/whatsapp-button-list/flow-whatsapp-button-list.js +46 -26
- package/lib/esm/content-fields/whatsapp-button-list/flow-whatsapp-button-list.js.map +1 -1
- package/lib/esm/content-fields/whatsapp-button-list/index.d.ts +3 -3
- package/lib/esm/content-fields/whatsapp-button-list/index.js +11 -9
- package/lib/esm/content-fields/whatsapp-button-list/index.js.map +1 -1
- package/lib/esm/filters/index.d.ts +2 -2
- package/lib/esm/filters/index.js +8 -9
- package/lib/esm/filters/index.js.map +1 -1
- package/lib/esm/flow-factory.d.ts +3 -3
- package/lib/esm/flow-factory.js +57 -51
- package/lib/esm/flow-factory.js.map +1 -1
- package/lib/esm/functions/index.d.ts +1 -1
- package/lib/esm/functions/index.js +25 -19
- package/lib/esm/functions/index.js.map +1 -1
- package/lib/esm/index.d.ts +12 -12
- package/lib/esm/index.js +94 -77
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/package.json +3 -0
- package/lib/esm/services/hubtype-queues-api.js +14 -14
- package/lib/esm/services/hubtype-queues-api.js.map +1 -1
- package/lib/esm/structured-output/flow-builder-content.js +14 -13
- package/lib/esm/structured-output/flow-builder-content.js.map +1 -1
- package/lib/esm/tracking.d.ts +2 -2
- package/lib/esm/tracking.js +27 -21
- package/lib/esm/tracking.js.map +1 -1
- package/lib/esm/types.d.ts +5 -5
- package/lib/esm/types.js +9 -9
- package/lib/esm/types.js.map +1 -1
- package/lib/esm/user-input/capture-user-input-api.d.ts +2 -2
- package/lib/esm/user-input/capture-user-input-api.js +44 -33
- package/lib/esm/user-input/capture-user-input-api.js.map +1 -1
- package/lib/esm/user-input/index.d.ts +2 -2
- package/lib/esm/user-input/index.js +23 -14
- package/lib/esm/user-input/index.js.map +1 -1
- package/lib/esm/user-input/keyword.d.ts +2 -2
- package/lib/esm/user-input/keyword.js +31 -26
- package/lib/esm/user-input/keyword.js.map +1 -1
- package/lib/esm/user-input/smart-intent.d.ts +2 -2
- package/lib/esm/user-input/smart-intent.js +36 -32
- package/lib/esm/user-input/smart-intent.js.map +1 -1
- package/lib/esm/utils/ai-agent.d.ts +3 -3
- package/lib/esm/utils/ai-agent.js +17 -12
- package/lib/esm/utils/ai-agent.js.map +1 -1
- package/lib/esm/utils/authentication.js +10 -7
- package/lib/esm/utils/authentication.js.map +1 -1
- package/lib/esm/utils/flow-locale.js +14 -18
- package/lib/esm/utils/flow-locale.js.map +1 -1
- package/lib/esm/utils/get-flow-builder-plugin.d.ts +1 -1
- package/lib/esm/utils/get-flow-builder-plugin.js +4 -4
- package/lib/esm/utils/get-flow-builder-plugin.js.map +1 -1
- package/lib/esm/utils/hubtype-assistant-content.d.ts +1 -2
- package/lib/esm/utils/hubtype-assistant-content.js +57 -54
- package/lib/esm/utils/hubtype-assistant-content.js.map +1 -1
- package/lib/esm/utils/input.js +16 -14
- package/lib/esm/utils/input.js.map +1 -1
- package/lib/esm/webview/contents-context.d.ts +1 -1
- package/lib/esm/webview/contents-context.js +13 -11
- package/lib/esm/webview/contents-context.js.map +1 -1
- package/lib/esm/webview/index.d.ts +3 -3
- package/lib/esm/webview/index.js +10 -9
- package/lib/esm/webview/index.js.map +1 -1
- package/lib/esm/webview/types.d.ts +1 -1
- package/lib/esm/webview/types.js +6 -6
- package/lib/esm/webview/types.js.map +1 -1
- package/lib/esm/webview/use-webview-contents.d.ts +1 -1
- package/lib/esm/webview/use-webview-contents.js +46 -39
- package/lib/esm/webview/use-webview-contents.js.map +1 -1
- package/package.json +8 -7
- package/src/content-fields/flow-ai-agent-base.tsx +0 -11
- package/src/content-fields/flow-whatsapp-request-contact-info.tsx +1 -17
- package/src/index.ts +5 -5
- package/src/types.ts +6 -6
- package/src/utils/hubtype-assistant-content.ts +0 -14
- package/lib/cjs/action/ai-agent-from-user-input.d.ts +0 -3
- package/lib/cjs/action/ai-agent-from-user-input.js +0 -32
- package/lib/cjs/action/ai-agent-from-user-input.js.map +0 -1
- package/lib/cjs/action/context.d.ts +0 -11
- package/lib/cjs/action/context.js +0 -17
- package/lib/cjs/action/context.js.map +0 -1
- package/lib/cjs/action/fallback.d.ts +0 -3
- package/lib/cjs/action/fallback.js +0 -36
- package/lib/cjs/action/fallback.js.map +0 -1
- package/lib/cjs/action/first-interaction.d.ts +0 -3
- package/lib/cjs/action/first-interaction.js +0 -88
- package/lib/cjs/action/first-interaction.js.map +0 -1
- package/lib/cjs/action/get-contents.d.ts +0 -3
- package/lib/cjs/action/get-contents.js +0 -39
- package/lib/cjs/action/get-contents.js.map +0 -1
- package/lib/cjs/action/index.d.ts +0 -25
- package/lib/cjs/action/index.js +0 -90
- package/lib/cjs/action/index.js.map +0 -1
- package/lib/cjs/action/payload.d.ts +0 -3
- package/lib/cjs/action/payload.js +0 -74
- package/lib/cjs/action/payload.js.map +0 -1
- package/lib/cjs/api.d.ts +0 -40
- package/lib/cjs/api.js +0 -205
- package/lib/cjs/api.js.map +0 -1
- package/lib/cjs/constants.d.ts +0 -13
- package/lib/cjs/constants.js +0 -19
- package/lib/cjs/constants.js.map +0 -1
- package/lib/cjs/content-fields/content-fields-base.d.ts +0 -20
- package/lib/cjs/content-fields/content-fields-base.js +0 -74
- package/lib/cjs/content-fields/content-fields-base.js.map +0 -1
- package/lib/cjs/content-fields/custom-conditional/custom-conditional-v2-evaluators.d.ts +0 -15
- package/lib/cjs/content-fields/custom-conditional/custom-conditional-v2-evaluators.js +0 -71
- package/lib/cjs/content-fields/custom-conditional/custom-conditional-v2-evaluators.js.map +0 -1
- package/lib/cjs/content-fields/custom-conditional/custom-conditional-v2-resolver.d.ts +0 -9
- package/lib/cjs/content-fields/custom-conditional/custom-conditional-v2-resolver.js +0 -58
- package/lib/cjs/content-fields/custom-conditional/custom-conditional-v2-resolver.js.map +0 -1
- package/lib/cjs/content-fields/custom-conditional/flow-custom-condition-v2.d.ts +0 -17
- package/lib/cjs/content-fields/custom-conditional/flow-custom-condition-v2.js +0 -79
- package/lib/cjs/content-fields/custom-conditional/flow-custom-condition-v2.js.map +0 -1
- package/lib/cjs/content-fields/flow-ai-agent-base.d.ts +0 -25
- package/lib/cjs/content-fields/flow-ai-agent-base.js +0 -97
- package/lib/cjs/content-fields/flow-ai-agent-base.js.map +0 -1
- package/lib/cjs/content-fields/flow-ai-agent-router.d.ts +0 -21
- package/lib/cjs/content-fields/flow-ai-agent-router.js +0 -125
- package/lib/cjs/content-fields/flow-ai-agent-router.js.map +0 -1
- package/lib/cjs/content-fields/flow-ai-agent.d.ts +0 -17
- package/lib/cjs/content-fields/flow-ai-agent.js +0 -64
- package/lib/cjs/content-fields/flow-ai-agent.js.map +0 -1
- package/lib/cjs/content-fields/flow-bot-action.d.ts +0 -14
- package/lib/cjs/content-fields/flow-bot-action.js +0 -45
- package/lib/cjs/content-fields/flow-bot-action.js.map +0 -1
- package/lib/cjs/content-fields/flow-button.d.ts +0 -31
- package/lib/cjs/content-fields/flow-button.js +0 -86
- package/lib/cjs/content-fields/flow-button.js.map +0 -1
- package/lib/cjs/content-fields/flow-capture-user-input.d.ts +0 -14
- package/lib/cjs/content-fields/flow-capture-user-input.js +0 -45
- package/lib/cjs/content-fields/flow-capture-user-input.js.map +0 -1
- package/lib/cjs/content-fields/flow-carousel.d.ts +0 -22
- package/lib/cjs/content-fields/flow-carousel.js +0 -152
- package/lib/cjs/content-fields/flow-carousel.js.map +0 -1
- package/lib/cjs/content-fields/flow-channel-conditional.d.ts +0 -14
- package/lib/cjs/content-fields/flow-channel-conditional.js +0 -57
- package/lib/cjs/content-fields/flow-channel-conditional.js.map +0 -1
- package/lib/cjs/content-fields/flow-country-conditional.d.ts +0 -13
- package/lib/cjs/content-fields/flow-country-conditional.js +0 -59
- package/lib/cjs/content-fields/flow-country-conditional.js.map +0 -1
- package/lib/cjs/content-fields/flow-custom-conditional.d.ts +0 -17
- package/lib/cjs/content-fields/flow-custom-conditional.js +0 -89
- package/lib/cjs/content-fields/flow-custom-conditional.js.map +0 -1
- package/lib/cjs/content-fields/flow-element.d.ts +0 -22
- package/lib/cjs/content-fields/flow-element.js +0 -50
- package/lib/cjs/content-fields/flow-element.js.map +0 -1
- package/lib/cjs/content-fields/flow-go-to-flow.d.ts +0 -13
- package/lib/cjs/content-fields/flow-go-to-flow.js +0 -51
- package/lib/cjs/content-fields/flow-go-to-flow.js.map +0 -1
- package/lib/cjs/content-fields/flow-handoff.d.ts +0 -17
- package/lib/cjs/content-fields/flow-handoff.js +0 -68
- package/lib/cjs/content-fields/flow-handoff.js.map +0 -1
- package/lib/cjs/content-fields/flow-image.d.ts +0 -10
- package/lib/cjs/content-fields/flow-image.js +0 -33
- package/lib/cjs/content-fields/flow-image.js.map +0 -1
- package/lib/cjs/content-fields/flow-queue-status-conditional.d.ts +0 -30
- package/lib/cjs/content-fields/flow-queue-status-conditional.js +0 -95
- package/lib/cjs/content-fields/flow-queue-status-conditional.js.map +0 -1
- package/lib/cjs/content-fields/flow-rating.d.ts +0 -15
- package/lib/cjs/content-fields/flow-rating.js +0 -66
- package/lib/cjs/content-fields/flow-rating.js.map +0 -1
- package/lib/cjs/content-fields/flow-text.d.ts +0 -15
- package/lib/cjs/content-fields/flow-text.js +0 -60
- package/lib/cjs/content-fields/flow-text.js.map +0 -1
- package/lib/cjs/content-fields/flow-video.d.ts +0 -10
- package/lib/cjs/content-fields/flow-video.js +0 -33
- package/lib/cjs/content-fields/flow-video.js.map +0 -1
- package/lib/cjs/content-fields/flow-webview.d.ts +0 -16
- package/lib/cjs/content-fields/flow-webview.js +0 -78
- package/lib/cjs/content-fields/flow-webview.js.map +0 -1
- package/lib/cjs/content-fields/flow-whatsapp-cta-url-button.d.ts +0 -21
- package/lib/cjs/content-fields/flow-whatsapp-cta-url-button.js +0 -92
- package/lib/cjs/content-fields/flow-whatsapp-cta-url-button.js.map +0 -1
- package/lib/cjs/content-fields/flow-whatsapp-request-contact-info.d.ts +0 -11
- package/lib/cjs/content-fields/flow-whatsapp-request-contact-info.js +0 -45
- package/lib/cjs/content-fields/flow-whatsapp-request-contact-info.js.map +0 -1
- package/lib/cjs/content-fields/flow-whatsapp-template.d.ts +0 -37
- package/lib/cjs/content-fields/flow-whatsapp-template.js +0 -264
- package/lib/cjs/content-fields/flow-whatsapp-template.js.map +0 -1
- package/lib/cjs/content-fields/hubtype-fields/ai-agent-router.d.ts +0 -21
- package/lib/cjs/content-fields/hubtype-fields/ai-agent-router.js +0 -3
- package/lib/cjs/content-fields/hubtype-fields/ai-agent-router.js.map +0 -1
- package/lib/cjs/content-fields/hubtype-fields/ai-agent.d.ts +0 -25
- package/lib/cjs/content-fields/hubtype-fields/ai-agent.js +0 -3
- package/lib/cjs/content-fields/hubtype-fields/ai-agent.js.map +0 -1
- package/lib/cjs/content-fields/hubtype-fields/bot-action.d.ts +0 -10
- package/lib/cjs/content-fields/hubtype-fields/bot-action.js +0 -3
- package/lib/cjs/content-fields/hubtype-fields/bot-action.js.map +0 -1
- package/lib/cjs/content-fields/hubtype-fields/button.d.ts +0 -8
- package/lib/cjs/content-fields/hubtype-fields/button.js +0 -3
- package/lib/cjs/content-fields/hubtype-fields/button.js.map +0 -1
- package/lib/cjs/content-fields/hubtype-fields/capture-user-input.d.ts +0 -19
- package/lib/cjs/content-fields/hubtype-fields/capture-user-input.js +0 -12
- package/lib/cjs/content-fields/hubtype-fields/capture-user-input.js.map +0 -1
- package/lib/cjs/content-fields/hubtype-fields/carousel.d.ts +0 -17
- package/lib/cjs/content-fields/hubtype-fields/carousel.js +0 -3
- package/lib/cjs/content-fields/hubtype-fields/carousel.js.map +0 -1
- package/lib/cjs/content-fields/hubtype-fields/channel-conditional.d.ts +0 -10
- package/lib/cjs/content-fields/hubtype-fields/channel-conditional.js +0 -3
- package/lib/cjs/content-fields/hubtype-fields/channel-conditional.js.map +0 -1
- package/lib/cjs/content-fields/hubtype-fields/common.d.ts +0 -83
- package/lib/cjs/content-fields/hubtype-fields/common.js +0 -3
- package/lib/cjs/content-fields/hubtype-fields/common.js.map +0 -1
- package/lib/cjs/content-fields/hubtype-fields/country-conditional.d.ts +0 -10
- package/lib/cjs/content-fields/hubtype-fields/country-conditional.js +0 -3
- package/lib/cjs/content-fields/hubtype-fields/country-conditional.js.map +0 -1
- package/lib/cjs/content-fields/hubtype-fields/custom-conditional-v2.d.ts +0 -56
- package/lib/cjs/content-fields/hubtype-fields/custom-conditional-v2.js +0 -36
- package/lib/cjs/content-fields/hubtype-fields/custom-conditional-v2.js.map +0 -1
- package/lib/cjs/content-fields/hubtype-fields/custom-conditional.d.ts +0 -11
- package/lib/cjs/content-fields/hubtype-fields/custom-conditional.js +0 -3
- package/lib/cjs/content-fields/hubtype-fields/custom-conditional.js.map +0 -1
- package/lib/cjs/content-fields/hubtype-fields/fallback.d.ts +0 -9
- package/lib/cjs/content-fields/hubtype-fields/fallback.js +0 -3
- package/lib/cjs/content-fields/hubtype-fields/fallback.js.map +0 -1
- package/lib/cjs/content-fields/hubtype-fields/function.d.ts +0 -30
- package/lib/cjs/content-fields/hubtype-fields/function.js +0 -11
- package/lib/cjs/content-fields/hubtype-fields/function.js.map +0 -1
- package/lib/cjs/content-fields/hubtype-fields/go-to-flow.d.ts +0 -9
- package/lib/cjs/content-fields/hubtype-fields/go-to-flow.js +0 -3
- package/lib/cjs/content-fields/hubtype-fields/go-to-flow.js.map +0 -1
- package/lib/cjs/content-fields/hubtype-fields/handoff.d.ts +0 -11
- package/lib/cjs/content-fields/hubtype-fields/handoff.js +0 -3
- package/lib/cjs/content-fields/hubtype-fields/handoff.js.map +0 -1
- package/lib/cjs/content-fields/hubtype-fields/image.d.ts +0 -8
- package/lib/cjs/content-fields/hubtype-fields/image.js +0 -3
- package/lib/cjs/content-fields/hubtype-fields/image.js.map +0 -1
- package/lib/cjs/content-fields/hubtype-fields/index.d.ts +0 -27
- package/lib/cjs/content-fields/hubtype-fields/index.js +0 -31
- package/lib/cjs/content-fields/hubtype-fields/index.js.map +0 -1
- package/lib/cjs/content-fields/hubtype-fields/keyword.d.ts +0 -9
- package/lib/cjs/content-fields/hubtype-fields/keyword.js +0 -3
- package/lib/cjs/content-fields/hubtype-fields/keyword.js.map +0 -1
- package/lib/cjs/content-fields/hubtype-fields/node-types.d.ts +0 -31
- package/lib/cjs/content-fields/hubtype-fields/node-types.js +0 -38
- package/lib/cjs/content-fields/hubtype-fields/node-types.js.map +0 -1
- package/lib/cjs/content-fields/hubtype-fields/nodes.d.ts +0 -26
- package/lib/cjs/content-fields/hubtype-fields/nodes.js +0 -3
- package/lib/cjs/content-fields/hubtype-fields/nodes.js.map +0 -1
- package/lib/cjs/content-fields/hubtype-fields/payload.d.ts +0 -8
- package/lib/cjs/content-fields/hubtype-fields/payload.js +0 -3
- package/lib/cjs/content-fields/hubtype-fields/payload.js.map +0 -1
- package/lib/cjs/content-fields/hubtype-fields/queue-status-conditional.d.ts +0 -25
- package/lib/cjs/content-fields/hubtype-fields/queue-status-conditional.js +0 -3
- package/lib/cjs/content-fields/hubtype-fields/queue-status-conditional.js.map +0 -1
- package/lib/cjs/content-fields/hubtype-fields/rating.d.ts +0 -23
- package/lib/cjs/content-fields/hubtype-fields/rating.js +0 -9
- package/lib/cjs/content-fields/hubtype-fields/rating.js.map +0 -1
- package/lib/cjs/content-fields/hubtype-fields/smart-intent.d.ts +0 -12
- package/lib/cjs/content-fields/hubtype-fields/smart-intent.js +0 -3
- package/lib/cjs/content-fields/hubtype-fields/smart-intent.js.map +0 -1
- package/lib/cjs/content-fields/hubtype-fields/text.d.ts +0 -11
- package/lib/cjs/content-fields/hubtype-fields/text.js +0 -3
- package/lib/cjs/content-fields/hubtype-fields/text.js.map +0 -1
- package/lib/cjs/content-fields/hubtype-fields/url.d.ts +0 -8
- package/lib/cjs/content-fields/hubtype-fields/url.js +0 -3
- package/lib/cjs/content-fields/hubtype-fields/url.js.map +0 -1
- package/lib/cjs/content-fields/hubtype-fields/video.d.ts +0 -8
- package/lib/cjs/content-fields/hubtype-fields/video.js +0 -3
- package/lib/cjs/content-fields/hubtype-fields/video.js.map +0 -1
- package/lib/cjs/content-fields/hubtype-fields/webview.d.ts +0 -17
- package/lib/cjs/content-fields/hubtype-fields/webview.js +0 -3
- package/lib/cjs/content-fields/hubtype-fields/webview.js.map +0 -1
- package/lib/cjs/content-fields/hubtype-fields/whatsapp-button-list.d.ts +0 -21
- package/lib/cjs/content-fields/hubtype-fields/whatsapp-button-list.js +0 -3
- package/lib/cjs/content-fields/hubtype-fields/whatsapp-button-list.js.map +0 -1
- package/lib/cjs/content-fields/hubtype-fields/whatsapp-cta-url-button.d.ts +0 -17
- package/lib/cjs/content-fields/hubtype-fields/whatsapp-cta-url-button.js +0 -3
- package/lib/cjs/content-fields/hubtype-fields/whatsapp-cta-url-button.js.map +0 -1
- package/lib/cjs/content-fields/hubtype-fields/whatsapp-request-contact-info.d.ts +0 -8
- package/lib/cjs/content-fields/hubtype-fields/whatsapp-request-contact-info.js +0 -3
- package/lib/cjs/content-fields/hubtype-fields/whatsapp-request-contact-info.js.map +0 -1
- package/lib/cjs/content-fields/hubtype-fields/whatsapp-template.d.ts +0 -96
- package/lib/cjs/content-fields/hubtype-fields/whatsapp-template.js +0 -9
- package/lib/cjs/content-fields/hubtype-fields/whatsapp-template.js.map +0 -1
- package/lib/cjs/content-fields/index.d.ts +0 -25
- package/lib/cjs/content-fields/index.js +0 -52
- package/lib/cjs/content-fields/index.js.map +0 -1
- package/lib/cjs/content-fields/whatsapp-button-list/flow-whatsapp-button-list-row.d.ts +0 -14
- package/lib/cjs/content-fields/whatsapp-button-list/flow-whatsapp-button-list-row.js +0 -41
- package/lib/cjs/content-fields/whatsapp-button-list/flow-whatsapp-button-list-row.js.map +0 -1
- package/lib/cjs/content-fields/whatsapp-button-list/flow-whatsapp-button-list-section.d.ts +0 -13
- package/lib/cjs/content-fields/whatsapp-button-list/flow-whatsapp-button-list-section.js +0 -36
- package/lib/cjs/content-fields/whatsapp-button-list/flow-whatsapp-button-list-section.js.map +0 -1
- package/lib/cjs/content-fields/whatsapp-button-list/flow-whatsapp-button-list.d.ts +0 -14
- package/lib/cjs/content-fields/whatsapp-button-list/flow-whatsapp-button-list.js +0 -46
- package/lib/cjs/content-fields/whatsapp-button-list/flow-whatsapp-button-list.js.map +0 -1
- package/lib/cjs/content-fields/whatsapp-button-list/index.d.ts +0 -3
- package/lib/cjs/content-fields/whatsapp-button-list/index.js +0 -10
- package/lib/cjs/content-fields/whatsapp-button-list/index.js.map +0 -1
- package/lib/cjs/filters/index.d.ts +0 -12
- package/lib/cjs/filters/index.js +0 -17
- package/lib/cjs/filters/index.js.map +0 -1
- package/lib/cjs/flow-factory.d.ts +0 -12
- package/lib/cjs/flow-factory.js +0 -69
- package/lib/cjs/flow-factory.js.map +0 -1
- package/lib/cjs/functions/index.d.ts +0 -11
- package/lib/cjs/functions/index.js +0 -49
- package/lib/cjs/functions/index.js.map +0 -1
- package/lib/cjs/index.d.ts +0 -45
- package/lib/cjs/index.js +0 -178
- package/lib/cjs/index.js.map +0 -1
- package/lib/cjs/services/hubtype-queues-api.d.ts +0 -14
- package/lib/cjs/services/hubtype-queues-api.js +0 -26
- package/lib/cjs/services/hubtype-queues-api.js.map +0 -1
- package/lib/cjs/structured-output/flow-builder-content.d.ts +0 -13
- package/lib/cjs/structured-output/flow-builder-content.js +0 -15
- package/lib/cjs/structured-output/flow-builder-content.js.map +0 -1
- package/lib/cjs/tracking.d.ts +0 -16
- package/lib/cjs/tracking.js +0 -71
- package/lib/cjs/tracking.js.map +0 -1
- package/lib/cjs/types.d.ts +0 -62
- package/lib/cjs/types.js +0 -14
- package/lib/cjs/types.js.map +0 -1
- package/lib/cjs/user-input/capture-user-input-api.d.ts +0 -21
- package/lib/cjs/user-input/capture-user-input-api.js +0 -88
- package/lib/cjs/user-input/capture-user-input-api.js.map +0 -1
- package/lib/cjs/user-input/index.d.ts +0 -4
- package/lib/cjs/user-input/index.js +0 -37
- package/lib/cjs/user-input/index.js.map +0 -1
- package/lib/cjs/user-input/keyword.d.ts +0 -27
- package/lib/cjs/user-input/keyword.js +0 -84
- package/lib/cjs/user-input/keyword.js.map +0 -1
- package/lib/cjs/user-input/smart-intent.d.ts +0 -24
- package/lib/cjs/user-input/smart-intent.js +0 -89
- package/lib/cjs/user-input/smart-intent.js.map +0 -1
- package/lib/cjs/utils/ai-agent.d.ts +0 -11
- package/lib/cjs/utils/ai-agent.js +0 -28
- package/lib/cjs/utils/ai-agent.js.map +0 -1
- package/lib/cjs/utils/authentication.d.ts +0 -2
- package/lib/cjs/utils/authentication.js +0 -21
- package/lib/cjs/utils/authentication.js.map +0 -1
- package/lib/cjs/utils/flow-locale.d.ts +0 -22
- package/lib/cjs/utils/flow-locale.js +0 -79
- package/lib/cjs/utils/flow-locale.js.map +0 -1
- package/lib/cjs/utils/get-flow-builder-plugin.d.ts +0 -3
- package/lib/cjs/utils/get-flow-builder-plugin.js +0 -16
- package/lib/cjs/utils/get-flow-builder-plugin.js.map +0 -1
- package/lib/cjs/utils/hubtype-assistant-content.d.ts +0 -13
- package/lib/cjs/utils/hubtype-assistant-content.js +0 -184
- package/lib/cjs/utils/hubtype-assistant-content.js.map +0 -1
- package/lib/cjs/utils/input.d.ts +0 -6
- package/lib/cjs/utils/input.js +0 -35
- package/lib/cjs/utils/input.js.map +0 -1
- package/lib/cjs/webview/contents-context.d.ts +0 -2
- package/lib/cjs/webview/contents-context.js +0 -12
- package/lib/cjs/webview/contents-context.js.map +0 -1
- package/lib/cjs/webview/index.d.ts +0 -3
- package/lib/cjs/webview/index.js +0 -10
- package/lib/cjs/webview/index.js.map +0 -1
- package/lib/cjs/webview/types.d.ts +0 -47
- package/lib/cjs/webview/types.js +0 -9
- package/lib/cjs/webview/types.js.map +0 -1
- package/lib/cjs/webview/use-webview-contents.d.ts +0 -2
- package/lib/cjs/webview/use-webview-contents.js +0 -83
- package/lib/cjs/webview/use-webview-contents.js.map +0 -1
package/lib/esm/tracking.js
CHANGED
|
@@ -1,34 +1,37 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
import { EventAction } from "@botonic/core";
|
|
2
|
+
import { v7 } from "uuid";
|
|
3
|
+
import { HtNodeWithContentType } from "./content-fields/hubtype-fields/index.js";
|
|
4
|
+
import { getFlowBuilderPlugin } from "./utils/get-flow-builder-plugin.js";
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
11
14
|
async function trackEvent(request, eventAction, args) {
|
|
12
|
-
const flowBuilderPlugin =
|
|
15
|
+
const flowBuilderPlugin = getFlowBuilderPlugin(request.plugins);
|
|
13
16
|
if (flowBuilderPlugin.trackEvent) {
|
|
14
17
|
await flowBuilderPlugin.trackEvent(request, eventAction, args);
|
|
15
18
|
}
|
|
16
19
|
return;
|
|
17
20
|
}
|
|
18
21
|
async function trackFlowContent(request, contents) {
|
|
19
|
-
const flowBuilderPlugin =
|
|
22
|
+
const flowBuilderPlugin = getFlowBuilderPlugin(request.plugins);
|
|
20
23
|
const cmsApi = flowBuilderPlugin.cmsApi;
|
|
21
|
-
for (const content of contents)
|
|
24
|
+
for (const content of contents){
|
|
22
25
|
await trackOneContent(request, content, cmsApi);
|
|
23
26
|
}
|
|
24
27
|
}
|
|
25
28
|
async function trackOneContent(request, content, cmsApi) {
|
|
26
29
|
if (!cmsApi) {
|
|
27
|
-
const flowBuilderPlugin =
|
|
30
|
+
const flowBuilderPlugin = getFlowBuilderPlugin(request.plugins);
|
|
28
31
|
cmsApi = flowBuilderPlugin.cmsApi;
|
|
29
32
|
}
|
|
30
33
|
const nodeContent = cmsApi.getNodeById(content.id);
|
|
31
|
-
if (nodeContent.type !==
|
|
34
|
+
if (nodeContent.type !== HtNodeWithContentType.AI_AGENT) {
|
|
32
35
|
const event = getContentEventArgs(request, nodeContent);
|
|
33
36
|
const { action, ...eventArgs } = event;
|
|
34
37
|
await trackEvent(request, action, eventArgs);
|
|
@@ -41,31 +44,34 @@ function getContentEventArgs(request, nodeContent) {
|
|
|
41
44
|
const { flowThreadId, flowId, flowName, flowNodeId, flowNodeContentId } = getCommonFlowContentEventArgs(request, nodeContent);
|
|
42
45
|
setSessionFlowThreadId(request, flowThreadId);
|
|
43
46
|
return {
|
|
44
|
-
action:
|
|
47
|
+
action: EventAction.FlowNode,
|
|
45
48
|
flowId,
|
|
46
49
|
flowName,
|
|
47
50
|
flowNodeId,
|
|
48
51
|
flowNodeContentId,
|
|
49
52
|
flowThreadId,
|
|
50
|
-
flowNodeIsMeaningful: nodeContent.is_meaningful ?? false
|
|
53
|
+
flowNodeIsMeaningful: nodeContent.is_meaningful ?? false
|
|
51
54
|
};
|
|
52
55
|
}
|
|
53
56
|
function getCommonFlowContentEventArgs(request, nodeContent) {
|
|
54
|
-
const flowBuilderPlugin =
|
|
57
|
+
const flowBuilderPlugin = getFlowBuilderPlugin(request.plugins);
|
|
55
58
|
const flowName = flowBuilderPlugin.getFlowName(nodeContent.flow_id);
|
|
56
|
-
const flowThreadId = request.session.flow_thread_id ??
|
|
59
|
+
const flowThreadId = request.session.flow_thread_id ?? v7();
|
|
57
60
|
return {
|
|
58
61
|
flowThreadId,
|
|
59
62
|
flowId: nodeContent.flow_id,
|
|
60
63
|
flowName,
|
|
61
64
|
flowNodeId: nodeContent.id,
|
|
62
|
-
flowNodeContentId: nodeContent.code ?? ''
|
|
65
|
+
flowNodeContentId: nodeContent.code ?? ''
|
|
63
66
|
};
|
|
64
67
|
}
|
|
65
68
|
function getCommonFlowContentEventArgsForContentId(botContext, id) {
|
|
66
|
-
const flowBuilderPlugin =
|
|
69
|
+
const flowBuilderPlugin = getFlowBuilderPlugin(botContext.plugins);
|
|
67
70
|
const cmsApi = flowBuilderPlugin.cmsApi;
|
|
68
71
|
const nodeContent = cmsApi.getNodeById(id);
|
|
69
72
|
return getCommonFlowContentEventArgs(botContext, nodeContent);
|
|
70
73
|
}
|
|
74
|
+
|
|
75
|
+
export { getCommonFlowContentEventArgsForContentId, trackEvent, trackFlowContent, trackOneContent };
|
|
76
|
+
|
|
71
77
|
//# sourceMappingURL=tracking.js.map
|
package/lib/esm/tracking.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracking.js","
|
|
1
|
+
{"version":3,"file":"tracking.js","sources":["../../src/tracking.ts"],"sourcesContent":["import { type BotContext, EventAction, type EventFlow } from '@botonic/core'\nimport type { ActionRequest } from '@botonic/react'\nimport { v7 as uuidv7 } from 'uuid'\n\nimport type { FlowBuilderApi } from './api'\nimport type { FlowContent } from './content-fields'\nimport {\n type HtNodeWithContent,\n HtNodeWithContentType,\n} from './content-fields/hubtype-fields'\nimport { getFlowBuilderPlugin } from './utils/get-flow-builder-plugin'\n\nexport async function trackEvent(\n request: ActionRequest,\n eventAction: EventAction,\n args?: Record<string, any>\n): Promise<void> {\n const flowBuilderPlugin = getFlowBuilderPlugin(request.plugins)\n if (flowBuilderPlugin.trackEvent) {\n await flowBuilderPlugin.trackEvent(request, eventAction, args)\n }\n return\n}\n\nexport async function trackFlowContent(\n request: ActionRequest,\n contents: FlowContent[]\n) {\n const flowBuilderPlugin = getFlowBuilderPlugin(request.plugins)\n const cmsApi = flowBuilderPlugin.cmsApi\n for (const content of contents) {\n await trackOneContent(request, content, cmsApi)\n }\n}\n\nexport async function trackOneContent(\n request: ActionRequest,\n content: FlowContent,\n cmsApi?: FlowBuilderApi\n) {\n if (!cmsApi) {\n const flowBuilderPlugin = getFlowBuilderPlugin(request.plugins)\n cmsApi = flowBuilderPlugin.cmsApi\n }\n\n const nodeContent = cmsApi.getNodeById<HtNodeWithContent>(content.id)\n if (nodeContent.type !== HtNodeWithContentType.AI_AGENT) {\n const event = getContentEventArgs(request, nodeContent)\n const { action, ...eventArgs } = event\n await trackEvent(request, action, eventArgs)\n }\n}\n\nfunction setSessionFlowThreadId(\n request: ActionRequest,\n flowThreadId: string\n): void {\n request.session.flow_thread_id = flowThreadId\n}\n\nfunction getContentEventArgs(\n request: ActionRequest,\n nodeContent: HtNodeWithContent\n): EventFlow {\n const { flowThreadId, flowId, flowName, flowNodeId, flowNodeContentId } =\n getCommonFlowContentEventArgs(request, nodeContent)\n\n setSessionFlowThreadId(request, flowThreadId)\n\n return {\n action: EventAction.FlowNode,\n flowId,\n flowName,\n flowNodeId,\n flowNodeContentId,\n flowThreadId,\n flowNodeIsMeaningful: nodeContent.is_meaningful ?? false,\n }\n}\n\ntype CommonFlowContentEventArgs = {\n flowThreadId: string\n flowId: string\n flowName: string\n flowNodeId: string\n flowNodeContentId: string\n}\n\nfunction getCommonFlowContentEventArgs(\n request: ActionRequest,\n nodeContent: HtNodeWithContent\n): CommonFlowContentEventArgs {\n const flowBuilderPlugin = getFlowBuilderPlugin(request.plugins)\n const flowName = flowBuilderPlugin.getFlowName(nodeContent.flow_id)\n const flowThreadId = request.session.flow_thread_id ?? uuidv7()\n\n return {\n flowThreadId,\n flowId: nodeContent.flow_id,\n flowName,\n flowNodeId: nodeContent.id,\n flowNodeContentId: nodeContent.code ?? '',\n }\n}\n\nexport function getCommonFlowContentEventArgsForContentId(\n botContext: BotContext,\n id: string\n): CommonFlowContentEventArgs {\n const flowBuilderPlugin = getFlowBuilderPlugin(botContext.plugins)\n const cmsApi = flowBuilderPlugin.cmsApi\n const nodeContent = cmsApi.getNodeById<HtNodeWithContent>(id)\n\n return getCommonFlowContentEventArgs(botContext, nodeContent)\n}\n"],"names":["EventAction","v7","uuidv7","HtNodeWithContentType","getFlowBuilderPlugin","trackEvent","request","eventAction","args","flowBuilderPlugin","trackFlowContent","contents","cmsApi","content","trackOneContent","nodeContent","event","getContentEventArgs","action","eventArgs","setSessionFlowThreadId","flowThreadId","flowId","flowName","flowNodeId","flowNodeContentId","getCommonFlowContentEventArgs","getCommonFlowContentEventArgsForContentId","botContext","id"],"mappings":";;;;;;;;;AAA4E;AAEzC;AAOK;AAC8B;AAE/D,eAAeK,UAAUA,CAC9BC,OAAsB,EACtBC,WAAwB,EACxBC,IAA0B;IAE1B,MAAMC,oBAAoBL,oBAAoBA,CAACE,QAAQ,OAAO;IAC9D,IAAIG,kBAAkB,UAAU,EAAE;QAChC,MAAMA,kBAAkB,UAAU,CAACH,SAASC,aAAaC;IAC3D;IACA;AACF;AAEO,eAAeE,gBAAgBA,CACpCJ,OAAsB,EACtBK,QAAuB;IAEvB,MAAMF,oBAAoBL,oBAAoBA,CAACE,QAAQ,OAAO;IAC9D,MAAMM,SAASH,kBAAkB,MAAM;IACvC,KAAK,MAAMI,WAAWF,SAAU;QAC9B,MAAMG,eAAeA,CAACR,SAASO,SAASD;IAC1C;AACF;AAEO,eAAeE,eAAeA,CACnCR,OAAsB,EACtBO,OAAoB,EACpBD,MAAuB;IAEvB,IAAI,CAACA,QAAQ;QACX,MAAMH,oBAAoBL,oBAAoBA,CAACE,QAAQ,OAAO;QAC9DM,SAASH,kBAAkB,MAAM;IACnC;IAEA,MAAMM,cAAcH,OAAO,WAAW,CAAoBC,QAAQ,EAAE;IACpE,IAAIE,YAAY,IAAI,KAAKZ,8BAA8B,EAAE;QACvD,MAAMa,QAAQC,mBAAmBA,CAACX,SAASS;QAC3C,MAAM,EAAEG,MAAM,EAAE,GAAGC,WAAW,GAAGH;QACjC,MAAMX,UAAUA,CAACC,SAASY,QAAQC;IACpC;AACF;AAEA,SAASC,sBAAsBA,CAC7Bd,OAAsB,EACtBe,YAAoB;IAEpBf,QAAQ,OAAO,CAAC,cAAc,GAAGe;AACnC;AAEA,SAASJ,mBAAmBA,CAC1BX,OAAsB,EACtBS,WAA8B;IAE9B,MAAM,EAAEM,YAAY,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,UAAU,EAAEC,iBAAiB,EAAE,GACrEC,6BAA6BA,CAACpB,SAASS;IAEzCK,sBAAsBA,CAACd,SAASe;IAEhC,OAAO;QACL,QAAQrB,oBAAoB;QAC5BsB;QACAC;QACAC;QACAC;QACAJ;QACA,sBAAsBN,YAAY,aAAa,IAAI;IACrD;AACF;AAUA,SAASW,6BAA6BA,CACpCpB,OAAsB,EACtBS,WAA8B;IAE9B,MAAMN,oBAAoBL,oBAAoBA,CAACE,QAAQ,OAAO;IAC9D,MAAMiB,WAAWd,kBAAkB,WAAW,CAACM,YAAY,OAAO;IAClE,MAAMM,eAAef,QAAQ,OAAO,CAAC,cAAc,IAAIJ,EAAMA;IAE7D,OAAO;QACLmB;QACA,QAAQN,YAAY,OAAO;QAC3BQ;QACA,YAAYR,YAAY,EAAE;QAC1B,mBAAmBA,YAAY,IAAI,IAAI;IACzC;AACF;AAEO,SAASY,yCAAyCA,CACvDC,UAAsB,EACtBC,EAAU;IAEV,MAAMpB,oBAAoBL,oBAAoBA,CAACwB,WAAW,OAAO;IACjE,MAAMhB,SAASH,kBAAkB,MAAM;IACvC,MAAMM,cAAcH,OAAO,WAAW,CAAoBiB;IAE1D,OAAOH,6BAA6BA,CAACE,YAAYb;AACnD"}
|
package/lib/esm/types.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { AiAgentArgs,
|
|
2
|
-
import type { FlowContent } from './content-fields';
|
|
3
|
-
import type { HtFlowBuilderData, HtRatingButton } from './content-fields/hubtype-fields';
|
|
4
|
-
import type { FlowBuilderContentMessage } from './structured-output/flow-builder-content';
|
|
1
|
+
import type { AiAgentArgs, BotContext, GuardrailRule, InferenceResponse, PluginPreRequest, ResolvedPlugins } from '@botonic/core';
|
|
2
|
+
import type { FlowContent } from './content-fields/index.js';
|
|
3
|
+
import type { HtFlowBuilderData, HtRatingButton } from './content-fields/hubtype-fields/index.js';
|
|
4
|
+
import type { FlowBuilderContentMessage } from './structured-output/flow-builder-content.js';
|
|
5
5
|
export interface InShadowingConfig {
|
|
6
6
|
allowKeywords: boolean;
|
|
7
7
|
allowSmartIntents: boolean;
|
|
@@ -59,4 +59,4 @@ export interface RatingSubmittedInfo extends HtRatingButton {
|
|
|
59
59
|
possibleOptions: string[];
|
|
60
60
|
possibleValues: number[];
|
|
61
61
|
}
|
|
62
|
-
export { AiAgentArgs, GuardrailRule };
|
|
62
|
+
export type { AiAgentArgs, GuardrailRule };
|
package/lib/esm/types.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FlowBuilderJSONVersion = exports.ProcessEnvNodeEnvs = void 0;
|
|
4
|
-
var ProcessEnvNodeEnvs;
|
|
5
|
-
(function (ProcessEnvNodeEnvs) {
|
|
1
|
+
var types_ProcessEnvNodeEnvs = /*#__PURE__*/ function(ProcessEnvNodeEnvs) {
|
|
6
2
|
ProcessEnvNodeEnvs["PRODUCTION"] = "production";
|
|
7
3
|
ProcessEnvNodeEnvs["DEVELOPMENT"] = "development";
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
4
|
+
return ProcessEnvNodeEnvs;
|
|
5
|
+
}({});
|
|
6
|
+
var types_FlowBuilderJSONVersion = /*#__PURE__*/ function(FlowBuilderJSONVersion) {
|
|
11
7
|
FlowBuilderJSONVersion["DRAFT"] = "draft";
|
|
12
8
|
FlowBuilderJSONVersion["LATEST"] = "latest";
|
|
13
|
-
|
|
9
|
+
return FlowBuilderJSONVersion;
|
|
10
|
+
}({});
|
|
11
|
+
|
|
12
|
+
export { types_FlowBuilderJSONVersion as FlowBuilderJSONVersion, types_ProcessEnvNodeEnvs as ProcessEnvNodeEnvs };
|
|
13
|
+
|
|
14
14
|
//# sourceMappingURL=types.js.map
|
package/lib/esm/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../../src/types.ts"],"sourcesContent":["import type {\n AiAgentArgs,\n BotContext,\n GuardrailRule,\n InferenceResponse,\n PluginPreRequest,\n ResolvedPlugins,\n} from '@botonic/core'\nimport type { FlowContent } from './content-fields'\nimport type {\n HtFlowBuilderData,\n HtRatingButton,\n} from './content-fields/hubtype-fields'\nimport type { FlowBuilderContentMessage } from './structured-output/flow-builder-content'\n\nexport interface InShadowingConfig {\n allowKeywords: boolean\n allowSmartIntents: boolean\n allowAiAgents: boolean\n}\n\nexport interface BotonicPluginFlowBuilderOptions<\n TPlugins extends ResolvedPlugins = ResolvedPlugins,\n TExtraData = any,\n> {\n apiUrl?: string\n jsonVersion?: FlowBuilderJSONVersion\n flow?: HtFlowBuilderData\n customFunctions?: Record<any, any>\n getAccessToken: () => string\n trackEvent?: TrackEventFunction<TPlugins, TExtraData>\n getAiAgentResponse?: AiAgentFunction<TPlugins, TExtraData>\n smartIntentsConfig?: { numSmartIntentsToUse: number }\n inShadowing?: Partial<InShadowingConfig>\n contentFilters?: ContentFilter<TPlugins, TExtraData>[]\n customRatingMessageEnabled?: boolean\n disableAIAgentInFirstInteraction?: boolean\n}\n\nexport type TrackEventFunction<\n TPlugins extends ResolvedPlugins = ResolvedPlugins,\n TExtraData = any,\n> = (\n request: BotContext<TPlugins, TExtraData>,\n eventAction: string,\n args?: Record<string, any>\n) => Promise<void>\n\nexport type AiAgentFunction<\n TPlugins extends ResolvedPlugins = ResolvedPlugins,\n TExtraData = any,\n> = (\n request: BotContext<TPlugins, TExtraData>,\n aiAgentArgs: AiAgentArgs\n) => Promise<InferenceResponse<FlowBuilderContentMessage>>\n\nexport type ContentFilter<\n TPlugins extends ResolvedPlugins = ResolvedPlugins,\n TExtraData = any,\n> = (\n request: BotContext<TPlugins, TExtraData>,\n content: FlowContent\n) => Promise<FlowContent> | FlowContent\n\nexport interface FlowBuilderApiOptions {\n url: string\n flowUrl: string\n flow?: HtFlowBuilderData\n accessToken: string\n request: PluginPreRequest\n}\n\nexport enum ProcessEnvNodeEnvs {\n PRODUCTION = 'production',\n DEVELOPMENT = 'development',\n}\n\nexport enum FlowBuilderJSONVersion {\n DRAFT = 'draft',\n LATEST = 'latest',\n}\n\nexport interface SmartIntentResponse {\n data: {\n smart_intent_title: string\n text: string\n smart_intents_used: {\n title: string\n description: string\n }[]\n }\n}\n\nexport interface PayloadParamsBase {\n contentID: string\n followUpContentID?: string\n}\n\nexport interface RatingSubmittedInfo extends HtRatingButton {\n possibleOptions: string[]\n possibleValues: number[]\n}\n\nexport type { AiAgentArgs, GuardrailRule }\n"],"names":["ProcessEnvNodeEnvs","FlowBuilderJSONVersion"],"mappings":"AAwEO,IAAKA,wBAAkBA,0BAAlBA;;;WAAAA;MAGX;AAEM,IAAKC,4BAAsBA,0BAAtBA;;;WAAAA;MAGX"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ActionRequest } from '@botonic/react';
|
|
2
|
-
import type { FlowBuilderApi } from '../api';
|
|
3
|
-
import { type HtCaptureUserInputNode } from '../content-fields/hubtype-fields';
|
|
2
|
+
import type { FlowBuilderApi } from '../api.js';
|
|
3
|
+
import { type HtCaptureUserInputNode } from '../content-fields/hubtype-fields/index.js';
|
|
4
4
|
interface AiCaptureResponseSuccess {
|
|
5
5
|
success: true;
|
|
6
6
|
value: string;
|
|
@@ -1,29 +1,34 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
import { EventAction } from "@botonic/core";
|
|
2
|
+
import axios from "axios";
|
|
3
|
+
import { FlowCaptureUserInput } from "../content-fields/index.js";
|
|
4
|
+
import { HtAiValidationType } from "../content-fields/hubtype-fields/index.js";
|
|
5
|
+
import { getCommonFlowContentEventArgsForContentId, trackEvent } from "../tracking.js";
|
|
6
|
+
import { getFlowBuilderPlugin } from "../utils/get-flow-builder-plugin.js";
|
|
7
|
+
import { inputHasTextOrTranscript } from "../utils/input.js";
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
12
23
|
class CaptureUserInputApi {
|
|
13
|
-
constructor(cmsApi, request, textOrTranscript) {
|
|
14
|
-
this.cmsApi = cmsApi;
|
|
15
|
-
this.request = request;
|
|
16
|
-
this.textOrTranscript = textOrTranscript;
|
|
17
|
-
}
|
|
18
24
|
async getNextNodeId() {
|
|
19
|
-
if (
|
|
20
|
-
this.cmsApi.shouldCaptureUserInput()) {
|
|
25
|
+
if (inputHasTextOrTranscript(this.request.input) && this.cmsApi.shouldCaptureUserInput()) {
|
|
21
26
|
const captureUserInputNode = this.cmsApi.getCaptureUserInputNode();
|
|
22
27
|
if (!captureUserInputNode || !this.textOrTranscript) {
|
|
23
28
|
return undefined;
|
|
24
29
|
}
|
|
25
|
-
const captureUserInput =
|
|
26
|
-
if (captureUserInput.aiValidationType ===
|
|
30
|
+
const captureUserInput = FlowCaptureUserInput.fromHubtypeCMS(captureUserInputNode);
|
|
31
|
+
if (captureUserInput.aiValidationType === HtAiValidationType.NONE) {
|
|
27
32
|
this.cmsApi.setUserExtraDataVariable(captureUserInputNode.content.field_name, this.textOrTranscript);
|
|
28
33
|
await this.trackUserInputCapture(captureUserInputNode, true);
|
|
29
34
|
return captureUserInput.captureSuccessId;
|
|
@@ -45,30 +50,29 @@ class CaptureUserInputApi {
|
|
|
45
50
|
const data = {
|
|
46
51
|
field_name: captureUserInputNode.content.field_name,
|
|
47
52
|
validation_instructions: captureUserInputNode.content.ai_validation_instructions,
|
|
48
|
-
user_input: this.textOrTranscript
|
|
53
|
+
user_input: this.textOrTranscript
|
|
49
54
|
};
|
|
50
|
-
const pluginFlowBuilder =
|
|
55
|
+
const pluginFlowBuilder = getFlowBuilderPlugin(this.request.plugins);
|
|
51
56
|
const token = pluginFlowBuilder.getAccessToken(this.request.session);
|
|
52
57
|
const config = {
|
|
53
58
|
headers: {
|
|
54
59
|
'Content-Type': 'application/json',
|
|
55
|
-
Authorization: `Bearer ${token}
|
|
56
|
-
}
|
|
60
|
+
Authorization: `Bearer ${token}`
|
|
61
|
+
}
|
|
57
62
|
};
|
|
58
|
-
const aiCaptureResponse = await
|
|
63
|
+
const aiCaptureResponse = await axios.post(url, data, config);
|
|
59
64
|
return aiCaptureResponse.data;
|
|
60
|
-
}
|
|
61
|
-
catch (error) {
|
|
65
|
+
} catch (error) {
|
|
62
66
|
console.warn('Error getting ai/capture_user_input', error);
|
|
63
67
|
}
|
|
64
68
|
return {
|
|
65
|
-
success: false
|
|
69
|
+
success: false
|
|
66
70
|
};
|
|
67
71
|
}
|
|
68
72
|
async trackUserInputCapture(captureUserInputNode, captureSuccess) {
|
|
69
|
-
const { flowThreadId, flowId, flowName, flowNodeId, flowNodeContentId } =
|
|
73
|
+
const { flowThreadId, flowId, flowName, flowNodeId, flowNodeContentId } = getCommonFlowContentEventArgsForContentId(this.request, captureUserInputNode.id);
|
|
70
74
|
const event = {
|
|
71
|
-
action:
|
|
75
|
+
action: EventAction.CaptureUserInput,
|
|
72
76
|
flowThreadId,
|
|
73
77
|
flowId,
|
|
74
78
|
flowName,
|
|
@@ -78,11 +82,18 @@ class CaptureUserInputApi {
|
|
|
78
82
|
fieldName: captureUserInputNode.content.field_name,
|
|
79
83
|
userInput: this.textOrTranscript,
|
|
80
84
|
captureSuccess,
|
|
81
|
-
messageId: this.request.input.message_id
|
|
85
|
+
messageId: this.request.input.message_id
|
|
82
86
|
};
|
|
83
87
|
const { action, ...eventArgs } = event;
|
|
84
|
-
await
|
|
88
|
+
await trackEvent(this.request, action, eventArgs);
|
|
89
|
+
}
|
|
90
|
+
constructor(cmsApi, request, textOrTranscript){
|
|
91
|
+
this.cmsApi = cmsApi;
|
|
92
|
+
this.request = request;
|
|
93
|
+
this.textOrTranscript = textOrTranscript;
|
|
85
94
|
}
|
|
86
95
|
}
|
|
87
|
-
|
|
96
|
+
|
|
97
|
+
export { CaptureUserInputApi };
|
|
98
|
+
|
|
88
99
|
//# sourceMappingURL=capture-user-input-api.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capture-user-input-api.js","
|
|
1
|
+
{"version":3,"file":"user-input/capture-user-input-api.js","sources":["../../../src/user-input/capture-user-input-api.ts"],"sourcesContent":["import { EventAction, type EventCaptureUserInput } from '@botonic/core'\nimport type { ActionRequest } from '@botonic/react'\nimport axios from 'axios'\n\nimport type { FlowBuilderApi } from '../api'\nimport { FlowCaptureUserInput } from '../content-fields'\nimport {\n HtAiValidationType,\n type HtCaptureUserInputNode,\n} from '../content-fields/hubtype-fields'\nimport {\n getCommonFlowContentEventArgsForContentId,\n trackEvent,\n} from '../tracking'\nimport { getFlowBuilderPlugin } from '../utils/get-flow-builder-plugin'\nimport { inputHasTextOrTranscript } from '../utils/input'\n\ninterface AiCaptureResponseSuccess {\n success: true\n value: string\n}\n\ninterface AiCaptureResponseFailure {\n success: false\n}\n\ntype AiCaptureResponse = AiCaptureResponseSuccess | AiCaptureResponseFailure\n\nexport class CaptureUserInputApi {\n private cmsApi: FlowBuilderApi\n private request: ActionRequest\n private textOrTranscript: string\n\n constructor(\n cmsApi: FlowBuilderApi,\n request: ActionRequest,\n textOrTranscript: string\n ) {\n this.cmsApi = cmsApi\n this.request = request\n this.textOrTranscript = textOrTranscript\n }\n\n async getNextNodeId(): Promise<string | undefined> {\n if (\n inputHasTextOrTranscript(this.request.input) &&\n this.cmsApi.shouldCaptureUserInput()\n ) {\n const captureUserInputNode = this.cmsApi.getCaptureUserInputNode()\n if (!captureUserInputNode || !this.textOrTranscript) {\n return undefined\n }\n const captureUserInput =\n FlowCaptureUserInput.fromHubtypeCMS(captureUserInputNode)\n\n if (captureUserInput.aiValidationType === HtAiValidationType.NONE) {\n this.cmsApi.setUserExtraDataVariable(\n captureUserInputNode.content.field_name,\n this.textOrTranscript\n )\n await this.trackUserInputCapture(captureUserInputNode, true)\n return captureUserInput.captureSuccessId\n }\n\n const aiCaptureResponse =\n await this.getAiCaptureResponse(captureUserInputNode)\n if (!aiCaptureResponse.success) {\n await this.trackUserInputCapture(captureUserInputNode, false)\n return captureUserInput.captureFailId\n }\n\n this.cmsApi.setUserExtraDataVariable(\n captureUserInputNode.content.field_name,\n aiCaptureResponse.value\n )\n await this.trackUserInputCapture(captureUserInputNode, true)\n return captureUserInput.captureSuccessId\n }\n return undefined\n }\n\n async getAiCaptureResponse(\n captureUserInputNode: HtCaptureUserInputNode\n ): Promise<AiCaptureResponse> {\n try {\n const url = `${process.env.HUBTYPE_API_URL}/external/v1/capture_user_input/`\n const data = {\n field_name: captureUserInputNode.content.field_name,\n validation_instructions:\n captureUserInputNode.content.ai_validation_instructions,\n user_input: this.textOrTranscript,\n }\n const pluginFlowBuilder = getFlowBuilderPlugin(this.request.plugins)\n const token = pluginFlowBuilder.getAccessToken(this.request.session)\n\n const config = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${token}`,\n },\n }\n\n const aiCaptureResponse = await axios.post<AiCaptureResponse>(\n url,\n data,\n config\n )\n\n return aiCaptureResponse.data\n } catch (error) {\n console.warn('Error getting ai/capture_user_input', error)\n }\n\n return {\n success: false,\n }\n }\n\n async trackUserInputCapture(\n captureUserInputNode: HtCaptureUserInputNode,\n captureSuccess: boolean\n ): Promise<void> {\n const { flowThreadId, flowId, flowName, flowNodeId, flowNodeContentId } =\n getCommonFlowContentEventArgsForContentId(\n this.request,\n captureUserInputNode.id\n )\n const event: EventCaptureUserInput = {\n action: EventAction.CaptureUserInput,\n flowThreadId,\n flowId,\n flowName,\n flowNodeId,\n flowNodeContentId,\n flowNodeIsMeaningful: false,\n fieldName: captureUserInputNode.content.field_name,\n userInput: this.textOrTranscript,\n captureSuccess,\n messageId: this.request.input.message_id,\n }\n const { action, ...eventArgs } = event\n await trackEvent(this.request, action, eventArgs)\n }\n}\n"],"names":["EventAction","axios","FlowCaptureUserInput","HtAiValidationType","getCommonFlowContentEventArgsForContentId","trackEvent","getFlowBuilderPlugin","inputHasTextOrTranscript","CaptureUserInputApi","captureUserInputNode","undefined","captureUserInput","aiCaptureResponse","url","process","data","pluginFlowBuilder","token","config","error","console","captureSuccess","flowThreadId","flowId","flowName","flowNodeId","flowNodeContentId","event","action","eventArgs","cmsApi","request","textOrTranscript"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { ActionRequest } from '@botonic/react';
|
|
2
|
-
import type { FlowBuilderApi } from '../api';
|
|
3
|
-
import { type SmartIntentsInferenceConfig } from './smart-intent';
|
|
2
|
+
import type { FlowBuilderApi } from '../api.js';
|
|
3
|
+
import { type SmartIntentsInferenceConfig } from './smart-intent.js';
|
|
4
4
|
export declare function getNextPayloadByUserInput(cmsApi: FlowBuilderApi, locale: string, request: ActionRequest, smartIntentsConfig: SmartIntentsInferenceConfig): Promise<string | undefined>;
|
|
@@ -1,31 +1,37 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { getTextOrTranscript, isKeywordsAllowed, isSmartIntentsAllowed } from "../utils/input.js";
|
|
2
|
+
import { CaptureUserInputApi } from "./capture-user-input-api.js";
|
|
3
|
+
import { KeywordMatcher } from "./keyword.js";
|
|
4
|
+
import { SmartIntentsApi } from "./smart-intent.js";
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
8
14
|
async function getNextPayloadByUserInput(cmsApi, locale, request, smartIntentsConfig) {
|
|
9
|
-
const userTextOrTranscript =
|
|
15
|
+
const userTextOrTranscript = getTextOrTranscript(request.input);
|
|
10
16
|
if (userTextOrTranscript) {
|
|
11
17
|
if (cmsApi.shouldCaptureUserInput()) {
|
|
12
|
-
const captureUserInputApi = new
|
|
18
|
+
const captureUserInputApi = new CaptureUserInputApi(cmsApi, request, userTextOrTranscript);
|
|
13
19
|
return await captureUserInputApi.getNextNodeId();
|
|
14
20
|
}
|
|
15
|
-
if (
|
|
16
|
-
const keywordMatcher = new
|
|
21
|
+
if (isKeywordsAllowed(request)) {
|
|
22
|
+
const keywordMatcher = new KeywordMatcher({
|
|
17
23
|
cmsApi,
|
|
18
24
|
locale,
|
|
19
25
|
request,
|
|
20
|
-
userTextOrTranscript
|
|
26
|
+
userTextOrTranscript
|
|
21
27
|
});
|
|
22
28
|
const keywordNode = await keywordMatcher.getNodeByInput();
|
|
23
29
|
if (keywordNode) {
|
|
24
30
|
return cmsApi.getPayload(keywordNode.target);
|
|
25
31
|
}
|
|
26
32
|
}
|
|
27
|
-
if (
|
|
28
|
-
const smartIntentsApi = new
|
|
33
|
+
if (isSmartIntentsAllowed(request)) {
|
|
34
|
+
const smartIntentsApi = new SmartIntentsApi(cmsApi, request, smartIntentsConfig, userTextOrTranscript);
|
|
29
35
|
const smartIntentNode = await smartIntentsApi.getNodeByInput();
|
|
30
36
|
if (smartIntentNode) {
|
|
31
37
|
return cmsApi.getPayload(smartIntentNode.target);
|
|
@@ -34,4 +40,7 @@ async function getNextPayloadByUserInput(cmsApi, locale, request, smartIntentsCo
|
|
|
34
40
|
}
|
|
35
41
|
return undefined;
|
|
36
42
|
}
|
|
43
|
+
|
|
44
|
+
export { getNextPayloadByUserInput };
|
|
45
|
+
|
|
37
46
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","
|
|
1
|
+
{"version":3,"file":"user-input/index.js","sources":["../../../src/user-input/index.ts"],"sourcesContent":["import type { ActionRequest } from '@botonic/react'\n\nimport type { FlowBuilderApi } from '../api'\nimport {\n getTextOrTranscript,\n isKeywordsAllowed,\n isSmartIntentsAllowed,\n} from '../utils/input'\nimport { CaptureUserInputApi } from './capture-user-input-api'\nimport { KeywordMatcher } from './keyword'\nimport {\n SmartIntentsApi,\n type SmartIntentsInferenceConfig,\n} from './smart-intent'\n\nexport async function getNextPayloadByUserInput(\n cmsApi: FlowBuilderApi,\n locale: string,\n request: ActionRequest,\n smartIntentsConfig: SmartIntentsInferenceConfig\n): Promise<string | undefined> {\n const userTextOrTranscript = getTextOrTranscript(request.input)\n if (userTextOrTranscript) {\n if (cmsApi.shouldCaptureUserInput()) {\n const captureUserInputApi = new CaptureUserInputApi(\n cmsApi,\n request,\n userTextOrTranscript\n )\n return await captureUserInputApi.getNextNodeId()\n }\n\n if (isKeywordsAllowed(request)) {\n const keywordMatcher = new KeywordMatcher({\n cmsApi,\n locale,\n request,\n userTextOrTranscript,\n })\n const keywordNode = await keywordMatcher.getNodeByInput()\n if (keywordNode) {\n return cmsApi.getPayload(keywordNode.target)\n }\n }\n\n if (isSmartIntentsAllowed(request)) {\n const smartIntentsApi = new SmartIntentsApi(\n cmsApi,\n request,\n smartIntentsConfig,\n userTextOrTranscript\n )\n const smartIntentNode = await smartIntentsApi.getNodeByInput()\n if (smartIntentNode) {\n return cmsApi.getPayload(smartIntentNode.target)\n }\n }\n }\n\n return undefined\n}\n"],"names":["getTextOrTranscript","isKeywordsAllowed","isSmartIntentsAllowed","CaptureUserInputApi","KeywordMatcher","SmartIntentsApi","getNextPayloadByUserInput","cmsApi","locale","request","smartIntentsConfig","userTextOrTranscript","captureUserInputApi","keywordMatcher","keywordNode","smartIntentsApi","smartIntentNode","undefined"],"mappings":";;;;;;;;;AAOuB;AACuC;AACpB;AAInB;AAEhB,eAAeM,yBAAyBA,CAC7CC,MAAsB,EACtBC,MAAc,EACdC,OAAsB,EACtBC,kBAA+C;IAE/C,MAAMC,uBAAuBX,mBAAmBA,CAACS,QAAQ,KAAK;IAC9D,IAAIE,sBAAsB;QACxB,IAAIJ,OAAO,sBAAsB,IAAI;YACnC,MAAMK,sBAAsB,IAAIT,mBAAmBA,CACjDI,QACAE,SACAE;YAEF,OAAO,MAAMC,oBAAoB,aAAa;QAChD;QAEA,IAAIX,iBAAiBA,CAACQ,UAAU;YAC9B,MAAMI,iBAAiB,IAAIT,cAAcA,CAAC;gBACxCG;gBACAC;gBACAC;gBACAE;YACF;YACA,MAAMG,cAAc,MAAMD,eAAe,cAAc;YACvD,IAAIC,aAAa;gBACf,OAAOP,OAAO,UAAU,CAACO,YAAY,MAAM;YAC7C;QACF;QAEA,IAAIZ,qBAAqBA,CAACO,UAAU;YAClC,MAAMM,kBAAkB,IAAIV,eAAeA,CACzCE,QACAE,SACAC,oBACAC;YAEF,MAAMK,kBAAkB,MAAMD,gBAAgB,cAAc;YAC5D,IAAIC,iBAAiB;gBACnB,OAAOT,OAAO,UAAU,CAACS,gBAAgB,MAAM;YACjD;QACF;IACF;IAEA,OAAOC;AACT"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ActionRequest } from '@botonic/react';
|
|
2
|
-
import type { FlowBuilderApi } from '../api';
|
|
3
|
-
import type { HtKeywordNode } from '../content-fields/hubtype-fields';
|
|
2
|
+
import type { FlowBuilderApi } from '../api.js';
|
|
3
|
+
import type { HtKeywordNode } from '../content-fields/hubtype-fields/index.js';
|
|
4
4
|
interface KeywordProps {
|
|
5
5
|
cmsApi: FlowBuilderApi;
|
|
6
6
|
locale: string;
|
|
@@ -1,17 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { EventAction, NluType } from "@botonic/core";
|
|
2
|
+
import { REG_EXP_PATTERN } from "../constants.js";
|
|
3
|
+
import { getCommonFlowContentEventArgsForContentId, trackEvent } from "../tracking.js";
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
7
11
|
class KeywordMatcher {
|
|
8
|
-
constructor({ cmsApi, locale, request, userTextOrTranscript }) {
|
|
9
|
-
this.cmsApi = cmsApi;
|
|
10
|
-
this.locale = locale;
|
|
11
|
-
this.request = request;
|
|
12
|
-
this.isRegExp = false;
|
|
13
|
-
this.userTextOrTranscript = userTextOrTranscript;
|
|
14
|
-
}
|
|
15
12
|
async getNodeByInput() {
|
|
16
13
|
const keywordNodes = this.cmsApi.getKeywordNodes();
|
|
17
14
|
const keywordNode = this.getNodeByKeyword(this.userTextOrTranscript, keywordNodes);
|
|
@@ -20,19 +17,19 @@ class KeywordMatcher {
|
|
|
20
17
|
}
|
|
21
18
|
const targetPayload = this.cmsApi.getPayload(keywordNode.target);
|
|
22
19
|
this.request.input.nluResolution = {
|
|
23
|
-
type:
|
|
20
|
+
type: NluType.Keyword,
|
|
24
21
|
matchedValue: this.matchedKeyword,
|
|
25
|
-
payload: targetPayload
|
|
22
|
+
payload: targetPayload
|
|
26
23
|
};
|
|
27
24
|
await this.trackKeywordEvent();
|
|
28
25
|
return keywordNode;
|
|
29
26
|
}
|
|
30
27
|
getNodeByKeyword(userInput, keywordNodes) {
|
|
31
|
-
const matchedKeywordNode = keywordNodes.find(node
|
|
28
|
+
const matchedKeywordNode = keywordNodes.find((node)=>this.matchKeywords(userInput, node));
|
|
32
29
|
return matchedKeywordNode?.target ? matchedKeywordNode : undefined;
|
|
33
30
|
}
|
|
34
31
|
matchKeywords(userInput, node) {
|
|
35
|
-
const result = node.content.keywords.find(keywords
|
|
32
|
+
const result = node.content.keywords.find((keywords)=>{
|
|
36
33
|
if (keywords.locale === this.locale) {
|
|
37
34
|
this.keywordNodeId = node.id;
|
|
38
35
|
this.flowId = this.cmsApi.getNodeById(node.id).flow_id;
|
|
@@ -43,15 +40,14 @@ class KeywordMatcher {
|
|
|
43
40
|
return Boolean(result);
|
|
44
41
|
}
|
|
45
42
|
inputMatchesAnyKeyword(userInput, keywords) {
|
|
46
|
-
return keywords.some(keyword
|
|
47
|
-
const regExpMatchArray = keyword.match(
|
|
43
|
+
return keywords.some((keyword)=>{
|
|
44
|
+
const regExpMatchArray = keyword.match(REG_EXP_PATTERN);
|
|
48
45
|
if (regExpMatchArray) {
|
|
49
46
|
const keywordAsRegExp = this.resolveKeywordAsRegExp(regExpMatchArray);
|
|
50
47
|
const match = userInput.match(keywordAsRegExp);
|
|
51
48
|
this.isRegExp = true;
|
|
52
49
|
this.matchedKeyword = match ? match[0] : undefined;
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
50
|
+
} else {
|
|
55
51
|
this.isRegExp = false;
|
|
56
52
|
this.matchedKeyword = userInput.includes(keyword) ? keyword : undefined;
|
|
57
53
|
}
|
|
@@ -63,9 +59,9 @@ class KeywordMatcher {
|
|
|
63
59
|
return new RegExp(pattern, flags);
|
|
64
60
|
}
|
|
65
61
|
async trackKeywordEvent() {
|
|
66
|
-
const { flowId, flowName, flowNodeId, flowNodeContentId } =
|
|
62
|
+
const { flowId, flowName, flowNodeId, flowNodeContentId } = getCommonFlowContentEventArgsForContentId(this.request, this.keywordNodeId);
|
|
67
63
|
const event = {
|
|
68
|
-
action:
|
|
64
|
+
action: EventAction.Keyword,
|
|
69
65
|
flowNodeId,
|
|
70
66
|
flowId,
|
|
71
67
|
flowName,
|
|
@@ -74,11 +70,20 @@ class KeywordMatcher {
|
|
|
74
70
|
nluKeywordName: this.matchedKeyword,
|
|
75
71
|
nluKeywordIsRegex: this.isRegExp,
|
|
76
72
|
nluKeywordMessageId: this.request.input.message_id,
|
|
77
|
-
userInput: this.userTextOrTranscript
|
|
73
|
+
userInput: this.userTextOrTranscript
|
|
78
74
|
};
|
|
79
75
|
const { action, ...eventArgs } = event;
|
|
80
|
-
await
|
|
76
|
+
await trackEvent(this.request, action, eventArgs);
|
|
77
|
+
}
|
|
78
|
+
constructor({ cmsApi, locale, request, userTextOrTranscript }){
|
|
79
|
+
this.cmsApi = cmsApi;
|
|
80
|
+
this.locale = locale;
|
|
81
|
+
this.request = request;
|
|
82
|
+
this.isRegExp = false;
|
|
83
|
+
this.userTextOrTranscript = userTextOrTranscript;
|
|
81
84
|
}
|
|
82
85
|
}
|
|
83
|
-
|
|
86
|
+
|
|
87
|
+
export { KeywordMatcher };
|
|
88
|
+
|
|
84
89
|
//# sourceMappingURL=keyword.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyword.js","
|
|
1
|
+
{"version":3,"file":"user-input/keyword.js","sources":["../../../src/user-input/keyword.ts"],"sourcesContent":["import { EventAction, type EventKeyword, NluType } from '@botonic/core'\nimport type { ActionRequest } from '@botonic/react'\n\nimport type { FlowBuilderApi } from '../api'\nimport { REG_EXP_PATTERN } from '../constants'\nimport type {\n HtKeywordNode,\n HtNodeWithContent,\n} from '../content-fields/hubtype-fields'\nimport {\n getCommonFlowContentEventArgsForContentId,\n trackEvent,\n} from '../tracking'\n\ninterface KeywordProps {\n cmsApi: FlowBuilderApi\n locale: string\n request: ActionRequest\n userTextOrTranscript: string\n}\nexport class KeywordMatcher {\n public cmsApi: FlowBuilderApi\n public locale: string\n public request: ActionRequest\n public isRegExp: boolean\n public matchedKeyword?: string\n public keywordNodeId?: string\n public flowId?: string\n public userTextOrTranscript: string\n\n constructor({ cmsApi, locale, request, userTextOrTranscript }: KeywordProps) {\n this.cmsApi = cmsApi\n this.locale = locale\n this.request = request\n this.isRegExp = false\n this.userTextOrTranscript = userTextOrTranscript\n }\n\n async getNodeByInput(): Promise<HtKeywordNode | undefined> {\n const keywordNodes = this.cmsApi.getKeywordNodes()\n const keywordNode = this.getNodeByKeyword(\n this.userTextOrTranscript,\n keywordNodes\n )\n if (!keywordNode || !this.matchedKeyword) {\n return undefined\n }\n const targetPayload = this.cmsApi.getPayload(keywordNode.target)\n\n this.request.input.nluResolution = {\n type: NluType.Keyword,\n matchedValue: this.matchedKeyword,\n payload: targetPayload,\n }\n await this.trackKeywordEvent()\n return keywordNode\n }\n\n private getNodeByKeyword(\n userInput: string,\n keywordNodes: HtKeywordNode[]\n ): HtKeywordNode | undefined {\n const matchedKeywordNode = keywordNodes.find(node =>\n this.matchKeywords(userInput, node)\n )\n\n return matchedKeywordNode?.target ? matchedKeywordNode : undefined\n }\n\n private matchKeywords(userInput: string, node: HtKeywordNode): boolean {\n const result = node.content.keywords.find(keywords => {\n if (keywords.locale === this.locale) {\n this.keywordNodeId = node.id\n this.flowId = this.cmsApi.getNodeById<HtNodeWithContent>(\n node.id\n ).flow_id\n return this.inputMatchesAnyKeyword(userInput, keywords.values)\n }\n\n return false\n })\n\n return Boolean(result)\n }\n\n private inputMatchesAnyKeyword(\n userInput: string,\n keywords: string[]\n ): boolean {\n return keywords.some(keyword => {\n const regExpMatchArray = keyword.match(REG_EXP_PATTERN)\n\n if (regExpMatchArray) {\n const keywordAsRegExp = this.resolveKeywordAsRegExp(regExpMatchArray)\n const match = userInput.match(keywordAsRegExp)\n this.isRegExp = true\n this.matchedKeyword = match ? match[0] : undefined\n } else {\n this.isRegExp = false\n this.matchedKeyword = userInput.includes(keyword) ? keyword : undefined\n }\n\n return this.matchedKeyword !== undefined\n })\n }\n\n private resolveKeywordAsRegExp(regExpMatchArray: RegExpMatchArray): RegExp {\n const [, pattern, flags] = regExpMatchArray\n return new RegExp(pattern, flags)\n }\n\n private async trackKeywordEvent() {\n const { flowId, flowName, flowNodeId, flowNodeContentId } =\n getCommonFlowContentEventArgsForContentId(\n this.request,\n this.keywordNodeId as string\n )\n\n const event: EventKeyword = {\n action: EventAction.Keyword,\n flowNodeId,\n flowId,\n flowName,\n flowNodeContentId,\n flowThreadId: this.request.session.flow_thread_id as string,\n nluKeywordName: this.matchedKeyword as string,\n nluKeywordIsRegex: this.isRegExp,\n nluKeywordMessageId: this.request.input.message_id,\n userInput: this.userTextOrTranscript,\n }\n const { action, ...eventArgs } = event\n await trackEvent(this.request, action, eventArgs)\n }\n}\n"],"names":["EventAction","NluType","REG_EXP_PATTERN","getCommonFlowContentEventArgsForContentId","trackEvent","KeywordMatcher","keywordNodes","keywordNode","undefined","targetPayload","userInput","matchedKeywordNode","node","result","keywords","Boolean","keyword","regExpMatchArray","keywordAsRegExp","match","pattern","flags","RegExp","flowId","flowName","flowNodeId","flowNodeContentId","event","action","eventArgs","cmsApi","locale","request","userTextOrTranscript"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ActionRequest } from '@botonic/react';
|
|
2
|
-
import type { FlowBuilderApi } from '../api';
|
|
3
|
-
import type { HtSmartIntentNode } from '../content-fields/hubtype-fields/smart-intent';
|
|
2
|
+
import type { FlowBuilderApi } from '../api.js';
|
|
3
|
+
import type { HtSmartIntentNode } from '../content-fields/hubtype-fields/smart-intent.js';
|
|
4
4
|
export interface SmartIntentsInferenceParams {
|
|
5
5
|
bot_id: string;
|
|
6
6
|
text: string;
|