如何在机器人框架中从数据库中引入机器人活动消息?



我正在做一个关于机器人框架自我开发的小型项目。需要一些关于我的要求的帮助。我希望从数据库中获取机器人对话(只有机器人而不是用户(。我知道如何发送活动并使用静态文本获取用户响应,如下所示。

我有这个代码:

private static async Task<DialogTurnResult> NameConfirmStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken)
{
var promptOptions = new PromptOptions
{
Prompt = MessageFactory.Text($"Hello ! My name is XYZ and I am the Manager of ABC Dept.")
};
return await stepContext.PromptAsync(nameof(TextPrompt), promptOptions, cancellationToken);
}
private static async Task<DialogTurnResult> NameStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken)
{
stepContext.Values["intro"] = ((FoundChoice)stepContext.Result);
return await stepContext.PromptAsync(nameof(TextPrompt), new PromptOptions { Prompt = MessageFactory.Text("What is your name?") }, cancellationToken);
}

上面的代码是用户说出某事后机器人的活动

但是,我想知道是否有一种方法可以从数据库中读取机器人轮次活动?

例如:

机器人:你好!

:你好

机器人:你叫什么名字?

:XYZ

所以我想要的是机器人的活动文本,比如你你叫什么名字?应该来自数据库(最好是SQL(。这可能吗?

我正在使用机器人框架 v4.0 模拟器进行本地测试。

首先要了解的是,机器人只是 Web 应用程序。如何从数据库将数据导入机器人的问题只是如何从数据库中读取数据的问题,与机器人无关。您的问题根本无法回答,因为您没有选择特定的数据库管理系统。如果你的数据位于机器人以某种方式有权访问的数据库中(例如使用 REST API(,那么答案是肯定的。

将数据存储在 Cosmos DB 等数据库中是机器人框架中已内置的一项功能,但这与机器人状态有关,机器人状态是帮助机器人跟踪特定用户和对话的数据。听起来你想要的是定义机器人的静态数据,而不是特定于任何特定用户或对话。C# 应用通常将字符串存储在资源文件中,Bot Framework 具有你可能感兴趣的即将推出的语言生成功能,但如果确实要从数据库中提取字符串,请继续。由您来弄清楚如何做到这一点,因为您甚至还没有决定要使用什么 DBMS,但我可以告诉您,您这样做的方式在任何情况下都不会特定于机器人。

就机器人框架方面而言,请查看 Azure 机器人服务文档以获取详细信息。

最新更新