@botonic/plugin-hubtype-analytics
Version:
Plugin for tracking in the Hubtype backend to see the results in the Hubtype Dashbord
104 lines (81 loc) • 3.18 kB
text/typescript
/* eslint-disable complexity */
import {
HtEvent,
HtEventAiAgent,
HtEventBotAction,
HtEventConditionalChannel,
HtEventConditionalCountry,
HtEventConditionalCustom,
HtEventConditionalQueueStatus,
HtEventCustom,
HtEventFallback,
HtEventFeedback,
HtEventFeedbackKnowledgebase,
HtEventFlow,
HtEventHandoff,
HtEventHandoffOption,
HtEventIntentSmart,
HtEventKeyword,
HtEventKnowledgeBase,
HtEventRedirectFlow,
HtEventWebviewActionTriggered,
HtEventWebviewEnd,
HtEventWebviewStep,
} from './event-models'
import { HtEventCaptureUserInput } from './event-models/ht-event-capture-user-input'
import { EventAction, HtEventProps, RequestData } from './types'
export function createHtEvent(
requestData: RequestData,
htEventProps: HtEventProps
): HtEvent {
switch (htEventProps.action) {
case EventAction.FeedbackCase:
case EventAction.FeedbackConversation:
case EventAction.FeedbackMessage:
case EventAction.FeedbackWebview:
return new HtEventFeedback(htEventProps, requestData)
case EventAction.FeedbackKnowledgebase:
return new HtEventFeedbackKnowledgebase(htEventProps, requestData)
case EventAction.FlowNode:
return new HtEventFlow(htEventProps, requestData)
case EventAction.HandoffOption:
return new HtEventHandoffOption(htEventProps, requestData)
case EventAction.HandoffSuccess:
case EventAction.HandoffFail:
return new HtEventHandoff(htEventProps, requestData)
case EventAction.Keyword:
return new HtEventKeyword(htEventProps, requestData)
case EventAction.IntentSmart:
return new HtEventIntentSmart(htEventProps, requestData)
case EventAction.Knowledgebase:
return new HtEventKnowledgeBase(htEventProps, requestData)
case EventAction.Fallback:
return new HtEventFallback(htEventProps, requestData)
case EventAction.WebviewStep:
return new HtEventWebviewStep(htEventProps, requestData)
case EventAction.WebviewEnd:
return new HtEventWebviewEnd(htEventProps, requestData)
case EventAction.Custom:
return new HtEventCustom(htEventProps, requestData)
case EventAction.AiAgent:
return new HtEventAiAgent(htEventProps, requestData)
case EventAction.ConditionalCountry:
return new HtEventConditionalCountry(htEventProps, requestData)
case EventAction.ConditionalQueueStatus:
return new HtEventConditionalQueueStatus(htEventProps, requestData)
case EventAction.ConditionalCustom:
return new HtEventConditionalCustom(htEventProps, requestData)
case EventAction.ConditionalChannel:
return new HtEventConditionalChannel(htEventProps, requestData)
case EventAction.BotAction:
return new HtEventBotAction(htEventProps, requestData)
case EventAction.WebviewActionTriggered:
return new HtEventWebviewActionTriggered(htEventProps, requestData)
case EventAction.RedirectFlow:
return new HtEventRedirectFlow(htEventProps, requestData)
case EventAction.CaptureUserInput:
return new HtEventCaptureUserInput(htEventProps, requestData)
default:
return new HtEvent(htEventProps, requestData)
}
}