@botonic/plugin-hubtype-analytics 0.22.0-alpha.2 → 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 (87) 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 +16 -0
  32. package/lib/cjs/index.js +42 -0
  33. package/lib/cjs/index.js.map +1 -0
  34. package/lib/cjs/types.d.ts +117 -0
  35. package/lib/cjs/types.js +20 -0
  36. package/lib/cjs/types.js.map +1 -0
  37. package/lib/esm/event-models/ht-event-agent-rating.d.ts +6 -0
  38. package/lib/esm/event-models/ht-event-agent-rating.js +8 -0
  39. package/lib/esm/event-models/ht-event-agent-rating.js.map +1 -0
  40. package/lib/esm/event-models/ht-event-bot-ai-model.d.ts +8 -0
  41. package/lib/esm/event-models/ht-event-bot-ai-model.js +10 -0
  42. package/lib/esm/event-models/ht-event-bot-ai-model.js.map +1 -0
  43. package/lib/esm/event-models/ht-event-bot-faq.d.ts +6 -0
  44. package/lib/esm/event-models/ht-event-bot-faq.js +8 -0
  45. package/lib/esm/event-models/ht-event-bot-faq.js.map +1 -0
  46. package/lib/esm/event-models/ht-event-bot-keyword-model.d.ts +6 -0
  47. package/lib/esm/event-models/ht-event-bot-keyword-model.js +8 -0
  48. package/lib/esm/event-models/ht-event-bot-keyword-model.js.map +1 -0
  49. package/lib/esm/event-models/ht-event-bot-rating.d.ts +8 -0
  50. package/lib/esm/event-models/ht-event-bot-rating.js +10 -0
  51. package/lib/esm/event-models/ht-event-bot-rating.js.map +1 -0
  52. package/lib/esm/event-models/ht-event-channel-rating.d.ts +6 -0
  53. package/lib/esm/event-models/ht-event-channel-rating.js +8 -0
  54. package/lib/esm/event-models/ht-event-channel-rating.js.map +1 -0
  55. package/lib/esm/event-models/ht-event-faq-useful.d.ts +7 -0
  56. package/lib/esm/event-models/ht-event-faq-useful.js +9 -0
  57. package/lib/esm/event-models/ht-event-faq-useful.js.map +1 -0
  58. package/lib/esm/event-models/ht-event-handoff-fail.d.ts +8 -0
  59. package/lib/esm/event-models/ht-event-handoff-fail.js +10 -0
  60. package/lib/esm/event-models/ht-event-handoff-fail.js.map +1 -0
  61. package/lib/esm/event-models/ht-event-handoff-success.d.ts +8 -0
  62. package/lib/esm/event-models/ht-event-handoff-success.js +10 -0
  63. package/lib/esm/event-models/ht-event-handoff-success.js.map +1 -0
  64. package/lib/esm/event-models/ht-event.d.ts +8 -0
  65. package/lib/esm/event-models/ht-event.js +55 -0
  66. package/lib/esm/event-models/ht-event.js.map +1 -0
  67. package/lib/esm/index.d.ts +16 -0
  68. package/lib/esm/index.js +38 -0
  69. package/lib/esm/index.js.map +1 -0
  70. package/lib/esm/types.d.ts +117 -0
  71. package/lib/esm/types.js +17 -0
  72. package/lib/esm/types.js.map +1 -0
  73. package/package.json +22 -17
  74. package/src/event-models/ht-event-agent-rating.ts +11 -0
  75. package/src/event-models/ht-event-bot-ai-model.ts +15 -0
  76. package/src/event-models/ht-event-bot-faq.ts +11 -0
  77. package/src/event-models/ht-event-bot-keyword-model.ts +12 -0
  78. package/src/event-models/ht-event-bot-rating.ts +15 -0
  79. package/src/event-models/ht-event-channel-rating.ts +11 -0
  80. package/src/event-models/ht-event-faq-useful.ts +13 -0
  81. package/src/event-models/ht-event-handoff-fail.ts +15 -0
  82. package/src/event-models/ht-event-handoff-success.ts +15 -0
  83. package/src/event-models/ht-event.ts +61 -0
  84. package/src/index.ts +30 -18
  85. package/src/types.ts +76 -49
  86. package/tsconfig.esm.json +0 -11
  87. package/tsconfig.json +0 -13
