上篇談到增加了第三方閑聊的功能,避免了對(duì)話的時(shí)候遇到能識(shí)別意圖之外的問(wèn)題而回答“不好意思,我聽(tīng)不懂”這樣的默認(rèn)設(shè)置回答。最近在優(yōu)化方面又增加了button的功能。效果如下:

這樣做的原因是在優(yōu)化識(shí)別名字、年齡、職業(yè)的時(shí)候總會(huì)有些問(wèn)題,后面干脆做成button讓用戶選擇和輸入,意圖和槽都很明確,這樣用戶體驗(yàn)方面會(huì)更好(最主要的是老板喜歡這個(gè)交互,我咋感覺(jué)越做越像平安醫(yī)生的交互方式的,(⊙o⊙)…)。
界面方面是前端的工作,這里不做過(guò)多說(shuō)明。這篇要說(shuō)的是作為接口提供方的我們,如何在rasa-core這個(gè)框架上實(shí)現(xiàn)前端需要的數(shù)據(jù)。其實(shí)rasa-core提供了很多http-api的接口,現(xiàn)有的需求幾乎全部實(shí)現(xiàn),不需要你重復(fù)造輪子。
這里有button的詳細(xì)用法,而我們做的改進(jìn)是單選和多選的問(wèn)題。在domain.yml文件中:
utter_ask_gender:
- text: "請(qǐng)選擇患者性別:"
buttons:
- mulplity: "0"
intent: 'enter_data'
- title: "男"
prop: 'slots'
payload: '{"gender": "男"}'
- title: "女"
prop: 'slots'
payload: '{"gender": "女"}'
- title: "保密"
prop: 'intent'
payload: 'deny'
我們加了mulplity這個(gè)字段來(lái)告訴前端是否是單選,以及前端需要自己拼接/intent{payload}傳遞給接口,這樣意圖和槽就十分明確。
汗~~
說(shuō)了一通,好像沒(méi)什么技術(shù)含量。
后面還增加了/conversations/{id}/tracker/eventspost的接口。業(yè)務(wù)中我們?cè)试S用戶返回去修改按鈕操作,但是只能允許最近的一個(gè)。所以在每次修改的時(shí)候需要調(diào)用一下新增的接口push一個(gè)undo操作,這樣的話對(duì)話才不會(huì)亂。
emmm,有點(diǎn)像流水賬,主要想講的就是多看看rasa-core的http-api文檔,里面提供了不少直接修改意圖和槽的方法,在項(xiàng)目?jī)?yōu)化的時(shí)候有很大幫助。
這一系列的文章就寫到這兒吧,后續(xù)要在知識(shí)圖譜這塊花時(shí)間,等有點(diǎn)收獲再寫點(diǎn)圖譜的學(xué)習(xí)心得吧。原創(chuàng)文章,轉(zhuǎn)載請(qǐng)說(shuō)明出處