如何从 Microsoft BOT Framework 4 中的数据库中获取数据
How to get data from database in Microsoft BOT Framework 4
我正在使用 Microsoft bot framework 4 构建聊天机器人。我想将对话内容存储在 SQL 服务器数据库中,并想使用 entity framework 检索它们。
我尝试添加从数据库获取数据的代码,但模拟器报告错误。以下是我的代码:
protected override async Task OnMembersAddedAsync(IList<ChannelAccount> membersAdded, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
{
foreach (var member in membersAdded)
{
if (member.Id != turnContext.Activity.Recipient.Id)
{
var start = GetStartDialog();
if (start != null) {
var attachments = new List<Attachment>();
var reply = MessageFactory.Attachment(attachments);
var b = new HeroCard() { Title = start.Title, Text = start.Body, Buttons = new List<CardAction>() { new CardAction() { Title = "Option 1", Value = 1, Type = ActionTypes.MessageBack }, new CardAction() { Title = "Option 2", Value = 2, Type = ActionTypes.MessageBack } } };
reply.Attachments.Add(b.ToAttachment());
await turnContext.SendActivityAsync(reply, cancellationToken);
}
}
}
}
public Dialog GetStartDialog()
{
BOTEntities db = new BOTEntities();
Dialog retVal = db.Dialogs.Where(o => o.DialogID.Equals(1)).FirstOrDefault();
return retVal;
}
关于为什么我的代码没有执行的任何想法?
在此先感谢您的帮助。
如果您还没有考虑过,请查看 BotBuilder-Community 存储库中提供的 Entity Framework storage 扩展。
它是为 Bot Builder .NET SDK v4 设计的,可以通过 NuGet 安装。
简而言之,您包含状态存储组件,然后附加 EntityFrameworkTranscriptStore()
。这将允许您连接并执行用于创建表等的脚本。
由于这是一个内置的解决方案,这可能会减少您收到的错误。
希望得到帮助!
我正在使用 Microsoft bot framework 4 构建聊天机器人。我想将对话内容存储在 SQL 服务器数据库中,并想使用 entity framework 检索它们。
我尝试添加从数据库获取数据的代码,但模拟器报告错误。以下是我的代码:
protected override async Task OnMembersAddedAsync(IList<ChannelAccount> membersAdded, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
{
foreach (var member in membersAdded)
{
if (member.Id != turnContext.Activity.Recipient.Id)
{
var start = GetStartDialog();
if (start != null) {
var attachments = new List<Attachment>();
var reply = MessageFactory.Attachment(attachments);
var b = new HeroCard() { Title = start.Title, Text = start.Body, Buttons = new List<CardAction>() { new CardAction() { Title = "Option 1", Value = 1, Type = ActionTypes.MessageBack }, new CardAction() { Title = "Option 2", Value = 2, Type = ActionTypes.MessageBack } } };
reply.Attachments.Add(b.ToAttachment());
await turnContext.SendActivityAsync(reply, cancellationToken);
}
}
}
}
public Dialog GetStartDialog()
{
BOTEntities db = new BOTEntities();
Dialog retVal = db.Dialogs.Where(o => o.DialogID.Equals(1)).FirstOrDefault();
return retVal;
}
关于为什么我的代码没有执行的任何想法?
在此先感谢您的帮助。
如果您还没有考虑过,请查看 BotBuilder-Community 存储库中提供的 Entity Framework storage 扩展。
它是为 Bot Builder .NET SDK v4 设计的,可以通过 NuGet 安装。
简而言之,您包含状态存储组件,然后附加 EntityFrameworkTranscriptStore()
。这将允许您连接并执行用于创建表等的脚本。
由于这是一个内置的解决方案,这可能会减少您收到的错误。
希望得到帮助!