繁体   English   中英

azure 聊天机器人有什么方法可以查询数据库并从数据库返回答案? 可能正在使用 qna maker 或 luis?

[英]is there any way that a azure chatbot can query the databse and return answer from the database? may be using qna maker or luis?

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

根据您的附加信息,我已更改答案。 使用 QnA Maker 的原始建议如下。 如果您需要从数据库中检索数据,例如学生成绩,最好的方法是使用插槽填充对话框。 就个人而言,我使用并更喜欢通过 LUIS 的意图识别启动的瀑布对话,但还有其他方法可以做到这一点。

  • 首先,使用 LUIS 识别用户意图并启动相应的对话。 我喜欢DispatchBot 示例,它展示了如何进行基本的意图识别(但该示例在 same.js 文件中包含对话框,我不喜欢。我更喜欢将对话框保存在单独的文件中)。
  • 如果可能,您将尝试提取相关实体,以便用户不必重新键入它们。 有很多关于如何做到这一点的教程,但这里有一个很好的
  • 使用该对话框收集所有必需的信息以进行数据库调用。 多轮提示示例是如何执行此操作的一个很好的示例。 您还需要在代码中考虑实体提取,这样您就不会再次提示用户。 我通过 if 语句执行此操作:如果实体存在,则将其返回到下一步; 否则提示用户输入实体。 这是一个例子。
if (step._info.options.entities.orderNumber) {
    return await step.next(step._info.options.entities.orderNumber[0].toUpperCase());
} else {
    return await step.prompt(ORDER_PROMPT, {
        prompt: 'Please provide your order number.',
        retryPrompt: 'Please enter a valid order number.',
    });
}
  • 您需要将值临时存储在某处。 最简单的方法是将其存储在瀑布的 step 上下文中(我称之为我的step )。 例如,在上述步骤之后的步骤中,您将通过step.values.orderNumber = step.result;在我的示例中存储订单号。 (或step.result.value如果返回选项选择)。
  • 一旦你有了所有的值,你就可以查询你的数据库。 执行此操作的方法取决于您使用的数据库。 但是,如果我们假设您是通过某种帮手来做到这一点的,那么您只需调用类似const score = await queryMyDb(student, subject)类的东西。 然后您可以将分数回复给用户。

这应该足以让您尝试检索信息。 如果您尝试但仍然遇到问题,您可以打开一个单独的请求,显示您的代码和您遇到的具体问题。


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

假设您只想在单个问答对中检索问题的答案,听起来您只需要部署 QnA Maker 并创建一个机器人来使用它。 Microsoft 提供了有关如何创建、培训和发布 QnA Maker 知识库的良好说明。 试一试,如果您有任何问题,请返回并通过单独的问题以及您尝试过的代码提出问题。

QnA Maker 也可以支持多轮对话的提示 您仍在处理单个问答对,但您可以为用户提供一个简单的选择,以便通过单击按钮来显示相关答案。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM