Как добавить диалог в бота с помощью SDK4.0 - PullRequest
0 голосов
/ 16 ноября 2018

Я пытаюсь внедрить бота, который использует службы Qna и поиск Azure.

Я использую пример кода gnub C # QnA Maker.

Он использует класс BotServices.cs, который принимает службу QnA в своем конструкторе.Этот объект Botservice передается в конструктор класса QnABot.

Я хочу использовать Dialog set в конструкторе QnABot, который требует добавления методов доступа.Я действительно не понимал, как добавить класс средства доступа и использовать их в автозагрузке.

Пожалуйста, помогите мне добавить аксессор в конструктор BotServices, чтобы я мог использовать внутри него диалоговые наборы.

Я хотел бы расширить образец QnA для своих целей.

1 Ответ

0 голосов
/ 16 ноября 2018

Можете ли вы сказать нам, почему вы хотите передать набор диалогов для класса botservices?этот класс используется только для ссылки на внешние сервисы, такие как QnAMaker и LUIS.Если вы хотите запустить диалог, сделайте это в методе OnTurnAsync класса QnABot.cs.имейте в виду, что метод this, созданный в этом конкретном образце, будет отправлять ответ на каждое сообщение, отправляемое пользователем, даже если они работают через диалог.Вы можете изменить OnTurnAsync таким образом, чтобы первым шагом в диалоге была проверка QnAMaker.Посмотрите пример enterpriseBot, чтобы увидеть, как запустить диалог, а также добавить средство доступа в дочерний диалог.см. следующий фрагмент из класса MainDialog.cs о том, как они добавили средство доступа:

protected override async Task OnStartAsync(DialogContext innerDc, CancellationToken cancellationToken = default(CancellationToken))
{
  var onboardingAccessor = _userState.CreateProperty<OnboardingState>(nameof(OnboardingState));
  var onboardingState = await onboardingAccessor.GetAsync(innerDc.Context, () => new OnboardingState());

  var view = new MainResponses();
  await view.ReplyWith(innerDc.Context, MainResponses.Intro);

  if (string.IsNullOrEmpty(onboardingState.Name))
  {
    // This is the first time the user is interacting with the bot, so gather onboarding information.
      await innerDc.BeginDialogAsync(nameof(OnboardingDialog));
  }
}
...