私はContext.Forwardを使って別のダイアログにコンテキストを転送したいというシナリオを持っています。今私はダイアログスタックをフェッチし、DialogStack.Forwardを使用するコードを更新すると、StackはEmpty例外になります。この問題へのポインタは非常に高く評価されます。DialogStack.Forwardは、Context.Forwardのどこで動作しますか?
https://github.com/Microsoft/BotBuilder/blob/master/CSharp/Samples/AlarmBot/Models/ExternalEvent.cs
このような何かを試してみてください:似た何かをするAlarmBotサンプルの例があり
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);
/あなたはスタックを呼び出そうとしていますか?なぜコンテキストを使用しないでください。フォワード?あなたがしようとしていることについてちょっと説明してください。 –
私のシナリオでは、呼び出すアクティビティタイプがあります。これは、個別に、つまりダイアログコンテキスト外で処理する必要があります。最後に、私はいくつかのものを扱うダイアログを呼びたいと思う。私はダイアログコンテキストの外でinvokeアクティビティを処理するので、最後の操作のためにダイアログを使用する必要があります。私はどこかからコンテキストを取得するか、DialogStackを通じてこれを行う必要があります。 – Ritesh
Conversation.SendAsync(message、()=> new FeedbackDialog())を呼び出すことはできますか? ? –