Call Pre-Accept¶
Tag: <call>
Category: signaling
Status: draft
Spec version: 0.1.0
Direction: outgoing, incoming
Summary¶
An early-acknowledgement stanza emitted by a callee device after it has received and decrypted the offer but before the user has answered. The
Attributes¶
| Name | Type | Required | Confidence | Description | Provenance |
|---|---|---|---|---|---|
from |
jid |
yes | probable | JID of the ringing callee device emitting the pre-accept. observed: B.0:7@s.whatsapp.net |
techniques: websocket-capture; sources: none |
to |
jid |
yes | probable | JID of the caller the pre-accept is routed to. observed: A@s.whatsapp.net |
techniques: websocket-capture; sources: none |
id |
string |
yes | probable | Stanza id used to correlate the server observed: 3C4D5E6F70 |
techniques: websocket-capture; sources: none |
Children¶
<preaccept>¶
occurrence: 1 - confidence: probable
Container marking the call as received-and-ringing. Echoes the session identifiers. It may optionally carry early transport candidates so the relay handshake can begin while the phone rings, but it carries no acceptance.
Attributes
| Name | Type | Required | Confidence | Description | Provenance |
|---|---|---|---|---|---|
call-id |
string |
yes | probable | The logical call session id, copied verbatim from the offer. observed: CALLID-0001-synthetic |
techniques: websocket-capture, baileys-instrumentation; sources: none |
call-creator |
jid |
yes | probable | JID of the call creator (the caller), copied from the offer. observed: A@s.whatsapp.net |
techniques: websocket-capture; sources: none |
<destination>¶
occurrence: 0..1 - confidence: speculative
Optional early transport candidates, allowing relay warm-up before the user answers. Whether pre-accept carries these or they wait for
<te>¶
occurrence: 0..n - confidence: speculative
A transport endpoint candidate advertised early by the ringing device.
Attributes
| Name | Type | Required | Confidence | Description | Provenance |
|---|---|---|---|---|---|
ip |
string |
no | speculative | Candidate IP address (synthetic example only). observed: 203.0.113.20 |
techniques: websocket-capture; sources: none |
port |
int |
no | speculative | Candidate UDP port for media. observed: 3478 |
techniques: websocket-capture; sources: none |
Examples¶
Illustrative pre-accept / ringing (synthetic)¶
Synthetic and sanitized, not a real capture. Whether
carries early candidates is an open question; a bare form is also plausible.
<call from="B.0:7@s.whatsapp.net" to="A@s.whatsapp.net" id="3C4D5E6F70">
<preaccept call-id="CALLID-0001-synthetic" call-creator="A@s.whatsapp.net"/>
</call>
Notes¶
Pre-accept is the protocol's analogue of an SIP 180 Ringing: it confirms delivery and that the device is alerting the user, distinct from the actual
Open questions¶
- Is
always emitted, or only under certain client versions / network conditions? - Does pre-accept carry early transport candidates, or is transport deferred to
? - In multi-device, do all ringing devices send pre-accept, and how does the caller aggregate them?