【问题标题】:Microsoft Bot Framework, LUIS and Action parametersMicrosoft Bot Framework、LUIS 和操作参数
【发布时间】:2016-11-14 16:05:39
【问题描述】:

我正在尝试使用 LUIS 构建一个机器人,但它比我想象的要困难得多。 到目前为止,我已经成功地创建了我的 LUIS 应用程序并创建了一个 Intent 和一个 Entity,并且我创建了一些似乎可以正常工作的 Utterances .

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

如您所见,我添加了一个提示。 我的机器人中的代码目前如下所示:

/// <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 = TryFindCategory(result);
    var response = "The category you have chosen is not in the system just yet.";

    switch (category)
    {
        case "camera":
            response = $"You need help buying a { category }, is this correct?";
            this.started = true;
            break;
        default:
            if (!string.IsNullOrEmpty(category)) response = $"Sorry, PiiiCK does not deal with { category.Pluralise() } just yet.";
            break;
    }

    // Post our response back to the user
    await context.PostAsync(response);

    // Execute the message recieved delegate
    context.Wait(MessageReceived);
}

我想你可以猜到我的意思。如果用户输入帮我买个相机,它将进入Choose category Intent,并选择正确的Entity。 但是,如果他们输入 Help me buy,它仍然会转到正确的 Intent,但不会有选定的 Entity。我希望我的机器人看到并使用我在 LUIS 中创建的 Prompt 中的文本,当用户选择他们的 entity 时,我希望它返回到 LUIS参数。

我不知道该怎么做,也找不到任何教程。 任何帮助将不胜感激(甚至链接!)

【问题讨论】:

  • 您能否添加您的 LUIS 模型的图像,以便我们了解您的意图/实体? TryFindCategory 在做什么?
  • 目前只有 1 个 Intent (Choose category) 和 1 个 Entity (Category)。 TryFindCategory 只是从 github.com/Microsoft/BotBuilder/blob/master/CSharp/Samples/… 第 60 行提取的内容,其中不是布尔值,而是返回实体或 null。

标签: c# botframework azure-language-understanding


【解决方案1】:

首先,您需要确保在包含类别的话语中,您将它们标记为类别实体。只需选择代表您的实体的单词/单词,然后在提交您的话语之前单击实际类别即可完成。

这与您添加的操作参数无关。要检查操作参数,您需要浏览实际意图。 IntentRecommendation 有一个 Actions 集合属性;其中包含一个 Parameters 集合属性。

这里要补充一点,在develop 分支中,BotFramework 团队刚刚添加了对 LUIS v2 API 的支持并添加了一些全新的功能。

例如,现在 LuisDialog 将在您的意图需要参数但未提供参数时执行。在那种情况下(看起来是你的),LuisDialog 将automatically launchLuisActionDialog 并使用您在操作参数中定义的提示消息询问用户缺少的参数。

请注意,这还没有作为 Nuget 包发布。

【讨论】:

  • 这有帮助吗?
猜你喜欢
  • 1970-01-01
  • 2018-03-11
  • 2017-07-18
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多