Pular para o conteúdo principal
O áudio de chamadas do WaGo não serve apenas para testes. Uma aplicação em produção pode permitir que um usuário real fale e ouça através de um navegador, aplicativo desktop ou aplicativo móvel, fazendo a ponte entre o áudio dessa aplicação e uma chamada ativa do WhatsApp.

Caminho recomendado para produção

Use WebRTC entre seu frontend e o WaGo:
User browser or app
  microphone -> Opus RTP -> WaGo /call/webrtc/offer -> WhatsApp call
  speaker    <- Opus RTP <- WaGo call receive path
O WebRTC é o padrão recomendado porque os navegadores já oferecem suporte nativo para captura de microfone, cancelamento de eco, jitter buffering, temporização de pacotes e saída de áudio.

Requisitos do navegador

Sua aplicação no navegador precisa de:
  • Origem HTTPS em produção.
  • Permissão de microfone concedida pelo usuário.
  • Um ID de chamada ativa do WaGo.
  • RTCPeerConnection configurado com /call/webrtc/config.
  • Um elemento <audio autoplay> visível ou oculto para o áudio remoto da chamada.
Navegadores bloqueiam o acesso ao microfone em origens não seguras. localhost funciona para desenvolvimento local, mas em produção é obrigatório o uso de HTTPS.

Requisitos do servidor

O WaGo precisa de:
  • Um token conectado e autenticado.
  • Uma chamada rastreada via /call/make ou um evento de chamada recebida.
  • Acesso UDP/rede para o ICE do WebRTC.
  • Suporte de proxy reverso para o tráfego normal da API HTTPS.
Configuração atual do ICE:
{
  "iceServers": [
    {
      "urls": ["stun:stun.l.google.com:19302"]
    }
  ],
  "turn": {
    "enabled": false,
    "status": "coming_soon"
  }
}

Status do TURN

O TURN ainda não está configurado. O WaGo utiliza STUN fixo por enquanto e retorna o status do TURN como coming_soon. Isso significa que o áudio em produção pode funcionar em muitas redes, mas não é garantido para todos os usuários. NATs restritivos, firewalls corporativos e algumas redes móveis podem precisar de um relay TURN para que o áudio ao vivo seja confiável em todos os cenários.

Checklist de implementação no navegador

  1. Chame GET /call/webrtc/config.
  2. Crie a RTCPeerConnection com os iceServers retornados.
  3. Chame navigator.mediaDevices.getUserMedia({ audio: true }).
  4. Adicione a trilha de áudio do microfone à conexão peer.
  5. Escute o evento pc.ontrack e anexe o stream remoto a um elemento de áudio.
  6. Crie uma oferta SDP.
  7. Aguarde a conclusão da coleta de ICE.
  8. Envie { callID, type: "offer", sdp } para POST /call/webrtc/offer.
  9. Defina a resposta do WaGo como a descrição remota.
  10. Ao encerrar a chamada, feche a conexão peer e chame POST /call/webrtc/close.

Aplicativos desktop e móveis

Se você estiver criando um aplicativo desktop ou móvel, tem duas opções:
OpçãoUse quando
Biblioteca WebRTCVocê deseja o mesmo comportamento do áudio ao vivo no navegador.
Ponte RTP/Opus nativaVocê controla a captura de áudio e deseja um pipeline personalizado em tempo real.
Para a maioria dos aplicativos, use uma biblioteca WebRTC. RTP nativo significa que você mesmo deve lidar com a captura de microfone, reamostragem, codificação/decodificação Opus, temporização de pacotes, jitter e reprodução de áudio.

Arquivos de áudio no servidor

Se o usuário não precisar falar ao vivo, use /call/play em vez de WebRTC. Isso reproduz um arquivo que já está presente no servidor WaGo. Extensões de arquivo suportadas:
  • .mp3
  • .wav
  • .opus
  • .ogg

Gravação

Use /call/record para salvar o áudio da chamada recebida em um arquivo WAV:
{
  "CallID": "CALL_ID",
  "Path": "files/calls/CALL_ID.wav"
}
Se o campo Path estiver vazio, o WaGo salvará por padrão em files/calls/{callID}.wav.
As leis de gravação de chamadas variam de acordo com o país e o estado. Seu produto deve obter consentimento e seguir as exigências locais antes de gravar usuários.