在Bot框架C#中,是否有任何简单的方法可以使用对话框向用户提示查询序列?
我必须在对话框中向用户提示以下查询。如何在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; }
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不适合我想。列表将动态更改。它取决于以前的用户对话