PluginProbe
WPBot – AI ChatBot for Live Support, Lead Generation, WordPress Automation, AI Services / 8.5.5
WPBot – AI ChatBot for Live Support, Lead Generation, WordPress Automation, AI Services v8.5.5
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.5.5, at js/qcld-wp-chatbot-plugin.js

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