let conversation = [ { role: 'bot', message: "Hi there! I'm Chat Bot! May I know your name?" } ]; let userName = ''; // To store the user's name // Reset conversation on page load document.addEventListener('DOMContentLoaded', () => { conversation = [ { role: 'bot', message: "Hi there! I'm Chat Bot! May I know your name?" } ]; const chatMessages = document.getElementById('chatMessages'); if (chatMessages) { chatMessages.innerHTML = ''; addMessage('bot', "Hi there! I'm Chat Bot! May I know your name?"); } console.log('Page loaded, conversation reset:', conversation); }); function addMessage(role, message) { const chatMessages = document.getElementById('chatMessages'); if (!chatMessages) { console.error('Chat messages container not found!'); return; } const messageDiv = document.createElement('div'); messageDiv.className = role === 'bot' ? 'bot-message' : 'user-message'; messageDiv.textContent = message; chatMessages.appendChild(messageDiv); chatMessages.scrollTop = chatMessages.scrollHeight; console.log(`Added ${role} message: ${message}`); console.log('Current conversation:', conversation); } function sendMessage() { const userInput = document.getElementById('userInput'); if (!userInput) { console.error('User input field not found!'); return; } const message = userInput.value.trim(); if (message) { addMessage('user', message); conversation.push({ role: 'user', message: message }); userInput.value = ''; setTimeout(() => { try { handleResponse(message); } catch (error) { console.error('Error in handleResponse:', error); addMessage('bot', 'Sorry, something went wrong. Please try again.'); } }, 500); } else { console.warn('Empty message!'); } } // Add Enter key event listener for the input field document.addEventListener('DOMContentLoaded', () => { const userInput = document.getElementById('userInput'); if (userInput) { userInput.addEventListener('keydown', (event) => { if (event.key === 'Enter' && !event.shiftKey) { event.preventDefault(); // Prevent default behavior (e.g., form submission) sendMessage(); } }); } else { console.error('User input field not found during initialization!'); } }); function displayForm() { const chatMessages = document.getElementById('chatMessages'); if (!chatMessages) { console.error('Chat messages container not found for form!'); return; } // Prevent duplicate forms if (chatMessages.querySelector('.registration-form')) { console.log('Form already exists, skipping display.'); return; } const formDiv = document.createElement('div'); formDiv.className = 'bot-message'; formDiv.innerHTML = `

Please register here with these details. Our service agent will get back to you soon.




`; chatMessages.appendChild(formDiv); chatMessages.scrollTop = chatMessages.scrollHeight; console.log('Form displayed successfully.'); } function submitForm() { const mobileNumber = document.getElementById('mobileNumber').value.trim(); const email = document.getElementById('email').value.trim(); const issueDescription = document.getElementById('issueDescription').value.trim(); if (!mobileNumber || !email || !issueDescription) { addMessage('bot', 'Please fill in all fields before submitting.'); return; } const formData = { name: userName, mobileNumber: mobileNumber, email: email, issueDescription: issueDescription }; fetch('/submit-case', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(formData), }) .then(response => response.json()) .then(data => { if (data.success) { addMessage('bot', 'Thank you! Your case has been submitted. Our service agent will get back to you soon.'); } else { addMessage('bot', 'There was an error submitting your case. Please try again later.'); } }) .catch(error => { console.error('Error submitting form:', error); addMessage('bot', 'There was an error submitting your case. Please try again later.'); }); } function clearOptions() { const chatMessages = document.getElementById('chatMessages'); if (!chatMessages) return; const optionButtons = chatMessages.querySelectorAll('.bot-message .option-button'); console.log(`Clearing ${optionButtons.length} existing option buttons.`); optionButtons.forEach(button => { if (button.parentElement) { button.parentElement.remove(); } }); // Log the current DOM state after clearing console.log('DOM after clearing options:', chatMessages.innerHTML); } function displayOptions(options, isCategory = false) { const chatMessages = document.getElementById('chatMessages'); if (!chatMessages) { console.error('Chat messages container not found for options!'); return; } // Clear existing options before displaying new ones clearOptions(); console.log(`Displaying ${options.length} options:`, options); options.forEach((opt, index) => { const messageDiv = document.createElement('div'); messageDiv.className = 'bot-message'; const button = document.createElement('button'); button.textContent = opt.text; button.className = `option-button ${opt.class}`; button.addEventListener('click', () => { console.log(`Button clicked: ${opt.text}`); addMessage('user', opt.text); conversation.push({ role: 'user', message: opt.text }); setTimeout(() => { try { handleResponse(opt.text); } catch (error) { console.error('Error in handleResponse after button click:', error); addMessage('bot', 'Sorry, something went wrong. Please try again.'); } }, 500); }); messageDiv.appendChild(button); chatMessages.appendChild(messageDiv); console.log(`Added button ${index + 1}: ${opt.text}`); }); chatMessages.scrollTop = chatMessages.scrollHeight; // Log the DOM state after adding options console.log('DOM after adding options:', chatMessages.innerHTML); } function handleResponse(userInput) { const lastMessage = conversation[conversation.length - 1].message.toLowerCase(); let botResponse = ''; // Define categories const categories = [ { text: 'About TioNat and Account Setup', class: 'blue' }, { text: 'Nutritional Supplements', class: 'blue' }, { text: 'Health Care Products', class: 'blue' }, { text: 'Personal Care and Skincare', class: 'blue' }, { text: 'Returns and Customer Support', class: 'blue' }, { text: 'Security and Account Management', class: 'blue' }, { text: 'Other', class: 'green' } ]; // Handle name input (first user response after bot's greeting) if (conversation.length === 2 && conversation[0].role === 'bot' && conversation[0].message.includes('May I know your name?')) { userName = userInput; // Store the user's name botResponse = `Nice to meet you, ${userInput}! 😊 Please select a category for your query:`; addMessage('bot', botResponse); displayOptions(categories, true); // Display category buttons return; } // Handle category selection if (categories.some(cat => cat.text.toLowerCase() === lastMessage)) { botResponse = `Thank you for selecting "${userInput}". Please provide more details about your query so our service agent can assist you.`; addMessage('bot', botResponse); displayForm(); return; } // Handle unrecognized input botResponse = "I'm sorry, I don't understand your query. Please select a category for your query:"; addMessage('bot', botResponse); if (!document.querySelector('.option-button')) { displayOptions(categories, true); } }