in sdk/csharp/libraries/microsoft.bot.solutions/Middleware/EventDebuggerMiddleware.cs [16:61]
public async Task OnTurnAsync(ITurnContext turnContext, NextDelegate next, CancellationToken cancellationToken = default(CancellationToken))
{
var activity = turnContext.Activity;
if (activity.Type == ActivityTypes.Message && !string.IsNullOrEmpty(activity.Text))
{
var text = activity.Text;
var value = activity.Value?.ToString();
if (!string.IsNullOrEmpty(text) && text.StartsWith("/event:"))
{
var json = text.Split(new string[] { "/event:" }, StringSplitOptions.None)[1];
var body = JsonConvert.DeserializeObject<Activity>(json);
turnContext.Activity.Type = ActivityTypes.Event;
turnContext.Activity.Name = body.Name ?? turnContext.Activity.Name;
turnContext.Activity.Text = body.Text ?? turnContext.Activity.Text;
turnContext.Activity.Value = body.Value ?? turnContext.Activity.Value;
}
if (!string.IsNullOrEmpty(value) && value.Contains("event"))
{
var root = JObject.Parse(value);
var eventActivity = (JObject)root["event"];
turnContext.Activity.Type = ActivityTypes.Event;
if (eventActivity["name"] != null)
{
turnContext.Activity.Name = eventActivity["name"].ToString();
}
if (eventActivity["text"] != null)
{
turnContext.Activity.Text = eventActivity["text"].ToString();
}
if (eventActivity["value"] != null)
{
turnContext.Activity.Value = eventActivity["value"].ToString();
}
}
}
await next(cancellationToken).ConfigureAwait(false);
}