2016-06-17 4 views
3

私は現在、ボットフレームワーク技術に取り組んでいます。私のプロジェクトの1つで、私はフォームのバックボタンをクリックすると、ユーザー会話に戻ります。 enter image description here戻るボタンをクリックすると、前のユーザーの会話に戻ることができます。確認ダイアログでは?

私が知っているのは、ユーザーがボットフレームワークエミュレータに戻るとすぐに戻ってきますが、上記のシナリオが必要です。

上記のシナリオをどのように解決できますか?

+0

あなたが何を求めているのか分かりません。もっと具体的になりますか? – Lars

+0

上記の画像で、戻るボタンをクリックすると、前のステップの会話ダイアログには移動しません。戻るボタンをクリックすると、以前の会話に戻ることができますか教えてください。 – pradeep

+0

それはエミュレータでは動作しますが、他の場所では動作しないと言いますか? – Lars

答えて

0

これがFormDialogの場合、フォーム内の各要素に検証手順を追加できます。あなたの場合、おそらくbool "WantsToCreateAccount"などを使用していますか?あなたのFormBuilderコードで

私はここでやったとして、あなたは一般的に簡単な形式で、実行したい:

public static IForm<UserData> BuildForm() 
{ 
    return new FormBuilder<UserData>() 
      .Message("Before we start, let me ask you a couple of questions") 
      .AddRemainingFields() 

      .Field(new FieldReflector<UserData>(nameof(IsCustomer)) 
       .SetValidate(async (state, value) => await ValidateIsCustomerFieldAsync(state, value))) 

      .Field(new FieldReflector<UserData>(nameof(HasCustomerId)) 
       .SetValidate(async (state, value) => await ValidateHasCustomerIdFieldAsync(state, value))) 

      .Build(); 
} 

あなたはどんなロジックにあなたを適用することができる場所SetValidateが、ここで重要です」それはNULLにすることはできません値の型なので、それは「NOVALUEを持っている場合、バリデータは表示されませんので、BOOLEAN値がで検証を行うことがトリッキーであることをそのフィールドの検証の後のようなD、すなわち

private static Task<ValidateResult> ValidateHasCustomerIdFieldAsync(UserData state, object value) 
{ 
    if((SvarAlternativ) value == SvarAlternativ.Nej) 
    { 
     state.CustomerId = "Kund, har inte Id"; 
    } 
    return Task.FromResult(new ValidateResult { IsValid = true, Value = value }); 
} 

注意"または" false "の状態です。これはあなたを助け

public enum SvarAlternativ 
    { 
     NoValue, 
     Ja, 
     Nej 
    } 

希望:このため、私はちょうどゼロ値は、ボットフレームワークによって設定された「NOVALUE」状態である列挙型を作成しました。検証メソッドの内部に入ると、context.closeや必要な処理を行うことができます。

関連する問題