Ich gehe davon aus, dass die für den Benutzer der Bot sendet, was Sie suchen ist, die Nachricht zu ändern.
Natürlich ist die grundlegende Option, nur die Logik hinzuzufügen, um nach dem Kanal in Ihrem Botdialog zu suchen, und das war es. Aber ich vermute, dass Sie diese Logik auf andere Dialoge wiederzuverwenden wollen, die auch nur eine statische Methode irgendwo könnte bedeuten, dass Sie tun können:
context.PostAsync(Utils.TransformMessage(message));
Nun, wenn Sie wirklich mit dem saubersten Ansatz gehen wollen, ich denken Sie, dass sollte Ihre eigene IMessageActivityMapper
implementieren und registrieren Sie diese in den Autofac-Container, so dass die MapToChannelData_BotToUser
Implementierung endet Aufruf es (siehe here).
Es gibt ein paar Implementierungen der IMessageActivityMapper
here und here können Sie betrachten; obwohl die Schnittstelle ist wirklich einfach und die ganze Idee ist, dass Sie die IMessageActivity
erhalten, aktualisieren Sie eine der vorhandenen Eigenschaften (in Ihrem Fall wird es die Eigenschaft Text) und geben Sie die aktualisierte IMessageActivity
zurück, damit es an den Benutzer geschrieben werden kann.
Sobald Sie Ihre Implementierung fertig haben, können Sie sie in Autofac in Ihrem Global.asax.cs
registrieren.
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);
}
}