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

时间:2019-07-10 17:28:28

标签: botframework

我想用C#中的BotBuilder主动启动对话框。 主动消息工作正常,但我想启动一个对话框。他们用我的Bot类中的dialogSet来做到这一点,但是在这种情况下,我在另一个执行回调的类中,没有访问dialogSet的权限。正确的方法是什么?

1 个答案:

答案 0 :(得分:1)

我刚刚发现了问题所在。 我是通过以下方式解决的:

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

var _dialogSet =新的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);