本文介绍了如何使用Bot Framework发送主动对话框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I want to initiate a dialog proactively with BotBuilder in C#.Proactive message works fine, but I want to initiate a dialog. They way I would do it is with the dialogSet within my Bot class, but in this case I'm on another class executing the callback and don't have access to the dialogSet. What's the correct approach to do this?

推荐答案

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

I just found what the problem was.I solved it by:

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

var _dialogSet =新的DialogSet(accessors.DialogStateAccessor);

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);

这篇关于如何使用Bot Framework发送主动对话框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-16 17:20