Bot context.Wait没有显示下一条消息

时间:2017-02-13 16:08:20

标签: c# azure bots botframework

我正在研究具有 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);
        }
    }

1 个答案:

答案 0 :(得分:4)

在用户发送输入之前,

MessageEndAsync不会被呼叫。而不是执行context.Wait只是将代码放在if子句中。因此,如果增量为4,您将发布消息并结束对话框。

context.Wait用于使机器人处于等待状态,以便即将进行的用户输入。