c# botframework

c# - Llamar formularios desde cuadros de diálogo



botframework (1)

Tengo una forma simple

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

Y un simple diálogo,

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

¿Cómo llamo a Initiate a FormDialog desde el cuadro de diálogo principal? En general, ¿cómo iniciamos nuevos diálogos dentro de un diálogo?


Para iniciar un FormDialog solo puede hacer:

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

Eche un vistazo a PizzaBot para ver un ejemplo.

Para iniciar nuevos cuadros de diálogo dentro de un cuadro de diálogo, puede hacer lo siguiente:

  • context.Call pasando la instancia del nuevo diálogo y la devolución de llamada de finalización (como en el formulario)
  • contexto Reenviar donde puede reenviar el mensaje al cuadro de diálogo secundario

    context.Forward (nuevo MyChildDialog (), ResumeAfterChildDialog, mensaje, CancellationToken.None);