我的機器人將回答不同的使用情況。所以我必須爲每個用例使用多個類。使用這個代碼是,我們可以在多個類中編寫我們的任務(用Intents指定)。
我通過重寫的LuisDialog
如下的處理程序方法找到的解決方案。我的Baseform
繼承了LuisDialog
類。其中有意向的所有其他類將繼承我的BaseForm
protected override IDictionary<string, IntentActivityHandler> GetHandlersByIntent()
{
var classCollection = AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(assembly => assembly.GetTypes())
.Where(type => type.IsSubclassOf(typeof(BaseForm)));
List<KeyValuePair<string, IntentActivityHandler>> handler = new List<KeyValuePair<string, IntentActivityHandler>>();
foreach (var item in classCollection)
{
handler.AddRange(MyLuisDialog.EnumerateHandlers(Activator.CreateInstance(item)).ToList());
}
return handler.ToDictionary(kv => kv.Key, kv => kv.Value);
}
代碼
有EnumerateHandlers
方法,它僅僅是一個從路易斯對話框SDK相同的副本。
仍然困惑如何添加多個對話框。正如你可以看到我的代碼,我用Luis模型註釋了我的課程。嘗試給出另一個模型,但它沒有檢測到。 – Satheesh
@Satheesh可能你使用的是舊版本的框架?如果我用多個模型裝飾課程,它適用於我。非常感謝ejadib這個信息! – K48
@ K48是的,它也適用於我。如果我們直接放置多個模型,那麼在第二個模型中選擇無意圖的機會會更多。我們必須做一些調整才能使其工作。但我嘗試了一些不同。我將我的意圖放在不同的班級中,並使用多個LUIS模型。它沒有發現。但現在我很高興地說,我實現了這一點。 – Satheesh