Alexa技能正在发出“请求的技能的响应有问题”,我们可以将此消息更改为自定义消息吗?

时间:2019-11-13 21:26:48

标签: alexa session-timeout alexa-skill

我是Alexa技能的新手,并且正在开发Alexa技能,在我的情况下,有些情况下我不想等待HTTP响应返回,并且由于Http响应延迟而导致的lambda超时可以我给出了一条自定义消息来代替“请求的技能的响应存在问题”。我的代码是:

  'ProtectArmIntent': function() {
    if(checkAccessToken(this.event.session.user.accessToken)){
      var data = {
        mode: HUB_MODE.ARM,
        regId: "null"
      }
      callAPI("post", API_COMMANDS.HUB_MODE, data, this.event.session.user.accessToken)
          .then((body) => {
            if(body.response.status === "SUCCESS"){
              this.emit(':tell', messages.ARM.SUCCESSFUL);
            } else {
              this.emit(':tell', messages.ARM.FAILED);
            }
          })
          .catch((err) => {
              this.emit('SessionEndedRequest');
            //errorHandler.call(this, err, messages.ARM.FAILED);
          });
    } else {
      this.emit('LinkAccount');
    }
  }, 

和alexa模拟器请求:

“请求”:{     “ type”:“ SessionEndedRequest”,     “ requestId”:“ amzn1.echo-api.request.67e1612e-f8a4-43f5-ab28-175ba7d7941f”,     “ timestamp”:“ 2019-11-13T21:13:11Z”,     “ locale”:“ en-GB”,     “ reason”:“ ERROR”,     “错误”:{         “ type”:“ INVALID_RESPONSE”,         “ message”:“将请求分发给技能时发生异常。”     } }

我知道问题是因为lambda超时是HTTP响应中的延迟,所以我可以给出一些自定义消息,例如您的命令被接受并且将在一段时间内执行。

请帮助,在此先感谢

1 个答案:

答案 0 :(得分:1)

使用自己的计时器功能可能会有所帮助。将您的计时器设置为低于Lambda超时,然后在计时器结束时发送响应,这当然不会导致Lambda超时错误。This answer might help.