Навыки Alexa: для пользовательского слота значение не возвращается

Надеюсь, кто-нибудь сможет мне с этим помочь, потому что неделю я был в тупике.

Я создаю простой навык Alexa из одного из примеров. Это навык выбора цвета - вы говорите Алексе свой любимый цвет, а затем спрашиваете у нее свой любимый цвет. Я использую специальные слоты, и служба навыков не хочет возвращать значение цвета. Он запускается успешно, а затем загружает правильное намерение, однако не отправляет правильное значение. Вместо этого в выходных данных нет даже параметра значения, только имя и статус подтверждения.

Вот JSON моего навыка, за которым следует запрос в формате JSON после того, как я скажу навыку: «Мой цвет красный». Я хочу, чтобы навык передавал "красный" в параметр значения.

{
"interactionModel": {
    "languageModel": {
        "invocationName": "color picker",
        "intents": [
            {
                "name": "MyColorIsIntent",
                "slots": [
                    {
                        "name": "color",
                        "type": "LIST_OF_COLORS"
                    }
                ],
                "samples": [
                    "my color is {color}",
                    "{color} is my color"
                ]
            },
            {
                "name": "WhatsMyColorIntent",
                "slots": [],
                "samples": [
                    "what's my color",
                    "what's my favorite color"
                ]
            },
            {
                "name": "AMAZON.NavigateHomeIntent",
                "samples": []
            }
        ],
        "types": [
            {
                "name": "LIST_OF_COLORS",
                "values": [
                    {
                        "name": {
                            "value": "green"
                        }
                    },
                    {
                        "name": {
                            "value": "red"
                        }
                    },
                    {
                        "name": {
                            "value": "yellow"
                        }
                    },
                    {
                        "name": {
                            "value": "orange"
                        }
                    },
                    {
                        "name": {
                            "value": "black"
                        }
                    },
                    {
                        "name": {
                            "value": "blue"
                        }
                    }
                ]
            }
        ]
    }
}
}

Внизу просьба:

"request": {
"type": "IntentRequest",
"requestId": "amzn1.echo-api.request.918d6da6-cd7e-4bb8-a2a9-41fb1af8a354",
"timestamp": "2018-10-01T01:53:56Z",
"locale": "en-US",
"intent": {
    "name": "MyColorIsIntent",
    "confirmationStatus": "NONE",
    "slots": {
        "Color": {
            "name": "Color",
            "confirmationStatus": "NONE"
        }
    }
}
}

person Jeffery Gough    schedule 02.10.2018    source источник
comment
Я правильно получил значение слота в обоих ваших примерах высказываний, используя общую модель взаимодействия.   -  person johndoe    schedule 02.10.2018
comment
См. Ответ ниже. Оказалось, что у меня было несколько навыков Alexa с одним и тем же именем вызова. Спасибо.   -  person Jeffery Gough    schedule 03.10.2018


Ответы (2)


Ваша проблема заключается в том, что слот «цвет» должен называться «Цвет», а ссылки на образцы изменены, чтобы отразить это, так что «мой цвет - {Цвет}» и «{Цвет} - мой цвет». Слот не используется, потому что название идентично. Обязательно завершите навык с необходимыми намерениями для остановки и помощи, в настоящее время он будет просто продолжать запрашивать выбор цвета, пока вы не закроете программу.

person Chuck LaPress    schedule 02.10.2018
comment
Это странно. Я пробовал Color (с заглавной буквы), и когда я заменяю свой слот чем-то другим, например оттенком, он все еще хочет заполнить слот Color. Я сохранял и перестраивал, много раз пробовал. - person Jeffery Gough; 03.10.2018
comment
Спасибо за вашу помощь. Ты повел меня по правильному пути. Также - хорошие советы по включению других намерений: я верну их - я просто хотел обрезать как можно больше. Ответ размещен ниже. У меня было несколько навыков, использующих одно и то же имя вызова. - person Jeffery Gough; 03.10.2018

Вот что произошло: я работал над разными версиями одного и того же навыка, каждая с одним и тем же именем вызова. Когда я набирал имя вызова, он фактически открывал устаревшую версию навыка (я не удалял старые навыки - у меня было примерно 3 разных навыка - я люблю начинать заново). Я не понимал, что когда вы нажимаете «тест», вы можете проверить любые свои сохраненные навыки, а не только те, которые у вас открыты.

person Jeffery Gough    schedule 03.10.2018