1 2var lbb_last_chat = {}; 3var lbb_prev_message = 0; 4var lbb_first_question = 0; 5var lbb_first_opened = 0; 6/* 7const inactivityThreshold = 10000; 8 9let inactivityTimer; 10 11function startInactivityTimer() { 12 console.log("Starting inactivity timer"); 13 inactivityTimer = setTimeout(closeChat, inactivityThreshold); 14} 15 16// Function to reset the inactivity timer 17function resetInactivityTimer() { 18 clearTimeout(inactivityTimer); 19 startInactivityTimer(); 20} 21 22// Function to close the chat 23function closeChat() { 24 console.log("Chat closed due to inactivity"); 25} 26 27function onMessageReceived() { 28 resetInactivityTimer(); 29}*/ 30 31let lbb_inactive_timer; 32let lbb_admin_timer; 33var isAdminBusy = false; 34var isUserBusy = false; 35 36let mediaRecorder; 37let audioChunks = []; 38let startTime; // Variable to store the start time of recording 39let timerInterval; // Variable to store the timer interval 40 41function lbb_updateTimer() { 42 const elapsedTime = Math.floor((Date.now() - startTime) / 1000); // Calculate elapsed time in seconds 43 const minutes = Math.floor(elapsedTime / 60); 44 const seconds = elapsedTime % 60; 45 const formattedTime = `${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`; 46 jQuery('#recordingTimer').text(formattedTime); 47} 48 49function lbb_init_audio() { 50 navigator.mediaDevices.getUserMedia({ audio: true }) 51 .then(function(stream) { 52 mediaRecorder = new MediaRecorder(stream); 53 54 // Event handler when data is available 55 mediaRecorder.ondataavailable = function(event) { 56 if (event.data.size > 0) { 57 audioChunks.push(event.data); 58 } 59 }; 60 61 mediaRecorder.onstart = function() { 62 startTime = Date.now(); 63 timerInterval = setInterval(lbb_updateTimer, 1000); 64 }; 65 66 // Event handler when recording stops 67 mediaRecorder.onstop = function() { 68 clearInterval(timerInterval); 69 const audioBlob = new Blob(audioChunks, { type: 'audio/wav' }); 70 const audioUrl = URL.createObjectURL(audioBlob); 71 72 // Display the recorded audio 73 //jQuery('#audioPlayer').attr('src', audioUrl); 74 jQuery('#audioPlayer').css('display', 'block'); 75 }; 76 77 jQuery('#startRecording').on('click', function() { 78 audioChunks = []; 79 mediaRecorder.start(); 80 jQuery('#startRecording').hide(); 81 jQuery('.lbb-recording-contorl-buttons-container').show(); 82 }); 83 84 jQuery('#cancelRecording').on('click', function() { 85 if (mediaRecorder.state === 'recording') { 86 mediaRecorder.stop(); 87 jQuery('#startRecording').show(); 88 jQuery('.lbb-recording-contorl-buttons-container').hide(); 89 jQuery('#recordingTimer').html('00:00'); 90 } 91 }); 92 93 jQuery('#stopRecording').on('click', function() { 94 mediaRecorder.stop(); 95 //jQuery('#startRecording').show(); 96 jQuery('.lbb-recording-contorl-buttons-container').hide(); 97 98 setTimeout(function() { 99 100 // Convert audioChunks to a Blob and set it as the input value 101 const audioBlob = new Blob(audioChunks, { type: 'audio/wav' }); 102 const audioDataInput = jQuery('#audioData'); 103 audioDataInput.val(audioBlob); 104 105 const formData = new FormData(); 106 formData.append('audio', audioBlob); 107 108 jQuery.ajax({ 109 type: 'POST', 110 url: listbuildingbot.ajax_url+'?action=lbb_handle_audio_upload', 111 data: formData, 112 processData: false, 113 contentType: false, 114 success: function(response) { 115 116 var response = JSON.parse(response); 117 const attachment = response.audio; 118 var attachment_type = response.type; 119 120 message_meta = {}; 121 message_meta['audio'] = attachment; 122 message_meta['attachment_type'] = attachment_type; 123 message_meta['name'] = name; 124 125 // Display the uploaded image in the chat interface 126 //const imgElement = `<img src="`+imageUrl+`" alt="Uploaded Image" />`; 127 var html = response.download_box; 128 //jQuery('#chat-messages').append(imgElement); 129 130 var current_action_id = lbb_last_chat.action_id; 131 var next_action_id = lbb_last_chat.next_question_id; 132 var conversation_id = getConversationID(); 133 type = lbb_last_chat.type; 134 jQuery('#lbb-audio-question-form').remove(); 135 lbbHandleUserResponse(html,false); 136 scrollToBottom(); 137 lbbSubmitUserReply({ 138 message : '', 139 message_meta : message_meta, 140 conversation_id : conversation_id, 141 current_action_id: current_action_id, 142 next_action_id : next_action_id, 143 chatflow_id : jQuery('#lbb_chatflow_id').val() 144 }); 145 } 146 }); 147 }, 1000); 148 149 }); 150 }) 151 .catch(function(error) { 152 console.error('Error accessing microphone:', error); 153 }); 154} 155 156function lbb_chat_activity_timer(){ 157 158 if(lbb_livechat_options == 'ajax_based'){ 159 lbb_inactive_timer = setInterval(function() { 160 161 var con_id = getConversationID(); 162 jQuery.ajax({ 163 url: listbuildingbot.ajax_url, 164 type: 'POST', 165 async: true, 166 data: { 167 action: 'lbb_get_last_message_from', 168 conversation_id : con_id, 169 170 }, 171 success: function(response) { 172 if(response) { 173 userT = response; 174 175 if(userT == 'admin'){ 176 var con_id = getConversationID(); 177 jQuery.ajax({ 178 url: listbuildingbot.ajax_url, 179 type: 'POST', 180 data: { 181 action: 'lbb_check_last_message', 182 conversation_id : con_id, 183 type : userT, 184 idle_time : userTimer 185 }, 186 success: function(response) { 187 if(response == 'idle') { 188 if(!isAdminBusy){ 189 console.log('user Idle'); 190 lbb_reset_timer(); 191 lbb_conversation_end(); 192 jQuery('.lbb-typing').addClass('lbb-user-input-hide'); 193 } 194 } 195 } 196 }); 197 }else if(userT == 'user'){ 198 var con_id = getConversationID(); 199 jQuery.ajax({ 200 url: listbuildingbot.ajax_url, 201 type: 'POST', 202 data: { 203 action: 'lbb_check_last_message', 204 conversation_id : con_id, 205 type : userT, 206 idle_time : adminTimer 207 }, 208 success: function(response) { 209 if(response == 'idle') { 210 211 console.log('Admin Idle');
212 if(!jQuery('.lbb-admin-response').hasClass('lbb-conversation-admin-busy')){ 213 lbbCustomReponse(adminBusyMessage,'lbb-conversation-admin-busy'); 214 } 215 lbb_reset_timer(); 216 isAdminBusy = true; 217 //lbb_conversation_end(); 218 219 } 220 } 221 }); 222 } 223 } 224 } 225 }); 226 }, 60000); 227 }else{ 228 229 lbb_inactive_timer = setInterval(function() { 230 231 var userT = lbb_get_last_message_from_user_firebase(); 232 233 //console.log('Active timer....'); 234 console.log(userT); 235 236 if(userT == 'admin'){ 237 var isIdle = lbb_check_last_message_from_firebase('user',userTimer); 238 if(isIdle){ 239 if(!isAdminBusy){ 240 console.log('user Idle'); 241 lbb_reset_timer(); 242 lbb_conversation_end(); 243 jQuery('.lbb-typing').addClass('lbb-user-input-hide'); 244 } 245 }else{ 246 console.log('No Idle'); 247 } 248 }else if(userT == 'user'){ 249 var isIdle = lbb_check_last_message_from_firebase('admin',adminTimer); 250 if(isIdle){ 251 console.log('Admin Idle'); 252 if(!jQuery('.lbb-admin-response').hasClass('lbb-conversation-admin-busy')){ 253 lbbCustomReponse(adminBusyMessage,'lbb-conversation-admin-busy'); 254 } 255 lbb_reset_timer(); 256 isAdminBusy = true; 257 //lbb_conversation_end(); 258 }else{ 259 console.log('No Idle'); 260 } 261 } 262 263 }, 60000); 264 265 } 266 267} 268 269 270function lbb_chat_activity_timer_ajax(){ 271 272 if(lbb_livechat_options == 'firebase_based'){ 273 return false; 274 } 275 276 lbb_inactive_timer = setInterval(function() { 277 278 var con_id = getConversationID(); 279 jQuery.ajax({ 280 url: listbuildingbot.ajax_url, 281 type: 'POST', 282 async: true, 283 data: { 284 action: 'lbb_get_last_message_from', 285 conversation_id : con_id, 286 287 }, 288 success: function(response) { 289 if(response) { 290 userT = response; 291 292 if(userT == 'admin'){ 293 var con_id = getConversationID(); 294 jQuery.ajax({ 295 url: listbuildingbot.ajax_url, 296 type: 'POST', 297 data: { 298 action: 'lbb_check_last_message', 299 conversation_id : con_id, 300 type : userT, 301 idle_time : userTimer 302 }, 303 success: function(response) { 304 if(response == 'idle') { 305 if(!isAdminBusy){ 306 console.log('user Idle'); 307 lbb_reset_timer(); 308 lbb_conversation_end(); 309 jQuery('.lbb-typing').addClass('lbb-user-input-hide'); 310 } 311 } 312 } 313 }); 314 }else if(userT == 'admin'){ 315 var con_id = getConversationID(); 316 jQuery.ajax({ 317 url: listbuildingbot.ajax_url, 318 type: 'POST', 319 data: { 320 action: 'lbb_check_last_message', 321 conversation_id : con_id, 322 type : userT, 323 idle_time : adminTimer 324 }, 325 success: function(response) { 326 if(response == 'idle') { 327 328 console.log('Admin Idle'); 329 if(!jQuery('.lbb-admin-response').hasClass('lbb-conversation-admin-busy')){ 330 lbbCustomReponse(adminBusyMessage,'lbb-conversation-admin-busy'); 331 } 332 lbb_reset_timer(); 333 isAdminBusy = true; 334 //lbb_conversation_end(); 335 336 } 337 } 338 }); 339 } 340 } 341 } 342 }); 343 344 /*var userT = lbb_get_last_message_from_user_firebase(); 345 346 //console.log('Active timer....'); 347 console.log(userT); 348 349 if(userT == 'admin'){ 350 var isIdle = lbb_check_last_message_from_firebase('user',userTimer); 351 if(isIdle){ 352 if(!isAdminBusy){ 353 console.log('user Idle'); 354 lbb_reset_timer(); 355 lbb_conversation_end(); 356 jQuery('.lbb-typing').addClass('lbb-user-input-hide'); 357 } 358 }else{ 359 console.log('No Idle'); 360 } 361 }else if(userT == 'user'){ 362 var isIdle = lbb_check_last_message_from_firebase('admin',adminTimer); 363 if(isIdle){ 364 console.log('Admin Idle'); 365 if(!jQuery('.lbb-admin-response').hasClass('lbb-conversation-admin-busy')){ 366 lbbCustomReponse(adminBusyMessage,'lbb-conversation-admin-busy'); 367 } 368 lbb_reset_timer(); 369 isAdminBusy = true; 370 //lbb_conversation_end(); 371 }else{ 372 console.log('No Idle'); 373 } 374 }*/ 375 376 }, 60000); 377 378} 379 380 381function lbb_check_last_message(conversation_id,type, idle_time){ 382 383 var con_id = getConversationID(); 384 jQuery.ajax({ 385 url: listbuildingbot.ajax_url, 386 type: 'POST', 387 data: { 388 action: 'lbb_check_last_message', 389 conversation_id : con_id, 390 type : type, 391 idle_time : idle_time 392 }, 393 success: function(response) { 394 if(response) { 395 396 } 397 } 398 }); 399} 400 401function lbb_conversation_end(){ 402 403 var con_id = getConversationID(); 404 jQuery.ajax({ 405 url: listbuildingbot.ajax_url, 406 type: 'POST', 407 data: { 408 action: 'sbl_end_conversation', 409 conversation_id : con_id 410 }, 411 success: function(response) { 412 if(response.success) {
413 if(!jQuery('.lbb-admin-response').hasClass('lbb-conversation-end-msg')){ 414 415 var start = `<div class="start-new-conversation-div"> 416 <a href="javascript:void(0)" class="lbb-start-new-conversation">`+lbb_start_button+`</a> 417 </div> 418 `; 419 lbbCustomReponse(response.data.message, 'lbb-conversation-end-msg',start); 420 } 421 }else{ 422 423 } 424 } 425 }); 426} 427 428function lbb_reset_timer() { 429 clearInterval(lbb_inactive_timer); 430} 431 432function lbbHandleDynamicMessage(messages){ 433 if(messages.length > 0){ 434 jQuery.each(messages, function(index, message) { 435 message = message.replace(/\\/g, ''); 436 lbbCustomReponse(message, 'lbb-admin-response'); 437 }); 438 } 439} 440 441function lbbHandleExtraMessages(messages,cls = ''){ 442 if(messages.length > 0){ 443 jQuery.each(messages, function(index, message) { 444 message = message.replace(/\\/g, ''); 445 lbbCustomReponse(message, 'lbb-admin-response '+cls); 446 }); 447 } 448} 449 450function lbbhandleAdminFirstMessage(message,action_data){ 451 message = message.replace('{{image}}', adminImg); 452 message = message.replace('{{name}}', lbbAdminName); 453 message = message.replace('{{prev_id}}', lbb_prev_message); 454 455 if(action_data.field_html != undefined){ 456 //message = message.replace('{{inline_field}}', action_data.field_html); 457 message = message.replace('{{inline_field}}', ''); 458 }else{ 459 message = message.replace('{{inline_field}}', ''); 460 } 461 462 if(action_data.time_format != undefined){ 463 message = message.replace('{{time}}', action_data.time_format); 464 }else{ 465 message = message.replace('{{time}}', getCurrentTime()); 466 } 467 message = message.replace('{{chatflow_id}}', chatflow_id); 468 469 jQuery('.lbb-chat-first-question-inner').append(message); 470 jQuery('.lbb-chat-first-question-main').show(); 471} 472 473function lbbHandleAdminResponse(message,action_data = []){ 474 475 jQuery('.Messages_list .lbb-agent-typing').remove(); 476 var messageTemplate = jQuery('#lbb-agent-response').html(); 477 478 var hide_auth = false; 479 if(jQuery('.Messages_list .lbb-message').last().hasClass('lbb-admin-response')){ 480 jQuery('.Messages_list .lbb-message').last().addClass('lbb-field-type-'+action_data.type); 481 hide_auth = true; 482 } 483 484 message = message.replace('{{image}}', adminImg); 485 message = message.replace('{{name}}', lbbAdminName); 486 message = message.replace('{{prev_id}}', lbb_prev_message); 487 488 if(action_data.field_html != undefined){ 489 //message = message.replace('{{inline_field}}', action_data.field_html); 490 message = message.replace('{{inline_field}}', ''); 491 }else{ 492 message = message.replace('{{inline_field}}', ''); 493 } 494 495 if(action_data.time_format != undefined){ 496 message = message.replace('{{time}}', action_data.time_format); 497 }else{ 498 message = message.replace('{{time}}', getCurrentTime()); 499 } 500 message = message.replace('{{chatflow_id}}', chatflow_id); 501 502 /*if(action_data.field_html != undefined){ 503 message = message + action_data.field_html; 504 }*/ 505 506 jQuery('.Messages_list').append(message); 507 508 if(action_data.field_html != undefined){ 509 jQuery('.Messages_list .lbb-message').last().find('.lbb-text').append(action_data.field_html); 510 if(jQuery(".lbb-datepicker").length > 0){ 511 console.log(action_data); 512 /*jQuery("#lbb-datepicker").flatpickr({ 513 dateFormat: action_data.date_format, 514 });*/ 515 516 var lbbdate = { 517 'Y/m/d' : 'yy/mm/dd', 518 'd/m/Y' : 'dd/mm/yy', 519 'm/d/y' : 'mm/dd/yy', 520 } 521 522 jQuery( ".lbb-datepicker" ).datepicker({ 523 dateFormat: lbbdate[action_data.date_format], 524 firstDay: 1, 525 beforeShow: function(input, inst) { 526 inst.dpDiv.removeClass('lbb-datepicker-popup'); 527 inst.dpDiv.addClass('lbb-datepicker-popup'); 528 } 529 }); 530 531 jQuery(".lbb-datepicker").on("change",function(){ 532 var $me = jQuery(this); 533 $selected = $me.val(); 534 jQuery(".lbb-datepicker").val($selected); 535 }); 536 537 } 538 } 539 540 if(action_data.type == 'audio'){ 541 lbb_init_audio(); 542 } 543 544 if((jQuery(".lbb-field-type-text input[type='text']").length > 0 || jQuery(".lbb-field-type-text textarea").length > 0) && lbb_emoji_enable == 'yes'){ 545 jQuery(".lbb-field-type-text input[type='text'], .lbb-field-type-text textarea").emojioneArea({ 546 search: false, 547 tones: false, 548 filters: { 549 smileys_people: { 550 icon: "yum", 551 title: "", 552 emoji: lbb_emoji 553 }, 554 recent : false, 555 objects: false, 556 symbols: false, 557 flags : false, 558 animals_nature : false, 559 food_drink : false, 560 activity : false, 561 travel_places : false, 562 } 563 }); 564 } 565 566 if(hide_auth){ 567 jQuery('.Messages_list .lbb-message').last().addClass('hide-author'); 568 } 569 570 return message; 571} 572 573function lbbHandleEndConversationResponse(message){ 574 575 var messageTemplate = jQuery('#lbb-agent-response').html(); 576 577 messageTemplate = messageTemplate.replace('{{reply_buttons}}', ''); 578 messageTemplate = messageTemplate.replace('{{skip_buttons}}', ''); 579 messageTemplate = messageTemplate.replace('{{message}}', message); 580 messageTemplate = messageTemplate.replace('{{name}}', lbbAdminName); 581 messageTemplate = messageTemplate.replace('{{image}}', adminImg); 582 messageTemplate = messageTemplate.replace('{{inline_field}}', ''); 583 584
585 var messageTemplateObject = jQuery('<div>'); 586 messageTemplateObject.html(messageTemplate); 587 messageTemplateObject.find('.lbb-admin-response').addClass('lbb-agent-conversation-ended'); 588 589 jQuery('.Messages_list').append(messageTemplateObject.html()); 590} 591 592function lbbValidateReponse(message){ 593 594 jQuery('.Messages_list .lbb-agent-typing').remove(); 595 596 var messageTemplate = jQuery('#lbb-agent-response').html(); 597 598 messageTemplate = messageTemplate.replace('{{reply_buttons}}', ''); 599 messageTemplate = messageTemplate.replace('{{skip_buttons}}', ''); 600 601 messageTemplate = messageTemplate.replace('{{inline_field}}', ''); 602 messageTemplate = messageTemplate.replace('{{pdf_buttons}}', ''); 603 messageTemplate = messageTemplate.replace('{{message}}', message); 604 messageTemplate = messageTemplate.replace('{{name}}', lbbAdminName); 605 messageTemplate = messageTemplate.replace('{{image}}', adminImg); 606 607 var messageTemplateObject = jQuery('<div>'); 608 messageTemplateObject.html(messageTemplate); 609 messageTemplateObject.find('.lbb-admin-response').addClass('lbb-agent-error'); 610 611 jQuery('.Messages_list').append(messageTemplateObject.html()); 612 scrollToBottom(); 613} 614 615function lbbCustomReponse(message,classname,button = ''){ 616 617 jQuery('.Messages_list .lbb-agent-typing').remove(); 618 619 var hide_auth = false; 620 if(jQuery('.Messages_list .lbb-message').last().hasClass('lbb-admin-response')){ 621 jQuery('.Messages_list .lbb-message').last().addClass('lbb-field-type-extramessage'); 622 hide_auth = true; 623 } 624 625 var messageTemplate = jQuery('#lbb-agent-response').html(); 626 627 628 if(button != ''){ 629 messageTemplate = messageTemplate.replace('{{reply_buttons}}', button); 630 }else{ 631 messageTemplate = messageTemplate.replace('{{reply_buttons}}', ''); 632 } 633 634 //messageTemplate = messageTemplate.replace('{{reply_buttons}}', ''); 635 messageTemplate = messageTemplate.replace('{{pdf_buttons}}', ''); 636 messageTemplate = messageTemplate.replace('{{skip_buttons}}', ''); 637 messageTemplate = messageTemplate.replace('{{inline_field}}', ''); 638 messageTemplate = messageTemplate.replace('{{message}}', message); 639 messageTemplate = messageTemplate.replace('{{name}}', lbbAdminName); 640 messageTemplate = messageTemplate.replace('{{image}}', adminImg); 641 messageTemplate = messageTemplate.replace('{{time}}', getCurrentTime()); 642 643 var messageTemplateObject = jQuery('<div>'); 644 messageTemplateObject.html(messageTemplate); 645 messageTemplateObject.find('.lbb-admin-response').addClass(classname); 646 647 jQuery('.Messages_list').append(messageTemplateObject.html()); 648 scrollToBottom(); 649 650 if(hide_auth){ 651 jQuery('.Messages_list .lbb-message').last().addClass('hide-author'); 652 } 653} 654 655function slgHandleTyping(){ 656 var messageTemplate = jQuery('#lbb-agent-response').html(); 657 658 var typingM = `<div class="lbb-typing-animation"> <div class="lbb-dot-container"> <div class="lbb-dot"></div> <div class="lbb-dot"></div> <div class="lbb-dot"></div> </div> </div>`; 659 660 messageTemplate = messageTemplate.replace('{{reply_buttons}}', ''); 661 messageTemplate = messageTemplate.replace('{{skip_buttons}}', ''); 662 messageTemplate = messageTemplate.replace('{{pdf_buttons}}', ''); 663 messageTemplate = messageTemplate.replace('{{inline_field}}', ''); 664 messageTemplate = messageTemplate.replace('{{message}}', typingM); 665 messageTemplate = messageTemplate.replace('{{name}}', lbbAdminName); 666 messageTemplate = messageTemplate.replace('{{image}}', adminImg); 667 messageTemplate = messageTemplate.replace('{{time}}', getCurrentTime()); 668 669 var messageTemplateObject = jQuery('<div>'); 670 messageTemplateObject.html(messageTemplate); 671 messageTemplateObject.find('.lbb-admin-response').addClass('lbb-agent-typing'); 672 673 setTimeout(() => { 674 jQuery('.Messages_list').append(messageTemplateObject.html()); 675 scrollToBottom(); 676 }, 1000); 677 678} 679 680 681 682function lbbHandleUserResponse(message, server,image = '',messageObj = [], classn = '') { 683 684 if(image != ''){ 685 var ImgEl = '<div class="quick-reply-useranswer-image"><div class="quick-reply-spn-text">'+message+'</div>'+'<div class="quick-reply-spn-img"><img src="'+image+'" /></div></div>'; 686 var imageClass = 'lbb-has-image'; 687 }else{ 688 var ImgEl = message; 689 var imageClass = 'lbb-has-no-image'; 690 } 691 692 imageClass = imageClass + ' ' + classn; 693 694 if(!server){ 695 var messageTemplate = jQuery('#lbb-user-response').html(); 696 messageTemplate = messageTemplate.replace('{{message}}', ImgEl); 697 messageTemplate = messageTemplate.replace('{{name}}', lbbUserName); 698 }else{ 699 var messageTemplate = message; 700 messageTemplate = messageTemplate.replace('{{name}}', lbbUserName); 701 } 702 703 messageTemplate = messageTemplate.replace('{{image}}', userImg); 704 705 if(messageObj.time_format != undefined){ 706 messageTemplate = messageTemplate.replace('{{time}}', messageObj.time_format); 707 }else{ 708 messageTemplate = messageTemplate.replace('{{time}}', getCurrentTime()); 709 } 710
711 var messageTemplateObject = jQuery('<div>'); 712 messageTemplateObject.html(messageTemplate); 713 messageTemplateObject.find('.lbb-message-user').addClass(imageClass); 714 jQuery('.Messages_list').append(messageTemplateObject.html()); 715 716 return messageTemplateObject.html(); 717} 718 719function scrollToBottom() { 720 var chatBox = document.getElementById("chat-messages"); 721 chatBox.scrollTop = chatBox.scrollHeight; 722} 723 724function setCookie(name, value, days) { 725 var expires = ""; 726 if (days) { 727 var date = new Date(); 728 date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); 729 expires = "; expires=" + date.toUTCString(); 730 } 731 document.cookie = name + "=" + (value || "") + expires + "; path=/"; 732} 733 734function lbbDeleteCookie(cookieName) { 735 // Set the expiration date in the past 736 document.cookie = cookieName + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;"; 737} 738 739function getCookie(name) { 740 var value = "; " + document.cookie; 741 var parts = value.split("; " + name + "="); 742 if (parts.length === 2) return parts.pop().split(";").shift(); 743 return null; 744} 745 746function lbbcloseconversation(conversation_id){ 747
748 jQuery.ajax({ 749 url: listbuildingbot.ajax_url, 750 type: 'POST', 751 data: { 752 action: 'sbl_end_conversation', 753 conversation_id : conversation_id 754 }, 755 success: function(response) { 756 757 } 758 }); 759 760} 761 762function lbbStartConversation(conversation_id,isRestart = false) { 763 764 if(chat_mode == 'live'){ 765 lbb_send_event(); 766 jQuery('#lbb-chat-main-wrapper').removeClass('lbb-chat-user-input'); 767 }else{ 768 if(jQuery('#lbb-chat-main-wrapper').hasClass('lbb-chattype-inline') && jQuery('.lbb_allow_bot_to_trained').val() < 1){ 769 jQuery('.lbb-typing').addClass('lbb-user-input-hide'); 770 } 771 } 772 773 var lbb_chatflow_id = jQuery('#lbb_chatflow_id').val(); 774 var conversation_cookie_key = 'lbbcf_'+lbb_chatflow_id+'_conversation_id'; 775 var conversation_cookie_val = ''; 776 if (getCookie(conversation_cookie_key)){ 777 conversation_cookie_val = getCookie(conversation_cookie_key); 778 } 779 jQuery.ajax({ 780 url: listbuildingbot.ajax_url, 781 type: 'POST', 782 data: { 783 action: 'sbl_chatbot_start_conversation', 784 timezone : Intl.DateTimeFormat().resolvedOptions().timeZone, 785 chatflow_id : jQuery('#lbb_chatflow_id').val(), 786 conversation_cookie_val : conversation_cookie_val, 787 lbb_embed : jQuery('#lbb_embed').val(), 788 lbb_current_page:listbuildingbot.lbb_current_page 789 }, 790 success: function(response) { 791 jQuery('.lbb-reset-restart-conversation').css('pointer-events', 'auto'); 792 if(chat_mode == 'live'){ 793 lbb_chat_activity_timer(); 794 } 795 796 if(chat_mode == 'bot' && jQuery('#lbb_allow_bot_to_trained').val() > 0){ 797 jQuery('#lbb-app').addClass('lbb-allow-bot-to-trained'); 798 } 799 800 var conversation_id = getConversationID(); 801 if (response.success) { 802 803 if(response.data.block != undefined){ 804 lbb_last_chat = response.data.block; 805 } 806 807 var messages = response.data.conversations; 808 var conversation_id = response.data.conversation_id; 809 var lbb_chatflow_id = jQuery('#lbb_chatflow_id').val(); 810 var conversation_cookie_key = 'lbbcf_'+lbb_chatflow_id+'_conversation_id'; 811 if (!getCookie(conversation_cookie_key)){ 812 setCookie(conversation_cookie_key, conversation_id, 365); 813 } 814 if(messages.length > 0){ 815 jQuery.each(messages, function(index, message) { 816 817 if(message.is_bot_response == 1){ 818 819 if(message.extra_messages != undefined){ 820 lbbHandleExtraMessages(message.extra_messages); 821 } 822 823 message.text = message.text.replace(/\\/g, ''); 824 // show all bot messages 825 lbbHandleAdminResponse(message.text, message); 826 827 if(message.dynamic_messages != undefined){ 828 lbbHandleDynamicMessage(message.dynamic_messages); 829 } 830 }else if(message.agent_id > 0){ 831 var img = ''; 832 if(message.image != undefined && message.image != ''){ 833 img = message.image; 834 } 835 message.text = message.text.replace(/\\/g, ''); 836 lbbHandleAdminResponse(message.text,message); 837 }else{ 838 var img = ''; 839 if(message.image != undefined && message.image != ''){ 840 img = message.image; 841 } 842 843 844 message.text = message.text.replace(/\\/g, ''); 845 846 lbbHandleUserResponse(message.text, true,img,message); 847 } 848 }); 849 } 850 851 if(response.data.end_status == 1){ 852 if(!jQuery('.lbb-admin-response').hasClass('lbb-conversation-end-msg')){ 853 var start = `<div class="start-new-conversation-div"> 854 <a href="javascript:void(0)" class="lbb-start-new-conversation">`+lbb_start_button+`</a> 855 </div> 856 `; 857 lbbCustomReponse(userTimeoutMessage,'lbb-conversation-end-msg',start); 858 } 859 lbb_reset_timer(); 860 jQuery('.lbb-typing').addClass('lbb-user-input-hide'); 861 } 862 863 if(chat_mode == 'live'){ 864 scrollToBottom(); 865 return false; 866 } 867 868 if(response.data.action_required == false){ 869 if(response.data.end_status < 1){ 870 jQuery.ajax({ 871 url: listbuildingbot.ajax_url, 872 type: 'POST', 873 data: { 874 action: 'sbl_chatbot_action', 875 chatflow_id : chatflow_id, 876 conversation_id : conversation_id 877 }, 878 success: function(response) { 879 880 if (response.success) { 881 882 jQuery('.lbb-back-conversation').hide(); 883 884 885 886 /*if(response.data.redirect){ 887 window.open(response.data.url, "_blank"); 888 return false;
889 }*/ 890 891 var block = response.data.block; 892 if(lbb_minimized_type_option == 'show_first_question'){ 893 setTimeout(function() { 894 jQuery('.lbb-chat-first-question-inner').html(''); 895 lbbhandleAdminFirstMessage(response.data.welcome_block.text,response.data.welcome_block); 896 lbbhandleAdminFirstMessage(block.text,block); 897 },3000); 898 } 899 900 var block = response.data.block; 901 var min = 1; 902 var max = 1000000; 903 904 var randomValue = Math.floor(Math.random() * (max - min + 1)) + min; 905 906 if(block.extra_messages != undefined){ 907 lbbHandleExtraMessages(block.extra_messages, 'question-extra-messages-'+randomValue); 908 } 909 910 lbbHandleAdminResponse(block.text,block); 911 912 if(block.dynamic_messages != undefined){ 913 lbbHandleDynamicMessage(block.dynamic_messages); 914 } 915 916 if(lbb_is_fresh < 1){ 917 var target = document.querySelector(".lbb-admin-response:first-child"); 918 if (target) { 919 var scrollTop = target.offsetTop - target.parentElement.offsetTop; 920 target.parentElement.scrollTop = scrollTop - 10; 921 } 922 }else{ 923 var target = document.querySelector(".question-extra-messages-"+randomValue); 924 if (target) { 925 var scrollTop = target.offsetTop - target.parentElement.offsetTop; 926 target.parentElement.scrollTop = scrollTop - 10; 927 }else{ 928 var target = document.querySelector(".lbb-admin-response:last-child"); 929 if (target) { 930 var scrollTop = target.offsetTop - target.parentElement.offsetTop; 931 target.parentElement.scrollTop = scrollTop - 10; 932 }else{ 933 scrollToBottom(); 934 } 935 } 936 } 937 938 lbb_last_chat = block; 939 if (jQuery.inArray(block.type, ['name', 'text', 'email', 'phone', 'country','url', 'date', 'outcome']) !== -1) { 940 lbbDisableUserInput(false, block.type); 941 }else{ 942 lbbDisableUserInput(true); 943 } 944 945 } else { 946 // The AJAX request failed 947 console.error(response.data.message); 948 } 949 }, 950 error: function(error) { 951 console.error('AJAX error:', error); 952 } 953 }); 954 } 955 }else{ 956 957 if (jQuery.inArray(response.data.block.type, ['name', 'text', 'email', 'phone', 'country','url', 'date', 'outcome']) !== -1) { 958 lbbDisableUserInput(false,response.data.block.type); 959 }else{ 960 lbbDisableUserInput(true); 961 } 962 } 963 } else { 964 965 console.error(response.data.message); 966 } 967 }, 968 error: function(error) { 969 console.error('AJAX error:', error); 970 } 971 }); 972} 973 974function getConversationID(){ 975 976 var chatflow_id = jQuery('#lbb_chatflow_id').val(); 977 var conversation_key = 'lbbcf_'+chatflow_id+'_conversation_id'; 978 var conversation_id = getCookie(conversation_key); 979 if(conversation_id && conversation_id != undefined){ 980 return conversation_id; 981 }else{ 982 return 0; 983 } 984} 985 986function lbbDisableUserInput(status, type = '') { 987 988 if(status == true){ 989 //jQuery('.lbb-typing').addClass('lbb-user-input-hide'); 990 }else{ 991 if(type == 'text' || type == 'name' || type == 'email' || type == 'date' || type == 'url' || type == 'phone' || type == 'country' || type == 'outcome'){ 992 //jQuery('.lbb-typing').removeClass('lbb-user-input-hide'); 993 }else{ 994 jQuery('.lbb-typing').removeClass('lbb-user-input-hide'); 995 } 996 } 997 998 //var fieldPlaceholder = {'text': 'Enter your message', 'name' : 'Enter your name'}; 999 1000 /*if(fieldPlaceholder['lbb_input_placeholder_'+type] != undefined){ 1001 var text = fieldPlaceholder['lbb_input_placeholder_'+type] 1002 }else{ 1003 var text = 'Enter your message'; 1004 } 1005 1006 jQuery('.lbb_input_message').attr('placeholder',text); 1007 jQuery('.lbb_inline_input').attr('placeholder',text);*/ 1008 1009 //jQuery('.lbb_input_message').prop('disabled', status); 1010 //jQuery('.lbb-submit-message').prop('disabled', status); 1011 1012} 1013 1014function lbbSubmitUserReply(data){ 1015 1016 data['action'] = 'sbl_chatbot_submit_reply'; 1017 var current_action_id = data['current_action_id']; 1018 var next_action_id = data['next_action_id']; 1019 var btnText = data['message']; 1020 jQuery('.lbb-inline-input-field').remove(); 1021 slgHandleTyping(); 1022 jQuery('.skip-button-div').remove(); 1023 jQuery.ajax({ 1024 url: listbuildingbot.ajax_url, 1025 type: 'POST', 1026 data: data, 1027 success: function(response) { 1028 1029 if(data.forceType != undefined && data.forceType == 'trainedBot' && response.data.warning == undefined){ 1030 setTimeout(() => { 1031 jQuery('.lbb-kb-faq').removeClass('lbb-kb-faq-processing'); 1032 jQuery('.Messages_list .lbb-agent-typing').remove(); 1033 data = response.data; 1034 if(data.status == 'ok'){ 1035 if(data.message != undefined){ 1036 var string = data.message; 1037 }else if(data.object != undefined){ 1038 var string = data.object; 1039 } 1040 1041 string.replace(/\\/g, ''); 1042 lbbCustomReponse(string); 1043 if(data.limit == undefined){ 1044 data.limit = 0; 1045 } 1046 document.cookie = 'lbb_'+jQuery('#lbb_chatflow_id').val()+'_ai_response_limit='+data.limit+'; path=/'; 1047 1048 }else if(data.status == 'error'){ 1049 1050 if(data.message != undefined){ 1051 var string = data.message; 1052 }else if(data.object != undefined){ 1053 var string = data.object; 1054 } 1055 string.replace(/\\/g, ''); 1056 lbbCustomReponse(string); 1057 if(data.limit == undefined){ 1058 data.limit = 0; 1059 } 1060 document.cookie = 'lbb_'+jQuery('#lbb_chatflow_id').val()+'_ai_response_limit='+data.limit+'; path=/'; 1061 1062 } 1063 1064 }, 1500); 1065 }else{ 1066 1067 if(response.data.error != undefined && response.data.error == 1){ 1068 setTimeout(() => { 1069 lbbValidateReponse(response.data.message); 1070 lbbHandleAdminResponse(lbb_last_chat.text,lbb_last_chat); 1071 scrollToBottom(); 1072 }, 1500); 1073 }else if(response.data.warning != undefined && response.data.warning == 1){ 1074 lbbCustomReponse(response.data.message,'lbb-live-chat'); 1075 lbb_activate_chat_live_mode(); 1076 jQuery('.lbb-restart-conversation').hide(); 1077 }else{ 1078 setTimeout(() => { 1079 //lbb_prev_message = current_action_id; 1080 if(btnText != 'Back'){
1081 jQuery('.lbb-admin-response.lbb-last-back').removeClass('lbb-last-back'); 1082 } 1083 lbbCheckAction(current_action_id,next_action_id, btnText); 1084 }, 1500); 1085 } 1086 } 1087 }, 1088 error: function(error) { 1089 console.error('AJAX error:', error); 1090 } 1091 }); 1092} 1093 1094function lbbCheckScrollPercentage(percentage) { 1095 jQuery(window).scroll(function () { 1096 var windowHeight = jQuery(window).height(); 1097 var scrollHeight = jQuery(document).height(); 1098 var scrollPosition = jQuery(window).scrollTop(); 1099 1100 // Calculate the scroll position for the specified percentage 1101 var targetScrollPosition = (scrollHeight - windowHeight) * (percentage / 100); 1102 1103 if (scrollPosition >= targetScrollPosition) { 1104 // User has scrolled to the specified percentage of the page 1105 1106 if(jQuery('#lbb-chat-main-wrapper').hasClass('minimized') && jQuery('#lbb-chat-main-wrapper').attr('data-whentoshow') == 'upon_scroll'){ 1107 var scroll = jQuery('#lbb-chat-main-wrapper').attr('data-page_scroll'); 1108 if(!jQuery('#lbb-chat-main-wrapper').hasClass('lbb-scroll-opened')){ 1109 lbbCheckScrollPercentage(scroll); 1110 jQuery('#lbb-chat-main-wrapper').addClass('lbb-scroll-opened'); 1111 } 1112 } 1113 1114 // You can add your desired actions here 1115 } 1116 }); 1117} 1118 1119function lbbCheckAction(current_action_id,next_action_id,user_reply,diff_chat_id = 0){ 1120 1121 var newtmp_chat_id = chatflow_id; 1122 1123 if(diff_chat_id > 0){ 1124 newtmp_chat_id = diff_chat_id; 1125 } 1126 1127 var conversation_id = getConversationID(); 1128 jQuery.ajax({ 1129 url: listbuildingbot.ajax_url, 1130 type: 'POST', 1131 data: { 1132 action: 'sbl_chatbot_action', 1133 current_action_id : current_action_id, 1134 next_action_id : next_action_id, 1135 userReply:user_reply, 1136 conversation_id : conversation_id, 1137 chatflow_id : newtmp_chat_id, 1138 current_url : current_url 1139 }, 1140 success: function(response) { 1141 1142 if (response.success) { 1143 1144 lbb_prev_message = current_action_id; 1145 1146 if(lbb_first_question == 0){ 1147 lbb_first_question = lbb_prev_message; 1148 jQuery('.lbb-back-conversation').show(); 1149 }else{ 1150 if(next_action_id != lbb_first_question){ 1151 jQuery('.lbb-back-conversation').show(); 1152 } 1153 } 1154 1155 1156 1157 if(response.data.redirect){ 1158 lbbCustomReponse(response.data.message); 1159 jQuery('#lbbRedirectLink').attr("href", response.data.url); 1160 //setTimeout(function() { 1161 document.getElementById("lbbRedirectLink").click(); 1162 //}, 3000); 1163 return false; 1164 } 1165 1166 var block = response.data.block; 1167 var min = 1; 1168 var max = 1000000; 1169 1170 var randomValue = Math.floor(Math.random() * (max - min + 1)) + min; 1171 if(block.extra_messages != undefined){ 1172 lbbHandleExtraMessages(block.extra_messages,'question-extra-messages-'+randomValue); 1173 } 1174 1175 lbbHandleAdminResponse(block.text,block); 1176 1177 if(block.dynamic_messages != undefined){ 1178 lbbHandleDynamicMessage(block.dynamic_messages); 1179 } 1180 1181 var end_messsage = response.data.end; 1182 if(end_messsage != undefined && end_messsage != '') { 1183 lbbHandleEndConversationResponse(end_messsage); 1184 } 1185 1186 var target = document.querySelector(".question-extra-messages-"+randomValue); 1187 if (target) { 1188 var scrollTop = target.offsetTop - target.parentElement.offsetTop; 1189 target.parentElement.scrollTop = scrollTop - 10; 1190 }else{ 1191 var target = document.querySelector(".lbb-admin-response:last-child"); 1192 if (target) { 1193 var scrollTop = target.offsetTop - target.parentElement.offsetTop; 1194 target.parentElement.scrollTop = scrollTop - 10; 1195 }else{ 1196 scrollToBottom(); 1197 } 1198 } 1199 1200 lbb_last_chat = block; 1201 if (jQuery.inArray(block.type, ['name', 'text', 'email', 'phone', 'country','url', 'date','outcome']) !== -1) { 1202 lbbDisableUserInput(false,block.type); 1203 }else{ 1204 lbbDisableUserInput(true); 1205 } 1206 1207 } else { 1208 // The AJAX request failed 1209 console.error(response.data.message); 1210 } 1211 }, 1212 error: function(error) { 1213 console.error('AJAX error:', error); 1214 } 1215 }); 1216} 1217 1218var lbb_sent_mail = false;
1219 1220function lbbSendMail(){ 1221 1222 var conversation_cookie_key = 'lbbcf_'+jQuery('#lbb_chatflow_id').val()+'_conversation_id'; 1223 var conversation_cookie_val = ''; 1224 if (getCookie(conversation_cookie_key)){ 1225 conversation_cookie_val = getCookie(conversation_cookie_key); 1226 } 1227 1228 if(!lbb_sent_mail){ 1229 1230 lbb_sent_mail = true; 1231 jQuery.ajax({ 1232 url: listbuildingbot.ajax_url, 1233 type: 'POST', 1234 data: { 1235 action: 'lbb_send_bot_mail', 1236 chatflow_id : jQuery('#lbb_chatflow_id').val(), 1237 conversation_cookie_val : conversation_cookie_val, 1238 current_url : current_url 1239 }, 1240 success: function(response) { 1241 1242 } 1243 }); 1244 } 1245} 1246 1247function startTrainedAiConversation(reset = 0){ 1248 1249 var lbb_chatflow_id = jQuery('#lbb_chatflow_id').val(); 1250 var conversation_cookie_key = 'lbbcf_'+lbb_chatflow_id+'_conversation_id'; 1251 var conversation_cookie_val = ''; 1252 if (getCookie(conversation_cookie_key)){ 1253 conversation_cookie_val = getCookie(conversation_cookie_key); 1254 } 1255 1256 jQuery.ajax({ 1257 url: listbuildingbot.ajax_url, 1258 type: 'POST', 1259 data: { 1260 action: 'sbl_trained_ai_start_conversation', 1261 chatflow_id : jQuery('#lbb_chatflow_id').val(), 1262 conversation_cookie_val : conversation_cookie_val, 1263 reset : reset 1264 }, 1265 success: function(response) { 1266 if (response.success) { 1267 1268 var messages = response.data.conversations; 1269 jQuery.each(messages, function(index, message) { 1270 1271 message.text = message.text.replace(/\\/g, ''); 1272 if(message.is_bot_response == 1){ 1273 // show all bot messages 1274 lbbHandleAdminResponse(message.text,message); 1275 1276 }else{ 1277 lbbHandleUserResponse(message.text, true); 1278 } 1279 }); 1280 scrollToBottom(); 1281 } 1282 }, 1283 error: function(error) { 1284 console.error('AJAX error:', error); 1285 } 1286 }); 1287} 1288 1289function startAiConversation(){ 1290 1291 var lbb_chatflow_id = jQuery('#lbb_chatflow_id').val(); 1292 var conversation_cookie_key = 'lbbcf_'+lbb_chatflow_id+'_conversation_id'; 1293 var conversation_cookie_val = ''; 1294 if (getCookie(conversation_cookie_key)){ 1295 conversation_cookie_val = getCookie(conversation_cookie_key); 1296 } 1297 1298 jQuery.ajax({ 1299 url: listbuildingbot.ajax_url, 1300 type: 'POST', 1301 data: { 1302 action: 'sbl_ai_start_conversation', 1303 chatflow_id : jQuery('#lbb_chatflow_id').val(), 1304 conversation_cookie_val : conversation_cookie_val 1305 }, 1306 success: function(response) { 1307 if (response.success) { 1308 1309 var messages = response.data.conversations; 1310 1311 jQuery.each(messages, function(index, message) { 1312 message.text = message.text.replace(/\\/g, ''); 1313 if(message.is_bot_response == 1){ 1314 // show all bot messages 1315 lbbHandleAdminResponse(message.text,message); 1316 1317 }else{ 1318 lbbHandleUserResponse(message.text, true); 1319 } 1320 }); 1321 scrollToBottom(); 1322 } 1323 }, 1324 error: function(error) { 1325 console.error('AJAX error:', error); 1326 } 1327 }); 1328} 1329 1330function submitAI(messge){ 1331 var lbb_chatflow_id = jQuery('#lbb_chatflow_id').val(); 1332 var conversation_cookie_key = 'lbbcf_'+lbb_chatflow_id+'_conversation_id'; 1333 var conversation_cookie_val = ''; 1334 if (getCookie(conversation_cookie_key)){ 1335 conversation_cookie_val = getCookie(conversation_cookie_key); 1336 } 1337 1338 jQuery("[name=lbb_input_message]").val(''); 1339 jQuery.ajax({ 1340 url: listbuildingbot.ajax_url, 1341 type: 'POST', 1342 data: { 1343 action: 'sbl_chatbot_ai_submit', 1344 message : messge, 1345 chatflow_id : jQuery('#lbb_chatflow_id').val(), 1346 conversation_cookie_val : conversation_cookie_val 1347 1348 }, 1349 success: function(response) { 1350 if(response.success != undefined){ 1351 data = response.data; 1352 if(data.status == 'ok'){ 1353 lbbCustomReponse(data.object); 1354 }else if(data.status == 'error'){ 1355 lbbCustomReponse(data.message); 1356 } 1357 } 1358 }, 1359 error: function(error) { 1360 lbbCustomReponse(error); 1361 } 1362 }); 1363} 1364 1365function submitTrainedAIContact(fname,email){ 1366 1367 jQuery('.lbb-chat-user-info-button').attr('disabled', true); 1368 jQuery.ajax({ 1369 url: listbuildingbot.ajax_url, 1370 type: 'POST', 1371 data: { 1372 action: 'sbl_chatbot_trained_ai_submit_contact', 1373 fname : fname, 1374 email : email, 1375 chatflow_id : jQuery('#lbb_chatflow_id').val() 1376 }, 1377 success: function(response) { 1378 jQuery('.lbb-chat-user-info-button').attr('disabled', false); 1379 if(response.success != undefined){ 1380 data = response.data; 1381 if(data.status == 'ok'){ 1382 lbbCustomReponse(data.message); 1383 jQuery('#lbb-chat-main-wrapper').removeClass('lbb-chat-user-input'); 1384 } 1385 } 1386 } 1387 }); 1388} 1389 1390function lbbbacktoBot(){ 1391
1392 jQuery('.lbb-inline-input-field').remove(); 1393 jQuery('.quick-reply-buttons').remove(); 1394 slgHandleTyping(); 1395 var lbb_chatflow_id = jQuery('#lbb_chatflow_id').val(); 1396 var conversation_cookie_key = 'lbbcf_'+lbb_chatflow_id+'_conversation_id'; 1397 var conversation_cookie_val = ''; 1398 if (getCookie(conversation_cookie_key)){ 1399 conversation_cookie_val = getCookie(conversation_cookie_key); 1400 } 1401 jQuery.ajax({ 1402 url: listbuildingbot.ajax_url, 1403 type: 'POST', 1404 data: { 1405 action: 'lbb_trained_to_logicbot', 1406 chatflow_id : jQuery('#lbb_chatflow_id').val(), 1407 conversation_cookie_val : conversation_cookie_val 1408 }, 1409 success: function(response) { 1410 jQuery('.lbb-back-to-main-menu-conversation').addClass('lbb-back-main-processing'); 1411 lbbCheckAction(0,0,''); 1412 } 1413 }); 1414 1415} 1416 1417function submitBotReply(forceType = 'inline'){ 1418 1419 1420 if(forceType == 'trainedBot'){ 1421 1422 jQuery('.lbb-inline-input-field').remove(); 1423 jQuery('.quick-reply-buttons').remove(); 1424 1425 } 1426 1427 var val = jQuery("[name=lbb_input_message]").val().toLowerCase(); 1428 var message = jQuery("[name=lbb_input_message]").val(); 1429 1430 if(val.trim() == ''){ 1431 return false; 1432 } 1433 1434 if(jQuery('.lbb-show-email-terms').hasClass('lbb-show-email-terms')){ 1435 jQuery(".lbb-email-terms-error").hide(); 1436 if(jQuery('.lbb-inline-input-field').hasClass('lbb-require-email-terms')){ 1437 1438 if (!jQuery("#lbb_accept_terms").prop("checked")) { 1439 jQuery(".lbb-email-terms-error").show(); 1440 return false; 1441 } 1442 1443 } 1444 } 1445 1446 1447 var current_action_id = lbb_last_chat.action_id; 1448 var next_action_id = lbb_last_chat.next_question_id; 1449 var conversation_id = getConversationID(); 1450 type = lbb_last_chat.type; 1451 1452 if (jQuery.inArray(type, ['name', 'text', 'email', 'phone', 'country','single','welcome', 'url', 'date', 'pdf','lastmessage']) !== -1) { 1453 lbbHandleUserResponse(message,false); 1454 scrollToBottom(); 1455 lbbSubmitUserReply({ 1456 message : message, 1457 conversation_id : conversation_id, 1458 current_action_id: current_action_id, 1459 next_action_id : next_action_id, 1460 chatflow_id : jQuery('#lbb_chatflow_id').val(), 1461 forceType : forceType 1462 }); 1463 jQuery("[name=lbb_input_message]").val(''); 1464 }else{ 1465 1466 } 1467 1468} 1469 1470function submitTrainedAI(messge){ 1471 1472 var lbb_chatflow_id = jQuery('#lbb_chatflow_id').val(); 1473 var conversation_cookie_key = 'lbbcf_'+lbb_chatflow_id+'_conversation_id'; 1474 var conversation_cookie_val = ''; 1475 if (getCookie(conversation_cookie_key)){ 1476 conversation_cookie_val = getCookie(conversation_cookie_key); 1477 } 1478 1479 jQuery("[name=lbb_input_message]").val(''); 1480 jQuery('.lbb-kb-faq').addClass('lbb-kb-faq-processing'); 1481 jQuery.ajax({ 1482 url: listbuildingbot.ajax_url, 1483 type: 'POST', 1484 data: { 1485 action: 'sbl_chatbot_trained_ai_submit', 1486 message : messge, 1487 chatflow_id : jQuery('#lbb_chatflow_id').val(), 1488 conversation_cookie_val : conversation_cookie_val 1489 }, 1490 success: function(response) { 1491 1492 if(response.success != undefined){ 1493 setTimeout(() => { 1494 jQuery('.lbb-kb-faq').removeClass('lbb-kb-faq-processing'); 1495 jQuery('.Messages_list .lbb-agent-typing').remove(); 1496 data = response.data; 1497 if(data.status == 'ok'){ 1498 if(data.message != undefined){ 1499 var string = data.message; 1500 }else if(data.object != undefined){ 1501 var string = data.object; 1502 } 1503 string.replace(/\\/g, ''); 1504 lbbCustomReponse(string); 1505 if(data.limit == undefined){ 1506 data.limit = 0; 1507 } 1508 document.cookie = 'lbb_'+jQuery('#lbb_chatflow_id').val()+'_ai_response_limit='+data.limit+'; path=/'; 1509 1510 }else if(data.status == 'error'){ 1511 1512 if(data.message != undefined){ 1513 var string = data.message; 1514 }else if(data.object != undefined){ 1515 var string = data.object; 1516 } 1517 string.replace(/\\/g, ''); 1518 lbbCustomReponse(string); 1519 if(data.limit == undefined){ 1520 data.limit = 0; 1521 } 1522 //document.cookie = 'lbb_'+jQuery('#lbb_chatflow_id').val()+'_ai_response_limit='+data.limit+'; path=/'; 1523 1524 } 1525 1526 }, 1500); 1527 1528 1529 } 1530 }, 1531 error: function(error) { 1532 jQuery('.lbb-kb-faq').removeClass('lbb-kb-faq-processing'); 1533 lbbCustomReponse(error.statusText); 1534 } 1535 }); 1536} 1537 1538var chatflow_id = 0; 1539jQuery(document).ready(function($) { 1540 1541 /*var video = document.getElementById("lbb-livechat-video-player"); 1542 if (video !== null) { 1543 video.addEventListener("ended", function() { 1544 video.play(); 1545 }); 1546 video.play(); 1547 }*/ 1548 1549 chatflow_id = jQuery('#lbb_chatflow_id').val(); 1550 1551 if (!jQuery('.lbb-dynamic-mode-set').hasClass('lbb-ai-mode') && !jQuery('.lbb-dynamic-mode-set').hasClass('lbb-trained_ai-mode')){ 1552 console.log('145'); 1553 var conversation_cookie_key = 'lbbcf_'+chatflow_id+'_conversation_id'; 1554 var conversation_cookie_val = ''; 1555 if (getCookie(conversation_cookie_key)){ 1556 conversation_cookie_val = getCookie(conversation_cookie_key); 1557 } 1558 1559 jQuery.ajax({ 1560 url: listbuildingbot.ajax_url, 1561 type: 'POST', 1562 data: { 1563 action: 'lbb_get_chat_mode', 1564 conversation_cookie_val : conversation_cookie_val, 1565 chatflow_id : chatflow_id 1566 }, 1567 success: function(response) { 1568 if(response != '') { 1569 jQuery('.lbb-dynamic-mode-set').removeClass('lbb-ai-mode lbb-bot-mode lbb-live-mode'); 1570 jQuery('.lbb-dynamic-mode-set').addClass('lbb-'+response+'-mode'); 1571 chat_mode = response; 1572 1573 if (chat_mode == 'live'){ 1574 jQuery('#lbb-app').removeClass('lbb-allow-bot-to-trained'); 1575 setTimeout(() => { 1576 1577 var conversation_chat_cookie_key = 'lbbcf_'+chatflow_id+'_conversation_chat_token'; 1578 var chat_token = getCookie(conversation_chat_cookie_key); 1579 1580 if(chat_token != '' && chat_token != null && chat_token != undefined){ 1581 1582 if (listbuildingbot.lbb_livechat_options == 'ajax_based'){ 1583 lbb_activate_chat_live_mode(); 1584 lbb_init_firebase(); 1585 jQuery('.lbb-typing').removeClass('lbb-user-input-hide'); 1586 1587 }else{ 1588 firebase.auth().signInWithCustomToken(chat_token) 1589 .then((userCredential) => { 1590 console.log('Connected'); 1591 lbb_activate_chat_live_mode(); 1592 lbb_init_firebase(); 1593 jQuery('.lbb-typing').removeClass('lbb-user-input-hide'); 1594 }).catch((error) => { 1595 console.error('Authentication error:', error); 1596 }); 1597 1598 } 1599 1600 1601 1602 1603 }else{ 1604 lbb_activate_chat_live_mode(); 1605 lbb_init_firebase(); 1606 jQuery('.lbb-typing').removeClass('lbb-user-input-hide'); 1607 } 1608 1609 1610 }, 800); 1611 1612 1613 1614 }else if(chat_mode == 'trained_ai' && jQuery('#lbb-chat-main-wrapper').hasClass('lbb-chattype-inline')){ 1615 startTrainedAiConversation(); 1616 } 1617 1618 if(chat_mode == 'bot' && !jQuery('#lbb-chat-main-wrapper').hasClass('lbb-chattype-inline') && lbb_minimized_type_option == 'show_first_question'){ 1619 lbbStartConversation(); 1620 } 1621 } 1622 if((chat_mode == 'live' || chat_mode == 'bot') && jQuery('#lbb-chat-main-wrapper').hasClass('lbb-chattype-inline') && chatflow_id){ 1623 lbbStartConversation(); 1624 jQuery('#lbb-chat-main-wrapper').removeClass('lbb-new-message-found'); 1625 if(chat_mode == 'live'){ 1626 setTimeout(() => { 1627 jQuery('.lbb-chat-start').removeClass('lbb-processing-live-chat'); 1628 lbb_activate_chat_live_mode(); 1629 }, 2000); 1630 } 1631 } 1632 1633 } 1634 }); 1635 }else if(jQuery('.lbb-dynamic-mode-set').hasClass('lbb-trained_ai-mode')){ 1636 console.log('0'); 1637 if(jQuery('#lbb-chat-main-wrapper').hasClass('lbb-chattype-inline')){ 1638 startTrainedAiConversation(); 1639 } 1640 jQuery('.lbb-typing').removeClass('lbb-user-input-hide'); 1641 }else{ 1642 if(jQuery('#lbb-chat-main-wrapper').hasClass('lbb-chattype-inline')){ 1643 startAiConversation(); 1644 } 1645 jQuery('.lbb-typing').removeClass('lbb-user-input-hide'); 1646 } 1647 1648 if(chatflow_id){ 1649 if(jQuery('#lbb-chat-main-wrapper').hasClass('lbb-chattype-inline')){ 1650 //lbbStartConversation(); 1651 } 1652 1653 if(jQuery('#lbb-chat-main-wrapper').hasClass('minimized') && jQuery('#lbb-chat-main-wrapper').attr('data-whentoshow') == 'certain_time'){ 1654 var time = jQuery('#lbb-chat-main-wrapper').attr('data-time'); 1655 setTimeout(() => { 1656 jQuery('.lbb-chat-icon-inner').removeClass('lbb-hide'); 1657 }, time); 1658 } 1659 } 1660 1661 var $inputMessage = jQuery('.lbb_input_message'); 1662 var $sendIcon = jQuery('.lbb-bot-mode .lbb-send-icon'); 1663 $sendIcon.addClass('lbb-no-submit-btn'); 1664 1665 $inputMessage.on('input', function () { 1666 // Check if the text field has any value 1667 if ($inputMessage.val().trim() !== '') { 1668 $sendIcon.removeClass('lbb-no-submit-btn'); 1669 } else { 1670 $sendIcon.addClass('lbb-no-submit-btn'); 1671 } 1672 }); 1673 1674 1675 jQuery(document).on('keypress','.lbb-bot-mode .lbb_input_message', function(event) {
1676 // Check if the pressed key is Enter (key code 13) 1677 if (event.which === 13) { 1678 // Prevent the default form submission behavior 1679 event.preventDefault(); 1680 if(chat_mode == 'bot'){ 1681 submitBotReply('trainedBot'); 1682 }else{ 1683 jQuery('.lbb-'+chat_mode+'-mode .lbb-send-icon').trigger('click'); 1684 } 1685 } 1686 }); 1687 1688 jQuery(document).on('keydown','.lbb_inline_input', function(event) { 1689 1690 if(event.which === 13 && event.target.tagName !== 'TEXTAREA') { 1691 event.preventDefault(); 1692 1693 if (event.target.tagName === 'DIV') { 1694 var lbb_emoji_content = jQuery(this).find('.emojionearea-editor').text(); 1695 if (lbb_emoji_content != '') { 1696 jQuery('.lbb_input_message').val(lbb_emoji_content); 1697 }else{ 1698 jQuery('.lbb_input_message').val(jQuery('.lbb_inline_input').val()); 1699 } 1700 1701 }else{ 1702 jQuery('.lbb_input_message').val(jQuery('.lbb_inline_input').val()); 1703 } 1704 1705 submitBotReply(); 1706 //jQuery('.lbb-bot-mode .lbb-send-icon').trigger('click'); 1707 1708 } 1709 }); 1710 1711 1712 1713 jQuery(document).on('keypress','.lbb-trained_ai-mode .lbb_input_message', function(event) { 1714 if(event.which === 13) { 1715 event.preventDefault(); 1716 //jQuery('.lbb_input_message').val(jQuery('.lbb_inline_input').val()); 1717 jQuery('.lbb-trained_ai-mode .lbb-send-icon').trigger('click'); 1718 } 1719 }); 1720 1721 jQuery(document).on('keypress','.lbb-ai-mode .lbb_input_message', function(event) { 1722 if(event.which === 13) { 1723 event.preventDefault(); 1724 //jQuery('.lbb_input_message').val(jQuery('.lbb_inline_input').val()); 1725 jQuery('.lbb-ai-mode .lbb-send-icon').trigger('click'); 1726 } 1727 }); 1728 1729 1730 1731 jQuery(document).on('click', '.lbb-answer-url-pick', function(e) { 1732 e.preventDefault(); 1733 lbbSendMail(); 1734 1735 var link = jQuery(this).attr('href'); 1736 window.open(link, '_blank'); 1737 }); 1738 1739 jQuery(document).on('click', '.lbb-back-to-main-menu-conversation', function(e) { 1740 jQuery('.lbb-listing-dots-click-wrapper').removeClass('lbb-sub-listing-show'); 1741 jQuery('.lbb-back-to-main-menu-conversation').addClass('lbb-back-main-processing'); 1742 lbbbacktoBot(); 1743 }); 1744 1745 jQuery(document).on('click', '.lbb-click-icon-for-listing', function(e) { 1746 jQuery('.lbb-listing-dots-click-wrapper').toggleClass('lbb-sub-listing-show'); 1747 }); 1748 1749 1750 jQuery(document).on('click', '.lbb-close', function(e) { 1751 jQuery('#lbb-app').hide(); 1752 jQuery('.lbb-chat-start').removeClass('lbb-chat-popup-opened'); 1753 1754 if(jQuery('.lbb-notification-co').length > 0) { 1755 jQuery('.lbb-notification-co').show(); 1756 } 1757 }); 1758 1759 jQuery(document).on('click', '.lbb-chat-video-image-close-event', function(e) { 1760 jQuery('.lbb-close').trigger('click'); 1761 }); 1762 1763 jQuery(document).on('click', '.lbb-contact-us-trained-ai', function(e) { 1764 jQuery('#lbb-chat-main-wrapper').addClass('lbb-chat-user-input'); 1765 }); 1766 1767 jQuery(document).on('keyup','.lbb-kb-search-input-text', function() { 1768 1769 jQuery.ajax({ 1770 url: listbuildingbot.ajax_url, 1771 type: 'POST', 1772 data: { 1773 action: 'sbl_helpdesk_filter', 1774 chatflow_id: chatflow_id, 1775 keyword : jQuery(this).val() 1776 }, 1777 success: function(response) { 1778 jQuery('.lbb-kb-main').html(response); 1779 } 1780 }); 1781 1782 }); 1783 1784 jQuery(document).on('click', '.lbb-chat-switch-btn', function(e) { 1785 1786 jQuery('.lbb-chat-switch-btn').removeClass('lbb-chat-switch-active'); 1787 if(jQuery(this).attr('data-mode') == 'helpdesk'){ 1788 jQuery('#lbb-app').addClass('lbb-help-desk-active-tab'); 1789 jQuery(this).addClass('lbb-chat-switch-active'); 1790 }else{ 1791 jQuery('#lbb-app').removeClass('lbb-help-desk-active-tab'); 1792 jQuery(this).addClass('lbb-chat-switch-active'); 1793 } 1794 1795 }); 1796 jQuery(document).on('click', '.iconInner', function(e) { 1797 1798 jQuery('.lbb-chat-first-question-inner').html(''); 1799 jQuery('.lbb-chat-first-question-main').remove(); 1800 jQuery('.lbb-chat-start').addClass('lbb-chat-popup-opened'); 1801 var lbb_app_oo = ''; 1802 if(!jQuery('#lbb-app').hasClass('lbb-app-oo')){ 1803 jQuery('#lbb-app').addClass('lbb-app-oo'); 1804 lbb_app_oo = '1'; 1805 } 1806 if (jQuery("#lbb-app").is(":visible")) { 1807 jQuery('#lbb-app').hide(); 1808 if(jQuery('.lbb-notification-co').length > 0) { 1809 jQuery('.lbb-notification-co').show(); 1810 } 1811 }else{ 1812 jQuery(this).parents('.botIcon').addClass('showBotSubject'); 1813 jQuery('#lbb-app').show(); 1814 if(jQuery('.lbb-notification-co').length > 0) { 1815 jQuery('.lbb-notification-co').hide(); 1816 } 1817 $("[name='msg']").focus(); 1818 if(chat_mode != 'ai' && chat_mode != 'trained_ai'){ 1819 if(lbb_app_oo == '1'){ 1820 if(lbb_minimized_type_option != 'show_first_question' && chat_mode != 'live'){ 1821 lbbStartConversation(); 1822 } 1823 if(chat_mode == 'live'){ 1824 jQuery('.lbb-chat-start').addClass('lbb-processing-live-chat'); 1825 jQuery('#lbb-chat-main-wrapper').removeClass('lbb-new-message-found'); 1826 lbbStartConversation(); 1827 setTimeout(() => { 1828 jQuery('.lbb-chat-start').removeClass('lbb-processing-live-chat'); 1829 lbb_activate_chat_live_mode(); 1830 }, 2000); 1831 1832 }else{ 1833 //jQuery('.lbb-typing').addClass('lbb-user-input-hide'); 1834 } 1835 } 1836 }else if(chat_mode == 'live'){ 1837 1838 }else{ 1839 if(lbb_app_oo == '1'){ 1840 if(chat_mode == 'ai'){ 1841 startAiConversation(); 1842 }else{ 1843 startTrainedAiConversation(); 1844 } 1845 } 1846 } 1847 } 1848 }); 1849 1850 1851 1852 1853 jQuery(document).on('click', '.lbb-start-new-conversation', function(e) { 1854 jQuery('.lbb-confirmation #yesBtn').trigger('click'); 1855 }); 1856 1857 jQuery(document).on('click', '.lbb-confirmation #yesBtn', function(e) { 1858 var chatflow_id = jQuery('#lbb_chatflow_id').val(); 1859 var cookiename = 'lbbcf_'+chatflow_id+'_conversation_id'; 1860 var conversation_chat_id = 'lbbcf_'+chatflow_id+'_conversation_chat_id'; 1861 var conversation_id = getConversationID(); 1862 lbbDeleteCookie(cookiename); 1863 lbbDeleteCookie(conversation_chat_id); 1864 jQuery('.Messages_list').html(''); 1865 if(chatflow_type == 'botlivechat'){ 1866 chat_mode = 'bot'; 1867 jQuery('#lbb-app').removeClass('lbb-live-mode'); 1868 jQuery('#lbb-app').addClass('lbb-bot-mode'); 1869 } 1870 1871 1872 lbb_reset_timer(); 1873 1874 jQuery('.lbb-reset-restart-conversation').css('pointer-events', 'n
1874one'); 1875 1876 lbbcloseconversation(conversation_id); 1877 1878 if(chat_mode == 'live'){ 1879 jQuery('.lbb-chat-start').addClass('lbb-processing-live-chat'); 1880 setTimeout(() => { 1881 jQuery('.lbb-chat-start').addClass('lbb-processing-live-chat'); 1882 lbb_activate_chat_live_mode(); 1883 }, 2000); 1884 } 1885 1886 if(chat_mode == 'trained_ai'){ 1887 startTrainedAiConversation(1); 1888 }else{ 1889 lbbStartConversation(); 1890 } 1891 1892 jQuery('.lbb-user-popup').removeClass('lbb-active'); 1893 //jQuery('.lbb-typing').removeClass('lbb-user-input-hide'); 1894 }); 1895 1896 jQuery(document).on('click', '.lbb-confirmation #noBtn', function(e) { 1897 jQuery('.lbb-user-popup').removeClass('lbb-active'); 1898 }); 1899 1900 jQuery(document).on('click', '.lbb-reset-conversation', function(e) { 1901 jQuery('.lbb-user-popup').addClass('lbb-active'); 1902 }); 1903 1904 jQuery(document).on('click', '.lbb-restart-conversation', function(e) { 1905 var conversation_id = getConversationID(); 1906 lbbStartConversation(conversation_id, true); 1907 }); 1908 1909 1910 jQuery(document).on('click', '.lbb-chat-first-question-main .quick-reply-button', function(e) { 1911 jQuery('.iconInner').trigger('click'); 1912 }); 1913 1914 jQuery(document).on('click', '.quick-reply-button', function(e) { 1915 1916 1917 var ansAction = jQuery(this).attr('data-ans-action'); 1918 var ansUrl = jQuery(this).attr('data-ans-action-url'); 1919 1920 if(ansAction != 'url') { 1921 1922 var btnText = jQuery(this).find('.quick-reply-text .quick-reply-spn-text').attr('data-value'); 1923 if(!jQuery(this).find('img').hasClass('emoji')){ 1924 var btnImage = jQuery(this).find('img').attr('src'); 1925 } 1926 1927 var classnam = ''; 1928 if(jQuery(this).closest('.quick-reply-buttons').hasClass('lbb-mobile-hide-image')){ 1929 classnam = 'lbb-mobile-hide-image'; 1930 } 1931 1932 jQuery(this).closest('.quick-reply-buttons').remove(); 1933 1934 1935 1936 lbbHandleUserResponse(btnText,false, btnImage,[],classnam); 1937 slgHandleTyping(); 1938 1939 var current_action_id = jQuery(this).attr('data-currentactionid'); 1940 var next_action_id = jQuery(this).attr('data-nextactionid'); 1941 1942 if(ansAction == 'start_over'){ 1943 var repeat_ques = jQuery(this).attr('data-repeat-ques'); 1944 next_action_id = repeat_ques; 1945 } 1946 1947 var chflowid = 0; 1948 if(ansAction == 'different_bot'){ 1949 chflowid = jQuery(this).attr('data-diffchatflow'); 1950 } 1951 1952 var tags = jQuery(this).attr('data-tags'); 1953 var conversation_id = getConversationID(); 1954 1955 message_meta = {}; 1956 if(btnImage){ 1957 message_meta['image'] = btnImage; 1958 } 1959 console.log(lbb_last_chat); 1960 1961 jQuery('.skip-button-div').remove(); 1962 1963 jQuery.ajax({ 1964 url: listbuildingbot.ajax_url, 1965 type: 'POST', 1966 data: { 1967 action: 'sbl_chatbot_submit_reply', 1968 message : btnText, 1969 message_meta : message_meta, 1970 conversation_id : conversation_id, 1971 current_action_id: current_action_id, 1972 next_action_id : next_action_id, 1973 tags : tags, 1974 chatflow_id : jQuery('#lbb_chatflow_id').val(), 1975 type : 'single' 1976 }, 1977 success: function(response) { 1978 1979 if(response.data.warning != undefined && response.data.warning == 1){ 1980 if(response.data.available == 1){ 1981 lbbCustomReponse(response.data.message,'lbb-live-chat'); 1982 lbb_activate_chat_live_mode(); 1983 jQuery('.lbb-restart-conversation').hide(); 1984 }else{ 1985 setTimeout(() => { 1986 if(!jQuery('.lbb-admin-response').hasClass('lbb-conversation-end-msg')){ 1987 lbbCustomReponse(response.data.message,'lbb-conversation-end-msg'); 1988 } 1989 }, 1600); 1990 } 1991 }else{ 1992 setTimeout(() => { 1993 //lbb_prev_message = current_action_id; 1994 //jQuery('.lbb-admin-response.lbb-last-back').removeClass('lbb-last-back'); 1995 if(btnText != 'Back'){ 1996 jQuery('.lbb-admin-response.lbb-last-back').removeClass('lbb-last-back'); 1997 } 1998 lbbCheckAction(current_action_id,next_action_id, btnText,chflowid); 1999 }, 1500); 2000 } 2001 2002 }, 2003 error: function(error) { 2004 console.error('AJAX error:', error); 2005 } 2006 }); 2007 } 2008 2009 }); 2010 2011 jQuery(document).on('click', '.closeBtn, .chat_close_icon', function(e) { 2012 jQuery(this).parents('.botIcon').removeClass('showBotSubject'); 2013 jQuery(this).parents('.botIcon').removeClass('showMessenger'); 2014 }); 2015 2016 jQuery(document).on('click', '.lbb-ai-mode .lbb-send-icon', function(e) { 2017 var val = jQuery("[name=lbb_input_message]").val(); 2018 2019 if(val == ''){ 2020 return false;
2021 } 2022 2023 lbbHandleUserResponse(val,false); 2024 scrollToBottom(); 2025 slgHandleTyping(); 2026 submitAI(val); 2027 }); 2028 2029 jQuery(document).on('click', '.lbb-trained_ai-mode .lbb-send-icon', function(e) { 2030 var val = jQuery("[name=lbb_input_message]").val(); 2031 lbbHandleUserResponse(val,false); 2032 scrollToBottom(); 2033 slgHandleTyping(); 2034 submitTrainedAI(val); 2035 }); 2036 2037 2038 2039 jQuery(document).on('click', '.lbb-inline-send-icon', function(e) { 2040 jQuery('.lbb_input_message').val(jQuery('.lbb_inline_input').val()); 2041 jQuery('.lbb-bot-mode .lbb-send-icon').trigger('click'); 2042 }); 2043 2044 2045 jQuery(document).on('click', '.lbb-back-conversation', function(e) { 2046 2047 var current_action_id = lbb_last_chat.action_id; 2048 var next_action_id = lbb_prev_message; 2049 var conversation_id = getConversationID(); 2050 2051 if(!jQuery('.lbb-admin-response').hasClass('lbb-last-back')){ 2052 jQuery('.lbb-action-' + next_action_id).addClass('lbb-last-back'); 2053 }else{ 2054 lbb_prev_message = jQuery('.lbb-admin-response.lbb-last-back').attr('data-prev'); 2055 jQuery('.lbb-admin-response.lbb-last-back').removeClass('lbb-last-back'); 2056 next_action_id = lbb_prev_message; 2057 jQuery('.lbb-action-' + next_action_id).addClass('lbb-last-back'); 2058 } 2059 2060 if(lbb_prev_message == 0){ 2061 jQuery('.lbb-back-conversation').hide(); 2062 } 2063 2064 if(lbb_prev_message == lbb_first_question){ 2065 jQuery('.lbb-back-conversation').hide(); 2066 } 2067 2068 lbbHandleUserResponse('Back',false); 2069 lbbSubmitUserReply({ 2070 message : 'Back', 2071 conversation_id : conversation_id, 2072 current_action_id: current_action_id, 2073 next_action_id : next_action_id, 2074 chatflow_id : jQuery('#lbb_chatflow_id').val() 2075 }); 2076 2077 }); 2078 2079 jQuery(document).on('click', '.lbb-skip-message-link', function(e) { 2080 2081 var curQ = jQuery(this).attr('data-currentquestion'); 2082 var nextQ = jQuery(this).attr('data-nextquestion'); 2083 2084 var conversation_id = getConversationID(); 2085 lbbHandleUserResponse(lbb_skip_question,false); 2086 lbbSubmitUserReply({ 2087 message : lbb_skip_question, 2088 messageType : 'skip', 2089 conversation_id : conversation_id, 2090 current_action_id: curQ, 2091 next_action_id : nextQ, 2092 chatflow_id : jQuery('#lbb_chatflow_id').val() 2093 }); 2094 2095 jQuery('.skip-button-div').remove(); 2096 2097 }); 2098 2099 /*jQuery(document).on("click","#lbbRedirectLink",function(event) { 2100 event.preventDefault(); 2101 setTimeout(function() { 2102 var link = jQuery(this).attr("href"); 2103 window.open(link, "_blank"); 2104 }, 3000); 2105 });*/ 2106 2107 jQuery(document).on('click', '.lbb-kb-faq .trained-ai-faq', function(e) { 2108 var val = jQuery(this).text(); 2109 2110 jQuery("[name=lbb_input_message]").val(val); 2111 jQuery('.lbb-trained_ai-mode .lbb-send-icon').trigger('click'); 2112 2113 }); 2114 2115 jQuery(document).on('click', '.lbb-chat-first-question-main .lbb-close-icon', function(e) { 2116 jQuery('.lbb-chat-first-question-main').hide(); 2117 }); 2118 2119 jQuery(document).on('click', '.lbb-bot-mode .lbb-send-icon', function(e) { 2120 e.preventDefault(); 2121 2122 2123 submitBotReply('trainedBot'); 2124 2125 return false; 2126 2127 /*var val = jQuery("[name=lbb_input_message]").val().toLowerCase(); 2128 var message = jQuery("[name=lbb_input_message]").val(); 2129 2130 if(val.trim() == ''){ 2131 return false; 2132 } 2133 2134 if(jQuery('.lbb-show-email-terms').hasClass('lbb-show-email-terms')){ 2135 jQuery(".lbb-email-terms-error").hide(); 2136 if(jQuery('.lbb-inline-input-field').hasClass('lbb-require-email-terms')){ 2137 2138 if (!jQuery("#lbb_accept_terms").prop("checked")) { 2139 jQuery(".lbb-email-terms-error").show(); 2140 return false; 2141 } 2142 2143 } 2144 } 2145 2146 2147 var current_action_id = lbb_last_chat.action_id; 2148 var next_action_id = lbb_last_chat.next_question_id; 2149 var conversation_id = getConversationID(); 2150 type = lbb_last_chat.type; 2151 2152 if (jQuery.inArray(type, ['name', 'text', 'email', 'phone', 'country','single','welcome', 'url', 'date', 'pdf','lastmessage']) !== -1) { 2153 lbbHandleUserResponse(message,false); 2154 scrollToBottom(); 2155 lbbSubmitUserReply({ 2156 message : message, 2157 conversation_id : conversation_id, 2158 current_action_id: current_action_id, 2159 next_action_id : next_action_id, 2160 chatflow_id : jQuery('#lbb_chatflow_id').val() 2161 }); 2162 jQuery("[name=lbb_input_message]").val(''); 2163 }else{ 2164 2165 } 2166 2167 return false;*/ 2168 }); 2169 2170 jQuery(document).on('change','#lbb-file-upload-input', function() { 2171 const selectedFile = jQuery(this)[0].files[0]; 2172 const progressBar = jQuery('.lbb-progress-bar'); 2173 if (selectedFile) { 2174 const formData = new FormData(); 2175 formData.append('image', selectedFile); 2176 2177 var next_q_id = jQuery(this).closest('.lbb-field-type-attachment').attr('data-action'); 2178 2179 // Send the image data to the server via AJAX 2180 jQuery.ajax({ 2181 type: 'POST', 2182 url: listbuildingbot.ajax_url+'?action=lbb_handle_attachment_upload&action_id='
2182+next_q_id, 2183 data: formData, 2184 processData: false, 2185 contentType: false, 2186 xhr: function() { 2187 const xhr = new window.XMLHttpRequest(); 2188 xhr.upload.addEventListener('progress', function(event) { 2189 if (event.lengthComputable) { 2190 const percentComplete = (event.loaded / event.total) * 100; 2191 progressBar.css('width', percentComplete + '%'); 2192 progressBar.html(percentComplete + '%'); 2193 progressBar.attr('aria-valuenow', percentComplete); 2194 progressBar.text(percentComplete.toFixed(2) + '%'); 2195 } 2196 }, false); 2197 return xhr; 2198 }, 2199 success: function(response) { 2200 var response = JSON.parse(response); 2201 2202 var errorMessage = ''; 2203 if(response.status != undefined && response.status == 'error'){ 2204 errorMessage = response.message; 2205 } 2206 2207 const attachment = response.attachment; 2208 var attachment_type = response.attachment_type; 2209 2210 progressBar.css('width', '0%'); 2211 progressBar.attr('aria-valuenow', '0'); 2212 progressBar.text(''); 2213 2214 message_meta = {}; 2215 message_meta['attachment'] = attachment; 2216 message_meta['attachment_type'] = attachment_type; 2217 message_meta['name'] = name; 2218 2219 // Display the uploaded image in the chat interface 2220 //const imgElement = `<img src="`+imageUrl+`" alt="Uploaded Image" />`; 2221 var html = response.download_box; 2222 //jQuery('#chat-messages').append(imgElement); 2223 2224 var current_action_id = lbb_last_chat.action_id; 2225 var next_action_id = lbb_last_chat.next_question_id; 2226 var conversation_id = getConversationID(); 2227 type = lbb_last_chat.type; 2228 jQuery('.lbb-upload-box').remove(); 2229 jQuery('.lbb-progress-bar').remove(); 2230 2231 if(html != undefined) { 2232 lbbHandleUserResponse(html,false); 2233 } 2234 2235 scrollToBottom(); 2236 2237 lbbSubmitUserReply({ 2238 message : '', 2239 message_meta : message_meta, 2240 conversation_id : conversation_id, 2241 current_action_id: current_action_id, 2242 next_action_id : next_action_id, 2243 chatflow_id : jQuery('#lbb_chatflow_id').val(), 2244 errorMessage : errorMessage 2245 }); 2246 2247 }, 2248 error: function() { 2249 console.error('Image upload failed.'); 2250 } 2251 }); 2252 } 2253 }); 2254 2255 jQuery(window).on('load', function () { 2256 if(jQuery('.lbb-chat-start.minimized').hasClass('lbb-is-loading')) { 2257 jQuery('.iconInner').trigger('click'); 2258 } 2259 jQuery('.lbb-chat-start').removeClass('lbb-is-loading'); 2260 jQuery('.lbb-loading-mian').hide(); 2261 }); 2262 2263 jQuery('.lbb-kb-search-form').on('submit', function(event){ 2264 return false; 2265 }); 2266 2267 /* Chatboat Code */ 2268})
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.