Snapshot of the call with callId, or null if no such call is
active. Lets the UI seed itself synchronously instead of waiting for
the next callStream emission (which broadcast semantics don't
replay).
Place callId on hold (or resume it). Sends a re-INVITE with
a=sendonly (hold) or a=sendrecv (resume). The local mic is also
muted while held so we don't keep streaming audio after the peer
stops listening. Returns the new held state, or null if the call
isn't active.