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

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

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