如何在Alexa中始终打开会话

时间:2016-09-19 09:34:55

标签: amazon-web-services alexa alexa-skills-kit alexa-voice-service

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

2 个答案:

答案 0 :(得分:2)

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

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

现在,如果你的问题确实是连续性问题,那就不同了。 Alexa提供其服务会话变量的一部分。那些只有一生的会话。因此,再次,设计的一部分是不要坚持那些过去的会议。

但一般情况下,我建议您不要使用它们。 Alexa一直在下降会议。坚持你自己的变量要好得多。然后你可以控制他们的一生。使用传入的UserID作为键,并将它们存储在内存中(用于非Lambda技能)和/或DynamoDB(用于Lambda技能或长期持久性)。

答案 1 :(得分:1)

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

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

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

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