在Bot框架C#中,是否有任何简单的方法可以使用对话框向用户提示查询序列?

在Bot框架C#中,是否有任何简单的方法可以使用对话框向用户提示查询序列?,c#,botframework,C#,Botframework,我必须在对话框中向用户提示以下查询。如何在BOT框架C中实现这一点# 这是否可以使用对话框链 queryCollection通常是这样的。根据用户的回答,对用户的查询会有所不同 [Serializable] public class questions { public string question {get;set;} public list<questions> yes; public list<questions> No; }

我必须在对话框中向用户提示以下查询。如何在BOT框架C中实现这一点#

这是否可以使用对话框链

queryCollection
通常是这样的。根据用户的回答,对用户的查询会有所不同

[Serializable]
public class questions
{
      public string question {get;set;}
      public list<questions> yes;
      public list<questions> No; 
}

public class SampleQueryDialog : IDialog<SampleQueryDialogResult>
{
    list<questions> questions; { get; set; }

    public async Task StartAsync(IDialogContext context)
    {
        context.Wait(MessageReceived);
    }

    public SampleQueryDialog(list<questions> questions)
    {
        Questions = questions;           
    }

    private async Task MessageReceived(IDialogContext context, IAwaitable<IMessageActivity> result)
    {
         // have to do somthing here..//
        context.Done<SampleQueryDialogResult>(new SSampleQueryDialogResult() { Questions = Questions, Filter = Filter });
    }
}
[可序列化]
公开课问题
{
公共字符串问题{get;set;}
公共列表是;
公开名单编号;
}
公共类SampleQueryDialog:IDialog
{
列出问题;{get;set;}
公共异步任务StartAsync(IDialogContext上下文)
{
Wait(MessageReceived);
}
公共样本查询对话框(列出问题)
{
问题=问题;
}
收到专用异步任务消息(IDialogContext上下文,IAwaitable结果)
{
//我得在这里做点什么//
context.Done(新的SSampleQueryDialogResult(){Questions=Questions,Filter=Filter});
}
}

提前感谢,

我不确定我是否正确理解了这一点,但您需要的是一种更简单的方法,用Bot框架生成问题列表,对吗

我建议你用。它可以仅使用枚举生成问题列表


希望有帮助

在FormFlow旁边使用LUIS实体识别,如下所示:

[LuisIntent("SomeIntent")]
private async Task SomeIntentHandler(IDialogContext context, LuisResult result)
{
    //Check if LUIS Entity count is not 0
    if(result.Entities.Count != 0)
    {
        //Pass in the recognized entities, apart from that form flow will spawn sequential questions for gathering information about your remaining entities.
       FormDialog<YourClass> yourDialog = new FormDialog<YourClass>(new YourClass(), YourClass.BuildForm, PromptOptions.PromptInStart, result.Entities);
       context.Call(yourDialog, ResumeAfterFormFlowComplete);
    }

}
[LuisIntent(“SomeIntent”)]
私有异步任务SomeIntentHandler(IDialogContext上下文,LuisResult结果)
{
//检查LUIS实体计数是否不是0
如果(result.Entities.Count!=0)
{
//除了表单流之外,传入已识别的实体将产生顺序问题,用于收集有关其余实体的信息。
FormDialog yourDialog=新建FormDialog(新建YourClass()、YourClass.BuildForm、PrompOptions.PrompInstart、result.Entities);
调用(yourDialog,ResumeAfterFormFlowComplete);
}
}

ForFlow不适合我想。列表将动态更改。它取决于以前的用户对话