Bots 在bot框架中重写Context.PostAsync

Bots 在bot框架中重写Context.PostAsync,bots,botframework,telegram-bot,Bots,Botframework,Telegram Bot,我注意到,在Bot框架和电报通道中,像:)这样的笑脸不会转换成表情符号 尽管如此,它非常简单,我们只需要将:)改为:微笑:一个漂亮的表情符号就会出现 最佳解决方案是重写context.PostAsync()函数,执行此类字符串替换,然后继续 我们可以重写这个方法而不重新编译all框架吗 谢谢:)我假设您正在寻找的是更改bot发送给用户的消息 当然,基本的选择是只添加逻辑来检查您的bot对话框中的通道,就这样。但是,我怀疑您希望在其他对话框上重新利用该逻辑,这也可能意味着在某个地方使用一个静态方法

我注意到,在Bot框架和电报通道中,像:)这样的笑脸不会转换成表情符号

尽管如此,它非常简单,我们只需要将:)改为:微笑:一个漂亮的表情符号就会出现

最佳解决方案是重写
context.PostAsync()
函数,执行此类字符串替换,然后继续

我们可以重写这个方法而不重新编译all框架吗


谢谢:)

我假设您正在寻找的是更改bot发送给用户的消息

当然,基本的选择是只添加逻辑来检查您的bot对话框中的通道,就这样。但是,我怀疑您希望在其他对话框上重新利用该逻辑,这也可能意味着在某个地方使用一个静态方法,允许您执行以下操作:

context.PostAsync(Utils.TransformMessage(message));
现在,如果您真的想使用最干净的方法,我认为应该实现您自己的
IMessageActivityMapper
,并将其注册到Autofac容器中,这样
MapToChannelData\u botouser
实现就会调用它(请参阅)

IMessageActivityMapper
有一些实现,您可以看看;尽管界面非常简单,整个想法是接收
IMessageActivity
,更新任何现有属性(在您的情况下,它将是文本属性),并返回更新的
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);
    }
}
受保护的无效应用程序\u启动(对象发送方,事件参数e)
{
{
// http://docs.autofac.org/en/latest/integration/webapi.html#quick-开始
var builder=new ContainerBuilder();
//注册你的地图绘制者
建设者
.RegisterType()
.AsImplementedInterfaces()
.SingleInstance();
//获取您的HttpConfiguration。
var config=GlobalConfiguration.Configuration;
//注册您的Web API控制器。
RegisterAppController(Assembly.getExecutionGassembly());
//将依赖项解析程序设置为Autofac。
var container=builder.Build();
config.DependencyResolver=新的AutoFacWebApidencyResolver(容器);
}
}