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

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 (89) hide show
  1. package/README.md +9 -4
  2. package/lib/cjs/event-models/ht-event-agent-rating.d.ts +2 -2
  3. package/lib/cjs/event-models/ht-event-agent-rating.js +1 -1
  4. package/lib/cjs/event-models/ht-event-agent-rating.js.map +1 -1
  5. package/lib/cjs/event-models/ht-event-bot-ai-model.d.ts +2 -4
  6. package/lib/cjs/event-models/ht-event-bot-ai-model.js +4 -3
  7. package/lib/cjs/event-models/ht-event-bot-ai-model.js.map +1 -1
  8. package/lib/cjs/event-models/ht-event-bot-faq.d.ts +2 -2
  9. package/lib/cjs/event-models/ht-event-bot-faq.js +1 -1
  10. package/lib/cjs/event-models/ht-event-bot-faq.js.map +1 -1
  11. package/lib/cjs/event-models/ht-event-bot-keyword-model.d.ts +2 -2
  12. package/lib/cjs/event-models/ht-event-bot-keyword-model.js +2 -1
  13. package/lib/cjs/event-models/ht-event-bot-keyword-model.js.map +1 -1
  14. package/lib/cjs/event-models/ht-event-bot-rating.d.ts +2 -4
  15. package/lib/cjs/event-models/ht-event-bot-rating.js +3 -3
  16. package/lib/cjs/event-models/ht-event-bot-rating.js.map +1 -1
  17. package/lib/cjs/event-models/ht-event-channel-rating.d.ts +2 -2
  18. package/lib/cjs/event-models/ht-event-channel-rating.js +1 -1
  19. package/lib/cjs/event-models/ht-event-channel-rating.js.map +1 -1
  20. package/lib/cjs/event-models/ht-event-faq-useful.d.ts +2 -3
  21. package/lib/cjs/event-models/ht-event-faq-useful.js +2 -2
  22. package/lib/cjs/event-models/ht-event-faq-useful.js.map +1 -1
  23. package/lib/cjs/event-models/ht-event-handoff-fail.d.ts +2 -4
  24. package/lib/cjs/event-models/ht-event-handoff-fail.js +4 -3
  25. package/lib/cjs/event-models/ht-event-handoff-fail.js.map +1 -1
  26. package/lib/cjs/event-models/ht-event-handoff-success.d.ts +2 -4
  27. package/lib/cjs/event-models/ht-event-handoff-success.js +4 -3
  28. package/lib/cjs/event-models/ht-event-handoff-success.js.map +1 -1
  29. package/lib/cjs/event-models/ht-event.d.ts +1 -2
  30. package/lib/cjs/event-models/ht-event.js +0 -40
  31. package/lib/cjs/event-models/ht-event.js.map +1 -1
  32. package/lib/cjs/index.d.ts +3 -1
  33. package/lib/cjs/index.js +6 -4
  34. package/lib/cjs/index.js.map +1 -1
  35. package/lib/cjs/types.d.ts +6 -6
  36. package/lib/cjs/utils.d.ts +3 -0
  37. package/lib/cjs/utils.js +40 -0
  38. package/lib/cjs/utils.js.map +1 -0
  39. package/lib/esm/event-models/ht-event-agent-rating.d.ts +2 -2
  40. package/lib/esm/event-models/ht-event-agent-rating.js +1 -1
  41. package/lib/esm/event-models/ht-event-agent-rating.js.map +1 -1
  42. package/lib/esm/event-models/ht-event-bot-ai-model.d.ts +2 -4
  43. package/lib/esm/event-models/ht-event-bot-ai-model.js +4 -3
  44. package/lib/esm/event-models/ht-event-bot-ai-model.js.map +1 -1
  45. package/lib/esm/event-models/ht-event-bot-faq.d.ts +2 -2
  46. package/lib/esm/event-models/ht-event-bot-faq.js +1 -1
  47. package/lib/esm/event-models/ht-event-bot-faq.js.map +1 -1
  48. package/lib/esm/event-models/ht-event-bot-keyword-model.d.ts +2 -2
  49. package/lib/esm/event-models/ht-event-bot-keyword-model.js +2 -1
  50. package/lib/esm/event-models/ht-event-bot-keyword-model.js.map +1 -1
  51. package/lib/esm/event-models/ht-event-bot-rating.d.ts +2 -4
  52. package/lib/esm/event-models/ht-event-bot-rating.js +3 -3
  53. package/lib/esm/event-models/ht-event-bot-rating.js.map +1 -1
  54. package/lib/esm/event-models/ht-event-channel-rating.d.ts +2 -2
  55. package/lib/esm/event-models/ht-event-channel-rating.js +1 -1
  56. package/lib/esm/event-models/ht-event-channel-rating.js.map +1 -1
  57. package/lib/esm/event-models/ht-event-faq-useful.d.ts +2 -3
  58. package/lib/esm/event-models/ht-event-faq-useful.js +2 -2
  59. package/lib/esm/event-models/ht-event-faq-useful.js.map +1 -1
  60. package/lib/esm/event-models/ht-event-handoff-fail.d.ts +2 -4
  61. package/lib/esm/event-models/ht-event-handoff-fail.js +4 -3
  62. package/lib/esm/event-models/ht-event-handoff-fail.js.map +1 -1
  63. package/lib/esm/event-models/ht-event-handoff-success.d.ts +2 -4
  64. package/lib/esm/event-models/ht-event-handoff-success.js +4 -3
  65. package/lib/esm/event-models/ht-event-handoff-success.js.map +1 -1
  66. package/lib/esm/event-models/ht-event.d.ts +1 -2
  67. package/lib/esm/event-models/ht-event.js +0 -40
  68. package/lib/esm/event-models/ht-event.js.map +1 -1
  69. package/lib/esm/index.d.ts +3 -1
  70. package/lib/esm/index.js +6 -4
  71. package/lib/esm/index.js.map +1 -1
  72. package/lib/esm/types.d.ts +6 -6
  73. package/lib/esm/utils.d.ts +3 -0
  74. package/lib/esm/utils.js +36 -0
  75. package/lib/esm/utils.js.map +1 -0
  76. package/package.json +1 -1
  77. package/src/event-models/ht-event-agent-rating.ts +8 -3
  78. package/src/event-models/ht-event-bot-ai-model.ts +11 -7
  79. package/src/event-models/ht-event-bot-faq.ts +8 -3
  80. package/src/event-models/ht-event-bot-keyword-model.ts +9 -4
  81. package/src/event-models/ht-event-bot-rating.ts +10 -7
  82. package/src/event-models/ht-event-channel-rating.ts +8 -3
  83. package/src/event-models/ht-event-faq-useful.ts +9 -5
  84. package/src/event-models/ht-event-handoff-fail.ts +11 -7
  85. package/src/event-models/ht-event-handoff-success.ts +11 -7
  86. package/src/event-models/ht-event.ts +1 -42
  87. package/src/index.ts +8 -5
  88. package/src/types.ts +6 -5
  89. package/src/utils.ts +48 -0
