Ich habe ein Szenario, in dem ich den Kontext zu einem anderen Dialog mit Context.Forward weiterleiten und es funktioniert perfekt. Jetzt, wenn ich Code aktualisiere, um Dialogstapel zu holen und DialogStack.Forward zu verwenden, resultiert es in Stapel ist leere Ausnahme. Jeder Hinweis auf dieses Problem wird sehr geschätzt.DialogStack.Forward funktioniert nicht, wo in Context.Forward funktioniert
using (var scope = DialogModule.BeginLifetimeScope(Conversation.Container, message))
{
var botData = scope.Resolve<IBotData>();
await botData.LoadAsync(default(CancellationToken));
var stack = scope.Resolve<IDialogStack>();
// DialogStack.Foward doesn't work
await stack.Forward(new FeedbackDialog(FeedbackContext.CreateLead.ToString(), this.GetService<IResourceManager>()), this.ResumeAfterFeedbackDialog, context.Activity.AsMessageActivity(), CancellationToken.None);
}
// Context.Forward works
await context.Forward(new FeedbackDialog(FeedbackContext.CreateLead.ToString(), this.GetService<IResourceManager>()), this.ResumeAfterFeedbackDialog, context.Activity.AsMessageActivity(), CancellationToken.None);
Wo/wann versuchst du, stack.Forward zu nennen? Warum nicht Kontext verwenden? Vorwärts? Bitte erläutern Sie etwas, was Sie zu tun versuchen. –
In meinem Szenario habe ich einen Aufruf Aktivitätstyp, die ich separat behandeln muss, d. H. Außerhalb eines Dialogs Kontext. Am Ende möchte ich einen Dialog aufrufen, um noch ein paar mehr zu erledigen. Da ich die Aufrufaktivität außerhalb des Dialogkontexts behandle und für die letzte Operation ein Dialogfeld verwenden muss, muss ich entweder einen Kontext von irgendwo abrufen oder über DialogStack ausführen. – Ritesh
Können Sie Conversation.SendAsync aufrufen (Nachricht,() => neu FeedbackDialog()); ? –