2017-04-26 4 views
2

私はBotFrameworkを使ってボットを実現しています。私はインターフェースIDialogを使用しています。ダイアログで は、EchoDialogを呼び出し、メインコードは以下である:BotFrameworkの 'context.Wait'とは何ですか?

public Task StartAsync(IDialogContext context) 
    { 
     context.Wait(MessageReceivedAsync); 
     return Task.CompletedTask; 
    } 

    private async Task MessageReceivedAsync(IDialogContext context, IAwaitable<IMessageActivity> result) 
    { 
     var activity = await result; 
     await context.PostAsync($"{count++},You said: " + activity.Text); 
     context.Wait(MessageReceivedAsync); 
    } 

とMessagesController.csメインコード:

public async Task<HttpResponseMessage> Post([FromBody]Activity activity) 
    { 
     if (activity.Type == ActivityTypes.Message) 
     { 
      await Conversation.SendAsync(activity,() => new EchoDialog()); 
     } 
     var response = Request.CreateResponse(HttpStatusCode.OK); 
     return response; 
    } 

よく実行コード。私は(機能MessageReceivedAsyncでEchoDialog.csで、)コードにコメントなら:

context.Wait(MessageReceivedAsync); 

コードの実行結果は、それはそれはまだ入力をどのように使用することができますエコーで、コメントのない結果と同じです。

実際にはcontext.Waitとは何ですか?

答えて

3

context.Wait(...)は、ユーザの次のメッセージが受信されたときにダイアログがどのメソッドを使用するか、つまり新しいメッセージを受信したときにコントローラによって呼び出されるメソッドを定義します。

編集:フレームをMessageReceivedAsyncメソッドに残しておくと、フレームワークはメッセージに応答するために同じメソッドを再利用し続けます。

+0

em ..私の場合、コードを使用する必要はありません:context.Wait(MessageReceivedAsync); ? – cherish

+0

両方の行にコメントしますか? –

+0

ただ、関数MessageReceivedAsyncの行をコメントしてください – cherish

関連する問題