@@ -1,15 +1,19 @@
1
- import { EventHandoffSuccess, RequestData } from '../types'
1
+ import {
2
+ BaseEventData,
3
+ EventDataHandoff,
4
+ EventHandoffSuccess,
5
+ RequestData,
6
+ } from '../types'
2
7
  import { HtEvent } from './ht-event'
3
8
 
4
9
  export class HtEventHandoffSuccess extends HtEvent {
5
- queue_open: boolean
6
- available_agents: boolean
7
- threshold_reached: boolean
10
+ event_data: BaseEventData & EventDataHandoff
8
11
 
9
12
  constructor(event: EventHandoffSuccess, requestData: RequestData) {
10
13
  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
+ this.event_data.queue_open = event.event_data.queue_open
15
+ this.event_data.queue_id = event.event_data.queue_id
16
+ this.event_data.available_agents = event.event_data.available_agents
17
+ this.event_data.threshold_reached = event.event_data.threshold_reached
14
18
  }
15
19
  }
@@ -1,20 +1,11 @@
1
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
2
 
12
3
  export class HtEvent {
13
4
  chat: string
14
5
  event_type: EventName
15
6
  event_data: BaseEventData
16
7
 
17
- protected constructor(event: HtEventProps, requestData: RequestData) {
8
+ constructor(event: HtEventProps, requestData: RequestData) {
18
9
  this.chat = requestData.userId
19
10
  this.event_type = event.event_type
20
11
  this.event_data = {
@@ -26,36 +17,4 @@ export class HtEvent {
26
17
  // flow_version?: string
27
18
  }
28
19
  }
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
20
  }
package/src/index.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { BotRequest, Plugin } from '@botonic/core'
2
2
  import axios from 'axios'
3
3
 
4
- import { HtEvent } from './event-models/ht-event'
5
4
  import { HtEventProps, RequestData } from './types'
5
+ import { createHtEvent } from './utils'
6
6
 
7
7
  export interface HubtypeAnalyticsOptions {
8
8
  getLaguange?: (request: BotRequest) => string
@@ -21,10 +21,10 @@ export default class BotonicPluginHubtypeAnalytics implements Plugin {
21
21
  baseUrl: string
22
22
  getLaguange: (request: BotRequest) => string
23
23
  getCountry: (request: BotRequest) => string
24
- constructor(options: HubtypeAnalyticsOptions) {
24
+ constructor(options?: HubtypeAnalyticsOptions) {
25
25
  this.baseUrl = process.env.HUBTYPE_API_URL || 'https://api.hubtype.com'
26
- this.getLaguange = options.getLaguange || getDefaultLanguage
27
- this.getCountry = options.getCountry || getDefaultCountry
26
+ this.getLaguange = options?.getLaguange || getDefaultLanguage
27
+ this.getCountry = options?.getCountry || getDefaultCountry
28
28
  }
29
29
 
30
30
  post(): void {
@@ -47,9 +47,12 @@ export default class BotonicPluginHubtypeAnalytics implements Plugin {
47
47
  async trackEvent(request: BotRequest, htEventProps: HtEventProps) {
48
48
  const url = this.getUrl(request)
49
49
  const requestData = this.getRequestData(request)
50
- const event = HtEvent.create(requestData, htEventProps)
50
+ const event = createHtEvent(requestData, htEventProps)
51
51
  const headers = { Authorization: `Bearer ${request.session._access_token}` }
52
52
  const config = { headers }
53
53
  return axios.post(url, event, config)
54
54
  }
55
55
  }
56
+
57
+ export * from './types'
58
+ export * from './utils'
package/src/types.ts CHANGED
@@ -62,7 +62,7 @@ export interface EventBotRating extends HtBaseEventProps {
62
62
  event_data: EventDataBotRating
63
63
  }
64
64
 
65
- interface EventDataBotRating {
65
+ export interface EventDataBotRating {
66
66
  rating: number
67
67
  free_comment?: string
68
68
  selected_options?: string[]
@@ -73,7 +73,7 @@ export interface EventBotFaq extends HtBaseEventProps {
73
73
  event_data: EventDataBotFaq
74
74
  }
75
75
 
76
- interface EventDataBotFaq {
76
+ export interface EventDataBotFaq {
77
77
  faq_name: string
78
78
  }
79
79
  export interface EventBotStart extends HtBaseEventProps {
@@ -89,7 +89,7 @@ export interface EventBotAiModel {
89
89
  event_data: EventDataBotAiModel
90
90
  }
91
91
 
92
- interface EventDataBotAiModel {
92
+ export interface EventDataBotAiModel {
93
93
  intent: string
94
94
  confidence: number
95
95
  confidence_successful: boolean
@@ -100,7 +100,7 @@ export interface EventBotKeywordModel extends HtBaseEventProps {
100
100
  event_data: EventDataBotKeywordModel
101
101
  }
102
102
 
103
- interface EventDataBotKeywordModel {
103
+ export interface EventDataBotKeywordModel {
104
104
  confidence_successful: boolean
105
105
  }
106
106
  export interface EventFallback extends HtBaseEventProps {
@@ -121,8 +121,9 @@ export interface EventHandoffFail extends HtBaseEventProps {
121
121
  event_data: EventDataHandoff
122
122
  }
123
123
 
124
- interface EventDataHandoff {
124
+ export interface EventDataHandoff {
125
125
  queue_open: boolean
126
+ queue_id: string
126
127
  available_agents: boolean
127
128
  threshold_reached: boolean
128
129
  }
package/src/utils.ts ADDED
@@ -0,0 +1,48 @@
1
+ import { HtEvent } from './event-models/ht-event'
2
+ import { HtEventAgentRating } from './event-models/ht-event-agent-rating'
3
+ import { HtEventBotAiModel } from './event-models/ht-event-bot-ai-model'
4
+ import { HtEventBotFaq } from './event-models/ht-event-bot-faq'
5
+ import { HtEventBotKeywordModel } from './event-models/ht-event-bot-keyword-model'
6
+ import { HtEventBotRating } from './event-models/ht-event-bot-rating'
7
+ import { HtEventChannelRating } from './event-models/ht-event-channel-rating'
8
+ import { HtEventFaqUseful } from './event-models/ht-event-faq-useful'
9
+ import { HtEventHandoffFail } from './event-models/ht-event-handoff-fail'
10
+ import { HtEventHandoffSuccess } from './event-models/ht-event-handoff-success'
11
+ import { EventName, HtEventProps, RequestData } from './types'
12
+
13
+ export function createHtEvent(
14
+ requestData: RequestData,
15
+ htEventProps: HtEventProps
16
+ ): HtEvent {
17
+ switch (htEventProps.event_type) {
18
+ case EventName.botAgentRating:
19
+ return new HtEventAgentRating(htEventProps, requestData)
20
+
21
+ case EventName.botChannelRating:
22
+ return new HtEventChannelRating(htEventProps, requestData)
23
+
24
+ case EventName.botFaqUseful:
25
+ return new HtEventFaqUseful(htEventProps, requestData)
26
+
27
+ case EventName.botRating:
28
+ return new HtEventBotRating(htEventProps, requestData)
29
+
30
+ case EventName.botFaq:
31
+ return new HtEventBotFaq(htEventProps, requestData)
32
+
33
+ case EventName.botAiModel:
34
+ return new HtEventBotAiModel(htEventProps, requestData)
35
+
36
+ case EventName.botKeywordsModel:
37
+ return new HtEventBotKeywordModel(htEventProps, requestData)
38
+
39
+ case EventName.handoffSuccess:
40
+ return new HtEventHandoffSuccess(htEventProps, requestData)
41
+
42
+ case EventName.handoffFail:
43
+ return new HtEventHandoffFail(htEventProps, requestData)
44
+
45
+ default:
46
+ return new HtEvent(htEventProps, requestData)
47
+ }
48
+ }