列出自定义 Alexa 技能

List in custom Alexa skills

我是 Alexa Skills 的新手,但同时我已经阅读了大量信息和教程。

幸运的是,我目前能够在自己的服务器上创建自己的自定义技能(基于 PHP),并且它已经可以使用不同的意图、话语、插槽等。 现在,我希望 Alexa 阅读 PlainText 中的项目列表(我通过 JSON 发送),但我找不到有关如何执行此操作的任何信息。

我假设有两个选项(如果我错了请纠正我):

  1. 发送一个包含一项的 JSON 答案 - Alexa 阅读了这项 - 用户说,例如"next" - Alexa 向我的服务器请求下一个项目 - 我的服务器发送下一个 JSON 答案......等等。

  2. 发送一个 JSON 答案,包括数组中的所有项目 - Alexa 一个接一个地读取每个项目。

我不确定哪种解决方案可行以及如何解决。 那么,任何人都可以帮助我解决这个问题或向我提供一些信息吗?

这两种方式都可以,选择哪一种取决于您发布的内容。

使用AMAZON.NextIntent

如果单个列表项包含项目名称和一些相关详细信息,那么一次性读取它的用户体验不会很好。在这种情况下,您可以使用 AMAZON.NextIntent 来处理用户 "next" 请求。

当用户请求列表时,在您的响应中给出第一个项目,并在响应 sessionAttributes 中跟踪该项目 index。您也可以设置一个 STATE 属性,这样您就可以在 AMAZON.NextIntent 处理程序中检查此状态,然后再提供下一个项目。

"sessionAttributes": {
    "index": 1,
    "STATE": "LIST_ITEMS"
  }

当用户说 "next" 检查 state 是否为 LIST_ITEMS 并根据 index 给出列表中的下一项。并在 sessionAttributes 中增加 index

有关 sessionAttributes 和响应参数的更多信息 here

现在,如果您的项目只是名称,那么您可以一个接一个地阅读它。

在这两种解决方案中,使用 SSML 而不仅仅是 PlainText 总是好的。 SSML 让您可以更好地控制您的回复的表达方式。

更多关于 SSML here