Sobes.tech
Middle

Como foi implementado o envio de mensagens de voz no chat? Como obtiveram permissão para acessar o microfone?

sobes.tech IA

Resposta da IA

Para implementar o envio de mensagens de voz no chat, geralmente usam-se a API Web Audio e a API MediaRecorder.

  1. Obter permissão para aceder ao microfone:

Utiliza-se o método navigator.mediaDevices.getUserMedia({ audio: true }), que solicita ao utilizador permissão para usar o microfone. Se o utilizador permitir, é devolvido um fluxo de áudio.

async function getMicrophoneAccess() {
  try {
    const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
    return stream;
  } catch (err) {
    console.error('Permissão de microfone negada', err);
    return null;
  }
}
  1. Gravar áudio:

Com MediaRecorder, pode-se gravar áudio do fluxo obtido. Por exemplo:

const stream = await getMicrophoneAccess();
if (stream) {
  const mediaRecorder = new MediaRecorder(stream);
  const chunks = [];

  mediaRecorder.ondataavailable = e => chunks.push(e.data);
  mediaRecorder.onstop = () => {
    const audioBlob = new Blob(chunks, { type: 'audio/webm' });
    // Enviar audioBlob para o servidor ou reproduzir
  };

  mediaRecorder.start();

  // Parar a gravação após algum tempo
  setTimeout(() => mediaRecorder.stop(), 5000);
}
  1. Enviar mensagem de voz:

Após gravar o áudio num Blob, pode-se enviá-lo ao servidor via fetch ou WebSocket, e depois reproduzi-lo no destinatário.

Assim, os passos principais são: solicitar permissão através de getUserMedia, gravar com MediaRecorder e transmitir os dados de áudio.