const msgerForm = get(".msger-inputarea"); const msgerInput = get(".msger-input"); const msgerChat = get(".msger-chat"); const modelSelect = get(".msger-select"); const isUserVerified = false; // Icons made by Freepik from www.flaticon.com const BOT_IMG = "../static/icons/dialogflow-insights-svgrepo-com.svg"; const PERSON_IMG = ""; let BOT_NAME = " ChatBot"; let PERSON_NAME = "You"; msgerForm.addEventListener("submit", async (event) => { event.preventDefault(); const msgText = msgerInput.value; if (!msgText) return; const selectedModel = modelSelect.value; appendMessage(PERSON_NAME, PERSON_IMG, "right", msgText); msgerInput.value = ""; botResponse(msgText, selectedModel); }); function appendMessage(name, img, side, text) { // Simple solution for small apps const msgHTML = `
${name}
${formatDate( new Date() )}
${text}
`; msgerChat.insertAdjacentHTML("beforeend", msgHTML); msgerChat.scrollTop += 500; } async function botResponse(text, selectedModel) { // Bot Response try { const response = await fetch( `reply?input=${text}&modelName=${selectedModel}` ); const data = await response.json(); let reply = data.bot_reply; if (selectedModel == "bloom") { reply = reply.response; } appendMessage(BOT_NAME + " - " + selectedModel, BOT_IMG, "left", reply); } catch (error) { console.error(error); appendMessage( BOT_NAME + "- " + selectedModel, BOT_IMG, "left", "Sorry, I'm not able to respond at the moment." ); } } // async function authenticate(token) { // const response = await fetch(`login?token=${token}`, { // method: "POST", // }); // const data = await response.json(); // console.log("data", data); // if ("error" in data) { // error = response.json()["error"]; // appendMessage(BOT_NAME, BOT_IMG, "left", error["message"]); // } else { // isUserVerified = true; // appendMessage(BOT_NAME, BOT_IMG, "left", "How can I can help you?"); // } // } // Utils function get(selector, root = document) { return root.querySelector(selector); } function formatDate(date) { const h = "0" + date.getHours(); const m = "0" + date.getMinutes(); return `${h.slice(-2)}:${m.slice(-2)}`; }