使用 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};
    }
}