Csharp/C#教程:如何在消息控制器之类的对话框之外访问Bot Framework ConversationData?分享


如何在消息控制器之类的对话框之外访问Bot Framework ConversationData?

在我的机器人的对话框中,我在ConversationData中存储一个标志值,如下所示:

context.ConversationData.SetValue("SomeFlag", true); 

稍后, 将消息分派到对话框之前 ,我需要在MessagesController中检查该标志。 根据上一个问题,我尝试通过StateClient检索ConversationData,如下所示:

 public async Task Post([FromBody] Activity incomingMessage) { StateClient stateClient = incomingMessage.GetStateClient(); BotData userData = await stateClient.BotState.GetConversationDataAsync(message.ChannelId, message.Conversation.Id); bool finishedQuote = userData.GetProperty("SomeFlag"); //... // do conditional logic, then dispatch to a dialog as normal } 

但是,在运行时, userData变量包含一个BotData对象,其中userData.Data为null,并且我无法通过GetProperty检索任何存储的标志。 我没有在相关文档中看到任何有助于阐明这个问题的内容 – 我可能在这里做错了什么? 有什么我误解的吗?

以下内容适合您的需求:

 if (activity.Type == ActivityTypes.Message) { var message = activity as IMessageActivity; using (var scope = DialogModule.BeginLifetimeScope(Conversation.Container, message)) { var botDataStore = scope.Resolve>(); var key = Address.FromActivity(message); ConversationReference r = new ConversationReference(); var userData = await botDataStore.LoadAsync(key, BotStoreType.BotUserData, CancellationToken.None); //you can get/set UserData, ConversationData, or PrivateConversationData like below //set state data userData.SetProperty("key 1", "value1"); userData.SetProperty("key 2", "value2"); //get state data userData.GetProperty("key 1"); userData.GetProperty("key 2"); await botDataStore.SaveAsync(key, BotStoreType.BotUserData, userData, CancellationToken.None); await botDataStore.FlushAsync(key, CancellationToken.None); } await Conversation.SendAsync(activity, () => new Dialogs.RootDialog()); } 

使用StateClient初始化BotState对象,如下所示。 请尝试以下代码

上述就是C#学习教程:如何在消息控制器之类的对话框之外访问Bot Framework ConversationData?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

  public static T GetStateData(Activity activity, string key) { BotState botState = new BotState(activity.GetStateClient()); BotData botData = botState.GetConversationData(activity.ChannelId, activity.Conversation.Id); return botData.GetProperty(key); } 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/997036.html

(0)
上一篇 2021年12月25日
下一篇 2021年12月25日

精彩推荐