UNPKG

@botonic/react

Version:

Build Chatbots using React

70 lines 2.74 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.EventAction = void 0; exports.useTracking = useTracking; const react_1 = require("react"); const uuid_1 = require("uuid"); const context_1 = require("./context"); var EventAction; (function (EventAction) { EventAction["FeedbackKnowledgebase"] = "feedback_knowledgebase"; })(EventAction || (exports.EventAction = EventAction = {})); var FeedbackOption; (function (FeedbackOption) { FeedbackOption["ThumbsUp"] = "thumbsUp"; FeedbackOption["ThumbsDown"] = "thumbsDown"; })(FeedbackOption || (FeedbackOption = {})); function useTracking() { const { webchatState, trackEvent } = (0, react_1.useContext)(context_1.WebchatContext); const getRequest = () => { const request = { session: { ...webchatState.session, }, getUserCountry: () => webchatState.session.user?.country || '', getUserLocale: () => webchatState.session.user?.locale || '', getSystemLocale: () => { return webchatState.session.user?.system_locale || ''; }, }; return request; }; const trackKnowledgebaseFeedback = async ({ messageId, isUseful, botInteractionId, inferenceId, }) => { if (!trackEvent) { return; } const request = getRequest(); // inferenceId and botInteractionId are strings, but in local development they are undefined const event = { action: EventAction.FeedbackKnowledgebase, knowledgebaseInferenceId: inferenceId, feedbackBotInteractionId: botInteractionId, feedbackTargetId: messageId, feedbackGroupId: (0, uuid_1.v7)(), possibleOptions: [FeedbackOption.ThumbsDown, FeedbackOption.ThumbsUp], possibleValues: [0, 1], option: isUseful ? FeedbackOption.ThumbsUp : FeedbackOption.ThumbsDown, value: isUseful ? 1 : 0, }; const { action, ...eventArgs } = event; await trackEvent(request, action, eventArgs); }; const trackCustomEvent = async (event) => { if (!trackEvent) { return; } const request = getRequest(); const { action, ...eventArgs } = event; await trackEvent(request, action, eventArgs); }; const trackFeedbackEvent = async (event) => { if (!trackEvent) { return; } const request = getRequest(); const { action, ...eventArgs } = event; await trackEvent(request, action, eventArgs); }; return { trackKnowledgebaseFeedback, trackCustomEvent, trackFeedbackEvent }; } //# sourceMappingURL=tracking.js.map