Вам нужно вызвать новый диалог, чтобы запросить остальные объекты.Я бы использовал диалог FormFlow, основанный на всех сущностях, которые вы пытаетесь захватить.По сути, вы хотите предположить, что ни одна из ваших сущностей не прошла через намерение Луиса, таким образом вы можете запросить у пользователя все.Таким образом, с помощью FormFlow вы можете указать начальное состояние FromFlow.Для этого создайте экземпляр и заполните свойства теми полученными вами объектами.FormFlow пропустит шаги для любого из полей, которые уже заполнены.При желании, когда вы запускаете FormDialog, вы можете передать FormOptions.PromptFieldsWithValues.Это сообщит диалоговому окну, что все равно будет запрашивать у пользователя ВСЕ значения, но будет использовать введенное значение в качестве значения по умолчанию.Вы бы сделали это, если бы хотели дать пользователю возможность что-то изменить.
Вот базовый пример, который я взял из github.
Это класс, который определяет ваше состояние.Вы бы построили это на основе сущностей, которые вы хотите получить
public class SampleQuestion
{
public string FavoriteColor;
public string FavoritePizza;
}
Это универсальный метод диалога, но он будет выглядеть так, как бы выглядел ваш метод намерения
async Task StartAsync(IDialogContext context)
{
var question = new SampleQuestion();
// Pre-populate a field. This is where you fill in with the entities you got from LUIS
question.FavoriteColor = "blue";
//Now call FormBuilder to ask the user for the remaining entities
context.Call<SampleQuestion>(new FormDialog<SampleQuestion>(question), OnSampleQuestionAnswered);
}
//this is the return from you FormBuilder. This is where you get back into you LUIS dialog and continue processing with, hopefully, all the entities you need now
public async Task OnSampleQuestionAnswered(IDialogContext context, IAwaitable<SampleQuestion> sampleQuestion)
{
var result = await sampleQuestion;
}
Надеждаэто помогает.