使用 FormFlow Bots Framework 测验程序
Using FormFlow Bots Framework Quiz Program
我们的机器人构建为用户做了一个“个性测验”。想想 Buzzfeed。
我有多种属性想要增加,只是整数,基于用户在表单上的选择,然后是 return 最终结果。
使用 Sandwichbot 作为模板,这是在询问类似(释义):
你喜欢帮助别人吗?是 否
代码如下:
.Confirm(async (state) =>
{
switch (state.HelpYesNo)
{
case true: HelpfulValue++; break;
case false: HurtfulValue++; break;
}
return new PromptAttribute("Thanks, choose OK to continue.");
它工作正常,但我讨厌我必须通过键入 OK 让用户“确认”。这是一个额外的步骤,特别是如果他们必须在每个问题之后都这样做的话。
我试着用验证代替,例如验证:异步(状态,响应)=>
这提供了更好的用户体验,但实际上 运行 开关盒。我认为开关的格式在错误的位置进行验证?我不确定这里的语法如何让 'validate' 处理案例。
在 FormFlow 中执行此类操作的正确方法是什么?
尝试这样的事情。布尔字段也会导致 Yes/No 问题。
[Serializable]
public class QuizForm
{
public int HelpfulValue;
public int HurtfulValue;
[Prompt("Do you like to help people? {||}")]
public bool HelpPeople;
public static IForm<QuizForm> BuildForm()
{
return new FormBuilder<QuizForm>()
.Message("Let the quiz begin...")
.Field(nameof(HelpPeople), validate: ValidateBool)
// other fields
.Build();
}
private static async Task<ValidateResult> ValidateBool(QuizForm state, object value)
{
var TrueOrFalse = (bool) value;
switch (TrueOrFalse)
{
case true: state.HelpfulValue++; break;
case false: state.HurtfulValue++; break;
}
return new ValidateResult{IsValid = true, Value = value};
}
}
我们的机器人构建为用户做了一个“个性测验”。想想 Buzzfeed。
我有多种属性想要增加,只是整数,基于用户在表单上的选择,然后是 return 最终结果。 使用 Sandwichbot 作为模板,这是在询问类似(释义):
你喜欢帮助别人吗?是 否
代码如下:
.Confirm(async (state) =>
{
switch (state.HelpYesNo)
{
case true: HelpfulValue++; break;
case false: HurtfulValue++; break;
}
return new PromptAttribute("Thanks, choose OK to continue.");
它工作正常,但我讨厌我必须通过键入 OK 让用户“确认”。这是一个额外的步骤,特别是如果他们必须在每个问题之后都这样做的话。
我试着用验证代替,例如验证:异步(状态,响应)=> 这提供了更好的用户体验,但实际上 运行 开关盒。我认为开关的格式在错误的位置进行验证?我不确定这里的语法如何让 'validate' 处理案例。
在 FormFlow 中执行此类操作的正确方法是什么?
尝试这样的事情。布尔字段也会导致 Yes/No 问题。
[Serializable]
public class QuizForm
{
public int HelpfulValue;
public int HurtfulValue;
[Prompt("Do you like to help people? {||}")]
public bool HelpPeople;
public static IForm<QuizForm> BuildForm()
{
return new FormBuilder<QuizForm>()
.Message("Let the quiz begin...")
.Field(nameof(HelpPeople), validate: ValidateBool)
// other fields
.Build();
}
private static async Task<ValidateResult> ValidateBool(QuizForm state, object value)
{
var TrueOrFalse = (bool) value;
switch (TrueOrFalse)
{
case true: state.HelpfulValue++; break;
case false: state.HurtfulValue++; break;
}
return new ValidateResult{IsValid = true, Value = value};
}
}