@botonic/plugin-hubtype-analytics 0.22.0-alpha.3 → 0.22.0-alpha.4

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.
Files changed (83) hide show
  1. package/lib/cjs/event-models/ht-event-agent-rating.d.ts +6 -0
  2. package/lib/cjs/event-models/ht-event-agent-rating.js +12 -0
  3. package/lib/cjs/event-models/ht-event-agent-rating.js.map +1 -0
  4. package/lib/cjs/event-models/ht-event-bot-ai-model.d.ts +8 -0
  5. package/lib/cjs/event-models/ht-event-bot-ai-model.js +14 -0
  6. package/lib/cjs/event-models/ht-event-bot-ai-model.js.map +1 -0
  7. package/lib/cjs/event-models/ht-event-bot-faq.d.ts +6 -0
  8. package/lib/cjs/event-models/ht-event-bot-faq.js +12 -0
  9. package/lib/cjs/event-models/ht-event-bot-faq.js.map +1 -0
  10. package/lib/cjs/event-models/ht-event-bot-keyword-model.d.ts +6 -0
  11. package/lib/cjs/event-models/ht-event-bot-keyword-model.js +12 -0
  12. package/lib/cjs/event-models/ht-event-bot-keyword-model.js.map +1 -0
  13. package/lib/cjs/event-models/ht-event-bot-rating.d.ts +8 -0
  14. package/lib/cjs/event-models/ht-event-bot-rating.js +14 -0
  15. package/lib/cjs/event-models/ht-event-bot-rating.js.map +1 -0
  16. package/lib/cjs/event-models/ht-event-channel-rating.d.ts +6 -0
  17. package/lib/cjs/event-models/ht-event-channel-rating.js +12 -0
  18. package/lib/cjs/event-models/ht-event-channel-rating.js.map +1 -0
  19. package/lib/cjs/event-models/ht-event-faq-useful.d.ts +7 -0
  20. package/lib/cjs/event-models/ht-event-faq-useful.js +13 -0
  21. package/lib/cjs/event-models/ht-event-faq-useful.js.map +1 -0
  22. package/lib/cjs/event-models/ht-event-handoff-fail.d.ts +8 -0
  23. package/lib/cjs/event-models/ht-event-handoff-fail.js +14 -0
  24. package/lib/cjs/event-models/ht-event-handoff-fail.js.map +1 -0
  25. package/lib/cjs/event-models/ht-event-handoff-success.d.ts +8 -0
  26. package/lib/cjs/event-models/ht-event-handoff-success.js +14 -0
  27. package/lib/cjs/event-models/ht-event-handoff-success.js.map +1 -0
  28. package/lib/cjs/event-models/ht-event.d.ts +8 -0
  29. package/lib/cjs/event-models/ht-event.js +59 -0
  30. package/lib/cjs/event-models/ht-event.js.map +1 -0
  31. package/lib/cjs/index.d.ts +7 -4
  32. package/lib/cjs/index.js +22 -11
  33. package/lib/cjs/index.js.map +1 -1
  34. package/lib/cjs/types.d.ts +69 -57
  35. package/lib/cjs/types.js.map +1 -1
  36. package/lib/esm/event-models/ht-event-agent-rating.d.ts +6 -0
  37. package/lib/esm/event-models/ht-event-agent-rating.js +8 -0
  38. package/lib/esm/event-models/ht-event-agent-rating.js.map +1 -0
  39. package/lib/esm/event-models/ht-event-bot-ai-model.d.ts +8 -0
  40. package/lib/esm/event-models/ht-event-bot-ai-model.js +10 -0
  41. package/lib/esm/event-models/ht-event-bot-ai-model.js.map +1 -0
  42. package/lib/esm/event-models/ht-event-bot-faq.d.ts +6 -0
  43. package/lib/esm/event-models/ht-event-bot-faq.js +8 -0
  44. package/lib/esm/event-models/ht-event-bot-faq.js.map +1 -0
  45. package/lib/esm/event-models/ht-event-bot-keyword-model.d.ts +6 -0
  46. package/lib/esm/event-models/ht-event-bot-keyword-model.js +8 -0
  47. package/lib/esm/event-models/ht-event-bot-keyword-model.js.map +1 -0
  48. package/lib/esm/event-models/ht-event-bot-rating.d.ts +8 -0
  49. package/lib/esm/event-models/ht-event-bot-rating.js +10 -0
  50. package/lib/esm/event-models/ht-event-bot-rating.js.map +1 -0
  51. package/lib/esm/event-models/ht-event-channel-rating.d.ts +6 -0
  52. package/lib/esm/event-models/ht-event-channel-rating.js +8 -0
  53. package/lib/esm/event-models/ht-event-channel-rating.js.map +1 -0
  54. package/lib/esm/event-models/ht-event-faq-useful.d.ts +7 -0
  55. package/lib/esm/event-models/ht-event-faq-useful.js +9 -0
  56. package/lib/esm/event-models/ht-event-faq-useful.js.map +1 -0
  57. package/lib/esm/event-models/ht-event-handoff-fail.d.ts +8 -0
  58. package/lib/esm/event-models/ht-event-handoff-fail.js +10 -0
  59. package/lib/esm/event-models/ht-event-handoff-fail.js.map +1 -0
  60. package/lib/esm/event-models/ht-event-handoff-success.d.ts +8 -0
  61. package/lib/esm/event-models/ht-event-handoff-success.js +10 -0
  62. package/lib/esm/event-models/ht-event-handoff-success.js.map +1 -0
  63. package/lib/esm/event-models/ht-event.d.ts +8 -0
  64. package/lib/esm/event-models/ht-event.js +55 -0
  65. package/lib/esm/event-models/ht-event.js.map +1 -0
  66. package/lib/esm/index.d.ts +7 -4
  67. package/lib/esm/index.js +22 -11
  68. package/lib/esm/index.js.map +1 -1
  69. package/lib/esm/types.d.ts +69 -57
  70. package/lib/esm/types.js.map +1 -1
  71. package/package.json +2 -2
  72. package/src/event-models/ht-event-agent-rating.ts +11 -0
  73. package/src/event-models/ht-event-bot-ai-model.ts +15 -0
  74. package/src/event-models/ht-event-bot-faq.ts +11 -0
  75. package/src/event-models/ht-event-bot-keyword-model.ts +12 -0
  76. package/src/event-models/ht-event-bot-rating.ts +15 -0
  77. package/src/event-models/ht-event-channel-rating.ts +11 -0
  78. package/src/event-models/ht-event-faq-useful.ts +13 -0
  79. package/src/event-models/ht-event-handoff-fail.ts +15 -0
  80. package/src/event-models/ht-event-handoff-success.ts +15 -0
  81. package/src/event-models/ht-event.ts +61 -0
  82. package/src/index.ts +30 -18
  83. package/src/types.ts +76 -49
