最近我在gitee上开源了一个简单的ivr项目,https://gitee.com/wenhuawang/ivr.git
这个项目可以供ivr、DM爱好者学习IVR、DM的基本原理。
DM一般分知识型对话和任务性对话等,任务型对话一般带着任务需要填槽,所以他一般可以用状态机进行描述,
适合流程话定制开发。
1)DM的输入
一般的拖拉式的DM产生器都是基于状态机,利用自己的DM编辑器产生一套标准的文件。
有标准的表述语言如SCXML。
为了简便,我采用了自己的一套Json语法作为输入。
2)DM 的发布
当我们在DM编辑器编译之后,我们选择发布到我们的线上环境,这时可以调用相应的接口,
把文件描述传给dm 服务。
DM服务加载文件,产生对应的状态机。
3)DM的运行
当机器人发布以后,我们就可以测试调用对应机器人的会话是否正常。
一般输入类似与电话呼入、或者文本的会话开始等事件,这些事件驱动机器人的状态流转,
然后我们根据机器人的配置,给出对应事件的回复,并且进行状态的流转。
这里一般会设计到NLU和NLG两个概念。
NLU就是理解客户的输入意图,作为节点跳转的条件。
NLG就是理解了客户的意图之后,根据意图跳转到正确的节点做出相应的回复。
这里为了简单,我们没有支持自定义意图,以及NLU的填槽等概念。
这个的意图只是简单支持按键输入,直接做字符串的比较。
NLG部分只是简单的读取配置,没有带填槽变量等的支持。
总之,本仓库仅供入门者学习使用,可以作为ivr画布使用,作为DM还有比较长的距离。
后续可以支持redis等用于支持无状态请求等,便于大规模部署。