我们的机器人构建为用户做了一个“个性测试”。想想Buzzfeed。
我有许多想要增加的属性,只有整数,基于用户对表单的选择,然后返回最终结果。使用Sandwichbot作为模板,它询问的内容如下(引语):
你喜欢帮助别人吗?是,不是
代码就像:
.Confirm(async (state) =>
{
switch (state.HelpYesNo)
{
case true: HelpfulValue++; break;
case false: HurtfulValue++; break;
}
return new PromptAttribute("Thanks, choose OK to continue.");它工作的很好,但我讨厌我不得不让用户‘确认’通过输入OK。这是一个额外的步骤,特别是如果他们必须在每个问题之后去做的话。
我试着用一个验证来编写这篇文章,比如验证:异步(状态,响应) =>,它提供了更好的用户体验,但实际上并没有运行开关用例。我认为开关的格式是在错误的地方进行验证?我不确定这里的语法是如何“验证”来处理这种情况的。
在FormFlow中做这种事情的正确方法是什么?
发布于 2017-05-05 16:09:56
试试这样的东西。布尔字段还会产生“是/否”问题。
[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};
}
}https://stackoverflow.com/questions/43790969
复制相似问题