Bot框架BotBuilder SDK包含一个名为DeleteProfileScorable的scorable,它将截取带有文本“/ deleteprofile”的消息,并运行以下逻辑来清除用户的配置文件:
protected override async Task PostAsync(IActivity item, string state, CancellationToken token)
{
this.stack.Reset();
botData.UserData.Clear();
botData.PrivateConversationData.Clear();
await botData.FlushAsync(token);
await botToUser.PostAsync(Resources.UserProfileDeleted);
}
我并不是故意在我的机器人中专门注册这个Scorable,但它似乎是通过Autofac DialogModule注册的,当我发送“/ deleteprofile”时它会激活。我不想在我的生产应用程序中使用此功能 - 有没有办法抑制其注册或运行?
答案 0 :(得分:2)
删除AutoFac注册涉及重新创建容器,而不是添加未使用的注册。在这种情况下,似乎只是覆盖' / deleteprofile'注册一个永远不会被使用的。类似的东西:
Conversation.UpdateContainer(b =>
{
b
.Register(c => new Regex("(?!x)x", RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace))
.Keyed<Regex>(DialogModule.Key_DeleteProfile_Regex)
.SingleInstance();
});
通过对Global.asax.cs Applicaiton_Start方法的上述补充,删除配置文件仍可存在,但没有文本与RegEx匹配:因此它被有效禁用。