UNPKG

@botonic/plugin-hubtype-analytics

Version:

Plugin for tracking in the Hubtype backend to see the results in the Hubtype Dashbord

70 lines 2.64 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const axios_1 = tslib_1.__importDefault(require("axios")); const types_1 = require("./types"); const utils_1 = require("./utils"); class BotonicPluginHubtypeAnalytics { constructor() { const hubtypeUrl = process.env.HUBTYPE_API_URL || 'https://api.hubtype.com'; this.eventsBaseUrl = `${hubtypeUrl}/external/v2/conversational_apps`; } post() { return; } async trackEvent(request, htEventProps) { const requestData = this.getRequestData(request); const event = (0, utils_1.createHtEvent)(requestData, htEventProps); return this.sendEvent(request, event); } getRequestData(request) { return { userId: this.isLambdaEvent(request) ? request.session.user.id : undefined, botInteractionId: request.input?.bot_interaction_id, userLocale: request.getUserLocale(), userCountry: request.getUserCountry(), systemLocale: request.getSystemLocale(), }; } isLambdaEvent(request) { return request.session?.bot?.id !== undefined; } sendEvent(request, event) { if (event.type === types_1.EventType.BotEvent) { return this.sendBotEvent(request, event); } return this.sendWebEvent(request, event); } sendBotEvent(request, event) { const botId = request.session.bot.id; const url = `${this.eventsBaseUrl}/${botId}/bot_event/`; const config = { headers: { Authorization: `Bearer ${request.session._access_token}` }, }; return axios_1.default.post(url, event, config); } sendWebEvent(request, event) { if (this.isLambdaEvent(request)) { return this.sendWebEventByBotId(request, event); } return this.sendWebEventByProviderId(request, event); } sendWebEventByBotId(request, event) { const botId = request.session.bot.id; const url = `${this.eventsBaseUrl}/${botId}/web_event/`; return axios_1.default.post(url, event); } sendWebEventByProviderId(request, event) { const url = `${this.eventsBaseUrl}/web_event/`; const config = { params: { provider_id: request.session.user.id, }, }; return axios_1.default.post(url, event, config); } } exports.default = BotonicPluginHubtypeAnalytics; tslib_1.__exportStar(require("./types"), exports); tslib_1.__exportStar(require("./utils"), exports); //# sourceMappingURL=index.js.map