Я пытаюсь создать бот с Azure Bot Framework, который будет запрашивать неизвестное количество сложных объектов (каждый из них потребует трех ответов). Но я не знаю, как создать форму для каждого из сложных объектов в корневой форме. См. http://docs.botframework.com/sdkreference/csharp/forms.html. В нем указано: «Чтобы обрабатывать список сложных объектов, вам нужно создать форму для класса верхнего уровня C#, а также одного для сложного объекта. Вы можете использовать систему Dialogs для составления форм вместе». Вот что я не знаю, как это сделать.Azure Bot Framework FormFlow сложные формы
public enum SystemSelection { SharePoint, BizTalk, Azure, Office365 };
public enum RequestType { Bug, SupportRequest, Question };
public enum Importance { Blocking, High, Medium, Low };
[Serializable]
class Declaration
{
public string Type;
public string Amount;
public string Date;
public static IForm<Declaration> BuildForm()
{
return new FormBuilder<Declaration>()
.Message("Add a declaration")
.Build();
}
}
[Serializable]
class SupportRequest
{
public SystemSelection? SystemSelection;
public RequestType? RequestType;
public Importance? Importance;
public List<Declaration> Declarations;
public static IForm<SupportRequest> BuildForm()
{
IForm<Declaration> aForm = new FormBuilder<Declaration>().Message("Add declaration").Build();
// now what?
return new FormBuilder<SupportRequest>()
.Message("Welcome to the simple support bot!")
.Build();
}
}
Контроллер:
[BotAuthentication]
public class MessagesController : ApiController
{
internal static IDialog<SupportRequest> MakeRootDialog()
{
// change something here??
return Chain.From(() => FormDialog.FromForm(SupportRequest.BuildForm));
}
public async Task<Message> Post([FromBody]Message message)
{
if (message.Type == "Message")
{
return await Conversation.SendAsync(message, MakeRootDialog);
}
else
{
return HandleSystemMessage(message);
}
}
I Я пытаюсь сделать это с помощью метода один, но я не могу получить его полностью правильно. Вероятно, это мои недостающие навыки в Linq, но бот никогда не просит ввести Декларацию. – JurgenW
@JurgenW, на самом деле начинается диалог декларации, но он ожидает, что пользователь скажет первое сообщение. Поэтому, если вы введете что-то вроде «Привет» после входа в SupportRequest, вы увидите, что диалог диалога начинается. На данный момент я не уверен на 100%, как это исправить. –
Хмм, это не для меня. Когда я добавляю одно свойство в класс бота типа List, бот сразу же говорит «Это ваш выбор?» В первый раз, когда я говорю «Привет». У меня нет возможности добавлять входные данные. –
JurgenW