得到' undefined'插槽值(Alexa使用nodejs lambda)

时间:2017-12-14 16:13:27

标签: node.js alexa-skills-kit

我正在向该函数传递两个插槽。我发送以下xml。

这是请求XML。 .....

  "requestId": "amzn1.echo-api.request.[unique-value-here]",
    "intent": {
      "slots": {
        "chapter": "4",
        "shloka": "4"
      },
.....

然而,当代码运行时,即使他们在那里,我也没有为插槽定义。 这是代码

var intent = this.event.request.intent;
    console.log('slots are -->');
    console.log(intent.slots);
    var shloka = this.event.request.intent.slots.shloka.value;
    var chapter = this.event.request.intent.slots.chapter.value;
    console.log('chapter:' + chapter + ' shloka:' + shloka);

以下是控制台日志      ...插槽是 - >      ...... {章:' 4',shloka:' 4' }      ...章:undefined shloka:undefined

我无法弄清楚如何解决这个问题。

1 个答案:

答案 0 :(得分:1)

首先,您不必使用value来访问shlokachapter的值。其次,为什么要使用this.event.request.intent两次访问它,如果你在变量内部有intent(第1行 - var intent = this.event.request.intent;),在这种情况下你可以写:

// Use this
var shloka = intent.slots.shloka;
var chapter = intent.slots.chapter;

// Instead of this
var shloka = this.event.request.intent.slots.shloka.value;
var chapter = this.event.request.intent.slots.chapter.value;

这应该按预期工作:

var intent = this.event.request.intent;
console.log('slots are -->');
console.log(intent.slots);
var shloka = intent.slots.shloka;
var chapter = intent.slots.chapter;
console.log('chapter:' + chapter + ' shloka:' + shloka);