我对此有疑问。 我想在Luis的帮助下创建一个简单的机器人。 我设法创建了一个机器人并在azure上托管它,我还在LUIS中创建了一个 intent 和一个实体。我已经创建了一些话语,并且该方面工作正常。
然后我在c#中通过 LuisDialog 创建。我必须在Azure中创建 Cognitive Services API 订阅,并将其生成的2个密钥复制到我的 LuisDialog 中。
我的对话框看起来像这样:
/// <summary>
/// Entities for the PiiiCK LUIS model.
/// </summary>
public static partial class PiiiCK
{
public const string DefaultCategory = "none";
public const string ChooseCategoryIntent = "Choose category";
}
[Serializable]
public class PiiiCKLuisDialog : LuisDialog<object>
{
/// <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.ChooseCategoryIntent, out title))
return title.Entity;
// Default fallback
return PiiiCK.DefaultCategory;
}
[LuisIntent("")]
public async Task None(IDialogContext context, LuisResult result)
{
// Create our response
var response = $"Sorry I did not understand";
// Post our response back to the user
await context.PostAsync(response);
// Execute the message recieved delegate
context.Wait(MessageReceived);
}
[LuisIntent("Choose category")]
public async Task ChooseCategory(IDialogContext context, LuisResult result)
{
// Get our category
var category = TryFindCategory(result);
// Create our response
var response = $"Found our entity: { category }";
// Post our response back to the user
await context.PostAsync(response);
// Execute the message recieved delegate
context.Wait(MessageReceived);
}
}
当我运行项目并使用 Bot模拟器来获取我的响应时,它总是不会响应。即使我写的信息与话语完全相同。现在我认为这是因为我迷惑了自己。我相信在通过认知服务帐户获取密钥以将其链接到 LUIS 端点之后还有另一个步骤,是否有人知道我接下来应该做什么?
我正在使用Alarm bot example来创建我的机器人,但这让我感到困惑(主要是因为我之前从未使用过Autofac),所以我改为Simple Alarm bot example。 我需要做的更改是使用Global.asax:
protected void Application_Start() => GlobalConfiguration.Configure(WebApiConfig.Register);
将 LuisModel 数据注释添加到 PiiiCKLuisDialog ,如下所示:
[Serializable]
[LuisModel("The Luis App Id", "The microsoft cognitive services subscription key")]
public class PiiiCKLuisDialog : LuisDialog<object>
当我运行我的应用程序时,我没有错误,当我使用 Microsoft Bot Emulator 与MicrosoftAppId和Secret时,我可以输入消息,但它仍然像以前一样。它总是进入无 Luis Intent,永远不会进入&#34;选择类别&#34;一。 值得注意的是, LuisResult 始终为空...
有什么想法吗?
答案 0 :(得分:1)