@botonic/react
Version:
Build Chatbots using React
70 lines • 2.74 kB
JavaScript
;
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