首页 > 解决方案 > Alexa 技能 - 如何逐行读取结果集

问题描述

我从我的 lambda 中的 API 调用中获取行列表。我希望我的 Alexa 技能意图一次读取一行,并在确认后才读取下一行。

我怎样才能做到这一点?

谢谢!安舒曼

标签: aws-lambdaalexaalexa-skills-kitalexa-voice-service

解决方案


您可以使用sessionAttributes逐行读取。当您的后端收到初始请求时,查询外部服务并返回第一行并将行数组保留在 sessionAttributes. 您也可以设置一个STATE属性,以便您可以在给出下一行之前签stateAMAZON.YesIntent此属性或其他确认处理程序。此STATE属性将帮助您验证确认是否实际上是用于读取下一行。

前任:

"sessionAttributes": {
    "row": ["This is the first row","This is the second row", ..  ],
    "index": 1,
    "STATE": "READING_ROWS"
  }

由于您希望用户在阅读第二行之前进行确认,因此您还应该在响应中附加一些确认消息。

例如:“这是第一排。你想听更多吗?”

使用 AMAZON.YesIntent 和 AMAZON.NoIntent

当用户说“下一个”时,检查是否stateREADING_ROWS并且基于index从您的列表中给出下一个项目。并且在sessionAttributes增量中index

同样,AMAZON.NoIntent当用户拒绝时提供适当的响应。

更多关于 sessionAttributes 和 Response 参数的信息


推荐阅读