C# 组合来自链的表单的结果
如何将表单中的结果合并为一个结果并将结果发布给用户? 我需要从链中设置声明属性,并将完成的SupportRequest发布给用户。 在文档中我看到了Chain.Fold方法,但我不知道如何使用它 我的代码:C# 组合来自链的表单的结果,c#,botframework,C#,Botframework,如何将表单中的结果合并为一个结果并将结果发布给用户? 我需要从链中设置声明属性,并将完成的SupportRequest发布给用户。 在文档中我看到了Chain.Fold方法,但我不知道如何使用它 我的代码: public enum SystemSelection { SharePoint, BizTalk, Azure, Office365 }; public enum RequestType { Bug, SupportRequest, Question }; public enum Impo
public enum SystemSelection { SharePoint, BizTalk, Azure, Office365 };
public enum RequestType { Bug, SupportRequest, Question };
public enum Importance { Blocking, High, Medium, Low };
[Serializable]
class Declaration
{
public string Type;
public string Amount;
public string Date;
public static IForm<Declaration> BuildForm()
{
return new FormBuilder<Declaration>()
.Message("Add a declaration")
.Build();
}
}
[Serializable]
class SupportRequest
{
public SystemSelection? SystemSelection;
public RequestType? RequestType;
public Importance? Importance;
//need to setup this property
public Declaration Declaration;
public static IForm<SupportRequest> BuildForm()
{
return new FormBuilder<SupportRequest>()
.Message("Welcome to the simple support bot!")
.AddRemainingFields()
.Build();
}
internal static IDialog<SupportRequest> MakeRootDialog()
{
var dlg = from x in FormDialog.FromForm(SupportRequest.BuildForm)
from y in FormDialog.FromForm(Declaration.BuildForm)
select x;
return dlg;
}
internal static IDialog<Declaration> MakeRootDialog2()
{
SupportRequest t = null;
var dlg = Chain.From(() => FormDialog.FromForm(SupportRequest.BuildForm))
.ContinueWith<SupportRequest, Declaration>(async (ctx, sr) =>
{
t = await sr;
return FormDialog.FromForm(Declaration.BuildForm);
});
return dlg;
}
}
公共枚举系统选择{SharePoint、BizTalk、Azure、Office365};
公共枚举请求类型{Bug,SupportRequest,Question};
公共枚举重要性{阻塞、高、中、低};
[可序列化]
类声明
{
公共字符串类型;
公共字符串数量;
公共字符串日期;
公共静态表单BuildForm()
{
返回新的FormBuilder()
.Message(“添加声明”)
.Build();
}
}
[可序列化]
类支持请求
{
公共系统选择?系统选择;
公共请求类型?请求类型;
公共重要性;
//需要设置此属性
公开声明;
公共静态表单BuildForm()
{
返回新的FormBuilder()
.Message(“欢迎使用简单支持机器人!”)
.AddRemainingFields()
.Build();
}
内部静态IDialog MakeRootDialog()
{
var dlg=FormDialog.FromForm(SupportRequest.BuildForm)中的x
从FormDialog.FromForm(Declaration.BuildForm)中的y开始
选择x;
返回dlg;
}
内部静态IDialog MakeRootDialog2()
{
SupportRequest t=null;
var dlg=Chain.From(()=>FormDialog.FromForm(SupportRequest.BuildForm))
.ContinueWith(异步(ctx,sr)=>
{
t=等待sr;
返回FormDialog.FromForm(Declaration.BuildForm);
});
返回dlg;
}
}
为什么要使用Chain?@EzequielJadib我不知道从用户处获取复杂类型(如声明)值的其他方法-正如我看到的,BotFramework只支持FormFlow中的基本类型。我使用chain调用内部表单从用户处获取数据。你建议另一种方法吗?谢谢,我不确定我是否听了你的话,你是想在第一张表格填好后再打一张表格吗?是的。我想从第二个表单中得到结果,并在第一个表单中设置属性声明。并作为Chain的结果返回已完成的SupportRequest。为什么要使用Chain?@EzequielJadib我不知道从用户处获取复杂类型(如声明)值的另一种方法,因为我看到BotFramework只支持FormFlow中的基元类型。我使用chain调用内部表单从用户处获取数据。你建议另一种方法吗?谢谢,我不确定我是否听了你的话,你是想在第一张表格填好后再打一张表格吗?是的。我想从第二个表单中得到结果,并在第一个表单中设置属性声明。并将已完成的SupportRequest作为链的结果返回。