Ligações
Chamadas nativas beta: originação, atendimento recebido, áudio em arquivo e transporte PCM com token por chamada. SIP e vídeo indisponíveis.
11 endpoints
/instances/:id/calls
→
Histórico recente de chamadas
Lista as chamadas recentes observadas pelo socket.
/instances/:id/calls/reject
→
Rejeita uma chamada recebida
Rejeita uma chamada recebida pelo ID e JID do autor.
/instances/:id/calls/link
→
Gerar link de chamada
Gera um link de chamada de áudio ou vídeo.
/instances/:id/calls
→
Inicia chamada nativa de voz
Usa a sessão Baileys já conectada e o runtime WASM/WebRTC do servidor, sem serviço externo. Header Idempotency-Key obrigatório; repetir a chave retorna a mesma chamada. base64 opcional contém arquivo de áudio puro; durationMs opcional aceita 1000..120000. Retorna 202 com provider=vertice, transport=native e stateSource=native_engine. Estados seguem eventos do engine: initiating, ringing, connected, ended, failed, interrupted. Runtime indisponível retorna 503 voice_engine_unavailable. O destinatário é resolvido para o número canônico registrado no WhatsApp antes da discagem; cadastro ausente retorna 400 voice_recipient_not_found. Uma chamada ativa por número; cada chamada usa processo filho isolado, com sinalização pela sessão Baileys existente. O padrão WA_VOICE_MAX_CONCURRENT_CALLS=0 remove o teto fixo por servidor; cada número pode ligar independentemente. Um valor de 1..200 define um teto operacional opcional. Capabilities retornam maxCallsPerNumber=1 e maxConcurrentCalls=null quando não há teto fixo. Falta de memória ou teto operacional atingido retorna 429 voice_capacity_reached. A capacidade real depende de CPU e memória; 100 simultâneas ainda não foram validadas. Áudio em aparelho pareado ainda exige homologação.
/instances/:id/calls/:callId
→
Estado da chamada pelos eventos do engine nativo
stateSource=native_engine. Estados: initiating, ringing, connected, ended, failed, interrupted. connected representa evento do engine e não comprova áudio audível no aparelho.
/instances/:id/calls/:callId/end
→
Encerrar chamada nativa
Operação idempotente. O estado reflete o engine nativo; falhas não são convertidas em sucesso.
/instances/:id/calls/:callId/audio
→
Reproduz arquivo de áudio na chamada nativa conectada
O próprio servidor reproduz o arquivo quando a chamada está connected. Exige base64 puro válido com até 750 KB. acceptedByEngine confirma execução no engine, sem comprovar áudio audível no aparelho. Esta rota reproduz arquivo. O softphone de Conversas usa microfone e áudio WSS por /calls/:callId/media/live; atendimento usa /accept. Vídeo e SIP indisponíveis; áudio no aparelho ainda exige homologação.
/instances/:id/calls/:callId/accept
→
Atende chamada recebida
callId é o ID local de uma oferta recebida pelo socket. Oferta expira em60s. Não cria outro socket/pareamento. Eventos call acompanham estados do motor; mídia exige negociação e homologação real.
/instances/:id/calls/:callId/media-token
→
Emite token de áudio por chamada
Exige chamada connected. Token de30s, vinculado à chamada/instância; nova emissão revoga o anterior. Além da autenticação normal, envie x-voice-media-token no transporte binário. Resposta token/expiresAt/format=f32le.
/instances/:id/calls/:callId/media
→
Lê quadros de áudio recebidos
Resposta application/octet-stream com até10 quadros float32 little-endian. Headers x-pcm-capture e x-pcm-playback contêm formatos negociados, x-pcm-dropped-frames informa descarte acumulado. Buffer vazio indica ausência de quadros. Token e autenticação normal obrigatórios; no-store.
/instances/:id/calls/:callId/media
→
Injeta quadro de áudio na chamada
Envie exatamente um quadro application/octet-stream float32 little-endian, tamanho negociado. Amostras finitas entre-1 e1. Limite HTTP32KiB, até4 escritas pendentes. 409 negociação pendente;429 pressão no canal. Exige autenticação normal e x-voice-media-token.