我正在用C#中Microsoft Bot Framework V3构建一个bot,并试图让Dialog在输入任何输入之前开始并“欢迎”用户指令。每次用户完成表单时,我都会重复对话框。在bot中没有提示的情况下启动对话框(对于C#)
我在尝试使用FormFlow选项:FormOptions.PromptInStart,但它仍然只有在输入一些输入后才会显示欢迎消息。不知道这是否被V1弃用,或者我只是做得不对。任何建议?
我的类如下:
MessagesController:
internal static IDialog<MyClass> MakeRootDialog()
{
return Chain.From(() => FormDialog.FromForm(MyClass.BuildForm, options: FormOptions.PromptInStart))
.Do(async (context, order) =>
{//some actions here }
});
}
MyClass.cs:
[Serializable]
public class MyClassDialog : IDialog<object>
{
public async Task StartAsync(IDialogContext context)
{
context.Wait(MessageReceivedAsync);
}
public async Task MessageReceivedAsync(IDialogContext context, IAwaitable<IMessageActivity> argument)
{
var message = await argument;
await context.PostAsync("You said: " + message.Text);
context.Wait(MessageReceivedAsync);
}
}
MyClassDialog.cs:
public class MyClass
{
public static IForm<MyClass> BuildForm()
{
OnCompletionAsyncDelegate<MyClass> processOrder = async (context, state) =>
{
await context.PostAsync("We are currently filing your order.....");
};
return new FormBuilder<MyClass>()
.Message("Welcome to my bot!")
//some actions here
.Confirm(//more actions here)
.AddRemainingFields()
.Message("Thanks for providing your inputs")
.OnCompletion(processOrder)
.Build();
}
};
裁判是的,我们是使用模拟器进行测试,但在WebChat中遇到同样的问题。意识到这是我们的Dialog类的一个问题。 – kgonzal3