как DialogContext.BeginDialogAsync () начинает диалог с параметром конструкции - PullRequest
0 голосов
/ 11 июля 2019

Я пытаюсь начать диалог с параметром конструкции, например MyDialog (int a).Как DialogContext.BeginDialogAsync () начинает диалог, подобный MyDialog, и передает ему целое число (или любой другой тип данных)?

Спасибо!

1 Ответ

0 голосов
/ 11 июля 2019

В официальном 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, наследовать этот класс диалогов и переопределить метод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...