LuisFormBuilder
で作成したインテントと組み合わせて使用しようとしています。これを行うためのドキュメントが見つかりません。
私は次のことをしたいと思います:
- ユーザーは、 Luisで解釈されるフレーズを入力します。
- フレーズですべてのエンティティが指定されていない場合、フォーム ビルダーがギャップを埋めます。
どうすればいいですか?チュートリアルはありますか?について話している人を見かけますがLuisDialogs
、どこから始めればよいかわかりません。
LuisFormBuilder
で作成したインテントと組み合わせて使用しようとしています。これを行うためのドキュメントが見つかりません。
私は次のことをしたいと思います:
どうすればいいですか?チュートリアルはありますか?について話している人を見かけますがLuisDialogs
、どこから始めればよいかわかりません。
手短に :
ここにいくつかの手順があります(ただし、リンクしたガイドに必ず従う必要があります):
基本的には継承するクラスでありLuisDialog<object>
、Luis 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);
}
}