我的技能NoteMyDetail有一个单一的意图,它具有三个必需的插槽:name
、age
、gender
。我有各种说法,例如“记下我的详细信息”、“记下我的名字为 {name}”等。因此,如果我说“记下我的详细信息”,它会一一询问所有值,如果我说“记下我的名字为 Joe “它只要求年龄和性别。
现在我面临的问题是如何为这些插槽添加验证,因为当 Alexa 询问:“你的年龄是多少”并且我回答我的名字是 Joe 或任何乱码时,它会发送一个“?” 在槽值中。
如何确保该值仅是年龄的数字?
编辑:所以我使用了链接的代码:https ://gist.github.com/stormbytes/7ee3a05aa03c0ada0621dde746f2a6f9#file-index-js-L31
我有所需的插槽,因此它要求提供所有值,然后检查中断流程的值,因此我将插槽值设为非强制性并检查该值是否已定义/未定义。我在模拟器中收到以下响应,但它显示“请求的技能响应存在问题”
{
"body": {
"version": "1.0",
"response": {
"outputSpeech": {
"type": "SSML",
"ssml": "<speak> Sorry I did not get the age, please say it again </speak>"
},
"directives": [
{
"type": "Dialog.ElicitSlot",
"slotToElicit": "ageValue"
}
],
"reprompt": {
"outputSpeech": {
"type": "SSML",
"ssml": "<speak> Please tell me your age </speak>"
}
},
"shouldEndSession": false
},
"sessionAttributes": {},
"userAgent": "ask-nodejs/1.0.25 Node/v6.10.3"
}
}