在 Microsoft Bot Framework 中使用 FormFlow 的动态多个选择字段
Dynamic MULTIPLE choice fields using FormFlow in Microsoft Bot Framework
假设您正在动态获取可以在航班上办理登机手续的乘客列表。用户需要能够 select 列表中任意数量的乘客办理登机手续。我可以制作动态列表,但我不知道如何允许它 select 多个选项。我在动态字段上使用了 .SetAllowsMultiple(true) 但它不起作用。我查看了文档 here 中的表单流示例,但该示例仅允许单个 selection。你如何让它与多个 select 离子一起工作?
这是我放在 CheckinDialog class 中的 属性:
public string Passenger { get; set; }
这是我的动态字段:
.Field(new FieldReflector<CheckinDialog>(nameof(Passenger))
.SetAllowsMultiple(true)
.SetActive((state) =>
{
return CheckinDialog.Passengers != null && CheckinDialog.Passengers.Count > 0;
})
.SetPrompt(new PromptAttribute(Resources.Checkin.Passengers))
.SetType(null)
.SetDefine((state, field) =>
{
foreach (var pax in GetPassengers())
field
.AddDescription(pax, pax)
.AddTerms(pax, pax);
return TaskHelpers.FromResult(true);
}))
一个解决方法是多次启动表单,这意味着一旦您第一次填写表单并且 select 一位乘客,在表单完成的回调中您可以提示用户是否他想检查另一名乘客。如果答案是肯定的,您可以再次启动该表单。
这意味着您将必须维护乘客的 selection 并使用它来过滤乘客列表以显示在表格中(以避免为乘客办理两次登机手续)。
Here is some sample code 显示方法(缺少 PromptConfirm 对话框)
假设您正在动态获取可以在航班上办理登机手续的乘客列表。用户需要能够 select 列表中任意数量的乘客办理登机手续。我可以制作动态列表,但我不知道如何允许它 select 多个选项。我在动态字段上使用了 .SetAllowsMultiple(true) 但它不起作用。我查看了文档 here 中的表单流示例,但该示例仅允许单个 selection。你如何让它与多个 select 离子一起工作?
这是我放在 CheckinDialog class 中的 属性:
public string Passenger { get; set; }
这是我的动态字段:
.Field(new FieldReflector<CheckinDialog>(nameof(Passenger))
.SetAllowsMultiple(true)
.SetActive((state) =>
{
return CheckinDialog.Passengers != null && CheckinDialog.Passengers.Count > 0;
})
.SetPrompt(new PromptAttribute(Resources.Checkin.Passengers))
.SetType(null)
.SetDefine((state, field) =>
{
foreach (var pax in GetPassengers())
field
.AddDescription(pax, pax)
.AddTerms(pax, pax);
return TaskHelpers.FromResult(true);
}))
一个解决方法是多次启动表单,这意味着一旦您第一次填写表单并且 select 一位乘客,在表单完成的回调中您可以提示用户是否他想检查另一名乘客。如果答案是肯定的,您可以再次启动该表单。
这意味着您将必须维护乘客的 selection 并使用它来过滤乘客列表以显示在表格中(以避免为乘客办理两次登机手续)。
Here is some sample code 显示方法(缺少 PromptConfirm 对话框)