亚马逊Lex V2 Lambda没有进入下一个插槽



我配置了一个LEX V2 bot,它有两个插槽和一个确认插槽。这两个时隙请求dateFromdateTo。现在我有了一辆Lambda,我用它来完成任务,但也需要在每一个活动中开火。在初始发声之后,Lambda取event.proposedNextState.dialogAction.slotToElicit并将其返回到dialogAction.slotToElicit内部,同时将dialogAction.type设置为"0";代表";。现在,即使lambda以进行响应,但在提供dateFrom值之后,这种方法仍然可以正常工作

{
sessionState: { dialogAction: { type: 'Delegate', slotToElicit: 'dateTo' } }
}

下一个时隙不是dateTo而是dateFrom。有人知道为什么它可能不会那样工作吗?我不明白为什么会是这样,也许我应该发送一个不同类型的对话框操作?以下是完整的Lambda函数,用于处理类型为DialogCodeHook:的事件

const response: LexResponse = {
sessionState: {
dialogAction: {
type: LexDialogActionType.Delegate,
slotToElicit: event.proposedNextState.dialogAction.slotToElicit,
},
},
};
console.log("EVENT", event);
console.log("RESPONSE", response);
callback(null, response);

如果dialogAction.type=Delegate,则Intent在Lambda响应中是强制性的。然而,AWS关于响应格式的文档具有误导性。上面写着";intent–亚马逊Lex V2应该使用的意图的名称";。实际上,这是一个结构。将其设置为event.sessionState.intent.

虽然不是强制性的,但也可以考虑转发sessionAttributes。

最新更新