{ event, sessionId, data, timestamp, traceId? }.
Eventos de chamada são despachados apenas para o webhook D-API e para o
RabbitMQ — eles não são enviados para integrações de CRM. O evento
call.offer é entregue mesmo com a rejeição automática ligada.Direção dos eventos
As chamadas de saída são iniciadas via
POST /calls/place (chamada padrão) e
POST /calls/stream (modo com gravação). Os eventos abaixo refletem o andamento
dessas chamadas.
call.offer — chamada recebida
Disparado quando o número da sessão recebe uma chamada.
string
required
Identificador da chamada.
string
required
JID de quem está ligando, resolvido quando possível para o número de
telefone. Quando não é possível resolver, vem como
...@lid. A ordem de
resolução é: from do bridge → contatos (@lid → telefone) → fallback @lid.string
JID original informado pelo bridge. Pode vir como
@lid.boolean
required
true quando a chamada é de grupo.string
JID do grupo. Presente apenas quando
isGroup é true.number
required
Momento da chamada em milissegundos (epoch).
Chamadas de saída — payload base
Os eventos de saída (call.ringing, call.connected, call.ended,
call.not_answered) compartilham o mesmo payload base (CallEvent):
string
Identificador da chamada.
string
Estado da chamada. Varia por evento (ver abaixo).
string
Motivo do encerramento. Presente apenas em
call.ended.string
JID do interlocutor em formato
@lid. Opcional.string
JID do interlocutor em formato de telefone. Opcional.
call.ringing
Estado "ringing" — a chamada está tocando. É o primeiro evento de uma
chamada de saída, emitido assim que a chamada é iniciada (discada) — antes de
call.connected.
call.connected
Estado "active" — a chamada foi atendida e está em andamento.
call.ended
Estado "idle" — a chamada foi encerrada. O campo reason é preenchido.
Uma chamada gera exatamente um
call.ended (eventos duplicados do bridge
são deduplicados por callId). Para chamadas de saída, o call.ended cobre
apenas as que foram atendidas — uma que tocou e não foi atendida gera
call.not_answered no lugar.call.not_answered
Estado "idle" — uma chamada de saída que tocou mas nunca foi atendida
(encerrou antes de conectar, incluindo o timeout de não-atendimento). Substitui o
call.ended nesse caso, para você distinguir “não atendida” de “atendida e
encerrada” sem inspecionar o reason. Vale apenas para chamadas de saída.
Chamadas não atendidas não geram gravação: não há upload de áudio nem
evento
call.audio. (A chamada ainda fica registrada na trilha de auditoria
interna, marcada como não atendida.)call.audio
O evento call.audio tem duas variantes, dependendo de como a chamada de
saída foi iniciada.
Variante A — chunks de áudio ao vivo
Áudio transmitido em pedaços de ~1s cada, ordenados porseq, com
final: true no último chunk.
string
Identificador da chamada.
number
Número de sequência do chunk. Use para ordenar os pedaços.
number
Taxa de amostragem (tipicamente
16000).number
Número de canais (tipicamente
1).string
Codificação do áudio (
pcm_s16le).string
Pedaço de áudio PCM em base64.
boolean
true no último chunk da chamada.Variante B — gravação pronta (modo stream)
Um único evento ao final da chamada, com as URLs da gravação. Ocorre no modo stream (POST /calls/stream) apenas para chamadas atendidas — chamadas que
não foram atendidas não geram gravação nem este evento.
string
Identificador da chamada.
object
Faixas de áudio mono 16kHz:
string
deprecated
Depreciado — alias de
files.full.number
Duração da gravação em milissegundos.
number | null
Tamanho do arquivo em bytes.
string
Tipo do arquivo (
audio/wav).string
Telefone associado. Opcional.
call.accepted / call.rejected
Eventos de chamada de entrada atendida em outro dispositivo (call.accepted)
ou rejeitada (call.rejected).
O payload destes eventos é repassado tal como vem do bridge (relayed
as-is). Os campos garantidos são
from (JID formatado para telefone quando
possível) e um callId. Os demais campos espelham os dados de chamada de
entrada do bridge e não são documentados aqui para evitar suposições.