我在lambda.But中为单个时隙确认编写了这段代码,这不是work.Only --它将调用名称时隙,而不是限定槽。
// Confirm slot: name
if(intentObj.slots.name.name == "name") {
if (intentObj.slots.name.confirmationStatus !== 'CONFIRMED') {
if (intentObj.slots.name.confirmationStatus !== 'DENIED') {
// slot status: unconfirmed
const slotToConfirm = 'name';
const speechOutput = 'Your name is ' + intentObj.slots.name.value + ', is that right?';
// const repromptSpeech = speechOutput;
this.emit(':confirmSlot', slotToConfirm, speechOutput);
} else {
// slot status: denied => ask again
const slotToElicit = 'name';
const speechOutput = 'What is your name?';
//const repromptSpeech = 'Please tell me what is your name';
const updatedIntent = 'DialogIntent';
this.emit(':elicitSlot', slotToElicit, speechOutput, updatedIntent);
}
}
}
// Confirm slot: qualification
if(intentObj.slots.qualification.qualification == "qualification") {
if (intentObj.slots.qualification.confirmationStatus !== 'CONFIRMED') {
if (intentObj.slots.qualification.confirmationStatus !== 'DENIED') {
// slot status: unconfirmed
const slotToConfirm = 'qualification';
const speechOutput = 'Your qualification is ' + intentObj.slots.qualification.value + ', is that right?';
// const repromptSpeech = speechOutput;
this.emit(':confirmSlot', slotToConfirm, speechOutput);
} else {
// slot status: denied => ask again
const slotToElicit = 'qualification';
const speechOutput = 'What is your qualification?';
//const repromptSpeech = 'Please tell me what is your qualification';
const updatedIntent = 'DialogIntent';
this.emit(':elicitSlot', slotToElicit, speechOutput, updatedIntent);
}
}
}请分享有关插槽确认的任何信息。
发布于 2018-06-08 14:33:54
您的第一个插槽的if语句始终是正确的。
if(intentObj.slots.name.name == "name") {.}
这是因为slots.slotName.name将始终是时隙的名称。这是一个无用的if语句。
您可能希望检查是否设置了插槽,并且值为null。然后你可以稍微改变一下你的逻辑。
if(intentObj.slots.name && intentObj.slots.name.value !== null) {
// check if confirmed or not
} else {
// elicit slot "name"
}第二个插槽的if语句将始终是假的。
if(intentObj.slots.qualification.qualification ==“资格”){
这是因为在qualification数组中没有slots.slotName键。因此,只需将其更改为与上面的类似,检查是否设置了qualification插槽,该值是否为null。
if(intentObj.slots.qualification && intentObj.slots.qualification.value !== null) {
// check if confirmed or not
} else {
// elicit slot "qualification"
}https://stackoverflow.com/questions/50755207
复制相似问题