編集:
ありがとうございました!これはまともな解決策のように思えますが、MessageReceived メソッドが categoryXHandler クラス (保護されている) からアクセスできない場合、どうすれば context.Wait(MessageReceived) を実行できますか?
私がすることは、ユーザーに投稿したいアクティビティCategoryHandler
を返すことです。私のコードサンプル(メソッド)を見てください。HandleCategoryA
あなたが持っていると仮定して
category-A
、、、Intent1
_ Intent2
_ Intent3
_Intent4
category-B
Intent1
、_Intent2
category-C
持っているIntent1
最善の方法は、単一の を 1 つ持ち、各カテゴリを処理する3 つのメソッドLuisDialog
を定義することだと思います。
public class MyDialog : LuisDialog<string>
{
[LuisIntent(CategoryA.Intent1)]
[LuisIntent(CategoryA.Intent2)]
[LuisIntent(CategoryA.Intent3)]
[LuisIntent(CategoryA.Intent4)]
public async Task HandleCategoryA(IDialogContext context, LuisResult result)
{
var returnActivity = CategoryAHandler.Handle(result); // your business logic will be put inside this method
await context.PostAsync(returnActivity);
context.Wait(MessageReceived);
}
[LuisIntent(CategoryB.Intent1)]
[LuisIntent(CategoryB.Intent2)]
public async Task HandleCategoryB(IDialogContext context, LuisResult result)
{
CategoryBHandler.Handle(result); // your business logic will be put inside this method
}
[LuisIntent(CategoryC.Intent1)]
public async Task HandleCategoryC(IDialogContext context, LuisResult result)
{
CategoryCHandler.Handle(result); // your business logic will be put inside this method
}
}
それが役に立てば幸い。