【发布时间】:2021-07-11 05:13:40
【问题描述】:
我正在使用 Microsoft 机器人框架来实现简单的机器人到机器人通信场景。就我而言,我有一个大师机器人和一个技能机器人。我已经完成了他们的整合,这样master dot就可以将对话传递给技能并且技能可以继续。 我需要在机器人之间共享一些状态。所以,我创建了一个状态属性访问器:
public static readonly string UserContextPropertyName = $"{typeof(RootBot<T>).FullName}.UserContextProperty";
private readonly IStatePropertyAccessor<PatientResponce> _userContext;
并在OnTurnAsync 方法中使用它
await _userContext.SetAsync(turnContext, patientResponce);
一切都好,除了这个新属性在技能的OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken) turnContext 中不可用
为什么它不持久/传递?
附:在通过调用将对话传递给技能之前,我确实会保存状态:
await _conversationState.SaveChangesAsync(turnContext, force: true, cancellationToken: cancellationToken);
P.S.S 我也用过
var userState = new UserState(new BlobsStorage("..."))
services.AddSingleton(userState);
以Startup.cs作为存储模型
【问题讨论】:
标签: botframework state-management