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