我正在尝试“暂停”机器人对话并通过主动消息恢复它。
我一直试图这样做的方法是结束对话转向“暂停”对话。下面我ContinueDialogAsync
在我的 ProActive 消息中使用“恢复”对话。以下是我如何在 ProActive 消息中执行此操作:
DialogManager dialogManager = new DialogManager(this.resourceExplorer.LoadType<AdaptiveDialog>(this.resourceExplorer.GetResource("echobot-final.dialog")));
dialogManager.UseResourceExplorer(this.resourceExplorer);
dialogManager.UseLanguageGeneration();
var conversationStateAccessors = conversationState.CreateProperty<DialogState>(nameof(DialogState));
var dialogSet = new DialogSet(conversationStateAccessors);
dialogSet.Add(dialogManager.RootDialog);
var dialogContext = await dialogSet.CreateContextAsync(turnContext, cancellationToken);
但是,在ContinueDialogAsync
先前结束对话框轮次之后运行时,我遇到了这个错误:
System.NullReferenceException
HResult=0x80004003
Message=Object reference not set to an instance of an object.
Source=Microsoft.Bot.Builder.Dialogs.Adaptive
StackTrace:
at Microsoft.Bot.Builder.Dialogs.Adaptive.Generators.ResourceMultiLanguageGenerator.TryGetGenerator(DialogContext dialogContext, String locale, LanguageGenerator& languageGenerator)
尽管从对话框中删除 EndTurn 时,我没有收到此 NullReferenceException,所以我相信我的 dialogContext 对象应该是正确的?
我是否误解了结束对话回合的概念?
暂停对话并稍后恢复对话的正确方法是什么?