【发布时间】:2017-06-19 20:55:45
【问题描述】:
我确定这是个愚蠢的问题,但如果我不问我会更愚蠢 我有以下代码
[Serializable]
public class RootDialog : IDialog<object>
{
public async Task StartAsync(IDialogContext context)
{
await context.PostAsync("RootDialog !");
context.Wait(MessageReceivedAsync);
}
private async Task MessageReceivedAsync(IDialogContext context, IAwaitable<object> result)
{
var activity = await result as Activity;
// calculate something for us to return
int length = (activity.Text ?? string.Empty).Length;
// return our reply to the user
await context.PostAsync($"You sent {activity.Text} which was {length} characters");
context.Wait(MessageReceivedAsync);
}
}
我理解语句上下文。Wait 用于等待用户的下一条消息。 但是如果我启动我的 RootDialog 我的声明 等待 context.PostAsync("RootDialog !"); 在我的声明之后执行 await context.PostAsync($"你发送的 {activity.Text} 是 {length} 个字符"); 也被执行了。
为什么?
为什么我没有在我的程序中暂停语句 context.Wait(MessageReceivedAsync); 在 StartAsync 函数中,就像我在 MessageReceivedAsync 函数中一样?
【问题讨论】:
-
您使用的是什么版本的 BotBuilder?您如何创建/启动
RootDialog?。顺便说一句,如果此对话框是使用 Conversation.SendAsync() 启动并在消息之后发生的,那么您所看到的行为就可以了。 -
我使用我认为的最后一个版本。 3.8.是的,使用 Conversation.SendAsync
标签: c# botframework