PluginProbe
WPBot – AI ChatBot for Live Support, Lead Generation, WordPress Automation, AI Services / 8.7.7
WPBot – AI ChatBot for Live Support, Lead Generation, WordPress Automation, AI Services v8.7.7
8.7.7 8.7.6 8.7.5 8.7.4 8.7.3 8.7.2 8.7.1 8.7.0 8.6.9 8.6.8 8.6.7 8.6.6 8.6.5 8.6.4 8.6.2 8.6.1 8.6.0 8.5.9 8.5.8 8.5.7 8.5.6 8.5.5 8.5.4 8.5.3 8.5.2 All 533 releases
chatbot / js / qcld-wp-chatbot-plugin.js

qcld-wp-chatbot-plugin.js in WPBot – AI ChatBot for Live Support, Lead Generation, WordPress Automation, AI Services 8.7.7, at js/qcld-wp-chatbot-plugin.js

3,723 lines 206.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /*
2 * Project: wpwBot jQuery Plugin
3 * Description: wpwBot AI based Chatting functionality are handled .
4 * Author: QuantumCloud
5 * Version: 1.0
6 */
7 var wpwKits;
8 (function($) {
9 /*
10 * Global variable as object will beused to handle
11 * wpwbot chatting initialize, tree change transfer,
12 * changing tree steps and cookies etc.
13 */
14 var globalwpw={
15 initialize:0,
16 settings:{},
17 wildCard:0,
18 wildcards:'',
19 wildcardsHelp:['start','support','reset', 'search', 'email'],
20 productStep:'asking',
21 orderStep:'welcome',
22 supportStep:'welcome',
23 formStep: 'welcome',
24 formfieldid:'',
25 formid:'',
26 formentry:0,
27 hasNameCookie:$.cookie("shopper"),
28 shopperUserName:'',
29 shopperEmail:'',
30 shopperMessage:'',
31 emptymsghandler:0,
32 repeatQueryEmpty:'',
33 wpwIsWorking:0,
34 ai_step:0,
35 df_status_lock:0,
36 counter:0
37 };
38 /*
39 * wpwbot welcome section coverd
40 * greeting for new and already visited shopper
41 * based the memory after asking thier name.
42 */
43 var wpwWelcome={
44 greeting:function () {
45 //generating unique session id.
46 if(!localStorage.getItem('botsessionid')){
47 var number = Math.random() // 0.9394456857981651
48 number.toString(36); // '0.xtis06h6'
49 var id = number.toString(36).substr(2); // 'xtis06h6'
50 localStorage.setItem('botsessionid', id);
51 }
52 // console.log(globalwpw.settings.obj.skip_wp_greetings=='1')
53 if((globalwpw.settings.obj.skip_wp_greetings=='1') || (globalwpw.settings.obj.skip_greetings_and_menu =='1') ){
54 }else{
55 //Very begining greeting.
56 if(globalwpw.settings.obj.re_target_handler==0){
57 var botJoinMsg="<strong>"+wpwMsg.oncommand_filter(globalwpw.settings.obj.agent)+" </strong> "+wpwKits.randomMsg(globalwpw.settings.obj.agent_join);
58 wpwMsg.single(botJoinMsg);
59 }
60 //Showing greeting for name in cookie or fresh shopper.
61 setTimeout(function(){
62 var firstMsg=wpwKits.randomMsg(globalwpw.settings.obj.hi_there)+' '+wpwKits.randomMsg(globalwpw.settings.obj.welcome)+" <strong>"+globalwpw.settings.obj.host+"!</strong> ";
63 var secondMsg=wpwKits.randomMsg(globalwpw.settings.obj.asking_name);
64 wpwMsg.double(firstMsg,secondMsg);
65 }, globalwpw.settings.preLoadingTime*2);
66 }
67
68 var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.wildcard_msg);
69 if(globalwpw.settings.obj.skip_greetings_and_menu != 0){
70 wpwMsg.single(serviceOffer);
71 }
72 if( ( globalwpw.settings.obj.show_menu_after_greetings!=0 ) && ( globalwpw.wildcards !='' ) ){
73 wpwMsg.double_nobg(serviceOffer, globalwpw.wildcards);
74 } if( ( globalwpw.settings.obj.skip_wp_greetings !=0 ) && ( globalwpw.wildcards !='' ) ){
75 wpwMsg.double_nobg(serviceOffer, globalwpw.wildcards);
76 } else{
77 //wpwMsg.single(serviceOffer);
78 }
79 }
80 };
81 function qcldPushAiContext(role, content) {
82 if (typeof globalwpw === 'undefined') return;
83 if (typeof globalwpw.aiContext === 'undefined') {
84 globalwpw.aiContext = [];
85 }
86 if (!content) return;
87
88 var cleanContent = content;
89 if (role === 'assistant') {
90 cleanContent = cleanContent.replace(/<[^>]*>?/gm, '').trim();
91 } else if (role === 'user') {
92 var lower = content.toLowerCase().trim();
93 var titles = (typeof qcld_chatbot_obj !== 'undefined' && qcld_chatbot_obj.ai_form_titles) ? qcld_chatbot_obj.ai_form_titles : ((typeof wp_chatbot_obj !== 'undefined' && wp_chatbot_obj.ai_form_titles) ? wp_chatbot_obj.ai_form_titles : []);
94 if (titles && titles.length) {
95 for (var t = 0; t < titles.length; t++) {
96 var title = titles[t];
97 if (lower === title || lower.indexOf(title) !== -1 || title.indexOf(lower) !== -1) {
98 globalwpw.active_ai_action = title;
99 globalwpw.qcld_ai_form_persisted_state = true;
100 break;
101 }
102 }
103 }
104 }
105
106 globalwpw.aiContext.push({role: role, content: cleanContent});
107 if (globalwpw.aiContext.length > 30) {
108 globalwpw.aiContext.shift();
109 }
110 }
111
112 function qcldIsAiFormInProgress() {
113 if (typeof globalwpw !== 'undefined' && (globalwpw.active_ai_action || globalwpw.qcld_ai_form_persisted_state)) {
114 return true;
115 }
116 var titles = (typeof qcld_chatbot_obj !== 'undefined' && qcld_chatbot_obj.ai_form_titles) ? qcld_chatbot_obj.ai_form_titles : ((typeof wp_chatbot_obj !== 'undefined' && wp_chatbot_obj.ai_form_titles) ? wp_chatbot_obj.ai_form_titles : []);
117 if (!titles || !titles.length || typeof globalwpw === 'undefined' || !globalwpw.aiContext) {
118 return false;
119 }
120
121 var hasFormTrigger = false;
122 for (var i = 0; i < globalwpw.aiContext.length; i++) {
123 var msg = globalwpw.aiContext[i];
124 if (msg.role === 'user') {
125 var content = (msg.content || '').toLowerCase().trim();
126 for (var t = 0; t < titles.length; t++) {
127 var title = titles[t];
128 if (content === title || content.indexOf(title) !== -1 || title.indexOf(content) !== -1) {
129 hasFormTrigger = true;
130 globalwpw.active_ai_action = title;
131 }
132 }
133 }
134 if (msg.role === 'assistant') {
135 var assistantContent = (msg.content || '').toLowerCase();
136 if (msg.content && (msg.content.indexOf('__AI_FORM_DATA__') !== -1 || msg.content.indexOf('ai-form-summary-card') !== -1 || assistantContent.indexOf('thank you for providing the information') !== -1 || assistantContent.indexOf('successfully submitted') !== -1)) {
137 hasFormTrigger = false;
138 globalwpw.active_ai_action = '';
139 }
140 }
141 }
142
143 return hasFormTrigger || !!(globalwpw.active_ai_action);
144 }
145 //Append the message to the message container based on the requirement.
146 var wpwMsg={
147 oncommand_filter:function(msg){
148 var str = msg;
149 if(typeof(str) === 'string'){
150 str = str.replace(/on[a-zA-Z]+\s*=/g, "");
151 str = str.replace(/__AI_FORM_IN_PROGRESS__/g, "");
152
153 // Matches __AI_FORM_DATA__{...}__AI_FORM_DATA_END__ or html-wrapped variations (e.g. from Markdown Parsedown)
154 var formRegex = /(?:<[^>]+>)*\s*(?:__|<strong>|<b>)?AI_FORM_DATA(?:__|<\/strong>|<\/b>)?[\s\S]*?(?:__|<strong>|<b>)?AI_FORM_DATA_END(?:__|<\/strong>|<\/b>)?\s*(?:<\/[^>]+>)*/gi;
155
156 if (formRegex.test(str)) {
157 str = str.replace(formRegex, function(match) {
158 try {
159 var jsonMatch = match.match(/\{[\s\S]*\}/);
160 if (jsonMatch) {
161 var jsonStr = jsonMatch[0];
162 var data = JSON.parse(jsonStr.trim());
163
164 // Save form entry via AJAX
165 var postData = {
166 'action': 'qcld_save_ai_form',
167 'data': jsonStr,
168 'nonce': (typeof qcld_chatbot_obj !== 'undefined' ? qcld_chatbot_obj.nonce : '')
169 };
170 var ajaxUrl = (typeof qcld_chatbot_obj !== 'undefined' && qcld_chatbot_obj.ajax_url) ? qcld_chatbot_obj.ajax_url : (typeof wpbot_ajax !== 'undefined' ? wpbot_ajax.ajax_url : (typeof ajaxurl !== 'undefined' ? ajaxurl : ''));
171 if (ajaxUrl) {
172 jQuery.post(ajaxUrl, postData);
173 }
174
175 if (typeof globalwpw !== 'undefined') {
176 globalwpw.aiContext = [];
177 globalwpw.active_ai_action = '';
178 globalwpw.qcld_ai_form_persisted_state = false;
179 }
180
181 var html = '<div class="ai-form-summary-card" style="background: #f4f6f9; border-left: 4px solid #0073aa; padding: 12px 14px; margin: 10px 0; border-radius: 4px; font-size: 13px; line-height: 1.5; color: #333;">';
182 if (data.form_title) {
183 html += '<div style="font-weight: 600; color: #0073aa; margin-bottom: 8px; text-transform: capitalize; font-size: 14px;">' + data.form_title + '</div>';
184 }
185 if (data.data && typeof data.data === 'object') {
186 html += '<table style="width: 100%; border-collapse: collapse; margin-top: 4px;">';
187 for (var key in data.data) {
188 if (data.data.hasOwnProperty(key)) {
189 var cleanKey = key.replace(/[-_]/g, ' ');
190 html += '<tr><td style="padding: 3px 6px 3px 0; color: #555; font-weight: 600; width: 42%; vertical-align: top;">' + cleanKey + ':</td><td style="padding: 3px 0; color: #222; vertical-align: top;">' + data.data[key] + '</td></tr>';
191 }
192 }
193 html += '</table>';
194 }
195 html += '</div>';
196 return html;
197 }
198 } catch(e) {
199 console.error('AI Form parse error:', e);
200 }
201 return '';
202 });
203 }
204 }
205 return str;
206 },
207 open_new_tab: function(msg){
208 if(wp_chatbot_obj.open_links_newtab == '1'){
209 var temp = document.createElement('div');
210 temp.innerHTML = msg;
211 let links = temp.querySelectorAll('a');
212 links.forEach(link => {
213 link.setAttribute('target', '_blank');
214 });
215 let temps = temp.innerHTML;
216 return temps;
217 }else{
218 return msg;
219 }
220 },
221 single_openai:function (msg) {
222 msg = wpwMsg.open_new_tab(msg);
223 globalwpw.wpwIsWorking=1;
224 if($(globalwpw.settings.messageLastChild+' .wp-chatbot-comment-loader').length==0){
225 $(globalwpw.settings.messageContainer).append(wpwKits.botPreloader());
226 }
227
228 //Scroll to the last message
229 wpwKits.scrollTo();
230 setTimeout(function(){
231 $(globalwpw.settings.messageLastChild+' .wp-chatbot-paragraph').text( msg );
232 //If has youtube link then show video
233 wpwKits.videohandler();
234 //scroll to the last message
235 wpwKits.scrollTo();
236 //Enable the editor
237 wpwKits.enableEditor(wpwKits.randomMsg(globalwpw.settings.obj.send_a_msg));
238 //keeping in history
239 wpwKits.wpwHistorySave();
240
241 }, globalwpw.settings.preLoadingTime);
242 },
243 single:function (msg) {
244 msg = wpwMsg.open_new_tab(msg);
245 globalwpw.wpwIsWorking=1;
246 if($(globalwpw.settings.messageLastChild+' .wp-chatbot-comment-loader').length==0){
247 $(globalwpw.settings.messageContainer).append(wpwKits.botPreloader());
248 }
249 //Scroll to the last message
250 wpwKits.scrollTo();
251 oncommand_filter = wpwMsg.oncommand_filter(msg);
252
253 setTimeout(function(){
254 $(globalwpw.settings.messageLastChild+' .wp-chatbot-paragraph').html( '<div class="wp-chatbot-textanimation">' + oncommand_filter + '</div>');
255 //If has youtube link then show video
256 wpwKits.videohandler();
257 //scroll to the last message
258 wpwKits.scrollTo();
259 //Enable the editor
260 wpwKits.enableEditor(wpwKits.randomMsg(globalwpw.settings.obj.send_a_msg));
261 //keeping in history
262 wpwKits.wpwHistorySave();
263 }, globalwpw.settings.preLoadingTime);
264 },
265 single_nobg:function (msg) {
266 msg = wpwMsg.open_new_tab(msg);
267 globalwpw.wpwIsWorking=1;
268 if($(globalwpw.settings.messageLastChild+' .wp-chatbot-comment-loader').length==0){
269 $(globalwpw.settings.messageContainer).append(wpwKits.botPreloader());
270 }
271 //Scroll to the last message
272 oncommand_filter = wpwMsg.oncommand_filter(msg);
273 wpwKits.scrollTo();
274 setTimeout(function(){
275 $(globalwpw.settings.messageLastChild+' .wp-chatbot-paragraph').parent().addClass('wp-chatbot-msg-flat').html( '<div class="wp-chatbot-textanimation">' + oncommand_filter + '</div>');
276 //scroll to the last message
277 wpwKits.scrollTo();
278 //Enable the editor
279 wpwKits.enableEditor(wpwKits.randomMsg(globalwpw.settings.obj.send_a_msg));
280 //Keeping the chat history in localStorage
281 wpwKits.wpwHistorySave();
282 // disabled editor
283 // wpwKits.disableEditor('Please choose an option.');
284 }, globalwpw.settings.preLoadingTime);
285 },
286 double:function (fristMsg,secondMsg) {
287 fristMsg = wpwMsg.open_new_tab(fristMsg);
288 secondMsg = wpwMsg.open_new_tab(secondMsg);
289 globalwpw.wpwIsWorking=1;
290 if($(globalwpw.settings.messageLastChild+' .wp-chatbot-comment-loader').length==0){
291 $(globalwpw.settings.messageContainer).append(wpwKits.botPreloader());
292 }
293 oncommand_fristMsg_filter = wpwMsg.oncommand_filter(fristMsg);
294 oncommand_secondMsg_filter = wpwMsg.oncommand_filter(secondMsg);
295 //Scroll to the last message
296 wpwKits.scrollTo();
297 setTimeout(function(){
298 $(globalwpw.settings.messageLastChild+' .wp-chatbot-paragraph').html('<div class="wp-chatbot-textanimation">' + oncommand_fristMsg_filter + '</div>');
299 //Second Message with interval
300 if($(globalwpw.settings.messageLastChild+' .wp-chatbot-comment-loader').length==0){
301 $(globalwpw.settings.messageContainer).append(wpwKits.botPreloader());
302 }
303 //Scroll to the last message
304 wpwKits.scrollTo();
305 setTimeout(function(){
306 $(globalwpw.settings.messageLastChild+' .wp-chatbot-paragraph').html('<div class="wp-chatbot-textanimation">' + oncommand_secondMsg_filter + '</div>');
307 //Scroll to the last message
308 wpwKits.scrollTo();
309 //Enable the editor
310 wpwKits.enableEditor(wpwKits.randomMsg(globalwpw.settings.obj.send_a_msg));
311 //keeping in history
312 wpwKits.wpwHistorySave();
313 }, globalwpw.settings.preLoadingTime*2);
314 }, globalwpw.settings.preLoadingTime);
315 },
316 double_nobg:function (fristMsg,secondMsg) {
317 fristMsg = wpwMsg.open_new_tab(fristMsg);
318 secondMsg = wpwMsg.open_new_tab(secondMsg);
319 oncommand_fristMsg_filter = wpwMsg.oncommand_filter(fristMsg);
320 oncommand_secondMsg_filter = wpwMsg.oncommand_filter(secondMsg);
321
322 globalwpw.wpwIsWorking=1;
323 if($(globalwpw.settings.messageLastChild+' .wp-chatbot-comment-loader').length==0){
324 $(globalwpw.settings.messageContainer).append(wpwKits.botPreloader());
325 }
326 //Scroll to the last message
327 wpwKits.scrollTo();
328 setTimeout(function(){
329 $(globalwpw.settings.messageLastChild+' .wp-chatbot-paragraph').html('<div class="wp-chatbot-textanimation">' + oncommand_fristMsg_filter + '</div>');
330 //Second Message with interval
331 if($(globalwpw.settings.messageLastChild+' .wp-chatbot-comment-loader').length==0){
332 $(globalwpw.settings.messageContainer).append(wpwKits.botPreloader());
333 }
334 //Scroll to the last message
335 wpwKits.scrollTo();
336 setTimeout(function(){
337 if( globalwpw.wildCard>0 && ((globalwpw.settings.obj.disable_back_to_start != '1' && globalwpw.settings.obj.skip_greetings_and_menu != 1)) ){
338 $(globalwpw.settings.messageLastChild+' .wp-chatbot-paragraph').parent().addClass('wp-chatbot-msg-flat').html(oncommand_secondMsg_filter).append('<span class="qcld-chatbot-wildcard" data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
339 }else{
340 $(globalwpw.settings.messageLastChild+' .wp-chatbot-paragraph').parent().addClass('wp-chatbot-msg-flat').html('<div class="wp-chatbot-textanimation">' + oncommand_secondMsg_filter + '</div>');
341 }
342 //scroll to the last message
343 wpwKits.scrollTo();
344 //Enable the editor
345 if(globalwpw.wildCard==1 && globalwpw.supportStep=='welcome'){
346 //wpwKits.disableEditor('Support');
347 wpwKits.enableEditor(wpwKits.randomMsg(globalwpw.settings.obj.send_a_msg));
348 }else{
349 wpwKits.enableEditor(wpwKits.randomMsg(globalwpw.settings.obj.send_a_msg));
350 }
351 //keeping in history
352 wpwKits.wpwHistorySave();
353 // disabled editor
354 // wpwKits.disableEditor('Please choose an option.');
355 }, globalwpw.settings.preLoadingTime*2);
356 }, globalwpw.settings.preLoadingTime);
357 },
358 triple_nobg:function (fristMsg,secondMsg,thirdMsg) {
359 fristMsg = wpwMsg.open_new_tab(fristMsg);
360 secondMsg = wpwMsg.open_new_tab(secondMsg);
361 oncommand_fristMsg_filter = wpwMsg.oncommand_filter(fristMsg);
362 oncommand_secondMsg_filter = wpwMsg.oncommand_filter(secondMsg);
363 globalwpw.wpwIsWorking=1;
364 $(globalwpw.settings.messageContainer).append(wpwKits.botPreloader());
365 //Scroll to the last message
366 wpwKits.scrollTo();
367 setTimeout(function(){
368 $(globalwpw.settings.messageLastChild+' .wp-chatbot-paragraph').html('<div class="wp-chatbot-textanimation">' + oncommand_fristMsg_filter + '</div>');
369 wpwKits.videohandler();
370 //Second Message with interval
371 if($(globalwpw.settings.messageLastChild+' .wp-chatbot-comment-loader').length==0){
372 $(globalwpw.settings.messageContainer).append(wpwKits.botPreloader());
373 }
374 //Scroll to the last message
375 wpwKits.scrollTo();
376 setTimeout(function(){
377 $(globalwpw.settings.messageLastChild+' .wp-chatbot-paragraph').html('<div class="wp-chatbot-textanimation">' + oncommand_secondMsg_filter + '</div>');
378 wpwKits.videohandler();
379 if($(globalwpw.settings.messageLastChild+' .wp-chatbot-comment-loader').length==0){
380 $(globalwpw.settings.messageContainer).append(wpwKits.botPreloader());
381 }
382 //Scroll to the last message
383 wpwKits.scrollTo();
384 setTimeout(function(){
385 if(globalwpw.wildCard>0 && (globalwpw.settings.obj.disable_back_to_start != '1' && globalwpw.settings.obj.skip_greetings_and_menu != 1)){
386 $(globalwpw.settings.messageLastChild+' .wp-chatbot-paragraph').parent().addClass('wp-chatbot-msg-flat').html(thirdMsg).append('<span class="qcld-chatbot-wildcard qcld_back_to_start" data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
387 }else{
388 $(globalwpw.settings.messageLastChild+' .wp-chatbot-paragraph').parent().addClass('wp-chatbot-msg-flat').html('<div class="wp-chatbot-textanimation">' + thirdMsg + '</div>');
389 }
390 //scroll to the last message
391 wpwKits.scrollTo();
392 wpwKits.videohandler();
393 //Enable the editor
394 if(globalwpw.wildCard==1 && globalwpw.supportStep=='welcome'){
395 //wpwKits.disableEditor('Support');
396 }else{
397 wpwKits.enableEditor(wpwKits.randomMsg(globalwpw.settings.obj.send_a_msg));
398 }
399 //keeping in history
400 wpwKits.wpwHistorySave();
401 // disabled editor
402 // wpwKits.disableEditor('Please choose an option.');
403 }, globalwpw.settings.preLoadingTime);
404 }, globalwpw.settings.preLoadingTime);
405 }, globalwpw.settings.preLoadingTime);
406 },
407 shopper:function (shopperMsg) {
408 $(globalwpw.settings.messageContainer).append(wpwKits.shopperMsgDom(shopperMsg));
409 //scroll to the last message
410 wpwKits.scrollTo();
411 //keeping in history
412 wpwKits.wpwHistorySave();
413 },
414 shopper_choice:function (shopperChoice) {
415 $(globalwpw.settings.messageLastChild).fadeOut(globalwpw.settings.preLoadingTime);
416 $(globalwpw.settings.messageContainer).append(wpwKits.shopperMsgDom(shopperChoice));
417 //scroll to the last message
418 wpwKits.scrollTo();
419 //keeping in history
420 wpwKits.wpwHistorySave();
421 }
422 };
423 //Every tiny tools are implemented in wpwKits as object literal.
424 wpwKits={
425 enableEditor:function(placeHolder){
426 if(globalwpw.settings.editor_handler==0){
427 if($(window).width()>380){
428 $("#wp-chatbot-editor").attr('disabled',false).focus();
429 }else{
430 $("#wp-chatbot-editor").attr('disabled',false)
431 }
432 $("#wp-chatbot-editor").attr('placeholder',placeHolder);
433 $("#wp-chatbot-send-message").attr('disabled',false);
434 }
435 },
436 disableEditor:function (placeHolder) {
437 if(globalwpw.settings.editor_handler==0){
438 $("#wp-chatbot-editor").attr('placeholder',placeHolder);
439 $("#wp-chatbot-editor").attr('disabled',true);
440 $("#wp-chatbot-send-message").attr('disabled',true);
441 }
442 //Remove extra pre loader.
443 if($('.wp-chatbot-messages-container').find('.wp-chatbot-comment-loader').length>0){
444 $('.wp-chatbot-messages-container').find('.wp-chatbot-comment-loader').parent().parent().hide();
445 }
446 },
447 htmlEntities:function(str) {
448 return String(str).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
449 },
450 wpwHistorySave:function () {
451 globalwpw.wpwIsWorking=0;
452 var wpwHistory= $(globalwpw.settings.messageWrapper).html();
453 localStorage.setItem("wpwHitory", wpwHistory);
454 if(localStorage.getItem('botsessionid')){
455 if(!localStorage.getItem('shopperemail')){
456 var useremail = '';
457 }else{
458 var useremail = localStorage.getItem('shopperemail');
459 }
460 if(globalwpw.hasNameCookie){
461 var shopper=globalwpw.hasNameCookie;
462 } else{
463 var shopper=globalwpw.settings.obj.shopper_demo_name;
464 }
465 if(localStorage.getItem('shopperphone')){
466 var shopperphone = localStorage.getItem('shopperphone');
467 }else{
468 var shopperphone = '';
469 }
470 var data = {'action':'qcld_wb_chatbot_conversation_save','session_id': localStorage.getItem('botsessionid'),'name':shopper,'email':useremail, 'phone':shopperphone, 'conversation':wpwKits.htmlEntities(wpwHistory), 'security':globalwpw.settings.obj.ajax_nonce, 'user_id': globalwpw.settings.obj.current_user_id};
471 if( globalwpw.settings.obj.is_chat_session_active == 1 ){
472 wpwKits.ajax(data).done(function (response) {
473 //console.log(response);
474 })
475 }
476 }
477 //},globalwpw.settings.wildcardsShowTime);
478 },
479 decodehtml: function(str) {
480 var doc = new DOMParser().parseFromString(str, "text/html");
481
482 return doc.body.firstChild.data || "";
483
484 },
485 randomMsg:function(arrMsg){
486 var index=Math.floor(Math.random() * arrMsg.length);
487 var msg = arrMsg[index];
488 if (typeof msg === 'string' && msg.indexOf('%%username%%') !== -1) {
489 var shopperName = localStorage.getItem('shopper') || (globalwpw.settings.obj.display_name || '');
490 msg = msg.replace(/%%username%%/g, shopperName);
491 }
492 return msg;
493 },
494 ajax:function (data) {
495 return jQuery.post(globalwpw.settings.obj.ajax_url, data);
496 },
497 dailogAIOAction:function(text){
498 if(globalwpw.settings.obj.df_api_version=='v1'){
499 return jQuery.ajax({
500 type : "POST",
501 url :"https://api.dialogflow.com/v1/query?v=20170712",
502 contentType : "application/json; charset=utf-8",
503 dataType : "json",
504 headers : {
505 "Authorization" : "Bearer "+globalwpw.settings.obj.ai_df_token
506 },
507 data: JSON.stringify( {
508 query: text,
509 lang : globalwpw.settings.obj.df_agent_lan,
510 sessionId: localStorage.getItem('botsessionid')?localStorage.getItem('botsessionid'):'wpwBot_df_2018071'
511 } )
512 });
513 }else{
514
515 return jQuery.post(globalwpw.settings.obj.ajax_url, {
516 'action': 'qcld_wp_df_api_call',
517 'dfquery': text,
518 'nonce': globalwpw.settings.obj.ajax_nonce,
519 'sessionid': localStorage.getItem('botsessionid')?localStorage.getItem('botsessionid'):'wpwBot_df_2018071'
520 });
521 }
522 },
523 responseIsOk(response){
524 if(globalwpw.settings.obj.df_api_version=='v1'){
525 if(response.status.code==200 || response.status.code==206){
526 return true;
527 }else{
528 return false;
529 }
530 }else{
531 if(typeof response.responseId !== "undefined"){
532 return true;
533 }else{
534 return false;
535 }
536 }
537 },
538 getIntentName(response){
539 if(globalwpw.settings.obj.df_api_version=='v1'){
540 return response.result.metadata.intentName;
541 }else{
542 return response.queryResult.intent.displayName;
543 }
544 },
545 getParameters(response){
546 if(globalwpw.settings.obj.df_api_version=='v1'){
547 return response.result.parameters;
548 }else{
549 return response.queryResult.parameters;
550 }
551 },
552 getFulfillmentText(response){
553 if(globalwpw.settings.obj.df_api_version=='v1'){
554 return response.result.fulfillment.messages;
555 }else{
556 return response.queryResult.fulfillmentText;
557 }
558 },
559 getFulfillmentSpeech(response){
560 if(globalwpw.settings.obj.df_api_version=='v1'){
561 return response.result.fulfillment.speech;
562 }else{
563 return response.queryResult.fulfillmentText;
564 }
565 },
566 getScore(response){
567 if(globalwpw.settings.obj.df_api_version=='v1'){
568 return response.result.score;
569 }else{
570 return response.queryResult.intentDetectionConfidence;
571 }
572 },
573 getAction(response){
574 if(globalwpw.settings.obj.df_api_version=='v1'){
575 return response.result.action;
576 }else{
577 if(typeof response.queryResult.action !=="undefined"){
578 return response.queryResult.action;
579 }else{
580 return '';
581 }
582 }
583 },
584 queryText(response){
585 if(globalwpw.settings.obj.df_api_version=='v1'){
586 return response.result.resolvedQuery;
587 }else{
588 return response.queryResult.queryText;
589 }
590 },
591 isActionComplete(response){
592 if(globalwpw.settings.obj.df_api_version=='v1'){
593 if(!response.result.actionIncomplete){
594 return true;
595 }else{
596 return false;
597 }
598 }else{
599 return response.queryResult.allRequiredParamsPresent;
600 }
601 },
602 isConversationEnd(response){
603 if(globalwpw.settings.obj.df_api_version=='v1'){
604 if(typeof(response.result.metadata.endConversation)!=="undefined" && response.result.metadata.endConversation){
605 return true;
606 }else{
607 return false;
608 }
609 }else{
610 if(typeof response.queryResult.diagnosticInfo !=="undefined"){
611 if(typeof response.queryResult.diagnosticInfo.end_conversation !== "undefined"){
612 return response.queryResult.diagnosticInfo.end_conversation;
613 }else{
614 return false;
615 }
616 }else{
617 return false;
618 }
619 }
620 },
621 sugestCat:function () {
622 var productSuggest=wpwKits.randomMsg(globalwpw.settings.obj.product_suggest);
623 var data={'action':'qcld_wb_chatbot_category'};
624 var result=wpwKits.ajax(data);
625 result.done(function( response ) {
626 wpwMsg.double_nobg(productSuggest,response);
627 if(globalwpw.settings.obj.ai_df_enable==1 && globalwpw.df_status_lock==0){
628 globalwpw.wildCard=0;
629 globalwpw.ai_step=1;
630 localStorage.setItem("wildCard", globalwpw.wildCard);
631 localStorage.setItem("aiStep", globalwpw.ai_step);
632 }
633 });
634 },
635 subCats:function (parentId) {
636 var subCatMsg=wpwKits.randomMsg(globalwpw.settings.obj.product_suggest);
637 var data={'action':'qcld_wb_chatbot_sub_category','parent_id':parentId};
638 var result=wpwKits.ajax(data);
639 result.done(function( response ) {
640 wpwMsg.double_nobg(subCatMsg,response);
641 });
642 },
643 suggestEmail:function (emailFor) {
644 var sugMsg=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
645 var sugOptions= '<span class="qcld-chatbot-wildcard qcld_back_to_start" data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>'; // /*emailFor+*/globalwpw.wildcards;
646 if( ( globalwpw.settings.obj.disable_back_to_start != '1' && globalwpw.settings.obj.skip_greetings_and_menu != 1 )){
647 wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start" data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
648 }
649 },
650 videohandler:function () {
651 $(globalwpw.settings.messageLastChild+' .wp-chatbot-paragraph').html(function(i, html) {
652 return html.replace(/(?:https:\/\/)?(?:www\.)?(?:youtube\.com|youtu\.be)\/(?:watch\?v=)?(.+)/g, '<iframe width="250" height="180" src="http://www.youtube.com/embed/$1" frameborder="0" allowfullscreen></iframe>');
653 });
654 },
655 scrollTo:function () {
656 var $bot = $(globalwpw.settings.botContainer);
657 var scrollTarget = $(globalwpw.settings.messageWrapper).prop("scrollHeight");
658 $bot.animate({ scrollTop: scrollTarget }, 'slow', function () {
659 if (typeof window.wpbotSyncSlimScrollBar === 'function') {
660 window.wpbotSyncSlimScrollBar($bot);
661 } else {
662 var el = $bot[0];
663 var $wrap = $bot.parent();
664 var $bar = $wrap.children('.slimScrollBar');
665 if (!el || !$bar.length) {
666 return;
667 }
668 if (el.scrollHeight <= el.clientHeight + 2) {
669 $wrap.addClass('wpbot-no-scroll');
670 $bar.stop(true, true).hide();
671 $wrap.children('.slimScrollRail').stop(true, true).hide();
672 } else {
673 $wrap.removeClass('wpbot-no-scroll');
674 var barH = $bar.outerHeight() || 30;
675 $bar.css({ top: Math.max(0, $bot.outerHeight() - barH) + 'px', display: 'block' });
676 }
677 }
678 });
679 },
680 botPreloader:function () {
681 var enableleReactions = globalwpw.settings.obj.skip_chat_reactions_menu;
682 var eanleeReport = globalwpw.settings.obj.enable_chat_report_menu;
683 var enableshare = globalwpw.settings.obj.enable_chat_share_menu;
684 var likeTxt = globalwpw.settings.obj.qlcd_wp_chatbot_like_text;
685 var disLikeTxt = globalwpw.settings.obj.qlcd_wp_chatbot_dislike_text;
686 var reportTxt = globalwpw.settings.obj.qlcd_wp_chatbot_report_text;
687 var sharetTxt = globalwpw.settings.obj.qlcd_wp_chatbot_share_text;
688
689 var msgContent='<li class="wp-chatbot-msg">' +
690 '<div class="wp-chatbot-avatar">'+
691 '<img src="'+globalwpw.settings.obj.agent_image_path+'" alt="">'+
692 '</div>'+
693 '<div class="wp-chatbot-agent">'+ wpwMsg.oncommand_filter(globalwpw.settings.obj.agent)+'</div>'
694 +'<div class="chat-container"><div class="wp-chatbot-paragraph"><img class="wp-chatbot-comment-loader" src="'+globalwpw.settings.obj.image_path+'comment.gif" alt="Typing..." /></div>'+
695 '<div class="qcld-like-dislike-icon">' +
696 (enableleReactions == 1 && !qcldIsAiFormInProgress()
697 ? '<a href="#" title="' + (disLikeTxt?.en_US || 'Dislike') + '"><i class="dashicons dashicons-thumbs-down" aria-hidden="true"></i></a>' + '<a href="#" title="' + (likeTxt?.en_US || 'Like') + '"><i class="dashicons dashicons-thumbs-up" aria-hidden="true"></i></a>'
698 : '') +
699
700 (eanleeReport == 1 && !qcldIsAiFormInProgress()
701 ? '<a href="#" title="' + (reportTxt?.en_US || 'Report') + '"><i class="dashicons dashicons-admin-comments"></i></a>'
702 : '') +
703
704 (enableshare == 1 && !qcldIsAiFormInProgress()
705 ? '<div class="qcld-share">' +
706 '<a href="#" class="share-toggle" title="' + (sharetTxt?.en_US || 'Share') + '"><i class="dashicons dashicons-share"></i></a>' +
707 '<div class="share-menu" style="display:none;">' +
708 '<a href="#" class="share-fb"><i class="dashicons dashicons-facebook"></i></a>' +
709 '<a href="#" class="share-wa"><i class="dashicons dashicons-whatsapp"></i></a>' +
710 '<a href="#" class="share-x"><i class="dashicons dashicons-twitter"></i></a>' +
711 '<a href="#" class="share-email"><i class="dashicons dashicons-email-alt"></i></a>' +
712 '</div>' +
713 '</div>'
714 : '') +
715 '</div>' +'</div>' +
716 '</li>';
717 return msgContent;
718 },
719 shopperMsgDom:function (msg) {
720 if(globalwpw.hasNameCookie){
721 var shopper=globalwpw.hasNameCookie;
722 } else{
723 var shopper=globalwpw.settings.obj.shopper_demo_name;
724 }
725 //var date = new Date();
726 date = new Date();
727 var msgContent='<li class="wp-chat-user-msg">' +
728 '<div style="margin-top:40px;" class="wp-chatbot-avatar">'+
729 '<img src="'+globalwpw.settings.obj.image_path+'client.png" alt="User Image">'+
730 '</div>'+
731 '<div class="wp-chatbot-agent">'+shopper +'</div>'
732 +'<div class="wp-chatbot-paragraph"><div class="wp-chatbot-textanimation">'+msg+'</div></div></li>';
733 return msgContent;
734 },
735 showCart:function () {
736 var data = {'action':'qcld_wb_chatbot_show_cart'}
737 this.ajax(data).done(function (response) {
738 //if cart show on message board
739 if($('#wp-chatbot-shortcode-template-container').length == 0) {
740 $(globalwpw.settings.messageWrapper).html(response.html);
741 $('#wp-chatbot-cart-numbers').html(response.items);
742 $('.wp-chatbot-ball-cart-items').html(response.items);
743 wpwKits.disableEditor(wpwKits.randomMsg(globalwpw.settings.obj.shopping_cart));
744 }else{ //Cart show on shortcode
745 $('.wp-chatbot-cart-shortcode-container').html(response.html);
746 }
747 //Add scroll to the cart shortcode
748 if($('#wp-chatbot-shortcode-template-container').length > 0 && $('.chatbot-shortcode-template-02').length==0) {
749 $('.wp-chatbot-cart-body').slimScroll({height: '200px', start: 'bottom'});
750 }
751 });
752 },
753 toTitlecase:function (msg) {
754 return msg.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});
755 },
756 filterStopWords:function(msg){
757 var spcialStopWords=",;,/,\\,[,],{,},(,),&,*,.,+ ,?,^,$,=,!,<,>,|,:,-";
758 var userMsg="";
759 //Removing Special Characts from last position.
760 var msgLastChar=msg.slice(-1);
761 if(spcialStopWords.indexOf(msgLastChar) >= 0 ){
762 userMsg=msg.slice(0, -1);
763 }else{
764 userMsg=msg;
765 }
766 var stopWords=globalwpw.settings.obj.stop_words+spcialStopWords;
767 var stopWordsArr=stopWords.split(',');
768 var msgArr=userMsg.split(' ');
769 var filtermsgArr = msgArr.filter(function myCallBack(el){
770 return stopWordsArr.indexOf(el.toLowerCase()) < 0;
771 });
772 filterMsg=filtermsgArr.join(' ');
773 return filterMsg;
774 },
775 htmlTagsScape:function(userString) {
776 var tagsToReplace = {
777 '&': '&amp;',
778 '<': '&lt;',
779 '>': '&gt;'
780 };
781 return userString.replace(/[&<>]/g, function(tag) {
782 return tagsToReplace[tag] || tag;
783 });
784 },
785 reset: function() {
786 $('#wp-chatbot-messages-container').html('');
787 localStorage.removeItem("wpwHitory");
788 localStorage.removeItem('shopper');
789 localStorage.removeItem('shopperemail');
790 localStorage.removeItem('default_asking_email');
791 globalwpw.wildCard=0;
792 globalwpw.ai_step=0;
793 localStorage.setItem("wildCard", globalwpw.wildCard);
794 localStorage.setItem("aiStep", globalwpw.ai_step);
795 globalwpw.formfieldid = '';
796 localStorage.setItem("formfieldid", globalwpw.formfieldid);
797 globalwpw.formStep='welcome';
798 localStorage.setItem("formStep", globalwpw.formStep);
799 globalwpw.formid='';
800 localStorage.setItem("formid", globalwpw.formid);
801 globalwpw.formentry = 0;
802 localStorage.setItem("formentry", globalwpw.formentry);
803 localStorage.removeItem("cx-name" );
804 localStorage.removeItem("cx-diaplayname" );
805 localStorage.removeItem("cx-languagecode" );
806 localStorage.removeItem("cx-timezone" );
807 }
808 }
809 /*
810 * wpwbot Trees are basically product,order and support
811 * product tree : asking,showing & shopping part will be covered.
812 * order tree : showing order list and email to admin option.
813 * support tree : List of support query-answer including text & video and email to admin option.
814 */
815 var wpwTree={
816 greeting:function (msg) {
817 if(localStorage.getItem('default_asking_email')){
818 var shopperEmail = msg;
819 var validate = "";
820 var re = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
821 if(re.test(shopperEmail) != true){
822 validate = (globalwpw.settings.obj.invalid_email && globalwpw.settings.obj.invalid_email.length > 0) ? wpwKits.randomMsg(globalwpw.settings.obj.invalid_email) : "Please enter a valid email address.";
823 }
824 if(validate != ""){
825 wpwMsg.single(validate);
826 }else{
827 var email = shopperEmail;
828 $.cookie("shopperemail", email, { expires: 365 });
829 localStorage.setItem("shopperemail", email);
830
831 if (email != "") {
832 var data = {
833 action: "qcld_wb_chatbot_email_subscription",
834 name: localStorage.getItem("shopper"),
835 email: email,
836 url: window.location.href,
837 };
838
839 wpwKits.ajax(data).done(function (response) {
840 //response.
841 });
842 }
843 localStorage.removeItem('default_asking_email');
844
845 var shopperName = localStorage.getItem('shopper');
846 var shopperNameFiltered = wpwKits.toTitlecase(wpwKits.filterStopWords(shopperName));
847
848 if(globalwpw.settings.obj.ai_df_enable==1 && globalwpw.df_status_lock==0){
849 var NameGreeting=wpwKits.randomMsg(globalwpw.settings.obj.i_am) +" <strong>"+wpwMsg.oncommand_filter(globalwpw.settings.obj.agent)+"</strong>! "+ wpwKits.randomMsg(globalwpw.settings.obj.name_greeting);
850 NameGreeting = NameGreeting.replace("%%username%%", shopperName);
851 var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.wildcard_msg);
852 serviceOffer = serviceOffer.replace("%%username%%", shopperName);
853 wpwMsg.triple_nobg( NameGreeting,serviceOffer, globalwpw.wildcards )
854 globalwpw.ai_step=1;
855 globalwpw.wildCard=0;
856 localStorage.setItem("wildCard", globalwpw.wildCard);
857 localStorage.setItem("aiStep", globalwpw.ai_step);
858 }else{
859 if((globalwpw.settings.obj.skip_wp_greetings=='1') || (globalwpw.settings.obj.skip_greetings_and_menu =='1') ){
860 wpwAction.bot(shopperName)
861 }else{
862 var NameGreeting=wpwKits.randomMsg(globalwpw.settings.obj.i_am) +" <strong>"+wpwMsg.oncommand_filter(globalwpw.settings.obj.agent)+"</strong>! "+wpwKits.randomMsg(globalwpw.settings.obj.name_greeting);
863 NameGreeting = NameGreeting.replace("%%username%%", shopperNameFiltered);
864 var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.wildcard_msg);
865 if( ( globalwpw.settings.obj.show_menu_after_greetings!=0 ) && ( globalwpw.wildcards !='' ) ){
866 wpwMsg.triple_nobg( NameGreeting,serviceOffer, globalwpw.wildcards )
867 }else{
868 wpwMsg.double( NameGreeting,serviceOffer );
869 }
870 }
871 }
872 }
873 return;
874 }
875 /**
876 * When Enable DialogFlow then or else
877 */
878
879 if(globalwpw.settings.obj.ai_df_enable==1 && globalwpw.df_status_lock==0){
880 //When intialize 1 and don't have cookies then keep the name of shooper in in cookie
881 if(globalwpw.initialize==1 && !localStorage.getItem('shopper') && globalwpw.wildCard==0 && globalwpw.ai_step==0 ){
882 msg=wpwKits.toTitlecase(wpwKits.filterStopWords(msg));
883 $.cookie("shopper", msg, { expires : 365 });
884 localStorage.setItem('shopper',msg);
885 globalwpw.hasNameCookie=msg;
886
887 if(globalwpw.settings.obj.ask_email_wp_greetings == '1' && !localStorage.getItem('shopperemail')) {
888 localStorage.setItem('default_asking_email', '1');
889 var ask_msg = (globalwpw.settings.obj.asking_email && globalwpw.settings.obj.asking_email.length > 0) ? wpwKits.randomMsg(globalwpw.settings.obj.asking_email) : "Could you please provide your email address?";
890 wpwMsg.single(ask_msg);
891 } else {
892 //Greeting with name and suggesting the wildcard.
893 var NameGreeting=wpwKits.randomMsg(globalwpw.settings.obj.i_am) +" <strong>"+wpwMsg.oncommand_filter(globalwpw.settings.obj.agent)+"</strong>! "+ wpwKits.randomMsg(globalwpw.settings.obj.name_greeting);
894 NameGreeting = NameGreeting.replace("%%username%%", msg);
895 var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.wildcard_msg);
896 serviceOffer = serviceOffer.replace("%%username%%", msg);
897 //After completing two steps messaging showing wildcards.
898 wpwMsg.triple_nobg( NameGreeting,serviceOffer, globalwpw.wildcards )
899 globalwpw.ai_step=1;
900 globalwpw.wildCard=0;
901 localStorage.setItem("wildCard", globalwpw.wildCard);
902 localStorage.setItem("aiStep", globalwpw.ai_step);
903 }
904 }
905 //When returning shopper then greeting with name and wildcards.
906 else if(localStorage.getItem('shopper') && globalwpw.wildCard==0 && globalwpw.ai_step==0){
907 if(globalwpw.settings.obj.ask_email_wp_greetings == '1' && !localStorage.getItem('shopperemail')) {
908 localStorage.setItem('default_asking_email', '1');
909 var ask_msg = (globalwpw.settings.obj.asking_email && globalwpw.settings.obj.asking_email.length > 0) ? wpwKits.randomMsg(globalwpw.settings.obj.asking_email) : "Could you please provide your email address?";
910 wpwMsg.single(ask_msg);
911 } else {
912 //After asking service show the wildcards.
913 var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.wildcard_msg);
914 globalwpw.ai_step=1;
915 globalwpw.wildCard=0;
916 localStorage.setItem("wildCard", globalwpw.wildCard);
917 localStorage.setItem("aiStep", globalwpw.ai_step);
918 if( ( globalwpw.settings.obj.show_menu_after_greetings==1) && ( globalwpw.wildcards !='' ) ){
919 wpwMsg.double_nobg(serviceOffer, globalwpw.wildcards);
920 }else{
921 wpwMsg.single(serviceOffer);
922 }
923 }
924 }
925 //When user asking needs then DialogFlow will given intent after NLP steps.
926 else if(globalwpw.wildCard==0 && globalwpw.ai_step==1){
927 var dfReturns=wpwKits.dailogAIOAction(msg);
928 dfReturns.done(function( response ) {
929 if(globalwpw.settings.obj.df_api_version=='v2'){
930 response = $.parseJSON(JSON.parse(response));
931 }
932 if(wpwKits.responseIsOk(response)){
933 var userIntent=wpwKits.getIntentName(response);
934
935 if(userIntent=='start'){
936 globalwpw.wildCard=0;
937 var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.wildcard_msg);
938 console.log( globalwpw.wildcards);
939 wpwMsg.double_nobg(serviceOffer,globalwpw.wildcards);
940 }else if(userIntent=='welcome'){
941 var messages = wpwKits.getFulfillmentSpeech(response);
942 setTimeout(function () {
943 wpwMsg.single(messages);
944 },globalwpw.settings.preLoadingTime);
945 }else if(userIntent=='help'){
946 $(globalwpw.settings.messageWrapper).html(localStorage.getItem("wpwHitory"));
947 //Showing help message
948 setTimeout(function () {
949 wpwKits.scrollTo();
950
951 var helpWelcome = wpwKits.randomMsg(globalwpw.settings.obj.help_welcome);
952 var helpMsg = wpwKits.randomMsg(globalwpw.settings.obj.help_msg);
953 wpwMsg.double(helpWelcome,helpMsg);
954 //dialogflow
955 if(globalwpw.settings.obj.ai_df_enable==1 && globalwpw.df_status_lock==0){
956 globalwpw.wildCard=0;
957 globalwpw.ai_step=1;
958 localStorage.setItem("wildCard", globalwpw.wildCard);
959 localStorage.setItem("aiStep", globalwpw.ai_step);
960 }
961 },globalwpw.settings.preLoadingTime);
962 }else if(userIntent=='reset'){
963 var restWarning=globalwpw.settings.obj.reset;
964 var confirmBtn='<span class="qcld-chatbot-reset-btn" reset-data="yes" >'+globalwpw.settings.obj.yes+'</span> <span> '+globalwpw.settings.obj.or+' </span><span class="qcld-chatbot-reset-btn" reset-data="no">'+globalwpw.settings.obj.no+'</span>';
965 wpwMsg.double_nobg(restWarning,confirmBtn);
966 }else if(userIntent=='phone'){
967 if(typeof(globalwpw.hasNameCookie)=='undefined'|| globalwpw.hasNameCookie==''){
968 var shopperName= globalwpw.settings.obj.shopper_demo_name;
969 }else{
970 var shopperName=globalwpw.hasNameCookie;
971 }
972 var ask_msg = wpwKits.randomMsg(globalwpw.settings.obj.asking_phone);
973 var askEmail = (globalwpw.settings.obj.skip_wp_greetings=='1' || globalwpw.settings.obj.skip_greetings_and_menu =='1') ? 'Hello ' + ask_msg : 'Hello '+shopperName+'! '+ ask_msg;
974 wpwMsg.single(askEmail);
975 //Now updating the support part as .
976 globalwpw.supportStep='phone';
977 globalwpw.wildCard=1;
978 //keeping value in localstorage
979 localStorage.setItem("wildCard", globalwpw.wildCard);
980 localStorage.setItem("supportStep", globalwpw.supportStep);
981 }else if(userIntent=='email'){
982 if(typeof(globalwpw.hasNameCookie)=='undefined'|| globalwpw.hasNameCookie==''){
983 var shopperName= globalwpw.settings.obj.shopper_demo_name;
984 }else{
985 var shopperName=globalwpw.hasNameCookie;
986 }
987 var ask_msg = wpwKits.randomMsg(globalwpw.settings.obj.asking_email);
988 var askEmail = (globalwpw.settings.obj.skip_wp_greetings=='1' || globalwpw.settings.obj.skip_greetings_and_menu =='1') ? wpwKits.randomMsg(globalwpw.settings.obj.hello)+' '+ ask_msg : wpwKits.randomMsg(globalwpw.settings.obj.hello)+' '+shopperName+'! '+ ask_msg;
989 wpwMsg.single(askEmail);
990 //Now updating the support part as .
991 globalwpw.supportStep='email';
992 globalwpw.wildCard=1;
993 //keeping value in localstorage
994 localStorage.setItem("wildCard", globalwpw.wildCard);
995 localStorage.setItem("supportStep", globalwpw.supportStep);
996 }else if(userIntent=='faq'){
997 globalwpw.wildCard=1;
998 globalwpw.supportStep='welcome';
999 wpwAction.bot('from wildcard support');
1000 //keeping value in localstorage
1001 /*localStorage.setItem("wildCard", globalwpw.wildCard);
1002 localStorage.setItem("supportStep", globalwpw.supportStep);*/
1003 }else if(userIntent=='Default Fallback Intent'){
1004
1005 var data = {'action':'wpbo_search_response','name':globalwpw.hasNameCookie,'keyword':msg};
1006 wpwKits.ajax(data).done(function (respond) {
1007 var json=$.parseJSON(respond);
1008 if(json.status=='success'){
1009 if(typeof(json.category)!=="undefined" && json.category){
1010 var question='';
1011 $.each(json.data, function (i, obj) {
1012 question += '<span class="qcld-chatbot-wildcard qcld_simple_txt_response" data-strid="'+ obj.id +'">'+ obj.query +'</span>';
1013 });
1014 wpwMsg.single_nobg(question);
1015 }else if(json.multiple){
1016 var question='';
1017 $.each(json.data, function (i, obj) {
1018 question += '<span class="qcld-chatbot-wildcard qcld_simple_txt_response" data-strid="'+ obj.id +'">'+ obj.query +'</span>';
1019 });
1020 wpwMsg.double_nobg(wpwKits.randomMsg(globalwpw.settings.obj.did_you_mean),question);
1021 }else{
1022 wpwMsg.single(json.data[0].response);
1023 setTimeout(function(){
1024 wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard" data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
1025 },globalwpw.settings.preLoadingTime*2)
1026 }
1027 }if(wp_chatbot_obj.disable_site_search != 1){
1028
1029 wpwTree.site_search(msg)
1030 }else{
1031 msg = wpwKits.filterStopWords(msg);
1032 if(globalwpw.counter == 2 ){
1033 wpwTree.df_reply(response);
1034 setTimeout(function(){
1035 var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
1036 wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start" data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
1037 },globalwpw.settings.preLoadingTime)
1038 globalwpw.counter = 0;
1039 }else{
1040 globalwpw.counter++;
1041 wpwTree.df_reply(response);
1042 }
1043 }
1044 })
1045 }else if(wpwKits.getScore(response)!=0){ // checking is reponsing from dialogflow.
1046 var sTalkAction=wpwKits.getAction(response);
1047 if(sTalkAction!='' && sTalkAction.indexOf('smalltalk') != -1 ){
1048 var sMgs=wpwKits.getFulfillmentText(response);
1049 wpwMsg.single(sMgs);
1050 }else{
1051 var messages = wpwKits.getFulfillmentText(response);
1052 wpwTree.df_reply(response);
1053 }
1054 }else{
1055 console.log( globalwpw.wildcards);
1056 var dfDefaultMsg=globalwpw.settings.obj.df_defualt_reply;
1057 wpwMsg.double_nobg(dfDefaultMsg,globalwpw.wildcards);
1058 }
1059 }else{
1060 console.log( globalwpw.wildcards);
1061 //if bad request or limit cross then
1062 globalwpw.df_status_lock=0;
1063 var dfDefaultMsg=globalwpw.settings.obj.df_defualt_reply;
1064 wpwMsg.double_nobg(dfDefaultMsg,globalwpw.wildcards);
1065 }
1066 }).fail(function (error) {
1067 var dfDefaultMsg=globalwpw.settings.obj.df_defualt_reply;
1068 console.log( globalwpw.wildcards);
1069 wpwMsg.double_nobg(dfDefaultMsg,globalwpw.wildcards);
1070 });
1071 }
1072 }else{
1073 //When intialize 1 and don't have cookies then keep the name of shooper in in cookie
1074 if(globalwpw.initialize==1 && !localStorage.getItem('shopper') && globalwpw.wildCard==0){
1075 msg=wpwKits.toTitlecase(msg);
1076 msg1=wpwKits.toTitlecase(wpwKits.filterStopWords(msg));
1077 $.cookie("shopper", msg, { expires : 365 });
1078 localStorage.setItem('shopper',msg);
1079 globalwpw.hasNameCookie=msg;
1080
1081 if(globalwpw.settings.obj.ask_email_wp_greetings == '1' && !localStorage.getItem('shopperemail')) {
1082 localStorage.setItem('default_asking_email', '1');
1083 var ask_msg = (globalwpw.settings.obj.asking_email && globalwpw.settings.obj.asking_email.length > 0) ? wpwKits.randomMsg(globalwpw.settings.obj.asking_email) : "Could you please provide your email address?";
1084 wpwMsg.single(ask_msg);
1085 } else {
1086 //Greeting with name and suggesting the wildcard.
1087 if((globalwpw.settings.obj.skip_wp_greetings=='1') || (globalwpw.settings.obj.skip_greetings_and_menu =='1') ){
1088 wpwAction.bot(msg)
1089 }else{
1090 var NameGreeting=wpwKits.randomMsg(globalwpw.settings.obj.i_am) +" <strong>"+wpwMsg.oncommand_filter(globalwpw.settings.obj.agent)+"</strong>! "+wpwKits.randomMsg(globalwpw.settings.obj.name_greeting);
1091 NameGreeting = NameGreeting.replace("%%username%%", msg1);
1092 var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.wildcard_msg);
1093 //After completing two steps messaging showing wildcards.
1094 if( ( globalwpw.settings.obj.show_menu_after_greetings!=0 ) && ( globalwpw.wildcards !='' ) ){
1095 wpwMsg.triple_nobg( NameGreeting,serviceOffer, globalwpw.wildcards )
1096
1097 }else{
1098 wpwMsg.double( NameGreeting,serviceOffer );
1099 }
1100 }
1101 }
1102 }
1103 //When returning shopper then greeting with name and wildcards.
1104 else if(localStorage.getItem('shopper') && globalwpw.wildCard==0){
1105 if(globalwpw.settings.obj.ask_email_wp_greetings == '1' && !localStorage.getItem('shopperemail')) {
1106 localStorage.setItem('default_asking_email', '1');
1107 var ask_msg = (globalwpw.settings.obj.asking_email && globalwpw.settings.obj.asking_email.length > 0) ? wpwKits.randomMsg(globalwpw.settings.obj.asking_email) : "Could you please provide your email address?";
1108 wpwMsg.single(ask_msg);
1109 } else {
1110 //After asking service show the wildcards.
1111 var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.wildcard_msg);
1112 console.log( globalwpw.wildcards);
1113 wpwMsg.double_nobg(serviceOffer,globalwpw.wildcards);
1114 }
1115 }
1116 }
1117 },
1118 df_multi_handle:function(array){
1119 if(array.length>0){
1120 setTimeout(function(){
1121 wpwMsg.single(array[0]);
1122 array.splice(0, 1);
1123 setTimeout(function(){
1124 wpwTree.df_multi_handle(array);
1125 }, globalwpw.settings.preLoadingTime)
1126 }, globalwpw.settings.preLoadingTime)
1127 }
1128 },
1129 df_reply:function(response){
1130 //checking for facebook platform
1131 var i = 0;
1132 var html = '';
1133 var responses = [];
1134 if(globalwpw.settings.obj.df_api_version=='v1'){
1135 var messages = (response && response.result && response.result.fulfillment && response.result.fulfillment.messages) ? response.result.fulfillment.messages : [];
1136 var action = (response && response.result && typeof response.result.actionIncomplete !== 'undefined') ? response.result.actionIncomplete : false;
1137 jQuery.each( messages, function( key, message ) {
1138 html = '';
1139 i +=1;
1140 if(message.type==2){
1141 html += "<p>" + message.title + "</p>";
1142 var index = 0;
1143 for (index; index<message.replies.length; index++) {
1144 html += "<span class=\"wpb-quick-reply qcld-chat-common\">"+ message.replies[index] +"</span>";
1145 }
1146 }
1147 //check for default reply
1148 else if(message.type==0 && message.speech!=''){
1149 html += message.speech;
1150 }else if(message.type==1){
1151 html +='';
1152 }else if(message.type=='simple_response'){
1153 html += message.textToSpeech;
1154 }
1155 if(html!=''){
1156 responses.push(html);
1157 }
1158 })
1159 }else{
1160 var messages = (response && response.queryResult && response.queryResult.fulfillmentMessages) ? response.queryResult.fulfillmentMessages : [];
1161 var actioncomplete = (response && response.queryResult && typeof response.queryResult.allRequiredParamsPresent !== 'undefined') ? response.queryResult.allRequiredParamsPresent : false;
1162 jQuery.each( messages, function( key, message ) {
1163 html = '';
1164 i +=1;
1165 //handeling quickreplies
1166 if(typeof message.quickReplies !=="undefined"){
1167 if(typeof message.quickReplies.title !=="undefined"){
1168 html += "<p>" + message.quickReplies.title + "</p>";
1169 }
1170 if(typeof message.quickReplies.quickReplies !=="undefined" ){
1171 var index = 0;
1172 for (index; index<message.quickReplies.quickReplies.length; index++) {
1173 html += "<span class=\"wpb-quick-reply qcld-chat-common\">"+ message.quickReplies.quickReplies[index] +"</span>";
1174 }
1175 }
1176 }
1177 //handleing default response
1178 else if(typeof message.text !=="undefined"){
1179 if(typeof message.text.text !=="undefined" && message.text.text.length>0){
1180 html += message.text.text[0];
1181 }
1182 }
1183 if(html!=''){
1184 responses.push(html);
1185 }
1186 })
1187 }
1188 wpwTree.df_multi_handle(responses);
1189 },
1190 support:function (msg) {
1191 if(globalwpw.wildCard==1 && globalwpw.supportStep=='welcome'){
1192 var welcomeMsg= wpwKits.randomMsg(globalwpw.settings.obj.support_welcome);
1193 var orPhoneSuggest = '';
1194 if(globalwpw.settings.obj.support_query.length>0){
1195 var supportsItems = '';
1196 var messenger = '';
1197 if(globalwpw.settings.obj.enable_messenger==1) {
1198 messenger += '<span class="qcld-chatbot-wildcard" data-wildcart="messenger">'+wpwKits.randomMsg(globalwpw.settings.obj.messenger_label)+'</span>';
1199 }
1200 if(globalwpw.settings.obj.enable_whats==1) {
1201 messenger += '<span class="qcld-chatbot-wildcard" data-wildcart="whatsapp">'+wpwKits.randomMsg(globalwpw.settings.obj.whats_label)+'</span>';
1202 }
1203 if(globalwpw.settings.obj.disable_feedback=='') {
1204 messenger+= '<span class="qcld-chatbot-suggest-email" >'+wpwKits.randomMsg(globalwpw.settings.obj.feedback_label)+'</span>';
1205 }
1206 $.each(globalwpw.settings.obj.support_query, function (i, obj) {
1207 supportsItems += '<span class="qcld-chatbot-support-items" data-query-index="' + i + '">' + obj + '</span>';
1208 });
1209 var orEmailSuggest = '<span class="qcld-chatbot-suggest-email" >' + wpwKits.randomMsg(globalwpw.settings.obj.support_email) + '</span>';
1210 if(globalwpw.settings.obj.call_sup=="") {
1211 orPhoneSuggest = '<span class="qcld-chatbot-suggest-phone" >' + wpwKits.randomMsg(globalwpw.settings.obj.support_phone) + '</span>';
1212 }
1213 var queryOrEmail=supportsItems/*+orEmailSuggest+orPhoneSuggest+messenger*/;
1214 }else {
1215 if(globalwpw.settings.obj.call_sup=="") {
1216 orPhoneSuggest = '<span class="qcld-chatbot-suggest-phone" >' + wpwKits.randomMsg(globalwpw.settings.obj.support_phone) + '</span>';
1217 }
1218 var queryOrEmail='<span class="qcld-chatbot-suggest-email" >' + wpwKits.randomMsg(globalwpw.settings.obj.support_email) + '</span>'+orPhoneSuggest;
1219 }
1220 wpwMsg.double_nobg(welcomeMsg,queryOrEmail);
1221 globalwpw.wildCard = 0;
1222 } else if(globalwpw.wildCard==1 && globalwpw.supportStep=='email'){
1223 globalwpw.shopperEmail=msg;
1224 var validate = "";
1225 var re = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
1226 if( re.test(globalwpw.shopperEmail)!=true){
1227 validate = validate+wpwKits.randomMsg(globalwpw.settings.obj.invalid_email) ;
1228 }
1229 if(validate == ""){
1230 var askingMsg=wpwKits.randomMsg(globalwpw.settings.obj.asking_msg);
1231 wpwMsg.single(askingMsg);
1232 globalwpw.supportStep='message';
1233 //keeping value in localstorage
1234 localStorage.setItem("supportStep", globalwpw.supportStep);
1235 }else{
1236 wpwMsg.single(validate);
1237 globalwpw.supportStep='email';
1238 //keeping value in localstorage
1239 localStorage.setItem("supportStep", globalwpw.supportStep);
1240 }
1241 }else if(globalwpw.wildCard==1 && globalwpw.supportStep=='message'){
1242 var data = {'action':'qcld_wb_chatbot_support_email','name':globalwpw.hasNameCookie,'email':globalwpw.shopperEmail,'message':msg,'nonce':globalwpw.settings.obj.ajax_nonce};
1243 wpwKits.ajax(data).done(function (response) {
1244 var json=$.parseJSON(response);
1245 var orPhoneSuggest='';
1246 if(json.status=='success'){
1247 var sucMsg=json.message;
1248 wpwMsg.single(sucMsg);
1249 //Asking email after showing answer.
1250 setTimeout(function(){
1251 if(globalwpw.settings.obj.call_sup=="") {
1252 orPhoneSuggest = '<span class="qcld-chatbot-suggest-phone" >' + wpwKits.randomMsg(globalwpw.settings.obj.support_phone) + '</span>';
1253 }
1254 var orEmailSuggest='<span class="qcld-chatbot-suggest-email" >'+wpwKits.randomMsg(globalwpw.settings.obj.support_email)+'</span>';
1255 wpwKits.suggestEmail(orEmailSuggest+orPhoneSuggest);
1256 globalwpw.wildCard=0;
1257 },globalwpw.settings.preLoadingTime);
1258 }else{
1259 var failMsg=json.message;
1260 wpwMsg.single(failMsg);
1261 //Asking email after showing answer.
1262 setTimeout(function(){
1263 if(globalwpw.settings.obj.call_sup=="") {
1264 orPhoneSuggest = '<span class="qcld-chatbot-suggest-phone" >' + wpwKits.randomMsg(globalwpw.settings.obj.support_phone) + '</span>';
1265 }
1266 var orEmailSuggest='<span class="qcld-chatbot-suggest-email" >'+wpwKits.randomMsg(globalwpw.settings.obj.support_email)+'</span>';
1267 wpwKits.suggestEmail(orEmailSuggest+orPhoneSuggest);
1268 globalwpw.wildCard=0;
1269 },globalwpw.settings.preLoadingTime);
1270 }
1271 });
1272 }else if(globalwpw.wildCard==1 && globalwpw.supportStep=='phone'){
1273 var data = {'action':'qcld_wb_chatbot_support_phone','name':globalwpw.hasNameCookie,'phone':msg,'nonce':globalwpw.settings.obj.ajax_nonce};
1274 wpwKits.ajax(data).done(function (response) {
1275 var json=$.parseJSON(response);
1276 var orPhoneSuggest='';
1277 if(json.status=='success'){
1278 var sucMsg=json.message;
1279 wpwMsg.single(sucMsg);
1280 //Asking email after showing answer.
1281 setTimeout(function(){
1282 if(globalwpw.settings.obj.call_sup=="") {
1283 orPhoneSuggest = '<span class="qcld-chatbot-suggest-phone" >' + wpwKits.randomMsg(globalwpw.settings.obj.support_phone) + '</span>';
1284 }
1285 var orEmailSuggest='<span class="qcld-chatbot-suggest-email" >'+wpwKits.randomMsg(globalwpw.settings.obj.support_email)+'</span>';
1286 wpwKits.suggestEmail(orEmailSuggest+orPhoneSuggest);
1287 globalwpw.wildCard=0;
1288 },globalwpw.settings.preLoadingTime);
1289 }else{
1290 var failMsg=json.message;
1291 wpwMsg.single(failMsg);
1292 //Asking email after showing answer.
1293 setTimeout(function(){
1294 if(globalwpw.settings.obj.call_sup=="") {
1295 orPhoneSuggest = '<span class="qcld-chatbot-suggest-phone" >' + wpwKits.randomMsg(globalwpw.settings.obj.support_phone) + '</span>';
1296 }
1297 var orEmailSuggest='<span class="qcld-chatbot-suggest-email" >'+wpwKits.randomMsg(globalwpw.settings.obj.support_email)+'</span>';
1298 wpwKits.suggestEmail(orEmailSuggest+orPhoneSuggest);
1299 globalwpw.wildCard=0;
1300 },globalwpw.settings.preLoadingTime);
1301 }
1302 });
1303 }else if(globalwpw.wildCard==1 && globalwpw.supportStep=='search'){
1304 msg = wpwKits.filterStopWords(msg);
1305 var data = {'action':'wpbo_search_site','name':globalwpw.hasNameCookie,'keyword':msg, 'security':wp_chatbot_obj.ajax_nonce };
1306 wpwKits.ajax(data).done(function (response) {
1307 var json=$.parseJSON(response);
1308 if(json.status=='success'){
1309 wpwMsg.double_nobg(wp_chatbot_obj.found_result_message,json.html);
1310 }else{
1311
1312 wpwMsg.single( wpwKits.randomMsg(wp_chatbot_obj.product_fail));
1313
1314 // setTimeout(function(){
1315 // var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
1316 // wpwMsg.double_nobg(serviceOffer,globalwpw.wildcards);
1317 // },globalwpw.settings.preLoadingTime)
1318 }
1319 });
1320 }//
1321 },
1322 formbuilder:function(msg){
1323 if(globalwpw.wildCard==7 && globalwpw.formStep=='welcome'){
1324 var data = {'action':'wpbot_get_form','formid':msg};
1325 wpwKits.ajax(data).done(function (response) {
1326 if(response!=''){
1327 var json=$.parseJSON(response);
1328 globalwpw.prevform = json.ID;
1329 globalwpw.formfieldid = json.ID;
1330 localStorage.setItem("formfieldid", globalwpw.formfieldid);
1331 globalwpw.formStep='field';
1332 localStorage.setItem("formStep", globalwpw.formStep);
1333 globalwpw.formid=msg;
1334 localStorage.setItem("formid", globalwpw.formid);
1335 localStorage.setItem("wildCard", globalwpw.wildCard);
1336 var label = json.label;
1337 if(json.type=='dropdown'){
1338 var html = '';
1339 jQuery.each(json.config.option, function(key, value){
1340 html += '<span class="qcld-chatbot-wildcard qcld-chatbot-formanswer" data-form-value="'+value.value+'" >'+value.label+'</span>';
1341 })
1342 wpwMsg.double(label, html);
1343 }else if(json.type=='checkbox'){
1344 var html = '';
1345 jQuery.each(json.config.option, function(key, value){
1346 html += '<input type="checkbox" class="qcld-chatbot-checkbox" value="'+value.value+'">'+value.label+'<br>';
1347 })
1348 wpwMsg.double(label, html);
1349 }else if(json.type=='html'){
1350 wpwMsg.single(json.config.default);
1351 globalwpw.formfieldid = json.ID;
1352 localStorage.setItem("formfieldid", globalwpw.formfieldid);
1353 globalwpw.formentry = json.entry;
1354 localStorage.setItem("formentry", globalwpw.formentry);
1355 setTimeout(function(){
1356 wpwTree.formbuilder();
1357 }, globalwpw.settings.preLoadingTime)
1358 }else{
1359 wpwMsg.single(label);
1360 }
1361 }
1362 })
1363 }else if(globalwpw.wildCard==7 && globalwpw.formStep=='field'){
1364 var data = {'action':'wpbot_capture_form_value','formid':globalwpw.formid, 'fieldid': globalwpw.formfieldid, 'answer': msg, 'entry':globalwpw.formentry,'session': localStorage.getItem('botsessionid'), 'name': globalwpw.hasNameCookie,'email':localStorage.getItem('shopperemail'), 'url': window.location.href};
1365 wpwKits.ajax(data).done(function (response) {
1366 var json=$.parseJSON(response);
1367 if(json.status=='incomplete'){
1368 if( json.type !='html' ){
1369 if($('.chatbot_intent_reload').length > 0){
1370 $('.chatbot_intent_reload').remove();
1371 }
1372 $('#wp-chatbot-editor-container').append('<span class="chatbot_intent_reload" title="Click to go back." data-wildcard="7" data-step="welcome" data-intent-type="formbuilder" data-intent="'+globalwpw.prevform+'"><i class="dashicons dashicons-controls-repeat"></i></span>');
1373 globalwpw.prevform = globalwpw.formfieldid;
1374 }
1375 globalwpw.formStep='field';
1376 localStorage.setItem("formStep", globalwpw.formStep);
1377 globalwpw.formfieldid = json.ID;
1378 localStorage.setItem("formfieldid", globalwpw.formfieldid);
1379 globalwpw.formentry = json.entry;
1380 localStorage.setItem("formentry", globalwpw.formentry);
1381 var label = json.label;
1382 if(json.type=='dropdown'){
1383 var html = '';
1384 jQuery.each(json.config.option, function(key, value){
1385 html += '<span class="qcld-chatbot-wildcard qcld-chatbot-formanswer" data-form-value="'+value.value+'" >'+value.label+'</span>';
1386 })
1387 wpwMsg.double(label, html);
1388 }else if(json.type=='html'){
1389 wpwMsg.single(json.config.default);
1390 globalwpw.formfieldid = json.ID;
1391 localStorage.setItem("formfieldid", globalwpw.formfieldid);
1392 globalwpw.formentry = json.entry;
1393 localStorage.setItem("formentry", globalwpw.formentry);
1394 setTimeout(function(){
1395 wpwTree.formbuilder();
1396 }, 500)
1397 }else if(json.type=='checkbox'){
1398 jQuery('.qcld-chatbot-checkbox').val('');
1399 var html = '';
1400 jQuery.each(json.config.option, function(key, value){
1401 html += '<input type="checkbox" class="qcld-chatbot-checkbox" value="'+value.value+'">'+value.label+'<br>';
1402 })
1403 wpwMsg.double(label, html);
1404 }else if(json.type=='date_picker'){
1405 if(json.hasOwnProperty("additional") && json.additional!=''){
1406 label +='<i class="wpbot_addition_label">'+json.additional+'</i>';
1407 }
1408 wpwMsg.single(label);
1409 jQuery('#wp-chatbot-editor').blur();
1410 jQuery('#wp-chatbot-editor').datetimepicker();
1411 }else if(json.type=='number'){
1412 if(json.hasOwnProperty("additional") && json.additional!=''){
1413 label +='<i class="wpbot_addition_label">'+json.additional+'</i>';
1414 }
1415 wpwMsg.single(label);
1416 jQuery('#wp-chatbot-editor').addClass("qcnumberfield");
1417 if(json.hasOwnProperty("config") && json.config.hasOwnProperty("min") && json.config.min>0){
1418 jQuery('#wp-chatbot-editor').attr("minlength", json.config.min);
1419 }
1420 if(json.hasOwnProperty("config") && json.config.hasOwnProperty("max") && json.config.max>0){
1421 jQuery('#wp-chatbot-editor').attr("maxlength", json.config.max);
1422 }
1423 }else if(json.type=='email'){
1424 if(json.hasOwnProperty("additional") && json.additional!=''){
1425 label +='<i class="wpbot_addition_label">'+json.additional+'</i>';
1426 }
1427 wpwMsg.single(label);
1428 jQuery('#wp-chatbot-editor').attr("type", "email");
1429 }else if(json.type=='url'){
1430 if(json.hasOwnProperty("additional") && json.additional!=''){
1431 label +='<i class="wpbot_addition_label">'+json.additional+'</i>';
1432 }
1433 wpwMsg.single(label);
1434 jQuery('#wp-chatbot-editor').attr("type", "url");
1435 }else if(json.type=='phone'){
1436 wpwMsg.single(label);
1437 jQuery('#wp-chatbot-editor').addClass('qcphonebasicus');
1438 }else if(json.type=='calculation'){
1439 let calresult = json.calresult;
1440 calresult = eval(calresult);
1441 setTimeout(function(){
1442 var cal = (json.calbefore +' '+ calresult.toFixed(2) +' '+ json.calafter)
1443 wpwTree.formbuilder(cal);
1444 wpwMsg.single(cal);
1445 }, globalwpw.settings.preLoadingTime)
1446 }else if(json.type=='hidden'){
1447 var email = json.config.default;
1448 if( globalwpw.settings.obj.order_login == 1 && json.slug=='email' ){
1449 email = globalwpw.settings.obj.order_email;
1450 }
1451 wpwTree.formbuilder(email);
1452 }else if(json.type=='text'){
1453 wpwMsg.single(label);
1454 }else{
1455 // wpwMsg.single(label);
1456 }
1457 }else{
1458 if($('.chatbot_intent_reload').length > 0){
1459 $('.chatbot_intent_reload').attr('data-step', 'complete');
1460 }
1461 globalwpw.formfieldid = '';
1462 localStorage.setItem("formfieldid", globalwpw.formfieldid);
1463 globalwpw.formStep='welcome';
1464 localStorage.setItem("formStep", globalwpw.formStep);
1465 globalwpw.formid='';
1466 localStorage.setItem("formid", globalwpw.formid);
1467 globalwpw.wildCard = 0;
1468 localStorage.setItem("wildCard", globalwpw.wildCard);
1469 globalwpw.formentry = 0;
1470 localStorage.setItem("formentry", globalwpw.formentry);
1471 var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.wildcard_msg);
1472 setTimeout(function(){
1473 wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start" data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
1474 }, globalwpw.settings.preLoadingTime);
1475 if(jQuery('.chatbot_intent_reload').length>0){
1476 jQuery('.chatbot_intent_reload').remove();
1477 }
1478 }
1479 })
1480 }
1481 },
1482 formbuilder_force_complete:function(msg){
1483 //destroy date picker
1484 //if ( jQuery.isFunction(jQuery.fn.datetimepicker) ) {
1485 if ( typeof jQuery.fn.datetimepicker === 'function' ) {
1486 jQuery('#wp-chatbot-editor').datetimepicker('destroy');
1487 }
1488 jQuery('#wp-chatbot-editor').attr("type", "text");
1489 jQuery('#wp-chatbot-editor').prop("disabled", false);
1490 jQuery('#wp-chatbot-editor').removeAttr("multiple");
1491 jQuery('#wp-chatbot-editor').removeClass('qcphonebasicus');
1492 jQuery('#wp-chatbot-editor').removeClass("qcnumberfield");
1493 jQuery('#wp-chatbot-editor').removeAttr("minlength");
1494 jQuery('#wp-chatbot-editor').removeAttr("maxlength");
1495 if(globalwpw.wildCard==7 && globalwpw.formStep=='field'){
1496 var data = {'action':'wpbot_capture_form_value','formid':globalwpw.formid, 'fieldid': globalwpw.formfieldid, 'answer': msg, 'entry':globalwpw.formentry, 'session': localStorage.getItem('botsessionid'), 'name':globalwpw.hasNameCookie, 'email':localStorage.getItem('shopperemail'), 'url': window.location.href, 'do_complete': 1};
1497 globalwpw.formfieldid = '';
1498 localStorage.setItem("formfieldid", globalwpw.formfieldid);
1499 globalwpw.formStep='welcome';
1500 localStorage.setItem("formStep", globalwpw.formStep);
1501 globalwpw.formid='';
1502 localStorage.setItem("formid", globalwpw.formid);
1503 globalwpw.wildCard = 0;
1504 localStorage.setItem("wildCard", globalwpw.wildCard);
1505 globalwpw.formentry = 0;
1506 localStorage.setItem("formentry", globalwpw.formentry);
1507 wpwKits.ajax(data).done(function (response) {
1508 var json=$.parseJSON(response);
1509 if( json.status == 'complete' ){
1510 //
1511 }
1512 })
1513 }
1514 },
1515 reset: function( msg ){
1516 if( globalwpw.wildCard == 25 && globalwpw.resetStep == 'welcome' ){
1517 var restWarning= globalwpw.settings.obj.reset;
1518 var confirmBtn='<span class="qcld-chatbot-reset-btn" reset-data="yes" >'+globalwpw.settings.obj.yes+'</span> <span> '+globalwpw.settings.obj.or+' </span><span class="qcld-chatbot-reset-btn" reset-data="no">'+globalwpw.settings.obj.no+'</span>';
1519 globalwpw.resetStep = 'answer'
1520 wpwMsg.double_nobg(restWarning,confirmBtn);
1521 setTimeout(function(){
1522 // wpwKits.disableEditor('');
1523 }, 1500)
1524 }else if( globalwpw.wildCard == 25 && globalwpw.resetStep == 'answer' ){
1525 if( msg.toLowerCase() == globalwpw.settings.obj.yes.toLowerCase() ){
1526 wpwKits.reset();
1527 var number = Math.random() // 0.9394456857981651
1528 number.toString(36); // '0.xtis06h6'
1529 var id = number.toString(36).substr(2); // 'xtis06h6'
1530 localStorage.setItem('botsessionid', id);
1531 wpwWelcome.greeting();
1532 wpwKits.enableEditor(wpwKits.randomMsg(globalwpw.settings.obj.send_a_msg));
1533 }else if( msg.toLowerCase() == globalwpw.settings.obj.no.toLowerCase() ){
1534
1535 wpwAction.bot(globalwpw.settings.obj.sys_key_help.toLowerCase());
1536 wpwKits.enableEditor(wpwKits.randomMsg(globalwpw.settings.obj.send_a_msg));
1537 }
1538 globalwpw.wildCard = 0;
1539 globalwpw.resetStep = 'welcome'
1540 }
1541 },
1542 formatResponse: function(response) {
1543 let cleanResponse = response.replace(/(\w+)\n/g,'');
1544 cleanResponse = cleanResponse.replace(/(.*?)/gs, '<pre>$1</pre>');
1545 cleanResponse = cleanResponse.replace(/(.*?)/g, '<code>$1</code>');
1546 return cleanResponse;
1547 },
1548 openai_reply:function(msg){
1549
1550 if(globalwpw.settings.obj.openai_enabled == 1){
1551
1552 var customAappend = globalwpw.settings.obj.qcld_openai_append_content;
1553 var customMessage = customAappend ? msg + ' ' + customAappend : msg;
1554
1555 qcldPushAiContext('user', customMessage);
1556
1557 if(wp_chatbot_obj.is_stream_enabled == '1'){
1558 // Callers already append botPreloader before calling openai_reply
1559 var streamData = {
1560 action: 'qcld_stream_openai',
1561 name: globalwpw.hasNameCookie,
1562 keyword: customMessage,
1563 active_ai_action: globalwpw.active_ai_action || "",
1564 ai_history: JSON.stringify(globalwpw.aiContext),
1565 nonce: qcld_chatbot_obj.nonce
1566 };
1567 qcldStreamOpenAI(streamData);
1568 } else {
1569 var data = {'action':'qcld_openai_response','name':globalwpw.hasNameCookie,'keyword':customMessage,'active_ai_action':(globalwpw.active_ai_action || ""),'ai_history':JSON.stringify(globalwpw.aiContext),nonce: qcld_chatbot_obj.nonce};
1570
1571 wpwKits.ajax(data).done(function (res) {
1572 if( res == '' || typeof res === 'object' ){
1573 var json = res;
1574 }if(typeof res === 'string'){
1575 var json = $.parseJSON(res);
1576 }
1577
1578 if(json.status=='success'){
1579 qcldPushAiContext('assistant', json.message);
1580
1581 var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
1582
1583 setTimeout(function(){
1584 var isFormInProgress = qcldIsAiFormInProgress();
1585 if (json.message && json.message.indexOf('__AI_FORM_IN_PROGRESS__') !== -1) {
1586 isFormInProgress = true;
1587 json.message = json.message.replace(/__AI_FORM_IN_PROGRESS__/g, '').trim();
1588 }
1589 if (json.message && (json.message.indexOf('AI_FORM_DATA') !== -1 || json.message.indexOf('ai-form-summary-card') !== -1)) {
1590 isFormInProgress = false;
1591 if (typeof globalwpw !== 'undefined') {
1592 globalwpw.aiContext = [];
1593 globalwpw.active_ai_action = '';
1594 globalwpw.qcld_ai_form_persisted_state = false;
1595 }
1596 }
1597
1598 wpwMsg.single(json.message);
1599
1600 if(!isFormInProgress && (globalwpw.settings.obj.qcld_disable_repited_startmenu != "1")){
1601 if(globalwpw.settings.obj.disable_repeatative!=1){
1602 setTimeout(function(){
1603 var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
1604 if((globalwpw.settings.obj.qcld_disable_repited_startmenu != "1") && ((globalwpw.settings.obj.disable_back_to_start != '1' && globalwpw.settings.obj.skip_greetings_and_menu != 1))){
1605 wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start" data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
1606 }
1607 },globalwpw.settings.preLoadingTime)
1608 }else{
1609 setTimeout(function(){
1610 if((globalwpw.settings.obj.qcld_disable_repited_startmenu != "1") && ((globalwpw.settings.obj.disable_back_to_start != '1' && globalwpw.settings.obj.skip_greetings_and_menu != 1))){
1611 wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start" data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
1612 }
1613 }, globalwpw.settings.preLoadingTime*2);
1614 }
1615 }
1616 if(!isFormInProgress) { $(globalwpw.settings.messageContainer).find('.wp-chatbot-msg:last .qcld-like-dislike-icon').css('display', 'block'); }
1617
1618 },globalwpw.settings.preLoadingTime)
1619 }
1620 })
1621 }
1622 }
1623 if(globalwpw.settings.obj.openrouter_enabled == 1){
1624
1625 var customAappend = globalwpw.settings.obj.qcld_openrouter_append_content;
1626 var customprepend = globalwpw.settings.obj.qcld_openrouter_prepend_content;
1627 var customMessage = customprepend ? customprepend + ' ' + msg : msg;
1628 customMessage = customAappend ? customMessage + ' ' + customAappend : customMessage;
1629
1630 qcldPushAiContext('user', customMessage);
1631
1632 var data = {'action':'openrouter_response','name':globalwpw.hasNameCookie,'keyword':customMessage, 'active_ai_action':(globalwpw.active_ai_action || ""), nonce: qcld_chatbot_obj.nonce, ai_history: JSON.stringify(globalwpw.aiContext)};
1633 wpwKits.ajax(data).done(function (res) {
1634 if( res == '' || typeof res === 'object' ){
1635 var json = res;
1636 }if(typeof res === 'string'){
1637 var json = $.parseJSON(res);
1638 }
1639 if(json.status=='success'){
1640 qcldPushAiContext('assistant', json.message);
1641 var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
1642
1643 setTimeout(function(){
1644 var isFormInProgress = qcldIsAiFormInProgress();
1645 if (json.message && json.message.indexOf('__AI_FORM_IN_PROGRESS__') !== -1) {
1646 isFormInProgress = true;
1647 json.message = json.message.replace(/__AI_FORM_IN_PROGRESS__/g, '').trim();
1648 }
1649 if (json.message && (json.message.indexOf('AI_FORM_DATA') !== -1 || json.message.indexOf('ai-form-summary-card') !== -1)) {
1650 isFormInProgress = false;
1651 if (typeof globalwpw !== 'undefined') {
1652 globalwpw.aiContext = [];
1653 globalwpw.active_ai_action = '';
1654 globalwpw.qcld_ai_form_persisted_state = false;
1655 }
1656 }
1657
1658 wpwMsg.single(json.message);
1659
1660 if(!isFormInProgress && globalwpw.settings.obj.qcld_disable_repited_startmenu != "1" ){
1661 if(globalwpw.settings.obj.disable_repeatative!=1){
1662 setTimeout(function(){
1663 var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
1664 if((globalwpw.settings.obj.qcld_disable_repited_startmenu != "1") && ((globalwpw.settings.obj.disable_back_to_start != '1' && globalwpw.settings.obj.skip_greetings_and_menu != 1))){
1665 wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start" data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
1666 }
1667 },globalwpw.settings.preLoadingTime)
1668 }else{
1669 setTimeout(function(){
1670 if((globalwpw.settings.obj.qcld_disable_repited_startmenu != "1") && ((globalwpw.settings.obj.disable_back_to_start != '1' && globalwpw.settings.obj.skip_greetings_and_menu != 1))){
1671 wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start" data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
1672 }
1673 }, globalwpw.settings.preLoadingTime*2);
1674 }
1675 }
1676 if(!isFormInProgress) { $(globalwpw.settings.messageContainer).find('.wp-chatbot-msg:last .qcld-like-dislike-icon').css('display', 'block'); }
1677 },globalwpw.settings.preLoadingTime)
1678 }else{
1679 wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start" data-wildcart="back">' + 'Sorry, I encountered an error processing your AI request. Please check api key and try again later.' + '</span>');
1680 }
1681 })
1682 }
1683
1684 if(globalwpw.settings.obj.claude_enabled == 1){
1685 var customAappend = globalwpw.settings.obj.qcld_claude_append_content;
1686 var customprepend = globalwpw.settings.obj.qcld_claude_prepend_content;
1687 var customMessage = customprepend ? customprepend + ' ' + msg : msg;
1688 customMessage = customAappend ? customMessage + ' ' + customAappend : customMessage;
1689
1690 qcldPushAiContext('user', customMessage);
1691
1692 var claudeStreamEnabled = globalwpw.settings.obj.qcld_claude_stream_enabled;
1693 if (claudeStreamEnabled == "1") {
1694 const claudeStreamData = {
1695 action: "qcld_stream_claude",
1696 name: globalwpw.hasNameCookie,
1697 keyword: customMessage,
1698 active_ai_action: globalwpw.active_ai_action || "",
1699 ai_history: JSON.stringify(globalwpw.aiContext)
1700 };
1701 streamClaude(claudeStreamData);
1702 return;
1703 } else {
1704 var data = {'action':'claude_response','name':globalwpw.hasNameCookie,'keyword':customMessage, 'active_ai_action':(globalwpw.active_ai_action || ""), nonce: qcld_chatbot_obj.nonce, ai_history: JSON.stringify(globalwpw.aiContext)};
1705 wpwKits.ajax(data).done(function (res) {
1706 if( res == '' || typeof res === 'object' ){
1707 var json = res;
1708 }if(typeof res === 'string'){
1709 var json = $.parseJSON(res);
1710 }
1711 if(json.status=='success'){
1712 qcldPushAiContext('assistant', json.message);
1713 var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
1714 setTimeout(function(){
1715 var isFormInProgress = qcldIsAiFormInProgress();
1716 if (json.message && json.message.indexOf('__AI_FORM_IN_PROGRESS__') !== -1) {
1717 isFormInProgress = true;
1718 json.message = json.message.replace(/__AI_FORM_IN_PROGRESS__/g, '').trim();
1719 }
1720 if (json.message && (json.message.indexOf('AI_FORM_DATA') !== -1 || json.message.indexOf('ai-form-summary-card') !== -1)) {
1721 isFormInProgress = false;
1722 if (typeof globalwpw !== 'undefined') {
1723 globalwpw.aiContext = [];
1724 globalwpw.active_ai_action = '';
1725 globalwpw.qcld_ai_form_persisted_state = false;
1726 }
1727 }
1728
1729 wpwMsg.single(json.message);
1730 if(!isFormInProgress && globalwpw.settings.obj.qcld_disable_repited_startmenu != "1" ){
1731 if(globalwpw.settings.obj.disable_repeatative!=1){
1732 setTimeout(function(){
1733 var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
1734 if((globalwpw.settings.obj.qcld_disable_repited_startmenu != "1") && ((globalwpw.settings.obj.disable_back_to_start != '1' && globalwpw.settings.obj.skip_greetings_and_menu != 1))){
1735 wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start" data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
1736 }
1737 },globalwpw.settings.preLoadingTime)
1738 }else{
1739 setTimeout(function(){
1740 if((globalwpw.settings.obj.qcld_disable_repited_startmenu != "1") && ((globalwpw.settings.obj.disable_back_to_start != '1' && globalwpw.settings.obj.skip_greetings_and_menu != 1))){
1741 wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start" data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
1742 }
1743 }, globalwpw.settings.preLoadingTime*2);
1744 }
1745 }
1746 if(!isFormInProgress) { $(globalwpw.settings.messageContainer).find('.wp-chatbot-msg:last .qcld-like-dislike-icon').css('display', 'block'); }
1747 },globalwpw.settings.preLoadingTime)
1748 }else{
1749 wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start" data-wildcart="back">' + 'Sorry, I encountered an error processing your AI request. Please check api key and try again later.' + '</span>');
1750 }
1751 });
1752 }
1753 }
1754 if(globalwpw.settings.obj.gemini_enabled == 1){
1755 var customAappend = globalwpw.settings.obj.qcld_openrouter_append_content;
1756 var customprepend = globalwpw.settings.obj.qcld_openrouter_prepend_content;
1757 var customMessage = customprepend ? customprepend + ' ' + msg : msg;
1758 customMessage = customAappend ? customMessage + ' ' + customAappend : customMessage;
1759
1760 qcldPushAiContext('user', customMessage);
1761
1762 var data = {'action':'qcld_gemini_response','name':globalwpw.hasNameCookie,'keyword':customMessage, 'active_ai_action':(globalwpw.active_ai_action || ""), nonce: qcld_chatbot_obj.nonce, ai_history: JSON.stringify(globalwpw.aiContext)};
1763 wpwKits.ajax(data).done(function (res) {
1764 if( res == '' || typeof res === 'object' ){
1765 var json = res;
1766 }if(typeof res === 'string'){
1767 var json = $.parseJSON(res);
1768 }
1769
1770 if(json.status=='success'){
1771 qcldPushAiContext('assistant', json.message);
1772 var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
1773
1774 setTimeout(function(){
1775 var isFormInProgress = qcldIsAiFormInProgress();
1776 if (json.message && json.message.indexOf('__AI_FORM_IN_PROGRESS__') !== -1) {
1777 isFormInProgress = true;
1778 json.message = json.message.replace(/__AI_FORM_IN_PROGRESS__/g, '').trim();
1779 }
1780 if (json.message && (json.message.indexOf('AI_FORM_DATA') !== -1 || json.message.indexOf('ai-form-summary-card') !== -1)) {
1781 isFormInProgress = false;
1782 if (typeof globalwpw !== 'undefined') {
1783 globalwpw.aiContext = [];
1784 globalwpw.active_ai_action = '';
1785 globalwpw.qcld_ai_form_persisted_state = false;
1786 }
1787 }
1788
1789 wpwMsg.single(json.message);
1790
1791 if(!isFormInProgress && (globalwpw.settings.obj.qcld_disable_repited_startmenu != "1")){
1792 if((globalwpw.settings.obj.qcld_disable_repited_startmenu != "1") && ((globalwpw.settings.obj.disable_back_to_start != '1' && globalwpw.settings.obj.skip_greetings_and_menu != 1))){
1793 setTimeout(function(){
1794 var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
1795 if((globalwpw.settings.obj.qcld_disable_start_menu != "1" && (globalwpw.settings.obj.disable_back_to_start != '1' && globalwpw.settings.obj.skip_greetings_and_menu != 1))){
1796 wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start" data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
1797 }
1798 },globalwpw.settings.preLoadingTime)
1799 }else{
1800 setTimeout(function(){
1801 if((globalwpw.settings.obj.qcld_disable_repited_startmenu != "1" && (globalwpw.settings.obj.disable_back_to_start != '1' && globalwpw.settings.obj.skip_greetings_and_menu != 1))){
1802 wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start" data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
1803 }
1804 }, globalwpw.settings.preLoadingTime*2);
1805 }
1806 }
1807 },globalwpw.settings.preLoadingTime)
1808 }else{
1809 wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start" data-wildcart="back">' + 'Sorry, I encountered an error processing your AI request. Please check api key and try again later.' + '</span>');
1810 }
1811 })
1812 }
1813 if(globalwpw.settings.obj.grok_enabled == 1){
1814 var customMessage = msg;
1815 customMessage = customAappend ? customMessage + ' ' + customAappend : customMessage;
1816
1817 qcldPushAiContext('user', customMessage);
1818
1819 var data = {'action':'qcld_grok_response','name':globalwpw.hasNameCookie,'keyword':customMessage, 'active_ai_action':(globalwpw.active_ai_action || ""), nonce: qcld_chatbot_obj.nonce, ai_history: JSON.stringify(globalwpw.aiContext)};
1820 wpwKits.ajax(data).done(function (res) {
1821 if( res == '' || typeof res === 'object' ){
1822 var json = res;
1823 }if(typeof res === 'string'){
1824 var json = $.parseJSON(res);
1825 }
1826
1827 if(json.status=='success'){
1828 qcldPushAiContext('assistant', json.message);
1829 var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
1830
1831 setTimeout(function(){
1832 var isFormInProgress = qcldIsAiFormInProgress();
1833 if (json.message && json.message.indexOf('__AI_FORM_IN_PROGRESS__') !== -1) {
1834 isFormInProgress = true;
1835 json.message = json.message.replace(/__AI_FORM_IN_PROGRESS__/g, '').trim();
1836 }
1837 if (json.message && (json.message.indexOf('AI_FORM_DATA') !== -1 || json.message.indexOf('ai-form-summary-card') !== -1)) {
1838 isFormInProgress = false;
1839 if (typeof globalwpw !== 'undefined') {
1840 globalwpw.aiContext = [];
1841 globalwpw.active_ai_action = '';
1842 globalwpw.qcld_ai_form_persisted_state = false;
1843 }
1844 }
1845
1846 wpwMsg.single(json.message);
1847
1848 if(!isFormInProgress && (globalwpw.settings.obj.qcld_disable_repited_startmenu != "1")){
1849 if((globalwpw.settings.obj.qcld_disable_repited_startmenu != "1") && ((globalwpw.settings.obj.disable_back_to_start != '1' && globalwpw.settings.obj.skip_greetings_and_menu != 1))){
1850 setTimeout(function(){
1851 var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
1852 if((globalwpw.settings.obj.qcld_disable_start_menu != "1" && (globalwpw.settings.obj.disable_back_to_start != '1' && globalwpw.settings.obj.skip_greetings_and_menu != 1))){
1853 wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start" data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
1854 }
1855 },globalwpw.settings.preLoadingTime)
1856 }else{
1857 setTimeout(function(){
1858 if((globalwpw.settings.obj.qcld_disable_repited_startmenu != "1" && (globalwpw.settings.obj.disable_back_to_start != '1' && globalwpw.settings.obj.skip_greetings_and_menu != 1))){
1859 wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start" data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
1860 }
1861 }, globalwpw.settings.preLoadingTime*2);
1862 }
1863 }
1864 },globalwpw.settings.preLoadingTime)
1865 }else{
1866 wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start" data-wildcart="back">' + 'Sorry, I encountered an error processing your AI request. Please check api key and try again later.' + '</span>');
1867 }
1868 })
1869 }
1870 },
1871 site_search:function(msg){
1872 msg1 = wpwKits.filterStopWords(msg);
1873 var data = {'action':'wpbo_search_site','name':globalwpw.hasNameCookie,'keyword':msg1, 'security':wp_chatbot_obj.ajax_nonce};
1874 wpwKits.ajax(data).done(function (res) {
1875 var json=$.parseJSON(res);
1876 if(!qcldIsAiFormInProgress()) { $(globalwpw.settings.messageContainer).find('.wp-chatbot-msg:last .qcld-like-dislike-icon').css('display', 'block'); }
1877
1878 if(json.status=='success'){
1879 if((globalwpw.settings.obj.disable_back_to_start != '1' && globalwpw.settings.obj.skip_greetings_and_menu != 1)){
1880 wpwMsg.triple_nobg( wp_chatbot_obj.found_result_message,json.html,'<span class="qcld-chatbot-wildcard" data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>' );
1881 }else{
1882 wpwMsg.double_nobg( wp_chatbot_obj.found_result_message,json.html);
1883 }
1884 }else if( (globalwpw.settings.obj.openai_enabled == 1) || (wp_chatbot_obj.openai_enabled == 1) || (globalwpw.settings.obj.openrouter_enabled == 1) || (wp_chatbot_obj.openrouter_enabled == 1) || (globalwpw.settings.obj.gemini_enabled == 1) || (wp_chatbot_obj.gemini_enabled == 1) || (globalwpw.settings.obj.grok_enabled == 1) || (wp_chatbot_obj.grok_enabled == 1) || (wp_chatbot_obj.claude_enabled == 1) || (globalwpw.settings.obj.claude_enabled == 1) ){
1885 if($(globalwpw.settings.messageLastChild+' .wp-chatbot-comment-loader').length==0){
1886 $(globalwpw.settings.messageContainer).append(wpwKits.botPreloader());
1887 }
1888 wpwTree.openai_reply(msg);
1889 }else{
1890 if((globalwpw.settings.obj.disable_back_to_start != '1' && globalwpw.settings.obj.skip_greetings_and_menu != 1)){
1891 wpwMsg.double_nobg( wpwKits.randomMsg(wp_chatbot_obj.product_fail ),'<span class="qcld-chatbot-wildcard qcld_back_to_start" data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
1892 }else{
1893 wpwMsg.single( wpwKits.randomMsg(wp_chatbot_obj.product_fail ));
1894 }
1895 }
1896 })
1897 }
1898 };
1899 /*
1900 * wpwbot Actions are divided into two part
1901 * shopper will response after initialize message,
1902 * then based on shopper activities shopper will act.
1903 */
1904 var wpwAction={
1905 findkey:function(array, msg){
1906 var index = -1;
1907 $.each( array, function( key, value ) {
1908 value = jQuery.map(value, function(n,i){return n.toLowerCase();});
1909 if(value.indexOf(msg.toLowerCase()) > -1){
1910 index = key;
1911 return false;
1912 }
1913 });
1914 return index;
1915 },
1916 bot:function(msg){
1917 var simple_response_intent = globalwpw.settings.obj.simple_response_intent;
1918 if(simple_response_intent.length>0){
1919 simple_response_intent = jQuery.map(simple_response_intent, function(n,i){return n.toLowerCase();});
1920 }
1921 var allformname = jQuery.map(globalwpw.settings.obj.forms, function(n,i){return n.toLowerCase();});
1922 var allformcommand = globalwpw.settings.obj.form_commands;
1923 if(globalwpw.wildcardsHelp.indexOf(msg.toLowerCase())>-1){
1924
1925 if(globalwpw.wildCard==7){
1926 wpwTree.formbuilder_force_complete( msg );
1927 }
1928 if(msg.toLowerCase()==globalwpw.settings.obj.sys_key_help.toLowerCase()){
1929
1930 globalwpw.wildCard=0;
1931 var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.wildcard_msg);
1932 wpwMsg.double_nobg(serviceOffer,globalwpw.wildcards);
1933 }
1934 if(msg.toLowerCase()==globalwpw.settings.obj.sys_key_support.toLowerCase()){
1935 globalwpw.wildCard=1;
1936 globalwpw.supportStep='welcome';
1937 wpwTree.support(msg);
1938 }
1939 // if(msg.toLowerCase()==globalwpw.settings.obj.sys_key_product.toLowerCase()){
1940 // globalwpw.wildCard=20;
1941 // globalwpw.productStep='asking';
1942 // // wpwTree.product(msg);
1943 // }
1944 if(globalwpw.settings.obj.woocommerce){
1945 if(msg.toLowerCase()==globalwpw.settings.obj.sys_key_catalog.toLowerCase()){
1946 globalwpw.wildCard=20;
1947 globalwpw.productStep='search';
1948 wpwKits.sugestCat();
1949 }
1950 if(msg.toLowerCase()==globalwpw.settings.obj.sys_key_order.toLowerCase()){
1951 globalwpw.wildCard=21;
1952 globalwpw.orderStep='welcome';
1953 wpwTree.order(msg);
1954 }
1955 }
1956 if( globalwpw.settings.obj.open_a_ticket && msg.toLowerCase()==globalwpw.settings.obj.open_a_ticket.toLowerCase() && globalwpw.settings.obj.ticket_url!=''){
1957 //comming
1958 window.open(globalwpw.settings.obj.ticket_url, '_blank');
1959 wpwKits.enableEditor(wpwKits.randomMsg(globalwpw.settings.obj.send_a_msg));
1960 }
1961 if(msg.toLowerCase()==globalwpw.settings.obj.sys_key_reset.toLowerCase()){
1962 globalwpw.wildCard=25;
1963 globalwpw.resetStep='welcome';
1964 wpwTree.reset(msg);
1965 }
1966 if(msg.toLowerCase()==globalwpw.settings.obj.sys_key_email.toLowerCase()){
1967 // var shopperChoice=$(this).text();
1968 wpwMsg.shopper_choice(globalwpw.settings.obj.sys_key_email.toLowerCase());
1969 //Then ask email address
1970 if(typeof(globalwpw.hasNameCookie)=='undefined'|| globalwpw.hasNameCookie==''){
1971 var shopperName= globalwpw.settings.obj.shopper_demo_name;
1972 }else{
1973 var shopperName=globalwpw.hasNameCookie;
1974 }
1975 var ask_msg = wpwKits.randomMsg(globalwpw.settings.obj.asking_email);
1976 var askEmail = (globalwpw.settings.obj.skip_wp_greetings=='1' || globalwpw.settings.obj.skip_greetings_and_menu =='1') ? wpwKits.randomMsg(globalwpw.settings.obj.hello)+' '+ ask_msg : wpwKits.randomMsg(globalwpw.settings.obj.hello)+' '+shopperName+'! '+ ask_msg;
1977 wpwMsg.single(askEmail);
1978 globalwpw.supportStep='email';
1979 globalwpw.wildCard=1;
1980 localStorage.setItem("wildCard", globalwpw.wildCard);
1981 localStorage.setItem("supportStep", globalwpw.supportStep);
1982 }
1983 if( globalwpw.settings.obj.sys_key_livechat && msg.toLowerCase()==globalwpw.settings.obj.sys_key_livechat.toLowerCase()){
1984 wpwKits.enableEditor(wpwKits.randomMsg(globalwpw.settings.obj.send_a_msg));
1985 if(globalwpw.settings.obj.is_livechat_active){
1986 if(globalwpw.settings.obj.disable_livechat_operator_offline==1){
1987 if(globalwpw.settings.obj.is_operator_online==1){
1988 $(globalwpw.settings.messageWrapper).html(localStorage.getItem("wpwHitory"));
1989 if($('#wbca_signup_fullname').length>0){
1990 if(localStorage.getItem('shopper')!==null){
1991 $('#wbca_signup_fullname').val(localStorage.getItem('shopper'));
1992 }
1993 if(localStorage.getItem('shopperemail')!==null){
1994 $('#wbca_signup_email').val(localStorage.getItem('shopperemail'));
1995 }
1996 }
1997 $("#wp-chatbot-board-container").removeClass('active-chat-board');
1998 $('.wp-chatbot-container').hide();
1999 $('.wpbot-saas-live-chat').show();
2000 }
2001 }else{
2002 $(globalwpw.settings.messageWrapper).html(localStorage.getItem("wpwHitory"));
2003 if($('#wbca_signup_fullname').length>0){
2004 if(localStorage.getItem('shopper')!==null){
2005 $('#wbca_signup_fullname').val(localStorage.getItem('shopper'));
2006 }
2007 if(localStorage.getItem('shopperemail')!==null){
2008 $('#wbca_signup_email').val(localStorage.getItem('shopperemail'));
2009 }
2010 }
2011 $("#wp-chatbot-board-container").removeClass('active-chat-board');
2012 $('.wp-chatbot-container').hide();
2013 $('.wpbot-saas-live-chat').show();
2014 }
2015 }
2016 }
2017 }else if(allformname.indexOf(msg.toLowerCase()) > -1 || this.findkey(allformcommand, msg)> -1){
2018 //Form builder commands form name
2019 if(globalwpw.wildCard==7){
2020 wpwTree.formbuilder_force_complete( msg );
2021 }
2022 var index = (allformname.indexOf(msg.toLowerCase()) > -1?allformname.indexOf(msg.toLowerCase()):this.findkey(allformcommand, msg));
2023 var formid=globalwpw.settings.obj.form_ids[index];
2024 globalwpw.wildCard=7;
2025 globalwpw.formStep='welcome';
2026 wpwTree.formbuilder(formid);
2027 }else if(simple_response_intent.indexOf(msg.toLowerCase()) > -1){
2028 if(globalwpw.wildCard==7){
2029 wpwTree.formbuilder_force_complete( msg );
2030 }
2031 var data = {'action':'wpbo_search_responseby_intent','name':globalwpw.hasNameCookie,'keyword':msg, 'language':globalwpw.settings.obj.language};
2032 if($(globalwpw.settings.messageLastChild+' .wp-chatbot-comment-loader').length==0){
2033 $(globalwpw.settings.messageContainer).append(wpwKits.botPreloader());
2034 }
2035 wpwKits.ajax(data).done(function (response) {
2036 var json=$.parseJSON(response);
2037 if(json.status=='success'){
2038 wpwMsg.single(json.html);
2039 var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.wildcard_msg);
2040 if( typeof(json.followup)!=="undefined" && json.followup!='' ){
2041 setTimeout(function(){
2042 wpwMsg.single(json.followup);
2043 }, globalwpw.settings.preLoadingTime*2);
2044 }else{
2045
2046 setTimeout(function(){
2047 if(!qcldIsAiFormInProgress()) { $(globalwpw.settings.messageContainer).find('.wp-chatbot-msg:last .qcld-like-dislike-icon').css('display', 'block'); }
2048 if((globalwpw.settings.obj.disable_back_to_start != '1' && globalwpw.settings.obj.skip_greetings_and_menu != 1)){
2049 wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start" data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
2050 }
2051 }, globalwpw.settings.preLoadingTime*2);
2052 }
2053 }
2054 })
2055 }else{
2056 /*
2057 * Greeting part
2058 * bot action
2059 */
2060 if(globalwpw.wildCard==0){
2061 //When intialize 1 and don't have cookies then keep the name of shooper in in cookie
2062 if(globalwpw.initialize==1 && !localStorage.getItem('shopper') && globalwpw.wildCard==0){
2063 wpwTree.greeting(msg);
2064 }else if(globalwpw.settings.obj.ai_df_enable==1 && globalwpw.df_status_lock==0){
2065 wpwTree.greeting(msg);
2066 }else if(localStorage.getItem('default_asking_email')){
2067 wpwTree.greeting(msg);
2068 }else if(localStorage.getItem('default_asking_phone')){
2069 wpwTree.greeting(msg);
2070 }else{
2071 //simple text response wrapper
2072
2073 var data = {'action':'wpbo_search_response','name':globalwpw.hasNameCookie,'keyword':msg, 'language':globalwpw.settings.obj.language};
2074 if(wp_chatbot_obj.disable_site_search == 1){
2075 if($(globalwpw.settings.messageLastChild+' .wp-chatbot-comment-loader').length==0){
2076 $(globalwpw.settings.messageContainer).append(wpwKits.botPreloader());
2077 }
2078 }
2079 wpwKits.ajax(data).done(function (response) {
2080 var json=$.parseJSON(response);
2081
2082 if(json.status=='fail' && json.data !==''){
2083
2084 if(wp_chatbot_obj.disable_site_search != 1){
2085 wpwTree.site_search(msg)
2086 }
2087 else if( (globalwpw.settings.obj.openai_enabled == 1) || (wp_chatbot_obj.openai_enabled == 1) || (globalwpw.settings.obj.openrouter_enabled == 1) || (wp_chatbot_obj.openrouter_enabled == 1) || (globalwpw.settings.obj.gemini_enabled == 1) || (wp_chatbot_obj.gemini_enabled == 1) || (globalwpw.settings.obj.grok_enabled == 1) || (wp_chatbot_obj.grok_enabled == 1) || (wp_chatbot_obj.claude_enabled == 1) || (globalwpw.settings.obj.claude_enabled == 1) ){
2088 wpwTree.openai_reply(msg)
2089 }else{
2090 wpwMsg.single(globalwpw.settings.obj.empty_filter_msg);
2091 }
2092 }else if(json.status=='success'){
2093 if(typeof(json.category)!=="undefined" && json.category){
2094 var question='';
2095 $.each(json.data, function (i, obj) {
2096 question += '<span class="qcld-chatbot-wildcard qcld_simple_txt_response" data-strid="'+ obj.id +'">'+ obj.query +'</span>';
2097 });
2098 wpwMsg.single_nobg(question);
2099 }
2100 else if(json.multiple){
2101 var question='';
2102 $.each(json.data, function (i, obj) {
2103 question += '<span class="qcld-chatbot-wildcard qcld_simple_txt_response" data-strid="'+ obj.id +'">'+ obj.query +'</span>';
2104 });
2105 wpwMsg.double_nobg(wpwKits.randomMsg(globalwpw.settings.obj.did_you_mean),question);
2106 }else{
2107 wpwMsg.single(json.data[0].response);
2108 var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.wildcard_msg);
2109 if( typeof(json.data[0].followup)!=="undefined" && json.data[0].followup!='' ){
2110 setTimeout(function(){
2111 wpwMsg.single(json.data[0].followup);
2112 }, globalwpw.settings.preLoadingTime*2);
2113 }else{
2114 // if(globalwpw.settings.obj.disable_repeatative!=1){
2115 // setTimeout(function(){
2116 // wpwMsg.double_nobg(serviceOffer, globalwpw.wildcards);
2117 // }, globalwpw.settings.preLoadingTime*2);
2118 // }else{
2119 setTimeout(function(){
2120 if(!qcldIsAiFormInProgress()) { $(globalwpw.settings.messageContainer).find('.wp-chatbot-msg:last .qcld-like-dislike-icon').css('display', 'block'); }
2121 if( (globalwpw.settings.obj.disable_back_to_start != '1' && globalwpw.settings.obj.skip_greetings_and_menu != 1)){
2122 wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start" data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
2123 }
2124 }, globalwpw.settings.preLoadingTime*2);
2125 // }
2126 }
2127 }
2128 }else{
2129 //Default intents site search
2130 msg = wpwKits.filterStopWords(msg);
2131 if(globalwpw.settings.obj.woocommerce){
2132 var data = {'action':'qcld_wb_chatbot_keyword', 'keyword':msg};
2133 //Products by string search ajax handler.
2134 if($(globalwpw.settings.messageLastChild+' .wp-chatbot-comment-loader').length==0){
2135 $(globalwpw.settings.messageContainer).append(wpwKits.botPreloader());
2136 }
2137 wpwKits.ajax(data).done(function( response ) {
2138 if(response.product_num==0){
2139 if(msg!='' && globalwpw.settings.obj.disable_sitesearch==''){
2140 msg = wpwKits.filterStopWords(msg);
2141 var data = {'action':'wpbo_search_site','name':globalwpw.hasNameCookie,'keyword':msg, 'security':wp_chatbot_obj.ajax_nonce};
2142 if($(globalwpw.settings.messageLastChild+' .wp-chatbot-comment-loader').length==0){
2143 $(globalwpw.settings.messageContainer).append(wpwKits.botPreloader());
2144 }
2145 wpwKits.ajax(data).done(function (response) {
2146 var json=$.parseJSON(response);
2147 if(json.status=='success'){
2148 // wpwMsg.single(wp_chatbot_obj.found_result_message);
2149 $('span[data-wildcart="back"]').remove();
2150 if((globalwpw.settings.obj.disable_back_to_start != '1' && globalwpw.settings.obj.skip_greetings_and_menu != 1)){
2151 wpwMsg.triple_nobg(wp_chatbot_obj.found_result_message,json.html,'<span class="qcld-chatbot-wildcard" data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
2152 }else{
2153 wpwMsg.double_nobg(wp_chatbot_obj.found_result_message,json.html);
2154 }
2155 }else{
2156 var data = {'action':'wpbo_failed_response','name':globalwpw.hasNameCookie,'keyword':msg};
2157 wpwKits.ajax(data).done(function (res) {
2158 //
2159 })
2160 if(globalwpw.counter == globalwpw.settings.obj.no_result_attempt_count || globalwpw.settings.obj.no_result_attempt_count == 0 ){
2161 wpwMsg.single(wpwKits.randomMsg(json.html));
2162 setTimeout(function(){
2163 var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
2164 if((globalwpw.settings.obj.disable_back_to_start != '1' && globalwpw.settings.obj.skip_greetings_and_menu != 1)){
2165 wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start" data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
2166 }
2167 },globalwpw.settings.preLoadingTime)
2168 globalwpw.counter = 0;
2169 }else{
2170 globalwpw.counter++;
2171 wpwMsg.single(wpwKits.randomMsg(json.html));
2172 }
2173 }
2174 globalwpw.wildCard=0;
2175 });
2176 }else{
2177 globalwpw.wildCard=0;
2178 wpwMsg.single(wpwKits.randomMsg(globalwpw.settings.obj.empty_filter_msg));
2179 // if(globalwpw.settings.obj.disable_repeatative!=1){
2180 // setTimeout(function(){
2181 // var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
2182 // wpwMsg.double_nobg(serviceOffer,globalwpw.wildcards);
2183 // },globalwpw.settings.preLoadingTime)
2184 // }else{
2185 setTimeout(function(){
2186 if(!qcldIsAiFormInProgress()) { $(globalwpw.settings.messageContainer).find('.wp-chatbot-msg:last .qcld-like-dislike-icon').css('display', 'block'); }
2187 if((globalwpw.settings.obj.disable_back_to_start != '1' && globalwpw.settings.obj.skip_greetings_and_menu != 1)){
2188 wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start" data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
2189 }
2190 }, globalwpw.settings.preLoadingTime*2);
2191 // }
2192 }
2193 }else {
2194 var productSucces= wpwKits.randomMsg(globalwpw.settings.obj.product_success)+" <strong>"+msg+"</strong>!";
2195 console.log(globalwpw.wildcards);
2196 wpwMsg.double_nobg(productSucces,response.html);
2197 if(response.per_page >= response.product_num){
2198 setTimeout(function () {
2199 var searchAgain = wpwKits.randomMsg(globalwpw.settings.obj.product_infinite);
2200 wpwMsg.single(searchAgain);
2201 //keeping value in localstorage
2202 globalwpw.wildCard=20;
2203 globalwpw.productStep='search';
2204 localStorage.setItem("productStep", globalwpw.productStep);
2205 },globalwpw.settings.wildcardsShowTime);
2206 }
2207 }
2208 });
2209 }else{
2210 if(msg!='' && globalwpw.settings.obj.disable_sitesearch==''){
2211 msg = wpwKits.filterStopWords(msg);
2212 var data = {'action':'wpbo_search_site','name':globalwpw.hasNameCookie,'keyword':msg, 'security':wp_chatbot_obj.ajax_nonce};
2213 if($(globalwpw.settings.messageLastChild+' .wp-chatbot-comment-loader').length==0){
2214 $(globalwpw.settings.messageContainer).append(wpwKits.botPreloader());
2215 }
2216 wpwKits.ajax(data).done(function (response) {
2217 var json=$.parseJSON(response);
2218 if(json.status=='success'){
2219 //wpwMsg.single();
2220 $('span[data-wildcart="back"]').remove();
2221 if((globalwpw.settings.obj.disable_back_to_start != '1' && globalwpw.settings.obj.skip_greetings_and_menu != 1)){
2222 wpwMsg.triple_nobg(wp_chatbot_obj.found_result_message,json.html,'<span class="qcld-chatbot-wildcard" data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
2223 }else{
2224 wpwMsg.double_nobg(wp_chatbot_obj.found_result_message,json.html);
2225 }
2226 }else{
2227 var data = {'action':'wpbo_failed_response','name':globalwpw.hasNameCookie,'keyword':msg};
2228 wpwKits.ajax(data).done(function (res) {
2229 //
2230 })
2231 if(globalwpw.counter == globalwpw.settings.obj.no_result_attempt_count || globalwpw.settings.obj.no_result_attempt_count == 0 ){
2232 wpwMsg.single(wpwKits.randomMsg(json.html));
2233 setTimeout(function(){
2234 var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
2235 if((globalwpw.settings.obj.disable_back_to_start != '1' && globalwpw.settings.obj.skip_greetings_and_menu != 1)){
2236 wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start" data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
2237 }
2238 },globalwpw.settings.preLoadingTime)
2239 globalwpw.counter = 0;
2240 }else{
2241 globalwpw.counter++;
2242 wpwMsg.single(wpwKits.randomMsg(json.html));
2243 }
2244 }
2245 globalwpw.wildCard=0;
2246 });
2247 }else{
2248 globalwpw.wildCard=0;
2249 wpwMsg.single(wpwKits.randomMsg(globalwpw.settings.obj.empty_filter_msg));
2250 // if(globalwpw.settings.obj.disable_repeatative!=1){
2251 // setTimeout(function(){
2252 // var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
2253 // wpwMsg.double_nobg(serviceOffer,globalwpw.wildcards);
2254 // },globalwpw.settings.preLoadingTime)
2255 // }else{
2256 setTimeout(function(){
2257 if(!qcldIsAiFormInProgress()) { $(globalwpw.settings.messageContainer).find('.wp-chatbot-msg:last .qcld-like-dislike-icon').css('display', 'block'); }
2258 if((globalwpw.settings.obj.disable_back_to_start != '1' && globalwpw.settings.obj.skip_greetings_and_menu != 1)){
2259 wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start" data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
2260 }
2261 }, globalwpw.settings.preLoadingTime*2);
2262 // }
2263 }
2264 }
2265 }
2266 })
2267
2268 } //
2269 }
2270 if(globalwpw.settings.obj.woocommerce){
2271 //Product
2272 if(globalwpw.wildCard==20){
2273 wpwTree.product(msg);
2274 }
2275 /*
2276 * order status part
2277 * bot action
2278 */
2279 if(globalwpw.wildCard==21){
2280 wpwTree.order(msg);
2281 }
2282 }
2283 if(globalwpw.wildCard==1){
2284 wpwTree.support(msg);
2285 }
2286 if(globalwpw.wildCard==3){
2287 wpwTree.subscription(msg);
2288 }
2289 if(globalwpw.wildCard==6){
2290 wpwTree.unsubscription(msg);
2291 }
2292 if(globalwpw.wildCard==7){
2293 wpwTree.formbuilder(msg);
2294 }
2295 if(globalwpw.wildCard==9){
2296 wpwTree.bargain(msg);
2297 }
2298 if(globalwpw.wildCard==25){
2299 wpwTree.reset(msg);
2300 }
2301 if(globalwpw.wildCard==26){
2302 wpwTree.dfcx(msg);
2303 }
2304 if(globalwpw.wildCard==30){
2305 wpwTree.ldsuggestion();
2306 }
2307 }
2308 },
2309 clickstr: function(id){
2310 var data = {'action':'wpbo_search_response','name':globalwpw.hasNameCookie,'strid':id, 'language':globalwpw.settings.obj.language};
2311
2312 wpwKits.ajax(data).done(function (response) {
2313 var json=$.parseJSON(response);
2314 if(json.status=='success'){
2315 if(typeof(json.data)!=="undefined" && json.data){
2316 var question='';
2317 $.each(json.data, function (i, obj) {
2318
2319 question += obj.response;
2320 });
2321 wpwMsg.single(question);
2322 }
2323 }
2324 })
2325 },
2326 shopper:function (msg) {
2327 wpwMsg.shopper(msg);
2328 if(globalwpw.wildCard==1) {
2329 this.bot(msg);
2330 }else if(globalwpw.settings.obj.ai_df_enable==1 && globalwpw.wildCard==0 && globalwpw.ai_step==1 && globalwpw.df_status_lock==0){
2331 this.bot(msg);
2332 } else{
2333 //Filtering the user given messages by stopwords
2334 var filterMsg=(msg);
2335 //handle empty filterMsg as repeat the message.
2336 if(filterMsg=="") {
2337 //if(globalwpw.emptymsghandler==0){
2338 globalwpw.repeatQueryEmpty=wpwKits.randomMsg(globalwpw.settings.obj.empty_filter_msg);
2339 globalwpw.emptymsghandler++;
2340 //}
2341 wpwMsg.single(globalwpw.repeatQueryEmpty);
2342 setTimeout(function(){
2343 var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
2344 if((globalwpw.settings.obj.disable_back_to_start != '1' && globalwpw.settings.obj.skip_greetings_and_menu != 1)){
2345 wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start" data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
2346 }
2347 },globalwpw.settings.preLoadingTime)
2348 }else {
2349 globalwpw.emptymsghandler=0;
2350 this.bot(filterMsg);
2351 }
2352 }
2353 }
2354 };
2355 /*
2356 * wpwBot Plugin Creation without selector and
2357 * wpwbot and shoppers all activities will be handled.
2358 */
2359 $.wpwbot = function(options) {
2360 //Using plugins defualts values or overwrite by options.
2361
2362 var settings = $.extend({}, $.wpwbot.defaults, options);
2363 //Updating global settings
2364 globalwpw.settings=settings;
2365 //updating the helpkeywords
2366 globalwpw.wildcardsHelp=[globalwpw.settings.obj.sys_key_help.toLowerCase(),globalwpw.settings.obj.sys_key_product.toLowerCase(),globalwpw.settings.obj.sys_key_catalog.toLowerCase(),globalwpw.settings.obj.sys_key_support.toLowerCase(),globalwpw.settings.obj.sys_key_order.toLowerCase(),globalwpw.settings.obj.sys_key_reset.toLowerCase(),globalwpw.settings.obj.sys_key_email.toLowerCase()]
2367 //updating wildcards
2368 globalwpw.wildcards='';
2369 if(globalwpw.settings.obj.start_menu!=''){
2370 var menu_html = '';
2371 var menu_items = $.parseHTML($.trim(globalwpw.settings.obj.start_menu));
2372 $(menu_items).each(function(){
2373 if( $(this).prop('tagName') == 'SPAN' ){
2374 if( $(this).hasClass('qcld-chatbot-suggest-email') ){
2375 if( globalwpw.settings.obj.disable_feedback=='' ){
2376 menu_html += $(this).prop('outerHTML');
2377 }
2378 }else if( $(this).hasClass('qcld-chatbot-suggest-phone') ){
2379 if( globalwpw.settings.obj.call_gen=="" ){
2380 menu_html += $(this).prop('outerHTML');
2381 }
2382 }else if( $(this).hasClass('qcld-chatbot-wildcard') && $(this).attr('data-wildcart') == 'support' ){
2383 if( globalwpw.settings.obj.disable_faq=='' ){
2384 menu_html += $(this).prop('outerHTML');
2385 }
2386 }else if( $(this).hasClass('qcld-chatbot-wildcard') && $(this).attr('data-wildcart') == 'messenger' ){
2387 if( globalwpw.settings.obj.enable_messenger==1 ){
2388 menu_html += $(this).prop('outerHTML');
2389 }
2390 }else if( $(this).hasClass('qcld-chatbot-wildcard') && $(this).attr('data-wildcart') == 'whatspp' ){
2391 if( globalwpw.settings.obj.enable_whats==1 ){
2392 menu_html += $(this).prop('outerHTML');
2393 }
2394 }else{
2395 menu_html += $(this).prop('outerHTML');
2396 }
2397 }
2398 })
2399 if( menu_html != '' ){
2400 globalwpw.wildcards = menu_html;
2401 }else{
2402 globalwpw.wildcards = globalwpw.settings.obj.start_menu;
2403 }
2404 }
2405 //Initialize the wpwBot with greeting and if already initialize and given name then return greeting..
2406 if(localStorage.getItem("wpwHitory") && globalwpw.initialize==0 ){
2407 var wpwHistory=localStorage.getItem("wpwHitory");
2408 $(globalwpw.settings.messageWrapper).html(wpwHistory);
2409 //Scroll to the last element.
2410 wpwKits.scrollTo();
2411 //Now mainting the current stages tokens
2412 globalwpw.initialize=1;
2413 if(localStorage.getItem("wildCard")){
2414 globalwpw.wildCard=localStorage.getItem("wildCard");
2415 }
2416 if(localStorage.getItem("productStep")){
2417 globalwpw.productStep=localStorage.getItem("productStep");
2418 }
2419 if(localStorage.getItem("orderStep")){
2420 globalwpw.orderStep=localStorage.getItem("orderStep");
2421 }
2422 if(localStorage.getItem("supportStep")){
2423 globalwpw.supportStep=localStorage.getItem("supportStep");
2424 }
2425 if(localStorage.getItem("aiStep")){
2426 globalwpw.ai_step=localStorage.getItem("aiStep");
2427 }
2428 if(localStorage.getItem("formfieldid")){
2429 globalwpw.formfieldid=localStorage.getItem("formfieldid");
2430 }
2431 if(localStorage.getItem("formentry")){
2432 globalwpw.formentry=localStorage.getItem("formentry");
2433 }
2434 if(localStorage.getItem("formStep")){
2435 globalwpw.formStep=localStorage.getItem("formStep");
2436 }
2437 if(localStorage.getItem("formid")){
2438 globalwpw.formid=localStorage.getItem("formid");
2439 }
2440 //update the value for initializing.
2441 globalwpw.initialize=1;
2442 } else {
2443 if(globalwpw.initialize==0 && globalwpw.wildCard==0 && globalwpw.settings.obj.re_target_handler==0){
2444 wpwWelcome.greeting();
2445 //update the value for initializing.
2446 globalwpw.initialize=1;
2447 }else{ // re targeting part .
2448 setTimeout(function (e) {
2449 wpwWelcome.greeting();
2450 },8500);
2451 globalwpw.initialize=1;
2452 }
2453 }
2454 function wpbotResetSendMessageClasses() {
2455 $(settings.sendButton).removeClass('wp-chatbot-send-message-active wp-chatbot-send-message-typing');
2456 }
2457
2458 // Typing state only: add active class while editor has content.
2459 $(document).on('input keyup', settings.messageEditor, function () {
2460 var hasValue = $.trim($(settings.messageEditor).val()).length > 0;
2461 $(settings.sendButton).toggleClass('wp-chatbot-send-message-active', hasValue);
2462 });
2463
2464 // Blur state: clean both classes if no input value.
2465 $(document).on('blur', settings.messageEditor, function () {
2466 var hasValue = $.trim($(settings.messageEditor).val()).length > 0;
2467 if (!hasValue) {
2468 wpbotResetSendMessageClasses();
2469 }
2470 });
2471
2472 //When shopper click on send button
2473 $(document).on('click',settings.sendButton,function (e) {
2474 var shopperMsg =$(settings.messageEditor).val();
2475 if(shopperMsg != ""){
2476 wpwAction.shopper(wpwKits.htmlTagsScape(shopperMsg));
2477 $(settings.messageEditor).val('');
2478 wpbotResetSendMessageClasses();
2479 }
2480 });
2481 $(document).on('click', '.chatbot_intent_reload', function(e){
2482 e.preventDefault();
2483 var obj = $(this);
2484 if(obj.attr('data-intent-type')=='formbuilder'){
2485 if( obj.attr('data-step')=='complete' ){
2486 globalwpw.formStep='field';
2487 localStorage.setItem("formStep", globalwpw.formStep);
2488 }
2489 globalwpw.wildCard=obj.attr('data-wildcard');
2490 globalwpw.formfieldid = obj.attr('data-intent');
2491 wpwTree.formbuilder();
2492 }
2493 })
2494 /*
2495 * Or when shopper press the ENTER key
2496 * Then chatting functionality will be started.
2497 */
2498 $(document).on('click', '.wpb-quick-reply', function(e){
2499 e.preventDefault();
2500 $('#wp-chatbot-editor').val($(this).html());
2501 $('#wp-chatbot-send-message').trigger( "click" );
2502 })
2503 $(document).on('keypress',settings.messageEditor,function (e) {
2504 if (e.which == 13||e.keyCode==13) {
2505 e.preventDefault();
2506 var shopperMsg =$(settings.messageEditor).val();
2507 if(shopperMsg != ""){
2508 wpwAction.shopper(wpwKits.htmlTagsScape(shopperMsg));
2509 $(settings.messageEditor).val('');
2510 wpbotResetSendMessageClasses();
2511 }
2512 }
2513 });
2514 $(document).on('click', '.qcld-chatbot-checkbox', function(){
2515
2516 var value = [];
2517 $('.qcld-chatbot-checkbox').each(function(){
2518 if($(this).prop("checked") == true){
2519 value.push($(this).val());
2520 }
2521 })
2522 $('#wp-chatbot-editor').val(value.join());
2523 if ($.trim($('#wp-chatbot-editor').val()).length > 0) {
2524 $(settings.sendButton).addClass('wp-chatbot-send-message-active');
2525 } else {
2526 wpbotResetSendMessageClasses();
2527 }
2528 })
2529 //Click on the wildcards to select a service
2530 $(document).on('click','.qcld-chatbot-wildcard',function(){
2531 var wildcardData=$(this).attr('data-form');
2532 var shooperChoice=$(this).text();
2533 wpwMsg.shopper_choice(shooperChoice);
2534 if(typeof wildcardData === "undefined"){
2535 var wildcardData=$(this).attr('data-wildcart');
2536 }
2537 //Wild cards handling for bot.
2538 if(wildcardData=='product'){
2539 globalwpw.wildCard=1;
2540 globalwpw.productStep='asking'
2541 wpwAction.bot('from wildcard product');
2542 //keeping value in localstorage
2543 localStorage.setItem("wildCard", globalwpw.wildCard);
2544 localStorage.setItem("productStep", globalwpw.productStep);
2545 }
2546 if(wildcardData=='catalog'){
2547 wpwAction.bot(globalwpw.settings.obj.sys_key_catalog.toLowerCase());
2548 }
2549 if(wildcardData=='featured'){
2550 globalwpw.wildCard=1;
2551 globalwpw.productStep='featured'
2552 wpwAction.bot('from wildcard product');
2553 //keeping value in localstorage
2554 localStorage.setItem("wildCard", globalwpw.wildCard);
2555 localStorage.setItem("productStep", globalwpw.productStep);
2556 }
2557 if(wildcardData=='sale'){
2558 globalwpw.wildCard=1;
2559 globalwpw.productStep='sale'
2560 wpwAction.bot('from wildcard product');
2561 //keeping value in localstorage
2562 localStorage.setItem("wildCard", globalwpw.wildCard);
2563 localStorage.setItem("productStep", globalwpw.productStep);
2564 }
2565 if(wildcardData=='order'){
2566 globalwpw.wildCard=2;
2567 globalwpw.orderStep='welcome';
2568 wpwAction.bot('from wildcard order');
2569 //keeping value in localstorage
2570 localStorage.setItem("wildCard", globalwpw.wildCard);
2571 localStorage.setItem("orderStep", globalwpw.orderStep);
2572 }
2573 if((wildcardData=='support ui-sortable-handle') || (wildcardData=='support')) {
2574 globalwpw.wildCard=1;
2575 globalwpw.supportStep='welcome';
2576 wpwAction.bot('from wildcard support');
2577 //keeping value in localstorage
2578 localStorage.setItem("wildCard", globalwpw.wildCard);
2579 localStorage.setItem("supportStep", globalwpw.supportStep);
2580 }
2581 if(wildcardData=='back'){
2582 globalwpw.wildCard=0;
2583 //wpwAction.bot('start');
2584 wpwAction.bot(wp_chatbot_obj.sys_key_help.toLowerCase());
2585 //keeping value in localstorage
2586 localStorage.setItem("wildCard", globalwpw.wildCard);
2587 }
2588 if(wildcardData=='ai_form'){
2589 globalwpw.wildCard=0;
2590 globalwpw.active_ai_action = shooperChoice;
2591 globalwpw.qcld_ai_form_persisted_state = true;
2592 wpwAction.bot(shooperChoice);
2593 localStorage.setItem("wildCard", globalwpw.wildCard);
2594 }
2595 if(wildcardData=='messenger'){
2596 var url='https://www.messenger.com/t/'+globalwpw.settings.obj.fb_page_id;
2597 var win = window.open(url, '_blank');
2598 win.focus();
2599 }
2600 if(wildcardData=='whatsapp'){
2601 var url='https://api.whatsapp.com/send?phone='+globalwpw.settings.obj.whats_num;
2602 var win = window.open(url, '_blank');
2603 win.focus();
2604 }
2605 });
2606 $(document).on('click','.qcld-chatbot-form',function(e){
2607 e.preventDefault();
2608 var formid=$(this).attr('data-form');
2609 globalwpw.wildCard=7;
2610 globalwpw.formStep='welcome';
2611 wpwTree.formbuilder(formid);
2612 })
2613 $(document).on('click','.qcld_simple_txt_response',function(e){
2614 e.preventDefault();
2615 var text=$(this).text();
2616 var id = $(this).data('strid');
2617 globalwpw.wildCard=0;
2618 wpwAction.clickstr(id);
2619 })
2620 $(document).on('click','#wp-chatbot-desktop-reload',function (e) {
2621 e.preventDefault();
2622 var actionType=$(this).attr('reset-data');
2623 $('#wp-chatbot-messages-container').html('');
2624 localStorage.removeItem('shopper');
2625 globalwpw.wildCard=0;
2626 globalwpw.ai_step=0;
2627 localStorage.setItem("wildCard", globalwpw.wildCard);
2628 localStorage.setItem("aiStep", globalwpw.ai_step);
2629 globalwpw.formfieldid = '';
2630 localStorage.setItem("formfieldid", globalwpw.formfieldid);
2631 globalwpw.formStep='welcome';
2632 localStorage.setItem("formStep", globalwpw.formStep);
2633 globalwpw.formid='';
2634 localStorage.setItem("formid", globalwpw.formid);
2635 globalwpw.formentry = 0;
2636 localStorage.setItem("formentry", globalwpw.formentry);
2637 localStorage.removeItem("cx-name" );
2638 localStorage.removeItem("cx-diaplayname" );
2639 localStorage.removeItem("cx-languagecode" );
2640 localStorage.removeItem("cx-timezone" );
2641 var number = Math.random() // 0.9394456857981651
2642 number.toString(36); // '0.xtis06h6'
2643 var id = number.toString(36).substr(2); // 'xtis06h6'
2644 localStorage.setItem('botsessionid', id);
2645 // Keep mobile/responsive chat full-width after reset (do not shrink to content)
2646 if ($(window).width() <= 480 && globalwpw.settings.obj.mobile_full_screen == 1) {
2647 $('#wp-chatbot-chat-container').addClass('wp-chatbot-mobile-fs-open').css({
2648 'bottom': '0',
2649 'left': '0',
2650 'right': '0',
2651 'width': '100%',
2652 'max-width': '100%'
2653 });
2654 $('#wp-chatbot-board-container').css({'width': '100%', 'max-width': '100%'});
2655 $('.slimScrollDiv').css({'width': '100%', 'max-width': '100%'});
2656 }
2657 wpwWelcome.greeting();
2658 });
2659 $(document).on('click','.qcld-chatbot-formanswer',function(e){
2660 e.preventDefault();
2661 var answer=$(this).attr('data-form-value');
2662 wpwAction.bot(answer);
2663 })
2664 //
2665 $(document).on('click','.qcld-chatbot-product-category',function(){
2666 var catType=$(this).attr('data-category-type');
2667 var shopperChoiceCatId=$(this).text()+'#'+$(this).attr('data-category-id');
2668 var shopperChoiceCategory=$(this).text();
2669 if(catType=='hasChilds'){
2670 //Now hide all categories but shopper choice.
2671 wpwMsg.shopper_choice(shopperChoiceCategory);
2672 //updating the product steps and bringing the product by category.
2673 wpwKits.subCats($(this).attr('data-category-id'));
2674 globalwpw.productStep='search';
2675 globalwpw.wildCard=1;
2676 }else{
2677 //Now hide all categories but shopper choice.
2678 wpwMsg.shopper_choice(shopperChoiceCategory);
2679 //updating the product steps and bringing the product by category.
2680 globalwpw.productStep='category';
2681 globalwpw.wildCard=1;
2682 //keeping value in localstorage
2683 localStorage.setItem("productStep", globalwpw.productStep);
2684 wpwAction.bot(shopperChoiceCatId);
2685 }
2686 });
2687 //Product Load More features for product search or category products
2688 $(document).on('click','#wp-chatbot-loadmore',function (e) {
2689 $('#wp-chatbot-loadmore-loader').html('<img class="wp-chatbot-comment-loader" src="'+globalwpw.settings.obj.image_path+'loadmore.gif" alt="..." />');
2690 var loadMoreDom=$(this);
2691 var productOffest=loadMoreDom.attr('data-offset');
2692 var searchType=loadMoreDom.attr('data-search-type');
2693 var searchTerm=loadMoreDom.attr('data-search-term');
2694 var data = { 'action': 'qcld_wb_chatbot_load_more','offset': productOffest,'search_type': searchType,'search_term': searchTerm};
2695 //Load more ajax handler.
2696 wpwKits.ajax(data).done(function (response) {
2697 //Change button text
2698 $('#wp-chatbot-loadmore-loader').html('');
2699 $('.wp-chatbot-products').append(response.html);
2700 loadMoreDom.attr('data-search-term',response.search_term);
2701 wpwKits.wpwHistorySave();
2702 loadMoreDom.attr('data-offset',response.offset);
2703 if(response.product_num <= response.per_page){
2704 loadMoreDom.hide();
2705 //Now show the user infinite.
2706 setTimeout(function () {
2707 var searchAgain = wpwKits.randomMsg(globalwpw.settings.obj.product_infinite);
2708 wpwMsg.single(searchAgain);
2709 globalwpw.productStep='search';
2710 //keeping value in localstorage
2711 localStorage.setItem("productStep", globalwpw.productStep);
2712 },globalwpw.settings.wildcardsShowTime);
2713 }
2714 //scroll to the last message
2715 wpwKits.scrollTo();
2716 });
2717 });
2718 //search load more
2719 $(document).on('click', '.wp-chatbot-loadmore', function(e){
2720 e.preventDefault();
2721 var obj = $(this);
2722
2723 var keyword = obj.attr('data-keyword');
2724 var post_type = obj.attr('data-post_type');
2725 var page = obj.attr('data-page');
2726 obj.text('Loading...');
2727 var data = {'action':'wpbo_search_site_pagination','name':globalwpw.hasNameCookie,'keyword':keyword,'language': globalwpw.settings.obj.language,'type': post_type, 'page': page, 'nonce': qcld_chatbot_obj.nonce};
2728 if($(globalwpw.settings.messageLastChild+' .wp-chatbot-comment-loader').length==0){
2729 $(globalwpw.settings.messageContainer).append(wpwKits.botPreloader());
2730 }
2731 wpwKits.ajax(data).done(function (res) {
2732 var json = (res);
2733 if(json.status=='success'){
2734 $('span[data-wildcart="back"]').remove();
2735 wpwMsg.single(json.html);
2736 // Hide the comment loader after response inside parent .wp-chatbot-paragraph
2737 // Hide the entire li.wp-chatbot-msg if its .wp-chatbot-paragraph only contains the loader image (and is hidden)
2738
2739 setTimeout(function(){
2740 if((globalwpw.settings.obj.qcld_disable_repited_startmenu != "1") && (globalwpw.settings.obj.disable_back_to_start != '1' && globalwpw.settings.obj.skip_greetings_and_menu != 1)){
2741 wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start" data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
2742 }
2743 },globalwpw.settings.preLoadingTime)
2744
2745 obj.remove();
2746 }else{
2747
2748 if(globalwpw.counter == globalwpw.settings.obj.no_result_attempt_count || globalwpw.settings.obj.no_result_attempt_count == 0 ){
2749
2750 wpwMsg.single(json.html);
2751 if(globalwpw.settings.obj.disable_repeatative!=1){
2752 if ( wpwKits.render( globalwpw.settings.obj.no_result_attempt_message ) != '' ) {
2753 setTimeout(function(){
2754 wpwMsg.single(wpwKits.render( globalwpw.settings.obj.no_result_attempt_message ));
2755 },globalwpw.settings.preLoadingTime)
2756 } else {
2757 setTimeout(function(){
2758 var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
2759 if((globalwpw.settings.obj.qcld_disable_start_menu != "1")){
2760 if(typeof(globalwpw.wildcards) != 'undefined' && (globalwpw.wildcards != '')){
2761 console.log(globalwpw.wildcards);
2762 wpwMsg.double_nobg(serviceOffer,globalwpw.wildcards);
2763 }else{
2764 wpwMsg.single(serviceOffer);
2765 }
2766
2767 }
2768
2769 },globalwpw.settings.preLoadingTime)
2770 }
2771 }
2772 globalwpw.counter = 0;
2773
2774 }else{
2775 globalwpw.counter++;
2776 wpwTree.df_reply(res);
2777 }
2778
2779 }
2780 globalwpw.wildCard=0;
2781
2782 });
2783
2784
2785 })
2786
2787 //search load more
2788 $(document).on('click', '.wp-chatbot-loadmore2', function(e){
2789 e.preventDefault();
2790 var obj = $(this);
2791
2792 var keyword = obj.attr('data-keyword');
2793
2794 var page = obj.attr('data-page');
2795
2796 var search_type = obj.attr('data-search-type');
2797 obj.text(globalwpw.settings.obj.loading.en_US);
2798
2799 if( search_type == 'default-wp-search' ){
2800 var data = {'action':'wpbo_default_search_pagination2','name':globalwpw.hasNameCookie,'keyword':keyword, 'page': page, search_type:'default-wp-search'};
2801 }else{
2802 var data = {'action':'wpbo_search_site_pagination2','name':globalwpw.hasNameCookie,'keyword':keyword, 'page': page,'nonce': qcld_chatbot_obj.nonce};
2803 }
2804 if($(globalwpw.settings.messageLastChild+' .wp-chatbot-comment-loader').length==0){
2805 $(globalwpw.settings.messageContainer).append(wpwKits.botPreloader());
2806 }
2807 wpwKits.ajax(data).done(function (res) {
2808 var json=$.parseJSON(res);
2809 if(json.status=='success'){
2810 $('span[data-wildcart="back"]').remove();
2811
2812 wpwMsg.single_nobg(json.html);
2813
2814 setTimeout(function(){
2815 if((globalwpw.settings.obj.qcld_disable_repited_startmenu != "1") && (globalwpw.settings.obj.disable_back_to_start != '1' && globalwpw.settings.obj.skip_greetings_and_menu != 1)){
2816 wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start" data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
2817 }
2818 },globalwpw.settings.preLoadingTime)
2819
2820 obj.remove();
2821 }else{
2822
2823 if(globalwpw.counter == globalwpw.settings.obj.no_result_attempt_count || globalwpw.settings.obj.no_result_attempt_count == 0 ){
2824
2825 wpwMsg.single(json.html);
2826 wpwTree.start_menu_settings();
2827 globalwpw.counter = 0;
2828
2829 }else{
2830 globalwpw.counter++;
2831 wpwTree.df_reply(res);
2832 }
2833
2834 }
2835 globalwpw.wildCard=0;
2836 });
2837
2838
2839 });
2840 /*Products details part **/
2841 // if(globalwpw.settings.obj.open_product_detail!=1){
2842 // $(document).on('click','.wp-chatbot-product a',function (e) {
2843 // e.preventDefault();
2844 // $('.wp-chatbot-product-container').addClass('active-chatbot-product-details');
2845 // $('.wp-chatbot-product-reload').addClass('wp-chatbot-product-loading').html('<img class="wp-chatbot-product-loader" src="'+globalwpw.settings.obj.image_path+'comment.gif" alt="Loading..." />');
2846 // var productId=$(this).attr('wp-chatbot-pid');
2847 // var data = { 'action':'qcld_wb_chatbot_product_details', 'wp_chatbot_pid':productId};
2848 // //product details ajax handler.
2849 // wpwKits.ajax(data).done(function (response) {
2850 // $('.wp-chatbot-product-reload').removeClass('wp-chatbot-product-loading').html('');
2851 // $('#wp-chatbot-product-title').html(response.title);
2852 // $('#wp-chatbot-product-description').html(response.description);
2853 // $('#wp-chatbot-product-image').html(response.image);
2854 // $('#wp-chatbot-product-price').html(response.price);
2855 // $('#wp-chatbot-product-quantity').html(response.quantity);
2856 // $('#wp-chatbot-product-variable').html(response.variation);
2857 // $('#wp-chatbot-product-cart-button').html(response.buttton);
2858 // //Load gallery magnify
2859 // setTimeout(function () {
2860 // $('#wp-chatbot-product-image-large-path').magnificPopup({type:'image'});
2861 // },1000);
2862 // //For shortcode handle recenlty view product by ajax as
2863 // if($('#wp-chatbot-shortcode-template-container').length > 0){
2864 // var data = {'action':'qcld_wb_chatbot_recently_viewed_products'};
2865 // wpwKits.ajax(data).done(function (response) {
2866 // $('.wp-chatbot-product-shortcode-container').html(response);
2867 // $('.chatbot-sidebar .wp-chatbot-products').slimScroll({height: '435px', start: 'top'});
2868 // });
2869 // }
2870 // });
2871 // });
2872 // }
2873 //Image gallery.
2874 $(document).on('click','.wp-chatbot-product-image-thumbs-path',function (e) {
2875 e.preventDefault();
2876 var imagePath=$(this).attr('href');
2877 $('#wp-chatbot-product-image-large-path').attr('href',imagePath);
2878 $('#wp-chatbot-product-image-large-src').attr('src',imagePath);
2879 //handle thumb active one
2880 $('.wp-chatbot-product-image-thumbs-path').parent().removeClass('wp-chatbot-product-active-image-thumbs');
2881 $(this).parent().addClass('wp-chatbot-product-active-image-thumbs');
2882 });
2883 //Product details close
2884 $(document).on('click', '.wp-chatbot-product-close', function (e) {
2885 $('.wp-chatbot-product-container').removeClass('active-chatbot-product-details');
2886 });
2887 /*add to cart part **/
2888 $(document).on("click","#wp-chatbot-add-cart-button",function (e) {
2889 var pId=$(this).attr('wp-chatbot-product-id');
2890 var qnty=$("#vPQuantity").val();
2891 var data = {'action': 'qcld_wb_chatbot_add_to_cart','product_id': pId,'quantity': qnty };
2892 //add to cart ajax handler.
2893 wpwKits.ajax(data).done(function (response) {
2894 //Change button text
2895 if(response=="simple"){
2896 //Showing cart.
2897 wpwKits.showCart();
2898 //handle the active tab on chat board.
2899 $('.wp-chatbot-operation-option').each(function(){
2900 if($(this).attr('data-option')=='cart'){
2901 $(this).parent().addClass('wp-chatbot-operation-active');
2902 }else{
2903 $(this).parent().removeClass('wp-chatbot-operation-active');
2904 }
2905 });
2906 }
2907 //Hide the shortcode and chat ui product details.
2908 $('.wp-chatbot-product-container').removeClass('active-chatbot-product-details');
2909 });
2910 });
2911 //Add to cart operation for variable product.
2912 $(document).on('click','#wp-chatbot-variation-add-to-cart',function(event) {
2913 event.preventDefault();
2914 var pId=$(this).attr('wp-chatbot-product-id');
2915 var quanity=$('#vPQuantity').val();
2916 var variation_id=$(this).attr('variation_id');
2917 var attributes=new Array();
2918 $.each($("#wp-chatbot-variation-data select"), function(){
2919 var attribute = $(this).attr('name')+'#'+ $(this).find('option:selected').text();
2920 attributes.push(attribute);
2921 });
2922 var data = {
2923 'action': 'qcld_variable_add_to_cart',
2924 'p_id': pId,
2925 'quantity': quanity,
2926 'variations_id':variation_id,
2927 'attributes':attributes
2928 };
2929 //add to cart ajax handler.
2930 wpwKits.ajax(data).done(function (response) {
2931 //Change button text
2932 if(response=="variable"){
2933 //Showing cart.
2934 wpwKits.showCart();
2935 //handle the active tab on chat board.
2936 //handle the active tab on chat board.
2937 $('.wp-chatbot-operation-option').each(function(){
2938 if($(this).attr('data-option')=='cart'){
2939 $(this).parent().addClass('wp-chatbot-operation-active');
2940 }else{
2941 $(this).parent().removeClass('wp-chatbot-operation-active');
2942 }
2943 });
2944 }
2945 //Hide the shortcode and chat ui product details.
2946 $('.wp-chatbot-product-container').removeClass('active-chatbot-product-details');
2947 });
2948 });
2949 //Update cart.
2950 $(document).on("change", ".qcld-wp-chatbot-cart-item-qnty", function () {
2951 //Update editor only for chat ui
2952 if($('#wp-chatbot-shortcode-template-container').length == 0) {
2953 wpwKits.disableEditor(wpwKits.randomMsg(globalwpw.settings.obj.cart_updating));
2954 }
2955 var currentItem=$(this);
2956 setTimeout(function () {
2957 var item_key=currentItem.attr('data-cart-item');
2958 var qnty=currentItem.val();
2959 var data = {'action': 'qcld_wb_chatbot_update_cart_item_number','cart_item_key':item_key,'qnty':qnty};
2960 wpwKits.ajax(data).done(function () {
2961 //Showing cart.
2962 wpwKits.showCart();
2963 });
2964 }, globalwpw.settings.preLoadingTime);
2965 });
2966 //remove the cart item from global cart.
2967 $(document).on("click", ".wp-chatbot-remove-cart-item", function () {
2968 //Update editor only for chat ui
2969 if($('#wp-chatbot-shortcode-template-container').length == 0) {
2970 wpwKits.disableEditor(wpwKits.randomMsg(globalwpw.settings.obj.cart_removing));
2971 }
2972 var item=$(this).attr('data-cart-item');
2973 var data = {'action': 'qcld_wb_chatbot_cart_item_remove', 'cart_item':item };
2974 wpwKits.ajax(data).done(function () {
2975 //Showing cart.
2976 wpwKits.showCart();
2977 })
2978 });
2979 /*Support query answering.. **/
2980 $(document).on('click','.qcld-chatbot-support-items',function (e) {
2981 var shopperChoose=$(this).text();
2982 var queryIndex=$(this).attr('data-query-index');
2983 wpwMsg.shopper_choice(shopperChoose);
2984 //Now answering the query.
2985 var queryAns=globalwpw.settings.obj.support_ans[queryIndex];
2986 wpwMsg.single(queryAns);
2987 //Asking email after showing answer.
2988 var orPhoneSuggest='';
2989 setTimeout(function(){
2990 if(globalwpw.settings.obj.call_sup!=1) {
2991 orPhoneSuggest = '<span class="qcld-chatbot-suggest-phone" >' + wpwKits.randomMsg(globalwpw.settings.obj.support_phone) + '</span>';
2992 }
2993 var orEmailSuggest='<span class="qcld-chatbot-suggest-email">'+wpwKits.randomMsg(globalwpw.settings.obj.support_email)+'</span>';
2994 wpwKits.suggestEmail(orPhoneSuggest+orEmailSuggest);
2995 },globalwpw.settings.wildcardsShowTime);
2996 });
2997 /*Support Email **/
2998 $(document).on('click','.qcld-chatbot-suggest-email',function (e) {
2999 var shopperChoice=$(this).text();
3000 wpwMsg.shopper_choice(shopperChoice);
3001 //Then ask email address
3002 if(typeof(globalwpw.hasNameCookie)=='undefined'|| globalwpw.hasNameCookie==''){
3003 var shopperName= globalwpw.settings.obj.shopper_demo_name;
3004 }else{
3005 var shopperName=globalwpw.hasNameCookie;
3006 }
3007 var ask_msg = wpwKits.randomMsg(globalwpw.settings.obj.asking_email);
3008 var askEmail = (globalwpw.settings.obj.skip_wp_greetings=='1' || globalwpw.settings.obj.skip_greetings_and_menu =='1') ? wpwKits.randomMsg(globalwpw.settings.obj.hello)+' '+ ask_msg : wpwKits.randomMsg(globalwpw.settings.obj.hello) + ' '+shopperName+'! '+ ask_msg;
3009 wpwMsg.single(askEmail);
3010 //Now updating the support part as .
3011 globalwpw.supportStep='email';
3012 globalwpw.wildCard=1;
3013 //keeping value in localstorage
3014 localStorage.setItem("wildCard", globalwpw.wildCard);
3015 localStorage.setItem("supportStep", globalwpw.supportStep);
3016 });
3017 /*site Search*/
3018 $(document).on('click','.qcld-chatbot-site-search',function (e) {
3019 var shopperChoice=$(this).text();
3020 wpwMsg.shopper_choice(shopperChoice);
3021 //Then ask email address
3022 if(typeof(globalwpw.hasNameCookie)=='undefined'|| globalwpw.hasNameCookie==''){
3023 var shopperName= globalwpw.settings.obj.shopper_demo_name;
3024 }else{
3025 var shopperName=globalwpw.hasNameCookie;
3026 }
3027 var ask_msg = wp_chatbot_obj.search_keyword;
3028 var askEmail = (globalwpw.settings.obj.skip_wp_greetings=='1' || globalwpw.settings.obj.skip_greetings_and_menu =='1') ? 'Hello ' + ask_msg : 'Hello '+shopperName+'! '+ ask_msg;
3029 wpwMsg.single(askEmail);
3030 //Now updating the support part as .
3031 globalwpw.supportStep='search';
3032 globalwpw.wildCard=1;
3033 //keeping value in localstorage
3034 localStorage.setItem("wildCard", globalwpw.wildCard);
3035 localStorage.setItem("supportStep", globalwpw.supportStep);
3036 });
3037 /*Support Phone **/
3038 $(document).on('click','.qcld-chatbot-suggest-phone',function (e) {
3039 var shopperChoice=$(this).text();
3040 wpwMsg.shopper_choice(shopperChoice);
3041 //Then ask email address
3042 if(typeof(globalwpw.hasNameCookie)=='undefined'|| globalwpw.hasNameCookie==''){
3043 var shopperName= globalwpw.settings.obj.shopper_demo_name;
3044 }else{
3045 var shopperName=globalwpw.hasNameCookie;
3046 }
3047 var ask_msg = wpwKits.randomMsg(globalwpw.settings.obj.asking_phone);
3048 var askEmail = (globalwpw.settings.obj.skip_wp_greetings=='1' || globalwpw.settings.obj.skip_greetings_and_menu =='1') ? 'Hello ' + ask_msg : 'Hello '+shopperName+'! '+ ask_msg;
3049 wpwMsg.single(askEmail);
3050 //Now updating the support part as .
3051 globalwpw.supportStep='phone';
3052 globalwpw.wildCard=1;
3053 //keeping value in localstorage
3054 localStorage.setItem("wildCard", globalwpw.wildCard);
3055 localStorage.setItem("supportStep", globalwpw.supportStep);
3056 });
3057 //Show chat,cart and recently view products by click event.
3058 $(document).on('click','.wp-chatbot-operation-option',function (e) {
3059 e.preventDefault();
3060 var oppt=$(this).attr('data-option');
3061 if(oppt=='recent' && globalwpw.wpwIsWorking==0){
3062 wpwKits.disableEditor(globalwpw.settings.obj.sys_key_product);
3063 var data = {'action':'qcld_wb_chatbot_recently_viewed_products'};
3064 wpwKits.ajax(data).done(function (response) {
3065 $(globalwpw.settings.messageWrapper).html(response);
3066 });
3067 //First remove wp-chatbot-operation-active class from all selector
3068 $('.wp-chatbot-operation-option').parent().removeClass('wp-chatbot-operation-active');
3069 //then add the active class to current element.
3070 $(this).parent().addClass('wp-chatbot-operation-active');
3071 }else if(oppt=='chat' && globalwpw.wpwIsWorking==0){
3072 $(globalwpw.settings.messageWrapper).html(localStorage.getItem("wpwHitory"));
3073 wpwKits.scrollTo();
3074 wpwKits.enableEditor(wpwKits.randomMsg(globalwpw.settings.obj.send_a_msg));
3075 //First remove wp-chatbot-operation-active class from all selector
3076 $('.wp-chatbot-operation-option').parent().removeClass('wp-chatbot-operation-active');
3077 //then add the active class to current element.
3078 $(this).parent().addClass('wp-chatbot-operation-active');
3079 } else if(oppt=='cart' && globalwpw.wpwIsWorking==0){
3080 wpwKits.showCart();
3081 //First remove wp-chatbot-operation-active class from all selector
3082 $('.wp-chatbot-operation-option').parent().removeClass('wp-chatbot-operation-active');
3083 //then add the active class to current element.
3084 $(this).parent().addClass('wp-chatbot-operation-active');
3085 } else if(oppt=='help' && globalwpw.wpwIsWorking==0){
3086 if( $('.wp-chatbot-messages-container').length==0) {
3087 //if from other nob then goo to the chat window
3088 $(globalwpw.settings.messageWrapper).html(localStorage.getItem("wpwHitory"));
3089 //Showing help message
3090 setTimeout(function () {
3091 wpwKits.scrollTo();
3092 var helpWelcome = wpwKits.randomMsg(globalwpw.settings.obj.help_welcome);
3093 var helpMsg = wpwKits.decodehtml(wpwKits.randomMsg(globalwpw.settings.obj.help_msg));
3094 wpwMsg.double(helpWelcome,helpMsg);
3095 //dialogflow
3096 if(globalwpw.settings.obj.ai_df_enable==1 && globalwpw.df_status_lock==0){
3097 globalwpw.wildCard=0;
3098 globalwpw.ai_step=1;
3099 localStorage.setItem("wildCard", globalwpw.wildCard);
3100 localStorage.setItem("aiStep", globalwpw.ai_step);
3101 }
3102 },globalwpw.settings.preLoadingTime);
3103 }else{
3104 //Showing help message on chat self window.
3105 var helpWelcome = wpwKits.randomMsg(globalwpw.settings.obj.help_welcome);
3106 var helpMsg = wpwKits.randomMsg(globalwpw.settings.obj.help_msg);
3107 wpwMsg.double(helpWelcome,helpMsg);
3108 //dialogflow
3109 if(globalwpw.settings.obj.ai_df_enable==1 && globalwpw.df_status_lock==0){
3110 globalwpw.wildCard=0;
3111 globalwpw.ai_step=1;
3112 localStorage.setItem("wildCard", globalwpw.wildCard);
3113 localStorage.setItem("aiStep", globalwpw.ai_step);
3114 }
3115 }
3116 //First remove wp-chatbot-operation-active class from all selector
3117 $('.wp-chatbot-operation-option').parent().removeClass('wp-chatbot-operation-active');
3118 //then add the active class to current element.
3119 $(this).parent().addClass('wp-chatbot-operation-active');
3120 } else if(oppt=='support' && globalwpw.wpwIsWorking==0){
3121 if( $('.wp-chatbot-messages-container').length==0) {
3122 //if from other nob then goo to the chat window
3123 $(globalwpw.settings.messageWrapper).html(localStorage.getItem("wpwHitory"));
3124 //Showing help message
3125 setTimeout(function () {
3126 wpwKits.scrollTo();
3127 globalwpw.wildCard=1;
3128 globalwpw.supportStep='welcome';
3129 wpwTree.support(globalwpw.settings.obj.sys_key_support.toLowerCase());
3130 },globalwpw.settings.preLoadingTime);
3131 }else{
3132 //Showing help message on chat self window.
3133 globalwpw.wildCard=1;
3134 globalwpw.supportStep='welcome';
3135 wpwTree.support(globalwpw.settings.obj.sys_key_support.toLowerCase());
3136 }
3137 //First remove wp-chatbot-operation-active class from all selector
3138 $('.wp-chatbot-operation-option').parent().removeClass('wp-chatbot-operation-active');
3139 //then add the active class to current element.
3140 $(this).parent().addClass('wp-chatbot-operation-active');
3141 }
3142 //show chat wrapper and hide cart-checkout wrapper
3143 $(globalwpw.settings.messageWrapper).show();
3144 $('#wp-chatbot-checkout-short-code').hide();
3145 $('#wp-chatbot-cart-short-code').hide();
3146 });
3147 $(document).on('click','.qcld-chatbot-reset-btn',function (e) {
3148 e.preventDefault();
3149 var actionType=$(this).attr('reset-data');
3150 if(actionType=='yes'){
3151
3152 $('#wp-chatbot-messages-container').html('');
3153 localStorage.removeItem('shopper');
3154 globalwpw.wildCard=0;
3155 globalwpw.ai_step=0;
3156 localStorage.setItem("wildCard", globalwpw.wildCard);
3157 localStorage.setItem("aiStep", globalwpw.ai_step);
3158 globalwpw.formfieldid = '';
3159 localStorage.setItem("formfieldid", globalwpw.formfieldid);
3160 globalwpw.formStep='welcome';
3161 localStorage.setItem("formStep", globalwpw.formStep);
3162 globalwpw.formid='';
3163 localStorage.setItem("formid", globalwpw.formid);
3164 globalwpw.formentry = 0;
3165 localStorage.setItem("formentry", globalwpw.formentry);
3166 localStorage.removeItem("cx-name" );
3167 localStorage.removeItem("cx-diaplayname" );
3168 localStorage.removeItem("cx-languagecode" );
3169 localStorage.removeItem("cx-timezone" );
3170 var number = Math.random() // 0.9394456857981651
3171 number.toString(36); // '0.xtis06h6'
3172 var id = number.toString(36).substr(2); // 'xtis06h6'
3173 localStorage.setItem('botsessionid', id);
3174 wpwWelcome.greeting();
3175 } else if(actionType=='no'){
3176 wpwAction.bot(globalwpw.settings.obj.sys_key_help.toLowerCase());
3177 }
3178 });
3179 return this;
3180 };
3181 //Deafault value for wpwbot.If nothing passes from the work station
3182 //Then defaults value will be used.
3183 $.wpwbot.defaults={
3184 obj:{},
3185 editor_handler:0,
3186 sendButton:'#wp-chatbot-send-message',
3187 messageEditor:'#wp-chatbot-editor',
3188 messageContainer:'#wp-chatbot-messages-container',
3189 messageWrapper:'.wp-chatbot-messages-wrapper',
3190 botContainer:'.wp-chatbot-ball-inner',
3191 messageLastChild:'#wp-chatbot-messages-container li:last',
3192 messageLastBot:'#wp-chatbot-messages-container .wp-chatbot-msg:last .wp-chatbot-paragraph',
3193 preLoadingTime:0,
3194 wildcardsShowTime:5000,
3195 }
3196
3197 document.addEventListener("click", function(e) {
3198 // Toggle share menu
3199 if (e.target.closest(".share-toggle")) {
3200 e.preventDefault();
3201 let menu = e.target.closest(".qcld-share").querySelector(".share-menu");
3202 menu.style.display = menu.style.display === "none" ? "block" : "none";
3203 }
3204
3205 // Find message content dynamically
3206 let msgItem = e.target.closest(".wp-chatbot-msg");
3207 if (!msgItem) return;
3208
3209 let msgContent = msgItem.querySelector(".wp-chatbot-paragraph");
3210 if (!msgContent) return;
3211
3212 // Extract plain text
3213 let msgText = msgContent.innerText.trim();
3214 let shareSite = window.location.origin; // Get the site URL dynamically (e.g., "https://www.example.com")
3215 // Ensure a trailing slash if it's meant to represent the root of the site
3216 if (!shareSite.endsWith('/')) {
3217 shareSite += '/';
3218 }
3219 let fullMsg = `${msgText}\n-- ${shareSite}`;
3220 let encodedMsg = encodeURIComponent(fullMsg);
3221
3222 // Facebook (requires App ID)
3223 if (e.target.closest(".share-fb")) {
3224 e.preventDefault();
3225
3226 // You must include a URL even if you're just sharing text
3227 const shareURL = encodeURIComponent(window.location.href); // or your chatbot page URL
3228 const fbShareURL = "https://www.facebook.com/sharer/sharer.php?u=" + shareURL + "&quote=" + encodedMsg;
3229
3230 window.open(fbShareURL, "_blank", "width=600,height=400");
3231 }
3232
3233 // WhatsApp
3234 if (e.target.closest(".share-wa")) {
3235 e.preventDefault();
3236 window.open("https://wa.me/?text=" + encodedMsg, "_blank");
3237 }
3238
3239 // X (Twitter)
3240 if (e.target.closest(".share-x")) {
3241 e.preventDefault();
3242 window.open("https://twitter.com/intent/tweet?text=" + encodedMsg, "_blank");
3243 }
3244
3245 // Email
3246 if (e.target.closest(".share-email")) {
3247 e.preventDefault();
3248 window.location.href = "mailto:?subject=Chatbot Message&body=" + encodedMsg;
3249 }
3250 });
3251 jQuery(document).ready(function($) {
3252
3253 let reportedMessage = "";
3254 let modalElements = {}; // Store references to modal elements
3255 let isModalInitialized = false; // Flag to prevent re-attaching listeners
3256
3257 /**
3258 * Initializes the report modal by finding its elements and attaching event listeners.
3259 * This function is designed to be called only once, the first time the report icon is clicked,
3260 * to ensure all DOM elements are available.
3261 * @returns {boolean} True if initialization was successful, false otherwise.
3262 */
3263 function setupReportModal() {
3264 if (isModalInitialized) {
3265 return true; // Already initialized
3266 }
3267
3268 const modal = document.getElementById("wpbot-report-modal");
3269 const emailInput = document.getElementById("wpbot-report-email");
3270 const textInput = document.getElementById("wpbot-report-text");
3271 const cancelBtn = document.getElementById("wpbot-report-cancel");
3272 const reportForm = document.getElementById("wpbot-report-form");
3273
3274 if (!modal || !emailInput || !textInput || !cancelBtn || !reportForm) {
3275 console.error("❌ One or more modal elements missing in DOM. Cannot initialize report modal.");
3276 return false; // Initialization failed
3277 }
3278
3279 // Store references to the elements
3280 modalElements = { modal, emailInput, textInput, cancelBtn, reportForm };
3281
3282 // Attach event listener for the cancel button
3283 modalElements.cancelBtn.addEventListener("click", function() {
3284 modalElements.modal.style.display = "none";
3285 });
3286
3287 // Attach event listener for the form submission
3288 modalElements.reportForm.addEventListener("submit", function(e) {
3289 e.preventDefault();
3290
3291 let email = modalElements.emailInput.value.trim();
3292 let reportText = modalElements.textInput.value.trim();
3293
3294 if (!email || !reportText) {
3295 alert("Please fill in both fields.");
3296 return;
3297 }
3298
3299 // Save email to localStorage
3300 localStorage.setItem("shopperemail", email);
3301
3302 // Build meta info for the report
3303 let meta = "Source URL: " + window.location.href + " | User Agent: " + navigator.userAgent;
3304
3305 // Send report via AJAX
3306 $.post(wp_chatbot_obj.ajax_url, {
3307 action: "wpbot_save_report",
3308 user_id: globalwpw.settings.obj.current_user_id,
3309 conversation_id: 3,
3310 message: reportedMessage, // Use the message captured when the icon was clicked
3311 report_text: reportText,
3312 email: email,
3313 meta_info: meta
3314 }, function(response) {
3315 if (response.success) {
3316 console.log("Report sent successfully.");
3317 // The original line `jQuery(e.target.closest(".fa fa-commenting-o")).addClass("submitted");`
3318 // was incorrect as `e.target` here refers to the form, not the original icon.
3319 // To mark the icon, a reference to it would need to be stored when it was clicked.
3320 } else {
3321 console.log("Failed to send report.");
3322 }
3323 modalElements.modal.style.display = "none"; // Hide modal after submission
3324 });
3325 });
3326
3327 isModalInitialized = true; // Mark as initialized
3328 return true; // Initialization successful
3329 }
3330
3331 // Event listener for clicks on the document to detect report icon clicks
3332 document.addEventListener("click", function(e) {
3333 if (e.target.closest(".fa-commenting-o")) {
3334 e.preventDefault();
3335 console.log("Report icon clicked");
3336
3337 // Attempt to initialize the modal elements and listeners if not already done.
3338 // This ensures elements are looked up only when needed, making it more robust
3339 // against timing issues if the modal HTML is loaded asynchronously or late.
3340 if (!setupReportModal()) {
3341 return; // If initialization failed (elements not found), stop here.
3342 }
3343
3344 // Now that we are sure modal elements are available, proceed to open the modal.
3345 let msgItem = e.target.closest(".wp-chatbot-msg");
3346 if (msgItem) {
3347 reportedMessage = msgItem.querySelector(".wp-chatbot-paragraph").innerText.trim();
3348 } else {
3349 reportedMessage = ""; // Fallback if message item not found
3350 }
3351
3352 // Prefill email from localStorage if available
3353 let shopperEmail = localStorage.getItem("shopperemail");
3354 modalElements.emailInput.value = shopperEmail ? shopperEmail : "";
3355
3356 // Clear previous report text
3357 modalElements.textInput.value = "";
3358
3359 // Display the modal
3360 modalElements.modal.style.display = "block";
3361 }
3362 });
3363 });
3364 jQuery(document).on('click', '.qc_wpbot_chat_link', function (e) {
3365 console.log("Chat link clicked");
3366 e.preventDefault();
3367 jQuery("#wp-chatbot-ball").trigger("click");
3368 jQuery("#wp-chatbot-chat-container").show();
3369 });
3370 document.addEventListener("click", function (e) {
3371 const likeIcon = e.target.closest(".dashicons-thumbs-up");
3372 const dislikeIcon = e.target.closest(".dashicons-thumbs-down");
3373
3374 if (!likeIcon && !dislikeIcon) return; // only handle like/dislike clicks
3375 e.preventDefault();
3376
3377 const msgItem = e.target.closest(".wp-chatbot-msg");
3378 const feedbackContainer = jQuery(msgItem).find(".qcld-like-dislike-icon");
3379 const likeAnchor = jQuery(msgItem).find(".dashicons-thumbs-up").parent("a");
3380 const dislikeAnchor = jQuery(msgItem).find(".dashicons-thumbs-down").parent("a");
3381
3382 let feedbackType = "";
3383 let isToggleOff = false;
3384
3385 if (likeIcon) {
3386 // If like is already active → toggle it off
3387 if (likeAnchor.hasClass("liked")) {
3388 likeAnchor.removeClass("liked");
3389 likeIcon.classList.remove("liked");
3390 isToggleOff = true;
3391 } else {
3392 // Activate like, deactivate dislike
3393 likeAnchor.addClass("liked");
3394 likeIcon.classList.add("liked");
3395 dislikeAnchor.removeClass("disliked");
3396 jQuery(msgItem).find(".dashicons-thumbs-down").removeClass("disliked");
3397 feedbackType = "like";
3398 }
3399 } else if (dislikeIcon) {
3400 // If dislike is already active → toggle it off
3401 if (dislikeAnchor.hasClass("disliked")) {
3402 dislikeAnchor.removeClass("disliked");
3403 dislikeIcon.classList.remove("disliked");
3404 isToggleOff = true;
3405 } else {
3406 // Activate dislike, deactivate like
3407 dislikeAnchor.addClass("disliked");
3408 dislikeIcon.classList.add("disliked");
3409 likeAnchor.removeClass("liked");
3410 jQuery(msgItem).find(".fa-thumbs-o-up").removeClass("liked");
3411 feedbackType = "dislike";
3412 }
3413 }
3414
3415 // 🔹 Only send feedback if toggled ON
3416 if (!isToggleOff && feedbackType) {
3417 let message = msgItem.querySelector(".wp-chatbot-paragraph").innerText.trim();
3418 let meta =
3419 "Source URL: " +
3420 window.location.href +
3421 " | User Agent: " +
3422 navigator.userAgent;
3423
3424 jQuery.post(
3425 wp_chatbot_obj.ajax_url,
3426 {
3427 action: "wpbot_save_feedback",
3428 user_id: globalwpw.settings.obj.current_user_id,
3429 conversation_id: 3,
3430 message: message,
3431 feedback: feedbackType,
3432 meta_info: meta,
3433 },
3434 function (response) {
3435 if (response.success) {
3436 console.log("Feedback saved:", feedbackType);
3437 } else {
3438 console.log("Failed to save feedback.");
3439 }
3440 }
3441 );
3442 } else {
3443 console.log("Feedback toggled off, not saving.");
3444 }
3445 });
3446
3447 // ---------------------------------------------------------------------------
3448 // Streaming helpers
3449 // ---------------------------------------------------------------------------
3450
3451 function qcldInlineMarkdown(text) {
3452 text = text.replace(/`([^`]+)`/g, '<code>$1</code>');
3453 text = text.replace(/\*\*([^*]+)\*\*/g, '<strong>$1</strong>');
3454 text = text.replace(/__([^_]+)__/g, '<strong>$1</strong>');
3455 text = text.replace(/\*([^*\n]+)\*/g, '<em>$1</em>');
3456 text = text.replace(/_([^_\n]+)_/g, '<em>$1</em>');
3457 text = text.replace(/\[([^\]]+)\]\((https?:\/\/[^\s)]+)\)/g,
3458 '<a href="$2" target="_blank" rel="noopener noreferrer">$1</a>');
3459 return text;
3460 }
3461
3462 function qcldParseMarkdown(text) {
3463 if (!text) { return ''; }
3464 var lines = text.split('\n');
3465 var html = '';
3466 var inCode = false;
3467 var inUL = false;
3468 var inOL = false;
3469 var codeLines = [];
3470
3471 function closeList() {
3472 if (inUL) { html += '</ul>'; inUL = false; }
3473 if (inOL) { html += '</ol>'; inOL = false; }
3474 }
3475
3476 for (var i = 0; i < lines.length; i++) {
3477 var line = lines[i];
3478
3479 // Fenced code block toggle
3480 if (/^```/.test(line)) {
3481 if (inCode) {
3482 html += '<pre><code>' + codeLines.join('\n').replace(/</g,'&lt;').replace(/>/g,'&gt;') + '</code></pre>';
3483 codeLines = [];
3484 inCode = false;
3485 } else {
3486 closeList();
3487 inCode = true;
3488 }
3489 continue;
3490 }
3491 if (inCode) { codeLines.push(line); continue; }
3492
3493 // Headings
3494 var hm = line.match(/^(#{1,6})\s+(.*)/);
3495 if (hm) {
3496 closeList();
3497 var lvl = hm[1].length;
3498 html += '<h' + lvl + '>' + qcldInlineMarkdown(hm[2]) + '</h' + lvl + '>';
3499 continue;
3500 }
3501
3502 // Horizontal rule
3503 if (/^---+$/.test(line.trim())) {
3504 closeList();
3505 html += '<hr>';
3506 continue;
3507 }
3508
3509 // Unordered list
3510 var ulm = line.match(/^\s*[-*+]\s+(.*)/);
3511 if (ulm) {
3512 if (inOL) { html += '</ol>'; inOL = false; }
3513 if (!inUL) { html += '<ul>'; inUL = true; }
3514 html += '<li>' + qcldInlineMarkdown(ulm[1]) + '</li>';
3515 continue;
3516 }
3517
3518 // Ordered list
3519 var olm = line.match(/^\s*\d+\.\s+(.*)/);
3520 if (olm) {
3521 if (inUL) { html += '</ul>'; inUL = false; }
3522 if (!inOL) { html += '<ol>'; inOL = true; }
3523 html += '<li>' + qcldInlineMarkdown(olm[1]) + '</li>';
3524 continue;
3525 }
3526
3527 // Blank line
3528 if (line.trim() === '') {
3529 closeList();
3530 html += '<br>';
3531 continue;
3532 }
3533
3534 // Normal line
3535 closeList();
3536 html += qcldInlineMarkdown(line) + '<br>';
3537 }
3538
3539 if (inCode) { html += '<pre><code>' + codeLines.join('\n') + '</code></pre>'; }
3540 closeList();
3541 return html;
3542 }
3543
3544 function qcldTypeCharacterByCharacter($target, text, speed, onComplete) {
3545 speed = speed || 10;
3546 onComplete = onComplete || function(){};
3547
3548 var i = 0;
3549 function type() {
3550 if (i < text.length) {
3551 $target.append(document.createTextNode(text.charAt(i)));
3552 i++;
3553 setTimeout(type, speed);
3554 } else {
3555 onComplete();
3556 }
3557 }
3558 type();
3559 }
3560
3561 function qcldStreamOpenAI(dataObj) {
3562 fetch(qcld_chatbot_obj.stream_endpoint, {
3563 method: 'POST',
3564 headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
3565 body: new URLSearchParams(dataObj)
3566 })
3567 .then(function(response) {
3568 if (!response.ok || !response.body) {
3569 throw new Error('Network response was not OK or empty body');
3570 }
3571
3572 var reader = response.body.getReader();
3573 var decoder = new TextDecoder('utf-8');
3574 var buffer = '';
3575 var queue = [];
3576 var isTyping = false;
3577 var streamEnded = false;
3578 var msgBuffer = '';
3579
3580 function finalize() {
3581 var finalMsg = msgBuffer;
3582 var isFormInProgress = qcldIsAiFormInProgress();
3583
3584 // The streaming endpoint never receives __AI_FORM_IN_PROGRESS__ markers
3585 // (those are only added by the non-streaming PHP handler). So we also
3586 // check whether the original request was sent with an active AI action.
3587 if (dataObj.active_ai_action && dataObj.active_ai_action !== '') {
3588 isFormInProgress = true;
3589 }
3590
3591 if (finalMsg.indexOf('__AI_FORM_IN_PROGRESS__') !== -1) {
3592 isFormInProgress = true;
3593 finalMsg = finalMsg.replace(/__AI_FORM_IN_PROGRESS__/g, '').trim();
3594 }
3595
3596 // qcldIsAiFormInProgress() above only reflects context from BEFORE this
3597 // response. If this response itself carries the AI_FORM_DATA completion
3598 // block, the form is done as of now regardless of that stale history.
3599 var isFormCompletion = finalMsg.indexOf('AI_FORM_DATA') !== -1;
3600 if (isFormCompletion) {
3601 isFormInProgress = false;
3602 }
3603
3604 finalMsg = wpwMsg.oncommand_filter(finalMsg);
3605
3606 if (typeof globalwpw !== 'undefined' && typeof globalwpw.aiContext !== 'undefined') {
3607 globalwpw.aiContext.push({role: 'assistant', content: finalMsg});
3608 if (globalwpw.aiContext.length > 10) {
3609 globalwpw.aiContext.shift();
3610 }
3611 }
3612
3613 // Replace raw typed text with formatted HTML
3614 var $para = jQuery('.wp-chatbot-msg').last().find('.wp-chatbot-paragraph');
3615 if (finalMsg.trim()) {
3616 $para.html(qcldParseMarkdown(finalMsg));
3617 }
3618 // Reactions (like/dislike/report/share) don't apply to the form
3619 // completion summary card itself, only to normal AI chat replies.
3620 if (!isFormInProgress && !isFormCompletion) {
3621 jQuery(globalwpw.settings.messageContainer)
3622 .find('.wp-chatbot-msg:last .qcld-like-dislike-icon')
3623 .css('display', 'block');
3624 }
3625
3626 if(!isFormInProgress && (globalwpw.settings.obj.qcld_disable_repited_startmenu != "1") && ((globalwpw.settings.obj.disable_back_to_start != '1' && globalwpw.settings.obj.skip_greetings_and_menu != 1))){
3627 wpwMsg.single_nobg(
3628 '<span class="qcld-chatbot-wildcard qcld_back_to_start" data-wildcart="back">' +
3629 wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) +
3630 '</span>'
3631 );
3632 }
3633 setTimeout(function() {
3634 jQuery(globalwpw.settings.botContainer)
3635 .stop(true)
3636 .animate({ scrollTop: jQuery(globalwpw.settings.botContainer)[0].scrollHeight }, 400);
3637 }, 150);
3638 wpwKits.scrollTo();
3639 }
3640
3641 function processQueue() {
3642 if (isTyping || queue.length === 0) {
3643 if (streamEnded && !isTyping && queue.length === 0) {
3644 finalize();
3645 }
3646 return;
3647 }
3648
3649 isTyping = true;
3650 var nextChunk = queue.shift();
3651 msgBuffer += nextChunk;
3652
3653 // If we've started receiving the data block or internal flags, hide it from the UI!
3654 // We use '__AI_' as the trigger so it stops rendering even partial tags like '__AI_FORM_DATA__' or '__AI_FORM_IN_PROGRESS__'.
3655 if (msgBuffer.indexOf('__AI_') !== -1) {
3656 isTyping = false;
3657 processQueue();
3658 return;
3659 }
3660
3661 var $para = jQuery('.wp-chatbot-msg').last().find('.wp-chatbot-paragraph');
3662 if ($para.length) {
3663 $para.find('.wp-chatbot-comment-loader').remove();
3664 var $span = jQuery('<span>');
3665 $para.append($span);
3666 qcldTypeCharacterByCharacter($span, nextChunk, 10, function() {
3667 isTyping = false;
3668 processQueue();
3669 wpwKits.scrollTo();
3670 });
3671 } else {
3672 isTyping = false;
3673 processQueue();
3674 }
3675 }
3676
3677 function read() {
3678 reader.read().then(function(result) {
3679 if (result.done) { return; }
3680
3681 buffer += decoder.decode(result.value, { stream: true });
3682 var lines = buffer.split('\n');
3683 buffer = lines.pop();
3684
3685 for (var i = 0; i < lines.length; i++) {
3686 var line = lines[i].trim();
3687 if (!line) { continue; }
3688 if (line.indexOf('data:') === 0) {
3689 var jsonStr = line.replace(/^data:\s*/, '');
3690 if (jsonStr === '[DONE]') {
3691 streamEnded = true;
3692 if (!isTyping && queue.length === 0) { finalize(); }
3693 return;
3694 }
3695 try {
3696 var parsed = JSON.parse(jsonStr);
3697 var content = '';
3698 if (parsed.choices && parsed.choices[0] && parsed.choices[0].delta) {
3699 content = parsed.choices[0].delta.content || '';
3700 } else if (parsed.delta && parsed.delta.content) {
3701 content = parsed.delta.content;
3702 }
3703 if (content) {
3704 queue.push(content);
3705 processQueue();
3706 wpwKits.scrollTo();
3707 }
3708 } catch(e) {
3709 console.warn('Streaming parse error:', e, jsonStr);
3710 }
3711 }
3712 }
3713 read();
3714 }).catch(function(err) { console.error('Stream read error:', err); });
3715 }
3716
3717 read();
3718 })
3719 .catch(function(err) { console.error('Stream fetch error:', err); });
3720 }
3721
3722 })(jQuery);
3723