无法从intentrequest获取ID
问题描述:
感谢您的帮助!我有这个意图的意图和自定义插槽值,插槽值称为“事件”,这是我的“LIST_OF_EVENTS”列表中的值。无法从intentrequest获取ID
在此列表中,我有很多插槽选项,但更重要的是,每个插槽值都有很多同义词。为了对待他们,我想使用我分配给每个插槽的ID。我将它们设置为0-11。现在得到这个ID很重要,因为基于这个id定义了我给用户的JSON文件的哪一部分。
这里的问题是,我无法弄清楚如何在我的代码中得到这个ID,我做了大量的研究并查看了很多文档,但仍然无法获得ID。
我曾尝试:
var id = alexa.event.request.intent.slots.event.resolutions.resolutionsPerAuthority[].values[].value.id;
以及许多其他的事情。
当我看到通过测试平台amazon提供的意图请求发送时,我似乎无法在我的意图请求中找到此决议对象。没有这样的事情。但是,在他们的文档中,在多个页面上,它显示并引用了此对象。 Here is the link to the documentation。
我,亚马逊创建请求
{
"session": {
"new": false,
"sessionId": "SessionId.4bce2f23-d11e-4022-b6d1-b91aec14b9d6",
"application": {
"applicationId": "amzn1.ask.skill.e0cc33bb-4ad7-4bbb-91e8-a0eab852a49c"
},
"attributes": {},
"user": {
"userId": "amzn1.ask.account.AF53KNANELPR77LPYI7GAED6MM2EIVTFZZRJQ3FGLKW7HMRWLEEET6T7MEY5FLD67JO4OZNTTRFB2XDH6J2X2GGHZKOM4UDW6WKP6GLCYW3OI7WCHW2HTEYNQQWUF6TARFBX64WUIAAUL6RFCZ663P4RKGJ43PEXQ43G4BSA3KWSKKRUPCXJWFLWUSDAHD6LMAQKXCPREDMKHQI"
}
},
"request": {
"type": "IntentRequest",
"requestId": "EdwRequestId.0171880d-8006-47d9-b17b-52e1f431f5f4",
"intent": {
"name": "WhenIsBLANK",
"slots": {
"event": {
"name": "event",
"value": "dream to fly"
}
}
},
"locale": "en-US",
"timestamp": "2017-10-14T20:24:43Z"
},
"context": {
"AudioPlayer": {
"playerActivity": "IDLE"
},
"System": {
"application": {
"applicationId": "amzn1.ask.skill.e0cc33bb-4ad7-4bbb-91e8-a0eab852a49c"
},
"user": {
"userId": "amzn1.ask.account.AF53KNANELPR77LPYI7GAED6MM2EIVTFZZRJQ3FGLKW7HMRWLEEET6T7MEY5FLD67JO4OZNTTRFB2XDH6J2X2GGHZKOM4UDW6WKP6GLCYW3OI7WCHW2HTEYNQQWUF6TARFBX64WUIAAUL6RFCZ663P4RKGJ43PEXQ43G4BSA3KWSKKRUPCXJWFLWUSDAHD6LMAQKXCPREDMKHQI"
},
"device": {
"supportedInterfaces": {}
}
}
},
"version": "1.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。
非常感谢您的帮助,我一定会查看该链接。谢谢您的帮助! –