我正在尝试编写“琐事测验”技能,就像已经存在的许多其他技能一样,但我希望用户能够给出实际答案,而不是“a/b/c”或“1/2/3” . 所以对话会是这样的:
- Alexa:哪个行星离太阳最近:水星还是金星?
- 用户:
Mercury
- 亚历克萨:没错!你有一点。哪家公司生产克尔维特、凯迪拉克或雪佛兰?
- 用户:
Chevrolet
- 亚历克萨:没错!你有两点。乔治华盛顿的假牙是用什么做的?木头还是象牙?
...ETC...
由于每个问题都有自己的一组答案,我很高兴为每个问题创建一个自定义槽类型,所以我会有一个LIST_Q1_ANSWERS
槽["Mercury", "Venus"]
和一个LIST_Q2_ANSWERS
槽["Cadillac", "Chevrolet"]
,这一切都很好。但是,我不知道如何告诉我的技能答案应该只来自这个特定的自定义插槽。
我当然可以Intent
为每个问题创建一个特定的,所以我创建Q1Intent
,我开始一个对话框,我Elicit
我的Q1Intent
. 但是,这行不通,因为在我对他们填写所需LIST_Q1_ANSWERS
空位的回应中,我必须说“正确”并问下一个问题,这意味着我必须Elicit
...Q2Intent
而且这是不允许的;我必须先结束对话框,然后再开始一个新的。(所以谈话会变成“哪个星球......?”“水星”“正确!你想要下一个问题吗?”“是的”“好的。哪家公司......”这不好。)
我在这里可能过于复杂了。也许有一种更简单的方法来模拟我想要的语音界面。我当然可以在一个大的自定义插槽中定义所有不同的答案,然后只有一个AnswerIntent
,但是人们可以回答Chevrolet
行星问题,这很愚蠢。(我知道我必须处理问题的任何答案,而不仅仅是插槽中的答案,但我想让问题偏向于从插槽中选择答案;这就是插槽的用途。)
那么,我应该怎么做呢?对话不起作用,我不认为。