Развертывание ASK-CLI завершается с "Проверяемый объект не должен быть нулевым"

Я прошел через один из быстрых наборов Alexa Skills Kit, чтобы создать свой первый навык Alexa, и теперь я пытаюсь вернуться назад, чтобы настроить свой проект для разработки из моего текстового редактора и развертывания через ASK CLI. Но похоже, что ask-cli не может найти мою модель взаимодействия, потому что я получаю следующий вывод при попытке развернуть:

$ ask deploy

-------------------- Обновление проекта Skill --------------------

Идентификатор навыка: amzn1.ask.skill.6eebd8dd-2062-4666-9040-34d103d114c7

Развертывание навыков завершено.

Вызвать ошибку модели обновления.

Код ошибки: 400 {
"message": "Модель взаимодействия недопустима.", "нарушения": [ { "сообщение": "null: HV000116: проверяемый объект не должен быть нулевым." } ] }

Когда я запускаю с флагом --debug, мне кажется, что модель взаимодействия отправляется как пустой объект. Я вставляю полный вывод ниже, но, насколько я могу судить, я думаю, что это важная часть:

[2017-12-30T22: 21: 56.535Z] - ОТЛАДКА - ИД-запрос ОБНОВЛЕНИЯ МОДЕЛИ: d9357bc2-edaf-11e7-85ba-550bb02f81a7 POST https://api.amazonalexa.com/v0/skills/amzn1.ask.skill.6eebd8dd-2062-4666-9040-34d103d114c7/interactionModel/locales/en-US код состояния: 400 Bad Request

Заголовков запроса: {"User-Agent":"спросить-Cli/1.0.0-beta.8 Узел /v9.3.0","Авторизация":"Atza|IwEBIGhOiYYsONdFRcrE8Aapsyzk_O798yl_9FmRyO8BiXdsgo8tjYgq6eIB9323UavV2_U5PA2TkRYTq3Tt9Ui69n-XWyorWgRFpkm0ahl9uBWq5diTyQQIyGTXc_sgJQcjx3_mKiJ-ku5y_CR7cFOg6apqOTMyu4BO6pcC8ejydsne5GfqkbEqDHlwa44cQyxOw9Ir97CB0-WdleRI-IJpsyCoQvZ11Ah2pt_K-PZRtdqE5nUG9tQx49_v1N5apGrNyNxKAICAnJZ0aH3gE1ruAlZc4BUNn7SBM6-sSC1pppSTNVX_8MfwoRfVsdZ-cPbjJIxM3wftjUAah0wPdC-yeEVf-P2JOpTAscLpT-zEzzkEGiZrD1W61YyE0SH04KXqoOS3sgdWYrOEomIQg1TbcOlYvskbCqnOnkrHMGikgaUbWCF7YOTQrE1s0zOrIOujHJez7iIMc0WhUI4LkGdhHttSxxzRHnL3t5JEhOHC0DkLDaRp6ESPs6U4n7hfYtE2ktJDTs_nql39xfDqadfziEPOurEpA3MffHN20mGx3w-8jpIx_pW4mdo41Vi33hHHSa-1l9fbsKRKef2MrI91oNUY9eI7HXNF6Exi3OFR2oFP29TsgA25ZNBUcrEAM1OxAVI","принимает": "приложения / JSON", "тип содержимого": "приложения / JSON", "Content-Length":2}

Тело запроса: {}

Вот моя структура проекта:

├── .ask
│   └── config
├── .gitignore
├── lambda
│   ├── custom
│   │   ├── node_modules
│   │   ├── package-lock.json
│   │   ├── package.json
│   │   ├── src
│   │   └── test
├── models
│   └── en-US.json
└── skill.json

Полный вывод из ask-deploy --debug ниже. У кого-нибудь есть мысли о том, почему модель взаимодействия не может быть проверена?

