ExUssd.Handler behaviour (ExUssd v0.1.6) View Source

This module provides callbacks to implement ExUssd handler.

Link to this section Summary

Callbacks

Examples

defmodule MyHomeHandler do
  use ExUssd.Handler
  def init(menu, _api_parameters) do
    menu |> ExUssd.set(title: "Enter your pin number")
  end

  def callback(menu, api_parameters) do
    case api_parameters.text == "5555" do
      true ->
        menu
        |> ExUssd.set(title: "success, thank you.")
        |> ExUssd.set(should_close: true)

      _ ->
        menu |> ExUssd.set(error: "Wrong pin number\n")
    end
  end
end

Link to this section Types

Specs

api_parameters() :: map()

Specs

menu() :: ExUssd.t()

Specs

metadata() :: map()

Specs

payload() :: {:ok, payload_value()} | {:error, payload_value()}

Specs

payload_value() :: %{menu: menu(), api_parameters: api_parameters()}

Link to this section Callbacks

Link to this callback

after_route(payload)

View Source (optional)

Specs

after_route(payload()) :: any()
Link to this callback

callback(menu, api_parameters)

View Source (optional)

Specs

callback(menu :: menu() | map(), api_parameters :: api_parameters()) :: menu()
Link to this callback

callback(menu, api_parameters, metadata)

View Source (optional)

Specs

callback(
  menu :: menu(),
  api_parameters :: api_parameters(),
  metadata :: metadata()
) :: menu()
Link to this callback

init(menu, api_parameters)

View Source (optional)

Specs

init(menu :: menu(), api_parameters :: api_parameters()) :: menu()

Examples

defmodule MyHomeHandler do
  use ExUssd.Handler
  def init(menu, _api_parameters) do
    menu |> ExUssd.set(title: "Enter your pin number")
  end

  def callback(menu, api_parameters) do
    case api_parameters.text == "5555" do
      true ->
        menu
        |> ExUssd.set(title: "success, thank you.")
        |> ExUssd.set(should_close: true)

      _ ->
        menu |> ExUssd.set(error: "Wrong pin number\n")
    end
  end
end
Link to this callback

init(menu, api_parameters, metadata)

View Source (optional)

Specs

init(menu :: menu(), api_parameters :: api_parameters(), metadata :: map()) ::
  menu()