我有一个LUIS模型,正在尝试使用以下代码枚举我的实体。
执行第二行时出现以下错误。
“字典中不存在给定的键'luisResult'”
最近是否更改了LUIS的实施?在LUIS中枚举所有实体的替代方法是什么?
var result = await _botServices.Dispatch.RecognizeAsync(stepContext.Context, cancellationToken);
var luisResult = result.Properties["luisResult"] as LuisResult;
var entities = luisResult.Entities;
foreach (var entity in entities)
{
if (Common.BugTypes.Any(s => s.Equals(entity.Entity,
StringComparison.OrdinalIgnoreCase)))
{
await stepContext.Context.SendActivityAsync(
MessageFactory.Text(String.Format("Yes! {0} is a Bug Type!",
entity.Entity)), cancellationToken);
}
else
{
await stepContext.Context.SendActivityAsync(
MessageFactory.Text(String.Format("No! {0} is not a Bug Type!", entity.Entity)), cancellationToken);
}
}
return await stepContext.NextAsync(null, cancellationToken);
您如何更改
var luisResult = result.Properties["luisResult"] as LuisResult;
to
var luisResult = result;
然后访问Entities
类的RecognizerResult属性。
您甚至可以放弃创建luisResult
变量,而只使用result.Entities
。
我已经解决了这个问题。有两个问题。
当我构建识别器选项时,我没有提到参数“ IncludeAPIResults = true”
但是仍然不起作用,使用LuisRecognizerOptionsV3时luisResult始终返回null。我最终求助于使用有效的LuisRecognizerOptionsV2。我可能会为此提交一个错误。