| ' + cleanKey + ': | ' + data.data[key] + ' |

'+
'" + message.title + "
"; var index = 0; for (index; index" + message.quickReplies.title + "
"; } if(typeof message.quickReplies.quickReplies !=="undefined" ){ var index = 0; for (index; index$1'); cleanResponse = cleanResponse.replace(/(.*?)/g, '
$1');
return cleanResponse;
},
openai_reply:function(msg){
if(globalwpw.settings.obj.openai_enabled == 1){
var customAappend = globalwpw.settings.obj.qcld_openai_append_content;
var customMessage = customAappend ? msg + ' ' + customAappend : msg;
qcldPushAiContext('user', customMessage);
if(wp_chatbot_obj.is_stream_enabled == '1'){
// Callers already append botPreloader before calling openai_reply
var streamData = {
action: 'qcld_stream_openai',
name: globalwpw.hasNameCookie,
keyword: customMessage,
active_ai_action: globalwpw.active_ai_action || "",
ai_history: JSON.stringify(globalwpw.aiContext),
nonce: qcld_chatbot_obj.nonce
};
qcldStreamOpenAI(streamData);
} else {
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};
wpwKits.ajax(data).done(function (res) {
if( res == '' || typeof res === 'object' ){
var json = res;
}if(typeof res === 'string'){
var json = $.parseJSON(res);
}
if(json.status=='success'){
qcldPushAiContext('assistant', json.message);
var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
setTimeout(function(){
var isFormInProgress = qcldIsAiFormInProgress();
if (json.message && json.message.indexOf('__AI_FORM_IN_PROGRESS__') !== -1) {
isFormInProgress = true;
json.message = json.message.replace(/__AI_FORM_IN_PROGRESS__/g, '').trim();
}
if (json.message && (json.message.indexOf('AI_FORM_DATA') !== -1 || json.message.indexOf('ai-form-summary-card') !== -1)) {
isFormInProgress = false;
if (typeof globalwpw !== 'undefined') {
globalwpw.aiContext = [];
globalwpw.active_ai_action = '';
globalwpw.qcld_ai_form_persisted_state = false;
}
}
wpwMsg.single(json.message);
if(!isFormInProgress && (globalwpw.settings.obj.qcld_disable_repited_startmenu != "1")){
if(globalwpw.settings.obj.disable_repeatative!=1){
setTimeout(function(){
var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
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))){
wpwMsg.single_nobg('' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '');
}
},globalwpw.settings.preLoadingTime)
}else{
setTimeout(function(){
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))){
wpwMsg.single_nobg('' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '');
}
}, globalwpw.settings.preLoadingTime*2);
}
}
if(!isFormInProgress) { $(globalwpw.settings.messageContainer).find('.wp-chatbot-msg:last .qcld-like-dislike-icon').css('display', 'block'); }
},globalwpw.settings.preLoadingTime)
}
})
}
}
if(globalwpw.settings.obj.openrouter_enabled == 1){
var customAappend = globalwpw.settings.obj.qcld_openrouter_append_content;
var customprepend = globalwpw.settings.obj.qcld_openrouter_prepend_content;
var customMessage = customprepend ? customprepend + ' ' + msg : msg;
customMessage = customAappend ? customMessage + ' ' + customAappend : customMessage;
qcldPushAiContext('user', customMessage);
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)};
wpwKits.ajax(data).done(function (res) {
if( res == '' || typeof res === 'object' ){
var json = res;
}if(typeof res === 'string'){
var json = $.parseJSON(res);
}
if(json.status=='success'){
qcldPushAiContext('assistant', json.message);
var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
setTimeout(function(){
var isFormInProgress = qcldIsAiFormInProgress();
if (json.message && json.message.indexOf('__AI_FORM_IN_PROGRESS__') !== -1) {
isFormInProgress = true;
json.message = json.message.replace(/__AI_FORM_IN_PROGRESS__/g, '').trim();
}
if (json.message && (json.message.indexOf('AI_FORM_DATA') !== -1 || json.message.indexOf('ai-form-summary-card') !== -1)) {
isFormInProgress = false;
if (typeof globalwpw !== 'undefined') {
globalwpw.aiContext = [];
globalwpw.active_ai_action = '';
globalwpw.qcld_ai_form_persisted_state = false;
}
}
wpwMsg.single(json.message);
if(!isFormInProgress && globalwpw.settings.obj.qcld_disable_repited_startmenu != "1" ){
if(globalwpw.settings.obj.disable_repeatative!=1){
setTimeout(function(){
var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
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))){
wpwMsg.single_nobg('' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '');
}
},globalwpw.settings.preLoadingTime)
}else{
setTimeout(function(){
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))){
wpwMsg.single_nobg('' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '');
}
}, globalwpw.settings.preLoadingTime*2);
}
}
if(!isFormInProgress) { $(globalwpw.settings.messageContainer).find('.wp-chatbot-msg:last .qcld-like-dislike-icon').css('display', 'block'); }
},globalwpw.settings.preLoadingTime)
}else{
wpwMsg.single_nobg('' + 'Sorry, I encountered an error processing your AI request. Please check api key and try again later.' + '');
}
})
}
if(globalwpw.settings.obj.claude_enabled == 1){
var customAappend = globalwpw.settings.obj.qcld_claude_append_content;
var customprepend = globalwpw.settings.obj.qcld_claude_prepend_content;
var customMessage = customprepend ? customprepend + ' ' + msg : msg;
customMessage = customAappend ? customMessage + ' ' + customAappend : customMessage;
qcldPushAiContext('user', customMessage);
var claudeStreamEnabled = globalwpw.settings.obj.qcld_claude_stream_enabled;
if (claudeStreamEnabled == "1") {
const claudeStreamData = {
action: "qcld_stream_claude",
name: globalwpw.hasNameCookie,
keyword: customMessage,
active_ai_action: globalwpw.active_ai_action || "",
ai_history: JSON.stringify(globalwpw.aiContext)
};
streamClaude(claudeStreamData);
return;
} else {
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)};
wpwKits.ajax(data).done(function (res) {
if( res == '' || typeof res === 'object' ){
var json = res;
}if(typeof res === 'string'){
var json = $.parseJSON(res);
}
if(json.status=='success'){
qcldPushAiContext('assistant', json.message);
var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
setTimeout(function(){
var isFormInProgress = qcldIsAiFormInProgress();
if (json.message && json.message.indexOf('__AI_FORM_IN_PROGRESS__') !== -1) {
isFormInProgress = true;
json.message = json.message.replace(/__AI_FORM_IN_PROGRESS__/g, '').trim();
}
if (json.message && (json.message.indexOf('AI_FORM_DATA') !== -1 || json.message.indexOf('ai-form-summary-card') !== -1)) {
isFormInProgress = false;
if (typeof globalwpw !== 'undefined') {
globalwpw.aiContext = [];
globalwpw.active_ai_action = '';
globalwpw.qcld_ai_form_persisted_state = false;
}
}
wpwMsg.single(json.message);
if(!isFormInProgress && globalwpw.settings.obj.qcld_disable_repited_startmenu != "1" ){
if(globalwpw.settings.obj.disable_repeatative!=1){
setTimeout(function(){
var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
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))){
wpwMsg.single_nobg('' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '');
}
},globalwpw.settings.preLoadingTime)
}else{
setTimeout(function(){
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))){
wpwMsg.single_nobg('' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '');
}
}, globalwpw.settings.preLoadingTime*2);
}
}
if(!isFormInProgress) { $(globalwpw.settings.messageContainer).find('.wp-chatbot-msg:last .qcld-like-dislike-icon').css('display', 'block'); }
},globalwpw.settings.preLoadingTime)
}else{
wpwMsg.single_nobg('' + 'Sorry, I encountered an error processing your AI request. Please check api key and try again later.' + '');
}
});
}
}
if(globalwpw.settings.obj.gemini_enabled == 1){
var customAappend = globalwpw.settings.obj.qcld_openrouter_append_content;
var customprepend = globalwpw.settings.obj.qcld_openrouter_prepend_content;
var customMessage = customprepend ? customprepend + ' ' + msg : msg;
customMessage = customAappend ? customMessage + ' ' + customAappend : customMessage;
qcldPushAiContext('user', customMessage);
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)};
wpwKits.ajax(data).done(function (res) {
if( res == '' || typeof res === 'object' ){
var json = res;
}if(typeof res === 'string'){
var json = $.parseJSON(res);
}
if(json.status=='success'){
qcldPushAiContext('assistant', json.message);
var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
setTimeout(function(){
var isFormInProgress = qcldIsAiFormInProgress();
if (json.message && json.message.indexOf('__AI_FORM_IN_PROGRESS__') !== -1) {
isFormInProgress = true;
json.message = json.message.replace(/__AI_FORM_IN_PROGRESS__/g, '').trim();
}
if (json.message && (json.message.indexOf('AI_FORM_DATA') !== -1 || json.message.indexOf('ai-form-summary-card') !== -1)) {
isFormInProgress = false;
if (typeof globalwpw !== 'undefined') {
globalwpw.aiContext = [];
globalwpw.active_ai_action = '';
globalwpw.qcld_ai_form_persisted_state = false;
}
}
wpwMsg.single(json.message);
if(!isFormInProgress && (globalwpw.settings.obj.qcld_disable_repited_startmenu != "1")){
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))){
setTimeout(function(){
var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
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))){
wpwMsg.single_nobg('' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '');
}
},globalwpw.settings.preLoadingTime)
}else{
setTimeout(function(){
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))){
wpwMsg.single_nobg('' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '');
}
}, globalwpw.settings.preLoadingTime*2);
}
}
},globalwpw.settings.preLoadingTime)
}else{
wpwMsg.single_nobg('' + 'Sorry, I encountered an error processing your AI request. Please check api key and try again later.' + '');
}
})
}
if(globalwpw.settings.obj.grok_enabled == 1){
var customMessage = msg;
customMessage = customAappend ? customMessage + ' ' + customAappend : customMessage;
qcldPushAiContext('user', customMessage);
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)};
wpwKits.ajax(data).done(function (res) {
if( res == '' || typeof res === 'object' ){
var json = res;
}if(typeof res === 'string'){
var json = $.parseJSON(res);
}
if(json.status=='success'){
qcldPushAiContext('assistant', json.message);
var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
setTimeout(function(){
var isFormInProgress = qcldIsAiFormInProgress();
if (json.message && json.message.indexOf('__AI_FORM_IN_PROGRESS__') !== -1) {
isFormInProgress = true;
json.message = json.message.replace(/__AI_FORM_IN_PROGRESS__/g, '').trim();
}
if (json.message && (json.message.indexOf('AI_FORM_DATA') !== -1 || json.message.indexOf('ai-form-summary-card') !== -1)) {
isFormInProgress = false;
if (typeof globalwpw !== 'undefined') {
globalwpw.aiContext = [];
globalwpw.active_ai_action = '';
globalwpw.qcld_ai_form_persisted_state = false;
}
}
wpwMsg.single(json.message);
if(!isFormInProgress && (globalwpw.settings.obj.qcld_disable_repited_startmenu != "1")){
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))){
setTimeout(function(){
var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
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))){
wpwMsg.single_nobg('' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '');
}
},globalwpw.settings.preLoadingTime)
}else{
setTimeout(function(){
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))){
wpwMsg.single_nobg('' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '');
}
}, globalwpw.settings.preLoadingTime*2);
}
}
},globalwpw.settings.preLoadingTime)
}else{
wpwMsg.single_nobg('' + 'Sorry, I encountered an error processing your AI request. Please check api key and try again later.' + '');
}
})
}
},
site_search:function(msg){
msg1 = wpwKits.filterStopWords(msg);
var data = {'action':'wpbo_search_site','name':globalwpw.hasNameCookie,'keyword':msg1, 'security':wp_chatbot_obj.ajax_nonce};
wpwKits.ajax(data).done(function (res) {
var json=$.parseJSON(res);
if(!qcldIsAiFormInProgress()) { $(globalwpw.settings.messageContainer).find('.wp-chatbot-msg:last .qcld-like-dislike-icon').css('display', 'block'); }
if(json.status=='success'){
if((globalwpw.settings.obj.disable_back_to_start != '1' && globalwpw.settings.obj.skip_greetings_and_menu != 1)){
wpwMsg.triple_nobg( wp_chatbot_obj.found_result_message,json.html,'' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '' );
}else{
wpwMsg.double_nobg( wp_chatbot_obj.found_result_message,json.html);
}
}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) ){
if($(globalwpw.settings.messageLastChild+' .wp-chatbot-comment-loader').length==0){
$(globalwpw.settings.messageContainer).append(wpwKits.botPreloader());
}
wpwTree.openai_reply(msg);
}else{
if((globalwpw.settings.obj.disable_back_to_start != '1' && globalwpw.settings.obj.skip_greetings_and_menu != 1)){
wpwMsg.double_nobg( wpwKits.randomMsg(wp_chatbot_obj.product_fail ),'' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '');
}else{
wpwMsg.single( wpwKits.randomMsg(wp_chatbot_obj.product_fail ));
}
}
})
}
};
/*
* wpwbot Actions are divided into two part
* shopper will response after initialize message,
* then based on shopper activities shopper will act.
*/
var wpwAction={
findkey:function(array, msg){
var index = -1;
$.each( array, function( key, value ) {
value = jQuery.map(value, function(n,i){return n.toLowerCase();});
if(value.indexOf(msg.toLowerCase()) > -1){
index = key;
return false;
}
});
return index;
},
bot:function(msg){
var simple_response_intent = globalwpw.settings.obj.simple_response_intent;
if(simple_response_intent.length>0){
simple_response_intent = jQuery.map(simple_response_intent, function(n,i){return n.toLowerCase();});
}
var allformname = jQuery.map(globalwpw.settings.obj.forms, function(n,i){return n.toLowerCase();});
var allformcommand = globalwpw.settings.obj.form_commands;
if(globalwpw.wildcardsHelp.indexOf(msg.toLowerCase())>-1){
if(globalwpw.wildCard==7){
wpwTree.formbuilder_force_complete( msg );
}
if(msg.toLowerCase()==globalwpw.settings.obj.sys_key_help.toLowerCase()){
globalwpw.wildCard=0;
var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.wildcard_msg);
wpwMsg.double_nobg(serviceOffer,globalwpw.wildcards);
}
if(msg.toLowerCase()==globalwpw.settings.obj.sys_key_support.toLowerCase()){
globalwpw.wildCard=1;
globalwpw.supportStep='welcome';
wpwTree.support(msg);
}
// if(msg.toLowerCase()==globalwpw.settings.obj.sys_key_product.toLowerCase()){
// globalwpw.wildCard=20;
// globalwpw.productStep='asking';
// // wpwTree.product(msg);
// }
if(globalwpw.settings.obj.woocommerce){
if(msg.toLowerCase()==globalwpw.settings.obj.sys_key_catalog.toLowerCase()){
globalwpw.wildCard=20;
globalwpw.productStep='search';
wpwKits.sugestCat();
}
if(msg.toLowerCase()==globalwpw.settings.obj.sys_key_order.toLowerCase()){
globalwpw.wildCard=21;
globalwpw.orderStep='welcome';
wpwTree.order(msg);
}
}
if( globalwpw.settings.obj.open_a_ticket && msg.toLowerCase()==globalwpw.settings.obj.open_a_ticket.toLowerCase() && globalwpw.settings.obj.ticket_url!=''){
//comming
window.open(globalwpw.settings.obj.ticket_url, '_blank');
wpwKits.enableEditor(wpwKits.randomMsg(globalwpw.settings.obj.send_a_msg));
}
if(msg.toLowerCase()==globalwpw.settings.obj.sys_key_reset.toLowerCase()){
globalwpw.wildCard=25;
globalwpw.resetStep='welcome';
wpwTree.reset(msg);
}
if(msg.toLowerCase()==globalwpw.settings.obj.sys_key_email.toLowerCase()){
// var shopperChoice=$(this).text();
wpwMsg.shopper_choice(globalwpw.settings.obj.sys_key_email.toLowerCase());
//Then ask email address
if(typeof(globalwpw.hasNameCookie)=='undefined'|| globalwpw.hasNameCookie==''){
var shopperName= globalwpw.settings.obj.shopper_demo_name;
}else{
var shopperName=globalwpw.hasNameCookie;
}
var ask_msg = wpwKits.randomMsg(globalwpw.settings.obj.asking_email);
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;
wpwMsg.single(askEmail);
globalwpw.supportStep='email';
globalwpw.wildCard=1;
localStorage.setItem("wildCard", globalwpw.wildCard);
localStorage.setItem("supportStep", globalwpw.supportStep);
}
if( globalwpw.settings.obj.sys_key_livechat && msg.toLowerCase()==globalwpw.settings.obj.sys_key_livechat.toLowerCase()){
wpwKits.enableEditor(wpwKits.randomMsg(globalwpw.settings.obj.send_a_msg));
if(globalwpw.settings.obj.is_livechat_active){
if(globalwpw.settings.obj.disable_livechat_operator_offline==1){
if(globalwpw.settings.obj.is_operator_online==1){
$(globalwpw.settings.messageWrapper).html(localStorage.getItem("wpwHitory"));
if($('#wbca_signup_fullname').length>0){
if(localStorage.getItem('shopper')!==null){
$('#wbca_signup_fullname').val(localStorage.getItem('shopper'));
}
if(localStorage.getItem('shopperemail')!==null){
$('#wbca_signup_email').val(localStorage.getItem('shopperemail'));
}
}
$("#wp-chatbot-board-container").removeClass('active-chat-board');
$('.wp-chatbot-container').hide();
$('.wpbot-saas-live-chat').show();
}
}else{
$(globalwpw.settings.messageWrapper).html(localStorage.getItem("wpwHitory"));
if($('#wbca_signup_fullname').length>0){
if(localStorage.getItem('shopper')!==null){
$('#wbca_signup_fullname').val(localStorage.getItem('shopper'));
}
if(localStorage.getItem('shopperemail')!==null){
$('#wbca_signup_email').val(localStorage.getItem('shopperemail'));
}
}
$("#wp-chatbot-board-container").removeClass('active-chat-board');
$('.wp-chatbot-container').hide();
$('.wpbot-saas-live-chat').show();
}
}
}
}else if(allformname.indexOf(msg.toLowerCase()) > -1 || this.findkey(allformcommand, msg)> -1){
//Form builder commands form name
if(globalwpw.wildCard==7){
wpwTree.formbuilder_force_complete( msg );
}
var index = (allformname.indexOf(msg.toLowerCase()) > -1?allformname.indexOf(msg.toLowerCase()):this.findkey(allformcommand, msg));
var formid=globalwpw.settings.obj.form_ids[index];
globalwpw.wildCard=7;
globalwpw.formStep='welcome';
wpwTree.formbuilder(formid);
}else if(simple_response_intent.indexOf(msg.toLowerCase()) > -1){
if(globalwpw.wildCard==7){
wpwTree.formbuilder_force_complete( msg );
}
var data = {'action':'wpbo_search_responseby_intent','name':globalwpw.hasNameCookie,'keyword':msg, 'language':globalwpw.settings.obj.language};
if($(globalwpw.settings.messageLastChild+' .wp-chatbot-comment-loader').length==0){
$(globalwpw.settings.messageContainer).append(wpwKits.botPreloader());
}
wpwKits.ajax(data).done(function (response) {
var json=$.parseJSON(response);
if(json.status=='success'){
wpwMsg.single(json.html);
var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.wildcard_msg);
if( typeof(json.followup)!=="undefined" && json.followup!='' ){
setTimeout(function(){
wpwMsg.single(json.followup);
}, globalwpw.settings.preLoadingTime*2);
}else{
setTimeout(function(){
if(!qcldIsAiFormInProgress()) { $(globalwpw.settings.messageContainer).find('.wp-chatbot-msg:last .qcld-like-dislike-icon').css('display', 'block'); }
if((globalwpw.settings.obj.disable_back_to_start != '1' && globalwpw.settings.obj.skip_greetings_and_menu != 1)){
wpwMsg.single_nobg('' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '');
}
}, globalwpw.settings.preLoadingTime*2);
}
}
})
}else{
/*
* Greeting part
* bot action
*/
if(globalwpw.wildCard==0){
//When intialize 1 and don't have cookies then keep the name of shooper in in cookie
if(globalwpw.initialize==1 && !localStorage.getItem('shopper') && globalwpw.wildCard==0){
wpwTree.greeting(msg);
}else if(globalwpw.settings.obj.ai_df_enable==1 && globalwpw.df_status_lock==0){
wpwTree.greeting(msg);
}else if(localStorage.getItem('default_asking_email')){
wpwTree.greeting(msg);
}else if(localStorage.getItem('default_asking_phone')){
wpwTree.greeting(msg);
}else{
//simple text response wrapper
var data = {'action':'wpbo_search_response','name':globalwpw.hasNameCookie,'keyword':msg, 'language':globalwpw.settings.obj.language};
if(wp_chatbot_obj.disable_site_search == 1){
if($(globalwpw.settings.messageLastChild+' .wp-chatbot-comment-loader').length==0){
$(globalwpw.settings.messageContainer).append(wpwKits.botPreloader());
}
}
wpwKits.ajax(data).done(function (response) {
var json=$.parseJSON(response);
if(json.status=='fail' && json.data !==''){
if(wp_chatbot_obj.disable_site_search != 1){
wpwTree.site_search(msg)
}
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) ){
wpwTree.openai_reply(msg)
}else{
wpwMsg.single(globalwpw.settings.obj.empty_filter_msg);
}
}else if(json.status=='success'){
if(typeof(json.category)!=="undefined" && json.category){
var question='';
$.each(json.data, function (i, obj) {
question += ''+ obj.query +'';
});
wpwMsg.single_nobg(question);
}
else if(json.multiple){
var question='';
$.each(json.data, function (i, obj) {
question += ''+ obj.query +'';
});
wpwMsg.double_nobg(wpwKits.randomMsg(globalwpw.settings.obj.did_you_mean),question);
}else{
wpwMsg.single(json.data[0].response);
var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.wildcard_msg);
if( typeof(json.data[0].followup)!=="undefined" && json.data[0].followup!='' ){
setTimeout(function(){
wpwMsg.single(json.data[0].followup);
}, globalwpw.settings.preLoadingTime*2);
}else{
// if(globalwpw.settings.obj.disable_repeatative!=1){
// setTimeout(function(){
// wpwMsg.double_nobg(serviceOffer, globalwpw.wildcards);
// }, globalwpw.settings.preLoadingTime*2);
// }else{
setTimeout(function(){
if(!qcldIsAiFormInProgress()) { $(globalwpw.settings.messageContainer).find('.wp-chatbot-msg:last .qcld-like-dislike-icon').css('display', 'block'); }
if( (globalwpw.settings.obj.disable_back_to_start != '1' && globalwpw.settings.obj.skip_greetings_and_menu != 1)){
wpwMsg.single_nobg('' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '');
}
}, globalwpw.settings.preLoadingTime*2);
// }
}
}
}else{
//Default intents site search
msg = wpwKits.filterStopWords(msg);
if(globalwpw.settings.obj.woocommerce){
var data = {'action':'qcld_wb_chatbot_keyword', 'keyword':msg};
//Products by string search ajax handler.
if($(globalwpw.settings.messageLastChild+' .wp-chatbot-comment-loader').length==0){
$(globalwpw.settings.messageContainer).append(wpwKits.botPreloader());
}
wpwKits.ajax(data).done(function( response ) {
if(response.product_num==0){
if(msg!='' && globalwpw.settings.obj.disable_sitesearch==''){
msg = wpwKits.filterStopWords(msg);
var data = {'action':'wpbo_search_site','name':globalwpw.hasNameCookie,'keyword':msg, 'security':wp_chatbot_obj.ajax_nonce};
if($(globalwpw.settings.messageLastChild+' .wp-chatbot-comment-loader').length==0){
$(globalwpw.settings.messageContainer).append(wpwKits.botPreloader());
}
wpwKits.ajax(data).done(function (response) {
var json=$.parseJSON(response);
if(json.status=='success'){
// wpwMsg.single(wp_chatbot_obj.found_result_message);
$('span[data-wildcart="back"]').remove();
if((globalwpw.settings.obj.disable_back_to_start != '1' && globalwpw.settings.obj.skip_greetings_and_menu != 1)){
wpwMsg.triple_nobg(wp_chatbot_obj.found_result_message,json.html,'' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '');
}else{
wpwMsg.double_nobg(wp_chatbot_obj.found_result_message,json.html);
}
}else{
var data = {'action':'wpbo_failed_response','name':globalwpw.hasNameCookie,'keyword':msg};
wpwKits.ajax(data).done(function (res) {
//
})
if(globalwpw.counter == globalwpw.settings.obj.no_result_attempt_count || globalwpw.settings.obj.no_result_attempt_count == 0 ){
wpwMsg.single(wpwKits.randomMsg(json.html));
setTimeout(function(){
var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
if((globalwpw.settings.obj.disable_back_to_start != '1' && globalwpw.settings.obj.skip_greetings_and_menu != 1)){
wpwMsg.single_nobg('' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '');
}
},globalwpw.settings.preLoadingTime)
globalwpw.counter = 0;
}else{
globalwpw.counter++;
wpwMsg.single(wpwKits.randomMsg(json.html));
}
}
globalwpw.wildCard=0;
});
}else{
globalwpw.wildCard=0;
wpwMsg.single(wpwKits.randomMsg(globalwpw.settings.obj.empty_filter_msg));
// if(globalwpw.settings.obj.disable_repeatative!=1){
// setTimeout(function(){
// var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
// wpwMsg.double_nobg(serviceOffer,globalwpw.wildcards);
// },globalwpw.settings.preLoadingTime)
// }else{
setTimeout(function(){
if(!qcldIsAiFormInProgress()) { $(globalwpw.settings.messageContainer).find('.wp-chatbot-msg:last .qcld-like-dislike-icon').css('display', 'block'); }
if((globalwpw.settings.obj.disable_back_to_start != '1' && globalwpw.settings.obj.skip_greetings_and_menu != 1)){
wpwMsg.single_nobg('' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '');
}
}, globalwpw.settings.preLoadingTime*2);
// }
}
}else {
var productSucces= wpwKits.randomMsg(globalwpw.settings.obj.product_success)+" "+msg+"!";
console.log(globalwpw.wildcards);
wpwMsg.double_nobg(productSucces,response.html);
if(response.per_page >= response.product_num){
setTimeout(function () {
var searchAgain = wpwKits.randomMsg(globalwpw.settings.obj.product_infinite);
wpwMsg.single(searchAgain);
//keeping value in localstorage
globalwpw.wildCard=20;
globalwpw.productStep='search';
localStorage.setItem("productStep", globalwpw.productStep);
},globalwpw.settings.wildcardsShowTime);
}
}
});
}else{
if(msg!='' && globalwpw.settings.obj.disable_sitesearch==''){
msg = wpwKits.filterStopWords(msg);
var data = {'action':'wpbo_search_site','name':globalwpw.hasNameCookie,'keyword':msg, 'security':wp_chatbot_obj.ajax_nonce};
if($(globalwpw.settings.messageLastChild+' .wp-chatbot-comment-loader').length==0){
$(globalwpw.settings.messageContainer).append(wpwKits.botPreloader());
}
wpwKits.ajax(data).done(function (response) {
var json=$.parseJSON(response);
if(json.status=='success'){
//wpwMsg.single();
$('span[data-wildcart="back"]').remove();
if((globalwpw.settings.obj.disable_back_to_start != '1' && globalwpw.settings.obj.skip_greetings_and_menu != 1)){
wpwMsg.triple_nobg(wp_chatbot_obj.found_result_message,json.html,'' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '');
}else{
wpwMsg.double_nobg(wp_chatbot_obj.found_result_message,json.html);
}
}else{
var data = {'action':'wpbo_failed_response','name':globalwpw.hasNameCookie,'keyword':msg};
wpwKits.ajax(data).done(function (res) {
//
})
if(globalwpw.counter == globalwpw.settings.obj.no_result_attempt_count || globalwpw.settings.obj.no_result_attempt_count == 0 ){
wpwMsg.single(wpwKits.randomMsg(json.html));
setTimeout(function(){
var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
if((globalwpw.settings.obj.disable_back_to_start != '1' && globalwpw.settings.obj.skip_greetings_and_menu != 1)){
wpwMsg.single_nobg('' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '');
}
},globalwpw.settings.preLoadingTime)
globalwpw.counter = 0;
}else{
globalwpw.counter++;
wpwMsg.single(wpwKits.randomMsg(json.html));
}
}
globalwpw.wildCard=0;
});
}else{
globalwpw.wildCard=0;
wpwMsg.single(wpwKits.randomMsg(globalwpw.settings.obj.empty_filter_msg));
// if(globalwpw.settings.obj.disable_repeatative!=1){
// setTimeout(function(){
// var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
// wpwMsg.double_nobg(serviceOffer,globalwpw.wildcards);
// },globalwpw.settings.preLoadingTime)
// }else{
setTimeout(function(){
if(!qcldIsAiFormInProgress()) { $(globalwpw.settings.messageContainer).find('.wp-chatbot-msg:last .qcld-like-dislike-icon').css('display', 'block'); }
if((globalwpw.settings.obj.disable_back_to_start != '1' && globalwpw.settings.obj.skip_greetings_and_menu != 1)){
wpwMsg.single_nobg('' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '');
}
}, globalwpw.settings.preLoadingTime*2);
// }
}
}
}
})
} //
}
if(globalwpw.settings.obj.woocommerce){
//Product
if(globalwpw.wildCard==20){
wpwTree.product(msg);
}
/*
* order status part
* bot action
*/
if(globalwpw.wildCard==21){
wpwTree.order(msg);
}
}
if(globalwpw.wildCard==1){
wpwTree.support(msg);
}
if(globalwpw.wildCard==3){
wpwTree.subscription(msg);
}
if(globalwpw.wildCard==6){
wpwTree.unsubscription(msg);
}
if(globalwpw.wildCard==7){
wpwTree.formbuilder(msg);
}
if(globalwpw.wildCard==9){
wpwTree.bargain(msg);
}
if(globalwpw.wildCard==25){
wpwTree.reset(msg);
}
if(globalwpw.wildCard==26){
wpwTree.dfcx(msg);
}
if(globalwpw.wildCard==30){
wpwTree.ldsuggestion();
}
}
},
clickstr: function(id){
var data = {'action':'wpbo_search_response','name':globalwpw.hasNameCookie,'strid':id, 'language':globalwpw.settings.obj.language};
wpwKits.ajax(data).done(function (response) {
var json=$.parseJSON(response);
if(json.status=='success'){
if(typeof(json.data)!=="undefined" && json.data){
var question='';
$.each(json.data, function (i, obj) {
question += obj.response;
});
wpwMsg.single(question);
}
}
})
},
shopper:function (msg) {
wpwMsg.shopper(msg);
if(globalwpw.wildCard==1) {
this.bot(msg);
}else if(globalwpw.settings.obj.ai_df_enable==1 && globalwpw.wildCard==0 && globalwpw.ai_step==1 && globalwpw.df_status_lock==0){
this.bot(msg);
} else{
//Filtering the user given messages by stopwords
var filterMsg=(msg);
//handle empty filterMsg as repeat the message.
if(filterMsg=="") {
//if(globalwpw.emptymsghandler==0){
globalwpw.repeatQueryEmpty=wpwKits.randomMsg(globalwpw.settings.obj.empty_filter_msg);
globalwpw.emptymsghandler++;
//}
wpwMsg.single(globalwpw.repeatQueryEmpty);
setTimeout(function(){
var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
if((globalwpw.settings.obj.disable_back_to_start != '1' && globalwpw.settings.obj.skip_greetings_and_menu != 1)){
wpwMsg.single_nobg('' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '');
}
},globalwpw.settings.preLoadingTime)
}else {
globalwpw.emptymsghandler=0;
this.bot(filterMsg);
}
}
}
};
/*
* wpwBot Plugin Creation without selector and
* wpwbot and shoppers all activities will be handled.
*/
$.wpwbot = function(options) {
//Using plugins defualts values or overwrite by options.
var settings = $.extend({}, $.wpwbot.defaults, options);
//Updating global settings
globalwpw.settings=settings;
//updating the helpkeywords
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()]
//updating wildcards
globalwpw.wildcards='';
if(globalwpw.settings.obj.start_menu!=''){
var menu_html = '';
var menu_items = $.parseHTML($.trim(globalwpw.settings.obj.start_menu));
$(menu_items).each(function(){
if( $(this).prop('tagName') == 'SPAN' ){
if( $(this).hasClass('qcld-chatbot-suggest-email') ){
if( globalwpw.settings.obj.disable_feedback=='' ){
menu_html += $(this).prop('outerHTML');
}
}else if( $(this).hasClass('qcld-chatbot-suggest-phone') ){
if( globalwpw.settings.obj.call_gen=="" ){
menu_html += $(this).prop('outerHTML');
}
}else if( $(this).hasClass('qcld-chatbot-wildcard') && $(this).attr('data-wildcart') == 'support' ){
if( globalwpw.settings.obj.disable_faq=='' ){
menu_html += $(this).prop('outerHTML');
}
}else if( $(this).hasClass('qcld-chatbot-wildcard') && $(this).attr('data-wildcart') == 'messenger' ){
if( globalwpw.settings.obj.enable_messenger==1 ){
menu_html += $(this).prop('outerHTML');
}
}else if( $(this).hasClass('qcld-chatbot-wildcard') && $(this).attr('data-wildcart') == 'whatspp' ){
if( globalwpw.settings.obj.enable_whats==1 ){
menu_html += $(this).prop('outerHTML');
}
}else{
menu_html += $(this).prop('outerHTML');
}
}
})
if( menu_html != '' ){
globalwpw.wildcards = menu_html;
}else{
globalwpw.wildcards = globalwpw.settings.obj.start_menu;
}
}
//Initialize the wpwBot with greeting and if already initialize and given name then return greeting..
if(localStorage.getItem("wpwHitory") && globalwpw.initialize==0 ){
var wpwHistory=localStorage.getItem("wpwHitory");
$(globalwpw.settings.messageWrapper).html(wpwHistory);
//Scroll to the last element.
wpwKits.scrollTo();
//Now mainting the current stages tokens
globalwpw.initialize=1;
if(localStorage.getItem("wildCard")){
globalwpw.wildCard=localStorage.getItem("wildCard");
}
if(localStorage.getItem("productStep")){
globalwpw.productStep=localStorage.getItem("productStep");
}
if(localStorage.getItem("orderStep")){
globalwpw.orderStep=localStorage.getItem("orderStep");
}
if(localStorage.getItem("supportStep")){
globalwpw.supportStep=localStorage.getItem("supportStep");
}
if(localStorage.getItem("aiStep")){
globalwpw.ai_step=localStorage.getItem("aiStep");
}
if(localStorage.getItem("formfieldid")){
globalwpw.formfieldid=localStorage.getItem("formfieldid");
}
if(localStorage.getItem("formentry")){
globalwpw.formentry=localStorage.getItem("formentry");
}
if(localStorage.getItem("formStep")){
globalwpw.formStep=localStorage.getItem("formStep");
}
if(localStorage.getItem("formid")){
globalwpw.formid=localStorage.getItem("formid");
}
//update the value for initializing.
globalwpw.initialize=1;
} else {
if(globalwpw.initialize==0 && globalwpw.wildCard==0 && globalwpw.settings.obj.re_target_handler==0){
wpwWelcome.greeting();
//update the value for initializing.
globalwpw.initialize=1;
}else{ // re targeting part .
setTimeout(function (e) {
wpwWelcome.greeting();
},8500);
globalwpw.initialize=1;
}
}
function wpbotResetSendMessageClasses() {
$(settings.sendButton).removeClass('wp-chatbot-send-message-active wp-chatbot-send-message-typing');
}
// Typing state only: add active class while editor has content.
$(document).on('input keyup', settings.messageEditor, function () {
var hasValue = $.trim($(settings.messageEditor).val()).length > 0;
$(settings.sendButton).toggleClass('wp-chatbot-send-message-active', hasValue);
});
// Blur state: clean both classes if no input value.
$(document).on('blur', settings.messageEditor, function () {
var hasValue = $.trim($(settings.messageEditor).val()).length > 0;
if (!hasValue) {
wpbotResetSendMessageClasses();
}
});
//When shopper click on send button
$(document).on('click',settings.sendButton,function (e) {
var shopperMsg =$(settings.messageEditor).val();
if(shopperMsg != ""){
wpwAction.shopper(wpwKits.htmlTagsScape(shopperMsg));
$(settings.messageEditor).val('');
wpbotResetSendMessageClasses();
}
});
$(document).on('click', '.chatbot_intent_reload', function(e){
e.preventDefault();
var obj = $(this);
if(obj.attr('data-intent-type')=='formbuilder'){
if( obj.attr('data-step')=='complete' ){
globalwpw.formStep='field';
localStorage.setItem("formStep", globalwpw.formStep);
}
globalwpw.wildCard=obj.attr('data-wildcard');
globalwpw.formfieldid = obj.attr('data-intent');
wpwTree.formbuilder();
}
})
/*
* Or when shopper press the ENTER key
* Then chatting functionality will be started.
*/
$(document).on('click', '.wpb-quick-reply', function(e){
e.preventDefault();
$('#wp-chatbot-editor').val($(this).html());
$('#wp-chatbot-send-message').trigger( "click" );
})
$(document).on('keypress',settings.messageEditor,function (e) {
if (e.which == 13||e.keyCode==13) {
e.preventDefault();
var shopperMsg =$(settings.messageEditor).val();
if(shopperMsg != ""){
wpwAction.shopper(wpwKits.htmlTagsScape(shopperMsg));
$(settings.messageEditor).val('');
wpbotResetSendMessageClasses();
}
}
});
$(document).on('click', '.qcld-chatbot-checkbox', function(){
var value = [];
$('.qcld-chatbot-checkbox').each(function(){
if($(this).prop("checked") == true){
value.push($(this).val());
}
})
$('#wp-chatbot-editor').val(value.join());
if ($.trim($('#wp-chatbot-editor').val()).length > 0) {
$(settings.sendButton).addClass('wp-chatbot-send-message-active');
} else {
wpbotResetSendMessageClasses();
}
})
//Click on the wildcards to select a service
$(document).on('click','.qcld-chatbot-wildcard',function(){
var wildcardData=$(this).attr('data-form');
var shooperChoice=$(this).text();
wpwMsg.shopper_choice(shooperChoice);
if(typeof wildcardData === "undefined"){
var wildcardData=$(this).attr('data-wildcart');
}
//Wild cards handling for bot.
if(wildcardData=='product'){
globalwpw.wildCard=1;
globalwpw.productStep='asking'
wpwAction.bot('from wildcard product');
//keeping value in localstorage
localStorage.setItem("wildCard", globalwpw.wildCard);
localStorage.setItem("productStep", globalwpw.productStep);
}
if(wildcardData=='catalog'){
wpwAction.bot(globalwpw.settings.obj.sys_key_catalog.toLowerCase());
}
if(wildcardData=='featured'){
globalwpw.wildCard=1;
globalwpw.productStep='featured'
wpwAction.bot('from wildcard product');
//keeping value in localstorage
localStorage.setItem("wildCard", globalwpw.wildCard);
localStorage.setItem("productStep", globalwpw.productStep);
}
if(wildcardData=='sale'){
globalwpw.wildCard=1;
globalwpw.productStep='sale'
wpwAction.bot('from wildcard product');
//keeping value in localstorage
localStorage.setItem("wildCard", globalwpw.wildCard);
localStorage.setItem("productStep", globalwpw.productStep);
}
if(wildcardData=='order'){
globalwpw.wildCard=2;
globalwpw.orderStep='welcome';
wpwAction.bot('from wildcard order');
//keeping value in localstorage
localStorage.setItem("wildCard", globalwpw.wildCard);
localStorage.setItem("orderStep", globalwpw.orderStep);
}
if((wildcardData=='support ui-sortable-handle') || (wildcardData=='support')) {
globalwpw.wildCard=1;
globalwpw.supportStep='welcome';
wpwAction.bot('from wildcard support');
//keeping value in localstorage
localStorage.setItem("wildCard", globalwpw.wildCard);
localStorage.setItem("supportStep", globalwpw.supportStep);
}
if(wildcardData=='back'){
globalwpw.wildCard=0;
//wpwAction.bot('start');
wpwAction.bot(wp_chatbot_obj.sys_key_help.toLowerCase());
//keeping value in localstorage
localStorage.setItem("wildCard", globalwpw.wildCard);
}
if(wildcardData=='ai_form'){
globalwpw.wildCard=0;
globalwpw.active_ai_action = shooperChoice;
globalwpw.qcld_ai_form_persisted_state = true;
wpwAction.bot(shooperChoice);
localStorage.setItem("wildCard", globalwpw.wildCard);
}
if(wildcardData=='messenger'){
var url='https://www.messenger.com/t/'+globalwpw.settings.obj.fb_page_id;
var win = window.open(url, '_blank');
win.focus();
}
if(wildcardData=='whatsapp'){
var url='https://api.whatsapp.com/send?phone='+globalwpw.settings.obj.whats_num;
var win = window.open(url, '_blank');
win.focus();
}
});
$(document).on('click','.qcld-chatbot-form',function(e){
e.preventDefault();
var formid=$(this).attr('data-form');
globalwpw.wildCard=7;
globalwpw.formStep='welcome';
wpwTree.formbuilder(formid);
})
$(document).on('click','.qcld_simple_txt_response',function(e){
e.preventDefault();
var text=$(this).text();
var id = $(this).data('strid');
globalwpw.wildCard=0;
wpwAction.clickstr(id);
})
$(document).on('click','#wp-chatbot-desktop-reload',function (e) {
e.preventDefault();
var actionType=$(this).attr('reset-data');
$('#wp-chatbot-messages-container').html('');
localStorage.removeItem('shopper');
globalwpw.wildCard=0;
globalwpw.ai_step=0;
localStorage.setItem("wildCard", globalwpw.wildCard);
localStorage.setItem("aiStep", globalwpw.ai_step);
globalwpw.formfieldid = '';
localStorage.setItem("formfieldid", globalwpw.formfieldid);
globalwpw.formStep='welcome';
localStorage.setItem("formStep", globalwpw.formStep);
globalwpw.formid='';
localStorage.setItem("formid", globalwpw.formid);
globalwpw.formentry = 0;
localStorage.setItem("formentry", globalwpw.formentry);
localStorage.removeItem("cx-name" );
localStorage.removeItem("cx-diaplayname" );
localStorage.removeItem("cx-languagecode" );
localStorage.removeItem("cx-timezone" );
var number = Math.random() // 0.9394456857981651
number.toString(36); // '0.xtis06h6'
var id = number.toString(36).substr(2); // 'xtis06h6'
localStorage.setItem('botsessionid', id);
// Keep mobile/responsive chat full-width after reset (do not shrink to content)
if ($(window).width() <= 480 && globalwpw.settings.obj.mobile_full_screen == 1) {
$('#wp-chatbot-chat-container').addClass('wp-chatbot-mobile-fs-open').css({
'bottom': '0',
'left': '0',
'right': '0',
'width': '100%',
'max-width': '100%'
});
$('#wp-chatbot-board-container').css({'width': '100%', 'max-width': '100%'});
$('.slimScrollDiv').css({'width': '100%', 'max-width': '100%'});
}
wpwWelcome.greeting();
});
$(document).on('click','.qcld-chatbot-formanswer',function(e){
e.preventDefault();
var answer=$(this).attr('data-form-value');
wpwAction.bot(answer);
})
//
$(document).on('click','.qcld-chatbot-product-category',function(){
var catType=$(this).attr('data-category-type');
var shopperChoiceCatId=$(this).text()+'#'+$(this).attr('data-category-id');
var shopperChoiceCategory=$(this).text();
if(catType=='hasChilds'){
//Now hide all categories but shopper choice.
wpwMsg.shopper_choice(shopperChoiceCategory);
//updating the product steps and bringing the product by category.
wpwKits.subCats($(this).attr('data-category-id'));
globalwpw.productStep='search';
globalwpw.wildCard=1;
}else{
//Now hide all categories but shopper choice.
wpwMsg.shopper_choice(shopperChoiceCategory);
//updating the product steps and bringing the product by category.
globalwpw.productStep='category';
globalwpw.wildCard=1;
//keeping value in localstorage
localStorage.setItem("productStep", globalwpw.productStep);
wpwAction.bot(shopperChoiceCatId);
}
});
//Product Load More features for product search or category products
$(document).on('click','#wp-chatbot-loadmore',function (e) {
$('#wp-chatbot-loadmore-loader').html('
');
var loadMoreDom=$(this);
var productOffest=loadMoreDom.attr('data-offset');
var searchType=loadMoreDom.attr('data-search-type');
var searchTerm=loadMoreDom.attr('data-search-term');
var data = { 'action': 'qcld_wb_chatbot_load_more','offset': productOffest,'search_type': searchType,'search_term': searchTerm};
//Load more ajax handler.
wpwKits.ajax(data).done(function (response) {
//Change button text
$('#wp-chatbot-loadmore-loader').html('');
$('.wp-chatbot-products').append(response.html);
loadMoreDom.attr('data-search-term',response.search_term);
wpwKits.wpwHistorySave();
loadMoreDom.attr('data-offset',response.offset);
if(response.product_num <= response.per_page){
loadMoreDom.hide();
//Now show the user infinite.
setTimeout(function () {
var searchAgain = wpwKits.randomMsg(globalwpw.settings.obj.product_infinite);
wpwMsg.single(searchAgain);
globalwpw.productStep='search';
//keeping value in localstorage
localStorage.setItem("productStep", globalwpw.productStep);
},globalwpw.settings.wildcardsShowTime);
}
//scroll to the last message
wpwKits.scrollTo();
});
});
//search load more
$(document).on('click', '.wp-chatbot-loadmore', function(e){
e.preventDefault();
var obj = $(this);
var keyword = obj.attr('data-keyword');
var post_type = obj.attr('data-post_type');
var page = obj.attr('data-page');
obj.text('Loading...');
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};
if($(globalwpw.settings.messageLastChild+' .wp-chatbot-comment-loader').length==0){
$(globalwpw.settings.messageContainer).append(wpwKits.botPreloader());
}
wpwKits.ajax(data).done(function (res) {
var json = (res);
if(json.status=='success'){
$('span[data-wildcart="back"]').remove();
wpwMsg.single(json.html);
// Hide the comment loader after response inside parent .wp-chatbot-paragraph
// Hide the entire li.wp-chatbot-msg if its .wp-chatbot-paragraph only contains the loader image (and is hidden)
setTimeout(function(){
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)){
wpwMsg.single_nobg('' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '');
}
},globalwpw.settings.preLoadingTime)
obj.remove();
}else{
if(globalwpw.counter == globalwpw.settings.obj.no_result_attempt_count || globalwpw.settings.obj.no_result_attempt_count == 0 ){
wpwMsg.single(json.html);
if(globalwpw.settings.obj.disable_repeatative!=1){
if ( wpwKits.render( globalwpw.settings.obj.no_result_attempt_message ) != '' ) {
setTimeout(function(){
wpwMsg.single(wpwKits.render( globalwpw.settings.obj.no_result_attempt_message ));
},globalwpw.settings.preLoadingTime)
} else {
setTimeout(function(){
var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
if((globalwpw.settings.obj.qcld_disable_start_menu != "1")){
if(typeof(globalwpw.wildcards) != 'undefined' && (globalwpw.wildcards != '')){
console.log(globalwpw.wildcards);
wpwMsg.double_nobg(serviceOffer,globalwpw.wildcards);
}else{
wpwMsg.single(serviceOffer);
}
}
},globalwpw.settings.preLoadingTime)
}
}
globalwpw.counter = 0;
}else{
globalwpw.counter++;
wpwTree.df_reply(res);
}
}
globalwpw.wildCard=0;
});
})
//search load more
$(document).on('click', '.wp-chatbot-loadmore2', function(e){
e.preventDefault();
var obj = $(this);
var keyword = obj.attr('data-keyword');
var page = obj.attr('data-page');
var search_type = obj.attr('data-search-type');
obj.text(globalwpw.settings.obj.loading.en_US);
if( search_type == 'default-wp-search' ){
var data = {'action':'wpbo_default_search_pagination2','name':globalwpw.hasNameCookie,'keyword':keyword, 'page': page, search_type:'default-wp-search'};
}else{
var data = {'action':'wpbo_search_site_pagination2','name':globalwpw.hasNameCookie,'keyword':keyword, 'page': page,'nonce': qcld_chatbot_obj.nonce};
}
if($(globalwpw.settings.messageLastChild+' .wp-chatbot-comment-loader').length==0){
$(globalwpw.settings.messageContainer).append(wpwKits.botPreloader());
}
wpwKits.ajax(data).done(function (res) {
var json=$.parseJSON(res);
if(json.status=='success'){
$('span[data-wildcart="back"]').remove();
wpwMsg.single_nobg(json.html);
setTimeout(function(){
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)){
wpwMsg.single_nobg('' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '');
}
},globalwpw.settings.preLoadingTime)
obj.remove();
}else{
if(globalwpw.counter == globalwpw.settings.obj.no_result_attempt_count || globalwpw.settings.obj.no_result_attempt_count == 0 ){
wpwMsg.single(json.html);
wpwTree.start_menu_settings();
globalwpw.counter = 0;
}else{
globalwpw.counter++;
wpwTree.df_reply(res);
}
}
globalwpw.wildCard=0;
});
});
/*Products details part **/
// if(globalwpw.settings.obj.open_product_detail!=1){
// $(document).on('click','.wp-chatbot-product a',function (e) {
// e.preventDefault();
// $('.wp-chatbot-product-container').addClass('active-chatbot-product-details');
// $('.wp-chatbot-product-reload').addClass('wp-chatbot-product-loading').html('
');
// var productId=$(this).attr('wp-chatbot-pid');
// var data = { 'action':'qcld_wb_chatbot_product_details', 'wp_chatbot_pid':productId};
// //product details ajax handler.
// wpwKits.ajax(data).done(function (response) {
// $('.wp-chatbot-product-reload').removeClass('wp-chatbot-product-loading').html('');
// $('#wp-chatbot-product-title').html(response.title);
// $('#wp-chatbot-product-description').html(response.description);
// $('#wp-chatbot-product-image').html(response.image);
// $('#wp-chatbot-product-price').html(response.price);
// $('#wp-chatbot-product-quantity').html(response.quantity);
// $('#wp-chatbot-product-variable').html(response.variation);
// $('#wp-chatbot-product-cart-button').html(response.buttton);
// //Load gallery magnify
// setTimeout(function () {
// $('#wp-chatbot-product-image-large-path').magnificPopup({type:'image'});
// },1000);
// //For shortcode handle recenlty view product by ajax as
// if($('#wp-chatbot-shortcode-template-container').length > 0){
// var data = {'action':'qcld_wb_chatbot_recently_viewed_products'};
// wpwKits.ajax(data).done(function (response) {
// $('.wp-chatbot-product-shortcode-container').html(response);
// $('.chatbot-sidebar .wp-chatbot-products').slimScroll({height: '435px', start: 'top'});
// });
// }
// });
// });
// }
//Image gallery.
$(document).on('click','.wp-chatbot-product-image-thumbs-path',function (e) {
e.preventDefault();
var imagePath=$(this).attr('href');
$('#wp-chatbot-product-image-large-path').attr('href',imagePath);
$('#wp-chatbot-product-image-large-src').attr('src',imagePath);
//handle thumb active one
$('.wp-chatbot-product-image-thumbs-path').parent().removeClass('wp-chatbot-product-active-image-thumbs');
$(this).parent().addClass('wp-chatbot-product-active-image-thumbs');
});
//Product details close
$(document).on('click', '.wp-chatbot-product-close', function (e) {
$('.wp-chatbot-product-container').removeClass('active-chatbot-product-details');
});
/*add to cart part **/
$(document).on("click","#wp-chatbot-add-cart-button",function (e) {
var pId=$(this).attr('wp-chatbot-product-id');
var qnty=$("#vPQuantity").val();
var data = {'action': 'qcld_wb_chatbot_add_to_cart','product_id': pId,'quantity': qnty };
//add to cart ajax handler.
wpwKits.ajax(data).done(function (response) {
//Change button text
if(response=="simple"){
//Showing cart.
wpwKits.showCart();
//handle the active tab on chat board.
$('.wp-chatbot-operation-option').each(function(){
if($(this).attr('data-option')=='cart'){
$(this).parent().addClass('wp-chatbot-operation-active');
}else{
$(this).parent().removeClass('wp-chatbot-operation-active');
}
});
}
//Hide the shortcode and chat ui product details.
$('.wp-chatbot-product-container').removeClass('active-chatbot-product-details');
});
});
//Add to cart operation for variable product.
$(document).on('click','#wp-chatbot-variation-add-to-cart',function(event) {
event.preventDefault();
var pId=$(this).attr('wp-chatbot-product-id');
var quanity=$('#vPQuantity').val();
var variation_id=$(this).attr('variation_id');
var attributes=new Array();
$.each($("#wp-chatbot-variation-data select"), function(){
var attribute = $(this).attr('name')+'#'+ $(this).find('option:selected').text();
attributes.push(attribute);
});
var data = {
'action': 'qcld_variable_add_to_cart',
'p_id': pId,
'quantity': quanity,
'variations_id':variation_id,
'attributes':attributes
};
//add to cart ajax handler.
wpwKits.ajax(data).done(function (response) {
//Change button text
if(response=="variable"){
//Showing cart.
wpwKits.showCart();
//handle the active tab on chat board.
//handle the active tab on chat board.
$('.wp-chatbot-operation-option').each(function(){
if($(this).attr('data-option')=='cart'){
$(this).parent().addClass('wp-chatbot-operation-active');
}else{
$(this).parent().removeClass('wp-chatbot-operation-active');
}
});
}
//Hide the shortcode and chat ui product details.
$('.wp-chatbot-product-container').removeClass('active-chatbot-product-details');
});
});
//Update cart.
$(document).on("change", ".qcld-wp-chatbot-cart-item-qnty", function () {
//Update editor only for chat ui
if($('#wp-chatbot-shortcode-template-container').length == 0) {
wpwKits.disableEditor(wpwKits.randomMsg(globalwpw.settings.obj.cart_updating));
}
var currentItem=$(this);
setTimeout(function () {
var item_key=currentItem.attr('data-cart-item');
var qnty=currentItem.val();
var data = {'action': 'qcld_wb_chatbot_update_cart_item_number','cart_item_key':item_key,'qnty':qnty};
wpwKits.ajax(data).done(function () {
//Showing cart.
wpwKits.showCart();
});
}, globalwpw.settings.preLoadingTime);
});
//remove the cart item from global cart.
$(document).on("click", ".wp-chatbot-remove-cart-item", function () {
//Update editor only for chat ui
if($('#wp-chatbot-shortcode-template-container').length == 0) {
wpwKits.disableEditor(wpwKits.randomMsg(globalwpw.settings.obj.cart_removing));
}
var item=$(this).attr('data-cart-item');
var data = {'action': 'qcld_wb_chatbot_cart_item_remove', 'cart_item':item };
wpwKits.ajax(data).done(function () {
//Showing cart.
wpwKits.showCart();
})
});
/*Support query answering.. **/
$(document).on('click','.qcld-chatbot-support-items',function (e) {
var shopperChoose=$(this).text();
var queryIndex=$(this).attr('data-query-index');
wpwMsg.shopper_choice(shopperChoose);
//Now answering the query.
var queryAns=globalwpw.settings.obj.support_ans[queryIndex];
wpwMsg.single(queryAns);
//Asking email after showing answer.
var orPhoneSuggest='';
setTimeout(function(){
if(globalwpw.settings.obj.call_sup!=1) {
orPhoneSuggest = '' + wpwKits.randomMsg(globalwpw.settings.obj.support_phone) + '';
}
var orEmailSuggest=''+wpwKits.randomMsg(globalwpw.settings.obj.support_email)+'';
wpwKits.suggestEmail(orPhoneSuggest+orEmailSuggest);
},globalwpw.settings.wildcardsShowTime);
});
/*Support Email **/
$(document).on('click','.qcld-chatbot-suggest-email',function (e) {
var shopperChoice=$(this).text();
wpwMsg.shopper_choice(shopperChoice);
//Then ask email address
if(typeof(globalwpw.hasNameCookie)=='undefined'|| globalwpw.hasNameCookie==''){
var shopperName= globalwpw.settings.obj.shopper_demo_name;
}else{
var shopperName=globalwpw.hasNameCookie;
}
var ask_msg = wpwKits.randomMsg(globalwpw.settings.obj.asking_email);
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;
wpwMsg.single(askEmail);
//Now updating the support part as .
globalwpw.supportStep='email';
globalwpw.wildCard=1;
//keeping value in localstorage
localStorage.setItem("wildCard", globalwpw.wildCard);
localStorage.setItem("supportStep", globalwpw.supportStep);
});
/*site Search*/
$(document).on('click','.qcld-chatbot-site-search',function (e) {
var shopperChoice=$(this).text();
wpwMsg.shopper_choice(shopperChoice);
//Then ask email address
if(typeof(globalwpw.hasNameCookie)=='undefined'|| globalwpw.hasNameCookie==''){
var shopperName= globalwpw.settings.obj.shopper_demo_name;
}else{
var shopperName=globalwpw.hasNameCookie;
}
var ask_msg = wp_chatbot_obj.search_keyword;
var askEmail = (globalwpw.settings.obj.skip_wp_greetings=='1' || globalwpw.settings.obj.skip_greetings_and_menu =='1') ? 'Hello ' + ask_msg : 'Hello '+shopperName+'! '+ ask_msg;
wpwMsg.single(askEmail);
//Now updating the support part as .
globalwpw.supportStep='search';
globalwpw.wildCard=1;
//keeping value in localstorage
localStorage.setItem("wildCard", globalwpw.wildCard);
localStorage.setItem("supportStep", globalwpw.supportStep);
});
/*Support Phone **/
$(document).on('click','.qcld-chatbot-suggest-phone',function (e) {
var shopperChoice=$(this).text();
wpwMsg.shopper_choice(shopperChoice);
//Then ask email address
if(typeof(globalwpw.hasNameCookie)=='undefined'|| globalwpw.hasNameCookie==''){
var shopperName= globalwpw.settings.obj.shopper_demo_name;
}else{
var shopperName=globalwpw.hasNameCookie;
}
var ask_msg = wpwKits.randomMsg(globalwpw.settings.obj.asking_phone);
var askEmail = (globalwpw.settings.obj.skip_wp_greetings=='1' || globalwpw.settings.obj.skip_greetings_and_menu =='1') ? 'Hello ' + ask_msg : 'Hello '+shopperName+'! '+ ask_msg;
wpwMsg.single(askEmail);
//Now updating the support part as .
globalwpw.supportStep='phone';
globalwpw.wildCard=1;
//keeping value in localstorage
localStorage.setItem("wildCard", globalwpw.wildCard);
localStorage.setItem("supportStep", globalwpw.supportStep);
});
//Show chat,cart and recently view products by click event.
$(document).on('click','.wp-chatbot-operation-option',function (e) {
e.preventDefault();
var oppt=$(this).attr('data-option');
if(oppt=='recent' && globalwpw.wpwIsWorking==0){
wpwKits.disableEditor(globalwpw.settings.obj.sys_key_product);
var data = {'action':'qcld_wb_chatbot_recently_viewed_products'};
wpwKits.ajax(data).done(function (response) {
$(globalwpw.settings.messageWrapper).html(response);
});
//First remove wp-chatbot-operation-active class from all selector
$('.wp-chatbot-operation-option').parent().removeClass('wp-chatbot-operation-active');
//then add the active class to current element.
$(this).parent().addClass('wp-chatbot-operation-active');
}else if(oppt=='chat' && globalwpw.wpwIsWorking==0){
$(globalwpw.settings.messageWrapper).html(localStorage.getItem("wpwHitory"));
wpwKits.scrollTo();
wpwKits.enableEditor(wpwKits.randomMsg(globalwpw.settings.obj.send_a_msg));
//First remove wp-chatbot-operation-active class from all selector
$('.wp-chatbot-operation-option').parent().removeClass('wp-chatbot-operation-active');
//then add the active class to current element.
$(this).parent().addClass('wp-chatbot-operation-active');
} else if(oppt=='cart' && globalwpw.wpwIsWorking==0){
wpwKits.showCart();
//First remove wp-chatbot-operation-active class from all selector
$('.wp-chatbot-operation-option').parent().removeClass('wp-chatbot-operation-active');
//then add the active class to current element.
$(this).parent().addClass('wp-chatbot-operation-active');
} else if(oppt=='help' && globalwpw.wpwIsWorking==0){
if( $('.wp-chatbot-messages-container').length==0) {
//if from other nob then goo to the chat window
$(globalwpw.settings.messageWrapper).html(localStorage.getItem("wpwHitory"));
//Showing help message
setTimeout(function () {
wpwKits.scrollTo();
var helpWelcome = wpwKits.randomMsg(globalwpw.settings.obj.help_welcome);
var helpMsg = wpwKits.decodehtml(wpwKits.randomMsg(globalwpw.settings.obj.help_msg));
wpwMsg.double(helpWelcome,helpMsg);
//dialogflow
if(globalwpw.settings.obj.ai_df_enable==1 && globalwpw.df_status_lock==0){
globalwpw.wildCard=0;
globalwpw.ai_step=1;
localStorage.setItem("wildCard", globalwpw.wildCard);
localStorage.setItem("aiStep", globalwpw.ai_step);
}
},globalwpw.settings.preLoadingTime);
}else{
//Showing help message on chat self window.
var helpWelcome = wpwKits.randomMsg(globalwpw.settings.obj.help_welcome);
var helpMsg = wpwKits.randomMsg(globalwpw.settings.obj.help_msg);
wpwMsg.double(helpWelcome,helpMsg);
//dialogflow
if(globalwpw.settings.obj.ai_df_enable==1 && globalwpw.df_status_lock==0){
globalwpw.wildCard=0;
globalwpw.ai_step=1;
localStorage.setItem("wildCard", globalwpw.wildCard);
localStorage.setItem("aiStep", globalwpw.ai_step);
}
}
//First remove wp-chatbot-operation-active class from all selector
$('.wp-chatbot-operation-option').parent().removeClass('wp-chatbot-operation-active');
//then add the active class to current element.
$(this).parent().addClass('wp-chatbot-operation-active');
} else if(oppt=='support' && globalwpw.wpwIsWorking==0){
if( $('.wp-chatbot-messages-container').length==0) {
//if from other nob then goo to the chat window
$(globalwpw.settings.messageWrapper).html(localStorage.getItem("wpwHitory"));
//Showing help message
setTimeout(function () {
wpwKits.scrollTo();
globalwpw.wildCard=1;
globalwpw.supportStep='welcome';
wpwTree.support(globalwpw.settings.obj.sys_key_support.toLowerCase());
},globalwpw.settings.preLoadingTime);
}else{
//Showing help message on chat self window.
globalwpw.wildCard=1;
globalwpw.supportStep='welcome';
wpwTree.support(globalwpw.settings.obj.sys_key_support.toLowerCase());
}
//First remove wp-chatbot-operation-active class from all selector
$('.wp-chatbot-operation-option').parent().removeClass('wp-chatbot-operation-active');
//then add the active class to current element.
$(this).parent().addClass('wp-chatbot-operation-active');
}
//show chat wrapper and hide cart-checkout wrapper
$(globalwpw.settings.messageWrapper).show();
$('#wp-chatbot-checkout-short-code').hide();
$('#wp-chatbot-cart-short-code').hide();
});
$(document).on('click','.qcld-chatbot-reset-btn',function (e) {
e.preventDefault();
var actionType=$(this).attr('reset-data');
if(actionType=='yes'){
$('#wp-chatbot-messages-container').html('');
localStorage.removeItem('shopper');
globalwpw.wildCard=0;
globalwpw.ai_step=0;
localStorage.setItem("wildCard", globalwpw.wildCard);
localStorage.setItem("aiStep", globalwpw.ai_step);
globalwpw.formfieldid = '';
localStorage.setItem("formfieldid", globalwpw.formfieldid);
globalwpw.formStep='welcome';
localStorage.setItem("formStep", globalwpw.formStep);
globalwpw.formid='';
localStorage.setItem("formid", globalwpw.formid);
globalwpw.formentry = 0;
localStorage.setItem("formentry", globalwpw.formentry);
localStorage.removeItem("cx-name" );
localStorage.removeItem("cx-diaplayname" );
localStorage.removeItem("cx-languagecode" );
localStorage.removeItem("cx-timezone" );
var number = Math.random() // 0.9394456857981651
number.toString(36); // '0.xtis06h6'
var id = number.toString(36).substr(2); // 'xtis06h6'
localStorage.setItem('botsessionid', id);
wpwWelcome.greeting();
} else if(actionType=='no'){
wpwAction.bot(globalwpw.settings.obj.sys_key_help.toLowerCase());
}
});
return this;
};
//Deafault value for wpwbot.If nothing passes from the work station
//Then defaults value will be used.
$.wpwbot.defaults={
obj:{},
editor_handler:0,
sendButton:'#wp-chatbot-send-message',
messageEditor:'#wp-chatbot-editor',
messageContainer:'#wp-chatbot-messages-container',
messageWrapper:'.wp-chatbot-messages-wrapper',
botContainer:'.wp-chatbot-ball-inner',
messageLastChild:'#wp-chatbot-messages-container li:last',
messageLastBot:'#wp-chatbot-messages-container .wp-chatbot-msg:last .wp-chatbot-paragraph',
preLoadingTime:0,
wildcardsShowTime:5000,
}
document.addEventListener("click", function(e) {
// Toggle share menu
if (e.target.closest(".share-toggle")) {
e.preventDefault();
let menu = e.target.closest(".qcld-share").querySelector(".share-menu");
menu.style.display = menu.style.display === "none" ? "block" : "none";
}
// Find message content dynamically
let msgItem = e.target.closest(".wp-chatbot-msg");
if (!msgItem) return;
let msgContent = msgItem.querySelector(".wp-chatbot-paragraph");
if (!msgContent) return;
// Extract plain text
let msgText = msgContent.innerText.trim();
let shareSite = window.location.origin; // Get the site URL dynamically (e.g., "https://www.example.com")
// Ensure a trailing slash if it's meant to represent the root of the site
if (!shareSite.endsWith('/')) {
shareSite += '/';
}
let fullMsg = `${msgText}\n-- ${shareSite}`;
let encodedMsg = encodeURIComponent(fullMsg);
// Facebook (requires App ID)
if (e.target.closest(".share-fb")) {
e.preventDefault();
// You must include a URL even if you're just sharing text
const shareURL = encodeURIComponent(window.location.href); // or your chatbot page URL
const fbShareURL = "https://www.facebook.com/sharer/sharer.php?u=" + shareURL + ""e=" + encodedMsg;
window.open(fbShareURL, "_blank", "width=600,height=400");
}
// WhatsApp
if (e.target.closest(".share-wa")) {
e.preventDefault();
window.open("https://wa.me/?text=" + encodedMsg, "_blank");
}
// X (Twitter)
if (e.target.closest(".share-x")) {
e.preventDefault();
window.open("https://twitter.com/intent/tweet?text=" + encodedMsg, "_blank");
}
// Email
if (e.target.closest(".share-email")) {
e.preventDefault();
window.location.href = "mailto:?subject=Chatbot Message&body=" + encodedMsg;
}
});
jQuery(document).ready(function($) {
let reportedMessage = "";
let modalElements = {}; // Store references to modal elements
let isModalInitialized = false; // Flag to prevent re-attaching listeners
/**
* Initializes the report modal by finding its elements and attaching event listeners.
* This function is designed to be called only once, the first time the report icon is clicked,
* to ensure all DOM elements are available.
* @returns {boolean} True if initialization was successful, false otherwise.
*/
function setupReportModal() {
if (isModalInitialized) {
return true; // Already initialized
}
const modal = document.getElementById("wpbot-report-modal");
const emailInput = document.getElementById("wpbot-report-email");
const textInput = document.getElementById("wpbot-report-text");
const cancelBtn = document.getElementById("wpbot-report-cancel");
const reportForm = document.getElementById("wpbot-report-form");
if (!modal || !emailInput || !textInput || !cancelBtn || !reportForm) {
console.error("❌ One or more modal elements missing in DOM. Cannot initialize report modal.");
return false; // Initialization failed
}
// Store references to the elements
modalElements = { modal, emailInput, textInput, cancelBtn, reportForm };
// Attach event listener for the cancel button
modalElements.cancelBtn.addEventListener("click", function() {
modalElements.modal.style.display = "none";
});
// Attach event listener for the form submission
modalElements.reportForm.addEventListener("submit", function(e) {
e.preventDefault();
let email = modalElements.emailInput.value.trim();
let reportText = modalElements.textInput.value.trim();
if (!email || !reportText) {
alert("Please fill in both fields.");
return;
}
// Save email to localStorage
localStorage.setItem("shopperemail", email);
// Build meta info for the report
let meta = "Source URL: " + window.location.href + " | User Agent: " + navigator.userAgent;
// Send report via AJAX
$.post(wp_chatbot_obj.ajax_url, {
action: "wpbot_save_report",
user_id: globalwpw.settings.obj.current_user_id,
conversation_id: 3,
message: reportedMessage, // Use the message captured when the icon was clicked
report_text: reportText,
email: email,
meta_info: meta
}, function(response) {
if (response.success) {
console.log("Report sent successfully.");
// The original line `jQuery(e.target.closest(".fa fa-commenting-o")).addClass("submitted");`
// was incorrect as `e.target` here refers to the form, not the original icon.
// To mark the icon, a reference to it would need to be stored when it was clicked.
} else {
console.log("Failed to send report.");
}
modalElements.modal.style.display = "none"; // Hide modal after submission
});
});
isModalInitialized = true; // Mark as initialized
return true; // Initialization successful
}
// Event listener for clicks on the document to detect report icon clicks
document.addEventListener("click", function(e) {
if (e.target.closest(".fa-commenting-o")) {
e.preventDefault();
console.log("Report icon clicked");
// Attempt to initialize the modal elements and listeners if not already done.
// This ensures elements are looked up only when needed, making it more robust
// against timing issues if the modal HTML is loaded asynchronously or late.
if (!setupReportModal()) {
return; // If initialization failed (elements not found), stop here.
}
// Now that we are sure modal elements are available, proceed to open the modal.
let msgItem = e.target.closest(".wp-chatbot-msg");
if (msgItem) {
reportedMessage = msgItem.querySelector(".wp-chatbot-paragraph").innerText.trim();
} else {
reportedMessage = ""; // Fallback if message item not found
}
// Prefill email from localStorage if available
let shopperEmail = localStorage.getItem("shopperemail");
modalElements.emailInput.value = shopperEmail ? shopperEmail : "";
// Clear previous report text
modalElements.textInput.value = "";
// Display the modal
modalElements.modal.style.display = "block";
}
});
});
jQuery(document).on('click', '.qc_wpbot_chat_link', function (e) {
console.log("Chat link clicked");
e.preventDefault();
jQuery("#wp-chatbot-ball").trigger("click");
jQuery("#wp-chatbot-chat-container").show();
});
document.addEventListener("click", function (e) {
const likeIcon = e.target.closest(".dashicons-thumbs-up");
const dislikeIcon = e.target.closest(".dashicons-thumbs-down");
if (!likeIcon && !dislikeIcon) return; // only handle like/dislike clicks
e.preventDefault();
const msgItem = e.target.closest(".wp-chatbot-msg");
const feedbackContainer = jQuery(msgItem).find(".qcld-like-dislike-icon");
const likeAnchor = jQuery(msgItem).find(".dashicons-thumbs-up").parent("a");
const dislikeAnchor = jQuery(msgItem).find(".dashicons-thumbs-down").parent("a");
let feedbackType = "";
let isToggleOff = false;
if (likeIcon) {
// If like is already active → toggle it off
if (likeAnchor.hasClass("liked")) {
likeAnchor.removeClass("liked");
likeIcon.classList.remove("liked");
isToggleOff = true;
} else {
// Activate like, deactivate dislike
likeAnchor.addClass("liked");
likeIcon.classList.add("liked");
dislikeAnchor.removeClass("disliked");
jQuery(msgItem).find(".dashicons-thumbs-down").removeClass("disliked");
feedbackType = "like";
}
} else if (dislikeIcon) {
// If dislike is already active → toggle it off
if (dislikeAnchor.hasClass("disliked")) {
dislikeAnchor.removeClass("disliked");
dislikeIcon.classList.remove("disliked");
isToggleOff = true;
} else {
// Activate dislike, deactivate like
dislikeAnchor.addClass("disliked");
dislikeIcon.classList.add("disliked");
likeAnchor.removeClass("liked");
jQuery(msgItem).find(".fa-thumbs-o-up").removeClass("liked");
feedbackType = "dislike";
}
}
// 🔹 Only send feedback if toggled ON
if (!isToggleOff && feedbackType) {
let message = msgItem.querySelector(".wp-chatbot-paragraph").innerText.trim();
let meta =
"Source URL: " +
window.location.href +
" | User Agent: " +
navigator.userAgent;
jQuery.post(
wp_chatbot_obj.ajax_url,
{
action: "wpbot_save_feedback",
user_id: globalwpw.settings.obj.current_user_id,
conversation_id: 3,
message: message,
feedback: feedbackType,
meta_info: meta,
},
function (response) {
if (response.success) {
console.log("Feedback saved:", feedbackType);
} else {
console.log("Failed to save feedback.");
}
}
);
} else {
console.log("Feedback toggled off, not saving.");
}
});
// ---------------------------------------------------------------------------
// Streaming helpers
// ---------------------------------------------------------------------------
function qcldInlineMarkdown(text) {
text = text.replace(/`([^`]+)`/g, '$1');
text = text.replace(/\*\*([^*]+)\*\*/g, '$1');
text = text.replace(/__([^_]+)__/g, '$1');
text = text.replace(/\*([^*\n]+)\*/g, '$1');
text = text.replace(/_([^_\n]+)_/g, '$1');
text = text.replace(/\[([^\]]+)\]\((https?:\/\/[^\s)]+)\)/g,
'$1');
return text;
}
function qcldParseMarkdown(text) {
if (!text) { return ''; }
var lines = text.split('\n');
var html = '';
var inCode = false;
var inUL = false;
var inOL = false;
var codeLines = [];
function closeList() {
if (inUL) { html += ''; inUL = false; }
if (inOL) { html += ''; inOL = false; }
}
for (var i = 0; i < lines.length; i++) {
var line = lines[i];
// Fenced code block toggle
if (/^```/.test(line)) {
if (inCode) {
html += '' + codeLines.join('\n').replace(//g,'>') + '';
codeLines = [];
inCode = false;
} else {
closeList();
inCode = true;
}
continue;
}
if (inCode) { codeLines.push(line); continue; }
// Headings
var hm = line.match(/^(#{1,6})\s+(.*)/);
if (hm) {
closeList();
var lvl = hm[1].length;
html += '' + codeLines.join('\n') + ''; }
closeList();
return html;
}
function qcldTypeCharacterByCharacter($target, text, speed, onComplete) {
speed = speed || 10;
onComplete = onComplete || function(){};
var i = 0;
function type() {
if (i < text.length) {
$target.append(document.createTextNode(text.charAt(i)));
i++;
setTimeout(type, speed);
} else {
onComplete();
}
}
type();
}
function qcldStreamOpenAI(dataObj) {
fetch(qcld_chatbot_obj.stream_endpoint, {
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: new URLSearchParams(dataObj)
})
.then(function(response) {
if (!response.ok || !response.body) {
throw new Error('Network response was not OK or empty body');
}
var reader = response.body.getReader();
var decoder = new TextDecoder('utf-8');
var buffer = '';
var queue = [];
var isTyping = false;
var streamEnded = false;
var msgBuffer = '';
function finalize() {
var finalMsg = msgBuffer;
var isFormInProgress = qcldIsAiFormInProgress();
// The streaming endpoint never receives __AI_FORM_IN_PROGRESS__ markers
// (those are only added by the non-streaming PHP handler). So we also
// check whether the original request was sent with an active AI action.
if (dataObj.active_ai_action && dataObj.active_ai_action !== '') {
isFormInProgress = true;
}
if (finalMsg.indexOf('__AI_FORM_IN_PROGRESS__') !== -1) {
isFormInProgress = true;
finalMsg = finalMsg.replace(/__AI_FORM_IN_PROGRESS__/g, '').trim();
}
// qcldIsAiFormInProgress() above only reflects context from BEFORE this
// response. If this response itself carries the AI_FORM_DATA completion
// block, the form is done as of now regardless of that stale history.
var isFormCompletion = finalMsg.indexOf('AI_FORM_DATA') !== -1;
if (isFormCompletion) {
isFormInProgress = false;
}
finalMsg = wpwMsg.oncommand_filter(finalMsg);
if (typeof globalwpw !== 'undefined' && typeof globalwpw.aiContext !== 'undefined') {
globalwpw.aiContext.push({role: 'assistant', content: finalMsg});
if (globalwpw.aiContext.length > 10) {
globalwpw.aiContext.shift();
}
}
// Replace raw typed text with formatted HTML
var $para = jQuery('.wp-chatbot-msg').last().find('.wp-chatbot-paragraph');
if (finalMsg.trim()) {
$para.html(qcldParseMarkdown(finalMsg));
}
// Reactions (like/dislike/report/share) don't apply to the form
// completion summary card itself, only to normal AI chat replies.
if (!isFormInProgress && !isFormCompletion) {
jQuery(globalwpw.settings.messageContainer)
.find('.wp-chatbot-msg:last .qcld-like-dislike-icon')
.css('display', 'block');
}
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))){
wpwMsg.single_nobg(
'' +
wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) +
''
);
}
setTimeout(function() {
jQuery(globalwpw.settings.botContainer)
.stop(true)
.animate({ scrollTop: jQuery(globalwpw.settings.botContainer)[0].scrollHeight }, 400);
}, 150);
wpwKits.scrollTo();
}
function processQueue() {
if (isTyping || queue.length === 0) {
if (streamEnded && !isTyping && queue.length === 0) {
finalize();
}
return;
}
isTyping = true;
var nextChunk = queue.shift();
msgBuffer += nextChunk;
// If we've started receiving the data block or internal flags, hide it from the UI!
// We use '__AI_' as the trigger so it stops rendering even partial tags like '__AI_FORM_DATA__' or '__AI_FORM_IN_PROGRESS__'.
if (msgBuffer.indexOf('__AI_') !== -1) {
isTyping = false;
processQueue();
return;
}
var $para = jQuery('.wp-chatbot-msg').last().find('.wp-chatbot-paragraph');
if ($para.length) {
$para.find('.wp-chatbot-comment-loader').remove();
var $span = jQuery('');
$para.append($span);
qcldTypeCharacterByCharacter($span, nextChunk, 10, function() {
isTyping = false;
processQueue();
wpwKits.scrollTo();
});
} else {
isTyping = false;
processQueue();
}
}
function read() {
reader.read().then(function(result) {
if (result.done) { return; }
buffer += decoder.decode(result.value, { stream: true });
var lines = buffer.split('\n');
buffer = lines.pop();
for (var i = 0; i < lines.length; i++) {
var line = lines[i].trim();
if (!line) { continue; }
if (line.indexOf('data:') === 0) {
var jsonStr = line.replace(/^data:\s*/, '');
if (jsonStr === '[DONE]') {
streamEnded = true;
if (!isTyping && queue.length === 0) { finalize(); }
return;
}
try {
var parsed = JSON.parse(jsonStr);
var content = '';
if (parsed.choices && parsed.choices[0] && parsed.choices[0].delta) {
content = parsed.choices[0].delta.content || '';
} else if (parsed.delta && parsed.delta.content) {
content = parsed.delta.content;
}
if (content) {
queue.push(content);
processQueue();
wpwKits.scrollTo();
}
} catch(e) {
console.warn('Streaming parse error:', e, jsonStr);
}
}
}
read();
}).catch(function(err) { console.error('Stream read error:', err); });
}
read();
})
.catch(function(err) { console.error('Stream fetch error:', err); });
}
})(jQuery);