@@ -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"}
@@ -0,0 +1,16 @@
1
+ import { BotRequest, Plugin } from '@botonic/core';
2
+ import { HtEventProps, RequestData } from './types';
3
+ export interface HubtypeAnalyticsOptions {
4
+ getLaguange?: (request: BotRequest) => string;
5
+ getCountry?: (request: BotRequest) => string;
6
+ }
7
+ export default class BotonicPluginHubtypeAnalytics implements Plugin {
8
+ baseUrl: string;
9
+ getLaguange: (request: BotRequest) => string;
10
+ getCountry: (request: BotRequest) => string;
11
+ constructor(options: HubtypeAnalyticsOptions);
12
+ post(): void;
13
+ getUrl(request: BotRequest): string;
14
+ getRequestData(request: BotRequest): RequestData;
15
+ trackEvent(request: BotRequest, htEventProps: HtEventProps): Promise<import("axios").AxiosResponse<any, any>>;
16
+ }
@@ -0,0 +1,38 @@
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
+ }
9
+ export default class BotonicPluginHubtypeAnalytics {
10
+ constructor(options) {
11
+ this.baseUrl = process.env.HUBTYPE_API_URL || 'https://api.hubtype.com';
12
+ this.getLaguange = options.getLaguange || getDefaultLanguage;
13
+ this.getCountry = options.getCountry || getDefaultCountry;
14
+ }
15
+ post() {
16
+ return;
17
+ }
18
+ getUrl(request) {
19
+ return `${this.baseUrl}/external/v1/conversational_apps/${request.session.bot.id}/bot_event/`;
20
+ }
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,
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);
33
+ const headers = { Authorization: `Bearer ${request.session._access_token}` };
34
+ const config = { headers };
35
+ return axios.post(url, event, config);
36
+ }
37
+ }
38
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,117 @@
1
+ import { PROVIDER } from '@botonic/core';
2
+ export interface Event {
3
+ chat: string;
4
+ event_type: EventName;
5
+ event_data: BaseEventData;
6
+ }
7
+ export declare enum EventName {
8
+ botAgentRating = "bot_agent_rating",
9
+ botChannelRating = "bot_channel_rating",
10
+ botFaqUseful = "bot_faq_useful",
11
+ botRating = "bot_rating",
12
+ botFaq = "bot_faq",
13
+ botStart = "bot_start",
14
+ botOpen = "bot_open",
15
+ botAiModel = "bot_ai_model",
16
+ botKeywordsModel = "bot_keywords_model",
17
+ fallback = "fallback",
18
+ handoffOption = "handoff_option",
19
+ handoffSuccess = "handoff_success",
20
+ handoffFail = "handoff_fail"
21
+ }
22
+ export interface BaseEventData {
23
+ channel: string;
24
+ event_datetime: string;
25
+ enduser_language: string;
26
+ enduser_country?: string;
27
+ format_version?: number;
28
+ bot_version?: string;
29
+ flow_version?: string;
30
+ }
31
+ export interface HtBaseEventProps {
32
+ event_type: EventName;
33
+ }
34
+ export interface EventAgentRating extends HtBaseEventProps {
35
+ event_type: EventName.botAgentRating;
36
+ event_data: EventDataRating;
37
+ }
38
+ export interface EventChannelRating extends HtBaseEventProps {
39
+ event_type: EventName.botChannelRating;
40
+ event_data: EventDataRating;
41
+ }
42
+ export interface EventDataRating {
43
+ rating: number;
44
+ }
45
+ export interface EventFaqUseful extends HtBaseEventProps {
46
+ event_type: EventName.botFaqUseful;
47
+ event_data: EventDataUseful;
48
+ }
49
+ export interface EventDataUseful {
50
+ faq_name: string;
51
+ useful: boolean;
52
+ }
53
+ export interface EventBotRating extends HtBaseEventProps {
54
+ event_type: EventName.botRating;
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 {
63
+ event_type: EventName.botFaq;
64
+ event_data: EventDataBotFaq;
65
+ }
66
+ interface EventDataBotFaq {
67
+ faq_name: string;
68
+ }
69
+ export interface EventBotStart extends HtBaseEventProps {
70
+ event_type: EventName.botStart;
71
+ }
72
+ export interface EventBotOpen {
73
+ event_type: EventName.botOpen;
74
+ }
75
+ export interface EventBotAiModel {
76
+ event_type: EventName.botAiModel;
77
+ event_data: EventDataBotAiModel;
78
+ }
79
+ interface EventDataBotAiModel {
80
+ intent: string;
81
+ confidence: number;
82
+ confidence_successful: boolean;
83
+ }
84
+ export interface EventBotKeywordModel extends HtBaseEventProps {
85
+ event_type: EventName.botKeywordsModel;
86
+ event_data: EventDataBotKeywordModel;
87
+ }
88
+ interface EventDataBotKeywordModel {
89
+ confidence_successful: boolean;
90
+ }
91
+ export interface EventFallback extends HtBaseEventProps {
92
+ event_type: EventName.fallback;
93
+ }
94
+ export interface EventHandoffOption extends HtBaseEventProps {
95
+ event_type: EventName.handoffOption;
96
+ }
97
+ export interface EventHandoffSuccess extends HtBaseEventProps {
98
+ event_type: EventName.handoffSuccess;
99
+ event_data: EventDataHandoff;
100
+ }
101
+ export interface EventHandoffFail extends HtBaseEventProps {
102
+ event_type: EventName.handoffFail;
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;
116
+ }
117
+ export {};
@@ -0,0 +1,17 @@
1
+ export var EventName;
2
+ (function (EventName) {
3
+ EventName["botAgentRating"] = "bot_agent_rating";
4
+ EventName["botChannelRating"] = "bot_channel_rating";
5
+ EventName["botFaqUseful"] = "bot_faq_useful";
6
+ EventName["botRating"] = "bot_rating";
7
+ EventName["botFaq"] = "bot_faq";
8
+ EventName["botStart"] = "bot_start";
9
+ EventName["botOpen"] = "bot_open";
10
+ EventName["botAiModel"] = "bot_ai_model";
11
+ EventName["botKeywordsModel"] = "bot_keywords_model";
12
+ EventName["fallback"] = "fallback";
13
+ EventName["handoffOption"] = "handoff_option";
14
+ EventName["handoffSuccess"] = "handoff_success";
15
+ EventName["handoffFail"] = "handoff_fail";
16
+ })(EventName || (EventName = {}));
17
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
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.2",
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",
@@ -13,30 +13,35 @@
13
13
  "lint_ci": "npm run lint_core -- -c ../.eslintrc_slow.js",
14
14
  "lint_core": "../../node_modules/.bin/eslint_d --cache --quiet 'src/**/*.ts*'"
15
15
  },
