Spaces:
Sleeping
Sleeping
<html lang="vi"> | |
<head> | |
<meta charset="UTF-8"> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
<title>Vivi Chatbot</title> | |
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}"> | |
</head> | |
<body> | |
<div class="chat-container"> | |
<div class="chat-header"> | |
<h1>Vivi - Trợ lý ảo</h1> | |
</div> | |
<div class="chat-box" id="chat-box"> | |
{% for entry in history %} | |
<div class="user-message"><span>{{ entry.timestamp }}</span> {{ entry.user }}</div> | |
<div class="bot-message"><span>{{ entry.timestamp }}</span> {{ entry.bot }}</div> | |
{% endfor %} | |
<div id="typing-indicator" class="bot-message" style="display: none;">Đang gõ...</div> | |
</div> | |
<form id="chat-form"> | |
<input type="text" id="user-input" placeholder="Nhập tin nhắn..." autocomplete="off" required> | |
<button type="submit">Gửi</button> | |
<button type="button" id="clear-chat">🗑️</button> | |
</form> | |
</div> | |
<script> | |
document.getElementById("chat-form").addEventListener("submit", async function(event) { | |
event.preventDefault(); | |
const userInput = document.getElementById("user-input").value; | |
const chatBox = document.getElementById("chat-box"); | |
// Hiển thị tin nhắn người dùng | |
const timestamp = new Date().toLocaleTimeString(); | |
chatBox.innerHTML += `<div class="user-message"><span>${timestamp}</span> ${userInput}</div>`; | |
document.getElementById("user-input").value = ""; | |
// Hiển thị trạng thái "đang gõ..." | |
const typingIndicator = document.getElementById("typing-indicator"); | |
typingIndicator.style.display = "block"; | |
// Gửi tin nhắn đến server | |
const response = await fetch("/chat", { | |
method: "POST", | |
headers: { "Content-Type": "application/json" }, | |
body: JSON.stringify({ message: userInput }) | |
}); | |
const data = await response.json(); | |
// Ẩn trạng thái "đang gõ..." và hiển thị phản hồi bot | |
typingIndicator.style.display = "none"; | |
chatBox.innerHTML += `<div class="bot-message"><span>${data.timestamp}</span> ${data.response}</div>`; | |
chatBox.scrollTop = chatBox.scrollHeight; | |
}); | |
// Xóa lịch sử chat | |
document.getElementById("clear-chat").addEventListener("click", async function() { | |
const response = await fetch("/clear", { method: "POST" }); | |
if (response.ok) { | |
document.getElementById("chat-box").innerHTML = ""; // Xóa nội dung chat-box | |
} | |
}); | |
</script> | |
</body> | |
</html> | |