从对话框调用表单

我有一个简单的表格,

[Serializable] class CreateNewLeadForm { public string FirstName; public string LastName; public static IForm BuildForm() { return new FormBuilder() .Message("Lets create a New Lead") .Field(nameof(FirstName)) .Field(nameof(LastName)) .Build(); } }; 

还有一个简单的对话框,

 public class GreetDialog : IDialog { public async Task StartAsync(IDialogContext context) { context.Wait(MessageReceivedAsync); } public async Task MessageReceivedAsync(IDialogContext context, IAwaitable argument) { context.Wait(MessageReceivedAsync); } } 

如何从主对话本身调用启动FormDialog? 一般来说,我们如何在Dialog中开始新的对话框?

要启动FormDialog,您可以执行以下操作:

 var myform = new FormDialog(new CreateNewLeadForm(), CreateNewLeadForm.BuildForm, FormOptions.PromptInStart, null); context.Call(myform, FormCompleteCallback); 

看看PizzaBot就是一个例子。

要在Dialog中启动新对话框,您可以执行以下操作:

  • context.Call传递新对话框的实例和完成回调(如表格中所示)
  • context.Forward,您可以将消息转发到子对话框

    context.Forward(new MyChildDialog(),ResumeAfterChildDialog,message,CancellationToken.None);