2017-02-13 51 views
1

我正在研究Bot應用程序,它有IDialog。當增量值達到4時,它不會調用MessageEndAsync並等待用戶輸入。沒有用戶輸入不顯示仿真器中的下一條消息。Bot context.Wait沒有顯示下一條消息

我正在尋找一些解決方案,一旦驗證通過,然後移動到下一個消息,否則繼續檢查驗證。

你能否請求幫助我解決這個問題。

[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); 
     } 
    } 

回答

4

MessageEndAsync將不會被調用,直到用戶發送輸入。而不是在做context.Wait只是把代碼放在if子句中。所以如果增量是4,你會發布消息並結束對話。

context.Wait用於使bot在即將到來的用戶輸入中處於等待狀態。