gpt4 book ai didi

bots - 在机器人框架中覆盖 Context.PostAsync

转载 作者:行者123 更新时间:2023-12-01 06:06:12 25 4
gpt4 key购买 nike

我注意到,使用 Bot Framework 和 Telegram channel 时,像 :) 这样的笑脸不会转换为表情符号。

不过,其实很简单,我们只需要将 :) 改成 :smile: 就会出现一个漂亮的表情符号。

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

我们可以覆盖这个方法,而不重新编译所有框架吗?

谢谢:)

最佳答案

我假设您要查看的是更改机器人发送给用户的消息。

当然,基本选项是仅添加用于检查 channel 的逻辑到您的机器人对话框中,仅此而已。但是,我怀疑您想在其他对话框中重新利用该逻辑,这也可能意味着某个地方的静态方法允许您执行以下操作:

context.PostAsync(Utils.TransformMessage(message));

现在,如果您真的想采用最干净的方法,我认为应该实现您自己的 IMessageActivityMapper 并将其注册到 Autofac 容器中,因此 MapToChannelData_BotToUser 实现最终调用它(参见 here )。

IMessageActivityMapper 有一些实现 herehere你可以看看;虽然界面非常简单,但整个想法是您收到 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);
}
}

关于bots - 在机器人框架中覆盖 Context.PostAsync,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43821955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com