@botonic/plugin-hubtype-analytics 0.28.2-alpha.0 → 0.28.2-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,7 +2,7 @@ import { EventAction, EventFeedbackKnowledgebase, RequestData } from '../types';
2
2
  import { HtEvent } from './ht-event';
3
3
  export declare class HtEventFeedbackKnowledgebase extends HtEvent {
4
4
  action: EventAction.FeedbackKnowledgebase;
5
- knowledgebase_inference_id: string;
5
+ knowledge_base_inference_id: string;
6
6
  feedback_target_bot_interaction_id: string;
7
7
  feedback_target_id: string;
8
8
  feedback_group_id: string;
@@ -8,7 +8,7 @@ class HtEventFeedbackKnowledgebase extends ht_event_1.HtEvent {
8
8
  super(event, requestData);
9
9
  this.type = types_1.EventType.WebEvent;
10
10
  this.action = event.action;
11
- this.knowledgebase_inference_id = event.knowledgebaseInferenceId;
11
+ this.knowledge_base_inference_id = event.knowledgebaseInferenceId;
12
12
  this.feedback_target_bot_interaction_id = event.feedbackBotInteractionId;
13
13
  this.feedback_target_id = event.feedbackTargetId;
14
14
  this.feedback_group_id = event.feedbackGroupId;
@@ -1 +1 @@
1
- {"version":3,"file":"ht-event-feedback-knowledgebase.js","sourceRoot":"","sources":["../../../src/event-models/ht-event-feedback-knowledgebase.ts"],"names":[],"mappings":";;;AAAA,oCAKiB;AACjB,yCAAoC;AAEpC,MAAa,4BAA6B,SAAQ,kBAAO;IAYvD,YAAY,KAAiC,EAAE,WAAwB;QACrE,KAAK,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;QACzB,IAAI,CAAC,IAAI,GAAG,iBAAS,CAAC,QAAQ,CAAA;QAC9B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;QAC1B,IAAI,CAAC,0BAA0B,GAAG,KAAK,CAAC,wBAAwB,CAAA;QAChE,IAAI,CAAC,kCAAkC,GAAG,KAAK,CAAC,wBAAwB,CAAA;QACxE,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC,gBAAgB,CAAA;QAChD,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,eAAe,CAAA;QAC9C,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,eAAe,CAAA;QAC7C,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,cAAc,CAAA;QAC3C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;QAC1B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAA;QACxB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAA;IAC9B,CAAC;CACF;AA1BD,oEA0BC"}
1
+ {"version":3,"file":"ht-event-feedback-knowledgebase.js","sourceRoot":"","sources":["../../../src/event-models/ht-event-feedback-knowledgebase.ts"],"names":[],"mappings":";;;AAAA,oCAKiB;AACjB,yCAAoC;AAEpC,MAAa,4BAA6B,SAAQ,kBAAO;IAYvD,YAAY,KAAiC,EAAE,WAAwB;QACrE,KAAK,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;QACzB,IAAI,CAAC,IAAI,GAAG,iBAAS,CAAC,QAAQ,CAAA;QAC9B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;QAC1B,IAAI,CAAC,2BAA2B,GAAG,KAAK,CAAC,wBAAwB,CAAA;QACjE,IAAI,CAAC,kCAAkC,GAAG,KAAK,CAAC,wBAAwB,CAAA;QACxE,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC,gBAAgB,CAAA;QAChD,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,eAAe,CAAA;QAC9C,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,eAAe,CAAA;QAC7C,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,cAAc,CAAA;QAC3C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;QAC1B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAA;QACxB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAA;IAC9B,CAAC;CACF;AA1BD,oEA0BC"}
@@ -1,6 +1,6 @@
1
1
  import { EventAction, EventType, HtEventProps, RequestData } from '../types';
2
2
  export declare class HtEvent {
3
- chat_id: string;
3
+ chat_id?: string;
4
4
  type: EventType;
5
5
  chat_language: string;
6
6
  chat_country?: string;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.HtEvent = void 0;
4
+ /* eslint-disable @typescript-eslint/naming-convention */
4
5
  const types_1 = require("../types");
5
6
  const excludedEvents = [
6
7
  types_1.EventAction.FeedbackCase,
@@ -1 +1 @@
1
- {"version":3,"file":"ht-event.js","sourceRoot":"","sources":["../../../src/event-models/ht-event.ts"],"names":[],"mappings":";;;AAAA,oCAA4E;AAE5E,MAAM,cAAc,GAAG;IACrB,mBAAW,CAAC,YAAY;IACxB,mBAAW,CAAC,oBAAoB;IAChC,mBAAW,CAAC,qBAAqB;IACjC,mBAAW,CAAC,eAAe;IAC3B,mBAAW,CAAC,WAAW;IACvB,mBAAW,CAAC,UAAU;CACvB,CAAA;AAED,MAAa,OAAO;IAWlB,YAAY,KAAmB,EAAE,WAAwB;QACvD,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,MAAM,CAAA;QACjC,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,QAAQ,CAAA;QACzC,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,OAAO,CAAA;QACvC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAA;QACvB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;QAE1B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;YAC1C,IAAI,CAAC,kBAAkB,GAAG,WAAW,CAAC,gBAAgB,CAAA;SACvD;IACH,CAAC;CACF;AAtBD,0BAsBC"}
1
+ {"version":3,"file":"ht-event.js","sourceRoot":"","sources":["../../../src/event-models/ht-event.ts"],"names":[],"mappings":";;;AAAA,yDAAyD;AACzD,oCAA4E;AAE5E,MAAM,cAAc,GAAG;IACrB,mBAAW,CAAC,YAAY;IACxB,mBAAW,CAAC,oBAAoB;IAChC,mBAAW,CAAC,qBAAqB;IACjC,mBAAW,CAAC,eAAe;IAC3B,mBAAW,CAAC,WAAW;IACvB,mBAAW,CAAC,UAAU;CACvB,CAAA;AAED,MAAa,OAAO;IAWlB,YAAY,KAAmB,EAAE,WAAwB;QACvD,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,MAAM,CAAA;QACjC,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,QAAQ,CAAA;QACzC,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,OAAO,CAAA;QACvC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAA;QACvB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;QAE1B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;YAC1C,IAAI,CAAC,kBAAkB,GAAG,WAAW,CAAC,gBAAgB,CAAA;SACvD;IACH,CAAC;CACF;AAtBD,0BAsBC"}
@@ -1,21 +1,25 @@
1
1
  import { BotRequest, Plugin } from '@botonic/core';
2
- import { EventType, HtEventProps, RequestData } from './types';
2
+ import { HtEventProps, RequestData } from './types';
3
3
  export interface HubtypeAnalyticsOptions {
4
4
  getLanguage?: (request: BotRequest) => string;
5
5
  getCountry?: (request: BotRequest) => string;
6
6
  }
7
7
  export default class BotonicPluginHubtypeAnalytics implements Plugin {
8
- baseUrl: string;
8
+ eventsBaseUrl: string;
9
9
  getLanguage: (request: BotRequest) => string;
10
10
  getCountry: (request: BotRequest) => string;
11
11
  constructor(options?: HubtypeAnalyticsOptions);
12
12
  post(): void;
13
- getUrl(request: BotRequest, eventType: EventType): string;
14
- getRequestData(request: BotRequest): RequestData;
15
13
  trackEvent(request: BotRequest, htEventProps: HtEventProps): Promise<{
16
14
  data: string;
17
15
  } | import("axios").AxiosResponse<any, any>>;
16
+ getRequestData(request: BotRequest): RequestData;
17
+ private isLambdaEvent;
18
18
  private sendEvent;
19
+ private sendBotEvent;
20
+ private sendWebEvent;
21
+ private sendWebEventByBotId;
22
+ private sendWebEventByProviderId;
19
23
  }
20
24
  export * from './types';
21
25
  export * from './utils';
package/lib/cjs/index.js CHANGED
@@ -12,27 +12,14 @@ function getDefaultCountry(request) {
12
12
  }
13
13
  class BotonicPluginHubtypeAnalytics {
14
14
  constructor(options) {
15
- this.baseUrl = process.env.HUBTYPE_API_URL || 'https://api.hubtype.com';
15
+ const hubtypeUrl = process.env.HUBTYPE_API_URL || 'https://api.hubtype.com';
16
+ this.eventsBaseUrl = `${hubtypeUrl}/external/v2/conversational_apps/`;
16
17
  this.getLanguage = (options === null || options === void 0 ? void 0 : options.getLanguage) || getDefaultLanguage;
17
18
  this.getCountry = (options === null || options === void 0 ? void 0 : options.getCountry) || getDefaultCountry;
18
19
  }
19
20
  post() {
20
21
  return;
21
22
  }
22
- getUrl(request, eventType) {
23
- const endpoint = eventType === types_1.EventType.BotEvent ? 'bot_event' : 'web_event';
24
- const botId = request.session.bot.id;
25
- return `${this.baseUrl}/external/v2/conversational_apps/${botId}/${endpoint}/`;
26
- }
27
- getRequestData(request) {
28
- var _a;
29
- return {
30
- language: this.getLanguage(request),
31
- country: this.getCountry(request),
32
- userId: request.session.user.id,
33
- botInteractionId: (_a = request.input) === null || _a === void 0 ? void 0 : _a.bot_interaction_id,
34
- };
35
- }
36
23
  trackEvent(request, htEventProps) {
37
24
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
38
25
  if (request.session.is_test_integration) {
@@ -45,10 +32,51 @@ class BotonicPluginHubtypeAnalytics {
45
32
  return this.sendEvent(request, event);
46
33
  });
47
34
  }
35
+ getRequestData(request) {
36
+ var _a;
37
+ return {
38
+ language: this.getLanguage(request),
39
+ country: this.getCountry(request),
40
+ userId: this.isLambdaEvent(request) ? request.session.user.id : undefined,
41
+ botInteractionId: (_a = request.input) === null || _a === void 0 ? void 0 : _a.bot_interaction_id,
42
+ };
43
+ }
44
+ isLambdaEvent(request) {
45
+ var _a, _b;
46
+ return ((_b = (_a = request.session) === null || _a === void 0 ? void 0 : _a.bot) === null || _b === void 0 ? void 0 : _b.id) !== undefined;
47
+ }
48
48
  sendEvent(request, event) {
49
- const url = this.getUrl(request, event.type);
50
- const headers = { Authorization: `Bearer ${request.session._access_token}` };
51
- const config = event.type !== types_1.EventType.WebEvent ? { headers } : undefined;
49
+ if (event.type === types_1.EventType.BotEvent) {
50
+ return this.sendBotEvent(request, event);
51
+ }
52
+ return this.sendWebEvent(request, event);
53
+ }
54
+ sendBotEvent(request, event) {
55
+ const botId = request.session.bot.id;
56
+ const url = `${this.eventsBaseUrl}/${botId}/bot_event/`;
57
+ const config = {
58
+ headers: { Authorization: `Bearer ${request.session._access_token}` },
59
+ };
60
+ return axios_1.default.post(url, event, config);
61
+ }
62
+ sendWebEvent(request, event) {
63
+ if (this.isLambdaEvent(request)) {
64
+ return this.sendWebEventByBotId(request, event);
65
+ }
66
+ return this.sendWebEventByProviderId(request, event);
67
+ }
68
+ sendWebEventByBotId(request, event) {
69
+ const botId = request.session.bot.id;
70
+ const url = `${this.eventsBaseUrl}/${botId}/web_event/`;
71
+ return axios_1.default.post(url, event);
72
+ }
73
+ sendWebEventByProviderId(request, event) {
74
+ const url = `${this.eventsBaseUrl}/web_event/`;
75
+ const config = {
76
+ params: {
77
+ provider_id: request.session.user.id,
78
+ },
79
+ };
52
80
  return axios_1.default.post(url, event, config);
53
81
  }
54
82
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AACA,0DAAyB;AAGzB,mCAA8D;AAC9D,mCAAuC;AAOvC,SAAS,kBAAkB,CAAC,OAAmB;IAC7C,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAA;AACjD,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAmB;IAC5C,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAA;AAChD,CAAC;AAED,MAAqB,6BAA6B;IAIhD,YAAY,OAAiC;QAC3C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,yBAAyB,CAAA;QACvE,IAAI,CAAC,WAAW,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,KAAI,kBAAkB,CAAA;QAC7D,IAAI,CAAC,UAAU,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,KAAI,iBAAiB,CAAA;IAC5D,CAAC;IAED,IAAI;QACF,OAAM;IACR,CAAC;IAED,MAAM,CAAC,OAAmB,EAAE,SAAoB;QAC9C,MAAM,QAAQ,GACZ,SAAS,KAAK,iBAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAA;QAC9D,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAA;QACpC,OAAO,GAAG,IAAI,CAAC,OAAO,oCAAoC,KAAK,IAAI,QAAQ,GAAG,CAAA;IAChF,CAAC;IAED,cAAc,CAAC,OAAmB;;QAChC,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;YACnC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YACjC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC/B,gBAAgB,EAAE,MAAA,OAAO,CAAC,KAAK,0CAAE,kBAAkB;SACpD,CAAA;IACH,CAAC;IAEK,UAAU,CAAC,OAAmB,EAAE,YAA0B;;YAC9D,IAAI,OAAO,CAAC,OAAO,CAAC,mBAAmB,EAAE;gBACvC,OAAO,OAAO,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,iDAAiD;iBACxD,CAAC,CAAA;aACH;YAED,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;YAChD,MAAM,KAAK,GAAG,IAAA,qBAAa,EAAC,WAAW,EAAE,YAAY,CAAC,CAAA;YACtD,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QACvC,CAAC;KAAA;IAEO,SAAS,CAAC,OAAmB,EAAE,KAAc;QACnD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;QAC5C,MAAM,OAAO,GAAG,EAAE,aAAa,EAAE,UAAU,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAA;QAC5E,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,KAAK,iBAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;QAE1E,OAAO,eAAK,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IACvC,CAAC;CACF;AAjDD,gDAiDC;AAED,kDAAuB;AACvB,kDAAuB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -140,6 +140,6 @@ export type HtEventProps = EventFeedback | EventFeedbackKnowledgebase | EventFlo
140
140
  export interface RequestData {
141
141
  language: string;
142
142
  country: string;
143
- userId: string;
143
+ userId?: string;
144
144
  botInteractionId: string;
145
145
  }
@@ -2,7 +2,7 @@ import { EventAction, EventFeedbackKnowledgebase, RequestData } from '../types';
2
2
  import { HtEvent } from './ht-event';
3
3
  export declare class HtEventFeedbackKnowledgebase extends HtEvent {
4
4
  action: EventAction.FeedbackKnowledgebase;
5
- knowledgebase_inference_id: string;
5
+ knowledge_base_inference_id: string;
6
6
  feedback_target_bot_interaction_id: string;
7
7
  feedback_target_id: string;
8
8
  feedback_group_id: string;
@@ -5,7 +5,7 @@ export class HtEventFeedbackKnowledgebase extends HtEvent {
5
5
  super(event, requestData);
6
6
  this.type = EventType.WebEvent;
7
7
  this.action = event.action;
8
- this.knowledgebase_inference_id = event.knowledgebaseInferenceId;
8
+ this.knowledge_base_inference_id = event.knowledgebaseInferenceId;
9
9
  this.feedback_target_bot_interaction_id = event.feedbackBotInteractionId;
10
10
  this.feedback_target_id = event.feedbackTargetId;
11
11
  this.feedback_group_id = event.feedbackGroupId;
@@ -1 +1 @@
1
- {"version":3,"file":"ht-event-feedback-knowledgebase.js","sourceRoot":"","sources":["../../../src/event-models/ht-event-feedback-knowledgebase.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,SAAS,GAEV,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpC,MAAM,OAAO,4BAA6B,SAAQ,OAAO;IAYvD,YAAY,KAAiC,EAAE,WAAwB;QACrE,KAAK,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;QACzB,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAA;QAC9B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;QAC1B,IAAI,CAAC,0BAA0B,GAAG,KAAK,CAAC,wBAAwB,CAAA;QAChE,IAAI,CAAC,kCAAkC,GAAG,KAAK,CAAC,wBAAwB,CAAA;QACxE,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC,gBAAgB,CAAA;QAChD,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,eAAe,CAAA;QAC9C,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,eAAe,CAAA;QAC7C,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,cAAc,CAAA;QAC3C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;QAC1B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAA;QACxB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAA;IAC9B,CAAC;CACF"}
1
+ {"version":3,"file":"ht-event-feedback-knowledgebase.js","sourceRoot":"","sources":["../../../src/event-models/ht-event-feedback-knowledgebase.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,SAAS,GAEV,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpC,MAAM,OAAO,4BAA6B,SAAQ,OAAO;IAYvD,YAAY,KAAiC,EAAE,WAAwB;QACrE,KAAK,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;QACzB,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAA;QAC9B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;QAC1B,IAAI,CAAC,2BAA2B,GAAG,KAAK,CAAC,wBAAwB,CAAA;QACjE,IAAI,CAAC,kCAAkC,GAAG,KAAK,CAAC,wBAAwB,CAAA;QACxE,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC,gBAAgB,CAAA;QAChD,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,eAAe,CAAA;QAC9C,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,eAAe,CAAA;QAC7C,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,cAAc,CAAA;QAC3C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;QAC1B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAA;QACxB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAA;IAC9B,CAAC;CACF"}
@@ -1,6 +1,6 @@
1
1
  import { EventAction, EventType, HtEventProps, RequestData } from '../types';
2
2
  export declare class HtEvent {
3
- chat_id: string;
3
+ chat_id?: string;
4
4
  type: EventType;
5
5
  chat_language: string;
6
6
  chat_country?: string;
@@ -1,3 +1,4 @@
1
+ /* eslint-disable @typescript-eslint/naming-convention */
1
2
  import { EventAction } from '../types';
2
3
  const excludedEvents = [
3
4
  EventAction.FeedbackCase,
@@ -1 +1 @@
1
- {"version":3,"file":"ht-event.js","sourceRoot":"","sources":["../../../src/event-models/ht-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAwC,MAAM,UAAU,CAAA;AAE5E,MAAM,cAAc,GAAG;IACrB,WAAW,CAAC,YAAY;IACxB,WAAW,CAAC,oBAAoB;IAChC,WAAW,CAAC,qBAAqB;IACjC,WAAW,CAAC,eAAe;IAC3B,WAAW,CAAC,WAAW;IACvB,WAAW,CAAC,UAAU;CACvB,CAAA;AAED,MAAM,OAAO,OAAO;IAWlB,YAAY,KAAmB,EAAE,WAAwB;QACvD,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,MAAM,CAAA;QACjC,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,QAAQ,CAAA;QACzC,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,OAAO,CAAA;QACvC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAA;QACvB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;QAE1B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;YAC1C,IAAI,CAAC,kBAAkB,GAAG,WAAW,CAAC,gBAAgB,CAAA;SACvD;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"ht-event.js","sourceRoot":"","sources":["../../../src/event-models/ht-event.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,OAAO,EAAE,WAAW,EAAwC,MAAM,UAAU,CAAA;AAE5E,MAAM,cAAc,GAAG;IACrB,WAAW,CAAC,YAAY;IACxB,WAAW,CAAC,oBAAoB;IAChC,WAAW,CAAC,qBAAqB;IACjC,WAAW,CAAC,eAAe;IAC3B,WAAW,CAAC,WAAW;IACvB,WAAW,CAAC,UAAU;CACvB,CAAA;AAED,MAAM,OAAO,OAAO;IAWlB,YAAY,KAAmB,EAAE,WAAwB;QACvD,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,MAAM,CAAA;QACjC,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,QAAQ,CAAA;QACzC,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,OAAO,CAAA;QACvC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAA;QACvB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;QAE1B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;YAC1C,IAAI,CAAC,kBAAkB,GAAG,WAAW,CAAC,gBAAgB,CAAA;SACvD;IACH,CAAC;CACF"}
@@ -1,22 +1,26 @@
1
1
  import { BotRequest, Plugin } from '@botonic/core';
2
2
  import axios from 'axios';
3
- import { EventType, HtEventProps, RequestData } from './types';
3
+ import { HtEventProps, RequestData } from './types';
4
4
  export interface HubtypeAnalyticsOptions {
5
5
  getLanguage?: (request: BotRequest) => string;
6
6
  getCountry?: (request: BotRequest) => string;
7
7
  }
8
8
  export default class BotonicPluginHubtypeAnalytics implements Plugin {
9
- baseUrl: string;
9
+ eventsBaseUrl: string;
10
10
  getLanguage: (request: BotRequest) => string;
11
11
  getCountry: (request: BotRequest) => string;
12
12
  constructor(options?: HubtypeAnalyticsOptions);
13
13
  post(): void;
14
- getUrl(request: BotRequest, eventType: EventType): string;
15
- getRequestData(request: BotRequest): RequestData;
16
14
  trackEvent(request: BotRequest, htEventProps: HtEventProps): Promise<{
17
15
  data: string;
18
16
  } | axios.AxiosResponse<any, any>>;
17
+ getRequestData(request: BotRequest): RequestData;
18
+ private isLambdaEvent;
19
19
  private sendEvent;
20
+ private sendBotEvent;
21
+ private sendWebEvent;
22
+ private sendWebEventByBotId;
23
+ private sendWebEventByProviderId;
20
24
  }
21
25
  export * from './types';
22
26
  export * from './utils';
package/lib/esm/index.js CHANGED
@@ -10,27 +10,14 @@ function getDefaultCountry(request) {
10
10
  }
11
11
  export default class BotonicPluginHubtypeAnalytics {
12
12
  constructor(options) {
13
- this.baseUrl = process.env.HUBTYPE_API_URL || 'https://api.hubtype.com';
13
+ const hubtypeUrl = process.env.HUBTYPE_API_URL || 'https://api.hubtype.com';
14
+ this.eventsBaseUrl = `${hubtypeUrl}/external/v2/conversational_apps/`;
14
15
  this.getLanguage = (options === null || options === void 0 ? void 0 : options.getLanguage) || getDefaultLanguage;
15
16
  this.getCountry = (options === null || options === void 0 ? void 0 : options.getCountry) || getDefaultCountry;
16
17
  }
17
18
  post() {
18
19
  return;
19
20
  }
20
- getUrl(request, eventType) {
21
- const endpoint = eventType === EventType.BotEvent ? 'bot_event' : 'web_event';
22
- const botId = request.session.bot.id;
23
- return `${this.baseUrl}/external/v2/conversational_apps/${botId}/${endpoint}/`;
24
- }
25
- getRequestData(request) {
26
- var _a;
27
- return {
28
- language: this.getLanguage(request),
29
- country: this.getCountry(request),
30
- userId: request.session.user.id,
31
- botInteractionId: (_a = request.input) === null || _a === void 0 ? void 0 : _a.bot_interaction_id,
32
- };
33
- }
34
21
  trackEvent(request, htEventProps) {
35
22
  return __awaiter(this, void 0, void 0, function* () {
36
23
  if (request.session.is_test_integration) {
@@ -43,10 +30,51 @@ export default class BotonicPluginHubtypeAnalytics {
43
30
  return this.sendEvent(request, event);
44
31
  });
45
32
  }
33
+ getRequestData(request) {
34
+ var _a;
35
+ return {
36
+ language: this.getLanguage(request),
37
+ country: this.getCountry(request),
38
+ userId: this.isLambdaEvent(request) ? request.session.user.id : undefined,
39
+ botInteractionId: (_a = request.input) === null || _a === void 0 ? void 0 : _a.bot_interaction_id,
40
+ };
41
+ }
42
+ isLambdaEvent(request) {
43
+ var _a, _b;
44
+ return ((_b = (_a = request.session) === null || _a === void 0 ? void 0 : _a.bot) === null || _b === void 0 ? void 0 : _b.id) !== undefined;
45
+ }
46
46
  sendEvent(request, event) {
47
- const url = this.getUrl(request, event.type);
48
- const headers = { Authorization: `Bearer ${request.session._access_token}` };
49
- const config = event.type !== EventType.WebEvent ? { headers } : undefined;
47
+ if (event.type === EventType.BotEvent) {
48
+ return this.sendBotEvent(request, event);
49
+ }
50
+ return this.sendWebEvent(request, event);
51
+ }
52
+ sendBotEvent(request, event) {
53
+ const botId = request.session.bot.id;
54
+ const url = `${this.eventsBaseUrl}/${botId}/bot_event/`;
55
+ const config = {
56
+ headers: { Authorization: `Bearer ${request.session._access_token}` },
57
+ };
58
+ return axios.post(url, event, config);
59
+ }
60
+ sendWebEvent(request, event) {
61
+ if (this.isLambdaEvent(request)) {
62
+ return this.sendWebEventByBotId(request, event);
63
+ }
64
+ return this.sendWebEventByProviderId(request, event);
65
+ }
66
+ sendWebEventByBotId(request, event) {
67
+ const botId = request.session.bot.id;
68
+ const url = `${this.eventsBaseUrl}/${botId}/web_event/`;
69
+ return axios.post(url, event);
70
+ }
71
+ sendWebEventByProviderId(request, event) {
72
+ const url = `${this.eventsBaseUrl}/web_event/`;
73
+ const config = {
74
+ params: {
75
+ provider_id: request.session.user.id,
76
+ },
77
+ };
50
78
  return axios.post(url, event, config);
51
79
  }
52
80
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,EAAE,SAAS,EAA6B,MAAM,SAAS,CAAA;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAOvC,SAAS,kBAAkB,CAAC,OAAmB;IAC7C,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAA;AACjD,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAmB;IAC5C,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAA;AAChD,CAAC;AAED,MAAM,CAAC,OAAO,OAAO,6BAA6B;IAIhD,YAAY,OAAiC;QAC3C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,yBAAyB,CAAA;QACvE,IAAI,CAAC,WAAW,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,KAAI,kBAAkB,CAAA;QAC7D,IAAI,CAAC,UAAU,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,KAAI,iBAAiB,CAAA;IAC5D,CAAC;IAED,IAAI;QACF,OAAM;IACR,CAAC;IAED,MAAM,CAAC,OAAmB,EAAE,SAAoB;QAC9C,MAAM,QAAQ,GACZ,SAAS,KAAK,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAA;QAC9D,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAA;QACpC,OAAO,GAAG,IAAI,CAAC,OAAO,oCAAoC,KAAK,IAAI,QAAQ,GAAG,CAAA;IAChF,CAAC;IAED,cAAc,CAAC,OAAmB;;QAChC,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;YACnC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YACjC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC/B,gBAAgB,EAAE,MAAA,OAAO,CAAC,KAAK,0CAAE,kBAAkB;SACpD,CAAA;IACH,CAAC;IAEK,UAAU,CAAC,OAAmB,EAAE,YAA0B;;YAC9D,IAAI,OAAO,CAAC,OAAO,CAAC,mBAAmB,EAAE;gBACvC,OAAO,OAAO,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,iDAAiD;iBACxD,CAAC,CAAA;aACH;YAED,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;YAChD,MAAM,KAAK,GAAG,aAAa,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;YACtD,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QACvC,CAAC;KAAA;IAEO,SAAS,CAAC,OAAmB,EAAE,KAAc;QACnD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;QAC5C,MAAM,OAAO,GAAG,EAAE,aAAa,EAAE,UAAU,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAA;QAC5E,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;QAE1E,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IACvC,CAAC;CACF;AAED,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -140,6 +140,6 @@ export type HtEventProps = EventFeedback | EventFeedbackKnowledgebase | EventFlo
140
140
  export interface RequestData {
141
141
  language: string;
142
142
  country: string;
143
- userId: string;
143
+ userId?: string;
144
144
  botInteractionId: string;
145
145
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@botonic/plugin-hubtype-analytics",
3
- "version": "0.28.2-alpha.0",
3
+ "version": "0.28.2-alpha.2",
4
4
  "description": "Plugin for tracking in the Hubtype backend to see the results in the Hubtype Dashbord",
5
5
  "main": "./lib/cjs/index.js",
6
6
  "module": "./lib/esm/index.js",
@@ -14,7 +14,7 @@
14
14
  },
15
15
  "dependencies": {
16
16
  "@babel/runtime": "^7.21.0",
17
- "@botonic/core": "0.28.2-alpha.0",
17
+ "@botonic/core": "0.28.2-alpha.1",
18
18
  "axios": "^1.7.2"
19
19
  },
20
20
  "devDependencies": {
@@ -8,7 +8,7 @@ import { HtEvent } from './ht-event'
8
8
 
9
9
  export class HtEventFeedbackKnowledgebase extends HtEvent {
10
10
  action: EventAction.FeedbackKnowledgebase
11
- knowledgebase_inference_id: string
11
+ knowledge_base_inference_id: string
12
12
  feedback_target_bot_interaction_id: string
13
13
  feedback_target_id: string
14
14
  feedback_group_id: string
@@ -22,7 +22,7 @@ export class HtEventFeedbackKnowledgebase extends HtEvent {
22
22
  super(event, requestData)
23
23
  this.type = EventType.WebEvent
24
24
  this.action = event.action
25
- this.knowledgebase_inference_id = event.knowledgebaseInferenceId
25
+ this.knowledge_base_inference_id = event.knowledgebaseInferenceId
26
26
  this.feedback_target_bot_interaction_id = event.feedbackBotInteractionId
27
27
  this.feedback_target_id = event.feedbackTargetId
28
28
  this.feedback_group_id = event.feedbackGroupId
@@ -1,3 +1,4 @@
1
+ /* eslint-disable @typescript-eslint/naming-convention */
1
2
  import { EventAction, EventType, HtEventProps, RequestData } from '../types'
2
3
 
3
4
  const excludedEvents = [
@@ -10,7 +11,7 @@ const excludedEvents = [
10
11
  ]
11
12
 
12
13
  export class HtEvent {
13
- chat_id: string
14
+ chat_id?: string
14
15
  type: EventType
15
16
  chat_language: string
16
17
  chat_country?: string
package/src/index.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { BotRequest, Plugin } from '@botonic/core'
2
2
  import axios from 'axios'
3
+ import { send } from 'process'
3
4
 
4
5
  import { HtEvent } from './event-models'
5
6
  import { EventType, HtEventProps, RequestData } from './types'
@@ -19,11 +20,12 @@ function getDefaultCountry(request: BotRequest): string {
19
20
  }
20
21
 
21
22
  export default class BotonicPluginHubtypeAnalytics implements Plugin {
22
- baseUrl: string
23
+ eventsBaseUrl: string
23
24
  getLanguage: (request: BotRequest) => string
24
25
  getCountry: (request: BotRequest) => string
25
26
  constructor(options?: HubtypeAnalyticsOptions) {
26
- this.baseUrl = process.env.HUBTYPE_API_URL || 'https://api.hubtype.com'
27
+ const hubtypeUrl = process.env.HUBTYPE_API_URL || 'https://api.hubtype.com'
28
+ this.eventsBaseUrl = `${hubtypeUrl}/external/v2/conversational_apps/`
27
29
  this.getLanguage = options?.getLanguage || getDefaultLanguage
28
30
  this.getCountry = options?.getCountry || getDefaultCountry
29
31
  }
@@ -32,39 +34,69 @@ export default class BotonicPluginHubtypeAnalytics implements Plugin {
32
34
  return
33
35
  }
34
36
 
35
- getUrl(request: BotRequest, eventType: EventType) {
36
- const endpoint =
37
- eventType === EventType.BotEvent ? 'bot_event' : 'web_event'
38
- const botId = request.session.bot.id
39
- return `${this.baseUrl}/external/v2/conversational_apps/${botId}/${endpoint}/`
37
+ async trackEvent(request: BotRequest, htEventProps: HtEventProps) {
38
+ if (request.session.is_test_integration) {
39
+ return Promise.resolve({
40
+ data: 'Event not sent because it is a test integration',
41
+ })
42
+ }
43
+
44
+ const requestData = this.getRequestData(request)
45
+ const event = createHtEvent(requestData, htEventProps)
46
+ return this.sendEvent(request, event)
40
47
  }
41
48
 
42
49
  getRequestData(request: BotRequest): RequestData {
43
50
  return {
44
51
  language: this.getLanguage(request),
45
52
  country: this.getCountry(request),
46
- userId: request.session.user.id,
53
+ userId: this.isLambdaEvent(request) ? request.session.user.id : undefined,
47
54
  botInteractionId: request.input?.bot_interaction_id,
48
55
  }
49
56
  }
50
57
 
51
- async trackEvent(request: BotRequest, htEventProps: HtEventProps) {
52
- if (request.session.is_test_integration) {
53
- return Promise.resolve({
54
- data: 'Event not sent because it is a test integration',
55
- })
58
+ private isLambdaEvent(request: BotRequest): boolean {
59
+ return request.session?.bot?.id !== undefined
60
+ }
61
+
62
+ private sendEvent(request: BotRequest, event: HtEvent) {
63
+ if (event.type === EventType.BotEvent) {
64
+ return this.sendBotEvent(request, event)
56
65
  }
57
66
 
58
- const requestData = this.getRequestData(request)
59
- const event = createHtEvent(requestData, htEventProps)
60
- return this.sendEvent(request, event)
67
+ return this.sendWebEvent(request, event)
61
68
  }
62
69
 
63
- private sendEvent(request: BotRequest, event: HtEvent) {
64
- const url = this.getUrl(request, event.type)
65
- const headers = { Authorization: `Bearer ${request.session._access_token}` }
66
- const config = event.type !== EventType.WebEvent ? { headers } : undefined
70
+ private sendBotEvent(request: BotRequest, event: HtEvent) {
71
+ const botId = request.session.bot.id
72
+ const url = `${this.eventsBaseUrl}/${botId}/bot_event/`
73
+ const config = {
74
+ headers: { Authorization: `Bearer ${request.session._access_token}` },
75
+ }
76
+ return axios.post(url, event, config)
77
+ }
67
78
 
79
+ private sendWebEvent(request: BotRequest, event: HtEvent) {
80
+ if (this.isLambdaEvent(request)) {
81
+ return this.sendWebEventByBotId(request, event)
82
+ }
83
+
84
+ return this.sendWebEventByProviderId(request, event)
85
+ }
86
+
87
+ private sendWebEventByBotId(request: BotRequest, event: HtEvent) {
88
+ const botId = request.session.bot.id
89
+ const url = `${this.eventsBaseUrl}/${botId}/web_event/`
90
+ return axios.post(url, event)
91
+ }
92
+
93
+ private sendWebEventByProviderId(request: BotRequest, event: HtEvent) {
94
+ const url = `${this.eventsBaseUrl}/web_event/`
95
+ const config = {
96
+ params: {
97
+ provider_id: request.session.user.id,
98
+ },
99
+ }
68
100
  return axios.post(url, event, config)
69
101
  }
70
102
  }
package/src/types.ts CHANGED
@@ -175,6 +175,6 @@ export type HtEventProps =
175
175
  export interface RequestData {
176
176
  language: string
177
177
  country: string
178
- userId: string
178
+ userId?: string
179
179
  botInteractionId: string
180
180
  }