. global.asax, :
public static async Task<object> Run(HttpRequestMessage req, TraceWriter log)
{
log.Info($"Webhook was triggered!");
using (BotService.Initialize())
{
var resolveAssembly = Assembly.GetCallingAssembly();
var builder = new ContainerBuilder();
builder.RegisterModule(new AzureModule(resolveAssembly));
builder.Register(c => new SettingsScorable(c.Resolve<IDialogTask>() ))
.As<IScorable<IActivity, double>>()
.InstancePerLifetimeScope();
builder.Update(Conversation.Container);
...
...
}
}
scorableBase scorableDialog
public class SettingsDialog : IDialog<object>
{
public async Task StartAsync(IDialogContext context)
{
...
}
private async Task MessageReceived(IDialogContext context, IAwaitable<IMessageActivity> result)
{
...
}
}
public class SettingsScorable : ScorableBase<IActivity, string, double>
{
private readonly IDialogTask task;
public SettingsScorable(IDialogTask task)
{
...
}
protected override async Task<string> PrepareAsync(IActivity activity, CancellationToken token)
{
...
}
protected override bool HasScore(IActivity item, string state)
{
...
}
protected override double GetScore(IActivity item, string state)
{
...
}
protected override async Task PostAsync(IActivity item, string state, CancellationToken token)
{
...
}
protected override Task DoneAsync(IActivity item, string state, CancellationToken token)
{
...
}
}