我正在尝试从一个FormFlow启动一个LuisDialog:
[LuisIntent("bookConfRoom")]
public async Task BookConferenceRoom(IDialogContext context, LuisResult result)
{
IDialog<RoomBooking> roomBookingDialog = MakeRootDialog();
context.Call(roomBookingDialog, RoomBookingComplete);
}MakeRootDialog()构建FormFlow表单:
internal static IDialog<RoomBooking> MakeRootDialog()
{
return Chain.From(() =>
FormDialog.FromForm(RoomBooking.BuildForm, options: FormOptions.PromptInStart));
}RoomBooking看起来是这样的:
[Serializable]
public class RoomBooking
{
public LocationOptions MeetingLocation;
public DateTime MeetingTime;
public double NumberOfHours;
public int NumberOfAttendees;
public List<AmenitiesOptions> Amenities;
public static IForm<RoomBooking> BuildForm()
{
return new FormBuilder<RoomBooking>().Build();
}
}当这个意图被击中时,RoomBookingComplete函数之后的简历就会立即运行,而不会出现FormFlow。但是,如果我删除了FormOptions.PromptInStart,那么FormFlow就会运行,但是您必须在机器人启动之前向它发送另一条消息,这就是我认为PromptInStart会修复的吗?
我想我被对话框堆栈的顺序和/或我所处的对话上下文搞混了。任何帮助都将不胜感激。
发布于 2017-10-17 13:15:53
您应该删除Chain.From
internal static IDialog<RoomBooking> MakeRootDialog()
{
return FormDialog.FromForm(RoomBooking.BuildForm, options: FormOptions.PromptInStart));
}https://stackoverflow.com/questions/46743684
复制相似问题