我正在构建一个 LuisDialog 并且 LUIS 集成运行良好。
在 LUIS 没有填补我需要的所有空白的情况下,消除歧义的最佳方法是什么?
现在,我使用 PromptDialog 回调 - 所以在 Dialog 方法中(用 LuisIntent 属性装饰),当我需要获取更多详细信息/消除歧义时,我会:
PromptDialog.Choice<string>(context, EnsureTimeOfDayChosen, new[] { "Morning (AM)", "Afternoon (PM)", "Any" }, "What time of day would you like us to book the appointment? (AM/PM/Any)", "Please choose AM or PM. Alternatively, if you don't mind which, just say Any.");
和代表的身体(EnsureTimeOfDayChosen):
string AmPmOrAny = await result;
context.PerUserInConversationData.SetValue<string>("TimeOfDay", AmPmOrAny);
BookAppointment(context);
这种方法的问题是委托的最后一行——感觉不对。我不能轻易地回调到我最初调用的地方,LuisIntent 装饰方法和恢复。
相反,我必须预先处理 LUIS 信息,并在收集更多信息后调用 BookAppointment 方法,并将其存储在 PerUserInConversationData 中。
我做错了吗?
任何帮助将不胜感激 - 亲切的问候,马特。