2017-02-13 11 views
1

私はIDialogを持つBotアプリケーションに取り組んでいます。増分値が4に達すると、MessageEndAsyncが呼び出されず、ユーザーの入力を待っています。エミュレータで次のメッセージが表示されないユーザ入力なし。Botコンテキスト。次のメッセージを表示しないでください

妥当性検査に合格したら、解決策を探しています。そうでない場合は、次のメッセージに移動します。

この問題を解決するお手伝いをしてください。

[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は、今後のユーザ入力のためにボットを待機状態にするために使用されます。

関連する問題