ASK-CLI部署失败,使用"要验证的对象不能为空"

时间:2017-12-30 23:06:37

标签: alexa alexa-skills-kit

我经历了Alexa Skills Kit的一个快速启动,创建了我的第一个Alexa技能,现在我正在尝试向后工作,通过我的文本编辑器设置开发项目并通过ASK CLI进行部署。但似乎ask-cli无法找到我的交互模型,因为当我尝试部署时,我得到以下输出:

  

$ ask deploy

     

--------------------更新技能项目--------------------

     

技能ID:amzn1.ask.skill.6eebd8dd-2062-4666-9040-34d103d114c7

     

技能部署完成。

     

调用更新模型错误。

     

错误代码:400   {
  "消息":"交互模型无效。","违规":[       {         " message":" null:HV000116:要验证的对象不能为空。"       }]}

当我使用--debug标志运行时,它看起来像交互模型作为空对象发送。我将下面的完整输出粘贴,但据我所知,我认为这是重要的部分:

  

[2017-12-30T22:21:56.535Z] - DEBUG - UPDATE-MODEL request-id:   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":" ask-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& #34;"接受":"应用/ JSON""内容类型":"应用/ JSON""内容长度":2}

     

请求正文:{}

这是我的项目结构:

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

ask-deploy --debug的完整输出如下。有人为什么不能验证交互模型?

  

-------------------- Debug Mode -------------------- [2017-12- 30T22:21:55.649Z] - DEBUG - UPDATE-SKILL请求ID:   d89914a8-edaf-11e7-85ba-550bb02f81a7 PUT   https://api.amazonalexa.com/v0/skills/amzn1.ask.skill.6eebd8dd-2062-4666-9040-34d103d114c7   状态代码:202接受

     

请求标题:{" User-Agent":" ask-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& #34;"接受":"应用/ JSON""内容类型":"应用/ JSON""内容长度":1768}

     

申请机构:   {" skillManifest" {" publishingInformation" {"区域设置" {"的en-US" {"总结&#34 ;:"我的   摘要"," examplePhrases":["有","","真实","短语" ,   "此处&#34],"关键字":["选择""随机&#34],"名称":&# 34;选择   之间"" 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"}}," isAvailableWorldwide":真," testingInstructions&#34 ;: "没有   特别""类别":"新奇"" distributionCountries":[]}," API和#34; {"定制" {"端点" {" URI":" ARN:AWS:拉姆达:US-西-2:760655967349:功能:randomChoiceAlexaSkill"} }}," manifestVersion":" 1.0""权限":[]," privacyAndCompliance" {" allowsPurchases&# 34;:假," isExportCompliant":真," containsAds":假," isChildDirected":假," usesPersonalInfo":假}} }

     

回复标题:{"服务器":"服务器","日期":"周六,2017年12月30日22:21:56   GMT""内容类型":"应用/ JSON""内容长度":" 2"&#34 ;连接":"靠近"" X-AMZN-的requestId":" d89914a8-EDAF-11e7-85ba-550bb02f81a7"" X -amz最新":"星期六,   2017年12月30日22:21:56   GMT""位置":" /v0/skills/amzn1.ask.skill.6eebd8dd-2062-4666-9040-34d103d114c7/status","变化&# 34;:"接受编码,用户代理"}

     

回复正文:{}   ---------------------------------------- [2017-12-30T22:21:55.941 Z] - DEBUG - GET-SKILL-STATUS请求ID:   d8d4977b-edaf-11e7-a1e2-2df47a70d226 GET   https://api.amazonalexa.com/v0/skills/amzn1.ask.skill.6eebd8dd-2062-4666-9040-34d103d114c7/status   状态代码:200 OK

     

请求标题:{" User-Agent":" ask-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& #34;}

     

回复标题:{"服务器":"服务器","日期":"周六,2017年12月30日22:21:57   GMT""内容类型":"应用/ JSON""内容长度":" 87"&#34 ;连接":"靠近"" X-AMZN-的requestId":" d8d4977b-EDAF-11E7-a1e2-2df47a70d226"" X -amz最新":"星期六,   2017年12月30日22:21:57 GMT","变化":"接受编码,用户代理"}

     

回应机构:   " {\"清单\":{\"上次更改时间\":{\"时间\":\" 2017- 12-30T22:21:56.889Z \" \"状态\":\"成功\"}}}"   ---------------------------------------- [2017-12-30T22:21:56.292 Z] - DEBUG - GET-MODEL-STATUS请求ID:   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":" ask-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& #34;}

     

回复标题:{"服务器":"服务器","日期":"周六,2017年12月30日22:21:57   GMT""内容类型":"应用/ JSON""内容长度":" 20"&#34 ;连接":"靠近"" X-AMZN-的requestId":" d9020ff6-EDAF-11E7-b4f4-39c6476092ba"" X -amz最新":"星期六,   2017年12月30日22:21:57 GMT","变化":"接受编码,用户代理"}

     

回复正文:" {\" status \":\" SUCCESS \"}"   ---------------------------------------- [2017-12-30T22:21:56.535 Z] - DEBUG - UPDATE-MODEL request-id: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":" ask-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& #34;"接受":"应用/ JSON""内容类型":"应用/ JSON""内容长度":2}

     

请求正文:{}

     

回复标题:{"服务器":"服务器","日期":"周六,2017年12月30日22:21:57   GMT""内容类型":"应用/ JSON""内容长度":" 139"&#34 ;连接":"靠近"" X-AMZN-的requestId":" d9357bc2-EDAF-11e7-85ba-550bb02f81a7"" X -amz最新":"星期六,   2017年12月30日22:21:57   GMT"" X-AMZN-ERRORTYPE":" BadRequestException:http://internal.amazon.com/coral/com.amazon.alexa.skillmanagement/""变化":"接受编码,用户代理"}

     

回复正文:{"消息":"交互模型不是   有效。","违规":[{"消息":" null:HV000116:要成为的对象   验证不得为空。"}]}

3 个答案:

答案 0 :(得分:1)

在Alexa开发者控制台中更新交互模型并直接从JSON编辑器复制JSON后,我遇到了这个问题。 应该工作,JSON看起来完整,并且正确显示,但出于某种原因要求部署barfed。

我解决了它:

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

这使用API​​来提取当前部署的模型,并写入指定的文件。

答案 1 :(得分:0)

我的猜测是en-US.JSON出了问题,但我不确定。

如果您正在尝试将工作技能转换为使用CLI,那么我建议您先从工作技能开始,然后使用&#34;问克隆&#34;将其下载到CLI所需的格式。

然后,您应该能够完全按照下载的方式部署技能。检查所有内容到Git,然后继续使用下载的副本。如果您的更改破坏了某些内容,则可以恢复到工作级别等。

答案 2 :(得分:0)

我在编辑交互模型文件(en-US.json)后收到此错误

我正在使用Web界面中部署的Alexa技能,并发现我的编辑那里可以导出到json文件,该文件看起来与我的Skills Kit项目结构相同。所以我用生成的模型替换了我的en-US.json文件的内容。但是在部署时我收到了这个错误:

  

{“message”:“交互模型不是   有效。“,”违规“:[{”message“:”null:HV000116:要成为的对象   validated不能为null。“}]}

事实证明,生成的模型需要进行微调,以使其与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”属性的对象中,并且模型已成功验证和部署。