我正在尝试使用Alexa技能,而在AWS Lambda中执行后端代码时却陷入困境。 基本上,我有一个城市列表,如果用户对Alexa说列表中的一个城市,她应该做出回应,则该城市有效。 下面是我的城市列表,还有应该在列表中排序以找到匹配项的方法。

var data = [
    "San Mateo.",
    "San Francisco.",
    "Palo Alto.",
    "Redwood City.",
    "New York.",
    "Boston.",
    "Chicago.",
    "La Jolla.",
    "San Diego.",
    "San Carlos.",
    "San Bruno."
];

exports.handler = function(event, context, callback) {
    var alexa = Alexa.handler(event, context);
    alexa.APP_ID = APP_ID;
    alexa.registerHandlers(handlers);
    alexa.execute();
};

var handlers = {
     'LaunchRequest': function () {
          this.emit('GetNewFactIntent');
     },

     'GetNewFactIntent': function () {
          var cityName = this.event.request.intent.slots.value;
          var factArr = data;

          for(var i = 0; i < factArr.length; i++){
              if(cityName.equals(factArr[i].value)){
                 this.emit(":tell", LYFT_IS_AVALIABLE);
              }
          }

          this.emit(":tell", LYFT_NOT_AVALIABLE);
      }
}

#1楼 票数:0

因此,只是一个快速提示,您实际上并没有提出问题,只是粘贴了一些代码并说了您想要实现的目标,这就是为什么有人故意低估您的原因。

因此,假设您拥有的数组是您可以做的列表,那么您想使用的是点表示法:

var data = [
    "San Mateo.",
    "San Francisco.",
    "Palo Alto.",
    "Redwood City.",
    "New York.",
    "Boston.",
    "Chicago.",
    "La Jolla.",
    "San Diego.",
    "San Carlos.",
    "San Bruno."
];

exports.handler = function(event, context, callback) {
    var alexa = Alexa.handler(event, context);
    alexa.APP_ID = APP_ID;
    alexa.registerHandlers(handlers);
    alexa.execute();
};

var handlers = {
    'LaunchRequest': function () {
        this.emit('GetNewFactIntent');
    },

    'GetNewFactIntent': function () {
        var cityName = this.event.request.intent.slots.value;

        // this is like doing data['San Mateo.']
        if(typeof data[cityName] !== 'undefined'){

            this.emit(":tell", LYFT_IS_AVALIABLE);

        } else {
            this.emit(":tell", LYFT_NOT_AVALIABLE);
        }
    }
}

您还可以在Lambda中使用console.log(someVariable)并在CloudWatch Logs中检查结果-仅供参考您的城市是否需要'。' 在末尾?

  ask by rsancheti translate from so

未解决问题?本站智能推荐:

1回复

Amazon Echo-Alexa-ContextClient是Node.js中Lambda的空开发技能

我正在开发Amazon Echo的一项新技能,当我需要获取clientContext来验证应用程序中此Amazon Echo的Client ID是什么时,我遇到了一些问题。 有人知道它如何正常工作吗? 每次我在context.clientContext收到undefined值时。
1回复

为什么此Alexa自定义技能的Lambda在Node.js中不起作用(Alexa不讲话,超时)

我必须在Intent匹配中向我的mqtt代理发布MQTT消息,以下是无法正常工作的代码。 发生的是,当消息成功发送到mqtt代理时,Alexa 不讲话 (在cloudwatch中可以看到请求在8个奇数秒后超时)。 虽然这段代码可以正常工作, 这里有什么可错过的傻事吗?
1回复

具有Alexa技能的节点JS回调

我有一个包含请求调用的模块,它似乎没有被执行。 我从未在Lambda控制台或其他任何地方看到我的console.log中显示谷歌的身体。 我已经尝试过其他调用(比如我的应用程序服务器API的API帖子)并且看不到它出现在该服务器上。 似乎在请求回调完成之前进程正在关闭。 在
1回复

如何避免Alexa技能中的双槽输入

我正在以某种方式绑定意图技术。 在用户说“我想要有关职业的信息”之后,就可以调用这4个意图。 有4个意图可以是第一个被调用,也可以在另一个之后被调用。 关键是:他们中的四个人需要一个职业名称,例如“工程”,“政治”,“生物学”等等。 有什么方法可以使职业生涯初衷,然后再调用其他三
1回复

使用wcf.js和node.js与Alexa联系WCF服务不能正常工作?

使用Alexa-sdk node.js lambda aws服务wcf.js xml2js和VB.NET Web服务。 这个想法是将两个字符串发送到Web服务,并获取一个字符串,以换取Alexa随后将说出的字符串。 一切工作到最后,Alexa应该说出返回的字符串。 这是经过修改的H
2回复

自定义Alexa技能中NodeJS回调中的问题

我正在尝试创建自定义的Alexa技能,在其中调用API。 但是以某种方式我的代码表现得很奇怪。 情况1 在这种情况下,cloudwatch中不会显示任何错误,但是即使执行this.emit()函数,该控件也不会获取getJSON函数。 以下是cloudwatch日志:
1回复

Alexa:在技能回复中包含一张卡片

如果用户使用回波点,我想显示旅行信息。 例如,$ 41是在越南旅行的每日平均价格。我在TravelCosts函数中使用tellWithCard命令。 目前“我得到模板不可用或当前不支持”
1回复

Lambda函数未返回对Alexa技能的响应

我有一个用Nodejs编写的Alexa技能的Lambda函数。 它对服务进行HTTP调用,并将输出返回给Alexa Skill。 调用该技能时,将调用lambda,并进行HTTP调用。 但是,在返回HTTP响应之前,lambda返回,因此该技能无法得到答案。 以下是我的Lambda函