Chamadas de voz

Instâncias calls, discagem, eventos e áudio pelo painel.

Ligações usam uma instância de tipo calls, com pareamento próprio e áudio nos dois sentidos pelo navegador. O módulo precisa estar habilitado no servidor.

Capacidade anunciada

Consulte GET /v1/capabilities com admintoken. Exigir capabilities.calls=true e instance_kinds contendo calls. Este recorte ilustra um servidor habilitado:

json
{
  "capabilities": {"calls": true},
  "instance_kinds": ["whatsapp", "calls"],
  "calls_max_concurrent": 1
}

Com ATENDROZAP_CALLS_ENABLED=false, criar ou operar a instância de ligação é recusado. O limite padrão é uma chamada por instância. Conectar uma instância de mensagens não habilita voz nela.

Primeiro teste pelo painel

  1. Abra o servidor no console e clique em Nova instância.
  2. Selecione Tipo → Ligação, informe um nome e crie. O painel guarda o token no backend.
  3. Solicite a conexão e escaneie o QR pelo WhatsApp do número autorizado. Aguarde connected. Pode ser outro dispositivo vinculado do mesmo número usado para mensagens ou um número dedicado.
  4. Nas Conversas da instância de mensagens, abra a conversa autorizada e clique em Ligar. O painel escolhe uma instância de ligação conectada do mesmo servidor cujo token conhece. Também é possível usar Discar na página da instância de ligação.
  5. Permita o microfone, atenda no telefone de destino e confira áudio nos dois sentidos. Mudo controla o microfone; Desligar encerra a chamada. Mantenha a página aberta durante a conversa.

Se o tipo Ligação não aparecer, confira a capacidade do servidor. Se o painel não conhecer o token de uma instância criada fora dele, reemita-o pela interface antes do uso. Erros de linha ocupada ou sessão desconectada são mostrados no widget.

Ruído e eco

O painel solicita cancelamento de eco, supressão de ruído e ajuste de ganho ao navegador. Quando o dispositivo oferece o modo de cancelamento de todo o áudio reproduzido, ele é preferido para incluir a voz que sai pelo painel. O widget avisa quando não consegue confirmar o cancelamento de eco.

Reduzir ruído do microfone vem marcado: acrescenta um filtro de graves e atenua suavemente o fundo entre as falas. Desmarque durante uma chamada para comparar, especialmente se sua voz for muito baixa. Essa opção controla o filtro adicional; o cancelamento de eco do navegador continua solicitado. O tratamento ocorre no computador do atendente antes do envio, sem gravar o áudio nem alterar o som recebido.

O filtro não elimina todas as vozes, teclas ou sons fortes enquanto você fala. Use fone se persistir eco; no teste com dois aparelhos próximos, afaste o telefone do microfone do computador e evite volume alto no viva-voz. A qualidade depende também do navegador, microfone e ambiente.

Rotas e estados

OperaçãoResultado
POST /call/makeCorpo {number}; 201 com callId; aceita Idempotency-Key
POST /call/answerCorpo {callId}; atende uma chamada recebida
POST /call/rejectCorpo {callId}; recusa uma chamada recebida
POST /call/hangupCorpo {callId}; encerra a chamada
GET /call/activeLista as chamadas vivas da instância
GET /call/{id}Estado da chamada viva ou recém-encerrada
GET /call/{id}/audioUpgrade WebSocket; PCM s16le mono a 16 kHz

Todas usam o token da instância calls. Estados: ringing, connecting, active, ended; o encerramento inclui endReason e endedBy. Uma instância whatsapp mantém 501 calls_not_supported em /call/make; outras rotas de ligação recusam o tipo incorreto com 409 wrong_instance_kind.

O áudio passa pelo console, que autentica a sessão do navegador e adiciona o token no pedido à API. Apenas a ponte de áudio aceita ?token= como alternativa ao header. Prefira o proxy para manter a credencial no backend e não registrar tokens em URLs. Fechar o socket encerra a chamada.

Eventos e limites de validação

Inscreva call no webhook global ou próprio para receber data com callId, direção, estado e motivo de encerramento. A entrega segue a política de assinatura, retry e deduplicação dos demais eventos.

A bancada validou uma chamada curta de saída com áudio nos dois sentidos, e o responsável confirmou a chamada real pelo painel da VPS em 18/09/2026. Após o ajuste de áudio, repetiu a chamada e confirmou melhora tanto do ruído quanto do eco. Essa confirmação é qualitativa, no ambiente testado. Latência boca-ouvido medida, chamada longa, recebimento e o defeito upstream #25 (recusa por aparelho Web/Desktop do destino) continuam pendentes de homologação. Veja validação e limites.