我正在使用Microsoft Bot Framework for .NET创建一个简单的问题/答案机器人,作为用C#编写的ASP.NET MVC WebApi,主要用于具有多个用户的Slack通道。
我创建了一个对话框,我根据框架文档从我的消息控制器启动:
await Conversation.SendAsync(activity, () => new QuestionDialog());
lambda表达式向Bot Framework指示用于对话框的构造函数。 QuestionDialog实现了IDialog。启动对话框后,对话框类被序列化并存储在Bot Connector云中,保存当前问题和预期答案,然后在当前对话中收到新消息时进行反序列化。
我希望任何用户都能够回答Bot提出的随机问题,无论哪个用户启动了对话框,但似乎为每个与机器人交互的用户创建了一个新的QuestionDialog,因此只有发起问题的用户才能回答它。
是否有任何方法可以创建仅与会话/频道相关联的对话框,而不是会话/频道和用户的组合?尝试以这种方式使用对话框是否有意义?
答案 0 :(得分:0)
我想我实现这个的方式是:
Azure Table storage是一种方便存储状态的服务。当然,您可以使用任何您喜欢的服务。请记住,内存状态存储仅适用于测试。
此外,您根本不必使用此解决方案的对话框 - 您可以在MessagesController中执行所有操作。