0

嗨,如何在 Alexa 应用程序中保持会话始终打开。我为我的客户开发了自定义技能。在最后一次响应技能会话结束后。我不想要这个。我想始终保持会话打开。所以当用户说打开流意图时,它应该从那里开始。

4

2 回答 2

2

你不能做这个。Alexa 的模式是呼叫和响应。用户与 Alexa 交谈,然后 Alexa 回复。您可以让会话保持打开状态,但如果用户在大约 8 秒内没有响应,则会话将关闭。(如果你使用重新提示,你可以再延长 8 秒。)

这是他们安全模型的一部分。他们不希望人们创造技能,基本上,监控房间里发生的一切。当 Alexa 收听时,它所说的一切都会流式传输到互联网上。如果有人破坏了他们的协议,这可以用于间谍活动。(或者在用户或亚马逊的服务器上运行带宽。)


现在,如果您的问题确实是连续性问题,那就不同了。Alexa 作为其服务会话变量的一部分提供。那些只有会话的生命周期。所以,再一次,不坚持过去的会话是设计的一部分。

不过,总的来说,我不建议您使用它们。Alexa 总是放弃会话。坚持你自己的变量对你来说要好得多。然后你就可以控制他们的一生。使用传入的 UserID 作为键,并将它们存储在内存中(对于非 Lambda 技能)和/或 DynamoDB(对于 Lambda 技能或长期持久性)。

于 2016-09-20T21:30:13.200 回答
1

您可以实现所需的用户体验,但您需要以不同的方式构建它,因为您必须假设会话可能随时结束,会话数据被丢弃。

每当更新会话时,将其持久保存到数据库,例如 DynamoDB。

通过与每个请求一起发送并且在会话之间不会更改的 userId 识别每个会话。

创建新会话时,请检查数据库中是否有针对 userId 保存的任何会话。如果找到,则从数据库中填充新会话。否则,创建一个新会话。

于 2016-09-28T01:48:38.280 回答