function wpaicgChatShortcodeSize(){var wpaicgWindowWidth=window.innerWidth;var wpaicgWindowHeight=window.innerHeight;var chatShortcodes=document.getElementsByClassName('wpaicg-chat-shortcode');if(chatShortcodes!==null&&chatShortcodes.length){for(var i=0;i/g,">").replace(/"/g,""").replace(/'/g,"'");} function wpaicgstartChatRecording(){let constraints={audio:true,video:false} navigator.mediaDevices.getUserMedia(constraints).then(function(stream){wpaicgaudioContext=new wpaicgChatAudioContext();wpaicgChatStream=stream;wpaicgInput=wpaicgaudioContext.createMediaStreamSource(stream);wpaicgChatRec=new Recorder(wpaicgInput,{numChannels:1});wpaicgChatRec.record();})} function wpaicgstopChatRecording(mic){wpaicgChatRec.stop();wpaicgChatStream.getAudioTracks()[0].stop();wpaicgChatRec.exportWAV(function(blob){let type=mic.getAttribute('data-type');let parentChat;let chatContent;let chatTyping;if(type==='widget'){parentChat=mic.closest('.wpaicg-chatbox');chatContent=parentChat.querySelectorAll('.wpaicg-chatbox-content')[0];chatTyping=parentChat.querySelectorAll('.wpaicg-chatbox-typing')[0];}else{parentChat=mic.closest('.wpaicg-chat-shortcode');chatContent=parentChat.querySelectorAll('.wpaicg-chat-shortcode-content')[0];chatTyping=parentChat.querySelectorAll('.wpaicg-chat-shortcode-typing')[0];} wpaicgSendChatMessage(parentChat,chatTyping,type,blob);});} function wpaicgSendChatMessage(chat,typing,type,blob){let wpaicg_box_typing=typing;let wpaicg_ai_thinking,wpaicg_messages_box,class_user_item,class_ai_item;let wpaicgMessage='';let wpaicgData=new FormData();let wpaicg_you=chat.getAttribute('data-you')+':';let wpaicg_ai_name=chat.getAttribute('data-ai-name')+':';let wpaicg_nonce=chat.getAttribute('data-nonce');let wpaicg_use_avatar=parseInt(chat.getAttribute('data-use-avatar'));let wpaicg_bot_id=parseInt(chat.getAttribute('data-bot-id'));let wpaicg_user_avatar=chat.getAttribute('data-user-avatar');let wpaicg_ai_avatar=chat.getAttribute('data-ai-avatar');let wpaicg_user_bg=chat.getAttribute('data-user-bg-color');let wpaicg_font_size=chat.getAttribute('data-fontsize');let wpaicg_speech=chat.getAttribute('data-speech');let wpaicg_voice=chat.getAttribute('data-voice');let wpaicg_voice_error=chat.getAttribute('data-voice-error');let url=chat.getAttribute('data-url');let post_id=chat.getAttribute('data-post-id');let wpaicg_ai_bg=chat.getAttribute('data-ai-bg-color');let wpaicg_font_color=chat.getAttribute('data-color');let voice_service=chat.getAttribute('data-voice_service');let voice_language=chat.getAttribute('data-voice_language');let voice_name=chat.getAttribute('data-voice_name');let voice_device=chat.getAttribute('data-voice_device');let openai_model=chat.getAttribute('data-openai_model');let openai_voice=chat.getAttribute('data-openai_voice');let openai_output_format=chat.getAttribute('data-openai_output_format');let openai_voice_speed=chat.getAttribute('data-openai_voice_speed');let voice_speed=chat.getAttribute('data-voice_speed');let voice_pitch=chat.getAttribute('data-voice_pitch');var chat_pdf=chat.getAttribute('data-pdf');if(type==='widget'){wpaicg_ai_thinking=chat.getElementsByClassName('wpaicg-bot-thinking')[0];wpaicg_messages_box=chat.getElementsByClassName('wpaicg-chatbox-messages')[0];class_user_item='wpaicg-chat-user-message';class_ai_item='wpaicg-chat-ai-message';}else{wpaicg_ai_thinking=chat.getElementsByClassName('wpaicg-bot-thinking')[0];wpaicg_messages_box=chat.getElementsByClassName('wpaicg-chat-shortcode-messages')[0];class_user_item='wpaicg-user-message';class_ai_item='wpaicg-ai-message';} if(wpaicg_use_avatar){wpaicg_you='';wpaicg_ai_name='';} wpaicg_ai_thinking.style.display='block';let wpaicg_question=wpaicgescapeHtml(wpaicg_box_typing.value);wpaicgMessage+='
  • ';wpaicgMessage+=''+wpaicg_you+'';wpaicgData.append('_wpnonce',wpaicg_nonce);wpaicgData.append('post_id',post_id);if(chat_pdf&&chat_pdf!==null){wpaicgData.append('namespace',chat_pdf);} wpaicgData.append('url',url);if(type==='widget'){wpaicgData.append('action','wpaicg_chatbox_message');}else{wpaicgData.append('action','wpaicg_chat_shortcode_message');} if(blob!==undefined){let url=URL.createObjectURL(blob);wpaicgMessage+='';wpaicgData.append('audio',blob,'wpaicg-chat-recording.wav');}else if(wpaicg_question!==''){wpaicgData.append('message',wpaicg_question);wpaicgMessage+=wpaicg_question.replace(/\n/g,'
    ');} wpaicgData.append('bot_id',wpaicg_bot_id);wpaicgMessage+='
  • ';wpaicg_messages_box.innerHTML+=wpaicgMessage;wpaicg_messages_box.scrollTop=wpaicg_messages_box.scrollHeight;const xhttp=new XMLHttpRequest();wpaicg_box_typing.value='';xhttp.open('POST',wpaicg_ajax_url,true);xhttp.send(wpaicgData);xhttp.onreadystatechange=function(oEvent){if(xhttp.readyState===4){var wpaicg_message='';var wpaicg_response_text='';var wpaicg_randomnum=Math.floor((Math.random()*100000)+1);if(xhttp.status===200){var wpaicg_response=this.responseText;if(wpaicg_response!==''){wpaicg_response=JSON.parse(wpaicg_response);wpaicg_ai_thinking.style.display='none' if(wpaicg_response.status==='success'){wpaicg_response_text=wpaicg_response.data;wpaicg_message='
  • '+wpaicg_ai_name+'';}else{wpaicg_response_text=wpaicg_response.msg;wpaicg_message='

  • '+wpaicg_ai_name+'';}}}else{wpaicg_message='

  • '+wpaicg_ai_name+'';wpaicg_response_text='Something went wrong';} if(wpaicg_response_text==='null'||wpaicg_response_text===null){wpaicg_response_text='The model predicted a completion that begins with a stop sequence, resulting in no output. Consider adjusting your prompt or stop sequences.';} if(wpaicg_response_text!==''&&wpaicg_message!==''){if(parseInt(wpaicg_speech)==1){if(voice_service==='google'){wpaicg_ai_thinking.style.display='block';let speechData=new FormData();speechData.append('nonce',wpaicg_nonce);speechData.append('action','wpaicg_google_speech');speechData.append('language',voice_language);speechData.append('name',voice_name);speechData.append('device',voice_device);speechData.append('speed',voice_speed);speechData.append('pitch',voice_pitch);speechData.append('text',wpaicg_response_text);var speechRequest=new XMLHttpRequest();speechRequest.open("POST",wpaicg_ajax_url);speechRequest.onload=function(){var result=speechRequest.responseText;try{result=JSON.parse(result);if(result.status==='success'){var byteCharacters=atob(result.audio);const byteNumbers=new Array(byteCharacters.length);for(let i=0;i';wpaicg_message+='

  • ';wpaicg_ai_thinking.style.display='none';wpaicgWriteMessage(wpaicg_messages_box,wpaicg_message,wpaicg_randomnum,wpaicg_response_text);} else{var errorMessageDetail='Google: '+result.msg;wpaicg_ai_thinking.style.display='none';if(parseInt(wpaicg_voice_error)!==1){wpaicg_message+=''+errorMessageDetail+'';} else if(typeof wpaicg_response!=='undefined'&&typeof wpaicg_response.log!=='undefined'&&wpaicg_response.log!==''){var speechLogMessage=new FormData();speechLogMessage.append('nonce',wpaicg_nonce);speechLogMessage.append('log_id',wpaicg_response.log);speechLogMessage.append('message',errorMessageDetail);speechLogMessage.append('action','wpaicg_speech_error_log');var speechErrorRequest=new XMLHttpRequest();speechErrorRequest.open("POST",wpaicg_ajax_url);speechErrorRequest.send(speechLogMessage);} wpaicg_message+='

    ';wpaicgWriteMessage(wpaicg_messages_box,wpaicg_message,wpaicg_randomnum,wpaicg_response_text);}} catch(errorSpeech){}} speechRequest.send(speechData);} else if(voice_service==='openai'){let speechData=new FormData();speechData.append('action','wpaicg_openai_speech');speechData.append('nonce',wpaicg_nonce);speechData.append('text',wpaicg_response_text);speechData.append('model',openai_model);speechData.append('voice',openai_voice);speechData.append('output_format',openai_output_format);speechData.append('speed',openai_voice_speed);wpaicg_ai_thinking.style.display='block';var speechRequest=new XMLHttpRequest();speechRequest.open("POST",wpaicg_ajax_url);speechRequest.responseType="arraybuffer";speechRequest.onload=function(){if(speechRequest.status===200){wpaicg_ai_thinking.style.display='none';const audioData=speechRequest.response;const blobMimeType=getBlobMimeType(openai_output_format);const blob=new Blob([audioData],{type:blobMimeType});const blobUrl=URL.createObjectURL(blob);const audio=new Audio(blobUrl);audio.play().catch(e=>console.error('Playback error:',e));wpaicg_message+='';wpaicgWriteMessage(wpaicg_messages_box,wpaicg_message,wpaicg_randomnum,wpaicg_response_text);}else{wpaicg_ai_thinking.style.display='none';console.error('Error generating speech with OpenAI:',speechRequest.statusText);wpaicg_message+='Error generating speech with OpenAI';wpaicgWriteMessage(wpaicg_messages_box,wpaicg_message,wpaicg_randomnum,wpaicg_response_text);}};speechRequest.onerror=function(){wpaicg_ai_thinking.style.display='none';console.error('Network error during speech generation with OpenAI');wpaicg_message+='Network error during speech generation';wpaicgWriteMessage(wpaicg_messages_box,wpaicg_message,wpaicg_randomnum,wpaicg_response_text);};speechRequest.send(speechData);function getBlobMimeType(format){switch(format){case'opus':return'audio/opus';case'aac':return'audio/aac';case'flac':return'audio/flac';default:return'audio/mpeg';}}} else{let speechData=new FormData();speechData.append('nonce',wpaicg_nonce);speechData.append('message',wpaicg_response_text);speechData.append('voice',wpaicg_voice);speechData.append('action','wpaicg_text_to_speech');wpaicg_ai_thinking.style.display='block';var speechRequest=new XMLHttpRequest();speechRequest.open("POST",wpaicg_ajax_url);speechRequest.responseType="arraybuffer";speechRequest.onload=function(){wpaicg_ai_thinking.style.display='none';var blob=new Blob([speechRequest.response],{type:"audio/mpeg"});var fr=new FileReader();fr.onload=function(){var fileText=this.result;try{var errorMessage=JSON.parse(fileText);var errorMessageDetail='ElevenLabs: '+errorMessage.detail.message;if(parseInt(wpaicg_voice_error)!==1){wpaicg_message+=''+errorMessageDetail+'';}else if(typeof wpaicg_response!=='undefined'&&typeof wpaicg_response.log!=='undefined'&&wpaicg_response.log!==''){var speechLogMessage=new FormData();speechLogMessage.append('nonce',wpaicg_nonce);speechLogMessage.append('log_id',wpaicg_response.log);speechLogMessage.append('message',errorMessageDetail);speechLogMessage.append('action','wpaicg_speech_error_log');var speechErrorRequest=new XMLHttpRequest();speechErrorRequest.open("POST",wpaicg_ajax_url);speechErrorRequest.send(speechLogMessage);} wpaicg_message+='

    ';wpaicgWriteMessage(wpaicg_messages_box,wpaicg_message,wpaicg_randomnum,wpaicg_response_text);}catch(errorBlob){var blobUrl=URL.createObjectURL(blob);wpaicg_message+='';wpaicg_message+='

    ';wpaicgWriteMessage(wpaicg_messages_box,wpaicg_message,wpaicg_randomnum,wpaicg_response_text);}} fr.readAsText(blob);} speechRequest.send(speechData);}} else{wpaicg_message+='

    ';wpaicgWriteMessage(wpaicg_messages_box,wpaicg_message,wpaicg_randomnum,wpaicg_response_text);}}}}} function wpaicgWriteMessage(wpaicg_messages_box,wpaicg_message,wpaicg_randomnum,wpaicg_response_text){wpaicg_messages_box.innerHTML+=wpaicg_message;var wpaicg_current_message=document.getElementById('wpaicg-chat-message-'+wpaicg_randomnum);var parentMessage=wpaicg_current_message.parentElement;var audio=parentMessage.getElementsByTagName('audio');if(audio&&audio.length){audio[0].play();} var i=0;var wpaicg_speed=1;function wpaicgLinkify(inputText){var replacedText,replacePattern1,replacePattern2,replacePattern3;replacePattern1=/(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gim;replacedText=inputText.replace(replacePattern1,'$1');replacePattern2=/(^|[^\/])(www\.[\S]+(\b|$))/gim;replacedText=replacedText.replace(replacePattern2,'$1$2');replacePattern3=/(([a-zA-Z0-9\-\_\.])+@[a-zA-Z\_]+?(\.[a-zA-Z]{2,6})+)/gim;replacedText=replacedText.replace(replacePattern3,'$1');return replacedText;} if(wpaicg_response_text!==''){wpaicg_response_text=wpaicg_response_text.trim();} wpaicg_response_text=wpaicg_response_text.replace(/\n/g,'≈');function wpaicg_typeWriter(){if(i';} else{wpaicg_current_message.innerHTML+=wpaicg_response_text.charAt(i);} i++;setTimeout(wpaicg_typeWriter,wpaicg_speed);wpaicg_messages_box.scrollTop=wpaicg_messages_box.scrollHeight;}else{wpaicg_current_message.innerHTML=wpaicgLinkify(wpaicg_current_message.innerHTML);wpaicg_current_message.innerHTML=wpaicg_current_message.innerHTML.replace(/```([\s\S]*?)```/g,'$1');}} wpaicg_typeWriter();} function wpaicgMicEvent(mic){if(mic.classList.contains('wpaicg-recording')){mic.innerHTML='';mic.innerHTML=wpaicgMicIcon;mic.classList.remove('wpaicg-recording');wpaicgstopChatRecording(mic)}else{let checkRecording=document.querySelectorAll('.wpaicg-recording');if(checkRecording&&checkRecording.length){alert('Please finish previous recording');}else{mic.innerHTML='';mic.innerHTML=wpaicgStopIcon;mic.classList.add('wpaicg-recording');wpaicgstartChatRecording();}}} if(wpaicgChatTyping&&wpaicgChatTyping.length){for(let i=0;i