我可以阻止DeleteProfileScorable在我的机器人中注册吗?

时间:2017-09-14 20:52:29

标签: c# autofac botframework

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”时它会激活。我不想在我的生产应用程序中使用此功能 - 有没有办法抑制其注册或运行?

1 个答案:

答案 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匹配:因此它被有效禁用。