对话逻辑控制问题
天降‖之物 发布于2018-03 浏览:1700 回复:3
0
收藏
最近在设计意图时有一个疑问想请教一下:如何控制意图的合理切换
例如:
        我在一个场景下有两个对话单元(A、B);
        A单元为用户的提问处理,如:用户可以说“找附近的酒店”,对话样本为“找附近的酒店”,资源API返回了多个酒店信息
        B单元为用户的选择处理,如:用户需要自己选择哪一个酒店,用户可以说“第一条”,对话样本为“第一条”,资源API返回了选择的地点位置
 
        正常逻辑是没有什么问题,但是如果用户不按常理说话,直接先说“第一条”,那么直接回进入B单元,导致资源API处理混乱发生问题;
        所以想请问一下有什么办法去防止此类的问题(最好不要动资源服务器),当用户不按套路说话时,不识别或者提示正确的说法
 
求指教。。。
收藏
点赞
0
个赞
共3条回复 最后由Andlyf回复于2018-03
#4Andlyf回复于2018-03

既然不可控的逻辑在请求之后,那么可以尝试在请求之前设定逻辑。

1、我们假设有一个逻辑控制单元,存在于请求之前,且可以受到请求后的参数修改。

2、逻辑控制单元存在于终端。

3、一切的用户行为必须最先经过逻辑控制单元,你这里是一个先后顺序的问题,那么我们假设逻辑单元里面有个匹配值,如果匹配不成功就忽略。匹配成功就通过。然后最后在进行请求。

4、如果一个请求成功,在返回的时候,给逻辑单元赋值一下即可,这个赋值说明的是对下个可能的请求标记之前进行过的何种请求。

5、把逻辑单元设定在终端是为了不受服务端影响且最先接收用户的可能的行为。

换句话,建个箱子,接收用户信息,进行合理分析后调用最适合的请求。

0
#3天降‖之物回复于2018-03
#2 Andlyf回复
因为不知道具体实现,这里就说下我自己的看法 1、A单元和B单元建立一种协作关系 2、通过这种协作关系完成:B单元执行的时候必须是A单元执行过了 3、所以,在B单元执行的时候,假设判断A单元之前没有动作,就不识别或者提示正确的说法 。 4、B单元执行完毕后清除本次的协作记录 类似于创建一个公共变量,A单元执行完后对变量进行修改,B单元执行前检查这个公共变量是否修改过,B单元执行完毕后,对公共变量清零。
展开

没错,我这样考虑过,问题是如何建立这种协作关系?

UNIT并没有支持这种做法。

目前我对于UNIT的理解是:UNIT的对话机制是通过对话样本与对话单元建立关联,只要UNIT识别出对话样本的内容就会无条件的跳转至关联的对话单元

0
#2Andlyf回复于2018-03

因为不知道具体实现,这里就说下我自己的看法

1、A单元和B单元建立一种协作关系

2、通过这种协作关系完成:B单元执行的时候必须是A单元执行过了

3、所以,在B单元执行的时候,假设判断A单元之前没有动作,就不识别或者提示正确的说法 。

4、B单元执行完毕后清除本次的协作记录

类似于创建一个公共变量,A单元执行完后对变量进行修改,B单元执行前检查这个公共变量是否修改过,B单元执行完毕后,对公共变量清零。

0
TOP
切换版块