Настройка сообщения проверки в среде фреймворка C # - PullRequest
0 голосов
/ 17 ноября 2018

Как настроить валидационные сообщения в потоке форм платформы ботов?Ниже приведен пример кода, с которым я работаю, и если пользователь вводит любой текст, кроме предоставленных опций, мне нужно вернуть ему список выбора, говоря, что выбранная опция неправильна.

    [Prompt("Please choose # category... {||}", ChoiceStyle = ChoiceStyleOptions.Buttons)]
    public string Category;

    [Prompt("Please choose  # sub category... {||}", ChoiceStyle = ChoiceStyleOptions.Buttons)]
    public string Subcategory;

    [Prompt("We need some more details to create the request, provide me your **contact number**...")]
    [Pattern(Validations.Phone)]
    public string ContactNumber;

    [Prompt("Please provide **Attachement** if you don't have attachemnt please enter ? {||}")]
    public ChoiceOptions? Attachment;

В настоящее время, если опция отсутствует в списке, она просто выдает сообщение, например

' Userinput не является контактом / вложением / категорией опция '

1 Ответ

0 голосов
/ 17 ноября 2018

Jobin, Вы хотите взглянуть на более продвинутые функции formFlow. Вы можете создавать бизнес-логику вокруг ваших полей, используя функции проверки полей. Это пример того, как это выглядит из документации MS Online. Вы можете увидеть полный образец и документы здесь Я считаю, что этот метод создания моей формы гораздо более гибкий, чем использование атрибутов.

public static IForm<SandwichOrder> BuildForm()
{
...
return new FormBuilder<SandwichOrder>()
    .Message("Welcome to the sandwich order bot!")
    .Field(nameof(Sandwich))
    .Field(nameof(Bread))
    .Field(nameof(Toppings),
        validate: async (state, value) =>
        {
            var values = ((List<object>)value).OfType<ToppingOptions>();
            var result = new ValidateResult { IsValid = true, Value = values };
            if (values != null && values.Contains(ToppingOptions.Everything))
            {
                result.Value = (from ToppingOptions topping in Enum.GetValues(typeof(ToppingOptions))
                                where topping != ToppingOptions.Everything && !values.Contains(topping)
                                select topping).ToList();
            }
            return result;
        })
    .Message("For sandwich toppings you have selected {Toppings}.")
    ...
    .Build();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...