putBotAlias 在 AWS LexModelBuildingService 中不工作 node.js
putBotAlias not working in AWS LexModelBuildingService node.js
我一直在尝试用新创建的机器人版本替换现有的 LexBot Alias(名为 LATEST
)。
现在,根据 aws 文档
When you want to update a bot alias, set the checksum field to the checksum of the most recent revision of the $LATEST version.
我可以在 Lex 控制台中看到 Alias LATEST
正在使用 bot 版本 12
。
我尝试使用以下方法获取校验和(我正在使用 LexModelBuildingService 的 getBot(...)
来获取机器人的校验和):
- 使用 Alias 名称本身作为版本,即
LATEST
。
- 将
getBot
方法参数中的 versionOrAlias 设置为“$LATEST”。
- 将版本硬编码为
12
in getBot(..)
。
我使用了上述场景的校验和,但错误似乎与
相同
PreconditionFailedException: The checksum value doesn't match for the resource named 'LATEST'.
这是代码片段
async putBotAlias(botVersionResponse){
let checksum;
await this.getBot(botVersionResponse.name,'12').then(botRes=>{ // have used 12, LATEST, $LATEST with same error
console.log("Checksum For Latest: " + botRes.checksum);
checksum = botRes.checksum;
});
var params = {
botName: botVersionResponse.name,
botVersion: (parseInt(botVersionResponse.version,10)).toString(),
name: 'LATEST',
checksum : checksum
};
// checksum: checksum
console.log("Params in putBotAlias : " + JSON.stringify(params));
return new Promise((resolve,reject)=>{
this.modelBuildingService.putBotAlias(params, function(err, data) {
if (err){
reject(err);
} // an error occurred
else{
console.log("Put Alias Response :::" + JSON.stringify(data));
resolve(data);
} // successful response
});
});
}
我真的不知道它到底想要什么版本。
非常感谢任何帮助。
PS:请在评论中提及任何其他所需信息。
显然我输入的是 'Bot' 的校验和,而不是我试图输入的 'BotAlias' 的校验和。
更新代码获取 bot Alias 的校验和:
async putBotAlias(botVersionResponse,aliasName){
let checksum;
if(typeof aliasName != "undefined"){
await this.getBotAlias(botVersionResponse.name,aliasName).then(res=>{
console.log("Checksum For Latest ALIAS : " + res.checksum);
checksum = res.checksum;
}).catch((err)=>{
console.log(" Unable to getBotAlias checksum " + err);
});
}
愚蠢的错误,但希望它能帮助任何犯错误的人。 :)
我一直在尝试用新创建的机器人版本替换现有的 LexBot Alias(名为 LATEST
)。
现在,根据 aws 文档
When you want to update a bot alias, set the checksum field to the checksum of the most recent revision of the $LATEST version.
我可以在 Lex 控制台中看到 Alias LATEST
正在使用 bot 版本 12
。
我尝试使用以下方法获取校验和(我正在使用 LexModelBuildingService 的 getBot(...)
来获取机器人的校验和):
- 使用 Alias 名称本身作为版本,即
LATEST
。 - 将
getBot
方法参数中的 versionOrAlias 设置为“$LATEST”。 - 将版本硬编码为
12
ingetBot(..)
。
我使用了上述场景的校验和,但错误似乎与
相同PreconditionFailedException: The checksum value doesn't match for the resource named 'LATEST'.
这是代码片段
async putBotAlias(botVersionResponse){
let checksum;
await this.getBot(botVersionResponse.name,'12').then(botRes=>{ // have used 12, LATEST, $LATEST with same error
console.log("Checksum For Latest: " + botRes.checksum);
checksum = botRes.checksum;
});
var params = {
botName: botVersionResponse.name,
botVersion: (parseInt(botVersionResponse.version,10)).toString(),
name: 'LATEST',
checksum : checksum
};
// checksum: checksum
console.log("Params in putBotAlias : " + JSON.stringify(params));
return new Promise((resolve,reject)=>{
this.modelBuildingService.putBotAlias(params, function(err, data) {
if (err){
reject(err);
} // an error occurred
else{
console.log("Put Alias Response :::" + JSON.stringify(data));
resolve(data);
} // successful response
});
});
}
我真的不知道它到底想要什么版本。
非常感谢任何帮助。
PS:请在评论中提及任何其他所需信息。
显然我输入的是 'Bot' 的校验和,而不是我试图输入的 'BotAlias' 的校验和。
更新代码获取 bot Alias 的校验和:
async putBotAlias(botVersionResponse,aliasName){
let checksum;
if(typeof aliasName != "undefined"){
await this.getBotAlias(botVersionResponse.name,aliasName).then(res=>{
console.log("Checksum For Latest ALIAS : " + res.checksum);
checksum = res.checksum;
}).catch((err)=>{
console.log(" Unable to getBotAlias checksum " + err);
});
}
愚蠢的错误,但希望它能帮助任何犯错误的人。 :)