@botonic/plugin-hubtype-analytics 0.25.0 → 0.27.0-alpha.0
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/README.md +38 -5
- package/lib/cjs/event-models/ht-event-custom.d.ts +10 -0
- package/lib/cjs/event-models/ht-event-custom.js +22 -0
- package/lib/cjs/event-models/ht-event-custom.js.map +1 -0
- package/lib/cjs/event-models/ht-event-fallback.d.ts +11 -0
- package/lib/cjs/event-models/ht-event-fallback.js +14 -0
- package/lib/cjs/event-models/ht-event-fallback.js.map +1 -0
- package/lib/cjs/event-models/ht-event-feedback.d.ts +17 -0
- package/lib/cjs/event-models/ht-event-feedback.js +20 -0
- package/lib/cjs/event-models/ht-event-feedback.js.map +1 -0
- package/lib/cjs/event-models/ht-event-flow.d.ts +16 -0
- package/lib/cjs/event-models/ht-event-flow.js +19 -0
- package/lib/cjs/event-models/ht-event-flow.js.map +1 -0
- package/lib/cjs/event-models/ht-event-handoff.d.ts +16 -0
- package/lib/cjs/event-models/ht-event-handoff.js +19 -0
- package/lib/cjs/event-models/ht-event-handoff.js.map +1 -0
- package/lib/cjs/event-models/ht-event-intent-smart.d.ts +13 -0
- package/lib/cjs/event-models/ht-event-intent-smart.js +16 -0
- package/lib/cjs/event-models/ht-event-intent-smart.js.map +1 -0
- package/lib/cjs/event-models/ht-event-intent.d.ts +14 -0
- package/lib/cjs/event-models/ht-event-intent.js +17 -0
- package/lib/cjs/event-models/ht-event-intent.js.map +1 -0
- package/lib/cjs/event-models/ht-event-keyword.d.ts +14 -0
- package/lib/cjs/event-models/ht-event-keyword.js +17 -0
- package/lib/cjs/event-models/ht-event-keyword.js.map +1 -0
- package/lib/cjs/event-models/ht-event-knowledge-base.d.ts +13 -0
- package/lib/cjs/event-models/ht-event-knowledge-base.js +16 -0
- package/lib/cjs/event-models/ht-event-knowledge-base.js.map +1 -0
- package/lib/cjs/event-models/ht-event-webview.d.ts +15 -0
- package/lib/cjs/event-models/ht-event-webview.js +18 -0
- package/lib/cjs/event-models/ht-event-webview.js.map +1 -0
- package/lib/cjs/event-models/ht-event.d.ts +11 -4
- package/lib/cjs/event-models/ht-event.js +8 -10
- package/lib/cjs/event-models/ht-event.js.map +1 -1
- package/lib/cjs/event-models/index.d.ts +11 -0
- package/lib/cjs/event-models/index.js +26 -0
- package/lib/cjs/event-models/index.js.map +1 -0
- package/lib/cjs/index.d.ts +3 -2
- package/lib/cjs/index.js +13 -6
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/types.d.ts +121 -118
- package/lib/cjs/types.js +28 -18
- package/lib/cjs/types.js.map +1 -1
- package/lib/cjs/utils.d.ts +1 -1
- package/lib/cjs/utils.js +29 -33
- package/lib/cjs/utils.js.map +1 -1
- package/lib/esm/event-models/ht-event-custom.d.ts +10 -0
- package/lib/esm/event-models/ht-event-custom.js +18 -0
- package/lib/esm/event-models/ht-event-custom.js.map +1 -0
- package/lib/esm/event-models/ht-event-fallback.d.ts +11 -0
- package/lib/esm/event-models/ht-event-fallback.js +10 -0
- package/lib/esm/event-models/ht-event-fallback.js.map +1 -0
- package/lib/esm/event-models/ht-event-feedback.d.ts +17 -0
- package/lib/esm/event-models/ht-event-feedback.js +16 -0
- package/lib/esm/event-models/ht-event-feedback.js.map +1 -0
- package/lib/esm/event-models/ht-event-flow.d.ts +16 -0
- package/lib/esm/event-models/ht-event-flow.js +15 -0
- package/lib/esm/event-models/ht-event-flow.js.map +1 -0
- package/lib/esm/event-models/ht-event-handoff.d.ts +16 -0
- package/lib/esm/event-models/ht-event-handoff.js +15 -0
- package/lib/esm/event-models/ht-event-handoff.js.map +1 -0
- package/lib/esm/event-models/ht-event-intent-smart.d.ts +13 -0
- package/lib/esm/event-models/ht-event-intent-smart.js +12 -0
- package/lib/esm/event-models/ht-event-intent-smart.js.map +1 -0
- package/lib/esm/event-models/ht-event-intent.d.ts +14 -0
- package/lib/esm/event-models/ht-event-intent.js +13 -0
- package/lib/esm/event-models/ht-event-intent.js.map +1 -0
- package/lib/esm/event-models/ht-event-keyword.d.ts +14 -0
- package/lib/esm/event-models/ht-event-keyword.js +13 -0
- package/lib/esm/event-models/ht-event-keyword.js.map +1 -0
- package/lib/esm/event-models/ht-event-knowledge-base.d.ts +13 -0
- package/lib/esm/event-models/ht-event-knowledge-base.js +12 -0
- package/lib/esm/event-models/ht-event-knowledge-base.js.map +1 -0
- package/lib/esm/event-models/ht-event-webview.d.ts +15 -0
- package/lib/esm/event-models/ht-event-webview.js +14 -0
- package/lib/esm/event-models/ht-event-webview.js.map +1 -0
- package/lib/esm/event-models/ht-event.d.ts +11 -4
- package/lib/esm/event-models/ht-event.js +8 -10
- package/lib/esm/event-models/ht-event.js.map +1 -1
- package/lib/esm/event-models/index.d.ts +11 -0
- package/lib/esm/event-models/index.js +12 -0
- package/lib/esm/event-models/index.js.map +1 -0
- package/lib/esm/index.d.ts +3 -2
- package/lib/esm/index.js +13 -6
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/types.d.ts +121 -118
- package/lib/esm/types.js +27 -17
- package/lib/esm/types.js.map +1 -1
- package/lib/esm/utils.d.ts +1 -1
- package/lib/esm/utils.js +29 -33
- package/lib/esm/utils.js.map +1 -1
- package/package.json +4 -4
- package/src/event-models/ht-event-custom.ts +31 -0
- package/src/event-models/ht-event-fallback.ts +17 -0
- package/src/event-models/ht-event-feedback.ts +33 -0
- package/src/event-models/ht-event-flow.ts +27 -0
- package/src/event-models/ht-event-handoff.ts +30 -0
- package/src/event-models/ht-event-intent-smart.ts +21 -0
- package/src/event-models/ht-event-intent.ts +23 -0
- package/src/event-models/ht-event-keyword.ts +23 -0
- package/src/event-models/ht-event-knowledge-base.ts +26 -0
- package/src/event-models/ht-event-webview.ts +25 -0
- package/src/event-models/ht-event.ts +19 -14
- package/src/event-models/index.ts +11 -0
- package/src/index.ts +14 -5
- package/src/types.ts +119 -111
- package/src/utils.ts +41 -33
- package/lib/cjs/event-models/ht-event-agent-rating.d.ts +0 -6
- package/lib/cjs/event-models/ht-event-agent-rating.js +0 -14
- package/lib/cjs/event-models/ht-event-agent-rating.js.map +0 -1
- package/lib/cjs/event-models/ht-event-bot-ai-model.d.ts +0 -6
- package/lib/cjs/event-models/ht-event-bot-ai-model.js +0 -15
- package/lib/cjs/event-models/ht-event-bot-ai-model.js.map +0 -1
- package/lib/cjs/event-models/ht-event-bot-faq.d.ts +0 -6
- package/lib/cjs/event-models/ht-event-bot-faq.js +0 -12
- package/lib/cjs/event-models/ht-event-bot-faq.js.map +0 -1
- package/lib/cjs/event-models/ht-event-bot-keyword-model.d.ts +0 -6
- package/lib/cjs/event-models/ht-event-bot-keyword-model.js +0 -13
- package/lib/cjs/event-models/ht-event-bot-keyword-model.js.map +0 -1
- package/lib/cjs/event-models/ht-event-bot-knowledge-base.d.ts +0 -6
- package/lib/cjs/event-models/ht-event-bot-knowledge-base.js +0 -13
- package/lib/cjs/event-models/ht-event-bot-knowledge-base.js.map +0 -1
- package/lib/cjs/event-models/ht-event-bot-rating.d.ts +0 -6
- package/lib/cjs/event-models/ht-event-bot-rating.js +0 -14
- package/lib/cjs/event-models/ht-event-bot-rating.js.map +0 -1
- package/lib/cjs/event-models/ht-event-channel-rating.d.ts +0 -6
- package/lib/cjs/event-models/ht-event-channel-rating.js +0 -12
- package/lib/cjs/event-models/ht-event-channel-rating.js.map +0 -1
- package/lib/cjs/event-models/ht-event-faq-useful.d.ts +0 -6
- package/lib/cjs/event-models/ht-event-faq-useful.js +0 -13
- package/lib/cjs/event-models/ht-event-faq-useful.js.map +0 -1
- package/lib/cjs/event-models/ht-event-handoff-fail.d.ts +0 -6
- package/lib/cjs/event-models/ht-event-handoff-fail.js +0 -15
- package/lib/cjs/event-models/ht-event-handoff-fail.js.map +0 -1
- package/lib/cjs/event-models/ht-event-handoff-success.d.ts +0 -6
- package/lib/cjs/event-models/ht-event-handoff-success.js +0 -15
- package/lib/cjs/event-models/ht-event-handoff-success.js.map +0 -1
- package/lib/esm/event-models/ht-event-agent-rating.d.ts +0 -6
- package/lib/esm/event-models/ht-event-agent-rating.js +0 -10
- package/lib/esm/event-models/ht-event-agent-rating.js.map +0 -1
- package/lib/esm/event-models/ht-event-bot-ai-model.d.ts +0 -6
- package/lib/esm/event-models/ht-event-bot-ai-model.js +0 -11
- package/lib/esm/event-models/ht-event-bot-ai-model.js.map +0 -1
- package/lib/esm/event-models/ht-event-bot-faq.d.ts +0 -6
- package/lib/esm/event-models/ht-event-bot-faq.js +0 -8
- package/lib/esm/event-models/ht-event-bot-faq.js.map +0 -1
- package/lib/esm/event-models/ht-event-bot-keyword-model.d.ts +0 -6
- package/lib/esm/event-models/ht-event-bot-keyword-model.js +0 -9
- package/lib/esm/event-models/ht-event-bot-keyword-model.js.map +0 -1
- package/lib/esm/event-models/ht-event-bot-knowledge-base.d.ts +0 -6
- package/lib/esm/event-models/ht-event-bot-knowledge-base.js +0 -9
- package/lib/esm/event-models/ht-event-bot-knowledge-base.js.map +0 -1
- package/lib/esm/event-models/ht-event-bot-rating.d.ts +0 -6
- package/lib/esm/event-models/ht-event-bot-rating.js +0 -10
- package/lib/esm/event-models/ht-event-bot-rating.js.map +0 -1
- package/lib/esm/event-models/ht-event-channel-rating.d.ts +0 -6
- package/lib/esm/event-models/ht-event-channel-rating.js +0 -8
- package/lib/esm/event-models/ht-event-channel-rating.js.map +0 -1
- package/lib/esm/event-models/ht-event-faq-useful.d.ts +0 -6
- package/lib/esm/event-models/ht-event-faq-useful.js +0 -9
- package/lib/esm/event-models/ht-event-faq-useful.js.map +0 -1
- package/lib/esm/event-models/ht-event-handoff-fail.d.ts +0 -6
- package/lib/esm/event-models/ht-event-handoff-fail.js +0 -11
- package/lib/esm/event-models/ht-event-handoff-fail.js.map +0 -1
- package/lib/esm/event-models/ht-event-handoff-success.d.ts +0 -6
- package/lib/esm/event-models/ht-event-handoff-success.js +0 -11
- package/lib/esm/event-models/ht-event-handoff-success.js.map +0 -1
- package/src/event-models/ht-event-agent-rating.ts +0 -18
- package/src/event-models/ht-event-bot-ai-model.ts +0 -19
- package/src/event-models/ht-event-bot-faq.ts +0 -16
- package/src/event-models/ht-event-bot-keyword-model.ts +0 -17
- package/src/event-models/ht-event-bot-knowledge-base.ts +0 -17
- package/src/event-models/ht-event-bot-rating.ts +0 -18
- package/src/event-models/ht-event-channel-rating.ts +0 -16
- package/src/event-models/ht-event-faq-useful.ts +0 -17
- package/src/event-models/ht-event-handoff-fail.ts +0 -19
- package/src/event-models/ht-event-handoff-success.ts +0 -19
package/lib/esm/utils.js
CHANGED
|
@@ -1,37 +1,33 @@
|
|
|
1
|
-
import { HtEvent } from './event-models
|
|
2
|
-
import {
|
|
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 { HtEventBotAiKnowledgeBase } from './event-models/ht-event-bot-knowledge-base';
|
|
7
|
-
import { HtEventBotRating } from './event-models/ht-event-bot-rating';
|
|
8
|
-
import { HtEventChannelRating } from './event-models/ht-event-channel-rating';
|
|
9
|
-
import { HtEventFaqUseful } from './event-models/ht-event-faq-useful';
|
|
10
|
-
import { HtEventHandoffFail } from './event-models/ht-event-handoff-fail';
|
|
11
|
-
import { HtEventHandoffSuccess } from './event-models/ht-event-handoff-success';
|
|
12
|
-
import { EventName } from './types';
|
|
1
|
+
import { HtEvent, HtEventCustom, HtEventFallback, HtEventFeedback, HtEventFlow, HtEventHandoff, HtEventIntent, HtEventIntentSmart, HtEventKeyword, HtEventKnowledgeBase, HtEventWebview, } from './event-models';
|
|
2
|
+
import { EventAction } from './types';
|
|
13
3
|
export function createHtEvent(requestData, htEventProps) {
|
|
14
|
-
switch (htEventProps.
|
|
15
|
-
case
|
|
16
|
-
|
|
17
|
-
case
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
case
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
4
|
+
switch (htEventProps.action) {
|
|
5
|
+
case EventAction.feedbackCase:
|
|
6
|
+
case EventAction.feedbackConversation:
|
|
7
|
+
case EventAction.feedbackMessage:
|
|
8
|
+
case EventAction.feedbackWebview:
|
|
9
|
+
return new HtEventFeedback(htEventProps, requestData);
|
|
10
|
+
case EventAction.flowNode:
|
|
11
|
+
return new HtEventFlow(htEventProps, requestData);
|
|
12
|
+
case EventAction.handoffOption:
|
|
13
|
+
case EventAction.handoffSuccess:
|
|
14
|
+
case EventAction.handoffFail:
|
|
15
|
+
return new HtEventHandoff(htEventProps, requestData);
|
|
16
|
+
case EventAction.intent:
|
|
17
|
+
return new HtEventIntent(htEventProps, requestData);
|
|
18
|
+
case EventAction.keyword:
|
|
19
|
+
return new HtEventKeyword(htEventProps, requestData);
|
|
20
|
+
case EventAction.intentSmart:
|
|
21
|
+
return new HtEventIntentSmart(htEventProps, requestData);
|
|
22
|
+
case EventAction.knowledgebase:
|
|
23
|
+
return new HtEventKnowledgeBase(htEventProps, requestData);
|
|
24
|
+
case EventAction.fallback:
|
|
25
|
+
return new HtEventFallback(htEventProps, requestData);
|
|
26
|
+
case EventAction.webviewStep:
|
|
27
|
+
return new HtEventWebview(htEventProps, requestData);
|
|
28
|
+
case EventAction.customBot:
|
|
29
|
+
case EventAction.customWeb:
|
|
30
|
+
return new HtEventCustom(htEventProps, requestData);
|
|
35
31
|
default:
|
|
36
32
|
return new HtEvent(htEventProps, requestData);
|
|
37
33
|
}
|
package/lib/esm/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,aAAa,EACb,eAAe,EACf,eAAe,EACf,WAAW,EACX,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,oBAAoB,EACpB,cAAc,GACf,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,WAAW,EAA6B,MAAM,SAAS,CAAA;AAEhE,MAAM,UAAU,aAAa,CAC3B,WAAwB,EACxB,YAA0B;IAE1B,QAAQ,YAAY,CAAC,MAAM,EAAE;QAC3B,KAAK,WAAW,CAAC,YAAY,CAAC;QAC9B,KAAK,WAAW,CAAC,oBAAoB,CAAC;QACtC,KAAK,WAAW,CAAC,eAAe,CAAC;QACjC,KAAK,WAAW,CAAC,eAAe;YAC9B,OAAO,IAAI,eAAe,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;QAEvD,KAAK,WAAW,CAAC,QAAQ;YACvB,OAAO,IAAI,WAAW,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;QAEnD,KAAK,WAAW,CAAC,aAAa,CAAC;QAC/B,KAAK,WAAW,CAAC,cAAc,CAAC;QAChC,KAAK,WAAW,CAAC,WAAW;YAC1B,OAAO,IAAI,cAAc,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;QAEtD,KAAK,WAAW,CAAC,MAAM;YACrB,OAAO,IAAI,aAAa,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;QAErD,KAAK,WAAW,CAAC,OAAO;YACtB,OAAO,IAAI,cAAc,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;QAEtD,KAAK,WAAW,CAAC,WAAW;YAC1B,OAAO,IAAI,kBAAkB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;QAE1D,KAAK,WAAW,CAAC,aAAa;YAC5B,OAAO,IAAI,oBAAoB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;QAE5D,KAAK,WAAW,CAAC,QAAQ;YACvB,OAAO,IAAI,eAAe,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;QAEvD,KAAK,WAAW,CAAC,WAAW;YAC1B,OAAO,IAAI,cAAc,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;QAEtD,KAAK,WAAW,CAAC,SAAS,CAAC;QAC3B,KAAK,WAAW,CAAC,SAAS;YACxB,OAAO,IAAI,aAAa,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;QAErD;YACE,OAAO,IAAI,OAAO,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;KAChD;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@botonic/plugin-hubtype-analytics",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.27.0-alpha.0",
|
|
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",
|
|
7
7
|
"scripts": {
|
|
8
8
|
"build": "rm -rf lib && ../../node_modules/.bin/tsc -p tsconfig.json && ../../node_modules/.bin/tsc -p tsconfig.esm.json",
|
|
9
9
|
"build:watch": "npm run build -- --watch",
|
|
10
|
-
"test": "
|
|
10
|
+
"test": "../../node_modules/.bin/jest --coverage",
|
|
11
11
|
"prepublishOnly": "rm -rf lib && npm i && npm run build",
|
|
12
12
|
"lint": "npm run lint_core -- --fix",
|
|
13
13
|
"lint_core": "../../node_modules/.bin/eslint_d --cache --quiet 'src/**/*.ts*'"
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
16
|
"@babel/runtime": "^7.21.0",
|
|
17
|
-
"@botonic/core": "^0.
|
|
18
|
-
"axios": "^1.6.
|
|
17
|
+
"@botonic/core": "^0.27.0-alpha.0",
|
|
18
|
+
"axios": "^1.6.8"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|
|
21
21
|
"@types/node": "^20.11.17",
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CUSTOM_PREFIX,
|
|
3
|
+
EventAction,
|
|
4
|
+
EventCustom,
|
|
5
|
+
EventType,
|
|
6
|
+
RequestData,
|
|
7
|
+
} from '../types'
|
|
8
|
+
import { HtEvent } from './ht-event'
|
|
9
|
+
|
|
10
|
+
interface EventDataCustom {
|
|
11
|
+
action: EventAction.customBot | EventAction.customWeb
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export class HtEventCustom extends HtEvent {
|
|
15
|
+
data: EventDataCustom
|
|
16
|
+
|
|
17
|
+
constructor(event: EventCustom, requestData: RequestData) {
|
|
18
|
+
super(event, requestData)
|
|
19
|
+
this.type =
|
|
20
|
+
event.action === EventAction.customBot
|
|
21
|
+
? EventType.botevent
|
|
22
|
+
: EventType.webevent
|
|
23
|
+
|
|
24
|
+
// Set in data with all attributs that start with 'custom_'
|
|
25
|
+
for (const key in event.data) {
|
|
26
|
+
if (key.startsWith(CUSTOM_PREFIX)) {
|
|
27
|
+
this.data[key] = event.data[key]
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { EventAction, EventFallback, EventType, RequestData } from '../types'
|
|
2
|
+
import { HtEvent } from './ht-event'
|
|
3
|
+
|
|
4
|
+
interface EventDataFallback {
|
|
5
|
+
action: EventAction.fallback
|
|
6
|
+
fallback_attempt: number
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export class HtEventFallback extends HtEvent {
|
|
10
|
+
data: EventDataFallback
|
|
11
|
+
|
|
12
|
+
constructor(event: EventFallback, requestData: RequestData) {
|
|
13
|
+
super(event, requestData)
|
|
14
|
+
this.type = EventType.botevent
|
|
15
|
+
this.data.fallback_attempt = event.data.fallbackAttempt
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { EventAction, EventFeedback, EventType, RequestData } from '../types'
|
|
2
|
+
import { HtEvent } from './ht-event'
|
|
3
|
+
|
|
4
|
+
interface EventDataFeedback {
|
|
5
|
+
action:
|
|
6
|
+
| EventAction.feedbackCase
|
|
7
|
+
| EventAction.feedbackConversation
|
|
8
|
+
| EventAction.feedbackMessage
|
|
9
|
+
| EventAction.feedbackWebview
|
|
10
|
+
message_generated_by?: string
|
|
11
|
+
feedback_target_id?: string
|
|
12
|
+
feedback_group_id?: string
|
|
13
|
+
possible_options: string[]
|
|
14
|
+
possible_values: number[]
|
|
15
|
+
option: string
|
|
16
|
+
value: number
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export class HtEventFeedback extends HtEvent {
|
|
20
|
+
data: EventDataFeedback
|
|
21
|
+
|
|
22
|
+
constructor(event: EventFeedback, requestData: RequestData) {
|
|
23
|
+
super(event, requestData)
|
|
24
|
+
this.type = EventType.feedback
|
|
25
|
+
this.data.message_generated_by = event.data.messageGeneratedBy // ?? nomes te valor quan action es message. Si es message de knowledge base => sources y chunks. Quan es un node de flow builder => content_id
|
|
26
|
+
this.data.feedback_target_id = event.data.feedbackTargetId // ?? case_id, message_id, conversation_id ???, webview_name
|
|
27
|
+
this.data.feedback_group_id = event.data.feedbackGroupId // ??
|
|
28
|
+
this.data.possible_options = event.data.possibleOptions
|
|
29
|
+
this.data.possible_values = event.data.possibleValues
|
|
30
|
+
this.data.option = event.data.option
|
|
31
|
+
this.data.value = event.data.value
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { EventAction, EventFlow, EventType, RequestData } from '../types'
|
|
2
|
+
import { HtEvent } from './ht-event'
|
|
3
|
+
|
|
4
|
+
interface EventDataFlow {
|
|
5
|
+
action: EventAction.flowNode
|
|
6
|
+
flow_thread_id: string
|
|
7
|
+
flow_id: string
|
|
8
|
+
flow_name: string
|
|
9
|
+
flow_node_id: string
|
|
10
|
+
flow_node_content_id: string
|
|
11
|
+
flow_node_is_meaningful?: boolean
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export class HtEventFlow extends HtEvent {
|
|
15
|
+
data: EventDataFlow
|
|
16
|
+
|
|
17
|
+
constructor(event: EventFlow, requestData: RequestData) {
|
|
18
|
+
super(event, requestData)
|
|
19
|
+
this.type = EventType.botevent
|
|
20
|
+
this.data.flow_thread_id = event.data.flowThreadId // This value is managed by the flow builder plugin, stored in the session and updated every time the content connected to the conversation start is displayed
|
|
21
|
+
this.data.flow_id = event.data.flowId
|
|
22
|
+
this.data.flow_name = event.data.flowName
|
|
23
|
+
this.data.flow_node_id = event.data.flowNodeId
|
|
24
|
+
this.data.flow_node_content_id = event.data.flowNodeContentId
|
|
25
|
+
this.data.flow_node_is_meaningful = event.data.flowNodeIsMeaningful || false
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { EventAction, EventHandoff, EventType, RequestData } from '../types'
|
|
2
|
+
import { HtEvent } from './ht-event'
|
|
3
|
+
|
|
4
|
+
interface EventDataHandoff {
|
|
5
|
+
action:
|
|
6
|
+
| EventAction.handoffOption
|
|
7
|
+
| EventAction.handoffSuccess
|
|
8
|
+
| EventAction.handoffFail
|
|
9
|
+
handoff_queue_id: string
|
|
10
|
+
handoff_queue_name: string
|
|
11
|
+
handoff_case_id?: string
|
|
12
|
+
is_queue_open?: boolean
|
|
13
|
+
handoff_is_available_agent?: boolean
|
|
14
|
+
handoff_is_threshold_reached?: boolean
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export class HtEventHandoff extends HtEvent {
|
|
18
|
+
data: EventDataHandoff
|
|
19
|
+
|
|
20
|
+
constructor(event: EventHandoff, requestData: RequestData) {
|
|
21
|
+
super(event, requestData)
|
|
22
|
+
this.type = EventType.botevent
|
|
23
|
+
this.data.handoff_queue_id = event.data.queueId
|
|
24
|
+
this.data.handoff_queue_name = event.data.queueName
|
|
25
|
+
this.data.handoff_case_id = event.data.caseId
|
|
26
|
+
this.data.is_queue_open = event.data.isQueueOpen
|
|
27
|
+
this.data.handoff_is_available_agent = event.data.isAvailableAgent
|
|
28
|
+
this.data.handoff_is_threshold_reached = event.data.isThresholdReached
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { EventAction, EventIntentSmart, EventType, RequestData } from '../types'
|
|
2
|
+
import { HtEvent } from './ht-event'
|
|
3
|
+
|
|
4
|
+
interface EventDataIntentSmart {
|
|
5
|
+
action: EventAction.intentSmart
|
|
6
|
+
nlu_intent_smart_title: string
|
|
7
|
+
nlu_intent_smart_num_used: number
|
|
8
|
+
nlu_intent_smart_message_id: string
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export class HtEventIntentSmart extends HtEvent {
|
|
12
|
+
data: EventDataIntentSmart
|
|
13
|
+
|
|
14
|
+
constructor(event: EventIntentSmart, requestData: RequestData) {
|
|
15
|
+
super(event, requestData)
|
|
16
|
+
this.type = EventType.botevent
|
|
17
|
+
this.data.nlu_intent_smart_title = event.data.nluIntentSmartTitle
|
|
18
|
+
this.data.nlu_intent_smart_num_used = event.data.nluIntentSmartNumUsed
|
|
19
|
+
this.data.nlu_intent_smart_message_id = event.data.nluIntentSmartMessageId
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { EventAction, EventIntent, EventType, RequestData } from '../types'
|
|
2
|
+
import { HtEvent } from './ht-event'
|
|
3
|
+
|
|
4
|
+
interface EventDataIntent {
|
|
5
|
+
action: EventAction.intent
|
|
6
|
+
nlu_intent_label: string
|
|
7
|
+
nlu_intent_confidence: number
|
|
8
|
+
nlu_intent_threshold: number
|
|
9
|
+
nlu_intent_message_id: string
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export class HtEventIntent extends HtEvent {
|
|
13
|
+
data: EventDataIntent
|
|
14
|
+
|
|
15
|
+
constructor(event: EventIntent, requestData: RequestData) {
|
|
16
|
+
super(event, requestData)
|
|
17
|
+
this.type = EventType.botevent
|
|
18
|
+
this.data.nlu_intent_label = event.data.nluIntentLabel
|
|
19
|
+
this.data.nlu_intent_confidence = event.data.nluIntentConfidence
|
|
20
|
+
this.data.nlu_intent_threshold = event.data.nluIntentThreshold
|
|
21
|
+
this.data.nlu_intent_message_id = event.data.nluIntentMessageId
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { EventAction, EventKeyword, EventType, RequestData } from '../types'
|
|
2
|
+
import { HtEvent } from './ht-event'
|
|
3
|
+
|
|
4
|
+
interface EventDataKeyword {
|
|
5
|
+
action: EventAction.keyword
|
|
6
|
+
nlu_keyword_id: string
|
|
7
|
+
nlu_keyword_name: string
|
|
8
|
+
nlu_keyword_is_regex: boolean
|
|
9
|
+
nlu_keyword_message_id: string
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export class HtEventKeyword extends HtEvent {
|
|
13
|
+
data: EventDataKeyword
|
|
14
|
+
|
|
15
|
+
constructor(event: EventKeyword, requestData: RequestData) {
|
|
16
|
+
super(event, requestData)
|
|
17
|
+
this.type = EventType.botevent
|
|
18
|
+
this.data.nlu_keyword_id = event.data.nluKeywordId
|
|
19
|
+
this.data.nlu_keyword_name = event.data.nluKeywordName
|
|
20
|
+
this.data.nlu_keyword_is_regex = event.data.nluKeywordIsRegex || false
|
|
21
|
+
this.data.nlu_keyword_message_id = event.data.nluKeywordMessageId
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import {
|
|
2
|
+
EventAction,
|
|
3
|
+
EventKnowledgeBase,
|
|
4
|
+
EventType,
|
|
5
|
+
RequestData,
|
|
6
|
+
} from '../types'
|
|
7
|
+
import { HtEvent } from './ht-event'
|
|
8
|
+
|
|
9
|
+
interface EventDataKnowledgeBase {
|
|
10
|
+
action: EventAction.knowledgebase
|
|
11
|
+
knowledgebase_fail_reason?: string
|
|
12
|
+
knowledgebase_sources_ids: string[]
|
|
13
|
+
knowledgebase_chunks_ids: string[]
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export class HtEventKnowledgeBase extends HtEvent {
|
|
17
|
+
data: EventDataKnowledgeBase
|
|
18
|
+
|
|
19
|
+
constructor(event: EventKnowledgeBase, requestData: RequestData) {
|
|
20
|
+
super(event, requestData)
|
|
21
|
+
this.type = EventType.botevent
|
|
22
|
+
this.data.knowledgebase_fail_reason = event.data.knowledgebaseFailReason
|
|
23
|
+
this.data.knowledgebase_sources_ids = event.data.knowledgebaseSourcesIds
|
|
24
|
+
this.data.knowledgebase_chunks_ids = event.data.knowledgebaseChunksIds
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { EventAction, EventType, EventWebview, RequestData } from '../types'
|
|
2
|
+
import { HtEvent } from './ht-event'
|
|
3
|
+
|
|
4
|
+
interface EventDataWebview {
|
|
5
|
+
action: EventAction.webviewStep | EventAction.webviewEnd
|
|
6
|
+
webview_thread_id: string
|
|
7
|
+
webview_name: string
|
|
8
|
+
webview_step_name: string
|
|
9
|
+
webview_end_fail_type?: string
|
|
10
|
+
webview_end_fail_message?: string
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export class HtEventWebview extends HtEvent {
|
|
14
|
+
data: EventDataWebview
|
|
15
|
+
|
|
16
|
+
constructor(event: EventWebview, requestData: RequestData) {
|
|
17
|
+
super(event, requestData)
|
|
18
|
+
this.type = EventType.webevent
|
|
19
|
+
this.data.webview_thread_id = event.data.webviewThreadId
|
|
20
|
+
this.data.webview_name = event.data.webviewName
|
|
21
|
+
this.data.webview_step_name = event.data.webviewStepName
|
|
22
|
+
this.data.webview_end_fail_type = event.data.webviewEndFailType
|
|
23
|
+
this.data.webview_end_fail_message = event.data.webviewEndFailMessage
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -1,20 +1,25 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EventType, HtEventProps, RequestData } from '../types'
|
|
2
2
|
|
|
3
3
|
export class HtEvent {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
chat_id: string
|
|
5
|
+
type: EventType
|
|
6
|
+
channel: string
|
|
7
|
+
created_at: string
|
|
8
|
+
chat_language: string
|
|
9
|
+
chat_country?: string
|
|
10
|
+
format_version?: number
|
|
11
|
+
bot_version?: string
|
|
12
|
+
flow_version?: string
|
|
13
|
+
data: any
|
|
7
14
|
|
|
8
15
|
constructor(event: HtEventProps, requestData: RequestData) {
|
|
9
|
-
this.
|
|
10
|
-
this.
|
|
11
|
-
this.
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
// flow_version?: string
|
|
18
|
-
}
|
|
16
|
+
this.chat_id = requestData.userId
|
|
17
|
+
this.channel = requestData.provider
|
|
18
|
+
this.created_at = new Date().toISOString()
|
|
19
|
+
this.chat_language = requestData.language
|
|
20
|
+
this.chat_country = requestData.country
|
|
21
|
+
this.format_version = 2
|
|
22
|
+
this.data = {}
|
|
23
|
+
this.data.action = event.action
|
|
19
24
|
}
|
|
20
25
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { HtEvent } from './ht-event'
|
|
2
|
+
export { HtEventCustom } from './ht-event-custom'
|
|
3
|
+
export { HtEventFallback } from './ht-event-fallback'
|
|
4
|
+
export { HtEventFeedback } from './ht-event-feedback'
|
|
5
|
+
export { HtEventFlow } from './ht-event-flow'
|
|
6
|
+
export { HtEventHandoff } from './ht-event-handoff'
|
|
7
|
+
export { HtEventIntent } from './ht-event-intent'
|
|
8
|
+
export { HtEventIntentSmart } from './ht-event-intent-smart'
|
|
9
|
+
export { HtEventKeyword } from './ht-event-keyword'
|
|
10
|
+
export { HtEventKnowledgeBase } from './ht-event-knowledge-base'
|
|
11
|
+
export { HtEventWebview } from './ht-event-webview'
|
package/src/index.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { BotRequest, Plugin } from '@botonic/core'
|
|
2
2
|
import axios from 'axios'
|
|
3
3
|
|
|
4
|
-
import {
|
|
4
|
+
import { HtEvent } from './event-models'
|
|
5
|
+
import { EventType, HtEventProps, RequestData } from './types'
|
|
5
6
|
import { createHtEvent } from './utils'
|
|
6
7
|
|
|
7
8
|
export interface HubtypeAnalyticsOptions {
|
|
@@ -31,8 +32,11 @@ export default class BotonicPluginHubtypeAnalytics implements Plugin {
|
|
|
31
32
|
return
|
|
32
33
|
}
|
|
33
34
|
|
|
34
|
-
getUrl(request: BotRequest) {
|
|
35
|
-
|
|
35
|
+
getUrl(request: BotRequest, eventType: EventType) {
|
|
36
|
+
if (eventType === EventType.webevent) {
|
|
37
|
+
return `${this.baseUrl}/external/v2/conversational_apps/${request.session.bot.id}/web_event/`
|
|
38
|
+
}
|
|
39
|
+
return `${this.baseUrl}/external/v2/conversational_apps/${request.session.bot.id}/bot_event/`
|
|
36
40
|
}
|
|
37
41
|
|
|
38
42
|
getRequestData(request: BotRequest): RequestData {
|
|
@@ -45,11 +49,16 @@ export default class BotonicPluginHubtypeAnalytics implements Plugin {
|
|
|
45
49
|
}
|
|
46
50
|
|
|
47
51
|
async trackEvent(request: BotRequest, htEventProps: HtEventProps) {
|
|
48
|
-
const url = this.getUrl(request)
|
|
49
52
|
const requestData = this.getRequestData(request)
|
|
50
53
|
const event = createHtEvent(requestData, htEventProps)
|
|
54
|
+
|
|
55
|
+
return this.sendEvent(request, event)
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
private sendEvent(request: BotRequest, event: HtEvent) {
|
|
59
|
+
const url = this.getUrl(request, event.type)
|
|
51
60
|
const headers = { Authorization: `Bearer ${request.session._access_token}` }
|
|
52
|
-
const config = { headers }
|
|
61
|
+
const config = event.type !== EventType.webevent ? { headers } : undefined
|
|
53
62
|
return axios.post(url, event, config)
|
|
54
63
|
}
|
|
55
64
|
}
|