Customize/modifiy bot 框架中class 属性 的提示文字
Customize/modifiy prompt text of a class property in bot framework
我的 class
中有以下字段
[Prompt("Please enter conference title/subject")]
public string confname { get; set; }
我想动态修改文本 "Please enter conference title/subject"。
其实我想把URL连同提示文字一起传递,怎么实现?
我试过下面的代码,但不知道如何在 promptattribute 中传递修改后的文本
public static IForm<ConferenceBooking> BuildForm()
{
return new FormBuilder<ConferenceBooking>().Message("Tell me meeting details!")
.Field(nameof(confname), prompt: new PromptAttribute("please enter confname"))
}
您可以使用 SetDefine(delegate)
动态更改字段的属性。委托有两个参数:表单的状态和它绑定的字段。代表应该总是 return true.
这是一个例子:
[Serializable]
public class SimpleForm
{
public string Name;
[Numeric(1, 5)]
[Prompt("Your experience with the form")]
public float? Rating;
public static IForm<SimpleForm> BuildForm()
{
return new FormBuilder<SimpleForm>()
.Field(nameof(Rating))
.Field(new FieldReflector<SimpleForm>(nameof(Name))
.SetDefine(DefinitionMethod))
.Build();
}
private static async Task<bool> DefinitionMethod(SimpleForm state, Field<SimpleForm> field)
{
field.SetPrompt(new PromptAttribute($"You chose a rating of {state.Rating}. What is your name?."));
return true;
}
}
我的 class
中有以下字段[Prompt("Please enter conference title/subject")]
public string confname { get; set; }
我想动态修改文本 "Please enter conference title/subject"。 其实我想把URL连同提示文字一起传递,怎么实现?
我试过下面的代码,但不知道如何在 promptattribute 中传递修改后的文本
public static IForm<ConferenceBooking> BuildForm()
{
return new FormBuilder<ConferenceBooking>().Message("Tell me meeting details!")
.Field(nameof(confname), prompt: new PromptAttribute("please enter confname"))
}
您可以使用 SetDefine(delegate)
动态更改字段的属性。委托有两个参数:表单的状态和它绑定的字段。代表应该总是 return true.
这是一个例子:
[Serializable]
public class SimpleForm
{
public string Name;
[Numeric(1, 5)]
[Prompt("Your experience with the form")]
public float? Rating;
public static IForm<SimpleForm> BuildForm()
{
return new FormBuilder<SimpleForm>()
.Field(nameof(Rating))
.Field(new FieldReflector<SimpleForm>(nameof(Name))
.SetDefine(DefinitionMethod))
.Build();
}
private static async Task<bool> DefinitionMethod(SimpleForm state, Field<SimpleForm> field)
{
field.SetPrompt(new PromptAttribute($"You chose a rating of {state.Rating}. What is your name?."));
return true;
}
}