PluginProbe
WPBot – AI ChatBot for Live Support, Lead Generation, WordPress Automation, AI Services / 7.9.5
WPBot – AI ChatBot for Live Support, Lead Generation, WordPress Automation, AI Services v7.9.5
8.8.0 8.7.9 8.7.8 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 All 536 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 7.9.5, at js/qcld-wp-chatbot-plugin.js

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