2016-08-31 31 views
2

我正在写一个可以讲两种语言的机器人。因此,我需要使用两个独立的LUIS应用程序(每种语言一个)。将模型和订阅密钥传递给LuisDialog,而不是通过属性

的LuisDialog在机器人框架被初始化像这样(例如微软):

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

不过,我需要使用取决于我有用户的语言动态应用程序ID和订阅密钥决心。

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

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

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

回答

6

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

0

我通过稍微改变方法解决了问题。你实际上可以用两个或更多的LuisModel属性装饰这个类,bot框架将同时查询它们。

+1

是的,这是超过1个模型的另一种方式(请参阅http://stackoverflow.com/questions/38222920/how-to-integrate-multiple-luis-model-to-bot-framework/38229057#38229057)但是,这将不允许使用动态应用/订阅密钥 –

相关问题