import React, { useState, useEffect } from 'react'; import styles from './ChatBot.module.css'; const ChatBot = ({ existingConversation, readOnly, hh }) => { const [messages, setMessages] = useState([ { sender: 'bot', text: 'Hai Dermalovers! 👋 Saya siap membantu anda tampil lebih percaya diri. Ada pertanyaan seputar perawatan kulit atau kecantikan hari ini?', time: getTime(), quickReplies: [ 'List harga layanan Dermalounge', 'Beri saya info jadwal dokter', 'Apa saja layanan disini', ], }, ]); 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(''); setIsLoading(true); try { // Send to backend const response = await fetch('https://bot.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() }), }); 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].output[0].text || data[0].output || 'Maaf, saya tidak mengerti.'; // Add bot's reply setMessages(prev => [ ...prev, { sender: 'bot', text: botAnswer, time: getTime() }, ]); setIsLoading(false); } catch (error) { sendMessage('gimana') console.error('Fetch error:', error); } finally { setIsLoading(false); } }; return (
DERMALOUNGE