-------------------- Режим отладки -------------------- [2017-12-30T22:21:55.649Z] - ОТЛАДКА - ИД запроса на ОБНОВЛЕНИЕ-НАВЫКА: d89914a8-edaf-11e7-85ba-550bb02f81a7 PUT https://api.amazonalexa.com/v0/skills/amzn1.ask.skill.6eebd8dd-2062-4666-9040-34d103d114c7 код статуса: 202 Принято

Заголовков запроса: {"User-Agent":"спросить-Cli/1.0.0-beta.8 Узел /v9.3.0","Авторизация":"Atza|IwEBIGhOiYYsONdFRcrE8Aapsyzk_O798yl_9FmRyO8BiXdsgo8tjYgq6eIB9323UavV2_U5PA2TkRYTq3Tt9Ui69n-XWyorWgRFpkm0ahl9uBWq5diTyQQIyGTXc_sgJQcjx3_mKiJ-ku5y_CR7cFOg6apqOTMyu4BO6pcC8ejydsne5GfqkbEqDHlwa44cQyxOw9Ir97CB0-WdleRI-IJpsyCoQvZ11Ah2pt_K-PZRtdqE5nUG9tQx49_v1N5apGrNyNxKAICAnJZ0aH3gE1ruAlZc4BUNn7SBM6-sSC1pppSTNVX_8MfwoRfVsdZ-cPbjJIxM3wftjUAah0wPdC-yeEVf-P2JOpTAscLpT-zEzzkEGiZrD1W61YyE0SH04KXqoOS3sgdWYrOEomIQg1TbcOlYvskbCqnOnkrHMGikgaUbWCF7YOTQrE1s0zOrIOujHJez7iIMc0WhUI4LkGdhHttSxxzRHnL3t5JEhOHC0DkLDaRp6ESPs6U4n7hfYtE2ktJDTs_nql39xfDqadfziEPOurEpA3MffHN20mGx3w-8jpIx_pW4mdo41Vi33hHHSa-1l9fbsKRKef2MrI91oNUY9eI7HXNF6Exi3OFR2oFP29TsgA25ZNBUcrEAM1OxAVI","принимает": "приложения / JSON", "тип содержимого": "приложения / JSON", "Content-Length":1768}

Тело запроса: {"skillManifest":{"publishingInformation":{"locales":{"en-US":{"summary":"My summary","examplePhrases":["There", "are", "real", " фразы "," здесь "]," ключевые слова ": [" выбор "," случайный "]," имя ":" Выбрать между "," smallIconUri ":" https://api.amazonalexa.com/v0/skills/amzn1.ask.skill.6eebd8dd-2062-4666-9040-34d103d114c7/images/eyJkIjoiQjRvNFltSDdCQU54Y25DanlKR1ArVFhGZW1ZL1I3NjdpRldXQXltZ2FUVmNZblV6WUE1eU4veVduMHF2WEY2bXdiUmlIZkJ1SFVNbEh0Q3A3K1g4SDc1WnczdDNqR3duT0JubnBhZVhBTkF0UFMzeVl4Q3k4eFQxTlRxeXc0dGYiLCJpdiI6IlZHN1gyb0FqQ2VjMnBEWGtMZ2J0SEE9PSIsInYiOjF9 " "описание": "Мое описание", "largeIconUri":" https://api.amazonalexa.com/v0/skills/amzn1.ask.skill.6eebd8dd-2062-4666-9040-34d103d114c7/images/eyJkIjoiTkQ5OWd2RkN3UDhoWlJ1eFF5TDNtZytHbStkbFNYcHhqUGNDSG04RjREVUhIVTRVQkpxbjVyTFVWaHFVRDFPbDRtYnlWQUZCMFJRQnpEczRFQnlOckF0N05yZVZDSnhRUHIzZmFoWWRTRjRqZHNIUjUxV3dMekpNZzl0OFhzVFdoQXV0RERPQTBsV3d3b05xVnYxODZRPT0iLCJpdiI6IiszVG9QQ1o2ajA2ZThPVzIxTUh4MXc9PSIsInYiOjF9 "}}," isAvailableWorldwi de ": true," testingInstructions ":" Ничего особенного ","category":"NOVELTY","distributionCountries":[]},"apis":{"custom":{"endpoint":{"uri":" ARN: AWS: лямбда: мы-запад 2:760655967349: функция:randomChoiceAlexaSkill"}}},"manifestVersion":"1,0", "разрешения":[],"privacyAndCompliance":{"allowsPurchases" ложь "isExportCompliant": правда,"containsAds"ложь"isChildDirected"ложь"usesPersonalInfo"ложь}}}

