chatbot-demo / static /chat-bot.js
muryshev's picture
Update static/chat-bot.js
1615297 verified
let conversationHistory = [];
function sendMessage() {
const userInput = document.getElementById('user-input');
const submitButton = document.getElementById('submit-button');
const userMessage = userInput.value.trim();
if (userMessage) {
addMessage('user', userMessage, 'user');
userInput.value = '';
// Добавляем сообщение пользователя в историю
// conversationHistory.push({"role": "user", "content": userMessage, "display": userMessage});
// Ограничиваем историю до 20 сообщений
if (conversationHistory.length > 20) {
conversationHistory.shift();
}
submitButton.innerText = 'Отвечаем...'
submitButton.disabled = true
// Отправляем сообщение и историю на сервер
fetch('/send_message', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ history: conversationHistory, message: userMessage })
})
.then(response => response.json())
.then(data => {
addMessage('assistant', data.response, 'Ассистент');
conversationHistory = data.history; // Обновляем историю сообщений
saveConversationHistory();
})
.catch(error => {
console.error('Error:', error);
addMessage('assistant', 'Sorry, something went wrong.', 'Ассистент');
})
.finally(e => {
submitButton.innerText = 'Отправить'
submitButton.disabled = false
})
}
}
function addMessage(sender, message, role) {
if(role == 'system') return
const chatMessages = document.getElementById('chat-messages');
const messageElement = document.createElement('div');
messageElement.classList.add('message', sender);
const label = role === 'user' ? 'Вы' : 'Ассистент'
messageElement.innerHTML = `<strong>${label}:</strong> ${message}`;
chatMessages.appendChild(messageElement);
chatMessages.scrollTop = chatMessages.scrollHeight;
}
function saveConversationHistory() {
localStorage.setItem('conversationHistory', JSON.stringify(conversationHistory));
}
function loadConversationHistory() {
const savedHistory = localStorage.getItem('conversationHistory');
if (savedHistory) {
conversationHistory = JSON.parse(savedHistory);
conversationHistory.forEach(msg => addMessage(msg.role, msg.display, msg.role));
}
}
document.addEventListener('DOMContentLoaded', () => {
loadConversationHistory();
document.getElementById('clear-history').addEventListener('click', () => {
clearConversationHistory();
});
});
function clearConversationHistory() {
conversationHistory = [];
const chatMessages = document.getElementById('chat-messages');
chatMessages.innerHTML = '';
localStorage.removeItem('conversationHistory');
}