2017-01-30 26 views
0

Microsoftボットフレームワークを使用してライブラリボットを開発しています。マイクロソフトボット - 同じ回答のループも入力が異なる

私は「私はJavaの本を必要とする」検索すると私たちは

Intent : BookSearch 
Entiry : BookName, BookAuthor 

、それはjavaは "実体であることを理解し、その他の詳細とJavaの本を提供しています。

私はJavaの本の詳細を受け取った後、私は本を発行したいので、私は "私は本のJavaを発行する"と尋ねるとき、ここでそれは矛盾し、ループに入る。

私たちはこのシナリオでお手伝いしますが、私たちの質問ではどのように異なる状況を決定できますか?

コード:私たちが要求したときここ

[LuisIntent("BookSearch")] 
    public async Task BookSearch(IDialogContext context, LuisResult result) 
    { 
     if (result.Entities.Any()) 
     { 
      DBConnect dbConnect = new DBConnect(); 
      string combindedString = string.Empty; 
      string mysqlQuery = string.Empty; 

      foreach (var item in result.Entities) 
      { 
       switch (item.Type.ToString()) 
       { 
        case "BookAuthor": 

         break; 
        case "BookName": 

         break; 
        case "BookIssue": 

         break; 
        default:       

         break; 
       } 
      } 

     } 
     else 
     { 
      await context.PostAsync("Which book are you searching."); 
      context.Wait(MessageReceived); 
     } 

    } 

BookNameとBookIssueは実体があり、 だから=>これは、書籍の詳細を提供するために、BookNameエンティティに行くべき「私はJavaの本を必要とします」。 私は "Issue me java book"と尋ねると、書式を発行するためにBookIssueエンティティに入るべきです。事前に

おかげ

+0

コード例が役に立ちます。 – Svekke

+0

@Svekke、私はコードを追加する質問を編集しました –

+0

@PareshBijarane本の発行が起こるはずのインテントにコードを投稿できますか? – artie

答えて

0

BookIssueは自身の意図&方法でなければなりません。あなたのコードでは、BookIssueをエンティティとして扱っているようです。

BookSearchに対して行ったことを、あなたのBookIssue方法に入れたい発言とロジックで行いますか?

もう1つも定義しておらず、LUISがこれらの発声を検索するのに一致しているため、今すぐあなたのBookSearchの意図に「固執しています」。

ところで、このアプリケーションでは、FormFlowの使用を検討してください。

+0

ありがとうございましたAnna Zietlow 書籍が50,100以上の場合は、どのように書籍を表示することができますか?リアルタイムシステムからデータを取得すると、検索に一致する書籍が非常に多くなることがあります。 –

+0

申し訳ありませんが、私はFormFlowがあなたのBookIssueインテントにおそらく適していると推測しています。あなたの検索はそれのために複雑すぎると思う –

関連する問題