В официальном SDK Bot Framework BeginDialogAsycn
- это метод в классе Dialog
. Это займет всего DialogContext
, Options
(необязательно) и CancellationToken
. Вы можете увидеть полную реализацию здесь
/// <summary>
/// Method called when a new dialog has been pushed onto the stack and is being activated.
/// </summary>
/// <param name="dc">The dialog context for the current turn of conversation.</param>
/// <param name="options">(Optional) additional argument(s) to pass to the dialog being started.</param>
/// <param name="cancellationToken">A cancellation token that can be used by other objects
/// or threads to receive notice of cancellation.</param>
/// <returns>A <see cref="Task"/> representing the asynchronous operation.</returns>
/// <remarks>If the task is successful, the result indicates whether the dialog is still
/// active after the turn has been processed by the dialog.</remarks>
public abstract Task<DialogTurnResult> BeginDialogAsync(DialogContext dc, object options = null, CancellationToken cancellationToken = default(CancellationToken));
Это означает, что для реализации того, что вы ищете, у вас есть 3 варианта:
A) Вы передаете данные как часть DialogContext. Это проще всего, если данные поступают от клиента, как в ответе на вопрос, который только что задал ваш бот, т.е. «Сколько вам лет?»
B) Вы сохраняете необходимые данные в глобальной переменной на предыдущем шаге диалога и вызываете их в той части диалога, которая вам нужна.
в) BeginDialogAsync - абстрактный класс. Вы можете создать свой собственный дочерний класс Dialog, наследовать этот класс диалогов и переопределить метод.