Context.Forward를 사용하여 다른 대화 상자로 컨텍스트를 전달하려는 시나리오가 있으며 완벽하게 작동합니다. 이제 대화 상자 스택을 가져오고 DialogStack.Forward를 사용하도록 코드를 업데이트하면 Stack 예외가 발생합니다. 이 문제에 대한 모든 포인터는 높이 평가됩니다.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 Activity Type이 있는데, 이것은 별도로 처리해야합니다. 즉, 대화 상자 컨텍스트 외부에 있어야합니다. 결국에는 대화 상자를 호출하여 몇 가지 추가 정보를 처리하려고합니다. 내가 대화 컨텍스트 외부에서 invoke 활동을 처리하고 있으며 마지막 작업을 위해 대화 상자를 사용해야 할 필요가 있습니다. 대화 상자를 통해 어딘가에서 컨텍스트를 가져 오거나 DialogStack을 통해이 작업을 수행해야합니다. – Ritesh
Conversation.SendAsync (message,() => new FeedbackDialog())를 호출 할 수 있습니까? ? –