Как переопределить атрибут LuisIntent?
[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??
1 ответ
Я считаю, что то, что вы хотите сделать, можно сделать более простым способом, если предположить, что вы хотите выполнить другую логику в зависимости от того, была ли обнаружена сущность (или более одной).
LuisResult
класс, который вы получаете в методе намерения, содержит Entities
свойство со списком лиц, которые LUIS
обнаружен на основе вашего запроса.
Если вы все еще хотите выполнить фильтрацию переопределяющих вещей, то я считаю, что вам придется начать с переопределения DispatchToIntentHandler
метод ЛуисДиалог. Этот метод отвечает за поиск в словаре обработчиков намерений, основанный на имени намерения, для которого обработчик должен быть вызван.
Однако этого будет недостаточно, и вам придется создать новый EnumerateHandlers
потому что, как я упоминал ранее, словарь обработчиков создается только с именем намерения в качестве ключа, и кажется, что вы хотите включить сущности.
Наконец, вам придется обновить LuisIntentAttribute
включить имя сущности, которую вы хотите отфильтровать.
Как видите, главный путь - не лучший путь.