Ezequiel , . - :
public class Logger : IActivityLogger
{
public static ConcurrentDictionary<string, List<IActivity>> Messages = new ConcurrentDictionary<string, List<IActivity>>();
public Task LogAsync(IActivity activity)
{
var list = new List<IActivity>() { activity };
Messages.AddOrUpdate(activity.Conversation.Id, list, (k, v) => { v.Add(activity); return v; });
return Task.FromResult(false);
}
}
:
case ActivityTypes.Message:
if (!string.IsNullOrEmpty(activity.Text) && activity.Text.ToLower() == "history")
{
using (var scope = DialogModule.BeginLifetimeScope(Conversation.Container, activity))
{
var reply = activity.CreateReply();
var storedActivities = new List<IActivity>();
var found = Logger.Messages.TryGetValue(activity.Conversation.Id, out storedActivities);
if (storedActivities != null)
{
foreach (var storedActivity in storedActivities)
{
reply.Text += $"\n\n {storedActivity.From.Name}: {storedActivity.AsMessageActivity().Text}";
}
}
else
{
reply.Text = "no history yet";
}
var client = scope.Resolve<IConnectorClient>();
await client.Conversations.ReplyToActivityAsync(reply);
}
}
else
await Conversation.SendAsync(activity, MakeRootDialog);
break;
- . , , , .