Как переопределить атрибут 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 включить имя сущности, которую вы хотите отфильтровать.

Как видите, главный путь - не лучший путь.

Другие вопросы по тегам