我正在研究具有 IDialog 的Bot应用程序。当增量值达到4时,它不会调用 MessageEndAsync 并等待用户输入。没有用户输入在模拟器中没有显示下一条消息。
一旦验证通过,我正在寻找一些解决方案,然后转到下一条消息,否则继续检查验证。
请你帮忙解决这个问题。
[Serializable]
public class PlayGame: IDialog<object>
{
private int increment = 0;
public async Task StartAsync(IDialogContext context)
{
context.Wait(MessageReceivedAsync);
}
public async Task MessageReceivedAsync(IDialogContext context, IAwaitable<IMessageActivity> argument)
{
var message = await argument;
increment++;
if (increment == 4)
{
await context.PostAsync(increment.ToString());
context.Wait(MessageEndAsync);
}
else
{
await context.PostAsync(increment.ToString());
context.Wait(MessageReceivedAsync);
}
}
public virtual async Task MessageEndAsync(IDialogContext context, IAwaitable<IMessageActivity> result)
{
await context.PostAsync("Thanks for your information");
context.Done<object>(null);
}
}
答案 0 :(得分:4)
MessageEndAsync
不会被呼叫。而不是执行context.Wait
只是将代码放在if子句中。因此,如果增量为4,您将发布消息并结束对话框。
context.Wait
用于使机器人处于等待状态,以便即将进行的用户输入。