Я попытался адаптировать следующий пример: Пример диалога ChoiceFlow
У меня есть класс, производный от ComponentDialog с waterfallSteps. Как только у меня будет достаточно информации, я начинаю новое диалоговое окно (TroubleshootingDialog).
Когда заканчивается поиск и устранение неисправностей (он заканчивается вызовом EndDialogAsync), я хочу проанализировать данные, собранные во вспомогательном диалоге, и предпринять соответствующие действия.
Для этого я попытался переопределить ResumeDialogAsync, но он не срабатывает, когда заканчивается поддиалог.
public class ProductFlowDialog : ComponentDialog
In constructor:
var guidedWaterfall = new WaterfallStep[]
{
LoadChoiceFlowItems,
PromptChoice,
ActOnPromptResult,
};
public async Task<DialogTurnResult> PromptChoice(WaterfallStepContext sc, CancellationToken cancellationToken)
{
if ( something)
{
}
else
{
// Here we have enough information to start new dialog.
var result = await sc.ReplaceDialogAsync("TroubleshootingDialog", wOptions);
return result;
}
public override Task<DialogTurnResult> ResumeDialogAsync(DialogContext outerDc, DialogReason reason, object result = null, CancellationToken cancellationToken = default(CancellationToken))
{
// Do something
}
}