无法从intentrequest获取ID

无法从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

+0

非常感谢您的帮助,我一定会查看该链接。谢谢您的帮助! –