Бот Formflow перепутан с перечислением позиции ответа и текста ответа - PullRequest
0 голосов
/ 27 июня 2018

У меня есть диалог формы потока, в котором следующий вопрос определен как enum

public enum PreviousOwnerOptions
{
    [Describe("Owned from new")]
    [Terms("0", "new", ".*[O|o]wned from new")]
    OwnedFromNew = 0,

    [Terms("1", "One")]
    One,

    [Terms("2", "Two")]
    Two,

    [Terms("3", "Three")]
    Three,

    [Terms("4", "Four")]
    Four,

    [Terms("5", "Five")]
    Five,

    [Terms("6", "Six")]
    Six,

    [Describe("More than six")]
    [Terms(".*More than six", "more")]
    MoreThanSix
}

Вот как пользователю представляется вопрос ...

enter image description here

У меня проблема в том, что если вы введете, скажем, число «3» в качестве ответа, то ответ будет следующим:

enter image description here

Похоже, бот не уверен, имел ли я в виду ответ в позиции 3 или ответ "Три". Я думал, что атрибут Terms позаботится об этом разъяснении?

Как я могу это исправить, пожалуйста?

1 Ответ

0 голосов
/ 27 июня 2018

Это происходит из-за комбинации двух вещей.

Во-первых, вы пытаетесь использовать значения Enum 0 для того, что выглядит как необнуляемое поле. В этом случае значение 0 зарезервировано для нуля. Со страницы документов formflow :

Любой из типов данных может быть обнуляемым, который можно использовать для моделирования, что поле не имеет значения. Если поле формы основано на свойстве перечисления, которое не имеет значения NULL, значение 0 в перечислении представляет значение NULL (т. Е. Указывает, что поле не имеет значения), и вы должны начать значения перечисления с 1. FormFlow игнорирует все другие типы свойств и методы.

Второй момент заключается в том, что, поскольку вы используете числовые значения 1,2,3 и т. Д. В атрибуте Условия, например [Terms("1", "One")], по умолчанию поток форм будет пытаться выровнять эти значения с правильным перечислением. Поэтому я думаю, что происходит то, что он позволяет вам выбрать «3», как вы использовали в своем примере, и, поскольку 3 - это один из ваших терминов [Terms("3", "Three")], он предлагает вам эти варианты. но в значениях нумерации нумерации индекса, поскольку 0 зарезервировано, фактическое значение перечисления [Terms("2", "Two")] Two, равно 3. Так что он не знает, что вы имеете в виду.

Итак, чтобы заставить это работать, используя эти термины, было бы так:

    public enum PreviousOwnerOptions
    {
        [Terms("1", "One")]
        One=1,

        [Terms("2", "Two")]
        Two,

        [Terms("3", "Three")]
        Three,

        [Terms("4", "Four")]
        Four,

        [Terms("5", "Five")]
        Five,

        [Terms("6", "Six")]
        Six,

        [Describe("More than six")]
        [Terms(".*More than six", "more")]
        MoreThanSix,

        [Describe("Owned from new")]
        [Terms("new", ".*[O|o]wned from new")]
        OwnedFromNew
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...