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

Alexa sends SessionEndedRequest on timeout then displays error card to user

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

基于这些文档:Handle Requests Sent by Alexa:

Your service cannot send back a response to a SessionEndedRequest.

因此,我不会回应这些请求。

但随后我的应用程序显示了一张包含以下消息的卡片:

Skill response was marked as failure
(Skill Name)

Request Identifier: amzn1.echo-api.request.xxxxxxxxxxxxxxxxxxxxx

The target Lambda application returned a failure response

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

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

您确定卡中的错误仅针对 SessionEndedRequest

一般来说,即使您向 Alexa 发回 SessionEndedRequest 的回复,也不会被朗读。

您可以在 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();
  },
};