@@ -0,0 +1,6 @@
1
+ import { EventBotFaq, RequestData } from '../types';
2
+ import { HtEvent } from './ht-event';
3
+ export declare class HtEventBotFaq extends HtEvent {
4
+ faq_name: string;
5
+ constructor(event: EventBotFaq, requestData: RequestData);
6
+ }
@@ -0,0 +1,8 @@
1
+ import { HtEvent } from './ht-event';
2
+ export class HtEventBotFaq extends HtEvent {
3
+ constructor(event, requestData) {
4
+ super(event, requestData);
5
+ this.faq_name = event.event_data.faq_name;
6
+ }
7
+ }
8
+ //# sourceMappingURL=ht-event-bot-faq.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ht-event-bot-faq.js","sourceRoot":"","sources":["../../../src/event-models/ht-event-bot-faq.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpC,MAAM,OAAO,aAAc,SAAQ,OAAO;IAGxC,YAAY,KAAkB,EAAE,WAAwB;QACtD,KAAK,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;QACzB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAA;IAC3C,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ import { EventBotKeywordModel, RequestData } from '../types';
2
+ import { HtEvent } from './ht-event';
3
+ export declare class HtEventBotKeywordModel extends HtEvent {
4
+ confidence_successful: boolean;
5
+ constructor(event: EventBotKeywordModel, requestData: RequestData);
6
+ }
@@ -0,0 +1,8 @@
1
+ import { HtEvent } from './ht-event';
2
+ export class HtEventBotKeywordModel extends HtEvent {
3
+ constructor(event, requestData) {
4
+ super(event, requestData);
5
+ this.confidence_successful = event.event_data.confidence_successful;
6
+ }
7
+ }
8
+ //# sourceMappingURL=ht-event-bot-keyword-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ht-event-bot-keyword-model.js","sourceRoot":"","sources":["../../../src/event-models/ht-event-bot-keyword-model.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpC,MAAM,OAAO,sBAAuB,SAAQ,OAAO;IAGjD,YAAY,KAA2B,EAAE,WAAwB;QAC/D,KAAK,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;QAEzB,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC,UAAU,CAAC,qBAAqB,CAAA;IACrE,CAAC;CACF"}
@@ -0,0 +1,8 @@
1
+ import { EventBotRating, RequestData } from '../types';
2
+ import { HtEvent } from './ht-event';
3
+ export declare class HtEventBotRating extends HtEvent {
4
+ rating: number;
5
+ free_comment?: string;
6
+ selected_options?: string[];
7
+ constructor(event: EventBotRating, requestData: RequestData);
8
+ }
@@ -0,0 +1,10 @@
1
+ import { HtEvent } from './ht-event';
2
+ export class HtEventBotRating extends HtEvent {
3
+ constructor(event, requestData) {
4
+ super(event, requestData);
5
+ this.rating = event.event_data.rating;
6
+ this.free_comment = event.event_data.free_comment;
7
+ this.selected_options = event.event_data.selected_options;
8
+ }
9
+ }
10
+ //# sourceMappingURL=ht-event-bot-rating.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ht-event-bot-rating.js","sourceRoot":"","sources":["../../../src/event-models/ht-event-bot-rating.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpC,MAAM,OAAO,gBAAiB,SAAQ,OAAO;IAK3C,YAAY,KAAqB,EAAE,WAAwB;QACzD,KAAK,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;QACzB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAA;QACrC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,UAAU,CAAC,YAAY,CAAA;QACjD,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAA;IAC3D,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ import { EventChannelRating, RequestData } from '../types';
2
+ import { HtEvent } from './ht-event';
3
+ export declare class HtEventChannelRating extends HtEvent {
4
+ rating: number;
5
+ constructor(event: EventChannelRating, requestData: RequestData);
6
+ }
@@ -0,0 +1,8 @@
1
+ import { HtEvent } from './ht-event';
2
+ export class HtEventChannelRating extends HtEvent {
3
+ constructor(event, requestData) {
4
+ super(event, requestData);
5
+ this.rating = event.event_data.rating;
6
+ }
7
+ }
8
+ //# sourceMappingURL=ht-event-channel-rating.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ht-event-channel-rating.js","sourceRoot":"","sources":["../../../src/event-models/ht-event-channel-rating.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpC,MAAM,OAAO,oBAAqB,SAAQ,OAAO;IAG/C,YAAY,KAAyB,EAAE,WAAwB;QAC7D,KAAK,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;QACzB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAA;IACvC,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ import { EventFaqUseful, RequestData } from '../types';
2
+ import { HtEvent } from './ht-event';
3
+ export declare class HtEventFaqUseful extends HtEvent {
4
+ faq_name: string;
5
+ useful: boolean;
6
+ constructor(event: EventFaqUseful, requestData: RequestData);
7
+ }
@@ -0,0 +1,9 @@
1
+ import { HtEvent } from './ht-event';
2
+ export class HtEventFaqUseful extends HtEvent {
3
+ constructor(event, requestData) {
4
+ super(event, requestData);
5
+ this.faq_name = event.event_data.faq_name;
6
+ this.useful = event.event_data.useful;
7
+ }
8
+ }
9
+ //# sourceMappingURL=ht-event-faq-useful.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ht-event-faq-useful.js","sourceRoot":"","sources":["../../../src/event-models/ht-event-faq-useful.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpC,MAAM,OAAO,gBAAiB,SAAQ,OAAO;IAI3C,YAAY,KAAqB,EAAE,WAAwB;QACzD,KAAK,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;QACzB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAA;QACzC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAA;IACvC,CAAC;CACF"}
@@ -0,0 +1,8 @@
1
+ import { EventHandoffFail, RequestData } from '../types';
2
+ import { HtEvent } from './ht-event';
3
+ export declare class HtEventHandoffFail extends HtEvent {
4
+ queue_open: boolean;
5
+ available_agents: boolean;
6
+ threshold_reached: boolean;
7
+ constructor(event: EventHandoffFail, requestData: RequestData);
8
+ }
@@ -0,0 +1,10 @@
1
+ import { HtEvent } from './ht-event';
2
+ export class HtEventHandoffFail extends HtEvent {
3
+ constructor(event, requestData) {
4
+ super(event, requestData);
5
+ this.queue_open = event.event_data.queue_open;
6
+ this.available_agents = event.event_data.available_agents;
7
+ this.threshold_reached = event.event_data.threshold_reached;
8
+ }
9
+ }
10
+ //# sourceMappingURL=ht-event-handoff-fail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ht-event-handoff-fail.js","sourceRoot":"","sources":["../../../src/event-models/ht-event-handoff-fail.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpC,MAAM,OAAO,kBAAmB,SAAQ,OAAO;IAK7C,YAAY,KAAuB,EAAE,WAAwB;QAC3D,KAAK,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;QACzB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,UAAU,CAAA;QAC7C,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAA;QACzD,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAA;IAC7D,CAAC;CACF"}
@@ -0,0 +1,8 @@
1
+ import { EventHandoffSuccess, RequestData } from '../types';
2
+ import { HtEvent } from './ht-event';
3
+ export declare class HtEventHandoffSuccess extends HtEvent {
4
+ queue_open: boolean;
5
+ available_agents: boolean;
6
+ threshold_reached: boolean;
7
+ constructor(event: EventHandoffSuccess, requestData: RequestData);
8
+ }
@@ -0,0 +1,10 @@
1
+ import { HtEvent } from './ht-event';
2
+ export class HtEventHandoffSuccess extends HtEvent {
3
+ constructor(event, requestData) {
4
+ super(event, requestData);
5
+ this.queue_open = event.event_data.queue_open;
6
+ this.available_agents = event.event_data.available_agents;
7
+ this.threshold_reached = event.event_data.threshold_reached;
8
+ }
9
+ }
10
+ //# sourceMappingURL=ht-event-handoff-success.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ht-event-handoff-success.js","sourceRoot":"","sources":["../../../src/event-models/ht-event-handoff-success.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpC,MAAM,OAAO,qBAAsB,SAAQ,OAAO;IAKhD,YAAY,KAA0B,EAAE,WAAwB;QAC9D,KAAK,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;QACzB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,UAAU,CAAA;QAC7C,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAA;QACzD,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAA;IAC7D,CAAC;CACF"}
@@ -0,0 +1,8 @@
1
+ import { BaseEventData, EventName, HtEventProps, RequestData } from '../types';
2
+ export declare class HtEvent {
3
+ chat: string;
4
+ event_type: EventName;
5
+ event_data: BaseEventData;
6
+ protected constructor(event: HtEventProps, requestData: RequestData);
7
+ static create(requestData: RequestData, htEventProps: HtEventProps): HtEvent;
8
+ }
@@ -0,0 +1,55 @@
1
+ import { EventName } from '../types';
2
+ import { HtEventAgentRating } from './ht-event-agent-rating';
3
+ import { HtEventBotAiModel } from './ht-event-bot-ai-model';
4
+ import { HtEventBotFaq } from './ht-event-bot-faq';
5
+ import { HtEventBotKeywordModel } from './ht-event-bot-keyword-model';
6
+ import { HtEventBotRating } from './ht-event-bot-rating';
7
+ import { HtEventChannelRating } from './ht-event-channel-rating';
8
+ import { HtEventFaqUseful } from './ht-event-faq-useful';
9
+ import { HtEventHandoffFail } from './ht-event-handoff-fail';
10
+ import { HtEventHandoffSuccess } from './ht-event-handoff-success';
11
+ export class HtEvent {
12
+ constructor(event, requestData) {
13
+ this.chat = requestData.userId;
14
+ this.event_type = event.event_type;
15
+ this.event_data = {
16
+ channel: requestData.provider,
17
+ event_datetime: new Date().toISOString(),
18
+ enduser_language: requestData.language,
19
+ enduser_country: requestData.country,
20
+ format_version: 1,
21
+ // flow_version?: string
22
+ };
23
+ }
24
+ static create(requestData, htEventProps) {
25
+ if (htEventProps.event_type === EventName.botAgentRating) {
26
+ return new HtEventAgentRating(htEventProps, requestData);
27
+ }
28
+ if (htEventProps.event_type === EventName.botChannelRating) {
29
+ return new HtEventChannelRating(htEventProps, requestData);
30
+ }
31
+ if (htEventProps.event_type === EventName.botFaqUseful) {
32
+ return new HtEventFaqUseful(htEventProps, requestData);
33
+ }
34
+ if (htEventProps.event_type === EventName.botRating) {
35
+ return new HtEventBotRating(htEventProps, requestData);
36
+ }
37
+ if (htEventProps.event_type === EventName.botFaq) {
38
+ return new HtEventBotFaq(htEventProps, requestData);
39
+ }
40
+ if (htEventProps.event_type === EventName.botAiModel) {
41
+ return new HtEventBotAiModel(htEventProps, requestData);
42
+ }
43
+ if (htEventProps.event_type === EventName.botKeywordsModel) {
44
+ return new HtEventBotKeywordModel(htEventProps, requestData);
45
+ }
46
+ if (htEventProps.event_type === EventName.handoffSuccess) {
47
+ return new HtEventHandoffSuccess(htEventProps, requestData);
48
+ }
49
+ if (htEventProps.event_type === EventName.handoffFail) {
50
+ return new HtEventHandoffFail(htEventProps, requestData);
51
+ }
52
+ return new HtEvent(htEventProps, requestData);
53
+ }
54
+ }
55
+ //# sourceMappingURL=ht-event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ht-event.js","sourceRoot":"","sources":["../../../src/event-models/ht-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,SAAS,EAA6B,MAAM,UAAU,CAAA;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAElE,MAAM,OAAO,OAAO;IAKlB,YAAsB,KAAmB,EAAE,WAAwB;QACjE,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,MAAM,CAAA;QAC9B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAA;QAClC,IAAI,CAAC,UAAU,GAAG;YAChB,OAAO,EAAE,WAAW,CAAC,QAAQ;YAC7B,cAAc,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACxC,gBAAgB,EAAE,WAAW,CAAC,QAAQ;YACtC,eAAe,EAAE,WAAW,CAAC,OAAO;YACpC,cAAc,EAAE,CAAC;YACjB,wBAAwB;SACzB,CAAA;IACH,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,WAAwB,EAAE,YAA0B;QAChE,IAAI,YAAY,CAAC,UAAU,KAAK,SAAS,CAAC,cAAc,EAAE;YACxD,OAAO,IAAI,kBAAkB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;SACzD;QACD,IAAI,YAAY,CAAC,UAAU,KAAK,SAAS,CAAC,gBAAgB,EAAE;YAC1D,OAAO,IAAI,oBAAoB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;SAC3D;QACD,IAAI,YAAY,CAAC,UAAU,KAAK,SAAS,CAAC,YAAY,EAAE;YACtD,OAAO,IAAI,gBAAgB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;SACvD;QACD,IAAI,YAAY,CAAC,UAAU,KAAK,SAAS,CAAC,SAAS,EAAE;YACnD,OAAO,IAAI,gBAAgB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;SACvD;QACD,IAAI,YAAY,CAAC,UAAU,KAAK,SAAS,CAAC,MAAM,EAAE;YAChD,OAAO,IAAI,aAAa,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;SACpD;QACD,IAAI,YAAY,CAAC,UAAU,KAAK,SAAS,CAAC,UAAU,EAAE;YACpD,OAAO,IAAI,iBAAiB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;SACxD;QACD,IAAI,YAAY,CAAC,UAAU,KAAK,SAAS,CAAC,gBAAgB,EAAE;YAC1D,OAAO,IAAI,sBAAsB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;SAC7D;QACD,IAAI,YAAY,CAAC,UAAU,KAAK,SAAS,CAAC,cAAc,EAAE;YACxD,OAAO,IAAI,qBAAqB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;SAC5D;QACD,IAAI,YAAY,CAAC,UAAU,KAAK,SAAS,CAAC,WAAW,EAAE;YACrD,OAAO,IAAI,kBAAkB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;SACzD;QAED,OAAO,IAAI,OAAO,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;IAC/C,CAAC;CACF"}
@@ -1,13 +1,16 @@
1
1
  import { BotRequest, Plugin } from '@botonic/core';
