Alexa在超时时发送SessionEndedRequest,然后向用户显示错误卡

时间:2019-03-21 05:59:28

标签: aws-lambda alexa alexa-skills-kit

在测试我的技能时,如果我不回答且超时,Alexa会向我的Lambda函数发送一个SessionEndedRequest。

基于以下文档:Handle Requests Sent by Alexa

  

您的服务无法将响应发送回SessionEndedRequest。

因此,我没有回应这些要求。

但是随后我的应用显示了一条带有以下消息的卡:

  

技能响应被标记为失败
  (技能名称)

     

请求标识符:amzn1.echo-api.request.xxxxxxxxxxxxxxxxxxxxx

     

目标Lambda应用程序返回了失败响应

那么我们该如何处理没有给出响应并且不会导致此错误的请求?

我在Lambda中使用Node.js,但Python回答也很好。

1 个答案:

答案 0 :(得分:1)

您确定卡中的错误仅是SessionEndedRequest吗?

通常,即使您将SessionEndedRequest的回复发送回Alexa,也不会说出来。

您可以在ask-nodejs-sdk-v2中处理这样的SessionEndedRequest

const SessionEndedRequestHandler = {
  canHandle(handlerInput) {
    console.log("Inside SessionEndedRequestHandler");
    return handlerInput.requestEnvelope.request.type === 'SessionEndedRequest';
  },
  handle(handlerInput) {
    console.log(`Session ended with reason: ${JSON.stringify(handlerInput.requestEnvelope)}`);
    return handlerInput.responseBuilder.getResponse();
  },
};