Вы можете видеть, что LoadDialogs
создает экземпляр диспетчера диалогов, передавая адаптивный диалог в его конструктор. Таким образом, вместо создания диалогового окна root, которое запускает все остальные диалоговые окна, вы можете просто передать одно из этих диалоговых окон как диалоговое окно root, так как они все равно являются адаптивными. Вы можете видеть, что файлы декларативного диалога загружаются следующим образом:
this.resourceExplorer.GetResources(".dialog")
И затем из них создаются экземпляры адаптивного диалога следующим образом:
var subDialog = resourceExplorer.LoadType<AdaptiveDialog>(resource);
Таким образом, вы можете сделать что-то вроде этого:
private void LoadDialogs()
{
System.Diagnostics.Trace.TraceInformation("Loading resources...");
//For this sample we enumerate all of the .main.dialog files and build a ChoiceInput as our rootidialog.
//this.dialogManager = new DialogManager(CreateChoiceInputForAllMainDialogs());
this.dialogManager = new DialogManager(this.resourceExplorer.LoadType<AdaptiveDialog>(this.resourceExplorer.GetResource("MultiTurnPrompt.main.dialog")));
this.dialogManager.UseResourceExplorer(this.resourceExplorer);
this.dialogManager.UseLanguageGeneration();
System.Diagnostics.Trace.TraceInformation("Done loading resources.");
}
TL; DR: Заменить эту строку:
this.dialogManager = new DialogManager(CreateChoiceInputForAllMainDialogs());
На эту строку:
this.dialogManager = new DialogManager(this.resourceExplorer.LoadType<AdaptiveDialog>(this.resourceExplorer.GetResource("MultiTurnPrompt.main.dialog")));