@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
JavaScript
;
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