Как предопределенный слот возвращает разрешение? - PullRequest
0 голосов
/ 18 октября 2019

Я создаю простую игру Guess Who для Alexa. У меня сейчас два намерения: GenderIntent и HairColorIntent.

GenderIntent имеет пользовательский слот для обработки пола и связанных с ним синонимов, таких как сопоставление "boy" и "man" с "Male". Это работает отлично. Возвращает разрешение в слоте. Именно то, что мне нужно.

HairColorIntent имеет предопределенный слот Amazon, AMAZON.Color. Это не работает отлично, так как никогда не возвращает разрешение независимо от поставляемого цвета.

Вот моя модель для GenderIntent и HairColorIntent:

{
    "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"
        }
    ]
}

GenderIntent возвращает следующий слот С разрешениями:

{
    "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": {
        "name": "HairColor",
        "value": "brown",
        "confirmationStatus": "NONE",
        "source": "USER"
    }
}

Мне бы хотелось, чтобы слот HairColorIntent's HairColor возвращал разрешение. Что я делаю не так?

1 Ответ

1 голос
/ 21 октября 2019

Разрешение возвращается только в том случае, если вы используете синонимы в своем типе слота.

Не совсем точно, как вы обрабатываете его в своем коде, например, Node.js будет: handlerInput.requestEnvelope.request.intent.slots.Gender.resolutions.resolutionPerAuthority[0].values[0].value.name

Если вы не используете синонимы (например, для слота HairColor), вы можете получить значение просто: handlerInput.requestEnvelope.request.intent.slots.HairColor.value

. Работая с предопределенными типами слотов, это должно хорошо работать с вашим кодом. Если вы хотите, чтобы пользовательские типы слотов также возвращали разрешение независимо от того, используете ли вы синонимы или нет, вы всегда можете просто указать значение в качестве синонима, и оно должно вернуть полное дерево разрешения.

Надеемся, что ответили на ваш вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...