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