@modochats/widget 0.1.4 → 1.0.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/.github/workflows/build-and-publish.yml +116 -174
- package/.releaserc +60 -0
- package/CHANGELOG.md +8 -0
- package/README.md +191 -191
- package/package.json +79 -76
- package/src/app.ts +117 -117
- package/src/constants/index.ts +21 -21
- package/src/constants/regex.ts +2 -2
- package/src/constants/version.ts +2 -0
- package/src/index.ts +16 -16
- package/src/services/chat/conversation.ts +135 -135
- package/src/services/chat/message-utils.ts +221 -221
- package/src/services/chat/model.ts +139 -139
- package/src/services/chatbot/chatbot.ts +66 -66
- package/src/services/checker.ts +10 -10
- package/src/services/listeners/fn.ts +77 -77
- package/src/services/socket/utils.ts +9 -9
- package/src/services/user/customer-data.ts +78 -78
- package/src/services/voice-chat/model.ts +79 -79
- package/src/services/voice-chat/utils.ts +137 -137
- package/src/tools/fetch.ts +7 -7
- package/src/types/app.ts +17 -17
- package/src/types/conversation.ts +14 -14
- package/src/types/socket.ts +7 -7
- package/src/types/window.ts +12 -12
- package/src/utils/audio.ts +67 -67
- package/src/utils/browser.ts +4 -4
- package/src/utils/fetch.ts +98 -98
- package/src/utils/uuid.ts +13 -13
- package/dist/src/app.d.ts +0 -29
- package/dist/src/app.js +0 -1
- package/dist/src/app.js.map +0 -1
- package/dist/src/constants/index.d.ts +0 -9
- package/dist/src/constants/index.js +0 -1
- package/dist/src/constants/index.js.map +0 -1
- package/dist/src/constants/regex.d.ts +0 -2
- package/dist/src/constants/regex.js +0 -1
- package/dist/src/constants/regex.js.map +0 -1
- package/dist/src/index.d.ts +0 -9
- package/dist/src/index.js +0 -1
- package/dist/src/index.js.map +0 -1
- package/dist/src/models/chatbot.d.ts +0 -23
- package/dist/src/models/chatbot.js +0 -1
- package/dist/src/models/chatbot.js.map +0 -1
- package/dist/src/models/conversation.d.ts +0 -22
- package/dist/src/models/conversation.js +0 -1
- package/dist/src/models/conversation.js.map +0 -1
- package/dist/src/models/customer-data.d.ts +0 -31
- package/dist/src/models/customer-data.js +0 -1
- package/dist/src/models/customer-data.js.map +0 -1
- package/dist/src/models/message-utils.d.ts +0 -12
- package/dist/src/models/message-utils.js +0 -1
- package/dist/src/models/message-utils.js.map +0 -1
- package/dist/src/services/chat/conversation.d.ts +0 -22
- package/dist/src/services/chat/conversation.js +0 -1
- package/dist/src/services/chat/conversation.js.map +0 -1
- package/dist/src/services/chat/message-utils.d.ts +0 -12
- package/dist/src/services/chat/message-utils.js +0 -1
- package/dist/src/services/chat/message-utils.js.map +0 -1
- package/dist/src/services/chat/model.d.ts +0 -27
- package/dist/src/services/chat/model.js +0 -1
- package/dist/src/services/chat/model.js.map +0 -1
- package/dist/src/services/chatbot/chatbot.d.ts +0 -23
- package/dist/src/services/chatbot/chatbot.js +0 -1
- package/dist/src/services/chatbot/chatbot.js.map +0 -1
- package/dist/src/services/checker.d.ts +0 -3
- package/dist/src/services/checker.js +0 -1
- package/dist/src/services/checker.js.map +0 -1
- package/dist/src/services/listeners/adders.d.ts +0 -3
- package/dist/src/services/listeners/adders.js +0 -1
- package/dist/src/services/listeners/adders.js.map +0 -1
- package/dist/src/services/listeners/fn.d.ts +0 -3
- package/dist/src/services/listeners/fn.js +0 -1
- package/dist/src/services/listeners/fn.js.map +0 -1
- package/dist/src/services/socket/utils.d.ts +0 -2
- package/dist/src/services/socket/utils.js +0 -1
- package/dist/src/services/socket/utils.js.map +0 -1
- package/dist/src/services/ui/fn.d.ts +0 -13
- package/dist/src/services/ui/fn.js +0 -1
- package/dist/src/services/ui/fn.js.map +0 -1
- package/dist/src/services/ui/html.d.ts +0 -3
- package/dist/src/services/ui/html.js +0 -1
- package/dist/src/services/ui/html.js.map +0 -1
- package/dist/src/services/user/customer-data.d.ts +0 -31
- package/dist/src/services/user/customer-data.js +0 -1
- package/dist/src/services/user/customer-data.js.map +0 -1
- package/dist/src/services/voice-chat/model.d.ts +0 -12
- package/dist/src/services/voice-chat/model.js +0 -1
- package/dist/src/services/voice-chat/model.js.map +0 -1
- package/dist/src/services/voice-chat/utils.d.ts +0 -9
- package/dist/src/services/voice-chat/utils.js +0 -1
- package/dist/src/services/voice-chat/utils.js.map +0 -1
- package/dist/src/tools/fetch.d.ts +0 -2
- package/dist/src/tools/fetch.js +0 -1
- package/dist/src/tools/fetch.js.map +0 -1
- package/dist/src/types/app.d.ts +0 -17
- package/dist/src/types/app.js +0 -1
- package/dist/src/types/app.js.map +0 -1
- package/dist/src/types/conversation.d.ts +0 -14
- package/dist/src/types/conversation.js +0 -1
- package/dist/src/types/conversation.js.map +0 -1
- package/dist/src/types/socket.d.ts +0 -6
- package/dist/src/types/socket.js +0 -1
- package/dist/src/types/socket.js.map +0 -1
- package/dist/src/types/window.d.ts +0 -9
- package/dist/src/types/window.js +0 -1
- package/dist/src/types/window.js.map +0 -1
- package/dist/src/utils/audio.d.ts +0 -3
- package/dist/src/utils/audio.js +0 -1
- package/dist/src/utils/audio.js.map +0 -1
- package/dist/src/utils/browser.d.ts +0 -2
- package/dist/src/utils/browser.js +0 -1
- package/dist/src/utils/browser.js.map +0 -1
- package/dist/src/utils/fetch.d.ts +0 -18
- package/dist/src/utils/fetch.js +0 -1
- package/dist/src/utils/fetch.js.map +0 -1
- package/dist/src/utils/uuid.d.ts +0 -6
- package/dist/src/utils/uuid.js +0 -1
- package/dist/src/utils/uuid.js.map +0 -1
- package/dist/types/src/app.d.ts +0 -30
- package/dist/types/src/app.d.ts.map +0 -1
- package/dist/types/src/constants/index.d.ts +0 -10
- package/dist/types/src/constants/index.d.ts.map +0 -1
- package/dist/types/src/constants/regex.d.ts +0 -3
- package/dist/types/src/constants/regex.d.ts.map +0 -1
- package/dist/types/src/index.d.ts +0 -10
- package/dist/types/src/index.d.ts.map +0 -1
- package/dist/types/src/models/chatbot.d.ts +0 -24
- package/dist/types/src/models/chatbot.d.ts.map +0 -1
- package/dist/types/src/models/conversation.d.ts +0 -23
- package/dist/types/src/models/conversation.d.ts.map +0 -1
- package/dist/types/src/models/customer-data.d.ts +0 -32
- package/dist/types/src/models/customer-data.d.ts.map +0 -1
- package/dist/types/src/models/message-utils.d.ts +0 -13
- package/dist/types/src/models/message-utils.d.ts.map +0 -1
- package/dist/types/src/services/chat/conversation.d.ts +0 -23
- package/dist/types/src/services/chat/conversation.d.ts.map +0 -1
- package/dist/types/src/services/chat/message-utils.d.ts +0 -13
- package/dist/types/src/services/chat/message-utils.d.ts.map +0 -1
- package/dist/types/src/services/chat/model.d.ts +0 -28
- package/dist/types/src/services/chat/model.d.ts.map +0 -1
- package/dist/types/src/services/chatbot/chatbot.d.ts +0 -24
- package/dist/types/src/services/chatbot/chatbot.d.ts.map +0 -1
- package/dist/types/src/services/checker.d.ts +0 -4
- package/dist/types/src/services/checker.d.ts.map +0 -1
- package/dist/types/src/services/listeners/adders.d.ts +0 -4
- package/dist/types/src/services/listeners/adders.d.ts.map +0 -1
- package/dist/types/src/services/listeners/fn.d.ts +0 -4
- package/dist/types/src/services/listeners/fn.d.ts.map +0 -1
- package/dist/types/src/services/socket/utils.d.ts +0 -3
- package/dist/types/src/services/socket/utils.d.ts.map +0 -1
- package/dist/types/src/services/ui/fn.d.ts +0 -14
- package/dist/types/src/services/ui/fn.d.ts.map +0 -1
- package/dist/types/src/services/ui/html.d.ts +0 -4
- package/dist/types/src/services/ui/html.d.ts.map +0 -1
- package/dist/types/src/services/user/customer-data.d.ts +0 -32
- package/dist/types/src/services/user/customer-data.d.ts.map +0 -1
- package/dist/types/src/services/voice-chat/model.d.ts +0 -13
- package/dist/types/src/services/voice-chat/model.d.ts.map +0 -1
- package/dist/types/src/services/voice-chat/utils.d.ts +0 -10
- package/dist/types/src/services/voice-chat/utils.d.ts.map +0 -1
- package/dist/types/src/tools/fetch.d.ts +0 -3
- package/dist/types/src/tools/fetch.d.ts.map +0 -1
- package/dist/types/src/types/app.d.ts +0 -18
- package/dist/types/src/types/app.d.ts.map +0 -1
- package/dist/types/src/types/conversation.d.ts +0 -15
- package/dist/types/src/types/conversation.d.ts.map +0 -1
- package/dist/types/src/types/socket.d.ts +0 -7
- package/dist/types/src/types/socket.d.ts.map +0 -1
- package/dist/types/src/types/window.d.ts +0 -10
- package/dist/types/src/types/window.d.ts.map +0 -1
- package/dist/types/src/utils/audio.d.ts +0 -4
- package/dist/types/src/utils/audio.d.ts.map +0 -1
- package/dist/types/src/utils/browser.d.ts +0 -3
- package/dist/types/src/utils/browser.d.ts.map +0 -1
- package/dist/types/src/utils/fetch.d.ts +0 -19
- package/dist/types/src/utils/fetch.d.ts.map +0 -1
- package/dist/types/src/utils/uuid.d.ts +0 -7
- package/dist/types/src/utils/uuid.d.ts.map +0 -1
package/src/types/socket.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
interface SocketMessage {
|
|
2
|
-
type: "new_message" | "ai_response" | "conversation_status_change";
|
|
3
|
-
message: any;
|
|
4
|
-
status: string;
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
export type {SocketMessage};
|
|
1
|
+
interface SocketMessage {
|
|
2
|
+
type: "new_message" | "ai_response" | "conversation_status_change";
|
|
3
|
+
message: any;
|
|
4
|
+
status: string;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export type {SocketMessage};
|
package/src/types/window.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {Widget} from "../app.js";
|
|
2
|
-
|
|
3
|
-
declare global {
|
|
4
|
-
interface Window {
|
|
5
|
-
ModoChat: typeof Widget;
|
|
6
|
-
ModoWidget: typeof Widget;
|
|
7
|
-
getMWidget?: () => Widget;
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
// This is needed to make this file a module
|
|
12
|
-
export {};
|
|
1
|
+
import {Widget} from "../app.js";
|
|
2
|
+
|
|
3
|
+
declare global {
|
|
4
|
+
interface Window {
|
|
5
|
+
ModoChat: typeof Widget;
|
|
6
|
+
ModoWidget: typeof Widget;
|
|
7
|
+
getMWidget?: () => Widget;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
// This is needed to make this file a module
|
|
12
|
+
export {};
|
package/src/utils/audio.ts
CHANGED
|
@@ -1,67 +1,67 @@
|
|
|
1
|
-
// Cache for preloaded audio elements
|
|
2
|
-
const audioCache = new Map<string, HTMLAudioElement>();
|
|
3
|
-
|
|
4
|
-
const preloadAudio = (audioPath: string): Promise<HTMLAudioElement> => {
|
|
5
|
-
return new Promise((resolve, reject) => {
|
|
6
|
-
if (audioCache.has(audioPath)) {
|
|
7
|
-
resolve(audioCache.get(audioPath)!);
|
|
8
|
-
return;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
const audioElement = new Audio(audioPath);
|
|
12
|
-
audioElement.volume = 0.5;
|
|
13
|
-
audioElement.preload = "auto";
|
|
14
|
-
|
|
15
|
-
audioElement.addEventListener("canplaythrough", () => {
|
|
16
|
-
audioCache.set(audioPath, audioElement);
|
|
17
|
-
resolve(audioElement);
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
audioElement.addEventListener("error", error => {
|
|
21
|
-
reject(error);
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
// Start loading
|
|
25
|
-
audioElement.load();
|
|
26
|
-
});
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
const playAudio = async (audioPath: string) => {
|
|
30
|
-
try {
|
|
31
|
-
// Try to get preloaded audio or create new one
|
|
32
|
-
let audioElement = audioCache.get(audioPath);
|
|
33
|
-
|
|
34
|
-
if (!audioElement) {
|
|
35
|
-
audioElement = new Audio(audioPath);
|
|
36
|
-
audioElement.volume = 0.5;
|
|
37
|
-
audioElement.preload = "auto";
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
// Play the audio
|
|
41
|
-
await audioElement.play();
|
|
42
|
-
} catch (error) {
|
|
43
|
-
console.warn("Failed to play audio:", error);
|
|
44
|
-
// Fallback: try to play a simple beep sound using Web Audio API
|
|
45
|
-
try {
|
|
46
|
-
const audioContext = new (window.AudioContext || (window as any).webkitAudioContext)();
|
|
47
|
-
const oscillator = audioContext.createOscillator();
|
|
48
|
-
const gainNode = audioContext.createGain();
|
|
49
|
-
|
|
50
|
-
oscillator.connect(gainNode);
|
|
51
|
-
gainNode.connect(audioContext.destination);
|
|
52
|
-
|
|
53
|
-
oscillator.frequency.setValueAtTime(800, audioContext.currentTime);
|
|
54
|
-
oscillator.type = "sine";
|
|
55
|
-
|
|
56
|
-
gainNode.gain.setValueAtTime(0.3, audioContext.currentTime);
|
|
57
|
-
gainNode.gain.exponentialRampToValueAtTime(0.01, audioContext.currentTime + 0.5);
|
|
58
|
-
|
|
59
|
-
oscillator.start(audioContext.currentTime);
|
|
60
|
-
oscillator.stop(audioContext.currentTime + 0.5);
|
|
61
|
-
} catch (fallbackError) {
|
|
62
|
-
console.warn("Audio fallback also failed:", fallbackError);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
};
|
|
66
|
-
|
|
67
|
-
export {playAudio, preloadAudio};
|
|
1
|
+
// Cache for preloaded audio elements
|
|
2
|
+
const audioCache = new Map<string, HTMLAudioElement>();
|
|
3
|
+
|
|
4
|
+
const preloadAudio = (audioPath: string): Promise<HTMLAudioElement> => {
|
|
5
|
+
return new Promise((resolve, reject) => {
|
|
6
|
+
if (audioCache.has(audioPath)) {
|
|
7
|
+
resolve(audioCache.get(audioPath)!);
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const audioElement = new Audio(audioPath);
|
|
12
|
+
audioElement.volume = 0.5;
|
|
13
|
+
audioElement.preload = "auto";
|
|
14
|
+
|
|
15
|
+
audioElement.addEventListener("canplaythrough", () => {
|
|
16
|
+
audioCache.set(audioPath, audioElement);
|
|
17
|
+
resolve(audioElement);
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
audioElement.addEventListener("error", error => {
|
|
21
|
+
reject(error);
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
// Start loading
|
|
25
|
+
audioElement.load();
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const playAudio = async (audioPath: string) => {
|
|
30
|
+
try {
|
|
31
|
+
// Try to get preloaded audio or create new one
|
|
32
|
+
let audioElement = audioCache.get(audioPath);
|
|
33
|
+
|
|
34
|
+
if (!audioElement) {
|
|
35
|
+
audioElement = new Audio(audioPath);
|
|
36
|
+
audioElement.volume = 0.5;
|
|
37
|
+
audioElement.preload = "auto";
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// Play the audio
|
|
41
|
+
await audioElement.play();
|
|
42
|
+
} catch (error) {
|
|
43
|
+
console.warn("Failed to play audio:", error);
|
|
44
|
+
// Fallback: try to play a simple beep sound using Web Audio API
|
|
45
|
+
try {
|
|
46
|
+
const audioContext = new (window.AudioContext || (window as any).webkitAudioContext)();
|
|
47
|
+
const oscillator = audioContext.createOscillator();
|
|
48
|
+
const gainNode = audioContext.createGain();
|
|
49
|
+
|
|
50
|
+
oscillator.connect(gainNode);
|
|
51
|
+
gainNode.connect(audioContext.destination);
|
|
52
|
+
|
|
53
|
+
oscillator.frequency.setValueAtTime(800, audioContext.currentTime);
|
|
54
|
+
oscillator.type = "sine";
|
|
55
|
+
|
|
56
|
+
gainNode.gain.setValueAtTime(0.3, audioContext.currentTime);
|
|
57
|
+
gainNode.gain.exponentialRampToValueAtTime(0.01, audioContext.currentTime + 0.5);
|
|
58
|
+
|
|
59
|
+
oscillator.start(audioContext.currentTime);
|
|
60
|
+
oscillator.stop(audioContext.currentTime + 0.5);
|
|
61
|
+
} catch (fallbackError) {
|
|
62
|
+
console.warn("Audio fallback also failed:", fallbackError);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
export {playAudio, preloadAudio};
|
package/src/utils/browser.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
let getDocumentHead = () => {
|
|
2
|
-
return document.getElementsByTagName("HEAD")[0];
|
|
3
|
-
};
|
|
4
|
-
export {getDocumentHead};
|
|
1
|
+
let getDocumentHead = () => {
|
|
2
|
+
return document.getElementsByTagName("HEAD")[0];
|
|
3
|
+
};
|
|
4
|
+
export {getDocumentHead};
|
package/src/utils/fetch.ts
CHANGED
|
@@ -1,98 +1,98 @@
|
|
|
1
|
-
import {$fetch} from "#src/tools/fetch.js";
|
|
2
|
-
import {FetchPaginationRes} from "#src/types/app.js";
|
|
3
|
-
|
|
4
|
-
const fetchChatbot = async (publicKey: string) => {
|
|
5
|
-
return await $fetch<Record<string, any>>(`/v1/chatbot/public/${publicKey}`);
|
|
6
|
-
};
|
|
7
|
-
|
|
8
|
-
const fetchSendMessage = async (
|
|
9
|
-
chatbotId: number,
|
|
10
|
-
content: string,
|
|
11
|
-
uniqueId: string,
|
|
12
|
-
conversationUuid?: string,
|
|
13
|
-
phoneNumber?: string,
|
|
14
|
-
options?: {
|
|
15
|
-
file?: File;
|
|
16
|
-
replyTo?: number;
|
|
17
|
-
}
|
|
18
|
-
) => {
|
|
19
|
-
const formData = new FormData();
|
|
20
|
-
formData.append("chatbot_id", chatbotId.toString());
|
|
21
|
-
formData.append("content", content);
|
|
22
|
-
formData.append("message_type", "0");
|
|
23
|
-
formData.append("unique_id", uniqueId);
|
|
24
|
-
if (conversationUuid) formData.append("conversation_id", conversationUuid);
|
|
25
|
-
formData.append("url", window?.location?.href || "");
|
|
26
|
-
formData.append("title", document?.title || "");
|
|
27
|
-
if (phoneNumber && phoneNumber !== "no phone number") formData.append("phone_number", phoneNumber);
|
|
28
|
-
if (options?.file) formData.append("file", options.file);
|
|
29
|
-
if (options?.replyTo) formData.append("response_to", options.replyTo.toString());
|
|
30
|
-
|
|
31
|
-
return await $fetch("/v2/conversations/website/send-message/", {
|
|
32
|
-
method: "POST",
|
|
33
|
-
body: formData
|
|
34
|
-
});
|
|
35
|
-
};
|
|
36
|
-
const fetchGetAccessTokenForSocket = async (chatbotId: string, conversationUuid: string, uniqueId: string) => {
|
|
37
|
-
return await $fetch<{access_token: string; conversation_uuid: string; expires_in: number}>("/v2/conversations/websocket/auth/", {
|
|
38
|
-
method: "POST",
|
|
39
|
-
body: {
|
|
40
|
-
chatbot_id: chatbotId,
|
|
41
|
-
conversation_uuid: conversationUuid,
|
|
42
|
-
unique_id: uniqueId
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
};
|
|
46
|
-
const fetchConversationMessages = async (conversationUuid: string, chatbotUuid: string) => {
|
|
47
|
-
return await $fetch<Record<string, any>>(`/v2/conversations/website/conversations/${conversationUuid}/chatbot/${chatbotUuid}/messages/`);
|
|
48
|
-
};
|
|
49
|
-
const fetchUpdateUserData = async (chatbotUuid: string, uniqueId: string, userData: Record<string, any>) => {
|
|
50
|
-
return await $fetch("/v1/chatbot/customners/set-user-data", {
|
|
51
|
-
method: "POST",
|
|
52
|
-
body: {
|
|
53
|
-
chatbot_uuid: chatbotUuid,
|
|
54
|
-
unique_id: uniqueId,
|
|
55
|
-
user_data: userData
|
|
56
|
-
}
|
|
57
|
-
});
|
|
58
|
-
};
|
|
59
|
-
const fetchReadMessage = async (id: number) => {
|
|
60
|
-
return await $fetch(`/v2/conversations/messages/${id}/`, {
|
|
61
|
-
method: "POST"
|
|
62
|
-
});
|
|
63
|
-
};
|
|
64
|
-
const fetchMarkConversationAsRead = async (conversationUuid: string, uniqueId: string) => {
|
|
65
|
-
return await $fetch(`/v2/conversations/website/conversations/${conversationUuid}/messages/seen`, {
|
|
66
|
-
method: "POST",
|
|
67
|
-
body: {
|
|
68
|
-
unique_id: uniqueId
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
};
|
|
72
|
-
|
|
73
|
-
const fetchMessageFeedback = async (id: number, uniqueId: string, conversationUuid: string, liked: boolean) => {
|
|
74
|
-
return await $fetch(`/v2/conversations/website/conversations/messages/feedback`, {
|
|
75
|
-
method: "POST",
|
|
76
|
-
body: {
|
|
77
|
-
unique_id: uniqueId,
|
|
78
|
-
feedback: liked ? 1 : 0,
|
|
79
|
-
message_id: id,
|
|
80
|
-
conversation_uuid: conversationUuid
|
|
81
|
-
}
|
|
82
|
-
});
|
|
83
|
-
};
|
|
84
|
-
|
|
85
|
-
const fetchConversations = async (conversationUuid: string, uniqueId: string) => {
|
|
86
|
-
return await $fetch<FetchPaginationRes>(`/v2/conversations/website/conversations/${conversationUuid}/customer/${uniqueId}`);
|
|
87
|
-
};
|
|
88
|
-
export {
|
|
89
|
-
fetchChatbot,
|
|
90
|
-
fetchSendMessage,
|
|
91
|
-
fetchGetAccessTokenForSocket,
|
|
92
|
-
fetchConversationMessages,
|
|
93
|
-
fetchUpdateUserData,
|
|
94
|
-
fetchReadMessage,
|
|
95
|
-
fetchMarkConversationAsRead,
|
|
96
|
-
fetchMessageFeedback,
|
|
97
|
-
fetchConversations
|
|
98
|
-
};
|
|
1
|
+
import {$fetch} from "#src/tools/fetch.js";
|
|
2
|
+
import {FetchPaginationRes} from "#src/types/app.js";
|
|
3
|
+
|
|
4
|
+
const fetchChatbot = async (publicKey: string) => {
|
|
5
|
+
return await $fetch<Record<string, any>>(`/v1/chatbot/public/${publicKey}`);
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
const fetchSendMessage = async (
|
|
9
|
+
chatbotId: number,
|
|
10
|
+
content: string,
|
|
11
|
+
uniqueId: string,
|
|
12
|
+
conversationUuid?: string,
|
|
13
|
+
phoneNumber?: string,
|
|
14
|
+
options?: {
|
|
15
|
+
file?: File;
|
|
16
|
+
replyTo?: number;
|
|
17
|
+
}
|
|
18
|
+
) => {
|
|
19
|
+
const formData = new FormData();
|
|
20
|
+
formData.append("chatbot_id", chatbotId.toString());
|
|
21
|
+
formData.append("content", content);
|
|
22
|
+
formData.append("message_type", "0");
|
|
23
|
+
formData.append("unique_id", uniqueId);
|
|
24
|
+
if (conversationUuid) formData.append("conversation_id", conversationUuid);
|
|
25
|
+
formData.append("url", window?.location?.href || "");
|
|
26
|
+
formData.append("title", document?.title || "");
|
|
27
|
+
if (phoneNumber && phoneNumber !== "no phone number") formData.append("phone_number", phoneNumber);
|
|
28
|
+
if (options?.file) formData.append("file", options.file);
|
|
29
|
+
if (options?.replyTo) formData.append("response_to", options.replyTo.toString());
|
|
30
|
+
|
|
31
|
+
return await $fetch("/v2/conversations/website/send-message/", {
|
|
32
|
+
method: "POST",
|
|
33
|
+
body: formData
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
const fetchGetAccessTokenForSocket = async (chatbotId: string, conversationUuid: string, uniqueId: string) => {
|
|
37
|
+
return await $fetch<{access_token: string; conversation_uuid: string; expires_in: number}>("/v2/conversations/websocket/auth/", {
|
|
38
|
+
method: "POST",
|
|
39
|
+
body: {
|
|
40
|
+
chatbot_id: chatbotId,
|
|
41
|
+
conversation_uuid: conversationUuid,
|
|
42
|
+
unique_id: uniqueId
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
const fetchConversationMessages = async (conversationUuid: string, chatbotUuid: string) => {
|
|
47
|
+
return await $fetch<Record<string, any>>(`/v2/conversations/website/conversations/${conversationUuid}/chatbot/${chatbotUuid}/messages/`);
|
|
48
|
+
};
|
|
49
|
+
const fetchUpdateUserData = async (chatbotUuid: string, uniqueId: string, userData: Record<string, any>) => {
|
|
50
|
+
return await $fetch("/v1/chatbot/customners/set-user-data", {
|
|
51
|
+
method: "POST",
|
|
52
|
+
body: {
|
|
53
|
+
chatbot_uuid: chatbotUuid,
|
|
54
|
+
unique_id: uniqueId,
|
|
55
|
+
user_data: userData
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
};
|
|
59
|
+
const fetchReadMessage = async (id: number) => {
|
|
60
|
+
return await $fetch(`/v2/conversations/messages/${id}/`, {
|
|
61
|
+
method: "POST"
|
|
62
|
+
});
|
|
63
|
+
};
|
|
64
|
+
const fetchMarkConversationAsRead = async (conversationUuid: string, uniqueId: string) => {
|
|
65
|
+
return await $fetch(`/v2/conversations/website/conversations/${conversationUuid}/messages/seen`, {
|
|
66
|
+
method: "POST",
|
|
67
|
+
body: {
|
|
68
|
+
unique_id: uniqueId
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
const fetchMessageFeedback = async (id: number, uniqueId: string, conversationUuid: string, liked: boolean) => {
|
|
74
|
+
return await $fetch(`/v2/conversations/website/conversations/messages/feedback`, {
|
|
75
|
+
method: "POST",
|
|
76
|
+
body: {
|
|
77
|
+
unique_id: uniqueId,
|
|
78
|
+
feedback: liked ? 1 : 0,
|
|
79
|
+
message_id: id,
|
|
80
|
+
conversation_uuid: conversationUuid
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
const fetchConversations = async (conversationUuid: string, uniqueId: string) => {
|
|
86
|
+
return await $fetch<FetchPaginationRes>(`/v2/conversations/website/conversations/${conversationUuid}/customer/${uniqueId}`);
|
|
87
|
+
};
|
|
88
|
+
export {
|
|
89
|
+
fetchChatbot,
|
|
90
|
+
fetchSendMessage,
|
|
91
|
+
fetchGetAccessTokenForSocket,
|
|
92
|
+
fetchConversationMessages,
|
|
93
|
+
fetchUpdateUserData,
|
|
94
|
+
fetchReadMessage,
|
|
95
|
+
fetchMarkConversationAsRead,
|
|
96
|
+
fetchMessageFeedback,
|
|
97
|
+
fetchConversations
|
|
98
|
+
};
|
package/src/utils/uuid.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generates a random UUID v4
|
|
3
|
-
* @returns A random UUID string
|
|
4
|
-
*/
|
|
5
|
-
const generateUUID = (): string => {
|
|
6
|
-
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function (c) {
|
|
7
|
-
const r = (Math.random() * 16) | 0;
|
|
8
|
-
const v = c === "x" ? r : (r & 0x3) | 0x8;
|
|
9
|
-
return v.toString(16);
|
|
10
|
-
});
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
export {generateUUID};
|
|
1
|
+
/**
|
|
2
|
+
* Generates a random UUID v4
|
|
3
|
+
* @returns A random UUID string
|
|
4
|
+
*/
|
|
5
|
+
const generateUUID = (): string => {
|
|
6
|
+
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function (c) {
|
|
7
|
+
const r = (Math.random() * 16) | 0;
|
|
8
|
+
const v = c === "x" ? r : (r & 0x3) | 0x8;
|
|
9
|
+
return v.toString(16);
|
|
10
|
+
});
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export {generateUUID};
|
package/dist/src/app.d.ts
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { WidgetOptions } from "./types/app.js";
|
|
2
|
-
import { Chatbot } from "./services/chatbot/chatbot.js";
|
|
3
|
-
import { CustomerData } from "./services/user/customer-data.js";
|
|
4
|
-
import { VoiceChat } from "./services/voice-chat/model.js";
|
|
5
|
-
import { Chat } from "./services/chat/model.js";
|
|
6
|
-
declare class Widget {
|
|
7
|
-
container?: HTMLDivElement;
|
|
8
|
-
publicKey: string;
|
|
9
|
-
chatbot?: Chatbot;
|
|
10
|
-
customerData: CustomerData;
|
|
11
|
-
chat: Chat;
|
|
12
|
-
options: Partial<WidgetOptions>;
|
|
13
|
-
openedCount: number;
|
|
14
|
-
version: string;
|
|
15
|
-
isInitialized: boolean;
|
|
16
|
-
isOpen: boolean;
|
|
17
|
-
voiceChat?: VoiceChat;
|
|
18
|
-
constructor(publicKey: string, options?: Partial<WidgetOptions>);
|
|
19
|
-
init(): Promise<void>;
|
|
20
|
-
onOpen(): Promise<void>;
|
|
21
|
-
onClose(): void;
|
|
22
|
-
/**
|
|
23
|
-
* Update user data with new values
|
|
24
|
-
* @param newUserData - Object containing new user data to merge
|
|
25
|
-
*/
|
|
26
|
-
updateUserData(newUserData: Record<string, any>): Promise<void>;
|
|
27
|
-
get conversation(): import("../dist/src/models/conversation.js").Conversation;
|
|
28
|
-
}
|
|
29
|
-
export type { Widget };
|
package/dist/src/app.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Chatbot}from"./services/chatbot/chatbot.js";import{fetchChatbot}from"./utils/fetch.js";import{checkIfHostIsAllowed}from"./services/checker.js";import{createChatContainer}from"./services/ui/html.js";import{CustomerData}from"./services/user/customer-data.js";import{loadStarters,updateChatToggleImage,updateChatTitle,applyModoOptions,loadCss}from"./services/ui/fn.js";import{VERSION}from"./constants/index.js";import{VoiceChat}from"./services/voice-chat/model.js";import{Chat}from"./services/chat/model.js";class Widget{container;publicKey;chatbot;customerData;chat;options={};openedCount=0;version;isInitialized=!1;isOpen=!1;voiceChat;constructor(t,o){this.publicKey=t,this.customerData=new CustomerData(this,o?.userData),this.chat=new Chat,this.version=VERSION,this.options={position:o?.position||"right",theme:o?.theme,primaryColor:o?.primaryColor,title:o?.title||"",userData:o?.userData,foregroundColor:o?.foregroundColor,fullScreen:"boolean"==typeof o?.fullScreen&&o?.fullScreen},o?.autoInit&&this.init()}async init(){if(this.isInitialized)throw new Error("Widget already initialized");const t=await fetchChatbot(this.publicKey);if(this.chatbot=new Chatbot(t),this.options={...this.options,theme:this.options?.theme||this.chatbot?.uiConfig?.theme||"dark",primaryColor:this.options?.primaryColor||this.chatbot?.uiConfig?.primaryColor||"#667eea",foregroundColor:this.options?.foregroundColor||this.chatbot?.uiConfig?.foregroundColor||"#fff"},!checkIfHostIsAllowed(this))throw new Error("host not allowed");if(await loadCss(),window.getMWidget=()=>this,createChatContainer(this),applyModoOptions(),loadStarters(),updateChatToggleImage(),updateChatTitle(),this.isInitialized=!0,this.chatbot.showTooltip(),this.options.fullScreen){const t=this.container?.querySelector(".mw-chat-body");t&&(t.classList.remove("mw-hidden"),t.classList.add("mw-active"));try{this.chat.initInstance()}finally{this.onOpen()}}else this.chat.initInstance()}async onOpen(){this.isOpen=!0,this.openedCount++,this.conversation?.hideTooltip(),this.chatbot?.hideTooltip(),this.conversation?.markAsRead(),this.conversation?.scrollToBottom(),1===this.openedCount&&(this.chat.conversationD&&(await(this.conversation?.loadMessages()),await(this.chat?.socket?.connect())),this.chatbot?.voiceChat&&(this.voiceChat=new VoiceChat),await this.customerData.fetchUpdate())}onClose(){this.isOpen=!1}async updateUserData(t){await this.customerData.updateUserData(t)}get conversation(){return this.chat.conversation}}window.ModoChat=Widget,window.ModoWidget=Widget;
|
package/dist/src/app.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/app.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
declare const getEnvironment: () => any;
|
|
2
|
-
declare const isDev: boolean;
|
|
3
|
-
declare const isProd: boolean;
|
|
4
|
-
declare const BASE_API_URL: string;
|
|
5
|
-
declare const BASE_WEBSOCKET_URL: string;
|
|
6
|
-
declare const VERSION = "0.51";
|
|
7
|
-
declare const BASE_STORAGE_URL = "https://modochats.s3.ir-thr-at1.arvanstorage.ir";
|
|
8
|
-
declare const NEW_MESSAGE_AUDIO_URL = "https://modochats.s3.ir-thr-at1.arvanstorage.ir/new-message.mp3";
|
|
9
|
-
export { BASE_API_URL, BASE_WEBSOCKET_URL, VERSION, isDev, isProd, getEnvironment, NEW_MESSAGE_AUDIO_URL, BASE_STORAGE_URL };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const getEnvironment=()=>"undefined"!=typeof window&&window.ENVIRONMENT?window.ENVIRONMENT:"undefined"!=typeof process&&process.env?.NODE_ENV?process.env.NODE_ENV.toUpperCase():"PROD",isDev="DEV"===getEnvironment(),isProd="PROD"===getEnvironment(),BASE_API_URL=isDev?"https://dev-api.modochats.com":"https://api.modochats.com",BASE_WEBSOCKET_URL=isDev?"wss://dev-api.modochats.com/ws":"wss://api.modochats.com/ws",VERSION="0.51",BASE_STORAGE_URL="https://modochats.s3.ir-thr-at1.arvanstorage.ir",NEW_MESSAGE_AUDIO_URL=`${BASE_STORAGE_URL}/new-message.mp3`;export{BASE_API_URL,BASE_WEBSOCKET_URL,VERSION,isDev,isProd,getEnvironment,NEW_MESSAGE_AUDIO_URL,BASE_STORAGE_URL};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/constants/index.ts"],"names":[],"mappings":"AAAA,MAAM,cAAc,GAAG,GAAG,EAAE;IAC1B,oCAAoC;IACpC,IAAI,OAAO,MAAM,KAAK,WAAW,IAAK,MAAc,CAAC,WAAW,EAAE,CAAC;QACjE,OAAQ,MAAc,CAAC,WAAW,CAAC;IACrC,CAAC;IAED,sCAAsC;IACtC,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC;QAC5D,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;IAC5C,CAAC;IAED,OAAO,MAAM,CAAC,CAAC,wBAAwB;AACzC,CAAC,CAAC;AACF,MAAM,KAAK,GAAG,cAAc,EAAE,KAAK,KAAK,CAAC;AACzC,MAAM,MAAM,GAAG,cAAc,EAAE,KAAK,MAAM,CAAC;AAC3C,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,2BAA2B,CAAC;AAC3F,MAAM,kBAAkB,GAAG,KAAK,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,4BAA4B,CAAC;AACnG,MAAM,OAAO,GAAG,MAAM,CAAC;AACvB,MAAM,gBAAgB,GAAG,iDAAiD,CAAC;AAC3E,MAAM,qBAAqB,GAAG,GAAG,gBAAgB,kBAAkB,CAAC;AACpE,OAAO,EAAC,YAAY,EAAE,kBAAkB,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,qBAAqB,EAAE,gBAAgB,EAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const PhoneNumberRegex=/^(\+98|0)?9\d{9}$/;export{PhoneNumberRegex};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"regex.js","sourceRoot":"","sources":["../../../src/constants/regex.ts"],"names":[],"mappings":"AAAA,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AAC7C,OAAO,EAAC,gBAAgB,EAAC,CAAC"}
|
package/dist/src/index.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export { Widget } from "./app.js";
|
|
2
|
-
export type { WidgetOptions, FetchPaginationRes } from "./types/app.js";
|
|
3
|
-
export { Chatbot } from "./services/chatbot/chatbot.js";
|
|
4
|
-
export { Conversation } from "./services/chat/conversation.js";
|
|
5
|
-
export { CustomerData } from "./services/user/customer-data.js";
|
|
6
|
-
export { VoiceChat } from "./services/voice-chat/model.js";
|
|
7
|
-
export { Chat } from "./services/chat/model.js";
|
|
8
|
-
export type { ConversationStatus, MessageType } from "./types/conversation.js";
|
|
9
|
-
export type { SocketMessage } from "./types/socket.js";
|
package/dist/src/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export{Chatbot}from"./services/chatbot/chatbot.js";export{Conversation}from"./services/chat/conversation.js";export{CustomerData}from"./services/user/customer-data.js";export{VoiceChat}from"./services/voice-chat/model.js";export{Chat}from"./services/chat/model.js";
|
package/dist/src/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAIA,SAAS;AACT,OAAO,EAAC,OAAO,EAAC,MAAM,+BAA+B,CAAC;AACtD,OAAO,EAAC,YAAY,EAAC,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAC,YAAY,EAAC,MAAM,kCAAkC,CAAC;AAE9D,WAAW;AACX,OAAO,EAAC,SAAS,EAAC,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAC,IAAI,EAAC,MAAM,0BAA0B,CAAC"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
declare class Chatbot {
|
|
2
|
-
name: string;
|
|
3
|
-
image: string;
|
|
4
|
-
shortDescription: string;
|
|
5
|
-
starters: string[];
|
|
6
|
-
voiceChat: boolean;
|
|
7
|
-
createdAt: string;
|
|
8
|
-
updatedAt: string;
|
|
9
|
-
deletedAt: string | null;
|
|
10
|
-
uuid: string;
|
|
11
|
-
allowedHosts: string[];
|
|
12
|
-
id: number;
|
|
13
|
-
greetingMessage?: string;
|
|
14
|
-
uiConfig: {
|
|
15
|
-
primaryColor: string;
|
|
16
|
-
foregroundColor: string;
|
|
17
|
-
theme: "dark" | "light";
|
|
18
|
-
};
|
|
19
|
-
constructor(data: Record<string, any>);
|
|
20
|
-
showTooltip(): void;
|
|
21
|
-
hideTooltip(): void;
|
|
22
|
-
}
|
|
23
|
-
export { Chatbot };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
class Chatbot{name;image;shortDescription;starters=[];voiceChat;createdAt;updatedAt;deletedAt;uuid;allowedHosts=[];id;greetingMessage;uiConfig;constructor(t){this.name=t.name,this.image=t.image,this.shortDescription=t.short_description,this.starters=t.starters,this.voiceChat=t.voice_agent,this.createdAt=t.setting.created_at,this.updatedAt=t.setting.updated_at,this.deletedAt=t.setting.deleted_at,this.uuid=t.setting.unique_id,this.allowedHosts=t.setting.allow_hosts?.split(",")??[],this.id=t.setting.chatbot,this.allowedHosts.push("modochats.com"),this.uiConfig={primaryColor:t.primary_color,foregroundColor:t.foreground_color,theme:t.theme},this.greetingMessage=t.greeting_message}showTooltip(){const t=window.getMWidget?.(),e=t?.container?.querySelector(".mw-toggle-tooltip"),s=t?.container?.querySelector(".mw-toggle-tooltip-text"),i="true"===localStorage.getItem(`modochats:${t?.publicKey}-has-seen-greeting-message`);e&&s&&this.greetingMessage&&!i&&(e.classList.remove("mw-hidden"),s.textContent=this.greetingMessage)}hideTooltip(){const t=window.getMWidget?.(),e=t?.container?.querySelector(".mw-toggle-tooltip");e&&e.classList.add("mw-hidden")}}export{Chatbot};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chatbot.js","sourceRoot":"","sources":["../../../src/models/chatbot.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO;IACX,IAAI,CAAS;IACb,KAAK,CAAS;IACd,gBAAgB,CAAS;IACzB,QAAQ,GAAa,EAAE,CAAC;IACxB,SAAS,CAAU;IACnB,SAAS,CAAS;IAClB,SAAS,CAAS;IAClB,SAAS,CAAgB;IACzB,IAAI,CAAS;IACb,YAAY,GAAa,EAAE,CAAC;IAC5B,EAAE,CAAS;IACX,eAAe,CAAU;IACzB,QAAQ,CAIN;IACF,YAAY,IAAyB;QACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAC/C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;QACzC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;QACzC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAC/D,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ,GAAG;YACd,YAAY,EAAE,IAAI,CAAC,aAAa;YAChC,eAAe,EAAE,IAAI,CAAC,gBAAgB;YACtC,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;QACF,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC;IAC/C,CAAC;IACD,WAAW;QACT,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,MAAM,EAAE,SAAS,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAC;QACvE,MAAM,WAAW,GAAG,MAAM,EAAE,SAAS,EAAE,aAAa,CAAC,yBAAyB,CAAC,CAAC;QAChF,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,aAAa,MAAM,EAAE,SAAS,4BAA4B,CAAC,KAAK,MAAM,CAAC;QAE5G,IAAI,OAAO,IAAI,WAAW,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,OAAO,EAAE,CAAC;YAC/D,mBAAmB;YACnB,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAEtC,4CAA4C;YAC5C,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC;YAE/C,4BAA4B;YAC5B,qBAAqB;YACrB,wCAAwC;YACxC,YAAY;QACd,CAAC;IACH,CAAC;IACD,WAAW;QACT,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,MAAM,EAAE,SAAS,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAC;QACvE,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;CACF;AACD,OAAO,EAAC,OAAO,EAAC,CAAC"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { ConversationMessage } from "@modochats/chat-client";
|
|
2
|
-
declare class Conversation {
|
|
3
|
-
constructor();
|
|
4
|
-
get d(): import("@modochats/chat-client").Conversation | undefined;
|
|
5
|
-
addMessage(message: ConversationMessage, options?: {
|
|
6
|
-
incoming: boolean;
|
|
7
|
-
}): void;
|
|
8
|
-
clearContainerEl(): void;
|
|
9
|
-
addSystemMessage(message: string): void;
|
|
10
|
-
scrollToBottom(): void;
|
|
11
|
-
clear(): void;
|
|
12
|
-
onInit(): void;
|
|
13
|
-
setStatus(): void;
|
|
14
|
-
loadMessages(): Promise<void>;
|
|
15
|
-
addBadge(): void;
|
|
16
|
-
get unreadCount(): number;
|
|
17
|
-
hideBadge(): void;
|
|
18
|
-
hideTooltip(): void;
|
|
19
|
-
markAsRead(): Promise<void>;
|
|
20
|
-
get containerElement(): HTMLDivElement | null;
|
|
21
|
-
}
|
|
22
|
-
export { Conversation };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{NEW_MESSAGE_AUDIO_URL}from"#src/constants/index.js";import{setConversationType,switchToConversationLayout,switchToStarterLayout}from"#src/services/ui/fn.js";import{playAudio,preloadAudio}from"#src/utils/audio.js";import{initMessageElement,showMessageTooltip}from"./message-utils.js";class Conversation{constructor(){}get d(){return window.getMWidget?.().chat?.conversationD}addMessage(e,t){const s=window.getMWidget?.();initMessageElement(e),t?.incoming&&(s?.isOpen?this.markAsRead():(this.addBadge(),showMessageTooltip(e),playAudio(NEW_MESSAGE_AUDIO_URL).catch(console.warn))),this.scrollToBottom()}clearContainerEl(){const e=document.querySelector(".mw-chat-messages-con");e&&(e.innerHTML="")}addSystemMessage(e){const t=document.querySelector(".mw-chat-messages-con");if(t){const s=document.createElement("div");s.className="mw-system-message",s.innerHTML=`\n <div class="mw-system-message-content">\n ${e}\n </div>\n `,t.appendChild(s),this.scrollToBottom()}}scrollToBottom(){const e=document.querySelector(".mw-chat-messages-con");e&&(e.scrollTop=e.scrollHeight)}clear(){this.d?.clear(),this.d.messages=[];const e=window.getMWidget?.();localStorage.removeItem(`modo-chat:${e?.publicKey}-conversation-uuid`),this.clearContainerEl(),switchToStarterLayout()}onInit(){switchToConversationLayout(),preloadAudio("./audio/new-message.mp3").catch(console.warn),this?.d?.status&&setConversationType(this.d?.status)}setStatus(){setConversationType(this.d?.status)}async loadMessages(){const e=window.getMWidget?.(),t=await(this.d?.loadMessages()),s=e?.container?.querySelector(".mw-chat-messages-con");s&&(s.innerHTML="");for(const e of t||[])this.addMessage(e)}addBadge(){const e=window.getMWidget?.();if(!e?.isOpen&&this.unreadCount>0&&e){const t=e.container?.querySelector(".mw-badge"),s=e.container?.querySelector(".mw-badge-text");if(t&&s){t.classList.remove("mw-hidden");const e=this.unreadCount>99?"99+":this.unreadCount.toString();s.textContent=e,this.unreadCount>99?t.classList.add("mw-badge-plus"):t.classList.remove("mw-badge-plus")}}}get unreadCount(){return this.d?.unreadCount||0}hideBadge(){const e=window.getMWidget?.(),t=e?.container?.querySelector(".mw-badge");t&&t.classList.add("mw-hidden")}hideTooltip(){const e=window.getMWidget?.(),t=e?.container?.querySelector(".mw-toggle-tooltip");t&&t.classList.add("mw-hidden")}async markAsRead(){window.getMWidget?.(),await(this.d?.markAsRead()),this.hideBadge()}get containerElement(){return document.querySelector(".mw-chat-messages-con")}}export{Conversation};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"conversation.js","sourceRoot":"","sources":["../../../src/models/conversation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,qBAAqB,EAAC,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAC,mBAAmB,EAAE,0BAA0B,EAAE,qBAAqB,EAAC,MAAM,wBAAwB,CAAC;AAC9G,OAAO,EAAC,SAAS,EAAE,YAAY,EAAC,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAC,kBAAkB,EAAE,kBAAkB,EAAC,MAAM,oBAAoB,CAAC;AAG1E,MAAM,YAAY;IAChB,gBAAe,CAAC;IAChB,WAAW;IACX,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,EAAE,aAAa,CAAC;IACnD,CAAC;IACD,UAAU,CAAC,OAA4B,EAAE,OAA6B;QACpE,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;QACrC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC5B,IAAI,OAAO,EAAE,QAAQ,EAAE,CAAC;YACtB,IAAI,MAAM,EAAE,MAAM;gBAAE,IAAI,CAAC,UAAU,EAAE,CAAC;iBACjC,CAAC;gBACJ,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChB,kBAAkB,CAAC,OAAO,CAAC,CAAC;gBAC5B,SAAS,CAAC,qBAAqB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QACD,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IACD,gBAAgB;QACd,MAAM,qBAAqB,GAAG,QAAQ,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC;QAC9E,IAAI,qBAAqB,EAAE,CAAC;YAC1B,qBAAqB,CAAC,SAAS,GAAG,EAAE,CAAC;QACvC,CAAC;IACH,CAAC;IACD,gBAAgB,CAAC,OAAe;QAC9B,MAAM,qBAAqB,GAAG,QAAQ,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC;QAC9E,IAAI,qBAAqB,EAAE,CAAC;YAC1B,MAAM,oBAAoB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC3D,oBAAoB,CAAC,SAAS,GAAG,mBAAmB,CAAC;YACrD,oBAAoB,CAAC,SAAS,GAAG;;YAE3B,OAAO;;OAEZ,CAAC;YACF,qBAAqB,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;YACxD,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;IAED,cAAc;QACZ,MAAM,qBAAqB,GAAG,QAAQ,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC;QAC9E,IAAI,qBAAqB,EAAE,CAAC;YAC1B,qBAAqB,CAAC,SAAS,GAAG,qBAAqB,CAAC,YAAY,CAAC;QACvE,CAAC;IACH,CAAC;IAED,KAAK;QACH,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;QAChB,IAAI,CAAC,CAAE,CAAC,QAAQ,GAAG,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;QACrC,YAAY,CAAC,UAAU,CAAC,aAAa,MAAM,EAAE,SAAS,oBAAoB,CAAC,CAAC;QAC5E,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,qBAAqB,EAAE,CAAC;IAC1B,CAAC;IAED,MAAM;QACJ,0BAA0B,EAAE,CAAC;QAC7B,YAAY,CAAC,yBAAyB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5D,IAAI,IAAI,EAAE,CAAC,EAAE,MAAM;YAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC,EAAE,MAAO,CAAC,CAAC;IAC5D,CAAC;IAED,SAAS;QACP,mBAAmB,CAAC,IAAI,CAAC,CAAC,EAAE,MAAO,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC;QAC9C,MAAM,qBAAqB,GAAG,MAAM,EAAE,SAAS,EAAE,aAAa,CAAC,uBAAuB,CAAC,CAAC;QACxF,IAAI,qBAAqB;YAAE,qBAAqB,CAAC,SAAS,GAAG,EAAE,CAAC;QAChE,KAAK,MAAM,OAAO,IAAI,QAAQ,IAAI,EAAE;YAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACjE,CAAC;IAED,QAAQ;QACN,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;QACrC,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,MAAM,EAAE,CAAC;YACtD,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;YAC3D,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;YAEpE,IAAI,KAAK,IAAI,SAAS,EAAE,CAAC;gBACvB,iBAAiB;gBACjB,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBAEpC,oBAAoB;gBACpB,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;gBACjF,SAAS,CAAC,WAAW,GAAG,YAAY,CAAC;gBAErC,gCAAgC;gBAChC,IAAI,IAAI,CAAC,WAAW,GAAG,EAAE,EAAE,CAAC;oBAC1B,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;gBACvC,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;gBAC1C,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,CAAC,EAAE,WAAW,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,SAAS;QACP,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,MAAM,EAAE,SAAS,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;QAC5D,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,WAAW;QACT,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,MAAM,EAAE,SAAS,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAC;QACvE,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;QACrC,MAAM,IAAI,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC;QAC3B,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAED,IAAI,gBAAgB;QAClB,OAAO,QAAQ,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC;IACzD,CAAC;CACF;AACD,OAAO,EAAC,YAAY,EAAC,CAAC"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { Widget } from "#src/app.js";
|
|
2
|
-
declare class CustomerData {
|
|
3
|
-
private _uniqueId?;
|
|
4
|
-
private _userData?;
|
|
5
|
-
private widget;
|
|
6
|
-
phoneNumber?: string;
|
|
7
|
-
constructor(widget: Widget, userData?: Record<string, any>);
|
|
8
|
-
initializePhoneNumber(): void;
|
|
9
|
-
/**
|
|
10
|
-
* Initialize unique ID from localStorage or generate a new one
|
|
11
|
-
* Unique ID is independent of user key/data and is generated by ourselves
|
|
12
|
-
*/
|
|
13
|
-
private initializeUniqueId;
|
|
14
|
-
/**
|
|
15
|
-
* Get the current unique ID
|
|
16
|
-
*/
|
|
17
|
-
get uniqueId(): string;
|
|
18
|
-
/**
|
|
19
|
-
* Get the current user data
|
|
20
|
-
*/
|
|
21
|
-
get userData(): Record<string, any>;
|
|
22
|
-
/**
|
|
23
|
-
* Update user data with new values
|
|
24
|
-
* @param newUserData - Object containing new user data to merge
|
|
25
|
-
*/
|
|
26
|
-
updateUserData(newUserData?: Record<string, any>): Promise<void>;
|
|
27
|
-
hasSubmittedPhoneForm(): boolean;
|
|
28
|
-
savePhoneNumber(phoneNumber?: string): void;
|
|
29
|
-
fetchUpdate(): Promise<void>;
|
|
30
|
-
}
|
|
31
|
-
export { CustomerData };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{fetchUpdateUserData}from"#src/utils/fetch.js";import{generateUUID}from"#src/utils/uuid.js";class CustomerData{_uniqueId;_userData;widget;phoneNumber;constructor(e,t){this.widget=e,this.initializeUniqueId(),this.updateUserData(t),this.initializePhoneNumber()}initializePhoneNumber(){const e=localStorage.getItem(`modo-chat:${this.widget.publicKey}-user-phone-number`);e&&(this.phoneNumber=e)}initializeUniqueId(){const e=localStorage.getItem(`modo-chat:${this.widget.publicKey}-user-unique-id`);e?this._uniqueId=e:(this._uniqueId=crypto.randomUUID?crypto.randomUUID():generateUUID(),localStorage.setItem(`modo-chat:${this.widget.publicKey}-user-unique-id`,this._uniqueId))}get uniqueId(){return this._uniqueId}get userData(){return this._userData||{}}async updateUserData(e){e&&"object"==typeof e?this._userData=e:e&&console.warn("Invalid user data")}hasSubmittedPhoneForm(){return Boolean(this.phoneNumber)}savePhoneNumber(e){this.phoneNumber=e||"no phone number",localStorage.setItem(`modo-chat:${this.widget.publicKey}-user-phone-number`,e||"no phone number")}async fetchUpdate(){await fetchUpdateUserData(this.widget.chatbot?.uuid,this.uniqueId,this.userData)}}export{CustomerData};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"customer-data.js","sourceRoot":"","sources":["../../../src/models/customer-data.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,mBAAmB,EAAC,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAEhD,MAAM,YAAY;IACR,SAAS,CAAU;IACnB,SAAS,CAAuB;IAChC,MAAM,CAAS;IACvB,WAAW,CAAU;IAErB,YAAY,MAAc,EAAE,QAA8B;QACxD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC9B,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAED,qBAAqB;QACnB,MAAM,gBAAgB,GAAG,YAAY,CAAC,OAAO,CAAC,aAAa,IAAI,CAAC,MAAM,CAAC,SAAS,oBAAoB,CAAC,CAAC;QACtG,IAAI,gBAAgB,EAAE,CAAC;YACrB,IAAI,CAAC,WAAW,GAAG,gBAAgB,CAAC;QACtC,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,kBAAkB;QACxB,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,aAAa,IAAI,CAAC,MAAM,CAAC,SAAS,iBAAiB,CAAC,CAAC;QAEhG,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,mDAAmD;YACnD,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC;YAC1E,YAAY,CAAC,OAAO,CAAC,aAAa,IAAI,CAAC,MAAM,CAAC,SAAS,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAU,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,cAAc,CAAC,WAAiC;QACpD,IAAI,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;YACnD,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC;QAC/B,CAAC;aAAM,IAAI,WAAW;YAAE,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC5D,CAAC;IAED,qBAAqB;QACnB,OAAO,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACnC,CAAC;IAED,eAAe,CAAC,WAAoB;QAClC,IAAI,CAAC,WAAW,GAAG,WAAW,IAAI,iBAAiB,CAAC;QACpD,YAAY,CAAC,OAAO,CAAC,aAAa,IAAI,CAAC,MAAM,CAAC,SAAS,oBAAoB,EAAE,WAAW,IAAI,iBAAiB,CAAC,CAAC;IACjH,CAAC;IAED,KAAK,CAAC,WAAW;QACf,MAAM,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAc,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/F,CAAC;CACF;AACD,OAAO,EAAC,YAAY,EAAC,CAAC"}
|