2017-03-10 7 views
0

メッセージにエンティティが存在するにもかかわらず、フォームフローは依然としてチケット番号の入力を要求します。 私はここでintとしてTicketNumberを宣言しました。 TicketNumberをintとして宣言しようとしましたか?Botframework FormflowがバインドされていないLUISのbuiltin.numberをintまたはintにバインドしていませんか?フィールド

私はバリエーション2を試してみました。しかしそれでも、プロンプトを表示するときに現在の選択肢として12345を示すチケット番号を求められます。 下記の時計に見られるように、ヌルスコアが問題になることはありますか? 私は、複数の文字列フィールドを持つ他の大きなフォームを持っており、うまくいきます。

バリエーション1:

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

バリエーション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

あなたがresult.Entitiesの値が –

答えて

1

FormFlowは、同じ名前のフィールドを探すためにEntityRecommendation.Type値を使用して自動バインディングは、ビルド済みのエンティティでは動作しません。あなたのフォームモデルバリエーション#2を使用する必要があります。バリエーション#2に記載された問題について

enter image description here

、私は問題があなたのプロンプトが列挙されていないフィールドのために意味をなさない{||}パターン要素を、持っているということだと思います。

はちょうど[Prompt("Please enter a ticket number")]

0

私がNULL可能フィールドがあり、そのフィールドはフィールドがスキップされた状態の一部として渡されたときにテストコードを持っているを使用してみてください。 FormOptions.PromptFieldsWithValuesを渡さない限り、この動作をどのように取得しているのかわかりません。あなたはクラスをこれに変更しましたか?

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

これは私のコードは[Serializableを] パブリッククラスTicketStatusParameters { [プロンプト(「チケット番号を入力してください」)] ように見えるものである[(説明してください表示されことができます"Ticket Number")] [Template(TemplateUsage.NotUnderstood、有効なチケット番号を入力してください。\ "{0} \" ")] public int? TicketNumber {get;セット; } パブリックオーバーライド文字列ToString() { return string.Format($ "{TicketNumber}"); } } – KalyanS

+0

これはクラスです。以前のコメントは無視してください。フォーマットは、有効なチケット番号を入力してください [テンプレート(TemplateUsage.NotUnderstood、「[(「チケット番号」)を記述する] { [(「チケット番号を入力してください」)プロンプト] パブリッククラスTicketStatusParametersを台無しにされています。私は、 \ "{0} \" ")] public int? TicketNumber {get;セット;私はそれ [LuisIntent( "TicketStatus")]タスクTicketStatus(IDialogContextコンテキスト、LuisResult結果)非同期公共 を消費していますか} } – KalyanS

+0

はこれがある { するvar ticketStatusParametersForm =新しいFormDialog (新TicketStatusParameters()、この.MakeTicketStatusParametersForm、FormOptions.PromptInStart、result.Entities); context.Call (ticketStatusParametersForm、this.ResumeAfterTicketStatusParametersFormDialog); } – KalyanS

関連する問題