2016-07-18 4 views
0

多くの質問をユーザーに継続的に聞きたいと思います。私はそれを実装するためにPromptDialog.Choice()を使用したいが、私はこれを好きなら、第2のユーザ情報は、最初のコールバック関数を呼び出すので、私はどのように関数から飛び出すのか分からない。私はPromptDialog.choiceを継続的に使用して、ボットフレームワークの多くの関連情報を尋ねることができます

public void getchoose(IDialogContext context) 
    { 

     List<string> option_provide = null; 
     bool if_find = true; 
     foreach (var i in question.GetSortedProperties()) 
     { 
      nowchoice = i; 

      if (!question.select<test_tableinfo>(i.Name, (string)i.GetValue(question), allOptions, out allOptions, out option_provide)) 
      { 

       if (allOptions.Count() == 1) 
       { 
        context.PostAsync(allOptions.First().answer); 

        if_find = false; 
        context.Wait(MessageReceived); 
       } 

       if (option_provide.Count() < 1) 
       { 

        context.PostAsync("请联系客服"); 
        if_find = false; 
       } 
       else if (option_provide.Count() == 1) 
       { 
        i.SetValue(question, option_provide[0]); 
        question.select(i.Name, (string)i.GetValue(question), allOptions, out allOptions, out option_provide); 
       } 
       else 
       { 
        PromptDialog.Choice<string>(context, AfterChoose, option_provide, "选择你需要的"+i.Name, "retry", 2); 
        if_find = false; 
        break; 
       } 
      } 
     } 
     if (if_find) 
     { 
      foreach (var i in allOptions) 
      { 
       context.PostAsync(i.answer); 
      } 
      context.Wait(MessageReceived); 
     } 

    } 

と私は変数の順序を取得するためにここにリフレクションを使用

public async Task AfterChoose(IDialogContext context, IAwaitable<string> choice) 
    {  
     try 
     { 
      string temp = await choice; 
      if (temp != null) 
       nowchoice.SetValue(question, temp); 

     } 
     catch (Exception) 
     { 
     } 
     context.Reset(); 
     getchoose(context);    
    } 

afterchooseコールバック関数が、それは

答えて

0

は、私がすでにあるため、あなたが探しているものと信じて、この質問のために重要ではありませんBotフレームワークの一部。 FormFlowは、ユーザーから収集したいデータのモデルを構築し、一連の質問を行うことができる機能です。この質問は、回答によって必要に応じて分岐することができます。

FormFlow documentation on the Bot Framework siteをチェックしてください。

関連する問題