I want to generate a tree-based menu using Java that will appear on a USSD browser. Each node may have children, ending with leaf nodes. I will also have to maintain state regarding each user who accesses this menu (like his current position on the menu) to facilitate navigation.
Any ideas on how I may achieve the tree generation and state management?
I assume that you get a message from the gateway such as:
(Session#, UserInput)
and you need to compute the next information to send to the user ?
I propose:
table CURRENTSTATE:
Session#
State
table STATES:
State
Title
table CHOICES:
State
Choice
Name
DoCode
NewState
Then when you get the message (Session#, UserInput):
- query CURRENTSTATE using the Session# to determine what state the user is in.
- query CHOICES using the State and Choice=UserInput to determine the new state (and DoCode) based on user input.
- Based on DoCode, you can do some processing.
- update CURRENTSTATE to reflect the new state.
- query STATES to get the Title (e.g. "Please choose a color").
- query CHOICES to get the possible choices from the new state (e.g. (1, "Blue"), (2, "Red"), etc.)
- build the message (concat Title + choices)
- return message to user.
Is that a reasonable way to solve the problem ?
HI,
am also currently developing a USSD menu based application. Unforturnately there are scarce resources about USSD applications on the internet and i think it's because USSD unlike SMS is not yet standardized. so every telecom has their own ussd implementation.
The project am working on requires a USSD gateway(run by the telecom) and my webserver(apache) which runs my app.
my app written in php communicates the telecoms USSD gateway via xml fortunately for me. so i get mobile user input from the USSD gatway via xml and i also send xml pages back to the USSD server which inturn display the reply on the use's mobile phone.
that's all i know.
Have a look at an implementation of this problem: Vumi.org
Source code viewable at https://github.com/praekelt/vumi