2017-05-04 46 views
1

我們的機器人構建爲用戶進行「個性測驗」。想想Buzzfeed。使用FormFlow機器人框架測驗程序

我有很多屬性,我想增加,只是整數,根據用戶在表單上的選擇,然後返回最終結果。 使用Sandwichbot作爲模板,這是要求類似(釋義):

你喜歡幫助別人嗎?是否

代碼如下:

     .Confirm(async (state) => 
         { 

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

它工作正常,但我恨,我必須通過鍵入OK,使用戶「確認」。這是一個額外的步驟,特別是如果他們必須在每個問題後完成。

我試着寫一個驗證,而不是,例如驗證:異步(狀態,響應)=> 這提供了更好的用戶體驗,但實際上並沒有運行開關情況。我認爲交換機的格式是錯誤的地方進行驗證?我不確定這裏的語法是「驗證」來處理案例。

什麼是在FormFlow中做這樣的事情的正確方法?

回答

2

嘗試這樣的事情。布爾字段也會導致「是/否」問題。

[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

啊,謝謝!這工作除了一個錯字 - 在您的ValidateBool中用QuizForm替換SimpleForm。謝謝您的幫助! –

+0

啊忘了那個。我編輯它。謝謝。 –

相關問題