Microsoft Bot Framework、LUIS 和 Action 参数
Microsoft Bot Framework, LUIS and Action parameters
我正在尝试使用 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);
}
我想你能猜到我的目的是什么。如果用户键入 Help me buy a camera,它将到达 Choose category Intent 并且将具有正确的 Entity 选中。
但是,如果他们键入 Help me buy,它仍会转到正确的 Intent,但不会有选定的 Entity。我希望我的机器人看到它并使用我在 LUIS 中创建的 Prompt 中的文本,当用户选择他们的 entity 我希望它使用该参数返回 LUIS。
我不知道该怎么做,也找不到任何相关教程。
任何帮助将不胜感激(甚至链接!)
首先,您需要确保在包含类别的话语中,您将它们标记为类别实体。这只需选择代表您的实体的 word/words,然后在提交您的话语之前单击实际类别即可。
这与您添加的操作参数无关。要检查操作参数,您需要浏览实际意图。 IntentRecommendation has an Actions collection property; which contains a Parameters 合集 属性.
这里要补充一点,在 develop 分支中,BotFramework 团队刚刚添加了对 LUIS v2 API 的支持,并添加了一些全新的功能。
例如,如果您的意图需要参数但未提供这些参数,现在 LuisDialog 将起作用。在那种情况下(这似乎是你的),LuisDialog 将 automatically launch a LuisActionDialog 并使用你在操作参数中定义的提示消息询问用户缺少的参数。
请注意,这还没有发布为 Nuget 包。
我正在尝试使用 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);
}
我想你能猜到我的目的是什么。如果用户键入 Help me buy a camera,它将到达 Choose category Intent 并且将具有正确的 Entity 选中。 但是,如果他们键入 Help me buy,它仍会转到正确的 Intent,但不会有选定的 Entity。我希望我的机器人看到它并使用我在 LUIS 中创建的 Prompt 中的文本,当用户选择他们的 entity 我希望它使用该参数返回 LUIS。
我不知道该怎么做,也找不到任何相关教程。 任何帮助将不胜感激(甚至链接!)
首先,您需要确保在包含类别的话语中,您将它们标记为类别实体。这只需选择代表您的实体的 word/words,然后在提交您的话语之前单击实际类别即可。
这与您添加的操作参数无关。要检查操作参数,您需要浏览实际意图。 IntentRecommendation has an Actions collection property; which contains a Parameters 合集 属性.
这里要补充一点,在 develop 分支中,BotFramework 团队刚刚添加了对 LUIS v2 API 的支持,并添加了一些全新的功能。
例如,如果您的意图需要参数但未提供这些参数,现在 LuisDialog 将起作用。在那种情况下(这似乎是你的),LuisDialog 将 automatically launch a LuisActionDialog 并使用你在操作参数中定义的提示消息询问用户缺少的参数。
请注意,这还没有发布为 Nuget 包。