无法从intentrequest获取ID

时间:2017-10-15 02:27:50

标签: node.js alexa alexa-skills-kit alexa-skill alexa-slot

提前感谢您的帮助!我有一个意图和一个自定义插槽值用于此意图,插槽值被称为"事件"这是我和#34; LIST_OF_EVENTS"的价值。列表。

在这个列表中,我有许多插槽选项,但更重要的是,我为每个插槽值都有很多同义词。为了对待它们,我想使用我为每个插槽分配的ID。我把它们设置为0-11。现在获取此ID很重要,因为基于此ID定义了我回馈给用户的JSON文件的哪个部分。

这里的问题是我无法弄清楚如何在我的代码中获取此ID,我已经做了大量研究并查看了大量文档但我仍然无法获得ID。

我试过了:

[MOUSEHOOKSTRUCT structure][2]

以及许多其他事情。

当我查看通过测试平台发送的意图请求亚马逊提供我似乎无法在我的意图请求中找到此解决方案对象。没有这样的东西。但是,在他们的文档中,在多个页面上,它显示并引用此对象。 Here is the link to the documentation

我对亚马逊创造的要求是

var id = alexa.event.request.intent.slots.event.resolutions.resolutionsPerAuthority[].values[].value.id;

如果有人对如何解决这个问题有任何想法,请告诉我,谢谢!

1 个答案:

答案 0 :(得分:0)

发送到lambda的插槽数据将是一个字符串,例如"梦想飞行"如您发布的请求中所示。

将lambda代码与您的LIST_OF_EVENTS值进行比较,以确定发送了哪一个。这通常通过迭代包含期望值的字符串数组来完成,但也可以使用带有每个可能值的大小写的switch语句来完成。请记住处理不匹配的值,因为有时您在插槽值中获得的不是您所期望的。

然后,您可以使用该索引选择您的回复。

例如:

var slot = request.intent.slot.event.value;
var index;
for(index=0; index<NUM_SLOT_VALUES; index++) {
    if(knownValues[i] == slot) {
        break;
    }
}
// index is now the index of the matching value, or NUM_SLOT_VALUES if not found

您可以在线找到有关在javascript中执行循环的大量信息,例如link