Собственно пусть будет:
rule:
default | condition | conditions;
question | answer;
user_input | none;
action | actions | none;
Грубо говоря есть некая сессия, у сессии есть контекст содержащий некий semantics meaning в виде key=value, в процессе диалога с каждой итерацией соответственно пополняем контекст в надежде достичь «терминирующего» правила.
Из хотелок: web-сервер, прямая работа с xml|json|etc, прямая работа с БД, возможность динамической модификации и дополнения правил и много, много чего еще.