【问题标题】:How to keep session always open in Alexa如何在 Alexa 中保持会话始终打开
【发布时间】:2016-09-28 09:48:38
【问题描述】:

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

【问题讨论】:

  • 这是一个措辞非常模糊的问题。你能详细说明一下吗?
  • 嗨,我正在开发一种自定义技能,其中 alexa 会向许多客户提问,客户会回答答案,echo 接受输入并根据客户的回答向客户提供输出。所以我想让会话始终保持活跃我正在使用 java 开发应用程序并通过 aws lambda 托管

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


【解决方案1】:

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

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


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

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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-12
      • 1970-01-01
      • 2018-02-22
      • 1970-01-01
      相关资源
      最近更新 更多