-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
87 lines (68 loc) · 2.72 KB
/
Copy pathscript.js
File metadata and controls
87 lines (68 loc) · 2.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
const chatMessages = document.getElementById('chatMessages');
const messageInput = document.getElementById('messageInput');
const sendButton = document.getElementById('sendButton');
const webhookURL = 'https://plantz.app.n8n.cloud/webhook/e1bda095-f5e5-4ebc-aeba-544917d39bec/chat';
let chatSessionId = generateSessionId(); // Generate a session ID
let isFirstMessage = true; // Flag for the first message
function generateSessionId() {
// Simple random session ID generator (you might want a more robust one)
return Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15);
}
function addMessage(message, isUser) {
const messageDiv = document.createElement('div');
messageDiv.classList.add('message');
messageDiv.classList.add(isUser ? 'user-message' : 'bot-message');
messageDiv.textContent = message;
chatMessages.appendChild(messageDiv);
// Scroll to bottom of chat messages
chatMessages.scrollTop = chatMessages.scrollHeight;
}
async function sendMessageToWebhook(message) {
try {
// Prepare the request body as JSON
const requestBody = {
chatInput: message,
sessionId: chatSessionId, // Include the session ID
firstMessage: isFirstMessage, // Send the firstMessage flag
metadata: {} //Example, empty
};
const response = await fetch(`${webhookURL}?action=sendMessage`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(requestBody)
});
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
const responseData = await response.json();
const reply = responseData.output; // Get reply from output
if (!reply){
reply = JSON.stringify(responseData)
}
// After the first message, set the flag to false
isFirstMessage = false;
chatSessionId = responseData.sessionId
return reply;
} catch (error) {
console.error('Error sending message to webhook:', error);
return "Sorry, there was an error processing your request.";
}
}
sendButton.addEventListener('click', async () => {
const messageText = messageInput.value.trim();
if (messageText !== '') {
addMessage(messageText, true);
const reply = await sendMessageToWebhook(messageText);
addMessage(reply, false);
messageInput.value = '';
}
});
messageInput.addEventListener('keydown', async (event) => {
if (event.key === 'Enter') {
event.preventDefault();
sendButton.click();
}
});
chatMessages.scrollTop = chatMessages.scrollHeight;