让我尝试解释一下我的情况。我有一个Intent FundTransfer,询问诸如“您现在要还是以后要进行转账?”之类的问题。用户稍后说。
然后,我将重定向到另一个计划转移的意图。
节点代码:
return handlerInput.responseBuilder
.addDelegateDirective({
name: "ScheduleTransferIntent",
confirmationStatus: "NONE",
slots: {}
})
.withShouldEndSession(false)
.getResponse();
ScheduleTransferIntent有2个插槽,scheduleDate和scheduleTime。
我让Alexa处理这些插槽。我有一个未完成状态的处理程序,
const StartedInProgressScheduleTransferIntentHandler = {
canHandle(handlerInput) {
return (
handlerInput.requestEnvelope.request.type === "IntentRequest" &&
handlerInput.requestEnvelope.request.intent.name ===
"ScheduleTransferIntent" &&
handlerInput.requestEnvelope.request.dialogState !== "COMPLETED"
);
},
handle(handlerInput) {
return handlerInput.responseBuilder.addDelegateDirective().getResponse();
}
};
scheduleDate是Amazon.Date类型,我已将其设为必填项。
Alexa语音提示:我应该安排在哪个日期进行转移?
用户话语:{scheduleDate}
当用户给出类似明天的答案时,我可以看到该值已满,但Alexa再次问了同样的问题。
现在,如果我添加一个新的用户话语,
用户话语:
{scheduleDate}
在{scheduleDate}
当用户给“明天”时,Alexa询问时间。为什么会这样?我不想在答案前添加任何文本。
更新:当我回答“明天”时,它可以工作,但是当我给出日期时,则是同样的问题。但是设备日志会显示我填写的值,
"payload": {
"skillId": null,
"timestamp": "2019-05-01T11:46:47.644Z",
"dialogRequestId": "5d2dc23b-899c-4656-9be4-65faf1df88ec",
"skillRequestId": null,
"type": "ConsideredIntents",
"content": {
"intents": [
{
"name": "ScheduleTransferIntent",
"confirmationStatus": "NONE",
"slots": {
"scheduleTime": {
"name": "scheduleTime",
"value": null,
"confirmationStatus": "NONE",
"encryptedValue": null
},
"scheduleDate": {
"name": "scheduleDate",
"value": "2019-09-25",
"confirmationStatus": "NONE",
"encryptedValue": null
}
}
}
]
}
}