如何保持会话始终在Alexa中打开

问题描述:

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

+1

这是一个措辞非常模糊的问题。你能再详述一下吗? –

+0

嗨,您好,我正在开发一项定制技能,其中alexa会向许多客户提问并且客户会回答这个问题,echo会根据他的回答收集输入并提供输出给客户。所以我想保持会话活着总是我正在开发应用程序使用Java和托管通过aws lambda – Kamlesh

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

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


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

一般来说,我不建议你使用它们。 Alexa一直在下载会话。坚持你自己的变数对你来说更好。然后你可以控制他们的一生。使用传入的用户ID作为密钥,并将它们存储在内存中(用于非Lambda技能)和/或DynamoDB(用于Lambda技能或长期持久性)。

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

每当会话更新时,将其保存到数据库(如DynamoDB)中。

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

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