我可以阻止DeleteProfileScorable在我的机器人中注册吗?
问题描述:
机器人框架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”时它会激活。我不希望在我的制作应用程序中提供此功能 - 是否有任何方法来禁止其注册或功能?
答
删除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方法,删除轮廓刻痕仍然存在,但没有文字都不会匹配正则表达式:所以它实际上被禁止。
这很有道理 - 我同意重建容器看起来像是矫枉过正,因为这会起作用。感谢你的回答! –