Call pre-accept (ringing)¶
Signalling - call-preaccept
SIG-04 - status: review - audio, video
Optional
A callee MAY send <preaccept> to signal that an incoming <offer>
(call-offer) is ringing, before the user answers. It does not
accept the call and MUST be followed by <accept> (call-accept)
or a terminating action (call-reject /
call-terminate).
Wire format — top-level <call> wrapper with a <preaccept> action child:
<call to="<caller>" id="<wrapper-id>">
<preaccept call-id="<call-id>" call-creator="<creator>">
<audio enc="opus" rate="..."/> ; one or more, preference order
<encopt keygen="2"/>
<capability ver="1">01 05 f7 09 e4 bb 07</capability>
</preaccept>
</call>
<call>MUST carryto(the caller) andid(stanza id correlating the server<ack>, generated from random bytes).<preaccept>MUST carrycall-id(echoed unchanged from the offer) andcall-creator.<preaccept>children MUST appear in order:audio(+) → encopt → capability.- Media MUST be one or more
<audio enc="opus" rate="...">, in preference order.rate="8000"steers to Opus narrowband;rate="16000"selects wideband. <encopt keygen="2">MUST be present (v2 SRTP key path).<capability ver="1">MUST carry the fixed 7-byte blob01 05 f7 09 e4 bb 07(differs from the offer/accept blob01 05 f7 09 e4 bb 13only in the final byte).- A receiver MUST read
call-idandcall-creatorto correlate with the in-flight call. No<receipt>ack is expected; the generic server<ack>for the<call>stanza suffices.
Requires: call-offer, call-accept
Breakdown: call-accept, flow-call-missed, flow-call-rejected, flow-incoming-1to1, flow-outgoing-1to1, video-call
Implemented by
| Flavor | Status | Source | Notes |
|---|---|---|---|
whatsapp-rust |
working | history - blame - commits 674e851 |
— |
zapo-caller |
working | — | — |
Annotation wacrg:SIG-04 — a flavor marks its implementation site in source with this comment; a script clones the source, finds it, and attaches the commit blame/permalink.
Contributors
| Contributor | Role |
|---|---|
| wrote initial spec |
protocol history / diff - blame
Open questions
- Whether the server or peer behaves differently when
Changelog¶
- 2026-06-21 — Initial spec entry.