有没有一种已知的方式来处理用户在多行上写响应的问题? -最好在客户端处理这种情况吗?例如,检查用户是否仍在打字并且在两次响应之间有延迟,或者可以在Watson上以某种方式处理?
一个例子是:
启动:
What's Your Name?
用户:
My name is
Nour
这些是用户在2行上的两条独立消息。
答案 0 :(得分:1)
最好始终在一个请求中将完整的“话语”发送给Assistant,因为该处理在对Assistant的多个拆分调用中不起作用。否则,您将需要对上下文变量进行一些复杂的逻辑处理,或者向用户询问他们的名字(如果他们说出“我的名字是”而没有实际名字)。
通常,客户端UI将等待用户按下Enter键,然后再将语音发送给Assistant。因此,您可以确定他们已经输入了完整的语音。
但是,也许如果他们说“我的名字是”,您可能有一个检查名称的意图和一个提取名称的实体,以及一个对话框节点,如果找到该意图,则该对话框节点具有一个确保该实体为也发现了。这样,如果他们确实说“我的名字是”而没有名字,则机器人会询问他们的名字。
答案 1 :(得分:0)
DSeager的方法可能是您所举示例的正确方法。原因是在您的总体问题中,您有一个实体。
实体实体在哪里呢?例如:
两个意图。
在这里,您正在使用意图来理解答案,而无需实体。有些人会争论Intent-> Entity方法,但是根据您的解决方案,它通常无法很好地扩展,而仅是一个意图答案。
因此,您的用户现在输入以下内容:
How do I pay my
parking fine
实体解决方案在这里实际上并不起作用,因为您没有他们要支付的上下文。
一种方法。
1。发送“我该如何付款”到WA。假设您已经对系统进行了良好的培训,那么它应该以低置信度或不相关的方式返回。
2。在回应用户之前,请先查看是否已缓存其他语音以进行发送。如果有,则附加某种标记并发送。例如:
How do I pay my !! parking fine
这将返回正确的答案。
但是请稍等,如果他们这样做呢?
How do I pay my parking fine?
Where do I pay it?
两个都是有效的问题,但是第二个将失败,您不能将其附加到前一个。
在这种情况下,当答案显示时,将设置一个$anaphora
上下文变量。然后,如果您获得低置信度/不相关的响应,请尝试附加附加$anaphora
值来进行询问。
例如:
Q: How do I pay my parking fine?
A: <Answer> $anaphora = "parking fine"
Q: Where do I pay it?
A: <Irrelevant>
Q: parking fine !! Where do I pay it?
这两项都需要在应用程序层进行一些工作。