Offer more natural conversations than simple keywords:
Variants for yes/no questions, e.g.
yes | no; yes=("yes" | "sure" | "ok" | "fine") {$answer=true}; no=("no" | "forget it" | "no way") {$answer=false};
<grammar name="flight" timeout="4"> intro ((to|dest) from?)| (from (to|dest)?) polite?; intro = ("I want"|"I would like") ("to fly"|"a flight"); polite = "please"|"thanks"|"thank you"; to = ("going"|"flying")? "to" airport; (leave? departure)? {dest=airport}; dest = "arriving" (arrival atdest?)|(atdest arrival?) ("and" from)?; arrival = "on" date {arrival=date}; atdest = "at" airport {to=airport}; from = leave? (origin departure?)|(departure origin) ("and"? (dest|to))?; origin = "from" airport {from=airport}; departure = "on" date {departure=date}; leave = "departing" | "leaving"; date = <rule name="date"/>; airport = <rule name="airport"/>; </grammar>
Which permits the user to say things like:
Special built-in productions for numbers, dates, currency values, etc.
Application variables set by grammar rules are used to control subsequent behavior.
Bottom-up parsing of spoken response could be used in principle to apply the grammar rules for partial understanding