@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.
- package/lib/cjs/event-models/ht-event-agent-rating.d.ts +6 -0
- package/lib/cjs/event-models/ht-event-agent-rating.js +12 -0
- package/lib/cjs/event-models/ht-event-agent-rating.js.map +1 -0
- package/lib/cjs/event-models/ht-event-bot-ai-model.d.ts +8 -0
- package/lib/cjs/event-models/ht-event-bot-ai-model.js +14 -0
- package/lib/cjs/event-models/ht-event-bot-ai-model.js.map +1 -0
- package/lib/cjs/event-models/ht-event-bot-faq.d.ts +6 -0
- package/lib/cjs/event-models/ht-event-bot-faq.js +12 -0
- package/lib/cjs/event-models/ht-event-bot-faq.js.map +1 -0
- package/lib/cjs/event-models/ht-event-bot-keyword-model.d.ts +6 -0
- package/lib/cjs/event-models/ht-event-bot-keyword-model.js +12 -0
- package/lib/cjs/event-models/ht-event-bot-keyword-model.js.map +1 -0
- package/lib/cjs/event-models/ht-event-bot-rating.d.ts +8 -0
- package/lib/cjs/event-models/ht-event-bot-rating.js +14 -0
- package/lib/cjs/event-models/ht-event-bot-rating.js.map +1 -0
- package/lib/cjs/event-models/ht-event-channel-rating.d.ts +6 -0
- package/lib/cjs/event-models/ht-event-channel-rating.js +12 -0
- package/lib/cjs/event-models/ht-event-channel-rating.js.map +1 -0
- package/lib/cjs/event-models/ht-event-faq-useful.d.ts +7 -0
- package/lib/cjs/event-models/ht-event-faq-useful.js +13 -0
- package/lib/cjs/event-models/ht-event-faq-useful.js.map +1 -0
- package/lib/cjs/event-models/ht-event-handoff-fail.d.ts +8 -0
- package/lib/cjs/event-models/ht-event-handoff-fail.js +14 -0
- package/lib/cjs/event-models/ht-event-handoff-fail.js.map +1 -0
- package/lib/cjs/event-models/ht-event-handoff-success.d.ts +8 -0
- package/lib/cjs/event-models/ht-event-handoff-success.js +14 -0
- package/lib/cjs/event-models/ht-event-handoff-success.js.map +1 -0
- package/lib/cjs/event-models/ht-event.d.ts +8 -0
- package/lib/cjs/event-models/ht-event.js +59 -0
- package/lib/cjs/event-models/ht-event.js.map +1 -0
- package/lib/cjs/index.d.ts +16 -0
- package/lib/cjs/index.js +42 -0
- package/lib/cjs/index.js.map +1 -0
- package/lib/cjs/types.d.ts +117 -0
- package/lib/cjs/types.js +20 -0
- package/lib/cjs/types.js.map +1 -0
- package/lib/esm/event-models/ht-event-agent-rating.d.ts +6 -0
- package/lib/esm/event-models/ht-event-agent-rating.js +8 -0
- package/lib/esm/event-models/ht-event-agent-rating.js.map +1 -0
- package/lib/esm/event-models/ht-event-bot-ai-model.d.ts +8 -0
- package/lib/esm/event-models/ht-event-bot-ai-model.js +10 -0
- package/lib/esm/event-models/ht-event-bot-ai-model.js.map +1 -0
- package/lib/esm/event-models/ht-event-bot-faq.d.ts +6 -0
- package/lib/esm/event-models/ht-event-bot-faq.js +8 -0
- package/lib/esm/event-models/ht-event-bot-faq.js.map +1 -0
- package/lib/esm/event-models/ht-event-bot-keyword-model.d.ts +6 -0
- package/lib/esm/event-models/ht-event-bot-keyword-model.js +8 -0
- package/lib/esm/event-models/ht-event-bot-keyword-model.js.map +1 -0
- package/lib/esm/event-models/ht-event-bot-rating.d.ts +8 -0
- package/lib/esm/event-models/ht-event-bot-rating.js +10 -0
- package/lib/esm/event-models/ht-event-bot-rating.js.map +1 -0
- package/lib/esm/event-models/ht-event-channel-rating.d.ts +6 -0
- package/lib/esm/event-models/ht-event-channel-rating.js +8 -0
- package/lib/esm/event-models/ht-event-channel-rating.js.map +1 -0
- package/lib/esm/event-models/ht-event-faq-useful.d.ts +7 -0
- package/lib/esm/event-models/ht-event-faq-useful.js +9 -0
- package/lib/esm/event-models/ht-event-faq-useful.js.map +1 -0
- package/lib/esm/event-models/ht-event-handoff-fail.d.ts +8 -0
- package/lib/esm/event-models/ht-event-handoff-fail.js +10 -0
- package/lib/esm/event-models/ht-event-handoff-fail.js.map +1 -0
- package/lib/esm/event-models/ht-event-handoff-success.d.ts +8 -0
- package/lib/esm/event-models/ht-event-handoff-success.js +10 -0
- package/lib/esm/event-models/ht-event-handoff-success.js.map +1 -0
- package/lib/esm/event-models/ht-event.d.ts +8 -0
- package/lib/esm/event-models/ht-event.js +55 -0
- package/lib/esm/event-models/ht-event.js.map +1 -0
- package/lib/esm/index.d.ts +16 -0
- package/lib/esm/index.js +38 -0
- package/lib/esm/index.js.map +1 -0
- package/lib/esm/types.d.ts +117 -0
- package/lib/esm/types.js +17 -0
- package/lib/esm/types.js.map +1 -0
- package/package.json +22 -17
- package/src/event-models/ht-event-agent-rating.ts +11 -0
- package/src/event-models/ht-event-bot-ai-model.ts +15 -0
- package/src/event-models/ht-event-bot-faq.ts +11 -0
- package/src/event-models/ht-event-bot-keyword-model.ts +12 -0
- package/src/event-models/ht-event-bot-rating.ts +15 -0
- package/src/event-models/ht-event-channel-rating.ts +11 -0
- package/src/event-models/ht-event-faq-useful.ts +13 -0
- package/src/event-models/ht-event-handoff-fail.ts +15 -0
- package/src/event-models/ht-event-handoff-success.ts +15 -0
- package/src/event-models/ht-event.ts +61 -0
- package/src/index.ts +30 -18
- package/src/types.ts +76 -49
- package/tsconfig.esm.json +0 -11
- package/tsconfig.json +0 -13
package/src/index.ts
CHANGED
|
@@ -1,20 +1,30 @@
|
|
|
1
1
|
import { BotRequest, Plugin } from '@botonic/core'
|
|
2
2
|
import axios from 'axios'
|
|
3
3
|
|
|
4
|
-
import { HtEvent } from './
|
|
4
|
+
import { HtEvent } from './event-models/ht-event'
|
|
5
|
+
import { HtEventProps, RequestData } from './types'
|
|
5
6
|
|
|
6
7
|
export interface HubtypeAnalyticsOptions {
|
|
7
|
-
|
|
8
|
+
getLaguange?: (request: BotRequest) => string
|
|
9
|
+
getCountry?: (request: BotRequest) => string
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
function getDefaultLanguage(request: BotRequest): string {
|
|
13
|
+
return request.session.user.extra_data.language
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function getDefaultCountry(request: BotRequest): string {
|
|
17
|
+
return request.session.user.extra_data.country
|
|
8
18
|
}
|
|
9
19
|
|
|
10
20
|
export default class BotonicPluginHubtypeAnalytics implements Plugin {
|
|
11
21
|
baseUrl: string
|
|
22
|
+
getLaguange: (request: BotRequest) => string
|
|
23
|
+
getCountry: (request: BotRequest) => string
|
|
12
24
|
constructor(options: HubtypeAnalyticsOptions) {
|
|
13
|
-
this.baseUrl =
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
pre(): void {
|
|
17
|
-
return
|
|
25
|
+
this.baseUrl = process.env.HUBTYPE_API_URL || 'https://api.hubtype.com'
|
|
26
|
+
this.getLaguange = options.getLaguange || getDefaultLanguage
|
|
27
|
+
this.getCountry = options.getCountry || getDefaultCountry
|
|
18
28
|
}
|
|
19
29
|
|
|
20
30
|
post(): void {
|
|
@@ -25,19 +35,21 @@ export default class BotonicPluginHubtypeAnalytics implements Plugin {
|
|
|
25
35
|
return `${this.baseUrl}/external/v1/conversational_apps/${request.session.bot.id}/bot_event/`
|
|
26
36
|
}
|
|
27
37
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
...event.event_data,
|
|
35
|
-
event_datetime: new Date().toISOString(),
|
|
36
|
-
channel: request.session.user.provider,
|
|
37
|
-
},
|
|
38
|
+
getRequestData(request: BotRequest): RequestData {
|
|
39
|
+
return {
|
|
40
|
+
language: this.getLaguange(request),
|
|
41
|
+
country: this.getCountry(request),
|
|
42
|
+
provider: request.session.user.provider,
|
|
43
|
+
userId: request.session.user.id,
|
|
38
44
|
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
async trackEvent(request: BotRequest, htEventProps: HtEventProps) {
|
|
48
|
+
const url = this.getUrl(request)
|
|
49
|
+
const requestData = this.getRequestData(request)
|
|
50
|
+
const event = HtEvent.create(requestData, htEventProps)
|
|
39
51
|
const headers = { Authorization: `Bearer ${request.session._access_token}` }
|
|
40
52
|
const config = { headers }
|
|
41
|
-
return axios.post(url,
|
|
53
|
+
return axios.post(url, event, config)
|
|
42
54
|
}
|
|
43
55
|
}
|
package/src/types.ts
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
import { PROVIDER } from '@botonic/core'
|
|
2
|
+
|
|
3
|
+
export interface Event {
|
|
4
|
+
chat: string
|
|
5
|
+
event_type: EventName
|
|
6
|
+
event_data: BaseEventData
|
|
7
|
+
}
|
|
8
|
+
|
|
1
9
|
export enum EventName {
|
|
2
10
|
botAgentRating = 'bot_agent_rating',
|
|
3
11
|
botChannelRating = 'bot_channel_rating',
|
|
@@ -13,101 +21,113 @@ export enum EventName {
|
|
|
13
21
|
handoffSuccess = 'handoff_success',
|
|
14
22
|
handoffFail = 'handoff_fail',
|
|
15
23
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
24
|
+
export interface BaseEventData {
|
|
25
|
+
channel: string
|
|
26
|
+
event_datetime: string
|
|
19
27
|
enduser_language: string
|
|
28
|
+
enduser_country?: string
|
|
20
29
|
format_version?: number
|
|
21
30
|
bot_version?: string
|
|
22
31
|
flow_version?: string
|
|
23
32
|
}
|
|
24
33
|
|
|
25
|
-
export interface
|
|
26
|
-
event_type: EventName
|
|
27
|
-
event_data: EventData & { rating: number }
|
|
34
|
+
export interface HtBaseEventProps {
|
|
35
|
+
event_type: EventName
|
|
28
36
|
}
|
|
29
37
|
|
|
30
|
-
export interface
|
|
38
|
+
export interface EventAgentRating extends HtBaseEventProps {
|
|
39
|
+
event_type: EventName.botAgentRating
|
|
40
|
+
event_data: EventDataRating
|
|
41
|
+
}
|
|
42
|
+
export interface EventChannelRating extends HtBaseEventProps {
|
|
31
43
|
event_type: EventName.botChannelRating
|
|
32
|
-
event_data:
|
|
44
|
+
event_data: EventDataRating
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export interface EventDataRating {
|
|
48
|
+
rating: number
|
|
33
49
|
}
|
|
34
50
|
|
|
35
|
-
export interface EventFaqUseful {
|
|
51
|
+
export interface EventFaqUseful extends HtBaseEventProps {
|
|
36
52
|
event_type: EventName.botFaqUseful
|
|
37
|
-
event_data:
|
|
53
|
+
event_data: EventDataUseful
|
|
38
54
|
}
|
|
39
55
|
|
|
40
|
-
export interface
|
|
56
|
+
export interface EventDataUseful {
|
|
57
|
+
faq_name: string
|
|
58
|
+
useful: boolean
|
|
59
|
+
}
|
|
60
|
+
export interface EventBotRating extends HtBaseEventProps {
|
|
41
61
|
event_type: EventName.botRating
|
|
42
|
-
event_data:
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
62
|
+
event_data: EventDataBotRating
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
interface EventDataBotRating {
|
|
66
|
+
rating: number
|
|
67
|
+
free_comment?: string
|
|
68
|
+
selected_options?: string[]
|
|
49
69
|
}
|
|
50
70
|
|
|
51
|
-
export interface EventBotFaq {
|
|
71
|
+
export interface EventBotFaq extends HtBaseEventProps {
|
|
52
72
|
event_type: EventName.botFaq
|
|
53
|
-
event_data:
|
|
73
|
+
event_data: EventDataBotFaq
|
|
54
74
|
}
|
|
55
75
|
|
|
56
|
-
|
|
76
|
+
interface EventDataBotFaq {
|
|
77
|
+
faq_name: string
|
|
78
|
+
}
|
|
79
|
+
export interface EventBotStart extends HtBaseEventProps {
|
|
57
80
|
event_type: EventName.botStart
|
|
58
|
-
event_data: EventData
|
|
59
81
|
}
|
|
60
82
|
|
|
61
83
|
export interface EventBotOpen {
|
|
62
84
|
event_type: EventName.botOpen
|
|
63
|
-
event_data: EventData
|
|
64
85
|
}
|
|
65
86
|
|
|
66
87
|
export interface EventBotAiModel {
|
|
67
88
|
event_type: EventName.botAiModel
|
|
68
|
-
event_data:
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
89
|
+
event_data: EventDataBotAiModel
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
interface EventDataBotAiModel {
|
|
93
|
+
intent: string
|
|
94
|
+
confidence: number
|
|
95
|
+
confidence_successful: boolean
|
|
73
96
|
}
|
|
74
97
|
|
|
75
|
-
export interface EventBotKeywordModel {
|
|
98
|
+
export interface EventBotKeywordModel extends HtBaseEventProps {
|
|
76
99
|
event_type: EventName.botKeywordsModel
|
|
77
|
-
event_data:
|
|
78
|
-
confidence_successful: boolean
|
|
79
|
-
}
|
|
100
|
+
event_data: EventDataBotKeywordModel
|
|
80
101
|
}
|
|
81
102
|
|
|
82
|
-
|
|
103
|
+
interface EventDataBotKeywordModel {
|
|
104
|
+
confidence_successful: boolean
|
|
105
|
+
}
|
|
106
|
+
export interface EventFallback extends HtBaseEventProps {
|
|
83
107
|
event_type: EventName.fallback
|
|
84
|
-
event_data: EventData
|
|
85
108
|
}
|
|
86
109
|
|
|
87
|
-
export interface EventHandoffOption {
|
|
110
|
+
export interface EventHandoffOption extends HtBaseEventProps {
|
|
88
111
|
event_type: EventName.handoffOption
|
|
89
|
-
event_data: EventData
|
|
90
112
|
}
|
|
91
113
|
|
|
92
|
-
export interface EventHandoffSuccess {
|
|
114
|
+
export interface EventHandoffSuccess extends HtBaseEventProps {
|
|
93
115
|
event_type: EventName.handoffSuccess
|
|
94
|
-
event_data:
|
|
95
|
-
queue_open: boolean
|
|
96
|
-
available_agents: boolean
|
|
97
|
-
threshold_reached: boolean
|
|
98
|
-
}
|
|
116
|
+
event_data: EventDataHandoff
|
|
99
117
|
}
|
|
100
118
|
|
|
101
|
-
export interface EventHandoffFail {
|
|
119
|
+
export interface EventHandoffFail extends HtBaseEventProps {
|
|
102
120
|
event_type: EventName.handoffFail
|
|
103
|
-
event_data:
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
121
|
+
event_data: EventDataHandoff
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
interface EventDataHandoff {
|
|
125
|
+
queue_open: boolean
|
|
126
|
+
available_agents: boolean
|
|
127
|
+
threshold_reached: boolean
|
|
108
128
|
}
|
|
109
129
|
|
|
110
|
-
export type
|
|
130
|
+
export type HtEventProps =
|
|
111
131
|
| EventAgentRating
|
|
112
132
|
| EventChannelRating
|
|
113
133
|
| EventFaqUseful
|
|
@@ -121,3 +141,10 @@ export type HtEvent =
|
|
|
121
141
|
| EventHandoffOption
|
|
122
142
|
| EventHandoffSuccess
|
|
123
143
|
| EventHandoffFail
|
|
144
|
+
|
|
145
|
+
export interface RequestData {
|
|
146
|
+
language: string
|
|
147
|
+
country: string
|
|
148
|
+
provider: PROVIDER
|
|
149
|
+
userId: string
|
|
150
|
+
}
|
package/tsconfig.esm.json
DELETED
package/tsconfig.json
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"extends": "../../tsconfig.base.json",
|
|
3
|
-
"include": ["src/"],
|
|
4
|
-
"compilerOptions": {
|
|
5
|
-
"jsx": "react",
|
|
6
|
-
"experimentalDecorators": true,
|
|
7
|
-
"baseUrl": ".",
|
|
8
|
-
"outDir": "./lib/cjs",
|
|
9
|
-
"esModuleInterop": true,
|
|
10
|
-
"lib": ["es2015"],
|
|
11
|
-
"skipLibCheck": true
|
|
12
|
-
}
|
|
13
|
-
}
|