| | class Chatbox { |
| | constructor() { |
| | this.args = { |
| | openButton: document.querySelector('.chatbox__button'), |
| | chatBox: document.querySelector('.chatbox__support'), |
| | sendButton: document.querySelector('.send__button') |
| | } |
| |
|
| | this.state = false; |
| | this.messages = []; |
| | } |
| |
|
| | display() { |
| | const {openButton, chatBox, sendButton} = this.args; |
| |
|
| | this.prompt(chatBox) |
| |
|
| | openButton.addEventListener('click', () => this.toggleState(chatBox)) |
| |
|
| | sendButton.addEventListener('click', () => this.onSendButton(chatBox)) |
| |
|
| | const node = chatBox.querySelector('input'); |
| | node.addEventListener("keyup", ({key}) => { |
| | if (key === "Enter") { |
| | this.onSendButton(chatBox) |
| | } |
| | }) |
| | } |
| |
|
| | prompt(chatbox) { |
| | this.messages.push({ name: "Bot", message: "Hi! I'm Chatgpt prompt assistant. Please type 'options' " }); |
| | this.updateChatText(chatbox) |
| | } |
| |
|
| | toggleState(chatbox) { |
| | this.state = !this.state; |
| | |
| | if(this.state) { |
| | chatbox.classList.add('chatbox--active') |
| | } else { |
| | chatbox.classList.remove('chatbox--active') |
| | } |
| | } |
| |
|
| | onSendButton(chatbox) { |
| | var textField = chatbox.querySelector('input'); |
| | let text1 = textField.value |
| | if (text1 === "") { |
| | return; |
| | } |
| |
|
| | let msg1 = { name: "User", message: text1 } |
| | this.messages.push(msg1); |
| |
|
| | fetch($SCRIPT_ROOT + '/predict', { |
| | method: 'POST', |
| | body: JSON.stringify({ message: text1 }), |
| | mode: 'cors', |
| | headers: { |
| | 'Content-Type': 'application/json' |
| | }, |
| | }) |
| | .then(r => r.json()) |
| | .then(r => { |
| | let msg2 = { name: "Bot", message: r.answer }; |
| | this.messages.push(msg2); |
| | this.updateChatText(chatbox) |
| | textField.value = '' |
| |
|
| | }).catch((error) => { |
| | console.error('Error:', error); |
| | this.updateChatText(chatbox) |
| | textField.value = '' |
| | }); |
| | } |
| |
|
| | updateChatText(chatbox) { |
| | var html = ''; |
| | this.messages.slice().reverse().forEach(function(item, index) { |
| | if (item.name === "Bot") |
| | { |
| | html += '<div class="messages__item messages__item--visitor">' + item.message + '</div>' |
| | } |
| | else |
| | { |
| | html += '<div class="messages__item messages__item--operator">' + item.message + '</div>' |
| | } |
| | }); |
| |
|
| | const chatmessage = chatbox.querySelector('.chatbox__messages'); |
| | chatmessage.innerHTML = html; |
| | } |
| | } |
| |
|
| |
|
| | const chatbox = new Chatbox(); |
| | chatbox.display(); |
| |
|
| | |
| | |
| |
|
| | |
| | |
| | |