标签: azure-language-understanding

在LuisDialog期间可以处理附件吗?

到目前为止,我已经能够训练LUIS模型并将其意图连接到一个继承自LuisDialog的对话框.我假设当我向模型发送无法识别的消息时,它将被"无"意图捕获,这对于文本是正确的,但对于文件则不然.例如,当我发送图片时,没有任何反应,当我发送文字+图片时,有些意图会将其取出,但邮件附件中没有图片.

在LUIS对话框中处理文件的推荐方法是什么?

botframework azure-language-understanding

5
推荐指数
1
解决办法
363
查看次数

如何使用Bot框架在单个机器人上实现多个LUIS对话框?

由于每个LUIS模型限制为20个意图和10个实体,并且每个模型必须具有明确定义的范围/域,我想知道在单个bot应用程序中实现多个对话框的最佳方法是什么,如果我想要我的机器人能够覆盖多个域,比如说获取财务信息和天气信息.

我知道理想情况下我会有两个不同的机器人,但在这种情况下我需要用一个机器人做这个.我阅读了关于Dialogs(以及其他几个部分)和LUIS帮助页面的Bot Framework文档,但我无法找到有关如何实现这一目标的任何信息.我也看了一下这些例子并没有发现任何东西,有没有办法做到这一点?

botframework azure-language-understanding

5
推荐指数
1
解决办法
1515
查看次数

Microsoft Bot Framework,LUIS和Action参数

我正在尝试使用LUIS构建一个机器人,但它比我想象的要难得多.到目前为止,我已经设法创建我的LUIS应用程序并创建一个Intent和一个实体,我创建了一些似乎工作正常的话语.

然后我创建了我的机器人,并将它连接到路易斯.当我测试我的机器人时,它按预期工作.现在是有趣的部分.我想处理参数.在Luis上我向我的意图添加了一个动作:

在此输入图像描述

如您所见,我添加了提示.我机器人中的代码目前看起来像这样:

/// <summary>
/// Tries to find the category
/// </summary>
/// <param name="result">The Luis result</param>
/// <param name="alarm"></param>
/// <returns></returns>
public string TryFindCategory(LuisResult result)
{

    // Variable for the title
    EntityRecommendation title;

    // If we find our enenty, return it
    if (result.TryFindEntity(PiiiCK.Category, out title))
        return title.Entity;

    // Default fallback
    return null;
}

