首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >‘`Feedback`’文本未显示在bot会话中

‘`Feedback`’文本未显示在bot会话中
EN

Stack Overflow用户
提问于 2018-07-02 12:56:02
回答 1查看 87关注 0票数 3

我的表单流对话框包含一个应用自定义验证的字段.

代码语言:javascript
复制
 var form = builder
    .Field(new FieldReflector<CarValuationDialog>(nameof(UserName))
    .SetActive(state => string.IsNullOrEmpty(state.UserName)))
    .Field(new FieldReflector<CarValuationDialog>(nameof(ValuationOption))
        .SetPrompt(new PromptAttribute($"Hello {{UserName}}.<br /><br />Are you looking to get an price estimate for a car you’re selling, or for a car you’re looking to buy? {{||}}")))
    .Field(new FieldReflector<CarValuationDialog>(nameof(RegistrationNumber))
        .SetDefine(RegistrationNumberDefinitionMethod))
    .Field(new FieldReflector<CarValuationDialog>(nameof(Mileage))
                    .SetValidate(async (state, value) =>
                        {
                            var result = new ValidateResult { IsValid = true, Value = value };

                            if (int.TryParse(value.ToString(), out int mileage))
                            {
                                result.IsValid = true;
                            }
                            else
                            {
                                result.Feedback = "That isn't valid number. Can you enter it again please?";
                                result.IsValid = false;
                            }

                            return await Task.FromResult(result);
                        }))
    .Field(nameof(PreviousOwnerOption),
        active: carValuationDialog => carValuationDialog.ValuationOption == ValuationOptions.LookingToSell)
    .Field(nameof(ServiceHistoryOption),
        active: carValuationDialog => carValuationDialog.ValuationOption == ValuationOptions.LookingToSell)
    .Confirm(Confirmation)
    .OnCompletion(GetValuationAndDisplaySummaryToUser);

SetValidate()执行,并且给定的里程值不是int时,将执行result.Feedback = ...行。但是,没有看到“这不是一个有效的里程值。您可以再次输入它吗?”我看到这个..。

完全取消,我确实在对话框类上声明了以下属性

[Template(TemplateUsage.NotUnderstood, "Sorry, I don't understand '{0}'.")]

但我认为在这种情况下,result.Feedback文本会显示给用户吗?不使用Template[]会在用户输入无效里程时显示以下文本.

"d“不是汽车里程选项。

这看起来很垃圾,也是我使用Template[]覆盖的原因。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-02 13:46:37

编辑I能够通过将模板应用到字段本身进行验证来实现这一点。这应该是你所要寻找的行为。请注意,我没有做广泛的测试,我只是想让总体的想法发挥作用。下面是我使用的代码:

代码语言:javascript
复制
[Serializable]
public class SandwichOrder
{
    //public PreviousOwnerOptions Options;
    [Template(TemplateUsage.NotUnderstood, "Sorry, I don't understand '{0}'.")]
    [Prompt("What is the {&}?")]
    public int Mileage;

    [Template(TemplateUsage.NotUnderstood, "Sorry, This is not valid '{0}'.")]
    [Prompt("How many {&}?")]
    public int Days;


    public static IForm<SandwichOrder> BuildForm()
    {
        var form = new FormBuilder<SandwichOrder>()
            .Field(new FieldReflector<SandwichOrder>(nameof(Mileage))
                .SetValidate(async (state, value) =>
                {
                    var result = new ValidateResult {IsValid = true, Value = value};

                    if (int.TryParse(value.ToString(), out int mileage))
                    {
                        result.IsValid = true;
                    }
                    else
                    {
                        result.IsValid = false;
                    }

                    return await Task.FromResult(result);
                }))
            .Field(new FieldReflector<SandwichOrder>(nameof(Days))
            .SetValidate(async (state, value) =>
            {
                var result = new ValidateResult { IsValid = true, Value = value };

                if (int.TryParse(value.ToString(), out int days))
                {
                    result.IsValid = true;
                }
                else
                {
                    result.IsValid = false;
                }

                return await Task.FromResult(result);
            }));
        return form.Build();
    }
}

这产生了这样的结果:

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51136774

复制
相关文章

相似问题

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