У меня есть бот, написанный на C #, который использует LUIS для определения намерений.У меня есть метод, который выполняет вызов службы LUIS, а затем ищет намерение «Open_Case».Модель имеет определенный объект CaseNumber, который может или не может быть включен в ответ от службы LUIS.Если в ответе нет сущности с номером дела, я запускаю диалоговое окно, чтобы спросить у пользователя номер дела.Получив номер дела, я хочу вернуть карточку с информацией о деле.
Вот код, который у меня есть: -
/// <summary>
/// Dispatches the turn to the requested LUIS model.
/// </summary>
private async Task DispatchToLuisModelAsync(ITurnContext context, string appName, DialogContext dc, CancellationToken cancellationToken =
default (CancellationToken)) {
var result = await botServices.LuisServices[appName].RecognizeAsync(context, cancellationToken);
var intent = result.Intents ? .FirstOrDefault();
string caseNumber = null;
if (intent ? .Key == "Open_Case") {
if (!result.Entities.ContainsKey("Case_CaseNumber")) {
var dialogResult = await dc.BeginDialogAsync(CaseNumberDialogId, null, cancellationToken);
} else {
caseNumber = (string)((Newtonsoft.Json.Linq.JValue) result.Entities["Case_CaseNumber"].First).Value;
var cardAttachment = botServices.CaseInfoServices.LookupCase(caseNumber);
var reply = context.Activity.CreateReply();
reply.Attachments = new List < Attachment > () {
cardAttachment
};
await context.SendActivityAsync(reply, cancellationToken);
}
}
}
То, с чем я борюсь, это то, куда отправляют кодответ карты должен сидеть.В коде, который у меня есть, я отправляю карту, если номер был возвращен в ответе LUIS, но если номера не было, и я запускаю диалоговое окно, то я получаю доступ только к номеру либо на последнем шаге диалога, либо врезультат диалога в обработчике корневого поворота.В настоящее время я продублировал ответ на последнем этапе диалога, но он кажется неправильным и не элегантным.Я уверен, что должен быть способ, которым я могу собрать номер из LUIS или диалогового окна, и ТОГДА отправить ответ из одного места вместо дублирования кода.
Любые предложения, с благодарностью полученные ...