# `ExWapp.Session.Worker.ReceiptBuilder`
[🔗](https://github.com/elchemista/ex_wapp/blob/v0.1.5/lib/ex_wapp/session/worker/receipt_builder.ex#L1)

Builds receipt and retry-receipt nodes for inbound message acknowledgement.

# `retry_receipt`

```elixir
@type retry_receipt() :: %{
  :to =&gt; String.t(),
  :id =&gt; String.t(),
  optional(:participant) =&gt; String.t() | nil,
  optional(:message_t) =&gt; String.t() | integer() | nil,
  optional(:retry_count) =&gt; non_neg_integer() | nil,
  optional(:error_code) =&gt; integer() | nil,
  optional(:retry_meta) =&gt; map() | nil
}
```

What a retry receipt is about: who to answer, which message, and why.

Grouped rather than passed positionally — `nil, nil, 2, nil` at a call site
says nothing about which field is which.

# `build_receipt_ack`

```elixir
@spec build_receipt_ack(
  String.t(),
  String.t(),
  String.t() | nil,
  String.t() | nil,
  map() | nil
) :: ExWapp.Binary.Node.t()
```

# `build_retry_receipt_ack`

```elixir
@spec build_retry_receipt_ack(ExWapp.Store.t(), retry_receipt(), map()) ::
  ExWapp.Binary.Node.t()
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
