Расширенный FormFlow в Bot Framework - Установить шаблоны с помощью кода - PullRequest
0 голосов
/ 31 мая 2018

Я использую Formflow для генерации необходимых вопросов, чтобы получить все данные от пользователя.Поскольку я поддерживаю несколько языков, я не могу просто использовать атрибуты.Поэтому я прочитал об этом и заметил, что RView можно использовать для создания файлов ресурсов.Однако, поскольку у меня уже есть файлы ресурсов, разделенные и упорядоченные, я пытаюсь их повторно использовать.

Используя FieldReflector, я могу сделать это довольно легко

form.Field(new FieldReflector<HolidayPlanningFlowForm>(nameof(StartDate),true)
           .SetType(typeof(string))
           .SetFieldDescription(Resources.HolidayResources.Planning_FlowStartDate_Describe)
           .SetPrompt(new PromptAttribute(Resources.HolidayResources.Planning_FlowStartDate_Prompt)));

Итак, хорошо.Но я не могу понять, где определить мои шаблоны для TemplateUsage.NotUnderstood или TemplateUsage.DateTimeHelp, например.В ссылке есть метод, доступный для Field, ReplaceTemplate (), но этот рефлектор возвращает IField и не может понять, как заставить это работать.

Любой, кто испытает это, выберет лучший вариант (я действительно не хочу использовать RView;))

1 Ответ

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

Я думаю, что проблема здесь в .SetType(typeof(string)) Если это значение будет изменено на typeof(DateTime), тогда .ReplaceTemplate () будет функционировать должным образом:

public static IForm<TermFormFlow> BuildForm()
{
    return new FormBuilder<TermFormFlow>()
            .Message("Bla Bla")
            .Field(new FieldReflector<TermFormFlow>(nameof(DateOfBirth), true)
                        .ReplaceTemplate(new TemplateAttribute(TemplateUsage.NotUnderstood, "I do not understand \"{0}\".", "Try again, I don't get \"{0}\"."))
                        .ReplaceTemplate(new TemplateAttribute(TemplateUsage.DateTimeHelp, "This field should be in the format '01/01/2018'", "Please enter a date or time"))
                        .SetType(typeof(DateTime))
                        .SetFieldDescription(Resources.HolidayResources.Planning_FlowStartDate_Describe)
                        .SetPrompt(new PromptAttribute(Resources.HolidayResources.Planning_FlowStartDate_Prompt)))
            .AddRemainingFields()
            .Build();      
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...