2017-05-06 5 views
3

私は、Bot Framework and Telegramチャンネルで、:)のようなスマイリーが絵文字に変換されないことに気付きました。BotフレームワークでContext.PostAsyncをオーバーライドします

それでも、非常に単純で、変更する必要があります:):笑顔:素晴らしい絵文字が表示されます。

最適解は、context.PostAsync()関数をオーバーライドして、そのような種類の文字列置換を実行し、次に続行することです。

すべてのフレームワークを再コンパイルせずにこのメソッドをオーバーライドすることはできますか?

感謝:)

答えて

4

は、私が何を探していることは、ボットがユーザーに送信するメッセージを変更することであることを前提としています。

もちろん、基本的なオプションは、チャンネルをチェックするためのロジックをボットダイアログに追加するだけです。それだけです。あなたが本当にきれいなアプローチに行きたい場合、私は、今

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

:しかし、私はまた、あなたがすることができますどこかだけの静的メソッドを意味する可能性がある、あなたは他のダイアログでそのロジックを再利用したい疑います独自のIMessageActivityMapperを実装し、それをAutofacコンテナに登録する必要があると思うので、実装がそれを呼び出すことになります(here参照)。

IMessageActivityMapperherehereのいくつかの実装があります。インターフェイスは本当にシンプルであり、あなたがIMessageActivityを受け取ったという考えがありますが、既存のプロパティを更新して(あなたの場合はTextプロパティになります)、更新されたIMessageActivityを返してユーザに投稿できるようにします。

実装が完了したら、Global.asax.csで次のようにAutofacに登録することができます。

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); 
    } 
} 
関連する問題