[LuisIntent("Choose category")]
public async Task ChooseCategory(IDialogContext context, LuisResult result)
{

    // Get our category
    var category = …
Run Code Online (Sandbox Code Playgroud)

c# botframework azure-language-understanding

5
推荐指数
1
解决办法
1044
查看次数

我可以在本地托管MS Bot Framework Node.js实例

我们构建了一个MS Bot Framework bot,它在会话期间使用我们现有的内部本地API.我们想通过将Web Chat组件放入我们现有的面向内部的本地应用程序的DOM中来发布此bot .

使用我们现有的架构,我们自然也希望在内部托管这个机器人 -利用我们现有的所有配置和部署流程.我们理解,无论如何,机器人都必须与LUIS沟通 - 这对我们来说很好; 它不需要Azure的更复杂(更大的攻击面,更少的中央IT支持)设置直接连接到我们的内部业务数据API.

我认为这个图表更加清晰:

Bot托管配置

我们能否实现底层托管配置中描述的内容?

编辑1:我们是否可以在本地托管直接线路或类似的连接器而无需编写自定义连接器?另外,我们可以通过这样的连接器与我们的机器人聊天,而无需为DOM编写自定义聊天组件/小部件吗?(只要指向我们的频道,网络聊天组件就可以正常工作.)

这里的最终目标是让我们的所有聊天流量保持在本地,因为这是一个数据驱动的聊天机器人,提供敏感数字.在另一个可以完全在本地运行的框架中重新开发它,而不是从我们的中央IT部门获得批准,这将花费更少的时间.

附注:我知道Azure Stack Preview.最低硬件要求(也可能是订阅成本)极端矫枉过正.(毕竟我们正在谈论一个Node应用程序.)

这不是这个问题的重复,因为这个问题还解决了直接/线路连接器本地托管的关键元素,其他问题假设连接器仍然可以在Azure上运行.

azure node.js botframework azure-language-understanding direct-line-botframework

5
推荐指数
1
解决办法
3360
查看次数

LUIS - 了解任何人的姓名

我们正在LUIS/Microsoft Bot框架上构建产品,我们对其中一个疑问就是人名理解.只要注册我们的网站,任何人都可以使用该产品.这意味着任何正在注册的公司都可以拥有任意数量的员工.

我们理解的是用户实体无法识别所有名称.我们已经创建了一个短语列表,但据我们所知,短语列表有限制(10K或者即使它的100K)并且世界上的名称永远不会有限制.我们想到的另一种方式是不用话语训练实体.但是,如果我们拥有100个拥有1000个用户的客户,那么在这种情况下,话语就不是一个好主意.

我没有看到任何其他处理这种情况的方法.可能我在这里遗漏了一些东西?任何人遇到类似的问题以及如何处理?

最糟糕的情况是为每个客户创建一个单独的LUIS实例,但这只是因为我们无法处理名称而完成的任务.

bots botframework azure-language-understanding

5
推荐指数
1
解决办法
1068
查看次数

如何在单个Node.js机器人中集成LUIS和QnA Maker服务?

我正在使用Microsoft Bot Framework和Node.js SDK开发聊天机器人。我已经集成了LUIS和QnA制造商,但我想尽可能创建这种情况。以以下链接为例,尤其是本节:

机器人可以通过几种方式实现LUIS和QnA Maker的混合:首先调用LUIS,如果没有意图满足特定阈值分数,即触发“无”意图,则调用QnA Maker。或者,为QnA Maker创建LUIS意向,为您的LUIS模型提供映射到“ QnAIntent”的示例QnA问题。

只是一个例子:我有一个QnA KB,其中有一对:“你是谁?” /“嗨,我是你的机器人!”。然后,我的Luis应用程序将这种意图称为“ common”。因此,如果我写信给我的机器人:“你是谁?” 它会回答“嗨,我是你的机器人!”, 相反,如果我写“告诉我你是谁”,它会识别与该问题有关的LUIS意图,但不会回答“嗨,我是你的机器人!”,就像我想象的那样。

所以我想像的是:我问一个问题“告诉我你是谁”->僵尸程序触发意图通用(LUIS)->然后,我希望该僵尸程序会回答我的QnA KB问题->“嗨,我是你的机器人!”

可能吗?谢谢

希望这段代码可以帮助您:

var intents = new builder.IntentDialog({ recognizers[luisRecognizer,qnarecognizer] });

bot.dialog('/', intents);

intents.matches('common_question', [
    function (session, args, next) {
        session.send('Intent common');
        qnarecognizer.recognize(session, function (error, result) {
            session.send('answerEntity.entity');
        });
    } 
]);
Run Code Online (Sandbox Code Playgroud)

node.js botframework azure-language-understanding azure-cognitive-services azure-qna-maker

5
推荐指数
0
解决办法
4944
查看次数

LUIS意图不返回具有空格的实体的整个值

我创建了一个这样的LUIS话语,其中包含一个简单的实体:客户abc的订单处理

其中abc被简单实体vf_NARCName替换

在我输入类似问题的机器人中:客户动物皮肤病医院的订单正在处理中

这里的客户名称是动物皮肤病医院,由空间分隔,然后当我通过LUIS Rest API获取数据时,我将动物作为实体值而不是动物皮肤病医院,有时也没有实体值返回

 {
      "query": " orders in process for customer Animal Dermatology Service",
      "topScoringIntent": {
        "intent": "OrderDetails_2a598c9b-7cb5-4113-9aca-435b55bbe19e",
        "score": 0.7547371
      },
Run Code Online (Sandbox Code Playgroud)

返回数据

{
  "query": "how many orders are currently in process for customer Animal Dermatology Service",
  "topScoringIntent": {
    "intent": "OrderDetails_2a598c9b-7cb5-4113-9aca-435b55bbe19e",
    "score": 0.6452578
  },
  "entities": []
}
Run Code Online (Sandbox Code Playgroud)

但是如果我只用Animal查询它,那么正确的数据就会返回

返回数据

{
      "query": "how many orders are currently in process for customer Animal",
      "topScoringIntent": {
        "intent": "OrderDetails_2a598c9b-7cb5-4113-9aca-435b55bbe19e",
        "score": 0.8928922
      },
      "entities": [
        {
          "entity": "animal",
          "type": "vf_NARCName",
          "startIndex": 54,
          "endIndex": …
Run Code Online (Sandbox Code Playgroud)

.net json botframework azure-language-understanding

5
推荐指数
2
解决办法
342
查看次数

如何将话语导入LUIS.ai

旧版本的LUIS控制台曾经有一个"导入话语"功能.新控制台似乎不再具有此功能.

此外,API(我认为)曾经有过这个选项,但现在它似乎并不存在.

我错过了什么,或者这是一个在后期加入的功能?

此外,仅查询已发布的端点似乎无法将话语可靠地"导入"到池中.我们可以假设它们已被导入并最终通过"建议"选项卡显示,但这确实不够好.我们需要能够批量导入话语然后标记它们.

chatbot azure-language-understanding

4
推荐指数
1
解决办法
4808
查看次数

我在哪里可以找到我的LUIS创作密钥?

Conversation Learner要求我提供LUIS创作密钥(LUIS_AUTHORING_KEY).我如何获得一个,在哪里可以找到它?

azure-language-understanding conversationlearner

4
推荐指数
1
解决办法
363
查看次数

需要一些关于如何正确使用机器人框架 SDK 的指导

我正在构建一个机器人,到目前为止,这段经历对我来说是一个挑战。这很可能是因为我来自 v1 并且我正在尝试以 v4 风格重建我的机器人,这似乎是一个完全不同的框架。

我发现那里有很多文档,但它被分为理论和实践,可能是由于您可以使用不同的开发框架(即 Node、C#)。但是不得不在这些文章之间来回切换无济于事,

经过一番折腾之后,我到了事情开始变得更体面的地步,但我仍然觉得还有很多改进的空间。我目前无法分享整个项目,但我在这里创建了最重要代码的要点:https : //gist.github.com/jsiegmund/831d5337b1a438133991070daba8a27e

所以我对这段代码的问题/问题如下:

  1. 添加对话框的方式以及主要需要添加检索答案的提示令人困惑。我明白这个想法,但不是内部运作。例如:我现在有以相应对话框步骤的相同方法名称命名的提示,这是它应该工作的方式吗?按照惯例,似乎有一些神奇的代码将所有东西连接在一起?当瀑布步骤也包括提示时,对我来说会更有意义。

  2. 为对话提供信息以便它可以跳过步骤的正确方法是什么?我在主对话框中设置了 LUIS 意图,然后打开此对话框进行小时预订。假设我的用户说“我想为客户 X 预订 8 小时”,我希望对话框将金额预填充为 8,并将客户预填充到 X。

  3. 客户/项目解决在这里可能是一个不太标准的要求。这些来自第三方应用程序,通过 API/SDK 检索。因此,基于登录用户,我需要转到该应用程序并检索该用户的数据。这以键/值对的形式返回,其中键是 GUID。我不希望用户输入 GUID,所以我用客户的名字创建了这些操作按钮,但是为了将 ID 值输入到下一步,它现在在聊天中“写入”GUID 而不是客户姓名。使用这个名字很棘手,因为我不能完全依赖那些是独一无二的。此外,为了选择项目,我需要客户 GUID 并保存最终条目,我还需要 ID。但我不希望用户看到这些。

  4. 我现在制作卡片的方式对我来说也很奇怪。我首先需要为卡片添加一个对话框,稍后在调用时stepContext.PromptAsync我还需要提供卡片作为附件。对我来说感觉重复,但删除其中一个步骤失败。正常的样式提示对我不起作用,因为它不处理键/值而只处理字符串(参见数字 3)。

好的,所以这些是我正在努力解决的一些问题。我正在到达那里并且它现在有效,但正如所说,我无法摆脱我做得不对的感觉。如果有人能对此有所启发,将不胜感激。

bots botframework azure-language-understanding adaptive-cards

4
推荐指数
1
解决办法
204
查看次数