ExUssd.Handler behaviour (ExUssd v0.1.8) View Source
This module provides callbacks to implement ExUssd handler.
Link to this section Summary
Callbacks
Examples
defmodule MyHomeHandler do
use ExUssd.Handler
def navigation do
%Navigation{
delimiter: ":",
routes: [
%Route{name: "BACK", previous: "0"},
%Route{name: "MORE", next: "98"},
%Route{name: "HOME", next: "00"},
],
}
end
def ussd_init(menu, _api_parameters) do
menu |> ExUssd.set(title: "Enter your pin number")
end
def ussd_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
def ussd_after_callback(%{state: _, payload: payload}) do
IO.inspect payload
end
endLink to this section Types
Specs
api_parameters() :: map()
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
Specs
Specs
callback(menu :: menu() | map(), api_parameters :: api_parameters()) :: menu()
Specs
callback( menu :: menu(), api_parameters :: api_parameters(), metadata :: metadata() ) :: menu()
Specs
init(menu :: menu(), api_parameters :: api_parameters()) :: menu()
Examples
defmodule MyHomeHandler do
use ExUssd.Handler
def navigation do
%Navigation{
delimiter: ":",
routes: [
%Route{name: "BACK", previous: "0"},
%Route{name: "MORE", next: "98"},
%Route{name: "HOME", next: "00"},
],
}
end
def ussd_init(menu, _api_parameters) do
menu |> ExUssd.set(title: "Enter your pin number")
end
def ussd_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
def ussd_after_callback(%{state: _, payload: payload}) do
IO.inspect payload
end
end
Specs
init(menu :: menu(), api_parameters :: api_parameters(), metadata :: map()) :: menu()