web-dev-qa-db-ja.com

Luisをボットビルダーに統合する方法

Luisで作成したインテントと組み合わせて、FormBuilderを使用しようとしています。これを行うためのドキュメントが見つかりません。

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

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

どうすればよいですか?チュートリアルはありますか? LuisDialogsについて話している人がいますが、どこから始めればよいのかわかりません。

11
Aldentev

一言で言えば:

ここにいくつかのステップがあります(しかしあなたは間違いなく私がリンクしたガイドに従うべきです):

基本的には_LuisDialog<object>_を継承するクラスであり、LuisIDとシークレットを使用してその上に属性を配置する必要があります

_[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);
        }
    }
_
16