我需要建立一个类似于呼叫中心的IVR的对话系统。我的系统不是基于电话的,但对话框是相似的.有点像
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我希望有一个很好的声明性描述所有可能的选项和一个很好的方式运行在该树,以用户输入为指导。
已经考虑过了:ANTLR生成的lexer/解析器(似乎有点过分),基于SCXML的状态机(似乎只有转换可以声明,其余的需要编码)。
发布于 2010-06-10 09:25:22
我以前从未见过SCXML,但在对项目页面和示例进行了短暂的浏览之后,在我看来,它已经具备了您所需要的一切。您的IVR可以建模为状态图。进入状态要么显示下一个选项,要么启动一个活动(而显示下一个菜单级别也是一个活动)。
实现“错误的用户输入”状态可能会很棘手(或者SCXML已经为这一常见任务提供了解决方案)。
您可以发明一个小的DSL来简化对此状态的编辑。在此DSL中编写的文档将被转换为SCXML文件,以驱动IVR系统。
(感谢SCXML指针!)
https://stackoverflow.com/questions/3012985
复制相似问题