我试图在多次迭代中循环一个对话框。
例句:我喜欢连续问5次问题(参数不同)。我能够用MyDialog.Loop()循环我的对话框无穷大-没问题。
但我需要一个有限的数字-我想我需要使用Chain.While()。
到目前为止还没有成功,我也找不到任何使用Chain.While()的例子。
任何帮助或示例代码都是非常感谢的。
谢谢!
发布于 2016-09-29 12:34:19
下面是一个显示电子邮件链的示例,它使用时间询问电子邮件接收者:
Func<string, IDialog<string>> Ask = toUser =>
Chain.Return(toUser)
.PostToUser()
.WaitToBot()
.Select(m => m.Text);
IDialog<IReadOnlyList<string>> recipientsDialog =
Chain
.Return(Array.Empty<string>())
.While(items => Ask($"have {items.Length} recipients, want more?").Select(text => text == "yes"),
items => Ask("next recipient?").Select(item => items.Concat(new[] { item }).ToArray()));
var emailDialog = from hello in Chain.PostToChain().Select(m => m.Text + " back!").PostToUser()
from subject in Ask("what is the subject?")
from body in Ask("what is the body?")
from recipients in recipientsDialog
select new { subject, body, recipients };
var rootDialog = emailDialog
.Select(email => $"'{email.subject}': '{email.body}' to {email.recipients.Count} recipients")
.PostToUser();https://stackoverflow.com/questions/39759655
复制相似问题