2017-03-10 1 views
0

Ich habe ein Problem, in dem, obwohl eine Entität in der Nachricht ist, der Formularfluss fordert mich immer noch die Ticketnummer eingeben. Ich habe die Ticketnummer als int deklariert. Ich habe auch versucht, TicketNumber als int zu deklarieren?Botframe Formflow nicht verbindlich LUIS builtin.number zu int oder int? Feld

Ich versuchte Variante 2 wo in der Zahl übergeben. Aber selbst dann fragt es mich nach ticketnumber, 12345 als die aktuelle Wahl bei der Aufforderung zeigend. Könnte der Null-Score, wie wir es in der Uhr sehen, ein Problem sein? Ich habe andere größere Form mit mehreren String-Feldern und es funktioniert gut.

Variante 1:

var ticketStatusParametersForm = new FormDialog<TicketStatusParameters>(new TicketStatusParameters(), this.MakeTicketStatusParametersForm, FormOptions.PromptInStart, result.Entities); 

Variante 2:

var ticketNumber = 12345; 
var ticketStatusParametersForm = new FormDialog<TicketStatusParameters>(new TicketStatusParameters { TicketNumber = ticketNumber}, this.MakeTicketStatusParametersForm, FormOptions.PromptInStart, result.Entities); 

public class TicketStatusParameters 
    { 
     [Prompt("Please enter a ticket number {||}")] 
     [Describe("Ticket Number")] 
     [Template(TemplateUsage.NotUnderstood, "Please enter a valid ticket number. I did not understand \"{0}\"")] 
     public int TicketNumber { get; set; } 
    } 
+0

Können zeigen Sie die Werte von result.Entities bitte –

Antwort

1

Die automatische Bindung nicht mit Vorgefertigte Einheiten arbeiten als Formflow den EntityRecommendation.Type Wert verwendet für ein Feld mit dem gleichen Namen suchen in Ihr Formularmodell. Sie müssen die Variation # 2 verwenden.

enter image description here

In Bezug auf das Problem beschrieben in Variation # 2, ich glaube, das Problem ist, dass Ihre prompte das {||} Musterelement hat, das für nicht zählbare Felder macht keinen Sinn.

Versuchen nur [Prompt("Please enter a ticket number")]

0

ich mit Testcode habe, die ein Nullable-Feld hat und wenn das Feld als Teil des Staates übergeben wird dieses Feld übersprungen. Sofern Sie FormOptions.PromptFieldsWithValues ​​nicht übergeben, sehe ich nicht, wie Sie dieses Verhalten erhalten. Du hast deine Klasse geändert, oder?

public class TicketStatusParameters 
    { 
     [Prompt("Please enter a ticket number {||}")] 
     [Describe("Ticket Number")] 
     [Template(TemplateUsage.NotUnderstood, "Please enter a valid ticket number. I did not understand \"{0}\"")] 
     public int? TicketNumber { get; set; } 
    } 
+0

Dies ist, was mein Code wie folgt aussieht [Serializable] public class TicketStatusParameters { [Prompt ("Bitte geben Sie eine Ticketnummer")] [Beschreiben ("Ticketnummer"]] [Vorlage (TemplateUsage.NotUnterstood, "Bitte geben Sie eine gültige Ticketnummer ein. Ich habe nicht verstanden" {0} \ "")] public int? TicketNummer {erhalten; einstellen; } öffentliche Überschreibung Zeichenfolge ToString() { Rückgabe String.Format ($ "{TicketNumber}"); } } – KalyanS

+0

Dies ist die Klasse. Bitte ignorieren Sie den vorherigen Kommentar. Die Formatierung wird verkorkste public class TicketStatusParameters { [Prompt ("Bitte geben Sie eine Ticketnummer")] [Beschreiben ("Ticket-Nummer")] [Template (TemplateUsage.NotUnderstood, „Bitte geben Sie eine gültige Ticket-Nummer eingeben. I nicht verstanden "{0} \" ")] public int? TicketNummer {erhalten; einstellen; – KalyanS

+0

} } Dies ist, wie ich raubend bin es [LuisIntent ("TicketStatus")] öffentlichen async Aufgabe TicketStatus (IDialogContext Zusammenhang LuisResult Ergebnis) { var ticketStatusParametersForm = new FormDialog (neu TicketStatusParameters(), das .MakeTicketStatusParametersForm, FormOptions.PromptInStart, result.Entities); context.Call (ticketStatusParametersForm, this.ResumeAfterTicketStatusParametersFormDialog); } – KalyanS

Verwandte Themen