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:
{
"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
- Abra o servidor no console e clique em Nova instância.
- Selecione Tipo → Ligação, informe um nome e crie. O painel guarda o token no backend.
- 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.
- 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.
- 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ção | Resultado |
|---|---|
| POST /call/make | Corpo {number}; 201 com callId; aceita Idempotency-Key |
| POST /call/answer | Corpo {callId}; atende uma chamada recebida |
| POST /call/reject | Corpo {callId}; recusa uma chamada recebida |
| POST /call/hangup | Corpo {callId}; encerra a chamada |
| GET /call/active | Lista as chamadas vivas da instância |
| GET /call/{id} | Estado da chamada viva ou recém-encerrada |
| GET /call/{id}/audio | Upgrade 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.