我注意到,通过Bot Framework和Telegram频道,像这样的表情符号不会转换为表情符号。
然而,它非常简单,我们只需要改变:)来:微笑:并且会出现一个不错的表情符号。
最佳解决方案是覆盖context.PostAsync()
函数,执行这种字符串替换,然后继续。
我们可以重写此方法,而无需重新编译所有框架吗?
谢谢:)
答案 0 :(得分:5)
我认为您正在寻找的是更改机器人发送给用户的消息。
当然,基本选项是只需添加逻辑来检查通道进入机器人对话框即可。但是,我怀疑你想在其他对话框上重用这个逻辑,这也可能只是一个允许你做的静态方法:
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);
}
}