2017-10-14 44 views
0

我想开始从LuisDialog一个FormFlow后:微软BotFramework FormFlow PromptInStart跳到恢复功能

[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(); 
    } 
} 

当意图被击中后,简历在船尾er函数RoomBookingComplete立即运行而不显示FormFlow。但是,如果我删除FormOptions.PromptInStart然后FormFlow运行,你必须发送另一个消息到机器人开始之前,这是我认为PromptInStart将修复?

我想我对对话框堆栈的顺序和/或我所在的对话框上下文感到困惑。任何帮助将不胜感激。

回答

0

您应该删除Chain.From

internal static IDialog<RoomBooking> MakeRootDialog() 
{ 
    return FormDialog.FromForm(RoomBooking.BuildForm, options: FormOptions.PromptInStart)); 
} 
+0

感谢您的帮助@EzequielJadib。不幸的是,即使'Chain.From'被移除,我仍然遇到同样的问题。 – Poc275

+0

你正在使用什么版本的BotBuilder? –

+0

它是版本3.8.5.0 – Poc275