2016-04-13 1 views
0

をバインドするLUISエンティティに渡す:は、誰かが私は一体これはボットフレームワークdocumentionから何を意味するのか解釈に役立つことができます対話状態に

あなたはまた、状態にバインドするLUISエンティティに渡すことができます。 EntityRecommendation.TypeがC#クラスのフィールドへのパスである場合、EntityRecommendation.Entityは、フィールドにバインドするためにレコグナイザを介して渡されます。初期状態と同様に、そのフィールドを埋めるためのステップはスキップされます。

私は私のダイアログを呼び出すと、私はそうのように私のLuisResult resultエンティティコレクションに渡します。これらのエンティティ内

context.Call(new FormDialog<ItemSearch>(new ItemSearch(), ItemSearch.BuildForm, options: FormOptions.PromptInStart,entities:result.Entities), null); 

は、しかし、私のダイアログ上のパブリックプロパティに名前とタイプの両方にマッピングされる少なくとも一つであります状態は決して満たされない。私は何が欠けていますか?

TIA。

答えて

0

この例は、PizzaOrderDialogにあります。 FormDialogの実装を見ると、entity.typeを使用して渡されたエンティティの推奨事項をフォームのステップにマッピングしています。次に、検出されたエンティティがフォームのそのステップへの入力として提供されます。ここで

はフォームがピザの形でルイス・モデルによって検出されたエンティティに基づく一種のステップをスキップする方法の例です:

 var entities = new List<EntityRecommendation>(result.Entities); 
     if (!entities.Any((entity) => entity.Type == "Kind")) 
     { 
      // Infer kind 
      foreach (var entity in result.Entities) 
      { 
       string kind = null; 
       switch (entity.Type) 
       { 
        case "Signature": kind = "Signature"; break; 
        case "GourmetDelite": kind = "Gourmet delite"; break; 
        case "Stuffed": kind = "stuffed"; break; 
        default: 
         if (entity.Type.StartsWith("BYO")) kind = "byo"; 
         break; 
       } 
       if (kind != null) 
       { 
        entities.Add(new EntityRecommendation(type: "Kind") { Entity = kind }); 
        break; 
       } 
      } 
     } 

     var pizzaForm = new FormDialog<PizzaOrder>(new PizzaOrder(), this.MakePizzaForm, FormOptions.PromptInStart, entities); 
0

またのエンティティを渡すと問題があることが表示されますそれはそうです。あなたがマッピングしているプロパティがEnum(PizzaBotサンプルごとに)であれば動作します。ただし、パブリックプロパティが文字列の場合はマップされません。他のタイプについてはわかりません。

ここに表示https://github.com/Microsoft/BotBuilder/issues/151

関連する問題