你有很多问题,所以让我们来看看每个问题。
input.params.original
存在吗?
简而言之,是的。您可以查看请求 Intent 对象的文档,您会看到有intent.params.*name*.original
. 您的问题似乎表明这也可以。
intent.params.*name*.resolved
考虑到类型别名后,还有一个包含值。
我在 Dialogflow 论坛上发现了一些变量...
这些仅在您使用 Dialogflow 时才有效,并且在您查看 Action Builder 时没有任何意义。
如何搭配
您没有显示 . 的可能值session.params.antwort
或设置方式antwort
。但听起来你在处理程序中设置它是有道理的。因此,您可以做的一件事是设置antwort
城市名称(或任何完整的单词答案)并设置letter
为具有有效回复的字母。然后对两者进行测试original
以查看是否匹配。
但是,老实说,这开始变得有些混乱。
您也没有说明 Intent 是如何设置的,或者您是否使用实体类型来捕获答案。然而,处理这个问题的一个好方法是创建一个可以表示答案的类型,并使用运行时类型覆盖来设置该值的可能值和别名。然后,您可以准确控制将用于比较的有效值是什么。
例如,如果您创建一个名为“Answer”的类型,那么在您提出问题时,您可以为此设置可能的值,例如
conv.session.typeOverrides = [{
name: 'Answer',
mode: 'TYPE_REPLACE',
synonym: {
entries: [
{
name: 'A',
synonyms: ['A', 'Rome']
},
{
name: 'B',
synonyms: ['B', 'Berlin']
},
{
name: 'C',
synonyms: ['C', 'Paris']
}
]
}
}];
如果你有一个 Intent 的参数类型Answer
为 name answer
,那么你可以测试是否intent.parameter.answer.resolved
包含预期的字母。
添加可视化界面
如果您还决定添加对视觉选择响应(例如列表)的支持,则使用运行时类型覆盖特别有用。视觉响应建立在运行时类型覆盖之上,以添加用户可以在适当设备上选择的视觉别名。但是,当您收到回复时,将被视为他们说出了条目名称。