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"}