2017-05-04 2 views
1

봇 빌드는 사용자를 위해 '성격 퀴즈'를 수행합니다. 버즈 피드를 생각해보십시오.FormFlow 봇 사용 프레임 워크 퀴즈 프로그램

나는 폼에서 사용자의 선택에 따라 정수 만 증가시키려는 다양한 속성을 가지고 있으며 최종 결과를 반환합니다. Sandwichbot을 템플릿으로 사용하여 다음과 같이 묻습니다.

다른 사람들을 도울 수 있습니까? 그것은 잘 작동

     .Confirm(async (state) => 
         { 

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

,하지만 난 확인을 입력하여 사용자 '확인'을 확인해야 싫어 : 예 아니오

코드와 같은 없습니다. 특히 각 질문을 마친 후에해야하는 경우에는 추가 단계입니다.

대신 validate : async (state, response) => 을 사용하여이 기능을 작성해 보았습니다. 사용자 환경이 개선되었지만 스위치 케이스가 실제로 실행되지는 않습니다. 나는 스위치의 포맷팅이 유효성 검사를위한 잘못된 장소에 있다고 생각합니까? 나는 사건을 처리하기 위해 '검증'을하기 위해 여기에 구문이 있는지 확신하지 못합니다.

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에서 SimpleForm을 QuizForm으로 대체했습니다. 도와 주셔서 감사합니다! –

+0

아, 그걸 잊어 버렸어. 나는 그것을 편집했다. 고맙습니다. –

관련 문제