Заголовки ответа: {"server":"Server","date":"Sat, 30 Dec 2017 22:21:56 GMT","content-type":"application/json","content-length":"2","connection":"close","x-amzn-Requesttid":"d89914a8-edaf-11e7-85ba-550bb02f81a7","x-amz-date":" Сб, 30 дек. 2017 22:21:56 GMT ", "место":"/v0/ навыки / amzn1.ask.skill.6eebd8dd-2062-4666-9040-34d103d114c7 / статус", "меняться":"Accept-Encoding,User-Agent"}

Тело ответа: {} ---------------------------------------- [2017-12-30T22:21:55.941Z] - ОТЛАДКА - GET-SKILL-STATUS идентификатор запроса: d8d4977b-edaf-11e7-a1e2-2df47a70d226 GET https://api.amazonalexa.com/v0/skills/amzn1.ask.skill.6eebd8dd-2062-4666-9040-34d103d114c7/status код статуса статуса: 200 ОК

Заголовков запроса: {"User-Agent":"спросить-Cli/1.0.0-beta.8 Узел /v9.3.0","Авторизация":"Atza|IwEBIGhOiYYsONdFRcrE8Aapsyzk_O798yl_9FmRyO8BiXdsgo8tjYgq6eIB9323UavV2_U5PA2TkRYTq3Tt9Ui69n-XWyorWgRFpkm0ahl9uBWq5diTyQQIyGTXc_sgJQcjx3_mKiJ-ku5y_CR7cFOg6apqOTMyu4BO6pcC8ejydsne5GfqkbEqDHlwa44cQyxOw9Ir97CB0-WdleRI-IJpsyCoQvZ11Ah2pt_K-PZRtdqE5nUG9tQx49_v1N5apGrNyNxKAICAnJZ0aH3gE1ruAlZc4BUNn7SBM6-sSC1pppSTNVX_8MfwoRfVsdZ-cPbjJIxM3wftjUAah0wPdC-yeEVf-P2JOpTAscLpT-zEzzkEGiZrD1W61YyE0SH04KXqoOS3sgdWYrOEomIQg1TbcOlYvskbCqnOnkrHMGikgaUbWCF7YOTQrE1s0zOrIOujHJez7iIMc0WhUI4LkGdhHttSxxzRHnL3t5JEhOHC0DkLDaRp6ESPs6U4n7hfYtE2ktJDTs_nql39xfDqadfziEPOurEpA3MffHN20mGx3w-8jpIx_pW4mdo41Vi33hHHSa-1l9fbsKRKef2MrI91oNUY9eI7HXNF6Exi3OFR2oFP29TsgA25ZNBUcrEAM1OxAVI"}

Заголовки ответа: {"server":"Server","date":"Sat, 30 Dec 2017 22:21:57 GMT","type-type":"application/json","content-length":"87","connection":"close","x-amzn-Requesttid":"d8d4977b-edaf-11e7-a1e2-2df47a70d226","x-amz-date":" Сб, 30 дек. 2017 22:21:57 GMT ", "меняться":"Accept-Encoding,User-Agent"}

Тело ответа: "{\"manifest\":{\"lastModified\":{\"time\":\"2017-12-30T22:21:56.889Z\",\"status\":\" УСПЕШНО \ " "}}}" ---------------------------------------- [2017-12-30T22:21:56.292Z] - ОТЛАДКА - GET-MODEL-STATUS-идентификатор запроса: d9020ff6-edaf-11e7-b4f4-39c6476092ba GET https://api.amazonalexa.com/v0/skills/amzn1.ask.skill.6eebd8dd-2062-4666-9040-34d103d114c7/interactionModel/locales/en-US/status код статуса: 200 OK

