UNPKG

@botonic/plugin-hubtype-analytics

Version:

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

74 lines 2.9 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; } trackEvent(request, htEventProps) { return tslib_1.__awaiter(this, void 0, void 0, function* () { const requestData = this.getRequestData(request); const event = (0, utils_1.createHtEvent)(requestData, htEventProps); return this.sendEvent(request, event); }); } getRequestData(request) { var _a; return { userId: this.isLambdaEvent(request) ? request.session.user.id : undefined, botInteractionId: (_a = request.input) === null || _a === void 0 ? void 0 : _a.bot_interaction_id, userLocale: request.getSystemLocale(), userCountry: request.getUserCountry(), systemLocale: request.getSystemLocale(), }; } isLambdaEvent(request) { var _a, _b; return ((_b = (_a = request.session) === null || _a === void 0 ? void 0 : _a.bot) === null || _b === void 0 ? void 0 : _b.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