我从lambda内部的API调用中获得了行的列表。我希望我的alexa技能意图是一次读取一行,然后在确认后才读取下一行。
我该如何实现?
谢谢! Anshuman
答案 0 :(得分:2)
您可以使用sessionAttributes
逐行读取。当您的后端收到初始请求时,请查询外部服务并返回第一行,并将行数组保留在sessionAttributes
中。您还可以设置STATE
属性,以便在提供下一行之前,可以在state
或其他确认处理程序中检查此AMAZON.YesIntent
。此STATE
属性将帮助您验证该确认是否真正用于读取下一行。
例如:
"sessionAttributes": {
"row": ["This is the first row","This is the second row", .. ],
"index": 1,
"STATE": "READING_ROWS"
}
由于您希望用户在阅读第二行之前进行确认,因此您还应该在响应后附加一些确认消息。
例如:“这是第一行。您想听更多吗?”
使用AMAZON.YesIntent和AMAZON.NoIntent
当用户说出“ next” 时,检查state
是否为READING_ROWS
,并根据index
给出列表中的下一项。然后在sessionAttributes
中增加index
。
类似地,对于AMAZON.NoIntent
,当用户拒绝时提供正确的响应。
有关sessionAttributes和响应参数here
的更多信息