Microsoft Bot Framework Chain.While示例

加比奇人

我正在尝试在多个迭代中循环对话框。

示例:我想连续5次问一个问题(使用不同的参数)。我可以用无限循环循环对话框MyDialog.Loop()-没问题。

但是我需要一个有限的数-我认为我需要使用Chain.While()

到目前为止,没有成功,我找不到使用的任何示例Chain.While()

非常感谢任何帮助或示例代码。

谢谢!

威尔·波特诺伊

这是一个固定计数的while循环示例:

    [TestMethod]
    public async Task SampleChain_While_Count()
    {
        var root =
            Chain
            .PostToChain()
            .Select(_ => (IReadOnlyList<string>)Array.Empty<string>())
            .While
            (
                items => Chain
                            .Return(items)
                            .Select(i => i.Count < 3),
                items => Chain
                            .Return(items)
                            .Select(i => $"question {i.Count}")
                            .PostToUser()
                            .WaitToBot()
                            .Select(a => items.Concat(new[] { a.Text }).ToArray())
            )
            .Select(items => string.Join(",", items))
            .PostToUser();

        using (var container = Build(Options.ResolveDialogFromContainer | Options.Reflection))
        {
            var builder = new ContainerBuilder();
            builder
                .RegisterInstance(root)
                .As<IDialog<object>>();
            builder.Update(container);

            await AssertScriptAsync(container,
                "hello",
                "question 0",
                "A",
                "question 1",
                "B",
                "question 2",
                "C",
                "A,B,C"
                );
        }
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章