Передайте пароль бота при использовании LuisDialog

Мне нужно динамически передавать пароль бота MS при использовании LuisDialog.

Мне удалось сделать это успешно при обработке системных сообщений (см. раздел 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, поскольку любой, у кого есть доступ к той же подписке, может увидеть там секрет в виде открытого текста. Поэтому мне нужно хранить секрет в зашифрованном виде и динамически расшифровывать его, а затем передавать в бот-фреймворк.


person Ravit D    schedule 09.02.2017    source источник
comment
Почему вам нужно передать BotPassword в LuisDialog? Вы не используете атрибут BotAuthentication?   -  person Ezequiel Jadib    schedule 09.02.2017
comment
Нет, я не использую атрибут, я хочу зашифровать и расшифровать его, поэтому мне нужно как-то его передать   -  person Ravit D    schedule 09.02.2017
comment
Шифровать/дешифровать что? А почему нельзя передать пароль в качестве параметра диалогового окна?   -  person Ezequiel Jadib    schedule 09.02.2017
comment
Мне нужно каким-то образом использовать пароль бота при отправке сообщения обратно (Conversation.SendAsync), как мне это сделать?   -  person Ravit D    schedule 09.02.2017
comment
Да, я не уверен, что полностью понимаю, что вы пытаетесь сделать, и причины, по которым вы не используете атрибут, и это правильный путь. Я могу проверить позже, есть ли рекомендации по переопределению метода аутентификации.   -  person Ezequiel Jadib    schedule 09.02.2017
comment
Был бы признателен, спасибо   -  person Ravit D    schedule 09.02.2017
comment
Это фильтр действий, который обрабатывает аутентификацию: github.com/Microsoft/BotBuilder/blob/... Возможно, вы захотите просмотреть код, чтобы лучше понять, что они делают, и посмотреть, сможете ли вы извлечь что-то для своего сценария (то есть мне пока непонятно)   -  person Ezequiel Jadib    schedule 09.02.2017
comment
Я отредактировал свой вопрос, чтобы объяснить, почему мне нужно динамически передавать пароль.   -  person Ravit D    schedule 09.02.2017


Ответы (1)


Я решил это, динамически установив AppSettings в конструкторе.

ConfigurationManager.AppSettings[c_botAppPasswordSettingName] = m_botAppPassword;

Это работает. Если у кого-то есть другая идея, дайте мне знать.

person Ravit D    schedule 09.02.2017
comment
Хороший! Пожалуйста, отметьте этот вопрос как ответ, чтобы помочь другим пользователям быстро найти этот ответ - person Just Shadow; 09.02.2017
comment
Я могу сделать это только через два дня по лимиту сайта. Я сделаю это тогда. - person Ravit D; 09.02.2017