如何在Alexa Skills中使用特定于会话的变量?

L.加油

我正在使用他们的SpaceGeek模板为Alexa开发一项事实技能。模板本身非常简单,但是我正在尝试通过确保使用的事实在同一会话中不会再次出现来改进它。因此,我在使用元素后将其删除。但是,现在出现一个问题,即在会话中删除的那些元素甚至不会在以后的会话中出现。因此,我假设全局变量停留在后端,因此创建了一个如下所示的复制数组。但这仍然行不通。因此,在使用完所有事实之后,我将始终得到“这就是我们现在拥有的所有事实”。即使我开始一个新的会话。任何帮助将不胜感激。

    function handleNewFactRequest(response) {
       var COPY_FACTS= SOME_FACTS.splice(0);
       if(COPY_FACTS.length>0){
           var factIndex = Math.floor(Math.random() * COPY_FACTS.length);
           var fact = COPY_FACTS[factIndex];

           // Create speech output
           var speechOutput = "Here's your random fact: " + fact + " would you like more?";
           var repromptOutput = "would you like more random facts?";
           COPY_FACTS.splice(factIndex, 1);
           response.ask(speechOutput, repromptOutput);
      }else{
           var speechOutput = "That's all the facts we have for now.";
           response.tell(speechOutput);
      }
    }
山姆·汉利

解决此问题的正确方法是将数组存储为会话变量,而不是全局对象。History Buff示例技能是一个详细说明如何执行此操作的示例,但通常来说,过程如下:

处理用户的第一个请求时,请创建一个对象,该对象包含要在整个会话中维护的所有变量,并将其分配给session.attributes您想将数组存储为该对象的属性。

然后,在将来的事件处理程序中,您将能够访问那些存储的特定于会话的变量(即数组)作为该session.attributes对象的属性

在链接的示例中,在随后的意图处理程序中,它们包括摘要sessionAttributes = session.attributes以提供访问这些变量的更方便的句柄。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Micronaut中使用特定于环境的变量?

如何使用Alexa API增加Alexa搜索结果

如何在ASP vNext中使用会话

如何在Application_AuthenticateRequest中保留所需的特定于会话的值?

如何在Action <IBuilder <T >>中使用泛型来处理特定于类型的配置?

如何在REST API中使用会话

如何在NodeJ中使用会话变量?

如何重用特定于环境的变量?

如何在我的R函数中使用特定于平台的软件包

如何让用户使用Alexa设置变量?

如何在YAML文件中将AWS Lambda触发器设置为Alexa Skills

如何在C#中使用特定于派生类的枚举实现接口?

如何在Alexa中使用带有意图确认的意图链接?

您如何在Alexa Skills中创建sessionAttribute?

如何在Alexa开发人员控制台上使用节点模块?

您如何在Wordpress中使用会话变量?

如何在jbpm6中使用用户任务功能创建自定义的特定于域的进程?

如何在Worklight中创建特定于用户的会话

如何通过ASPX页面在URL中使用会话变量

如何在SQL查询中使用会话变量?

如何在Getherbert [Laravel]中使用会话?

如何在会话中使用if语句

如何在angularjs中使用会话

如何添加对在Eclipse Che中使用Xtext开发的特定于域的语言的支持?

如何在 Silex (Symfony) 中使用会话

如何在 Alexa Skill 中使用 Java 获取亚马逊用户电子邮件

如何在 AndroidStudio 中使用 php 会话

如何在 sbt shell 会话开始时显示特定于项目的消息?

如何在 PHP 中使用数据会话?