使用LuisDialog时传递机密密码

时间:2017-02-09 10:09:58

标签: c# botframework luis

使用LuisDialog时,我需要动态传递MS bot密码。

我设法在处理系统消息时成功完成(请参阅我的代码中的else部分)。但是当使用Luis Diaog时,因为它没有使用连接器对象,所以我得到了一个例外。

我有以下代码:

        public async Task<HttpResponseMessage> Post([FromBody]Activity activity)
        {
            try
            {
                ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl), m_botAppId, m_botAppPassword);

                if (activity.Type == ActivityTypes.Message)
                {
// *how to pass the bot app password here???*

                    await Conversation.SendAsync(activity, () => new IntentHandler(m_cmConnectionString, m_luisModelId, m_luisModelKey, m_tfsUser, m_tfsPassword));

                }
                else
                {
                    var reply = HandleSystemMessage(activity);
                    if (reply != null)
                    {
                        await connector.Conversations.ReplyToActivityAsync(reply);
                    }
                }
                return Request.CreateResponse(HttpStatusCode.OK);
            }

为什么我需要动态传递密码? 因为我们不想将秘密存储在纯文本文件中并将其签入。我们也不希望将其作为纯文本存储在Azure.AppSettings中,因为无论谁有权访问相同的订阅,都可以将秘密视为纯文本。 因此,我需要存储加密的秘密,需要动态解密,然后将其传递给bot框架。

1 个答案:

答案 0 :(得分:0)

我通过在构造函数上动态设置AppSettings来解决它。

ConfigurationManager.AppSettings[c_botAppPasswordSettingName] = m_botAppPassword;

这很有效。如果有人有另一个想法随意告诉我。