Я использую только Elastic-search. Поскольку я нашел solr, очень сложно начать. Функции Elastic-search:
@ Данте ответ правильный, но я сделаю его немного легче для понимания:
Допустим, у вас есть ParentDialog
, который вызывает ChildDialog
.
Если у вас был следующий класс:
public class OptionsPassed
{
public string ParameterToPass { get; set; }
}
Вызовите свой дочерний диалог, например: await stepContext.BeginDialogAsync(nameof(ChildDialog), new OptionsPassed { ParameterToPass = "ValueToPass" });
иметь доступ к { ParameterToPass: "ValueToPass" }
в любом месте в пределах ChildDialog
с stepContext.Options.ParemeterToPass
. Например, если вы хотите увидеть, какое значение вы передали:
Первый шаг из ChildDialog
:
private static async Task<DialogTurnResult> FirstStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken = default(CancellationToken))
{
var passed = stepContext.Options as OptionsPassed;
await stepContext.Context.SendActivityAsync($"You passed in {passed.ParameterToPass}");
return await stepContext.NextAsync();
}
Что именно ты пытаешься сделать? stepContext.Options - это объект, который можно отправить при вызове Dialog либо с помощью BeginDialog, либо с помощью ReplaceDialog. Например:
await BeginDialogAsync(dialogId, sendobject, cancellationToken)
stepContext.Options
- ваш способ получения этого объекта через вызываемый диалог.
Например, в первом документе основной диалог вызывает каждого дочернего диалога и отправляет им объект userInfo.Guest:
return await stepContext.BeginDialogAsync(TableDialogId, userInfo.Guest, cancellationToken);
И вызываемый диалог получает его и преобразует в строку в качестве проверки:
string greeting = step.Options is GuestInfo guest
&& !string.IsNullOrWhiteSpace(guest?.Name)
? $"Welcome {guest.Name}" : "Welcome";
Вы можете лишить проверки, и это будет выглядеть так, имея в виду, что это будет работать, только если отправляемый объект (userInfo.Guest) не равен нулю и может быть приведен в строка:
string greeting = (string)step.Options;
Имейте в виду, что: stepContext.Options; является объектом и должен быть приведен к правильному типу. Если вы не добавите проверку null / type, приведение может завершиться неудачей, и ваш бот может потерпеть крах. Это особенность фреймворка, но бот не требует его работы, и вы можете использовать другие способы отправки объектов через методы или классы.