【问题标题】:Alexa Skills use slotValue as array nameAlexa Skills 使用 slotValue 作为数组名称
【发布时间】:2019-03-01 17:23:54
【问题描述】:
if (slotValues.listableThings.ERstatus === 'ER_SUCCESS_MATCH') {
  switch (slotValues.listableThings.resolved) {
    case 'CLASSES':
      {
        lookupArray = sessionAttributes.CLASSES;
      };
      break;
   case 'TONES':
      {
         lookupArray = sessionAttributes.TONES;
      };
      break;
    default:
      break;
  }

有没有办法做到这一点,而不是使用开关来设置lookupArray = sessionAttributes.(slotValues.listableThings.resolved)

我可以在 javascript 上找到的所有内容都说要使用警报,但在 node.js 中没有为 alexa 技能定义警报。

【问题讨论】:

  • 我希望能够使用 slotValues.listableThings.resolved 中的值从 sessionAttributes 中获取我想要使用的数组

标签: javascript node.js alexa alexa-skill alexa-slot


【解决方案1】:

您可以迭代思考元素并使用键分配

// Emulating 
var slotValues = {
  listableThings: {
    resolved: "CLASSES"
  }
};

var sessionAttributes = {
  CLASSES: "THESE ARE CLASSES",
  TONES: "THESE ARE TONES"
}

let lookupArray = sessionAttributes[slotValues.listableThings.resolved];

console.log(lookupArray);

【讨论】:

  • 所以我玩了一些。我可以在你有密钥的括号中设置带有 slotValues 的数组。但是我认为失败的原因是因为我没有确保它首先是一个有效的选项。此外,它让我设置一个标志以供以后使用。谢谢。
  • @JimDziak 不需要使用 for 循环。您可以像这样简单地分配:lookupArray = sessionAttributes[slotValues.listableThings.resolved];
  • @adiga 我想我之前已经尝试过,如果 sessionAttributes[slotVlaues.listableThings.resolved] 不存在就会出错。这种方法也解决了这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-05
  • 2017-05-29
  • 2020-05-05
  • 2016-04-01
相关资源
最近更新 更多