我注意到,对于Bot框架和电报频道,表情符号:)不会转换为表情符号。覆盖机器人框架中的Context.PostAsync
然而,它非常简单,我们只需要改变:)到:smile:并且会出现一个很好的表情符号。
最佳解决方案是覆盖context.PostAsync()
函数,执行这些类型的字符串替换,然后继续。
我们可以重写此方法,而无需重新编译全部框架?
谢谢:)
我注意到,对于Bot框架和电报频道,表情符号:)不会转换为表情符号。覆盖机器人框架中的Context.PostAsync
然而,它非常简单,我们只需要改变:)到:smile:并且会出现一个很好的表情符号。
最佳解决方案是覆盖context.PostAsync()
函数,执行这些类型的字符串替换,然后继续。
我们可以重写此方法,而无需重新编译全部框架?
谢谢:)
我以为你在找什么是改变这种机器人发送到用户的消息。
当然,基本的选择只是添加逻辑来检查通道到你的机器人对话框,就是这样。不过,我怀疑你想重新利用其他对话这一逻辑,这也可能意味着只是某处一个静态方法,它允许你做:
context.PostAsync(Utils.TransformMessage(message));
现在,如果你真的想要去与最干净的方法,我认为应该实现您自己的IMessageActivityMapper
并将其注册到Autofac容器中,以便MapToChannelData_BotToUser
实现最终调用它(请参阅here)。
有几个实现了IMessageActivityMapper
here和here你可以看看;虽然界面非常简单,并且整个想法是您收到IMessageActivity
,但更新任何现有属性(在您的情况下它将是Text属性)并返回更新的IMessageActivity
,以便将其发布给用户。
准备好实施后,您可以在Autofac中注册它,在Global.asax.cs
中执行以下操作。
protected void Application_Start(object sender, EventArgs e)
{
{
// http://docs.autofac.org/en/latest/integration/webapi.html#quick-start
var builder = new ContainerBuilder();
// Register your mapper
builder
.RegisterType<MyActivityMapper>()
.AsImplementedInterfaces()
.SingleInstance();
// Get your HttpConfiguration.
var config = GlobalConfiguration.Configuration;
// Register your Web API controllers.
builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
// Set the dependency resolver to be Autofac.
var container = builder.Build();
config.DependencyResolver = new AutofacWebApiDependencyResolver(container);
}
}