16
- "keywords": [
17
- "analytics",
18
- "bot-framework",
19
- "chatbot",
20
- "conversational-app",
21
- "conversational-ui",
22
- "javascript",
23
- "typescript"
24
- ],
25
- "author": "Hubtype",
26
- "license": "MIT",
27
16
  "dependencies": {
28
17
  "@babel/runtime": "^7.21.0",
29
18
  "@botonic/core": "^0.22.0",
30
19
  "@types/axios": "^0.14.0",
31
20
  "axios": "^1.4.0"
32
21
  },
33
- "eslintConfig": {
34
- "extends": "../.eslintrc.js",
35
- "root": true
36
- },
37
22
  "devDependencies": {
38
23
  "@types/node": "^16.11.7",
39
24
  "@types/react": "^16.14.0",
40
25
  "typescript": "^4.8.4"
41
- }
26
+ },
27
+ "files": [
28
+ "lib/**",
29
+ "src/**",
30
+ "README.md"
31
+ ],
32
+ "eslintConfig": {
33
+ "extends": "../.eslintrc.js",
34
+ "root": true
35
+ },
36
+ "author": "",
37
+ "license": "MIT",
38
+ "keywords": [
39
+ "analytics",
40
+ "bot-framework",
41
+ "chatbot",
42
+ "conversational-app",
43
+ "conversational-ui",
44
+ "javascript",
45
+ "typescript"
46
+ ]
42
47
  }
@@ -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
+ }
@@ -0,0 +1,15 @@
1
+ import { EventHandoffSuccess, RequestData } from '../types'
2
+ import { HtEvent } from './ht-event'
3
+
4
+ export class HtEventHandoffSuccess extends HtEvent {
5
+ queue_open: boolean
6
+ available_agents: boolean
7
+ threshold_reached: boolean
8
+
9
+ constructor(event: EventHandoffSuccess, 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
+ }
@@ -0,0 +1,61 @@
1
+ import { BaseEventData, EventName, HtEventProps, RequestData } 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
+
12
+ export class HtEvent {
13
+ chat: string
14
+ event_type: EventName
15
+ event_data: BaseEventData
16
+
17
+ protected constructor(event: HtEventProps, requestData: RequestData) {
18
+ this.chat = requestData.userId
19
+ this.event_type = event.event_type
20
+ this.event_data = {
21
+ channel: requestData.provider,
22
+ event_datetime: new Date().toISOString(),
23
+ enduser_language: requestData.language,
24
+ enduser_country: requestData.country,
25
+ format_version: 1,
26
+ // flow_version?: string
27
+ }
28
+ }
29
+
30
+ static create(requestData: RequestData, htEventProps: HtEventProps): HtEvent {
31
+ if (htEventProps.event_type === EventName.botAgentRating) {
32
+ return new HtEventAgentRating(htEventProps, requestData)
33
+ }
34
+ if (htEventProps.event_type === EventName.botChannelRating) {
35
+ return new HtEventChannelRating(htEventProps, requestData)
36
+ }
37
+ if (htEventProps.event_type === EventName.botFaqUseful) {
38
+ return new HtEventFaqUseful(htEventProps, requestData)
39
+ }
40
+ if (htEventProps.event_type === EventName.botRating) {
41
+ return new HtEventBotRating(htEventProps, requestData)
42
+ }
43
+ if (htEventProps.event_type === EventName.botFaq) {
44
+ return new HtEventBotFaq(htEventProps, requestData)
45
+ }
46
+ if (htEventProps.event_type === EventName.botAiModel) {
47
+ return new HtEventBotAiModel(htEventProps, requestData)
48
+ }
49
+ if (htEventProps.event_type === EventName.botKeywordsModel) {
50
+ return new HtEventBotKeywordModel(htEventProps, requestData)
51
+ }
52
+ if (htEventProps.event_type === EventName.handoffSuccess) {
53
+ return new HtEventHandoffSuccess(htEventProps, requestData)
54
+ }
55
+ if (htEventProps.event_type === EventName.handoffFail) {
56
+ return new HtEventHandoffFail(htEventProps, requestData)
57
+ }
58
+
59
+ return new HtEvent(htEventProps, requestData)
60
+ }
61
+ }