我注意到,對於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);
}
}