我是Alexa Skills的新手,但与此同时,我已经阅读了大量的信息和教程。
幸运的是,我目前能够在自己的服务器上创建自己的自定义技能(基于PHP),并且已经可以使用不同的意图,话语,插槽等工作。 现在,我希望Alexa读取PlainText中的项目列表(我通过JSON发送),但找不到任何信息。
我认为有两种选择(如果我错了,请纠正我):
发送包含一个项目的JSON答案-Alexa读取该项目-用户说“下一个”-Alexa向我的服务器请求下一个项目-我的服务器发送下一个JSON答案...依此类推。
发送包含数组中所有项目的JSON答案-Alexa依次读取每个项目。
我不确定哪种解决方案可行,如何解决。 因此,有人可以在这方面帮助我还是为我提供一些信息?
答案 0 :(得分:5)
两种方法都是可行的,哪种方法取决于您列出的内容。
使用AMAZON.NextIntent
如果单个列表项包含项名称和一些有关其的详细信息,那么一次性读取就不会带来良好的用户体验。在这种情况下,您可以使用AMAZON.NextIntent
处理用户“下一个” 的请求。
当用户要求提供列表时,请在响应中提供第一项,并跟踪响应index
中的项sessionAttributes
。您也可以设置STATE属性,以便在提供下一项之前,可以在AMAZON.NextIntent
处理程序中检查此状态。
"sessionAttributes": {
"index": 1,
"STATE": "LIST_ITEMS"
}
当用户说出“下一步” 时
检查state
是否为LIST_ITEMS
,并根据index
给出列表中的下一项。然后在sessionAttributes
中增加index
有关sessionAttributes和响应参数here的更多信息
现在,如果您的商品只是名字,那么您可以一个接一个地阅读它。
在这两种解决方案中,最好使用SSML
而不是仅仅使用PlainText
。 SSML
使您可以更好地控制语音回复的方式。
有关SSML
here