ExUssd.Display (ExUssd v0.1.2) View Source
Rendering of Menu Struct into response string
Link to this section Summary
Functions
Render's USSD string
Link to this section Functions
Render's USSD string
## Params
The function requires two keys as parameters
:menu
- takes current menu struct
:routes
- ExUssd.Routes routing list
Returns string.
## Examples
iex> defmodule MyHomeHandler do
...> @behaviour ExUssd.Handler
...> def handle_menu(menu, api_parameters) do
...> menu |> Map.put(:title, "Welcome")
...> end
...> end
iex> initial_menu = ExUssd.Menu.render(name: "Home", handler: MyHomeHandler)
iex> menu = ExUssd.Utils.call_menu_callback(initial_menu)
iex> routes = ExUssd.Routes.get_route(%{text: "", service_code: "*544#"})
iex> ExUssd.Display.generate(menu: menu, routes: routes)
{:ok, "Welcome"}
iex> defmodule ProductAHandler do
...> @behaviour ExUssd.Handler
...> def handle_menu(menu, api_parameters) do
...> menu |> Map.put(:title, "selected product a")
...> end
...> end
iex> defmodule ProductBHandler do
...> @behaviour ExUssd.Handler
...> def handle_menu(menu, api_parameters) do
...> menu |> Map.put(:title, "selected product b")
...> end
...> end
iex> defmodule MyHomeHandler do
...> @behaviour ExUssd.Handler
...> def handle_menu(menu, api_parameters) do
...> menu
...> |> Map.put(:title, "Welcome")
...> |> Map.put(:menu_list,
...> [
...> ExUssd.Menu.render(name: "Product A", handler: ProductAHandler),
...> ExUssd.Menu.render(name: "Product B", handler: ProductBHandler)
...> ])
...> end
...> end
iex> initial_menu = ExUssd.Menu.render(name: "Home", handler: MyHomeHandler)
iex> menu = ExUssd.Utils.call_menu_callback(initial_menu)
iex> routes = ExUssd.Routes.get_route(%{text: "", service_code: "*544#"})
iex> ExUssd.Display.generate(menu: menu, routes: routes)
{:ok, "Welcome\n1:Product A\n2:Product B"}