2016-12-14 7 views
0

私は4つの選択肢をPromptDialog.choiceメソッドで提示しています。私の再開メソッドでは、ユーザーを選択肢に対処するためのダイアログに転送したいと考えています。私はもはや現在のMessageActivityオブジェクト にアクセスすることができず、私のオプションは何か?可能であれば、元のメッセージを渡したいと思います。空のものを渡すことはハックのようです。ダイアログPrintGraphicDialogはグラフィックイメージを表示し、4つの選択肢に戻ります。 Context.Callを使用すると、PrintGraphicDialogのStartAsyncメソッドがヒットし、ユーザーが何かを入力する必要があるcontext.wait()呼び出しが発生します。次に、グラフィックスを印刷します。まったく必要なものではありません。BotFrameworkのPromptDialogから現在のMessageActivityにアクセスする方法

private void ShowOptions(IDialogContext context) 
{ 
    PromptDialog.Choice(context, this.OnOptionSelected, new List<string>() { OptionOne, OptionTwo, OptionThree, OptionFour }, "Please select from the following options:", "Not a valid option", 3); 
} 

private async Task OnOptionSelected(IDialogContext context, IAwaitable<string> result) 
{ 
    try 
    { 
     string optionSelected = await result; 

     switch (optionSelected) 
     { 
      case OptionOne: 
       await context.Forward(new PrintGraphicDialog(), this.ResumeAfterOptionDialog, context.MakeMessage(), CancellationToken.None); 
       break; 
      case OptionTwo: 
       break; 
      case OptionThree: 
       break; 
      case OptionFour: 
       break; 
     } 
    } 
    catch (TooManyAttemptsException ex) 
    { 
    } 
} 

答えて

0

あなたのPromptDialog.Choiceを呼び出す前に、変数の右にメッセージを格納し、再開方法でそれを使用することができます。

+0

プライベートIAwaitable _activity;を追加します。 PromptDialogを呼び出す前にそれを割り当てます。しかし、それを新しいダイアログに渡すことを私が待っているときは、常にnullです。 varメッセージは_activityを待つ。メッセージはnullです。新しいダイアログで、それを呼び出す前に。 – DCrites

+0

IAwaitable という意味ではなく、IMessageActivityを格納してみてください。格納する前に待ってください。 –

0

私がコントロールを転送していたダイアログは、元のメッセージからいくつかのプロパティを必要としていたので、クラスを作成してそこに格納し、転送する前にcontext.MakeMessage()プロパティ。より良い方法があるように見えます。

関連する問題