Заголовков запроса: {"User-Agent":"спросить-Cli/1.0.0-beta.8 Узел /v9.3.0","Авторизация":"Atza|IwEBIGhOiYYsONdFRcrE8Aapsyzk_O798yl_9FmRyO8BiXdsgo8tjYgq6eIB9323UavV2_U5PA2TkRYTq3Tt9Ui69n-XWyorWgRFpkm0ahl9uBWq5diTyQQIyGTXc_sgJQcjx3_mKiJ-ku5y_CR7cFOg6apqOTMyu4BO6pcC8ejydsne5GfqkbEqDHlwa44cQyxOw9Ir97CB0-WdleRI-IJpsyCoQvZ11Ah2pt_K-PZRtdqE5nUG9tQx49_v1N5apGrNyNxKAICAnJZ0aH3gE1ruAlZc4BUNn7SBM6-sSC1pppSTNVX_8MfwoRfVsdZ-cPbjJIxM3wftjUAah0wPdC-yeEVf-P2JOpTAscLpT-zEzzkEGiZrD1W61YyE0SH04KXqoOS3sgdWYrOEomIQg1TbcOlYvskbCqnOnkrHMGikgaUbWCF7YOTQrE1s0zOrIOujHJez7iIMc0WhUI4LkGdhHttSxxzRHnL3t5JEhOHC0DkLDaRp6ESPs6U4n7hfYtE2ktJDTs_nql39xfDqadfziEPOurEpA3MffHN20mGx3w-8jpIx_pW4mdo41Vi33hHHSa-1l9fbsKRKef2MrI91oNUY9eI7HXNF6Exi3OFR2oFP29TsgA25ZNBUcrEAM1OxAVI"}

Заголовки ответа: {"server":"Server","date":"Sat, 30 Dec 2017 22:21:57 GMT","content-type":"application/json","content-length":"20","connection":"close","x-amzn-Requesttid":"d9020ff6-edaf-11e7-b4f4-39c6476092ba","x-amz-date":" Сб, 30 дек. 2017 22:21:57 GMT ", "меняться":"Accept-Encoding,User-Agent"}

Тело ответа: "{\"status\":\"SUCCESS\"}" ---------------------------------------- [2017-12-30T22:21:56.535Z] - ОТЛАДКА - ОБНОВЛЕНИЕ-МОДЕЛЬ запрос-идентификатор: d9357bc2-edaf-11e7-85ba-550bb02f81a7 POST https://api.amazonalexa.com/v0/skills/amzn1.ask.skill.6eebd8dd-2062-4666-9040-34d103d114c7/interactionModel/locales/en-US код состояния: 400 Неверный запрос

Заголовков запроса: {"User-Agent":"спросить-Cli/1.0.0-beta.8 Узел /v9.3.0","Авторизация":"Atza|IwEBIGhOiYYsONdFRcrE8Aapsyzk_O798yl_9FmRyO8BiXdsgo8tjYgq6eIB9323UavV2_U5PA2TkRYTq3Tt9Ui69n-XWyorWgRFpkm0ahl9uBWq5diTyQQIyGTXc_sgJQcjx3_mKiJ-ku5y_CR7cFOg6apqOTMyu4BO6pcC8ejydsne5GfqkbEqDHlwa44cQyxOw9Ir97CB0-WdleRI-IJpsyCoQvZ11Ah2pt_K-PZRtdqE5nUG9tQx49_v1N5apGrNyNxKAICAnJZ0aH3gE1ruAlZc4BUNn7SBM6-sSC1pppSTNVX_8MfwoRfVsdZ-cPbjJIxM3wftjUAah0wPdC-yeEVf-P2JOpTAscLpT-zEzzkEGiZrD1W61YyE0SH04KXqoOS3sgdWYrOEomIQg1TbcOlYvskbCqnOnkrHMGikgaUbWCF7YOTQrE1s0zOrIOujHJez7iIMc0WhUI4LkGdhHttSxxzRHnL3t5JEhOHC0DkLDaRp6ESPs6U4n7hfYtE2ktJDTs_nql39xfDqadfziEPOurEpA3MffHN20mGx3w-8jpIx_pW4mdo41Vi33hHHSa-1l9fbsKRKef2MrI91oNUY9eI7HXNF6Exi3OFR2oFP29TsgA25ZNBUcrEAM1OxAVI","принимает": "приложения / JSON", "тип содержимого": "приложения / JSON", "Content-Length":2}

