从对话框调用表单

Man*_*y D 5 c# botframework

我有一个简单的表格,

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

    }
};
Run Code Online (Sandbox Code Playgroud)

还有一个简单的对话框,

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);
    }  
}  
Run Code Online (Sandbox Code Playgroud)

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

Eze*_*dib 7

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

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

context.Call<CreateNewLeadForm>(myform, FormCompleteCallback);
Run Code Online (Sandbox Code Playgroud)

看看PizzaBot就是一个例子.

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

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

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