Send a message in this conversation — to, the from-number ref, and the
session's channel are prefilled.
The channel is carried over deliberately: a session opened on WhatsApp would
otherwise show its indicator on WhatsApp and then send on the line's default
rail, which is a different conversation as far as the recipient is concerned.
An explicit channel in params still wins.
Clear the indicator now. Idempotent — later calls (including disposal) are no-ops. Unlike disposal, an explicit stop() propagates its failure.
A scoped typing indicator: created via
client.typing(...), which fires the start request immediately (without awaiting it — a start failure surfaces at the next interaction with the session). Disposal —await using, or an explicitstop()— clears the indicator.Delivering a message clears the indicator natively on the recipient's device, so after each
sendMessagethe session renews it (best-effort — a failed renewal never fails the send). Net effect: the indicator persists for the whole block and only the disposal actually stops it.Best-effort teardown:
[Symbol.asyncDispose]never throws, so a failure to clear the indicator can't mask an error thrown inside the block. There is no keep-alive; the recipient's device may drop a stale indicator on its own during a very long pause.