2
- import { HtEvent } from './types';
2
+ import { HtEventProps, RequestData } from './types';
3
3
  export interface HubtypeAnalyticsOptions {
4
- baseUrl: string;
4
+ getLaguange?: (request: BotRequest) => string;
5
+ getCountry?: (request: BotRequest) => string;
5
6
  }
6
7
  export default class BotonicPluginHubtypeAnalytics implements Plugin {
7
8
  baseUrl: string;
9
+ getLaguange: (request: BotRequest) => string;
10
+ getCountry: (request: BotRequest) => string;
8
11
  constructor(options: HubtypeAnalyticsOptions);
9
- pre(): void;
10
12
  post(): void;
11
13
  getUrl(request: BotRequest): string;
12
- trackEvent(request: BotRequest, event: HtEvent): Promise<import("axios").AxiosResponse<any, any>>;
14
+ getRequestData(request: BotRequest): RequestData;
15
+ trackEvent(request: BotRequest, htEventProps: HtEventProps): Promise<import("axios").AxiosResponse<any, any>>;
13
16
  }
package/lib/esm/index.js CHANGED
@@ -1,10 +1,16 @@
1
1
  import axios from 'axios';
2
+ import { HtEvent } from './event-models/ht-event';
3
+ function getDefaultLanguage(request) {
4
+ return request.session.user.extra_data.language;
5
+ }
6
+ function getDefaultCountry(request) {
7
+ return request.session.user.extra_data.country;
8
+ }
2
9
  export default class BotonicPluginHubtypeAnalytics {
3
10
  constructor(options) {
4
- this.baseUrl = options.baseUrl;
5
- }
6
- pre() {
7
- return;
11
+ this.baseUrl = process.env.HUBTYPE_API_URL || 'https://api.hubtype.com';
12
+ this.getLaguange = options.getLaguange || getDefaultLanguage;
13
+ this.getCountry = options.getCountry || getDefaultCountry;
8
14
  }
9
15
  post() {
10
16
  return;
@@ -12,16 +18,21 @@ export default class BotonicPluginHubtypeAnalytics {
12
18
  getUrl(request) {
13
19
  return `${this.baseUrl}/external/v1/conversational_apps/${request.session.bot.id}/bot_event/`;
14
20
  }
15
- async trackEvent(request, event) {
16
- const url = this.getUrl(request);
17
- const data = {
18
- chat: request.session.user.id,
19
- event_type: event.event_type,
20
- event_data: Object.assign(Object.assign({}, event.event_data), { event_datetime: new Date().toISOString(), channel: request.session.user.provider }),
21
+ getRequestData(request) {
22
+ return {
23
+ language: this.getLaguange(request),
24
+ country: this.getCountry(request),
25
+ provider: request.session.user.provider,
26
+ userId: request.session.user.id,
21
27
  };
28
+ }
29
+ async trackEvent(request, htEventProps) {
30
+ const url = this.getUrl(request);
31
+ const requestData = this.getRequestData(request);
32
+ const event = HtEvent.create(requestData, htEventProps);
22
33
  const headers = { Authorization: `Bearer ${request.session._access_token}` };
23
34
  const config = { headers };
24
- return axios.post(url, data, config);
35
+ return axios.post(url, event, config);
25
36
  }
26
37
  }
27
38
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAQzB,MAAM,CAAC,OAAO,OAAO,6BAA6B;IAEhD,YAAY,OAAgC;QAC1C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;IAChC,CAAC;IAED,GAAG;QACD,OAAM;IACR,CAAC;IAED,IAAI;QACF,OAAM;IACR,CAAC;IAED,MAAM,CAAC,OAAmB;QACxB,OAAO,GAAG,IAAI,CAAC,OAAO,oCAAoC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,aAAa,CAAA;IAC/F,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAmB,EAAE,KAAc;QAClD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAChC,MAAM,IAAI,GAAG;YACX,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC7B,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,UAAU,kCACL,KAAK,CAAC,UAAU,KACnB,cAAc,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EACxC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,GACvC;SACF,CAAA;QACD,MAAM,OAAO,GAAG,EAAE,aAAa,EAAE,UAAU,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAA;QAC5E,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,CAAA;QAC1B,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;IACtC,CAAC;CACF"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAQjD,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,OAAgC;QAC1C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,yBAAyB,CAAA;QACvE,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,kBAAkB,CAAA;QAC5D,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,iBAAiB,CAAA;IAC3D,CAAC;IAED,IAAI;QACF,OAAM;IACR,CAAC;IAED,MAAM,CAAC,OAAmB;QACxB,OAAO,GAAG,IAAI,CAAC,OAAO,oCAAoC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,aAAa,CAAA;IAC/F,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,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ;YACvC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;SAChC,CAAA;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAmB,EAAE,YAA0B;QAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAChC,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;QAChD,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;QACvD,MAAM,OAAO,GAAG,EAAE,aAAa,EAAE,UAAU,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAA;QAC5E,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,CAAA;QAC1B,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IACvC,CAAC;CACF"}
@@ -1,3 +1,9 @@
1
+ import { PROVIDER } from '@botonic/core';
2
+ export interface Event {
3
+ chat: string;
4
+ event_type: EventName;
5
+ event_data: BaseEventData;
6
+ }
1
7
  export declare enum EventName {
2
8
  botAgentRating = "bot_agent_rating",
3
9
  botChannelRating = "bot_channel_rating",
@@ -13,93 +19,99 @@ export declare enum EventName {
13
19
  handoffSuccess = "handoff_success",
14
20
  handoffFail = "handoff_fail"
15
21
  }
16
- interface EventData {
17
- enduser_country?: string;
22
+ export interface BaseEventData {
23
+ channel: string;
24
+ event_datetime: string;
18
25
  enduser_language: string;
26
+ enduser_country?: string;
19
27
  format_version?: number;
20
28
  bot_version?: string;
21
29
  flow_version?: string;
22
30
  }
23
- export interface EventAgentRating {
31
+ export interface HtBaseEventProps {
32
+ event_type: EventName;
33
+ }
34
+ export interface EventAgentRating extends HtBaseEventProps {
24
35
  event_type: EventName.botAgentRating;
25
- event_data: EventData & {
26
- rating: number;
27
- };
36
+ event_data: EventDataRating;
28
37
  }
29
- export interface EventChannelRating {
38
+ export interface EventChannelRating extends HtBaseEventProps {
30
39
  event_type: EventName.botChannelRating;
31
- event_data: EventData & {
32
- rating: number;
33
- };
40
+ event_data: EventDataRating;
34
41
  }
35
- export interface EventFaqUseful {
42
+ export interface EventDataRating {
43
+ rating: number;
44
+ }
45
+ export interface EventFaqUseful extends HtBaseEventProps {
36
46
  event_type: EventName.botFaqUseful;
37
- event_data: EventData & {
38
- faq_name: string;
39
- useful: boolean;
40
- };
47
+ event_data: EventDataUseful;
48
+ }
49
+ export interface EventDataUseful {
50
+ faq_name: string;
51
+ useful: boolean;
41
52
  }
42
- export interface EventBotRating {
53
+ export interface EventBotRating extends HtBaseEventProps {
43
54
  event_type: EventName.botRating;
44
- event_data: EventData & {
45
- faq_name: string;
46
- useful: boolean;
47
- rating: number;
48
- free_comment: string;
49
- selected_options: string[];
50
- };
51
- }
52
- export interface EventBotFaq {
55
+ event_data: EventDataBotRating;
56
+ }
57
+ interface EventDataBotRating {
58
+ rating: number;
59
+ free_comment?: string;
60
+ selected_options?: string[];
61
+ }
62
+ export interface EventBotFaq extends HtBaseEventProps {
53
63
  event_type: EventName.botFaq;
54
- event_data: EventData & {
55
- faq_name: string;
56
- };
64
+ event_data: EventDataBotFaq;
65
+ }
66
+ interface EventDataBotFaq {
67
+ faq_name: string;
57
68
  }
58
- export interface EventBotStart {
69
+ export interface EventBotStart extends HtBaseEventProps {
59
70
  event_type: EventName.botStart;
60
- event_data: EventData;
61
71
  }
62
72
  export interface EventBotOpen {
63
73
  event_type: EventName.botOpen;
64
- event_data: EventData;
65
74
  }
66
75
  export interface EventBotAiModel {
67
76
  event_type: EventName.botAiModel;
68
- event_data: EventData & {
69
- intent: string;
70
- confidence: number;
71
- confidence_successful: boolean;
72
- };
77
+ event_data: EventDataBotAiModel;
78
+ }
79
+ interface EventDataBotAiModel {
80
+ intent: string;
81
+ confidence: number;
82
+ confidence_successful: boolean;
73
83
  }
74
- export interface EventBotKeywordModel {
84
+ export interface EventBotKeywordModel extends HtBaseEventProps {
75
85
  event_type: EventName.botKeywordsModel;
76
- event_data: EventData & {
77
- confidence_successful: boolean;
78
- };
86
+ event_data: EventDataBotKeywordModel;
79
87
  }
80
- export interface EventFallback {
88
+ interface EventDataBotKeywordModel {
89
+ confidence_successful: boolean;
90
+ }
91
+ export interface EventFallback extends HtBaseEventProps {
81
92
  event_type: EventName.fallback;
82
- event_data: EventData;
83
93
  }
84
- export interface EventHandoffOption {
94
+ export interface EventHandoffOption extends HtBaseEventProps {
85
95
  event_type: EventName.handoffOption;
86
- event_data: EventData;
87
96
  }
88
- export interface EventHandoffSuccess {
97
+ export interface EventHandoffSuccess extends HtBaseEventProps {
89
98
  event_type: EventName.handoffSuccess;
90
- event_data: EventData & {
91
- queue_open: boolean;
92
- available_agents: boolean;
93
- threshold_reached: boolean;
94
- };
99
+ event_data: EventDataHandoff;
95
100
  }
96
- export interface EventHandoffFail {
101
+ export interface EventHandoffFail extends HtBaseEventProps {
97
102
  event_type: EventName.handoffFail;
98
- event_data: EventData & {
99
- queue_open: boolean;
100
- available_agents: boolean;
101
- threshold_reached: boolean;
102
- };
103
+ event_data: EventDataHandoff;
104
+ }
105
+ interface EventDataHandoff {
106
+ queue_open: boolean;
107
+ available_agents: boolean;
108
+ threshold_reached: boolean;
109
+ }
110
+ export type HtEventProps = EventAgentRating | EventChannelRating | EventFaqUseful | EventBotRating | EventBotFaq | EventBotStart | EventBotOpen | EventBotAiModel | EventBotKeywordModel | EventFallback | EventHandoffOption | EventHandoffSuccess | EventHandoffFail;
111
+ export interface RequestData {
112
+ language: string;
113
+ country: string;
114
+ provider: PROVIDER;
115
+ userId: string;
103
116
  }
104
- export type HtEvent = EventAgentRating | EventChannelRating | EventFaqUseful | EventBotRating | EventBotFaq | EventBotStart | EventBotOpen | EventBotAiModel | EventBotKeywordModel | EventFallback | EventHandoffOption | EventHandoffSuccess | EventHandoffFail;
105
117
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,SAcX;AAdD,WAAY,SAAS;IACnB,gDAAmC,CAAA;IACnC,oDAAuC,CAAA;IACvC,4CAA+B,CAAA;IAC/B,qCAAwB,CAAA;IACxB,+BAAkB,CAAA;IAClB,mCAAsB,CAAA;IACtB,iCAAoB,CAAA;IACpB,wCAA2B,CAAA;IAC3B,oDAAuC,CAAA;IACvC,kCAAqB,CAAA;IACrB,6CAAgC,CAAA;IAChC,+CAAkC,CAAA;IAClC,yCAA4B,CAAA;AAC9B,CAAC,EAdW,SAAS,KAAT,SAAS,QAcpB"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAQA,MAAM,CAAN,IAAY,SAcX;AAdD,WAAY,SAAS;IACnB,gDAAmC,CAAA;IACnC,oDAAuC,CAAA;IACvC,4CAA+B,CAAA;IAC/B,qCAAwB,CAAA;IACxB,+BAAkB,CAAA;IAClB,mCAAsB,CAAA;IACtB,iCAAoB,CAAA;IACpB,wCAA2B,CAAA;IAC3B,oDAAuC,CAAA;IACvC,kCAAqB,CAAA;IACrB,6CAAgC,CAAA;IAChC,+CAAkC,CAAA;IAClC,yCAA4B,CAAA;AAC9B,CAAC,EAdW,SAAS,KAAT,SAAS,QAcpB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@botonic/plugin-hubtype-analytics",
3
- "version": "0.22.0-alpha.3",
3
+ "version": "0.22.0-alpha.4",
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",
@@ -33,7 +33,7 @@
33
33
  "extends": "../.eslintrc.js",
34
34
  "root": true
35
35
  },
36
- "author": "Hubtype",
36
+ "author": "",
37
37
  "license": "MIT",
38
38
  "keywords": [
39
39
  "analytics",
@@ -0,0 +1,11 @@
1
+ import { EventAgentRating, RequestData } from '../types'
2
+ import { HtEvent } from './ht-event'
3
+
4
+ export class HtEventAgentRating extends HtEvent {
5
+ rating: number
6
+
7
+ constructor(event: EventAgentRating, requestData: RequestData) {
8
+ super(event, requestData)
9
+ this.rating = event.event_data.rating
10
+ }
11
+ }
@@ -0,0 +1,15 @@
1
+ import { EventBotAiModel, RequestData } from '../types'
2
+ import { HtEvent } from './ht-event'
3
+
4
+ export class HtEventBotAiModel extends HtEvent {
5
+ intent: string
6
+ confidence: number
7
+ confidence_successful: boolean
8
+
9
+ constructor(event: EventBotAiModel, requestData: RequestData) {
10
+ super(event, requestData)
11
+ this.intent = event.event_data.intent
12
+ this.confidence = event.event_data.confidence
13
+ this.confidence_successful = event.event_data.confidence_successful
14
+ }
15
+ }
@@ -0,0 +1,11 @@
1
+ import { EventBotFaq, RequestData } from '../types'
2
+ import { HtEvent } from './ht-event'
3
+
4
+ export class HtEventBotFaq extends HtEvent {
5
+ faq_name: string
6
+
7
+ constructor(event: EventBotFaq, requestData: RequestData) {
8
+ super(event, requestData)
9
+ this.faq_name = event.event_data.faq_name
10
+ }
11
+ }
@@ -0,0 +1,12 @@
1
+ import { EventBotKeywordModel, RequestData } from '../types'
2
+ import { HtEvent } from './ht-event'
3
+
4
+ export class HtEventBotKeywordModel extends HtEvent {
5
+ confidence_successful: boolean
6
+
7
+ constructor(event: EventBotKeywordModel, requestData: RequestData) {
8
+ super(event, requestData)
9
+
10
+ this.confidence_successful = event.event_data.confidence_successful
11
+ }
12
+ }
@@ -0,0 +1,15 @@
1
+ import { EventBotRating, RequestData } from '../types'
2
+ import { HtEvent } from './ht-event'
3
+
4
+ export class HtEventBotRating extends HtEvent {
5
+ rating: number
6
+ free_comment?: string
7
+ selected_options?: string[]
8
+
9
+ constructor(event: EventBotRating, requestData: RequestData) {
10
+ super(event, requestData)
11
+ this.rating = event.event_data.rating
12
+ this.free_comment = event.event_data.free_comment
13
+ this.selected_options = event.event_data.selected_options
14
+ }
15
+ }
@@ -0,0 +1,11 @@
1
+ import { EventChannelRating, RequestData } from '../types'
2
+ import { HtEvent } from './ht-event'
3
+
4
+ export class HtEventChannelRating extends HtEvent {
5
+ rating: number
6
+
7
+ constructor(event: EventChannelRating, requestData: RequestData) {
8
+ super(event, requestData)
9
+ this.rating = event.event_data.rating
10
+ }
11
+ }
@@ -0,0 +1,13 @@
1
+ import { EventFaqUseful, RequestData } from '../types'
2
+ import { HtEvent } from './ht-event'
3
+
4
+ export class HtEventFaqUseful extends HtEvent {
5
+ faq_name: string
6
+ useful: boolean
7
+
8
+ constructor(event: EventFaqUseful, requestData: RequestData) {
9
+ super(event, requestData)
10
+ this.faq_name = event.event_data.faq_name
11
+ this.useful = event.event_data.useful
12
+ }
13
+ }
@@ -0,0 +1,15 @@
1
+ import { EventHandoffFail, RequestData } from '../types'
2
+ import { HtEvent } from './ht-event'
3
+
4
+ export class HtEventHandoffFail extends HtEvent {
5
+ queue_open: boolean
6
+ available_agents: boolean
7
+ threshold_reached: boolean
8
+
9
+ constructor(event: EventHandoffFail, requestData: RequestData) {
10
+ super(event, requestData)
11
+ this.queue_open = event.event_data.queue_open
12
+ this.available_agents = event.event_data.available_agents
13
+ this.threshold_reached = event.event_data.threshold_reached
14
+ }
15
+ }