Files
openclaw/integrations/paradiz-web/wordpress-plugin/paradiz-web-chat/chat.js
2026-03-01 17:44:19 +03:00

79 lines
2.7 KiB
JavaScript

(function(){
function init(){
const fab = document.getElementById('paradiz-web-chat-fab');
const modal = document.getElementById('paradiz-web-chat-modal');
const closeBtn = document.getElementById('paradiz-web-chat-close');
const sendBtn = document.getElementById('paradiz-web-chat-send');
const input = document.getElementById('paradiz-web-chat-input');
const log = document.getElementById('paradiz-web-chat-log');
if(!fab || !modal || !closeBtn || !sendBtn || !input || !log) return;
const addMsg = (text, type) => {
const p = document.createElement('p');
p.className = 'paradiz-msg ' + (type === 'user' ? 'paradiz-user' : 'paradiz-bot');
p.textContent = text;
log.appendChild(p);
log.scrollTop = log.scrollHeight;
};
fab.addEventListener('click', () => {
modal.style.display = (modal.style.display === 'block') ? 'none' : 'block';
if(modal.style.display === 'block') input.focus();
});
closeBtn.addEventListener('click', () => {
modal.style.display = 'none';
});
const sendQuestion = async () => {
const q = input.value.trim();
if(!q){
addMsg('Введите вопрос.', 'bot');
return;
}
addMsg('Вы: ' + q, 'user');
input.value = '';
addMsg('Печатают…', 'bot');
try {
const body = new URLSearchParams();
body.set('action', 'paradiz_web_chat');
body.set('nonce', (window.ParadizWebChatCfg && ParadizWebChatCfg.nonce) ? ParadizWebChatCfg.nonce : '');
body.set('question', q);
const resp = await fetch((window.ParadizWebChatCfg && ParadizWebChatCfg.ajaxUrl) ? ParadizWebChatCfg.ajaxUrl : '/wp-admin/admin-ajax.php', {
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' },
body: body.toString(),
credentials: 'same-origin'
});
const data = await resp.json();
if(data && data.success){
addMsg((data.data && data.data.answer) ? data.data.answer : 'Нет ответа', 'bot');
} else {
addMsg((data && data.data && data.data.message) ? data.data.message : 'Ошибка', 'bot');
}
} catch (e) {
addMsg('Сетевая ошибка: ' + (e && e.message ? e.message : 'unknown'), 'bot');
}
};
sendBtn.addEventListener('click', sendQuestion);
input.addEventListener('keydown', (e) => {
if(e.key === 'Enter' && !e.shiftKey){
e.preventDefault();
sendQuestion();
}
});
}
if(document.readyState === 'loading'){
document.addEventListener('DOMContentLoaded', init);
} else {
init();
}
})();