将模型和订阅密钥传递给LuisDialog而不是通过属性
我正在写一个可以说两种语言的机器人。 因此,我需要使用两个单独的LUIS应用程序(每种语言一个)。
Bot框架中的LuisDialog像这样初始化(来自Microsoft的例子):
[LuisModel("c413b2ef-382c-45bd-8ff0-f76d60e2a821", "6d0966209c6e4f6b835ce34492f3e6d9")] [Serializable] public class SimpleAlarmDialog : LuisDialog {
但是,我需要使用动态应用程序ID和订阅密钥,具体取决于我确定的用户的语言。
两个LUIS应用程序中的所有方法,意图等都是相同的。
C#中的属性不能是动态的。
我可以动态地将应用和订阅密钥传递给LuisDialog而不是硬编码的另一种方式是什么?
您必须在Autofac容器中注册LuisModelAttribute。 您可以在这里看看如何在BotBuilder存储库的AlarmBot示例中完成该操作
我通过稍微改变方法解决了这个问题。 您实际上可以使用两个或更多LuisModel属性来装饰类,并且bot框架将同时查询所有这些属性。