rasa对话系统踩坑记(五)
2018-12-05 本文已影响0人
colin_gao
上篇谈到增加了第三方闲聊的功能,避免了对话的时候遇到能识别意图之外的问题而回答“不好意思,我听不懂”这样的默认设置回答。最近在优化方面又增加了button的功能。效果如下:
button.jpg
这样做的原因是在优化识别名字、年龄、职业的时候总会有些问题,后面干脆做成button让用户选择和输入,意图和槽都很明确,这样用户体验方面会更好(最主要的是老板喜欢这个交互,我咋感觉越做越像平安医生的交互方式的,(⊙o⊙)…)。
界面方面是前端的工作,这里不做过多说明。这篇要说的是作为接口提供方的我们,如何在rasa-core这个框架上实现前端需要的数据。其实rasa-core提供了很多http-api的接口,现有的需求几乎全部实现,不需要你重复造轮子。
这里有button的详细用法,而我们做的改进是单选和多选的问题。在domain.yml文件中:
utter_ask_gender:
- text: "请选择患者性别:"
buttons:
- mulplity: "0"
intent: 'enter_data'
- title: "男"
prop: 'slots'
payload: '{"gender": "男"}'
- title: "女"
prop: 'slots'
payload: '{"gender": "女"}'
- title: "保密"
prop: 'intent'
payload: 'deny'
我们加了mulplity
这个字段来告诉前端是否是单选,以及前端需要自己拼接/intent{payload}
传递给接口,这样意图和槽就十分明确。
汗~~
说了一通,好像没什么技术含量。
后面还增加了/conversations/{id}/tracker/events
post的接口。业务中我们允许用户返回去修改按钮操作,但是只能允许最近的一个。所以在每次修改的时候需要调用一下新增的接口push一个undo操作,这样的话对话才不会乱。
emmm,有点像流水账,主要想讲的就是多看看rasa-core的http-api文档,里面提供了不少直接修改意图和槽的方法,在项目优化的时候有很大帮助。
这一系列的文章就写到这儿吧,后续要在知识图谱这块花时间,等有点收获再写点图谱的学习心得吧。原创文章,转载请说明出处