import React, { useState, useEffect } from 'react'; import styles from './ChatBot.module.css'; const ChatBot = ({ existingConversation, readOnly, hh }) => { const [messages, setMessages] = useState([ { sender: 'bot', text: 'Halo 👋 Saya Klinik AI! Ada yang bisa saya bantu?', time: getTime(), quickReplies: [ 'Bagaimana menghilangkan komedo', 'Apakah bisa menghilangkan bopeng?', 'Perutku mual dan kembung', ], }, ]); const [input, setInput] = useState(''); const [isLoading, setIsLoading] = useState(false); useEffect(() => { if (existingConversation && existingConversation.length > 0) { setMessages(existingConversation); } }, [existingConversation]) useEffect(() => { if (!localStorage.getItem('session')) { function generateUUID() { return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { const r = Math.random() * 16 | 0; const v = c === 'x' ? r : (r & 0x3 | 0x8); return v.toString(16); }); } const sessionId = generateUUID(); const dateNow = new Date().toISOString(); localStorage.setItem('session', JSON.stringify({ sessionId: sessionId, lastSeen: dateNow })) } }, []); const sendMessage = async (textOverride = null) => { const message = textOverride || input.trim(); if (message === '') return; // Show user's message immediately const newMessages = [ ...messages, { sender: 'user', text: message, time: getTime() }, ]; setMessages(newMessages); setInput(''); setTimeout(() => setIsLoading(true), 1000); try { // Send to backend const response = await fetch('https://botdev.kediritechnopark.com/webhook/master-agent/ask', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ pertanyaan: message, sessionId: JSON.parse(localStorage.getItem('session')).sessionId, lastSeen: new Date().toISOString() }), }); if (!response.ok) throw new Error('Network response was not ok'); const data = await response.json(); console.log(data) // Assuming your backend sends back something like: { answer: "text" } // Adjust this according to your actual response shape const botAnswer = data[0].jawaban || data.output || data[0].output || 'Maaf, saya tidak mengerti.'; // Add bot's reply setMessages(prev => [ ...prev, { sender: 'bot', text: botAnswer, time: getTime() }, ]); } catch (error) { setMessages(prev => [ ...prev, { sender: 'bot', text: 'Maaf, terjadi kesalahan pada server. Silakan coba lagi nanti.', time: getTime(), }, ]); console.error('Fetch error:', error); } finally { setIsLoading(false); } }; return (