我正在编写一个Alexa技能并希望从用户处获取一些信息。
以下对话例如:
Alexa: What month were you born at?
User: April
Alexa: Good. And what was your favorite movie?
User: April
鉴于以下话语:
GetMonthIntent {month}
GetMovieIntent {movie}
用户第二次回答April
后,可能会触发GetMonthIntent
。
要求用户使用以下话语指定哪条信息:
GetMonthIntent Month {month}
GetMovieIntent Movie {movie}
根据当前情况,让Alexa等待单个学期答案的正确方法是什么?
答案 0 :(得分:1)
与此处的其他答案一样,你应该看看这里最新的Node.JS库,它处理开箱即用的状态: https://github.com/alexa/alexa-skills-kit-sdk-for-nodejs#making-skill-state-management-simpler
您可以定义:
如果在错误的状态下调用GetMovieIntent或GetMonthIntent(等)意图以外的任何内容,则返回正确的错误响应。
您必须在服务器端进行数据验证,以确保"月"是有效的,除非你有一个预期值列表,否则电影甚至更难验证。也就是说,如果你想要解析它们而不是重复使用它们。
答案 1 :(得分:0)
不幸的是,没有解决方案。无法指定'上下文'其中应该解释用户回复,所以你必须告诉用户"你最喜欢的电影是什么?请说“我最喜欢的电影是'然后是电影的名称"。
以下是我认为可以解决您问题的两个ASK功能请求:
https://forums.developer.amazon.com/content/idea/41062/creating-something-to-help-with-more-structured-qu.html
https://forums.developer.amazon.com/content/idea/55525/allow-a-response-to-specify-a-set-of-expected-inte.html
就我个人而言,我认为这是相当重要的,所以我投了这些,但他们并不接近顶端。
答案 2 :(得分:0)
当我创造了“谁在第一次?棒球比赛”技能时,我遇到了同样的问题。我通过以下方式解决了这个问题:
这应该会给你如何处理重复答案的想法。会话非常容易使用。其他选项包括将userId和status写入DynamoDB等数据库,但我发现会话在大多数情况下都有效。