1

我的技能NoteMyDetail有一个单一的意图,它具有三个必需的插槽:nameagegender。我有各种说法,例如“记下我的详细信息”“记下我的名字为 {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"
}
}
4

1 回答 1

0

这是一个典型案例,您可以使用最近发布的名为Slot Validation的功能。您所要做的就是转到您根据需要定义插槽的页面,然后单击Validations选项卡:

在此处输入图像描述

并添加验证规则。在您处理age的情况下,很可能和AMAZON.Number,您可以设置两条规则,一条用于年龄的下限(例如 0),另一条用于上限(例如 100)。看看我的例子,使用一个名为的数字槽ownedMiles

在此处输入图像描述

一旦你这样做,任何不是验证规则定义的范围内的数字都会导致验证中提供的提示被说出,并且 Alexa 将尝试再次收集该值。

于 2019-08-28T22:28:51.443 回答