let mediaRecorder; let recordedChunks = []; let wizardDotNetRef = null; window.initWizardAudio = (dotnetRef) => { wizardDotNetRef = dotnetRef; }; window.startRecording = async () => { recordedChunks = []; console.log("startRecording called"); const stream = await navigator.mediaDevices.getUserMedia({ audio: true }); mediaRecorder = new MediaRecorder(stream); mediaRecorder.ondataavailable = (event) => { if (event.data.size > 0) { recordedChunks.push(event.data); } }; mediaRecorder.onstop = async () => { const blob = new Blob(recordedChunks, { type: 'audio/webm' }); const arrayBuffer = await blob.arrayBuffer(); const byteArray = new Uint8Array(arrayBuffer); if (wizardDotNetRef) { wizardDotNetRef.invokeMethodAsync('SendAudioToServer', Array.from(byteArray)); } }; mediaRecorder.start(); }; window.stopRecording = () => { mediaRecorder.stop(); };