将模型和订阅密钥传递给LuisDialog而不是通过属性

时间:2016-08-31 08:06:33

标签: c# botframework luis

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

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

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

但是,我需要使用动态应用ID和订阅密钥,具体取决于我确定的用户的语言。

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

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

我可以将app和订阅密钥动态传递给LuisDialog而不是硬编码的另一种方法是什么?

2 个答案:

答案 0 :(得分:6)

您必须在Autofac容器中注册LuisModelAttribute。你可以看看here如何在BotBuilder存储库的AlarmBot示例中完成它

答案 1 :(得分:0)

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