[LuisIntent(intentName: "Eligibility")]
private async Task Eligibility(IDialogContext context, LuisResult result)
{
await context.PostAsync($"You have chosen the eligibility intent with no entities");
context.Wait(MessageReceivedAsync);
}
如何覆盖LuisIntent属性,使其同时采用IntentName和EntityName ??
答案 0 :(得分:1)
我相信你想要做的事情可以用一种更简单的方式来完成,假设你想要做的是根据是否检测到一个实体(或多个实体)来执行不同的逻辑。
您在intent方法中获得的LuisResult
类包含Entities
属性,其中包含LUIS
根据您的查询检测到的实体列表。
如果您仍想要过滤覆盖事物,那么我相信您必须首先覆盖LuisDialog的DispatchToIntentHandler
方法。该方法负责根据意图名称查看意图处理程序字典,该处理程序需要调用该存储区。
然而,这不太可能,你将不得不创建一个新的EnumerateHandlers
因为正如我之前提到的那样,处理程序字典只是以意图名称作为密钥而创建的似乎你想要合并实体。
最后,您必须更新LuisIntentAttribute
以合并您要过滤的实体名称。
正如您所看到的,最重要的路径不是最佳选择。