# `Ussd.Configurator`
[🔗](https://github.com/spesohq/ussd/blob/main/lib/ussd/configurator.ex#L1)

Groups repeated `Ussd.use_*/2` setup so it can be shared across controllers/entry
points instead of copy-pasted.

    defmodule MyApp.UssdConfigurator do
      @behaviour Ussd.Configurator

      @impl Ussd.Configurator
      def configure(ussd) do
        ussd
        |> Ussd.use_response(&Ussd.Responses.AfricasTalking.respond/3)
        |> Ussd.use_exception_handler(&MyApp.UssdErrors.handle/1)
      end
    end

    Ussd.build(context)
    |> Ussd.use_configurator(MyApp.UssdConfigurator)
    |> Ussd.use_initial_state(MyApp.States.Welcome)
    |> Ussd.run()

# `configure`

```elixir
@callback configure(Ussd.t()) :: Ussd.t()
```

Applies this configurator's setup to `ussd` and returns the updated builder.

---

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