2016-04-16 3 views

Antwort

1

Wenn Sie dynamische Werte für ein Feld in einem FormFlow setzen möchten, müssen Sie dynamisch definierte Felder verwenden.

Hier ist die doc und ein vollständiges Beispiel der Nutzung: http://docs.botframework.com/sdkreference/csharp/forms.html#dynamicFields

Grundsätzlich müssen Sie Ihre Daten erhalten (von SQL DB oder anderswo) in der SetDefine Funktion der field.AddDescription mit und field.AddTerms Funktionen.

:)

+0

Können Sie bitte ein einfaches Beispiel angeben? –

1

Hier ist eine Demo, wie dynamische Felder aus der Datenbank in Formflow zu implementieren. Ersetzen Sie StateClass nur durch den Namen Ihrer Klasse und ProperityName durch den Namen Ihrer Eigenschaft. Leider finden Sie zu diesem Zeitpunkt noch keine Informationen über FieldReflector in der offiziellen Dokumentation von Microsoft Bot Framework.

public static IForm<StateClass> BuildForm() 
    { 
     return new FormBuilder<StateClass>() 
       .Message("Start Message") 
       .Field(new FieldReflector<StateClass>(nameof(ProperyName)) 
         .SetType(null) 
         .SetDefine(async (state, field) => 
         { 
          List<string> list = QueryFromDatabase(); 
          foreach (string item in list) 
           field 
            .AddDescription(item , item) 
            .AddTerms(item , item); 

          return true; 
         })) 
       .AddRemainingFields() 
       .OnCompletionAsync(async (context, state) => 
       { 
        await context.PostAsync("Finish message"); 
       }) 
       .Build(); 
    }