使用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框架。
答案 0 :(得分:0)
我通过在构造函数上动态设置AppSettings来解决它。
ConfigurationManager.AppSettings[c_botAppPasswordSettingName] = m_botAppPassword;
这很有效。如果有人有另一个想法随意告诉我。