如何使用 Bot Framework 发送主动对话

Mar*_*osa 1 botframework

我想用 C# 中的 BotBuilder 主动发起对话。主动消息工作正常,但我想发起一个对话。他们的方式是使用我的 Bot 类中的 dialogSet,但在这种情况下,我在另一个类上执行回调并且无法访问 dialogSet。这样做的正确方法是什么?

Mar*_*osa 5

我刚刚发现问题是什么。我通过以下方式解决了它:

  1. 在我处理主动触发器的类中创建一个对话框集。为此,我注入了 DialogState 访问器
  2. 仅添加了我需要触发的对话框,我假设这需要与我在 Bots dialogSet 中的对话框相匹配。我需要重构这个,以便我从这个类和机器人的同一个地方获取对话框,所以我没有重复的代码。
  3. 获取 dialogSet 的上下文并开始对话。
  4. 非常重要.... 保存 DialogState 的更改,否则将无法正确处理答案。

var _dialogSet = new DialogSet(accessors.DialogStateAccessor);

    _dialogSet.Add(new CrazyDialog("CrazyDialog"));

    DialogContext dc = await _dialogSet.CreateContextAsync(turnContext, cancellationToken);

    await dc.BeginDialogAsync("CrazyDialog", cancellationToken);

    await accessors.ConversationState.SaveChangesAsync(turnContext, false, cancellationToken);
Run Code Online (Sandbox Code Playgroud)