【问题标题】:Bot Framework: How to exit Conversation?Bot Framework:如何退出对话?
【发布时间】:2016-09-04 16:32:23
【问题描述】:

所以现在我正在使用Microsoft.Bot.Builder.Dialogs.Conversation.SendAsyncMicrosoft.Bot.Builder.Dialogs.Conversation.ResumeAsync 来实现一种暂停和恢复对话的方法,但似乎不可能“退出”或回到以前的状态。它卡在对话对话框中。

我是否只执行“取消”命令?如果是这样,我需要清除哪些数据才能恢复到原始状态?

    public static readonly IDialog<string> dialog = Chain
        .PostToChain()
        .Switch(
            new Case<Message, IDialog<string>>((msg) =>
            {
                var regex = new Regex("login", RegexOptions.IgnoreCase);
                return regex.IsMatch(msg.Text);
            }, (ctx, msg) =>
            {
                return Chain.ContinueWith(new ChatDialog(msg),
                            async (context, res) =>
                            {
                                var token = await res;
                                //var valid = await Helpers.ValidateAccessToken(token);
                                //var name = await Helpers.GetProfileName(token);
                                var name = "User";
                                context.UserData.SetValue("name", name);
                                return Chain.Return($"You are logged in as: {name}");
                            });
            })
        ).Unwrap().PostToUser();

所以如果我发送一个“登录”,它将开始一个新的ChatDialog 对话,但它似乎陷入了这种状态。即使我尝试发送另一个命令,它也会继续要求登录。我是否实现另一个Case 类来处理“取消”命令?还是应该在用户多次发送相同的“登录”命令时自动取消对话?必须单独发送“取消”命令似乎有点笨拙。

【问题讨论】:

  • 只是想知道,你找到解决方案了吗?我也有同样的问题。

标签: c# botframework


【解决方案1】:

我认为您缺少 DefaultCase。检查this。它显示了 Facebook Auth 示例的 DefaultCase 的实现。顺便说一句,在那个示例中,他们还有一个 Logout 命令。

【讨论】:

    【解决方案2】:

    我会考虑您的用户将如何解释对话的结束,并考虑这些场景以及人们如何结束对话。

    您可以添加代码来处理基于特定关键字的重置或对话结束,并使用 GlobalMessageHandler 模式。

    https://github.com/Microsoft/BotBuilder-Samples/tree/master/CSharp/core-GlobalMessageHandlers

    此外,希望用户在完成后只是“挂断”/关闭窗口。

    一套好的指标可以帮助收集有关人们如何使用机器人的信息,以便所有者改进它。 即:交互 X 是否导致了预期的交互 Y,或者我们在此对话中看到的最后一次交互是什么......等等。

    【讨论】:

      猜你喜欢
      • 2017-04-27
      • 1970-01-01
      • 2019-07-27
      • 2022-11-10
      • 1970-01-01
      • 2017-05-09
      • 2017-07-28
      • 2016-10-30
      • 2016-12-31
      相关资源
      最近更新 更多