2016-04-26 11 views
10

FormBuilderを自分の意図と組み合わせて使用​​しようとしています。Luisで作成しました。私はこれを行うためのドキュメントを見つけることができません。ルイスをボットビルダーに統合する方法

私は、次のことを行うしたいと思います:

  1. ユーザーがルイスと解釈されるフレーズを入力します。
  2. 句にすべてのエンティティが指定されていない場合は、フォームビルダーがギャップを埋めるでしょう。

どうすればよいですか?チュートリアルはありますか?私は人々がLuisDialogsについて話しているのを見るが、どこから始めるべきかわからない。一言で言えば

+0

これは良い記事です:http://www.c-sharpcorner.com/article/an-interactive-bot-application-with-luis-using-microsoft-bot/ – PhuocLe

答えて

16

  • まずあなたがluis.ai.上でアカウントを作成する必要があります
  • その後、あなたは、このドキュメントに従う必要があります。http://docs.botframework.com/sdkreference/csharp/dialogs.html(それは、古典的なダイアログを起動しますが、ルイスの統合で終わる。)ここで

は、いくつかのステップある(しかし、あなたは間違いなく、私がリンクされ、ガイドに従ってください):

基本的にはLuisDialog<object>を継承するクラスであり、あなたがあなたのルイスIDで、その上に属性を配置する必要がありますし、秘密

[LuisModel("c413b2ef-382c-45bd-8ff0-f76d60e2a821", "6d0966209c6e4f6b835ce34492f3e6d9")] 
[Serializable] 
public class SimpleAlarmDialog : LuisDialog<object> 
{ [...] 

次にクラスにメソッドを追加し、LuisIntent(...)属性でメソッドを飾ります。メソッド内

[LuisIntent("builtin.intent.alarm.turn_off_alarm")] 
public async Task TurnOffAlarm(IDialogContext context, LuisResult result) 
{ [...] 

エンティティは、このようなコード使用して発見された場合は、検索することができます。

EntityRecommendation title; 
if (result.TryFindEntity(Entity_Alarm_Title, out title)) 
{ 
    what = title.Entity; 
} 
else 
{ 
    what = DefaultAlarmWhat; 
} 

最後に、ダイアログを開始するには、あなたのコントローラの内部でこれを呼び出す必要があります:

public async Task<Message> Post([FromBody]Message message) 
    { 
     if (message.Type == "Message") 
     { 
      // return our reply to the user 
      return await Conversation.SendAsync(message,() => new EchoDialog()); 
     } 
     else 
     { 
      return HandleSystemMessage(message); 
     } 
    } 
+0

ありがとうございます!私はPizzaBotの例を見て、私のコードがうまく動作するように管理しました:-) – Aldentev

+0

パーフェクト!あなたは同じ質問を持っている他の人がそれに頼ることができるように、その答えを役に立つとマークすることはできますか? :) –

+0

エンティティが提供されていない場合、どのようにして2番目のステップでエンティティ情報を提供するようにユーザーに促すことができますか?私はエンティティとして1単語だけを取ることができるようにLuisモデルを更新し、それを意図とリンクさせる必要がありますか? – Vikram

関連する問題