Тело запроса: {}

Заголовки ответа: {"server":"Server","date":"Sat, 30 Dec 2017 22:21:57 GMT","content-type":"application/json","content-length":"139","connection":"close","x-amzn-Requesttid":"d9357bc2-edaf-11e7-85ba-550bb02f81a7","x-amz-date":" Сб, 30 дек. 2017 22:21:57 GMT "," x-amzn-errortype ":" BadRequestException: http://internal.amazon.com/coral/com.amazon.alexa.skillmanagement/ "," var ":" Accept-Encoding, User-Agent "}

Тело ответа: {"message":"Модель взаимодействия недопустима.", "Нарушения": [ { "message": "null: HV000116: проверяемый объект не должен быть нулевым."}]}

3 ответа

Решение

Я думаю, что что-то не так с en-US.JSON, но я не уверен в этом.

Если вы пытаетесь преобразовать рабочий навык в CLI, то я рекомендую начать с рабочего навыка и использовать "ask clone", чтобы загрузить его в формат, необходимый для CLI.

После этого вы сможете развернуть навык в точности так, как он загружен. Проверьте все в Git, а затем продолжайте работу с загруженной копией. Если ваши изменения что-то нарушают, вы можете вернуться к рабочему уровню и т. Д.

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

Я решил это с:

ask api get-model -s <skillId> -l en-US > models/en-US.json

При этом используется API для извлечения развернутой в данный момент модели и записи в указанный файл.

Я получил эту ошибку после редактирования моего файла модели взаимодействия (en-US.json)

Я играл с развернутым навыком Alexa в веб-интерфейсе и обнаружил, что мои правки могут быть экспортированы в файл json, который, по-видимому, имеет ту же структуру, что и мой проект Skills Kit. Поэтому я заменил содержимое моего файла en-US.json на сгенерированную модель. Но я получил эту ошибку при развертывании:

{"message": "Модель взаимодействия недопустима.","нарушения":[{"message":"null: HV000116: проверяемый объект не должен быть нулевым."}]}

Оказывается, сгенерированная модель требует незначительной настройки, чтобы сделать ее совместимой с файлом модели взаимодействия, который ищет ASK CLI. Сгенерированная модель имеет такую ​​структуру:

{
    "languageModel": {
        "invocationName": "yo mamma",
        "intents": [
            {
                "name": "AMAZON.CancelIntent",
                "slots": [],
                "samples": []
            },
            {
                "name": "AMAZON.HelpIntent",
                "slots": [],
                "samples": []
            },
            {
                "name": "AMAZON.StopIntent",
                "slots": [],
                "samples": []
            }
        ]
    }
}

Но структура модели en-US.json выглядит следующим образом:

{
    "interactionModel": {
        "languageModel": {
            "invocationName": "yo mama",
            "intents": [
                {
                    "name": "AMAZON.CancelIntent",
                    "slots": [],
                    "samples": []
                },
                {
                    "name": "AMAZON.HelpIntent",
                    "slots": [],
                    "samples": []
                },
                {
                    "name": "AMAZON.StopIntent",
                    "slots": [],
                    "samples": []
                }
            ]
        }
    }
}

Я просто обернул свою языковую модель в другой объект со свойством "InteractionModel", и модель была успешно проверена и развернута.

Другие вопросы по тегам