2017-09-14 83 views
2

机器人框架BotBuilder SDK包括一个可评分称为DeleteProfileScorable,这将拦截与文本“/ deleteprofile”的消息,并运行下列逻辑清除的用户的个人资料:我可以阻止DeleteProfileScorable在我的机器人中注册吗?

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); 
    } 

我不是故意注册此可以在我的机器人中专门检测,但它似乎是通过Autofac DialogModule的方式注册的,当我发送“/ deleteprofile”时它会激活。我不希望在我的制作应用程序中提供此功能 - 是否有任何方法来禁止其注册或功能?

回答

3

删除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方法,删除轮廓刻痕仍然存在,但没有文字都不会匹配正则表达式:所以它实际上被禁止。

+0

这很有道理 - 我同意重建容器看起来像是矫枉过正,因为这会起作用。感谢你的回答! –

相关问题