I need to build a dialog system similar to IVR used in call centers. My system is not phone-based, but the dialog is similar. Something like
System: "Main menu: Enter [1] for menu1, [2] for menu2"
User: [1]
System: "menu1: enter [1] for apples, [2] for oranges, [3] for main menu"
User: [7]
System: "What??"
System: "menu1: enter [1] for apples, [2] for oranges, [3] for main menu"
User: [2]
... and so on
I want to have a nice declarative description of all the possible options and a nice way to run through that tree, guided by user input.
Already considered: ANTLR-generated lexer/parser (seems to be an overkill), SCXML-based state machine (seems like only transitions can be declared, the rest needs to be coded)