2017-05-04 6 views
1

私たちのボットビルドは、ユーザーのための「パーソナリティクイズ」を実行します。バズフィードを考えよう。FormFlow Botsフレームワーククイズプログラムの使用

私はフォーム上のユーザーの選択に基づいて、整数だけを増やしたくて、さまざまな属性を持っていて、最終結果を返します。 テンプレートとしてSandwichbotを使用すると、これは(言い換え)のようなものです:

他の人を助けますか?それが正常に動作します

     .Confirm(async (state) => 
         { 

         switch (state.HelpYesNo) 
         { 
          case true: HelpfulValue++; break; 
          case false: HurtfulValue++; break; 
         } 
         return new PromptAttribute("Thanks, choose OK to continue."); 

が、私はOKと入力して、ユーザーの確認」を作るために持っていることを嫌い:はいいいえ

コードは次のようではありません。特別なステップです。特に、各質問の後に実行する必要がある場合。

私はこれを検証する代わりに、検証する:async(state、response)=> これはユーザーエクスペリエンスは向上しますが、スイッチケースは実際には実行されません。私はスイッチのフォーマットが間違った場所にあると思います。このケースを処理するための '検証'を行うための構文はここではわかりません。

FormFlowでこれを行う正しい方法は何ですか?

答えて

2

このようなものを試してみてください。ブールフィールドでもYes/Noの質問が表示されます。

[Serializable] 
public class QuizForm 
{ 
    public int HelpfulValue; 
    public int HurtfulValue; 

    [Prompt("Do you like to help people? {||}")] 
    public bool HelpPeople; 

    public static IForm<QuizForm> BuildForm() 
    { 
     return new FormBuilder<QuizForm>() 
       .Message("Let the quiz begin...") 
       .Field(nameof(HelpPeople), validate: ValidateBool) 
       // other fields 
       .Build(); 
    } 

    private static async Task<ValidateResult> ValidateBool(QuizForm state, object value) 
    { 
     var TrueOrFalse = (bool) value; 

     switch (TrueOrFalse) 
     { 
      case true: state.HelpfulValue++; break; 
      case false: state.HurtfulValue++; break; 
     } 

     return new ValidateResult{IsValid = true, Value = value}; 
    } 
} 
+0

ああ、ありがとう!これは、1つのタイプミスを除く - あなたのValidateBoolにQuizFormを持つSimpleFormを置き換えました。助けてくれてありがとう! –

+0

ああ、ああ、忘れてしまった。私はそれを編集した。ありがとうございました。 –

関連する問題