Node.js Lex chat bot错误:在同一个语句上第二次执行lambda

Node.js Lex chat bot错误:在同一个语句上第二次执行lambda,node.js,amazon-web-services,aws-lambda,amazon-lex,Node.js,Amazon Web Services,Aws Lambda,Amazon Lex,我已经读过了。 我已搜索并找到: -未回答的问题 -未回答的问题 -未回答的问题 因此,我的问题仍然存在。导致Lex chat bot出现此错误的原因/解决方法: 出现错误:Lambda响应无效: 在同一句话中第二次执行了lambda 该错误仅在尝试使用委托进行响应时发生。以下是代表响应的AWS lambda(node.js 6.10)代码: exports.handler = (event, context, callback) => { try { intent

我已经读过了。
我已搜索并找到:
-未回答的问题
-未回答的问题
-未回答的问题

因此,我的问题仍然存在。导致Lex chat bot出现此错误的原因/解决方法:

出现错误:Lambda响应无效:
在同一句话中第二次执行了lambda

该错误仅在尝试使用委托进行响应时发生。以下是代表响应的AWS lambda(node.js 6.10)代码:

exports.handler = (event, context, callback) => {
    try {
        intentProcessor(event,
            (response) => {
                callback(null, response);
            });
    } catch (err) {
        callback(err);
    }
};

function intentProcessor(intentRequest, callback) {
     respond = delegate(sessionAttributes,intentRequest['currentIntent']['slots']);
     callback(respond);
}

function delegate(sessionAttributes, slots){
    return {
        sessionAttributes,
        dialogAction: {
            type: "Delegate",
            slots
        }
    };
}
我已经确认,响应按预期返回,每个文档都有代表的最低要求,即sessionAttributes和DialogAction:type和slots。插槽按预期返回null

其他可能相关的信息:
-意图有多种表达方式。
-意图有多个插槽。
-不需要任何插槽


对于可能导致此错误的任何建议或信息,我们将不胜感激

我猜您正在调用
FulfillmentCodeHook
中的
delegate()
。当调用委托时,它意味着

Lambda函数指示Amazon Lex选择下一个操作过程

现在,Lambda函数中有两个操作,
DialogCodeHook
FulfillmentCodeHook
。如果您在DialogCodeHook中,那么
委托
将调用FulfillmentCodeHook。但是如果您在FulfillmentCodeHook中,那么它将抛出一个错误

但是,如果您处于FulfillmentCodeHook中,并且由于某种原因您希望修改任何
插槽的值,则可以将该
插槽的值设置为null,然后调用传递新插槽集的代理。这样,代理将再次调用DialogCodeHook

来自AWS文件:

如果字段的值未知,则必须将其设置为null。你 如果您的填写失败,将获得DependencyFailedException异常 函数返回委托对话框操作,而不删除任何 插槽


希望能有所帮助。

谢谢,这无疑为我指明了正确的方向。我的Lambda函数仅用于“实现”部分,而不用于用于
DialogCodeHook
的“初始化和验证”部分。如果插槽是必需的,这就解决了问题,但我认为您不能将
委托
用于非必需插槽,因此我必须将
引导插槽
用于非必需插槽。非常感谢。