Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure sql database azure聊天机器人有没有办法查询数据库并从数据库返回答案?可能正在使用qna maker或luis?_Azure Sql Database_Chatbot_Azure Language Understanding_Qnamaker_Webbot - Fatal编程技术网

Azure sql database azure聊天机器人有没有办法查询数据库并从数据库返回答案?可能正在使用qna maker或luis?

Azure sql database azure聊天机器人有没有办法查询数据库并从数据库返回答案?可能正在使用qna maker或luis?,azure-sql-database,chatbot,azure-language-understanding,qnamaker,webbot,Azure Sql Database,Chatbot,Azure Language Understanding,Qnamaker,Webbot,我正在尝试构建一个聊天机器人,它可以查询数据库并根据所问的问题从数据库返回答案。有没有办法将azure聊天机器人连接到数据库,比如azure SQL数据库?根据您的其他信息,我已更改了答案。下面是使用QnA Maker的原始建议。如果您需要从数据库中检索数据,例如学生分数,那么最好的方法是使用“插槽填充”对话框。就我个人而言,我使用并更喜欢LUIS意图识别启动的瀑布式对话,但还有其他方法 首先,使用LUIS识别用户意图并启动相应的对话框。我喜欢显示如何进行基本意图识别的示例(但该示例的对话框位

我正在尝试构建一个聊天机器人,它可以查询数据库并根据所问的问题从数据库返回答案。有没有办法将azure聊天机器人连接到数据库,比如azure SQL数据库?

根据您的其他信息,我已更改了答案。下面是使用QnA Maker的原始建议。如果您需要从数据库中检索数据,例如学生分数,那么最好的方法是使用“插槽填充”对话框。就我个人而言,我使用并更喜欢LUIS意图识别启动的瀑布式对话,但还有其他方法

  • 首先,使用LUIS识别用户意图并启动相应的对话框。我喜欢显示如何进行基本意图识别的示例(但该示例的对话框位于同一个.js文件中,我不喜欢。我更喜欢将对话框保存在单独的文件中)
  • 如果可能,您将尝试提取相关实体,这样用户就不必重新键入它们。关于如何做到这一点,有很多教程
  • 使用该对话框收集进行数据库调用所需的所有信息。这是一个很好的例子。您还需要在代码中说明实体提取,这样您就不会对用户进行重新编译。我通过一个if语句来实现这一点:如果实体存在,则返回到下一步;否则提示用户输入实体。这里有一个例子
if(步骤信息.选项.实体.订单号){
返回wait step.next(step.\u info.options.entities.orderNumber[0].toUpperCase());
}否则{
返回等待步骤提示(订单提示{
提示:“请提供您的订单号。”,
retryPrompt:“请输入有效的订单号。”,
});
}
  • 您需要将该值临时存储在某个位置。最简单的方法是将其存储在瀑布的步骤上下文(我称之为我的步骤)中。例如,上述步骤之后的步骤将通过
    step.values.orderNumber=step.result在我的示例中存储订单号(或
    步骤结果值
    如果返回选择)
  • 获得所有值后,可以查询数据库。执行此操作的方法将取决于您使用的数据库。但是,如果我们假设您是通过某种帮助程序来实现这一点的,那么您只需调用类似于
    const score=wait queryMyDb(学生,科目)
    的东西。然后您可以将分数回复给用户
这将给您足够的时间尝试检索信息。如果您尝试后仍然遇到问题,可以打开一个单独的请求,显示您的代码和遇到的具体问题


收到附加上下文之前的上一个答案:

假设您只想在单个问题-答案对中检索问题的答案,听起来您只需要部署QnA Maker并创建一个机器人来利用它。微软提供了很好的指导,说明了如何使用它。尝试一下,如果您有任何问题,请返回并通过一个单独的问题与您尝试过的代码一起提问


QnA制造商也可以支持。您仍在处理单个问题-答案对,但您可以为用户提供一个简单的选择,只需单击按钮即可调出相关答案。

如果您使用azure存储,如表存储或blob。我建议使用Azure搜索服务。这将帮助您解决问题,但肯定会增加成本。

这是否有帮助:?这是将消息存储在数据库中。。我在问如何查询数据库,就像机器人必须从数据库中获取答案并回复一样。提前感谢。出于某种原因,我无法建议对此问题进行编辑,但要澄清的是,这是一个从数据库中检索某些值的请求(例如,学生在特定科目中的分数),而不是检索问题-答案对。忽略问题标题中的QnA生成器。我的数据库不是问题-答案对。QnA支持问答对。。例如:假设我有一份学生成绩的数据。。如果我问我的机器人“汤姆的英语分数是多少?”我希望它能查到数据库并给我一个答案!希望现在我的要求是明确的。我无法为数据中的每一行和每一列创建问题。