J'ai un scénario dans lequel je veux transférer le contexte à une autre boîte de dialogue en utilisant Context.Forward et cela fonctionne parfaitement. Maintenant, si je mets à jour le code pour récupérer la pile de dialogues et utiliser DialogStack.Forward, il en résulte une exception Stack is Empty. Tout pointeur sur cette question sera très apprécié.DialogStack.Forward ne fonctionne pas où dans Context.Forward fonctionne
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);
Où/quand essayez-vous d'appeler stack.forward? Pourquoi ne pas utiliser context.forward? Veuillez élaborer un peu sur ce que vous essayez de faire. –
Dans mon scénario, j'ai un type d'activité invoke, que je dois gérer séparément, c'est-à-dire en dehors d'un contexte de dialogue. À la fin, je veux appeler une boîte de dialogue pour gérer quelques autres choses. Comme je manipule l'activité d'invocation en dehors du contexte de dialogue, et j'ai besoin d'utiliser une boîte de dialogue pour la dernière opération, je dois soit obtenir le contexte de quelque part ou le faire par l'intermédiaire de DialogStack. – Ritesh
Pouvez-vous simplement appeler Conversation.SendAsync (message,() => new FeedbackDialog()); ? –