Microsoft Bot Framework: как я могу заполнить значения поля потока формы на основе ввода пользователя для предыдущего поля - PullRequest
0 голосов
/ 04 октября 2018

У меня есть следующие атрибуты для случая потока формы:

public enum Offices{}

[Describe("Country")]
public string Country;
[Prompt("Which office are you working in?{||}")]
public Offices Office; 

Я хочу заполнить офисы в соответствии с указанной страной.Например, если пользователь вводит Индию как поле Страна, я хочу, чтобы офисы были в Мумбаи, Нью-Дели и Пуне.Если пользователь входит в ОАЭ, я хочу, чтобы офисы были в Дубае и Абу-Даби и т. Д. *

Как мне этого добиться?

1 Ответ

0 голосов
/ 04 октября 2018

Этот вопрос похож на " Как использовать enum category and subcategory в среде ботов C #? " хотя бы для того, чтобы делать то, что вам нужно.

Используя FormBuilder вы можете динамическиопределите свою форму.Полные документы на FormBuilder здесь .

Повторяя предыдущий ответ StackOverlfow, вы используете FieldReflector, и это позволит вам настроить асинхронный делегат.В этом делегате вы должны построить список городов на основе значения state.Country.Это будет выглядеть примерно так:

public static IForm<Offices> BuildForm()
{
    return new FormBuilder<Offices>()
          .Message("Welcome!")
          .Field(nameof(Country))
          .Field(new FieldReflector<Offices>(nameof(Office))
              .SetType(null)
              .SetDefine(async (state, field) =>
              {
                   //// Define your Officelogic here
                  switch (state.Country)
                  {
                      Country.Dubai:
                          ////logic to add Dubai city
                        break;
                      Country.UAE:
                          ////logic to add UAE cities
                        break;
                      default:
                          break;
                  }


                  return true;
              }))              
          .Build();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...