2016-05-30 65 views
3

我有一个简单的形式调用形式,从对话框

[Serializable] 
class CreateNewLeadForm 
{ 
    public string FirstName; 
    public string LastName; 
    public static IForm<CreateNewLeadForm> BuildForm() 
    { 

     return new FormBuilder<CreateNewLeadForm>() 
      .Message("Lets create a New Lead") 
      .Field(nameof(FirstName)) 
      .Field(nameof(LastName)) 
      .Build(); 

    } 
}; 

和一个简单的对话框,

public class GreetDialog : IDialog<object> 
{   
    public async Task StartAsync(IDialogContext context) 
    { 

     context.Wait(MessageReceivedAsync); 
    } 
    public async Task MessageReceivedAsync(IDialogContext context, IAwaitable<Message> argument) 
    { 
     context.Wait(MessageReceivedAsync); 
    } 
} 

我如何调用,在主对话框本身启动一个FormDialog?总的来说,我们如何在Dialog中引入新的对话框?

回答

6

为了启动FormDialog你可以这样做:

var myform = new FormDialog<CreateNewLeadForm>(new CreateNewLeadForm(), CreateNewLeadForm.BuildForm, FormOptions.PromptInStart, null); 

context.Call<CreateNewLeadForm>(myform, FormCompleteCallback); 

看看到PizzaBot为例。

要启动对话框中的新的对话框,你可以这样做:

  • context.Call传递新的对话框的实例和完成回调(如表格)
  • context.Forward在那里你可以转发消息到子对话框

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