预定义的插槽如何返回分辨率?

时间:2019-10-18 15:01:43

标签: alexa alexa-skills-kit alexa-skill alexa-slot

我正在为Alexa构建一个简单的Guess Who技能游戏。我现在有两个意图:GenderIntent和HairColorIntent。

GenderIntent有一个自定义插槽,用于处理性别和相关的同义词,例如将“ boy”和“ man”映射到“ Male”。这很好。它返回插槽内的分辨率。正是我所需要的。

HairColorIntent具有预定义的Amazon插槽AMAZON.Color。这不起作用,因为无论提供什么颜色,它都永远不会返回分辨率。

这是我的GenderIntent和HairColorIntent模型:

var form = document.getElementById("salesforce_submit");
var formData = new FormData(form);
formData.append('uploadedFile', acceptedFiles);
alert(formData);

$.ajax({
    url: '/php/quoteSendTest.php',
    type: 'POST',
    data: formData,

GenderIntent返回以下具有分辨率的广告位:

{
    "name": "GenderIntent",
    "samples": [
        "are you a {Gender}"
    ],
    "slots": [
        {
            "name": "Gender",
            "type": "GENDER_TYPES",
            "samples": []
        }
    ]
},
{
    "name": "HairColorIntent",
    "samples": [
        "is your hair {HairColor}",
        "do you have {HairColor} hair"
    ],
    "slots": [
        {
            "name": "HairColor",
            "type": "AMAZON.Color"
        }
    ]
}

HairColorIntent返回以下无分辨率的图像:

{
    "Gender": {
        "name": "Gender",
        "value": "male",
        "resolutions": {
            "resolutionsPerAuthority": [
                {
                    "authority": "amzn1.er-authority.echo-sdk.amzn1.ask.skill.2ed972f4-1c5a-4cc1-8fd7-3f440f5b8968.GENDER_TYPES",
                    "status": {
                        "code": "ER_SUCCESS_MATCH"
                    },
                    "values": [
                        {
                            "value": {
                                "name": "Male",
                                "id": "63889cfb9d3cbe05d1bd2be5cc9953fd"
                            }
                        }
                    ]
                }
            ]
        },
        "confirmationStatus": "NONE",
        "source": "USER"
    }
}

我想要HairColorIntent的HairColor插槽返回分辨率。我在做什么错了?

1 个答案:

答案 0 :(得分:1)

仅当您在广告位类型中使用同义词时,才会返回分辨率。

不完全确定如何在代码中处理它,例如Node.js将是: handlerInput.requestEnvelope.request.intent.slots.Gender.resolutions.resolutionPerAuthority[0].values[0].value.name

如果您不使用同义词(例如用于HairColor插槽),则可以简单地通过handlerInput.requestEnvelope.request.intent.slots.HairColor.value来获取值

使用预定义的插槽类型,这应该可以与您的代码很好地配合。如果您希望自定义广告位类型也返回分辨率,而无论您是否实际使用同义词,则始终可以简单地将值作为同义词给出,它应该返回完整的分辨率树。

希望能回答您的问题。