putBotAlias ​​не работает в AWS LexModelBuildingService node.js - PullRequest
2 голосов
/ 23 апреля 2019

Я пытался заменить существующий псевдоним LexBot (с именем LATEST) только что созданной версией бота.

Теперь, согласно документации aws

Если вы хотите обновить псевдоним бота, установите в поле контрольной суммы контрольную сумму самой последней редакции версии $ LATEST.

Я вижу, что Alias ​​LATEST использует версию бота 12 в консоли Lex.

Я попытался получить контрольную сумму, используя следующее (я использую getBot(...) LexModelBuildingService для получения контрольной суммы бота):

  • используя само псевдоним как версию, т.е. LATEST.
  • установка versionOrAlias ​​в методе getBot в качестве параметра $ LATEST.
  • Жесткое кодирование версии до 12 в 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: Пожалуйста, укажите любую дополнительную информацию в комментариях.

1 Ответ

0 голосов
/ 18 июля 2019

По-видимому, я ставил контрольную сумму «бота», а не «ботАлии», которую я пытался поставить.

Обновленный код получает контрольную сумму бота 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);
            });
        }

Глупая ошибка, но надеюсь, что она поможет любому, кто ее сделает.:)

...