2017-02-09 1 views
0

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

+0

Зачем вам нужно передать BotPassword в LuisDialog? Вы не используете атрибут BotAuthentication? –

+0

Нет Я не использую этот атрибут, я хочу его зашифровать и расшифровать, поэтому ему нужно каким-то образом передать его –

+0

Шифровать/расшифровать что? И почему вы не можете передавать пароль в качестве параметра диалога ctor? –

ответ

0

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

ConfigurationManager.AppSettings[c_botAppPasswordSettingName] = m_botAppPassword; 

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

+0

Хорошо! Пожалуйста, отметьте этот вопрос как ответ, чтобы помочь другим пользователям быстро найти этот ответ. –

+0

Я могу это сделать только через два дня в соответствии с лимитом сайта. Тогда я это сделаю. –

Смежные вопросы