@botonic/webchat-core 2.37.0 → 2.38.1
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/CHANGELOG.md +16 -0
- package/package.json +4 -3
- package/src/index.d.ts +6 -1
- package/src/index.js +5 -1
- package/src/index.js.map +1 -1
- package/src/lib/analytics/create-webchat-analytics-botonic-context.d.ts +14 -0
- package/src/lib/analytics/create-webchat-analytics-botonic-context.js +114 -0
- package/src/lib/analytics/create-webchat-analytics-botonic-context.js.map +1 -0
- package/src/lib/analytics/dispatch-hubtype-analytics-track-event.d.ts +8 -0
- package/src/lib/analytics/dispatch-hubtype-analytics-track-event.js +60 -0
- package/src/lib/analytics/dispatch-hubtype-analytics-track-event.js.map +1 -0
- package/src/lib/analytics/hubtype-analytics-track-event-message.d.ts +9 -0
- package/src/lib/analytics/hubtype-analytics-track-event-message.js +24 -0
- package/src/lib/analytics/hubtype-analytics-track-event-message.js.map +1 -0
- package/src/lib/analytics/index.d.ts +4 -0
- package/src/lib/analytics/index.js +5 -0
- package/src/lib/analytics/index.js.map +1 -0
- package/src/lib/analytics/webchat-analytics-request.d.ts +17 -0
- package/src/lib/analytics/webchat-analytics-request.js +25 -0
- package/src/lib/analytics/webchat-analytics-request.js.map +1 -0
- package/src/lib/controllers/index.d.ts +1 -0
- package/src/lib/controllers/index.js +1 -0
- package/src/lib/controllers/index.js.map +1 -1
- package/src/lib/controllers/public.d.ts +12 -9
- package/src/lib/controllers/public.js +3 -2
- package/src/lib/controllers/public.js.map +1 -1
- package/src/lib/controllers/register-on-open.d.ts +6 -0
- package/src/lib/controllers/register-on-open.js +15 -0
- package/src/lib/controllers/register-on-open.js.map +1 -0
- package/src/lib/controllers/webchat.d.ts +21 -9
- package/src/lib/controllers/webchat.js +135 -32
- package/src/lib/controllers/webchat.js.map +1 -1
- package/src/lib/domain/index.d.ts +11 -0
- package/src/lib/infra/client/webchat-client-state.d.ts +13 -0
- package/src/lib/infra/client/webchat-client-state.js +29 -0
- package/src/lib/infra/client/webchat-client-state.js.map +1 -0
- package/src/lib/infra/clients/hubtype-api.d.ts +2 -1
- package/src/lib/infra/clients/hubtype-api.js +10 -1
- package/src/lib/infra/clients/hubtype-api.js.map +1 -1
- package/src/lib/infra/repositories/storage/base-storage.d.ts +13 -2
- package/src/lib/infra/repositories/storage/base-storage.js +117 -6
- package/src/lib/infra/repositories/storage/base-storage.js.map +1 -1
- package/src/lib/infra/repositories/storage/browser-storage.js +2 -5
- package/src/lib/infra/repositories/storage/browser-storage.js.map +1 -1
- package/src/lib/infra/repositories/storage/client-state-constants.d.ts +4 -0
- package/src/lib/infra/repositories/storage/client-state-constants.js +5 -0
- package/src/lib/infra/repositories/storage/client-state-constants.js.map +1 -0
- package/src/lib/infra/repositories/storage/factory.js +8 -6
- package/src/lib/infra/repositories/storage/factory.js.map +1 -1
- package/src/lib/infra/repositories/storage/in-memory.js +7 -1
- package/src/lib/infra/repositories/storage/in-memory.js.map +1 -1
- package/src/lib/infra/repositories/storage/index.d.ts +2 -1
- package/src/lib/infra/repositories/storage/index.js +1 -0
- package/src/lib/infra/repositories/storage/index.js.map +1 -1
- package/src/lib/infra/repositories/storage/parse-conversation-data.d.ts +2 -0
- package/src/lib/infra/repositories/storage/parse-conversation-data.js +19 -0
- package/src/lib/infra/repositories/storage/parse-conversation-data.js.map +1 -0
- package/src/lib/infra/repositories/storage/resolve-webchat-session-user.d.ts +9 -0
- package/src/lib/infra/repositories/storage/resolve-webchat-session-user.js +41 -0
- package/src/lib/infra/repositories/storage/resolve-webchat-session-user.js.map +1 -0
- package/src/lib/infra/repositories/storage/storage-test-helpers.d.ts +2 -0
- package/src/lib/infra/repositories/storage/storage-test-helpers.js +10 -0
- package/src/lib/infra/repositories/storage/storage-test-helpers.js.map +1 -0
- package/src/lib/infra/repositories/storage/types.d.ts +11 -0
- package/src/lib/machines/embed-trigger.d.ts +17 -0
- package/src/lib/machines/embed-trigger.js +29 -0
- package/src/lib/machines/embed-trigger.js.map +1 -0
- package/src/lib/machines/webchat.d.ts +41 -8
- package/src/lib/machines/webchat.js +73 -23
- package/src/lib/machines/webchat.js.map +1 -1
- package/src/lib/messages/webchat-message.d.ts +4 -1
- package/src/lib/messages/webchat-message.js +3 -0
- package/src/lib/messages/webchat-message.js.map +1 -1
- package/src/lib/services/webchat-service.d.ts +3 -0
- package/src/lib/services/webchat-service.js +77 -5
- package/src/lib/services/webchat-service.js.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,19 @@
|
|
|
1
|
+
## 2.38.1 (2026-11-06)
|
|
2
|
+
|
|
3
|
+
This was a version bump only for @botonic/webchat-core to align it with other projects, there were no code changes.
|
|
4
|
+
|
|
5
|
+
## 2.38.0 (2026-11-04)
|
|
6
|
+
|
|
7
|
+
### 🚀 Features
|
|
8
|
+
|
|
9
|
+
- **botonic:** add RequestContactInfo shared types and session field #BLT-2622 ([#1300](https://github.com/metis-ai/hubtype-product/pull/1300))
|
|
10
|
+
- support channels list before opening webchat ([#1329](https://github.com/metis-ai/hubtype-product/pull/1329))
|
|
11
|
+
|
|
12
|
+
### ❤️ Thank You
|
|
13
|
+
|
|
14
|
+
- David Hidalgo @Davidhidalgo
|
|
15
|
+
- Marc Rabat @vanbasten17
|
|
16
|
+
|
|
1
17
|
## 2.37.0 (2026-09-03)
|
|
2
18
|
|
|
3
19
|
This was a version bump only for @botonic/webchat-core to align it with other projects, there were no code changes.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@botonic/webchat-core",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.38.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"types": "./src/index.d.ts",
|
|
6
6
|
"module": "./src/index.js",
|
|
@@ -16,11 +16,12 @@
|
|
|
16
16
|
}
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@botonic/shared": "2.
|
|
19
|
+
"@botonic/shared": "2.38.1",
|
|
20
20
|
"pusher-js": "^8.4.0",
|
|
21
21
|
"tslib": "^2.3.0",
|
|
22
22
|
"uuid": "^11.1.0",
|
|
23
|
-
"xstate": "^5.19.3"
|
|
23
|
+
"xstate": "^5.19.3",
|
|
24
|
+
"@botonic/core": "2.38.1"
|
|
24
25
|
},
|
|
25
26
|
"references": [
|
|
26
27
|
{
|
package/src/index.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
export * from './lib/analytics';
|
|
1
2
|
export * from './lib/domain';
|
|
2
3
|
export * from './lib/messages';
|
|
4
|
+
export type { EmbedTriggerContext, EmbedTriggerEvent, EmbedTriggerInput, } from './lib/machines/embed-trigger';
|
|
5
|
+
export { embedTriggerMachine, isEmbedTriggerHydrated, } from './lib/machines/embed-trigger';
|
|
3
6
|
export * from './lib/machines/message';
|
|
4
7
|
export * from './lib/machines/overlay';
|
|
5
8
|
export * from './lib/machines/webchat';
|
|
@@ -7,6 +10,8 @@ export * from './lib/controllers';
|
|
|
7
10
|
export type { WebchatEmittedEvent } from './lib/controllers/webchat';
|
|
8
11
|
export * from './lib/infra/clients';
|
|
9
12
|
export * from './lib/services/webchat-service';
|
|
10
|
-
export
|
|
13
|
+
export { WebchatClientState } from './lib/infra/client/webchat-client-state';
|
|
14
|
+
export type { AppClientState, ConversationData, StorageConfig, StorageRepository, StorageType, StoredMessage, WebchatHubtypeUser, } from './lib/infra/repositories';
|
|
11
15
|
export { createStorageRepository, InMemoryRepository, LocalStorageRepository, SessionStorageRepository, } from './lib/infra/repositories';
|
|
16
|
+
export { DEFAULT_KEY_PREFIX } from './lib/infra/repositories/storage/client-state-constants';
|
|
12
17
|
export * from './lib/webview';
|
package/src/index.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
// Domain types
|
|
2
|
+
export * from './lib/analytics';
|
|
2
3
|
export * from './lib/domain';
|
|
3
4
|
// Webchat message runtime (user input, realtime responses, unified webchat message)
|
|
4
5
|
export * from './lib/messages';
|
|
5
|
-
|
|
6
|
+
export { embedTriggerMachine, isEmbedTriggerHydrated, } from './lib/machines/embed-trigger';
|
|
6
7
|
export * from './lib/machines/message';
|
|
7
8
|
export * from './lib/machines/overlay';
|
|
8
9
|
export * from './lib/machines/webchat';
|
|
@@ -11,7 +12,10 @@ export * from './lib/controllers';
|
|
|
11
12
|
// Infrastructure clients
|
|
12
13
|
export * from './lib/infra/clients';
|
|
13
14
|
export * from './lib/services/webchat-service';
|
|
15
|
+
// Storage types and repository
|
|
16
|
+
export { WebchatClientState } from './lib/infra/client/webchat-client-state';
|
|
14
17
|
export { createStorageRepository, InMemoryRepository, LocalStorageRepository, SessionStorageRepository, } from './lib/infra/repositories';
|
|
18
|
+
export { DEFAULT_KEY_PREFIX } from './lib/infra/repositories/storage/client-state-constants';
|
|
15
19
|
// Webview utilities, constants, and types
|
|
16
20
|
export * from './lib/webview';
|
|
17
21
|
//# sourceMappingURL=index.js.map
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/botonic/webchat-core/src/index.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,cAAc,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/botonic/webchat-core/src/index.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,oFAAoF;AACpF,cAAc,gBAAgB,CAAA;AAQ9B,OAAO,EACL,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,8BAA8B,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AAEtC,0CAA0C;AAC1C,cAAc,mBAAmB,CAAA;AAKjC,yBAAyB;AACzB,cAAc,qBAAqB,CAAA;AACnC,cAAc,gCAAgC,CAAA;AAE9C,+BAA+B;AAC/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAA;AAU5E,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yDAAyD,CAAA;AAE5F,0CAA0C;AAC1C,cAAc,eAAe,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { BotonicContext } from '@botonic/core';
|
|
2
|
+
import type { WebchatControllerContext } from '../machines/webchat';
|
|
3
|
+
export type WebchatAnalyticsContextSkipReason = 'missing-user' | 'missing-api-url' | 'missing-bot-interaction-id';
|
|
4
|
+
export declare function resolveWebchatAnalyticsBotInteractionId(context: WebchatControllerContext, explicitBotInteractionId?: string): string | undefined;
|
|
5
|
+
export declare function getWebchatAnalyticsContextSkipReason(context: WebchatControllerContext, botInteractionId?: string): WebchatAnalyticsContextSkipReason | undefined;
|
|
6
|
+
export declare function warnWebchatAnalyticsContextSkipped(reason: WebchatAnalyticsContextSkipReason, source: 'invokeTrackEvent' | 'message-dispatch'): void;
|
|
7
|
+
/**
|
|
8
|
+
* Builds a {@link BotonicContext} for `@botonic/plugin-hubtype-analytics` in the browser.
|
|
9
|
+
*
|
|
10
|
+
* Requires a connected user, configured Hubtype API URL, and a real `botInteractionId`
|
|
11
|
+
* (explicit, from the message, or `lastBotInteractionId` on the controller context).
|
|
12
|
+
* Browser web events use provider_id transport without a bearer token; does not invent IDs or API hosts.
|
|
13
|
+
*/
|
|
14
|
+
export declare function createWebchatAnalyticsBotonicContext(context: WebchatControllerContext, botInteractionId?: string): BotonicContext | undefined;
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { BotonicContext, BotonicContextInput, BotonicContextSecrets, BotonicContextSession, BotonicContextSettings, } from '@botonic/core';
|
|
2
|
+
import { BotonicTextData, MessageType, MessagingChannel } from '@botonic/shared';
|
|
3
|
+
const noopHubtype = {};
|
|
4
|
+
export function resolveWebchatAnalyticsBotInteractionId(context, explicitBotInteractionId) {
|
|
5
|
+
var _a;
|
|
6
|
+
const explicit = explicitBotInteractionId === null || explicitBotInteractionId === void 0 ? void 0 : explicitBotInteractionId.trim();
|
|
7
|
+
if (explicit) {
|
|
8
|
+
return explicit;
|
|
9
|
+
}
|
|
10
|
+
const fromContext = (_a = context.lastBotInteractionId) === null || _a === void 0 ? void 0 : _a.trim();
|
|
11
|
+
return fromContext || undefined;
|
|
12
|
+
}
|
|
13
|
+
export function getWebchatAnalyticsContextSkipReason(context, botInteractionId) {
|
|
14
|
+
var _a;
|
|
15
|
+
if (!((_a = context.user) === null || _a === void 0 ? void 0 : _a.id)) {
|
|
16
|
+
return 'missing-user';
|
|
17
|
+
}
|
|
18
|
+
if (!resolveHubtypeApiUrl(context)) {
|
|
19
|
+
return 'missing-api-url';
|
|
20
|
+
}
|
|
21
|
+
if (!resolveWebchatAnalyticsBotInteractionId(context, botInteractionId)) {
|
|
22
|
+
return 'missing-bot-interaction-id';
|
|
23
|
+
}
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
export function warnWebchatAnalyticsContextSkipped(reason, source) {
|
|
27
|
+
console.warn(`[webchat] Hubtype analytics skipped (${source}): ${reason}`);
|
|
28
|
+
}
|
|
29
|
+
function resolveHubtypeApiUrl(context) {
|
|
30
|
+
var _a, _b;
|
|
31
|
+
const fromConfig = (_a = context.config.apiUrl) === null || _a === void 0 ? void 0 : _a.trim();
|
|
32
|
+
if (fromConfig) {
|
|
33
|
+
return fromConfig;
|
|
34
|
+
}
|
|
35
|
+
if (typeof import.meta !== 'undefined') {
|
|
36
|
+
const envUrl = (_b = import.meta.env) === null || _b === void 0 ? void 0 : _b.VITE_HUBTYPE_API_URL;
|
|
37
|
+
if (typeof envUrl === 'string' && envUrl.trim()) {
|
|
38
|
+
return envUrl.trim();
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
function buildBotonicSession(context) {
|
|
44
|
+
var _a, _b, _c, _d;
|
|
45
|
+
const user = context.user;
|
|
46
|
+
if (!(user === null || user === void 0 ? void 0 : user.id)) {
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
49
|
+
let channelData;
|
|
50
|
+
try {
|
|
51
|
+
channelData = (_a = context.webchatService) === null || _a === void 0 ? void 0 : _a.getChannelData();
|
|
52
|
+
}
|
|
53
|
+
catch (_e) {
|
|
54
|
+
channelData = undefined;
|
|
55
|
+
}
|
|
56
|
+
const botId = (_b = channelData === null || channelData === void 0 ? void 0 : channelData.botId) === null || _b === void 0 ? void 0 : _b.trim();
|
|
57
|
+
const chatId = (_c = channelData === null || channelData === void 0 ? void 0 : channelData.chatId) === null || _c === void 0 ? void 0 : _c.trim();
|
|
58
|
+
const session = {
|
|
59
|
+
is_first_interaction: false,
|
|
60
|
+
organization: { id: botId !== null && botId !== void 0 ? botId : '', name: '' },
|
|
61
|
+
channel: {
|
|
62
|
+
provider: MessagingChannel.Webchat,
|
|
63
|
+
imp_id: chatId !== null && chatId !== void 0 ? chatId : '',
|
|
64
|
+
unformatted_phone_number: '',
|
|
65
|
+
},
|
|
66
|
+
user: {
|
|
67
|
+
id: user.id,
|
|
68
|
+
provider_id: MessagingChannel.Webchat,
|
|
69
|
+
locale: user.locale,
|
|
70
|
+
country: user.country,
|
|
71
|
+
system_locale: user.system_locale,
|
|
72
|
+
extra_data: (_d = user.extra_data) !== null && _d !== void 0 ? _d : {},
|
|
73
|
+
},
|
|
74
|
+
is_test_integration: false,
|
|
75
|
+
};
|
|
76
|
+
if (botId) {
|
|
77
|
+
session.bot = { id: botId, name: '' };
|
|
78
|
+
}
|
|
79
|
+
return session;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Builds a {@link BotonicContext} for `@botonic/plugin-hubtype-analytics` in the browser.
|
|
83
|
+
*
|
|
84
|
+
* Requires a connected user, configured Hubtype API URL, and a real `botInteractionId`
|
|
85
|
+
* (explicit, from the message, or `lastBotInteractionId` on the controller context).
|
|
86
|
+
* Browser web events use provider_id transport without a bearer token; does not invent IDs or API hosts.
|
|
87
|
+
*/
|
|
88
|
+
export function createWebchatAnalyticsBotonicContext(context, botInteractionId) {
|
|
89
|
+
const sessionData = buildBotonicSession(context);
|
|
90
|
+
if (!sessionData) {
|
|
91
|
+
return undefined;
|
|
92
|
+
}
|
|
93
|
+
const apiUrl = resolveHubtypeApiUrl(context);
|
|
94
|
+
if (!apiUrl) {
|
|
95
|
+
return undefined;
|
|
96
|
+
}
|
|
97
|
+
const resolvedBotInteractionId = resolveWebchatAnalyticsBotInteractionId(context, botInteractionId);
|
|
98
|
+
if (!resolvedBotInteractionId) {
|
|
99
|
+
return undefined;
|
|
100
|
+
}
|
|
101
|
+
return new BotonicContext(noopHubtype, {
|
|
102
|
+
input: new BotonicContextInput({
|
|
103
|
+
type: MessageType.Text,
|
|
104
|
+
data: new BotonicTextData(''),
|
|
105
|
+
bot_interaction_id: resolvedBotInteractionId,
|
|
106
|
+
}),
|
|
107
|
+
session: new BotonicContextSession(sessionData),
|
|
108
|
+
settings: new BotonicContextSettings({
|
|
109
|
+
HUBTYPE_API_URL: apiUrl,
|
|
110
|
+
}),
|
|
111
|
+
secrets: new BotonicContextSecrets({ HUBTYPE_ACCESS_TOKEN: '' }),
|
|
112
|
+
}, {}, 0, 0, 'inBetweenTyping');
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=create-webchat-analytics-botonic-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-webchat-analytics-botonic-context.js","sourceRoot":"","sources":["../../../../../../../libs/botonic/webchat-core/src/lib/analytics/create-webchat-analytics-botonic-context.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,GAEvB,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAShF,MAAM,WAAW,GAAG,EAAkC,CAAA;AAEtD,MAAM,UAAU,uCAAuC,CACrD,OAAiC,EACjC,wBAAiC;;IAEjC,MAAM,QAAQ,GAAG,wBAAwB,aAAxB,wBAAwB,uBAAxB,wBAAwB,CAAE,IAAI,EAAE,CAAA;IACjD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,MAAM,WAAW,GAAG,MAAA,OAAO,CAAC,oBAAoB,0CAAE,IAAI,EAAE,CAAA;IACxD,OAAO,WAAW,IAAI,SAAS,CAAA;AACjC,CAAC;AAED,MAAM,UAAU,oCAAoC,CAClD,OAAiC,EACjC,gBAAyB;;IAEzB,IAAI,CAAC,CAAA,MAAA,OAAO,CAAC,IAAI,0CAAE,EAAE,CAAA,EAAE,CAAC;QACtB,OAAO,cAAc,CAAA;IACvB,CAAC;IAED,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;QACnC,OAAO,iBAAiB,CAAA;IAC1B,CAAC;IAED,IAAI,CAAC,uCAAuC,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAE,CAAC;QACxE,OAAO,4BAA4B,CAAA;IACrC,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,MAAM,UAAU,kCAAkC,CAChD,MAAyC,EACzC,MAA+C;IAE/C,OAAO,CAAC,IAAI,CAAC,wCAAwC,MAAM,MAAM,MAAM,EAAE,CAAC,CAAA;AAC5E,CAAC;AAED,SAAS,oBAAoB,CAC3B,OAAiC;;IAEjC,MAAM,UAAU,GAAG,MAAA,OAAO,CAAC,MAAM,CAAC,MAAM,0CAAE,IAAI,EAAE,CAAA;IAChD,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,UAAU,CAAA;IACnB,CAAC;IAED,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,MAAA,MAAM,CAAC,IAAI,CAAC,GAAG,0CAAE,oBAAoB,CAAA;QACpD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YAChD,OAAO,MAAM,CAAC,IAAI,EAAE,CAAA;QACtB,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAS,mBAAmB,CAC1B,OAAiC;;IAEjC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;IACzB,IAAI,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,EAAE,CAAA,EAAE,CAAC;QACd,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,IAAI,WAA4D,CAAA;IAChE,IAAI,CAAC;QACH,WAAW,GAAG,MAAA,OAAO,CAAC,cAAc,0CAAE,cAAc,EAAE,CAAA;IACxD,CAAC;IAAC,WAAM,CAAC;QACP,WAAW,GAAG,SAAS,CAAA;IACzB,CAAC;IAED,MAAM,KAAK,GAAG,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,KAAK,0CAAE,IAAI,EAAE,CAAA;IACxC,MAAM,MAAM,GAAG,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,MAAM,0CAAE,IAAI,EAAE,CAAA;IAE1C,MAAM,OAAO,GAAG;QACd,oBAAoB,EAAE,KAAK;QAC3B,YAAY,EAAE,EAAE,EAAE,EAAE,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QAC3C,OAAO,EAAE;YACP,QAAQ,EAAE,gBAAgB,CAAC,OAAO;YAClC,MAAM,EAAE,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE;YACpB,wBAAwB,EAAE,EAAE;SAC7B;QACD,IAAI,EAAE;YACJ,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,WAAW,EAAE,gBAAgB,CAAC,OAAO;YACrC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,UAAU,EAAE,MAAA,IAAI,CAAC,UAAU,mCAAI,EAAE;SAClC;QACD,mBAAmB,EAAE,KAAK;KACT,CAAA;IAEnB,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAA;IACvC,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oCAAoC,CAClD,OAAiC,EACjC,gBAAyB;IAEzB,MAAM,WAAW,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAA;IAChD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAA;IAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,MAAM,wBAAwB,GAAG,uCAAuC,CACtE,OAAO,EACP,gBAAgB,CACjB,CAAA;IACD,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAC9B,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,OAAO,IAAI,cAAc,CACvB,WAAW,EACX;QACE,KAAK,EAAE,IAAI,mBAAmB,CAAC;YAC7B,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,IAAI,EAAE,IAAI,eAAe,CAAC,EAAE,CAAC;YAC7B,kBAAkB,EAAE,wBAAwB;SAC7C,CAAC;QACF,OAAO,EAAE,IAAI,qBAAqB,CAAC,WAAW,CAAC;QAC/C,QAAQ,EAAE,IAAI,sBAAsB,CAAC;YACnC,eAAe,EAAE,MAAM;SACxB,CAAC;QACF,OAAO,EAAE,IAAI,qBAAqB,CAAC,EAAE,oBAAoB,EAAE,EAAE,EAAE,CAAC;KACjE,EACD,EAAE,EACF,CAAC,EACD,CAAC,EACD,iBAAiB,CAClB,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { WebchatControllerContext } from '../machines/webchat';
|
|
2
|
+
import type { WebchatMessage } from '../messages';
|
|
3
|
+
export interface HubtypeAnalyticsMessageDedupeState {
|
|
4
|
+
processed: Set<string>;
|
|
5
|
+
inFlight: Set<string>;
|
|
6
|
+
}
|
|
7
|
+
export declare function createHubtypeAnalyticsMessageDedupeState(): HubtypeAnalyticsMessageDedupeState;
|
|
8
|
+
export declare function dispatchHubtypeAnalyticsTrackEventFromMessage(context: WebchatControllerContext, message: WebchatMessage, dedupe: HubtypeAnalyticsMessageDedupeState): Promise<boolean>;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { createWebchatAnalyticsBotonicContext, getWebchatAnalyticsContextSkipReason, warnWebchatAnalyticsContextSkipped, } from './create-webchat-analytics-botonic-context';
|
|
3
|
+
import { parseHubtypeAnalyticsTrackEventMessage } from './hubtype-analytics-track-event-message';
|
|
4
|
+
export function createHubtypeAnalyticsMessageDedupeState() {
|
|
5
|
+
return {
|
|
6
|
+
processed: new Set(),
|
|
7
|
+
inFlight: new Set(),
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
const MAX_PROCESSED_HUBTYPE_ANALYTICS_MESSAGE_IDS = 256;
|
|
11
|
+
function trimProcessedMessageIds(processed) {
|
|
12
|
+
while (processed.size > MAX_PROCESSED_HUBTYPE_ANALYTICS_MESSAGE_IDS) {
|
|
13
|
+
const oldest = processed.values().next().value;
|
|
14
|
+
if (oldest === undefined) {
|
|
15
|
+
break;
|
|
16
|
+
}
|
|
17
|
+
processed.delete(oldest);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export function dispatchHubtypeAnalyticsTrackEventFromMessage(context, message, dedupe) {
|
|
21
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
22
|
+
var _a;
|
|
23
|
+
const parsed = parseHubtypeAnalyticsTrackEventMessage(message);
|
|
24
|
+
if (!parsed) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
const handler = context.config.onTrackEvent;
|
|
28
|
+
if (!handler) {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
const dedupeKey = (_a = message.message_id) !== null && _a !== void 0 ? _a : message.id;
|
|
32
|
+
if (dedupe.processed.has(dedupeKey) || dedupe.inFlight.has(dedupeKey)) {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
const skipReason = getWebchatAnalyticsContextSkipReason(context, message.bot_interaction_id);
|
|
36
|
+
if (skipReason) {
|
|
37
|
+
warnWebchatAnalyticsContextSkipped(skipReason, 'message-dispatch');
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
const botonicContext = createWebchatAnalyticsBotonicContext(context, message.bot_interaction_id);
|
|
41
|
+
if (!botonicContext) {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
dedupe.inFlight.add(dedupeKey);
|
|
45
|
+
try {
|
|
46
|
+
yield handler(botonicContext, parsed.action, parsed.args);
|
|
47
|
+
dedupe.processed.add(dedupeKey);
|
|
48
|
+
trimProcessedMessageIds(dedupe.processed);
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
console.warn('[webchat] Hubtype analytics onTrackEvent failed', error);
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
finally {
|
|
56
|
+
dedupe.inFlight.delete(dedupeKey);
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=dispatch-hubtype-analytics-track-event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dispatch-hubtype-analytics-track-event.js","sourceRoot":"","sources":["../../../../../../../libs/botonic/webchat-core/src/lib/analytics/dispatch-hubtype-analytics-track-event.ts"],"names":[],"mappings":";AAEA,OAAO,EACL,oCAAoC,EACpC,oCAAoC,EACpC,kCAAkC,GACnC,MAAM,4CAA4C,CAAA;AACnD,OAAO,EAAE,sCAAsC,EAAE,MAAM,yCAAyC,CAAA;AAOhG,MAAM,UAAU,wCAAwC;IACtD,OAAO;QACL,SAAS,EAAE,IAAI,GAAG,EAAU;QAC5B,QAAQ,EAAE,IAAI,GAAG,EAAU;KAC5B,CAAA;AACH,CAAC;AAED,MAAM,2CAA2C,GAAG,GAAG,CAAA;AAEvD,SAAS,uBAAuB,CAAC,SAAsB;IACrD,OAAO,SAAS,CAAC,IAAI,GAAG,2CAA2C,EAAE,CAAC;QACpE,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAA;QAC9C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAK;QACP,CAAC;QACD,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAC1B,CAAC;AACH,CAAC;AAED,MAAM,UAAgB,6CAA6C,CACjE,OAAiC,EACjC,OAAuB,EACvB,MAA0C;;;QAE1C,MAAM,MAAM,GAAG,sCAAsC,CAAC,OAAO,CAAC,CAAA;QAC9D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,CAAA;QAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,SAAS,GAAG,MAAA,OAAO,CAAC,UAAU,mCAAI,OAAO,CAAC,EAAE,CAAA;QAClD,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACtE,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,UAAU,GAAG,oCAAoC,CACrD,OAAO,EACP,OAAO,CAAC,kBAAkB,CAC3B,CAAA;QACD,IAAI,UAAU,EAAE,CAAC;YACf,kCAAkC,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAA;YAClE,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,cAAc,GAAG,oCAAoC,CACzD,OAAO,EACP,OAAO,CAAC,kBAAkB,CAC3B,CAAA;QACD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAC9B,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;YACzD,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;YAC/B,uBAAuB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;YACzC,OAAO,IAAI,CAAA;QACb,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,iDAAiD,EAAE,KAAK,CAAC,CAAA;YACtE,OAAO,KAAK,CAAA;QACd,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QACnC,CAAC;IACH,CAAC;CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { WebchatMessage } from '../messages';
|
|
2
|
+
/** Custom message name for bot → webchat Hubtype analytics (web_event) dispatch. */
|
|
3
|
+
export declare const HUBTYPE_ANALYTICS_TRACK_EVENT_CUSTOM_NAME = "botonic-hubtype-analytics-track-event";
|
|
4
|
+
export interface ParsedHubtypeAnalyticsTrackEvent {
|
|
5
|
+
action: string;
|
|
6
|
+
args: Record<string, unknown>;
|
|
7
|
+
}
|
|
8
|
+
export declare function parseHubtypeAnalyticsTrackEventMessage(message: WebchatMessage): ParsedHubtypeAnalyticsTrackEvent | undefined;
|
|
9
|
+
export declare function isHubtypeAnalyticsTrackEventMessage(message: WebchatMessage): boolean;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { __rest } from "tslib";
|
|
2
|
+
import { MessageType } from '@botonic/shared';
|
|
3
|
+
/** Custom message name for bot → webchat Hubtype analytics (web_event) dispatch. */
|
|
4
|
+
export const HUBTYPE_ANALYTICS_TRACK_EVENT_CUSTOM_NAME = 'botonic-hubtype-analytics-track-event';
|
|
5
|
+
export function parseHubtypeAnalyticsTrackEventMessage(message) {
|
|
6
|
+
var _a;
|
|
7
|
+
if (message.type !== MessageType.Custom) {
|
|
8
|
+
return undefined;
|
|
9
|
+
}
|
|
10
|
+
const data = message.data;
|
|
11
|
+
if (data.name !== HUBTYPE_ANALYTICS_TRACK_EVENT_CUSTOM_NAME) {
|
|
12
|
+
return undefined;
|
|
13
|
+
}
|
|
14
|
+
const props = ((_a = data.props) !== null && _a !== void 0 ? _a : {});
|
|
15
|
+
const { action } = props, args = __rest(props, ["action"]);
|
|
16
|
+
if (typeof action !== 'string' || action.length === 0) {
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
return { action, args };
|
|
20
|
+
}
|
|
21
|
+
export function isHubtypeAnalyticsTrackEventMessage(message) {
|
|
22
|
+
return parseHubtypeAnalyticsTrackEventMessage(message) !== undefined;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=hubtype-analytics-track-event-message.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hubtype-analytics-track-event-message.js","sourceRoot":"","sources":["../../../../../../../libs/botonic/webchat-core/src/lib/analytics/hubtype-analytics-track-event-message.ts"],"names":[],"mappings":";AAAA,OAAO,EAAqB,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAIhE,oFAAoF;AACpF,MAAM,CAAC,MAAM,yCAAyC,GACpD,uCAAuC,CAAA;AAOzC,MAAM,UAAU,sCAAsC,CACpD,OAAuB;;IAEvB,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,MAAM,EAAE,CAAC;QACxC,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAyB,CAAA;IAC9C,IAAI,IAAI,CAAC,IAAI,KAAK,yCAAyC,EAAE,CAAC;QAC5D,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,MAAM,KAAK,GAAG,CAAC,MAAA,IAAI,CAAC,KAAK,mCAAI,EAAE,CAA4B,CAAA;IAC3D,MAAM,EAAE,MAAM,KAAc,KAAK,EAAd,IAAI,UAAK,KAAK,EAA3B,UAAmB,CAAQ,CAAA;IACjC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtD,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;AACzB,CAAC;AAED,MAAM,UAAU,mCAAmC,CACjD,OAAuB;IAEvB,OAAO,sCAAsC,CAAC,OAAO,CAAC,KAAK,SAAS,CAAA;AACtE,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { createWebchatAnalyticsBotonicContext, getWebchatAnalyticsContextSkipReason, resolveWebchatAnalyticsBotInteractionId, warnWebchatAnalyticsContextSkipped, type WebchatAnalyticsContextSkipReason, } from './create-webchat-analytics-botonic-context';
|
|
2
|
+
export { createHubtypeAnalyticsMessageDedupeState, dispatchHubtypeAnalyticsTrackEventFromMessage, type HubtypeAnalyticsMessageDedupeState, } from './dispatch-hubtype-analytics-track-event';
|
|
3
|
+
export { HUBTYPE_ANALYTICS_TRACK_EVENT_CUSTOM_NAME, isHubtypeAnalyticsTrackEventMessage, type ParsedHubtypeAnalyticsTrackEvent, parseHubtypeAnalyticsTrackEventMessage, } from './hubtype-analytics-track-event-message';
|
|
4
|
+
export { buildWebchatAnalyticsRequest } from './webchat-analytics-request';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { createWebchatAnalyticsBotonicContext, getWebchatAnalyticsContextSkipReason, resolveWebchatAnalyticsBotInteractionId, warnWebchatAnalyticsContextSkipped, } from './create-webchat-analytics-botonic-context';
|
|
2
|
+
export { createHubtypeAnalyticsMessageDedupeState, dispatchHubtypeAnalyticsTrackEventFromMessage, } from './dispatch-hubtype-analytics-track-event';
|
|
3
|
+
export { HUBTYPE_ANALYTICS_TRACK_EVENT_CUSTOM_NAME, isHubtypeAnalyticsTrackEventMessage, parseHubtypeAnalyticsTrackEventMessage, } from './hubtype-analytics-track-event-message';
|
|
4
|
+
export { buildWebchatAnalyticsRequest } from './webchat-analytics-request';
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/botonic/webchat-core/src/lib/analytics/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oCAAoC,EACpC,oCAAoC,EACpC,uCAAuC,EACvC,kCAAkC,GAEnC,MAAM,4CAA4C,CAAA;AACnD,OAAO,EACL,wCAAwC,EACxC,6CAA6C,GAE9C,MAAM,0CAA0C,CAAA;AACjD,OAAO,EACL,yCAAyC,EACzC,mCAAmC,EAEnC,sCAAsC,GACvC,MAAM,yCAAyC,CAAA;AAChD,OAAO,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { WebchatControllerContext } from '../machines/webchat';
|
|
2
|
+
export declare function buildWebchatAnalyticsRequest(context: WebchatControllerContext, botInteractionId?: string): {
|
|
3
|
+
input: {
|
|
4
|
+
botInteractionId?: string;
|
|
5
|
+
};
|
|
6
|
+
session: {
|
|
7
|
+
user: {
|
|
8
|
+
id?: string;
|
|
9
|
+
locale?: string;
|
|
10
|
+
country?: string;
|
|
11
|
+
systemLocale?: string;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
settings: {
|
|
15
|
+
hubtypeApiUrl?: string;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export function buildWebchatAnalyticsRequest(context, botInteractionId) {
|
|
2
|
+
var _a;
|
|
3
|
+
const user = context.user;
|
|
4
|
+
const apiUrl = context.config.apiUrl ||
|
|
5
|
+
(typeof import.meta !== 'undefined'
|
|
6
|
+
? (_a = import.meta.env) === null || _a === void 0 ? void 0 : _a.VITE_HUBTYPE_API_URL
|
|
7
|
+
: undefined);
|
|
8
|
+
return {
|
|
9
|
+
input: {
|
|
10
|
+
botInteractionId: botInteractionId !== null && botInteractionId !== void 0 ? botInteractionId : undefined,
|
|
11
|
+
},
|
|
12
|
+
session: {
|
|
13
|
+
user: {
|
|
14
|
+
id: user === null || user === void 0 ? void 0 : user.id,
|
|
15
|
+
locale: user === null || user === void 0 ? void 0 : user.locale,
|
|
16
|
+
country: user === null || user === void 0 ? void 0 : user.country,
|
|
17
|
+
systemLocale: user === null || user === void 0 ? void 0 : user.system_locale,
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
settings: {
|
|
21
|
+
hubtypeApiUrl: apiUrl,
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=webchat-analytics-request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webchat-analytics-request.js","sourceRoot":"","sources":["../../../../../../../libs/botonic/webchat-core/src/lib/analytics/webchat-analytics-request.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,4BAA4B,CAC1C,OAAiC,EACjC,gBAAyB;;IAazB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;IACzB,MAAM,MAAM,GACV,OAAO,CAAC,MAAM,CAAC,MAAM;QACrB,CAAC,OAAO,MAAM,CAAC,IAAI,KAAK,WAAW;YACjC,CAAC,CAAC,MAAA,MAAM,CAAC,IAAI,CAAC,GAAG,0CAAE,oBAAoB;YACvC,CAAC,CAAC,SAAS,CAAC,CAAA;IAEhB,OAAO;QACL,KAAK,EAAE;YACL,gBAAgB,EAAE,gBAAgB,aAAhB,gBAAgB,cAAhB,gBAAgB,GAAI,SAAS;SAChD;QACD,OAAO,EAAE;YACP,IAAI,EAAE;gBACJ,EAAE,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,EAAE;gBACZ,MAAM,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM;gBACpB,OAAO,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO;gBACtB,YAAY,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,aAAa;aAClC;SACF;QACD,QAAQ,EAAE;YACR,aAAa,EAAE,MAAM;SACtB;KACF,CAAA;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/botonic/webchat-core/src/lib/controllers/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/botonic/webchat-core/src/lib/controllers/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,oBAAoB,CAAA;AAClC,cAAc,WAAW,CAAA"}
|
|
@@ -39,7 +39,7 @@ export declare class PublicWebchatController {
|
|
|
39
39
|
* reopen) against this shared `publicWebchatController`. Without re-arming,
|
|
40
40
|
* `isFullyReady` would stay `true` (so `signalReady()` short-circuits) and `ready`
|
|
41
41
|
* would stay already-resolved — the next mount could never await readiness again.
|
|
42
|
-
* A normal
|
|
42
|
+
* A normal embedded webchat mount runs once and never calls `destroy()`, so this is inert there.
|
|
43
43
|
*/
|
|
44
44
|
private resetReadyState;
|
|
45
45
|
setController(controller: WebchatController): void;
|
|
@@ -52,6 +52,7 @@ export declare class PublicWebchatController {
|
|
|
52
52
|
private getController;
|
|
53
53
|
isReady(): boolean;
|
|
54
54
|
sendMessage: (content: WebchatMessage) => void;
|
|
55
|
+
sendPostback: (payload: string) => Promise<void>;
|
|
55
56
|
showPopup: () => void;
|
|
56
57
|
hidePopup: () => void;
|
|
57
58
|
open: () => void;
|
|
@@ -75,7 +76,7 @@ export declare class PublicWebchatController {
|
|
|
75
76
|
destroy: () => void;
|
|
76
77
|
reconnect: () => void;
|
|
77
78
|
setOnline: (online: boolean) => void;
|
|
78
|
-
getMessages: () => WebchatMessage<import("@botonic/shared").MessageType.Text | import("@botonic/shared").MessageType.Postback | import("@botonic/shared").MessageType.Audio | import("@botonic/shared").MessageType.Image | import("@botonic/shared").MessageType.Video | import("@botonic/shared").MessageType.Document | import("@botonic/shared").MessageType.Location | import("@botonic/shared").MessageType.Contact | import("@botonic/shared").MessageType.ButtonMessage | import("@botonic/shared").MessageType.Carousel | import("@botonic/shared").MessageType.Custom | import("@botonic/shared").MessageType.TypingEvent | import("@botonic/shared").MessageType.WhatsappTemplate | import("@botonic/shared").MessageType.WhatsappButtonList | import("@botonic/shared").MessageType.WhatsappCTAUrlButton | import("@botonic/shared").MessageType.WhatsappCatalog | import("@botonic/shared").MessageType.WhatsappProduct | import("@botonic/shared").MessageType.WhatsappProductList | import("@botonic/shared").MessageType.WhatsappProductCarousel | import("@botonic/shared").MessageType.WhatsappMediaCarousel | import("@botonic/shared").MessageType.WebchatClientSettings | import("@botonic/shared").MessageType.Rating | import("@botonic/shared").MessageType.SystemDebugTrace>[];
|
|
79
|
+
getMessages: () => WebchatMessage<import("@botonic/shared").MessageType.Text | import("@botonic/shared").MessageType.Postback | import("@botonic/shared").MessageType.Audio | import("@botonic/shared").MessageType.Image | import("@botonic/shared").MessageType.Video | import("@botonic/shared").MessageType.Document | import("@botonic/shared").MessageType.Location | import("@botonic/shared").MessageType.Contact | import("@botonic/shared").MessageType.ButtonMessage | import("@botonic/shared").MessageType.Carousel | import("@botonic/shared").MessageType.Custom | import("@botonic/shared").MessageType.TypingEvent | import("@botonic/shared").MessageType.WhatsappTemplate | import("@botonic/shared").MessageType.WhatsappButtonList | import("@botonic/shared").MessageType.WhatsappCTAUrlButton | import("@botonic/shared").MessageType.WhatsappCatalog | import("@botonic/shared").MessageType.WhatsappProduct | import("@botonic/shared").MessageType.WhatsappProductList | import("@botonic/shared").MessageType.WhatsappProductCarousel | import("@botonic/shared").MessageType.WhatsappMediaCarousel | import("@botonic/shared").MessageType.WebchatClientSettings | import("@botonic/shared").MessageType.Rating | import("@botonic/shared").MessageType.SystemDebugTrace | import("@botonic/shared").MessageType.RequestContactInfo>[];
|
|
79
80
|
getConnectionStatus: () => string;
|
|
80
81
|
isOnline: () => boolean;
|
|
81
82
|
isOpen: () => boolean;
|
|
@@ -290,9 +291,10 @@ export declare class PublicWebchatController {
|
|
|
290
291
|
storageRepository: import("../..").StorageRepository;
|
|
291
292
|
appId: string;
|
|
292
293
|
userId: string;
|
|
293
|
-
}, import("xstate").EventObject>> | import("xstate").ActorRefFromLogic<import("xstate").PromiseActorLogic<HubtypeUser
|
|
294
|
+
}, import("xstate").EventObject>> | import("xstate").ActorRefFromLogic<import("xstate").PromiseActorLogic<HubtypeUser, {
|
|
294
295
|
storageRepository: import("../..").StorageRepository;
|
|
295
296
|
appId: string;
|
|
297
|
+
config: import("../domain").WebchatConfig;
|
|
296
298
|
}, import("xstate").EventObject>> | import("xstate").ActorRefFromLogic<import("xstate").PromiseActorLogic<{
|
|
297
299
|
success: boolean;
|
|
298
300
|
}, {
|
|
@@ -309,8 +311,8 @@ export declare class PublicWebchatController {
|
|
|
309
311
|
}, import("xstate").EventObject>> | import("xstate").ActorRefFromLogic<import("xstate").CallbackActorLogic<import("xstate").EventObject, {
|
|
310
312
|
webchatService: import("../..").WebchatService;
|
|
311
313
|
}, import("xstate").EventObject>> | undefined;
|
|
312
|
-
}, "idle" | "
|
|
313
|
-
initializing: "initializingServices" | "loadingSession" | "loadingMessages" | "
|
|
314
|
+
}, "idle" | "reconnecting" | "connectionFailed" | "operational" | {
|
|
315
|
+
initializing: "initializingServices" | "loadingSession" | "loadingMessages" | "spawningPersistedMessages" | "connectingToRealtime";
|
|
314
316
|
}, string, import("xstate").NonReducibleUnknown, import("xstate").MetaObject, {
|
|
315
317
|
id: "webchat";
|
|
316
318
|
states: {
|
|
@@ -333,7 +335,7 @@ export declare class PublicWebchatController {
|
|
|
333
335
|
on: <T extends WebchatEmittedEvent["type"]>(eventType: T, callback: (event: Extract<WebchatEmittedEvent, {
|
|
334
336
|
type: T;
|
|
335
337
|
}>) => void) => () => void;
|
|
336
|
-
get messages(): WebchatMessage<import("@botonic/shared").MessageType.Text | import("@botonic/shared").MessageType.Postback | import("@botonic/shared").MessageType.Audio | import("@botonic/shared").MessageType.Image | import("@botonic/shared").MessageType.Video | import("@botonic/shared").MessageType.Document | import("@botonic/shared").MessageType.Location | import("@botonic/shared").MessageType.Contact | import("@botonic/shared").MessageType.ButtonMessage | import("@botonic/shared").MessageType.Carousel | import("@botonic/shared").MessageType.Custom | import("@botonic/shared").MessageType.TypingEvent | import("@botonic/shared").MessageType.WhatsappTemplate | import("@botonic/shared").MessageType.WhatsappButtonList | import("@botonic/shared").MessageType.WhatsappCTAUrlButton | import("@botonic/shared").MessageType.WhatsappCatalog | import("@botonic/shared").MessageType.WhatsappProduct | import("@botonic/shared").MessageType.WhatsappProductList | import("@botonic/shared").MessageType.WhatsappProductCarousel | import("@botonic/shared").MessageType.WhatsappMediaCarousel | import("@botonic/shared").MessageType.WebchatClientSettings | import("@botonic/shared").MessageType.Rating | import("@botonic/shared").MessageType.SystemDebugTrace>[];
|
|
338
|
+
get messages(): WebchatMessage<import("@botonic/shared").MessageType.Text | import("@botonic/shared").MessageType.Postback | import("@botonic/shared").MessageType.Audio | import("@botonic/shared").MessageType.Image | import("@botonic/shared").MessageType.Video | import("@botonic/shared").MessageType.Document | import("@botonic/shared").MessageType.Location | import("@botonic/shared").MessageType.Contact | import("@botonic/shared").MessageType.ButtonMessage | import("@botonic/shared").MessageType.Carousel | import("@botonic/shared").MessageType.Custom | import("@botonic/shared").MessageType.TypingEvent | import("@botonic/shared").MessageType.WhatsappTemplate | import("@botonic/shared").MessageType.WhatsappButtonList | import("@botonic/shared").MessageType.WhatsappCTAUrlButton | import("@botonic/shared").MessageType.WhatsappCatalog | import("@botonic/shared").MessageType.WhatsappProduct | import("@botonic/shared").MessageType.WhatsappProductList | import("@botonic/shared").MessageType.WhatsappProductCarousel | import("@botonic/shared").MessageType.WhatsappMediaCarousel | import("@botonic/shared").MessageType.WebchatClientSettings | import("@botonic/shared").MessageType.Rating | import("@botonic/shared").MessageType.SystemDebugTrace | import("@botonic/shared").MessageType.RequestContactInfo>[];
|
|
337
339
|
get user(): HubtypeUser | null;
|
|
338
340
|
get connectionStatus(): string;
|
|
339
341
|
get isOpenState(): boolean;
|
|
@@ -421,9 +423,10 @@ export declare class PublicWebchatController {
|
|
|
421
423
|
storageRepository: import("../..").StorageRepository;
|
|
422
424
|
appId: string;
|
|
423
425
|
userId: string;
|
|
424
|
-
}, import("xstate").EventObject>> | import("xstate").ActorRefFromLogic<import("xstate").PromiseActorLogic<HubtypeUser
|
|
426
|
+
}, import("xstate").EventObject>> | import("xstate").ActorRefFromLogic<import("xstate").PromiseActorLogic<HubtypeUser, {
|
|
425
427
|
storageRepository: import("../..").StorageRepository;
|
|
426
428
|
appId: string;
|
|
429
|
+
config: import("../domain").WebchatConfig;
|
|
427
430
|
}, import("xstate").EventObject>> | import("xstate").ActorRefFromLogic<import("xstate").PromiseActorLogic<{
|
|
428
431
|
success: boolean;
|
|
429
432
|
}, {
|
|
@@ -440,8 +443,8 @@ export declare class PublicWebchatController {
|
|
|
440
443
|
}, import("xstate").EventObject>> | import("xstate").ActorRefFromLogic<import("xstate").CallbackActorLogic<import("xstate").EventObject, {
|
|
441
444
|
webchatService: import("../..").WebchatService;
|
|
442
445
|
}, import("xstate").EventObject>> | undefined;
|
|
443
|
-
}, "idle" | "
|
|
444
|
-
initializing: "initializingServices" | "loadingSession" | "loadingMessages" | "
|
|
446
|
+
}, "idle" | "reconnecting" | "connectionFailed" | "operational" | {
|
|
447
|
+
initializing: "initializingServices" | "loadingSession" | "loadingMessages" | "spawningPersistedMessages" | "connectingToRealtime";
|
|
445
448
|
}, string, import("xstate").NonReducibleUnknown, import("xstate").MetaObject, {
|
|
446
449
|
id: "webchat";
|
|
447
450
|
states: {
|
|
@@ -5,6 +5,7 @@ export class PublicWebchatController {
|
|
|
5
5
|
this.isFullyReady = false;
|
|
6
6
|
this.resolveReady = null;
|
|
7
7
|
this.sendMessage = (content) => this.getController().sendMessage(content);
|
|
8
|
+
this.sendPostback = (payload) => this.getController().sendPostback(payload);
|
|
8
9
|
this.showPopup = () => {
|
|
9
10
|
if (typeof window !== 'undefined') {
|
|
10
11
|
window.dispatchEvent(new CustomEvent('botonic:popup:show'));
|
|
@@ -180,7 +181,7 @@ MACHINE ACCESS:
|
|
|
180
181
|
* reopen) against this shared `publicWebchatController`. Without re-arming,
|
|
181
182
|
* `isFullyReady` would stay `true` (so `signalReady()` short-circuits) and `ready`
|
|
182
183
|
* would stay already-resolved — the next mount could never await readiness again.
|
|
183
|
-
* A normal
|
|
184
|
+
* A normal embedded webchat mount runs once and never calls `destroy()`, so this is inert there.
|
|
184
185
|
*/
|
|
185
186
|
resetReadyState() {
|
|
186
187
|
this.controller = null;
|
|
@@ -248,7 +249,7 @@ export const publicWebchatController = new PublicWebchatController();
|
|
|
248
249
|
* REPLACES `window.botonic` with the singleton below, which would otherwise drop that
|
|
249
250
|
* `render()`. Preserving it keeps `window.botonic.render()` working after the swap — which
|
|
250
251
|
* is what lets the flow-builder preview re-call `render()` on every remount (close/reopen).
|
|
251
|
-
* For a standalone
|
|
252
|
+
* For a standalone embedded webchat, `render()` is called once before the swap, so this is harmless there.
|
|
252
253
|
*/
|
|
253
254
|
function preserveExistingRender(previousBotonic) {
|
|
254
255
|
if (typeof (previousBotonic === null || previousBotonic === void 0 ? void 0 : previousBotonic.render) === 'function' &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public.js","sourceRoot":"","sources":["../../../../../../../libs/botonic/webchat-core/src/lib/controllers/public.ts"],"names":[],"mappings":"AA8BA,MAAM,OAAO,uBAAuB;IAWlC;QAVQ,eAAU,GAA6B,IAAI,CAAA;QAC3C,kBAAa,GAAG,KAAK,CAAA;QACrB,iBAAY,GAAG,KAAK,CAAA;QACpB,iBAAY,GAAwB,IAAI,CAAA;QAmEhD,gBAAW,GAAG,CAAC,OAAuB,EAAE,EAAE,CACxC,IAAI,CAAC,aAAa,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"public.js","sourceRoot":"","sources":["../../../../../../../libs/botonic/webchat-core/src/lib/controllers/public.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { WebchatController } from './webchat';
|
|
2
|
+
/**
|
|
3
|
+
* Registers a callback for each webchat open, including when the panel is
|
|
4
|
+
* already open at registration time (e.g. after lazy load + deferred `onReady`).
|
|
5
|
+
*/
|
|
6
|
+
export declare function registerOnOpen(controller: WebchatController, callback: (controller: WebchatController) => void): () => void;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registers a callback for each webchat open, including when the panel is
|
|
3
|
+
* already open at registration time (e.g. after lazy load + deferred `onReady`).
|
|
4
|
+
*/
|
|
5
|
+
export function registerOnOpen(controller, callback) {
|
|
6
|
+
const handler = () => {
|
|
7
|
+
callback(controller);
|
|
8
|
+
};
|
|
9
|
+
const unsubscribe = controller.on('WEBCHAT_OPENED', handler);
|
|
10
|
+
if (controller.isOpen()) {
|
|
11
|
+
handler();
|
|
12
|
+
}
|
|
13
|
+
return unsubscribe;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=register-on-open.js.map
|