首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用FormFlow Bots框架测试程序

使用FormFlow Bots框架测试程序
EN

Stack Overflow用户
提问于 2017-05-04 19:08:04
回答 1查看 272关注 0票数 1

我们的机器人构建为用户做了一个“个性测试”。想想Buzzfeed。

我有许多想要增加的属性,只有整数,基于用户对表单的选择,然后返回最终结果。使用Sandwichbot作为模板,它询问的内容如下(引语):

你喜欢帮助别人吗?是,不是

代码就像:

代码语言:javascript
复制
                       .Confirm(async (state) =>
                       {

                        switch (state.HelpYesNo)
                        {
                            case true: HelpfulValue++; break;
                            case false: HurtfulValue++; break;
                        }
                        return new PromptAttribute("Thanks, choose OK to continue.");

它工作的很好,但我讨厌我不得不让用户‘确认’通过输入OK。这是一个额外的步骤,特别是如果他们必须在每个问题之后去做的话。

我试着用一个验证来编写这篇文章,比如验证:异步(状态,响应) =>,它提供了更好的用户体验,但实际上并没有运行开关用例。我认为开关的格式是在错误的地方进行验证?我不确定这里的语法是如何“验证”来处理这种情况的。

在FormFlow中做这种事情的正确方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-05 16:09:56

试试这样的东西。布尔字段还会产生“是/否”问题。

代码语言:javascript
复制
[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};
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43790969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档