1/* 2 * Project: wpwBot jQuery Plugin 3 * Description: wpwBot AI based Chatting functionality are handled . 4 * Author: QuantumCloud 5 * Version: 1.0 6 */ 7var 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' && global
337wpw.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, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"'); 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 //}
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 '&': '&', 778 '<': '<', 779 '>': '>' 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') && global
1074wpw.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", global
1380wpw.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' && global
1890wpw.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'|| global
1970wpw.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 }
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 }
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 || global
2160wpw.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 }
2330else 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 }
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 }
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'|| global
3042wpw.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 && global
3109wpw.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 + ""e=" + 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
3310was 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 3451function 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 3462function 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,'<').replace(/>/g,'>') + '</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 3544function 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 3561function 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);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.