Current section

Files

Jump to
ex_ussd lib gateway ussd.ex
Raw

lib/gateway/ussd.ex

defmodule ExUssd.Ussd do
@typedoc "Menu Struct"
@type menu() :: map()
@typedoc """
A map value carrying api parameters, e.g
%{
sessionId: "session_01",
phoneNumber: "254722000000",
networkCode: "Safaricom",
serviceCode: "*544#",
text: "1"
}
"""
@type api_parameters() :: map()
@typedoc """
An internal routing map that takes text value, session id and service code, e.g.
%{text: "1", session_id: "session_01", service_code: "*544#"}
"""
@type internal_routing() :: %{
text: String.t(),
session_id: String.t(),
service_code: String.t()
}
@callback goto(
internal_routing: internal_routing(),
menu: menu(),
api_parameters: api_parameters()
) :: any()
@callback end_session(session_id: String.t()) :: any()
@callback get_menu(session_id: String.t()) :: any()
end