我正在尝试使用 LUIS 构建一个机器人,但它比我想象的要困难得多。到目前为止,我已经成功地创建了我的 LUIS 应用程序并创建了一个Intent和一个实体,并且我创建了一些似乎可以正常工作的话语。
然后我创建了我的机器人并将其连接到 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,它将进入选择类别Intent 并选择正确的实体。但是如果他们输入Help me buy,它仍然会转到正确的 Intent ,但不会有选定的Entity。我希望我的机器人看到并使用我在 LUIS 中创建的提示中的文本,当用户选择他们的实体时,我希望它使用该参数返回 LUIS。
我不知道该怎么做,也找不到任何教程。任何帮助将不胜感激(甚至链接!)