2

我正在编写一个可以说两种语言的机器人。因此,我需要使用两个单独的 LUIS 应用程序(每种语言一个)。

Bot Framework 中的 LuisDialog 是这样初始化的(来自 Microsoft 的示例):

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

但是,我需要根据我确定的用户语言使用动态应用 ID 和订阅密钥。

两个 LUIS 应用程序中的所有方法、意图等都是相同的。

C# 中的属性不能是动态的。

我可以动态地将应用程序和订阅密钥传递给 LuisDialog 而不是硬编码它们的另一种方法是什么?

4

2 回答 2

6

您必须在 Autofac 容器中注册您的 LuisModelAttribute。您可以在此处查看如何在 BotBuilder 存储库中的 AlarmBot 示例中完成此操作

于 2016-08-31T21:29:17.520 回答
0

我通过稍微改变方法解决了这个问题。您实际上可以使用两个或多个 LuisModel 属性来装饰该类,并且机器人框架将同时查询所有这些属性。

于 2016-10-17T01:33:29.707 回答